diff --git a/.circleci/config.yml b/.circleci/config.yml index 727f4e8d2583..5e7cc4a22d24 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,8 +4,8 @@ parameters: workflow: description: Which workflow to run type: enum - enum: ['ci', 'pr', 'merged', 'daily'] - default: 'ci' + enum: ['normal', 'merged', 'daily', 'skipped', 'docs'] + default: 'skipped' executors: sb_node_16_classic: @@ -43,7 +43,7 @@ executors: default: 'small' working_directory: /tmp/storybook docker: - - image: mcr.microsoft.com/playwright:v1.32.3-focal + - image: mcr.microsoft.com/playwright:v1.36.0-focal environment: NODE_OPTIONS: --max_old_space_size=6144 resource_class: <> @@ -144,93 +144,13 @@ jobs: - code/node_modules - code/addons - code/frameworks + - code/deprecated - code/lib + - code/builders - code/ui - code/renderers - code/presets - .verdaccio-cache - cra-bench: - executor: - class: large - name: sb_playwright - working_directory: /tmp/storybook - steps: - - git-shallow-clone/checkout_advanced: - clone_options: '--depth 1 --verbose' - - attach_workspace: - at: . - - run: - name: Running local registry - command: | - cd code - yarn local-registry --open - background: true - - run: - name: Wait for registry - command: | - cd code - yarn wait-on http://localhost:6001 - - run: - name: set up cra repro, skip tests - command: | - cd code - SANDBOX_ROOT=../bench yarn task --task sandbox --template cra/default-ts --skip-template-stories --start-from=never --no-link - - run: - name: Run @storybook/bench on repro - command: | - cd bench/cra-default-ts - rm -rf node_modules - mkdir node_modules - ../../code/node_modules/.bin/sb-bench 'yarn install' --label cra - - report-workflow-on-failure - - run: - name: prep artifacts - when: always - command: tar cvzf /tmp/cra-default-ts-bench.tar.gz bench/cra-default-ts - - store_artifacts: - path: /tmp/cra-default-ts-bench.tar.gz - destination: cra-default-ts-bench.tar.gz - react-vite-bench: - executor: - class: large - name: sb_playwright - working_directory: /tmp/storybook - steps: - - git-shallow-clone/checkout_advanced: - clone_options: '--depth 1 --verbose' - - attach_workspace: - at: . - - run: - name: Running local registry - command: | - cd code - yarn local-registry --open - background: true - - run: - name: Wait for registry - command: | - cd code - yarn wait-on http://localhost:6001 - - run: - name: set up react-vite repro, skip tests - command: | - cd code - SANDBOX_ROOT=../bench yarn task --task sandbox --template react-vite/default-ts --skip-template-stories --start-from=never --no-link - - run: - name: Run @storybook/bench on repro - command: | - cd bench/react-vite-default-ts - rm -rf node_modules - mkdir node_modules - ../../code/node_modules/.bin/sb-bench 'yarn install' --label react-vite - - report-workflow-on-failure - - run: - name: prep artifacts - when: always - command: tar cvzf /tmp/react-vite-default-ts-bench.tar.gz bench/react-vite-default-ts - - store_artifacts: - path: /tmp/react-vite-default-ts-bench.tar.gz - destination: react-vite-default-ts-bench.tar.gz lint: executor: class: large @@ -263,7 +183,7 @@ jobs: git diff --exit-code - report-workflow-on-failure - cancel-workflow-on-failure - script-unit-tests: + script-checks: executor: sb_node_16_browsers steps: - git-shallow-clone/checkout_advanced: @@ -271,7 +191,17 @@ jobs: - attach_workspace: at: . - run: - name: Test + name: Check parallelism count + command: | + cd scripts + yarn get-template --check + - run: + name: Type check + command: | + cd scripts + yarn check + - run: + name: Run tests command: | cd scripts yarn test --coverage --ci @@ -337,7 +267,6 @@ jobs: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_node_16_browsers @@ -349,9 +278,9 @@ jobs: at: . - run: name: Creating Sandboxes - command: yarn task --task sandbox --template $(yarn get-template << pipeline.parameters.workflow >> sandbox) --no-link --start-from=never --junit + command: yarn task --task sandbox --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task sandbox) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> sandbox) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task sandbox) - persist_to_workspace: root: . paths: @@ -362,7 +291,6 @@ jobs: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_node_16_browsers @@ -374,16 +302,15 @@ jobs: at: . - run: name: Smoke Testing Sandboxes - command: yarn task --task smoke-test --template $(yarn get-template << pipeline.parameters.workflow >> smoke-test) --no-link --start-from=never --junit + command: yarn task --task smoke-test --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task smoke-test) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> smoke-test) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task smoke-test) - store_test_results: path: test-results build-sandboxes: parameters: parallelism: type: integer - default: 2 executor: class: large name: sb_node_16_browsers @@ -400,24 +327,24 @@ jobs: background: true - run: name: Building Sandboxes - command: yarn task --task build --template $(yarn get-template << pipeline.parameters.workflow >> build) --no-link --start-from=never --junit + command: yarn task --task build --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task build) --no-link --start-from=never --junit - run: name: Verifying Telemetry - command: yarn ts-node ./event-log-checker build $(yarn get-template << pipeline.parameters.workflow >> build) + command: yarn ts-node ./event-log-checker build $(yarn get-template --cadence << pipeline.parameters.workflow >> --task build) working_directory: scripts - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> build) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task build) - store_test_results: path: test-results - persist_to_workspace: root: . paths: + - sandbox/*/bench/*.json - sandbox/*/storybook-static test-runner-production: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_playwright @@ -429,16 +356,15 @@ jobs: at: . - run: name: Running Test Runner - command: yarn task --task test-runner --template $(yarn get-template << pipeline.parameters.workflow >> test-runner) --no-link --start-from=never --junit + command: yarn task --task test-runner --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task test-runner) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> test-runner) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task test-runner) - store_test_results: path: test-results test-runner-dev: parameters: parallelism: type: integer - default: 2 executor: class: large name: sb_playwright @@ -450,16 +376,15 @@ jobs: at: . - run: name: Running Test Runner in Dev mode - command: yarn task --task test-runner-dev --template $(yarn get-template << pipeline.parameters.workflow >> test-runner-dev) --no-link --start-from=never --junit + command: yarn task --task test-runner-dev --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task test-runner-dev) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> test-runner-dev) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task test-runner-dev) - store_test_results: path: test-results chromatic-sandboxes: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_node_16_browsers @@ -470,16 +395,15 @@ jobs: at: . - run: name: Running Chromatic - command: yarn task --task chromatic --template $(yarn get-template << pipeline.parameters.workflow >> chromatic) --no-link --start-from=never --junit + command: yarn task --task chromatic --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task chromatic) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> chromatic) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task chromatic) - store_test_results: path: test-results e2e-production: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_playwright @@ -491,9 +415,9 @@ jobs: at: . - run: name: Running E2E Tests - command: yarn task --task e2e-tests --template $(yarn get-template << pipeline.parameters.workflow >> e2e-tests) --no-link --start-from=never --junit + command: yarn task --task e2e-tests --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task e2e-tests) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> e2e-tests) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task e2e-tests) - store_test_results: path: test-results - store_artifacts: # this is where playwright puts more complex stuff @@ -503,7 +427,6 @@ jobs: parameters: parallelism: type: integer - default: 2 executor: class: medium name: sb_playwright @@ -515,64 +438,45 @@ jobs: at: . - run: name: Running E2E Tests - command: yarn task --task e2e-tests-dev --template $(yarn get-template << pipeline.parameters.workflow >> e2e-tests-dev) --no-link --start-from=never --junit + command: yarn task --task e2e-tests-dev --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task e2e-tests-dev) --no-link --start-from=never --junit - report-workflow-on-failure: - template: $(yarn get-template << pipeline.parameters.workflow >> e2e-tests-dev) + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task e2e-tests-dev) - store_test_results: path: test-results - store_artifacts: # this is where playwright puts more complex stuff path: code/playwright-results/ destination: playwright + bench: + parameters: + parallelism: + type: integer + executor: + class: medium + name: sb_playwright + parallelism: << parameters.parallelism >> + steps: + - git-shallow-clone/checkout_advanced: + clone_options: '--depth 1 --verbose' + - attach_workspace: + at: . + - run: + name: Running Bench + command: yarn task --task bench --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task bench) --no-link --start-from=never --junit + - run: + name: Uploading results + command: yarn upload-bench $(yarn get-template --cadence << pipeline.parameters.workflow >> --task bench) + - report-workflow-on-failure: + template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task bench) workflows: - ci: + docs: when: - and: - - equal: [api, << pipeline.trigger_source >>] - - equal: [ci, << pipeline.parameters.workflow >>] + equal: [docs, << pipeline.parameters.workflow >>] jobs: - pretty-docs - - build - - lint: - requires: - - build - - check: - requires: - - build - - unit-tests: - requires: - - build - - script-unit-tests: - requires: - - build - - chromatic-internal-storybooks: - requires: - - build - - create-sandboxes: - requires: - - build - - build-sandboxes: - requires: - - create-sandboxes - - chromatic-sandboxes: - requires: - - build-sandboxes - - e2e-production: - requires: - - build-sandboxes - - e2e-dev: - requires: - - create-sandboxes - - test-runner-production: - requires: - - build-sandboxes - # TODO: reenable once we find out the source of flakyness - # - test-runner-dev: - # requires: - # - create-sandboxes - pr: + normal: when: - equal: [pr, << pipeline.parameters.workflow >>] + equal: [normal, << pipeline.parameters.workflow >>] jobs: - pretty-docs - build @@ -585,7 +489,7 @@ workflows: - unit-tests: requires: - build - - script-unit-tests: + - script-checks: requires: - build - chromatic-internal-storybooks: @@ -594,18 +498,12 @@ workflows: - coverage: requires: - unit-tests - - cra-bench: - requires: - - build - - react-vite-bench: - requires: - - build - create-sandboxes: - parallelism: 9 + parallelism: 12 requires: - build - build-sandboxes: - parallelism: 9 + parallelism: 12 requires: - create-sandboxes - chromatic-sandboxes: @@ -617,12 +515,17 @@ workflows: requires: - build-sandboxes - e2e-dev: + parallelism: 2 requires: - create-sandboxes - test-runner-production: parallelism: 9 requires: - build-sandboxes + - bench: + parallelism: 3 + requires: + - build-sandboxes # TODO: reenable once we find out the source of flakyness # - test-runner-dev: # requires: @@ -642,7 +545,7 @@ workflows: - unit-tests: requires: - build - - script-unit-tests: + - script-checks: requires: - build - chromatic-internal-storybooks: @@ -651,18 +554,12 @@ workflows: - coverage: requires: - unit-tests - - cra-bench: - requires: - - build - - react-vite-bench: - requires: - - build - create-sandboxes: - parallelism: 18 + parallelism: 21 requires: - build - build-sandboxes: - parallelism: 18 + parallelism: 21 requires: - create-sandboxes - chromatic-sandboxes: @@ -681,6 +578,10 @@ workflows: parallelism: 18 requires: - build-sandboxes + - bench: + parallelism: 3 + requires: + - build-sandboxes # TODO: reenable once we find out the source of flakyness # - test-runner-dev: # parallelism: 4 @@ -690,6 +591,7 @@ workflows: when: equal: [daily, << pipeline.parameters.workflow >>] jobs: + - pretty-docs - build - lint: requires: @@ -700,15 +602,21 @@ workflows: - unit-tests: requires: - build + - script-checks: + requires: + - build + - chromatic-internal-storybooks: + requires: + - build - create-sandboxes: - parallelism: 32 + parallelism: 35 requires: - build # - smoke-test-sandboxes: # disabled for now # requires: # - create-sandboxes - build-sandboxes: - parallelism: 32 + parallelism: 35 requires: - create-sandboxes - chromatic-sandboxes: diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml similarity index 90% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .github/DISCUSSION_TEMPLATE/ideas.yml index 206ddf06f62a..e166880447ed 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/DISCUSSION_TEMPLATE/ideas.yml @@ -1,6 +1,3 @@ -name: Feature request 💡 -description: Suggest an idea for this project -title: '[Feature Request]:' labels: - needs triage - feature request @@ -8,7 +5,7 @@ body: - type: textarea id: problem attributes: - label: Is your feature request related to a problem? Please describe + label: Is your feature request related to a problem? Please describe. description: >- A clear and concise description of the problem. E.g. I'm always frustrated when [...] diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index f19ff982f638..cbf53f0d9ac1 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -19,7 +19,7 @@ body: attributes: label: To Reproduce description: >- - Please create a reproduction using [storybook.new](https://storybook.new), or by running `npx sb@next sandbox` and + We prioritize bug reports that have a reproduction. You can create a reproduction using [storybook.new](https://storybook.new), or by running `npx sb@next sandbox` and following the instructions. Read our [documentation](https://storybook.js.org/docs/react/contribute/how-to-reproduce) to learn more about creating reproductions. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fa07cbe842fa..95be4a49c705 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,10 +2,16 @@ blank_issues_enabled: false contact_links: - name: View documentation 📚 url: https://storybook.js.org/docs/ - about: Check out the official docs for answers to common questions + about: Check out the official docs for answers to common questions. + - name: Feature Requests 💡 + url: https://github.com/storybookjs/storybook/discussions/new?category=ideas + about: Suggest a feature idea for this project. + - name: Open an RFC 🦄 + url: https://github.com/storybookjs/storybook/discussions/new?category=rfc + about: Do you want to propose a more involved change to Storybook? Open an RFC (Request for Comments) to start a discussion. - name: Questions & discussions 🤔 url: https://github.com/storybookjs/storybook/discussions - about: Ask questions, request features & discuss RFCs + about: Ask questions, show off your Storybook, etc. - name: Community Discord 💬 url: https://discord.gg/storybook about: Community discussions, interactive support, contributor help diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 655dd310ffaf..ba472744a8f1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,12 +1,33 @@ Closes # - + + + + ## What I did -## How to test +## Checklist for Contributors + +### Testing + + + +#### The changes in this PR are covered in the following automated tests: +- [ ] stories +- [ ] unit tests +- [ ] integration tests +- [ ] end-to-end tests + +#### Manual testing + +_This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!_ -## Checklist +### Documentation - + -- [ ] Make sure your changes are tested (stories and/or unit, integration, or end-to-end tests) -- [ ] Make sure to add/update documentation regarding your changes +- [ ] Add or update documentation reflecting your changes - [ ] If you are deprecating/removing a feature, make sure to update [MIGRATION.MD](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md) -#### Maintainers +## Checklist for Maintainers -- [ ] If this PR should be tested against many or all sandboxes, - make sure to add the `ci:merged` or `ci:daily` GH label to it. -- [ ] Make sure this PR contains **one** of the labels below. +- [ ] When this PR is ready for testing, make sure to add `ci:normal`, `ci:merged` or `ci:daily` GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in `code/lib/cli/src/sandbox-templates.ts` +- [ ] Make sure this PR contains **one** of the labels below: +
+ Available labels -`["cleanup", "BREAKING CHANGE", "feature request", "bug", "documentation", "maintenance", "dependencies", "other"]` + - `bug`: Internal changes that fixes incorrect behavior. + - `maintenance`: User-facing maintenance tasks. + - `dependencies`: Upgrading (sometimes downgrading) dependencies. + - `build`: Internal-facing build tooling & test updates. Will not show up in release changelog. + - `cleanup`: Minor cleanup style change. Will not show up in release changelog. + - `documentation`: Documentation **only** changes. Will not show up in release changelog. + - `feature request`: Introducing a new feature. + - `BREAKING CHANGE`: Changes that break compatibility in some way with current major version. + - `other`: Changes that don't fit in the above categories. + +
- ---> +This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the `@storybookjs/core` team here. + +_core team members can create a canary release [here](https://github.com/storybookjs/storybook/actions/workflows/canary-release-pr.yml) or locally with `gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=`_ + + diff --git a/.github/workflows/canary-release-pr.yml b/.github/workflows/canary-release-pr.yml new file mode 100644 index 000000000000..4b1504cfd1bf --- /dev/null +++ b/.github/workflows/canary-release-pr.yml @@ -0,0 +1,124 @@ +name: Publish canary release of PR +run-name: 'Canary release: PR #${{ inputs.pr }}, triggered by ${{ github.triggering_actor }}' + +on: + workflow_dispatch: + inputs: + pr: + description: 'Pull request number to create a canary release for' + required: true + type: number + +env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 + +concurrency: + group: ${{ github.workflow }}-${{ github.event.inputs.pr }} + cancel-in-progress: true + +permissions: + pull-requests: write + +jobs: + release-canary: + name: Release canary version + runs-on: ubuntu-latest + environment: release + steps: + - name: Fail if triggering actor is not administrator + uses: prince-chrismc/check-actor-permissions-action@v2.0.4 + with: + permission: admin + + - name: Get pull request information + id: info + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + run: | + PR_INFO=$(gh pr view ${{ inputs.pr }} --repo ${{ github.repository }} --json isCrossRepository,headRefOid,headRefName,headRepository,headRepositoryOwner --jq '{isFork: .isCrossRepository, owner: .headRepositoryOwner.login, repoName: .headRepository.name, branch: .headRefName, sha: .headRefOid}') + echo $PR_INFO + # Loop through each key-value pair in PR_INFO and set as step output + for key in $(echo "$PR_INFO" | jq -r 'keys[]'); do + value=$(echo "$PR_INFO" | jq -r ".$key") + echo "$key=$value" >> "$GITHUB_OUTPUT" + done + echo "repository=$(echo "$PR_INFO" | jq -r ".owner")/$(echo "$PR_INFO" | jq -r ".repoName")" >> $GITHUB_OUTPUT + echo "shortSha=$(echo "$PR_INFO" | jq -r ".sha" | cut -c 1-8)" >> $GITHUB_OUTPUT + echo "date=$(date)" >> $GITHUB_OUTPUT + echo "timestamp=$(date +%s)" >> $GITHUB_OUTPUT + + - name: Checkout + uses: actions/checkout@v3 + with: + repository: ${{ steps.info.outputs.isFork == 'true' && steps.info.outputs.repository || null }} + ref: ${{ steps.info.outputs.sha }} + token: ${{ secrets.GH_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: | + ~/.yarn/berry/cache + key: yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + restore-keys: | + yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + yarn-v1-${{ hashFiles('scripts/yarn.lock') }} + yarn-v1 + + - name: Install dependencies + run: yarn task --task=install --start-from=install + + - name: Set version + id: version + working-directory: scripts + run: | + yarn release:version --exact 0.0.0-pr-${{ inputs.pr }}-sha-${{ steps.info.outputs.shortSha }} --verbose + + - name: Publish v${{ steps.version.outputs.next-version }} + env: + YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + working-directory: scripts + run: yarn release:publish --tag canary --verbose + + - name: Replace Pull Request Body + # TODO: replace with ivangabriele/find-and-replace-pull-request-body@vX when https://github.com/ivangabriele/find-and-replace-pull-request-body/pull/11 has been released + uses: mcky/find-and-replace-pull-request-body@v1.1.6-mcky + with: + githubToken: ${{ secrets.GH_TOKEN }} + prNumber: ${{ inputs.pr }} + find: 'CANARY_RELEASE_SECTION' + isHtmlCommentTag: true + replace: | + This pull request has been released as version [`${{ steps.version.outputs.next-version }}`](https://npmjs.com/package/@storybook/cli/v/${{ steps.version.outputs.next-version }}). Install it by pinning all your Storybook dependencies to that version. +
+ More information + + | | | + | --- | --- | + | **Published version** | [`${{ steps.version.outputs.next-version }}`](https://npmjs.com/package/@storybook/cli/v/${{ steps.version.outputs.next-version }}) | + | **Triggered by** | @${{ github.triggering_actor }} | + | **Repository** | [${{ steps.info.outputs.repository }}](https://github.com/${{ steps.info.outputs.repository }}) | + | **Branch** | [`${{ steps.info.outputs.branch }}`](https://github.com/${{ steps.info.outputs.repository }}/tree/${{ steps.info.outputs.branch }}) | + | **Commit** | [`${{ steps.info.outputs.shortSha }}`](https://github.com/${{ steps.info.outputs.repository }}/commit/${{ steps.info.outputs.sha }}) | + | **Datetime** | ${{ steps.info.outputs.date }} (`${{ steps.info.outputs.timestamp }}`) | + | **Workflow run** | [${{ github.run_id }}](https://github.com/storybookjs/storybook/actions/runs/${{ github.run_id }}) | + + To request a new release of this pull request, mention the `@storybookjs/core` team. + + _core team members can create a new canary release [here](https://github.com/storybookjs/storybook/actions/workflows/canary-release-pr.yml) or locally with `gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=${{ inputs.pr }}`_ +
+ + - name: Create failing comment on PR + if: failure() + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + run: | + gh pr comment ${{ inputs.pr }}\ + --repo "${{github.repository }}"\ + --body "Failed to publish canary version of this pull request, triggered by @${{ github.triggering_actor }}. See the failed workflow run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" diff --git a/.github/workflows/danger-js.yml b/.github/workflows/danger-js.yml index edeb4aaad03a..f83519953b4b 100644 --- a/.github/workflows/danger-js.yml +++ b/.github/workflows/danger-js.yml @@ -1,6 +1,19 @@ on: pull_request: - types: [opened, synchronize, reopened, labeled, unlabeled] + types: + - opened + - synchronize + - reopened + - labeled + - unlabeled + - edited + branches: + - main + - next + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number }} + cancel-in-progress: true name: Danger JS jobs: @@ -13,7 +26,7 @@ jobs: node-version: '16' - uses: actions/checkout@v3 - name: Danger JS - uses: danger/danger-js@10.9.0 + uses: danger/danger-js@11.2.6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/generate-sandboxes-main.yml b/.github/workflows/generate-sandboxes-main.yml index f3065a9048ad..66cd1b800d37 100644 --- a/.github/workflows/generate-sandboxes-main.yml +++ b/.github/workflows/generate-sandboxes-main.yml @@ -4,6 +4,13 @@ on: schedule: - cron: '2 2 */1 * *' workflow_dispatch: + # To test fixes on push rather than wait for the scheduling, do the following: + # 1. Uncomment the lines below and add your branch. + # push: + # branches: + # - + # 2. change the "ref" value to in the actions/checkout step below. + # 3. 👉 DON'T FORGET TO UNDO THE VALUES BACK TO `main` BEFORE YOU MERGE YOUR CHANGES! jobs: generate: @@ -41,3 +48,10 @@ jobs: - name: Publish run: yarn publish-sandboxes --remote=https://storybook-bot:${{ secrets.PAT_STORYBOOK_BOT}}@github.com/storybookjs/sandboxes.git --push --branch=main working-directory: ./code + - name: The job has failed + if: ${{ failure() || cancelled() }} + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }} + uses: Ilshidur/action-discord@master + with: + args: 'The generation of sandboxes in the **main** branch has failed. [View Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})' diff --git a/.github/workflows/generate-sandboxes-next.yml b/.github/workflows/generate-sandboxes-next.yml index 29b45c34696f..f22e7cb4a50b 100644 --- a/.github/workflows/generate-sandboxes-next.yml +++ b/.github/workflows/generate-sandboxes-next.yml @@ -10,7 +10,7 @@ on: # branches: # - # 2. change the "ref" value to in the actions/checkout step below. - # 3. don't forget to undo the values back to `next` before you merge your changes. + # 3. 👉 DON'T FORGET TO UNDO THE VALUES BACK TO `next` BEFORE YOU MERGE YOUR CHANGES! jobs: generate: @@ -48,3 +48,10 @@ jobs: - name: Publish run: yarn publish-sandboxes --remote=https://storybook-bot:${{ secrets.PAT_STORYBOOK_BOT}}@github.com/storybookjs/sandboxes.git --push --branch=next working-directory: ./code + - name: The job has failed + if: ${{ failure() || cancelled() }} + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }} + uses: Ilshidur/action-discord@master + with: + args: 'The generation of sandboxes in the **next** branch has failed. [View Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})' diff --git a/.github/workflows/prepare-patch-release.yml b/.github/workflows/prepare-patch-release.yml new file mode 100644 index 000000000000..c88022c7ea01 --- /dev/null +++ b/.github/workflows/prepare-patch-release.yml @@ -0,0 +1,179 @@ +name: Prepare patch PR +run-name: Prepare patch PR, triggered by ${{ github.triggering_actor }} + +on: + push: + branches: + - next + workflow_dispatch: + +env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + prepare-patch-pull-request: + name: Prepare patch pull request + runs-on: ubuntu-latest + environment: release + defaults: + run: + working-directory: scripts + steps: + - name: Checkout main + uses: actions/checkout@v3 + with: + ref: main + token: ${{ secrets.GH_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: | + ~/.yarn/berry/cache + key: yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + restore-keys: | + yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + yarn-v1-${{ hashFiles('scripts/yarn.lock') }} + yarn-v1 + + - name: Install Dependencies + working-directory: . + run: | + yarn task --task=install + + - name: Check if pull request is frozen + if: github.event_name != 'workflow_dispatch' + id: check-frozen + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:is-pr-frozen --patch + + - name: Cancel when frozen + if: steps.check-frozen.outputs.frozen == 'true' && github.event_name != 'workflow_dispatch' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # From https://stackoverflow.com/a/75809743 + run: | + gh run cancel ${{ github.run_id }} + gh run watch ${{ github.run_id }} + + - name: Check for unreleased changes + id: unreleased-changes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:unreleased-changes-exists --unpicked-patches + + - name: Fetch next branch + run: + # depth needs to be set to a high enough number that it will contain all the merge commits to cherry-pick + # as of May 2023, the whole repo had 55K commits + git fetch --depth=2000 origin next + + - name: Pick patches + id: pick-patches + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' + yarn release:pick-patches + + - name: Bump version deferred + id: bump-version + if: steps.unreleased-changes.outputs.has-changes-to-release == 'true' + run: | + yarn release:version --deferred --release-type patch --verbose + + # We need the current version to set the branch name, even when not bumping the version + - name: Get current version + id: current-version + if: steps.unreleased-changes.outputs.has-changes-to-release == 'false' + run: | + yarn release:get-current-version --verbose + + - name: Set version output + id: versions + run: | + echo "current=${{ steps.bump-version.outputs.current-version || steps.current-version.outputs.current-version }}" >> "$GITHUB_OUTPUT" + echo "next=${{ steps.bump-version.outputs.next-version || steps.current-version.outputs.current-version }}" >> "$GITHUB_OUTPUT" + + - name: Write changelog + if: steps.unreleased-changes.outputs.has-changes-to-release == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + yarn release:write-changelog ${{ steps.versions.outputs.next }} --unpicked-patches --verbose + + - name: 'Commit changes to branch: version-patch-from-${{ steps.versions.outputs.current }}' + working-directory: . + run: | + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' + git checkout -b version-patch-from-${{ steps.versions.outputs.current }} + git add . + git commit -m "Write changelog for ${{ steps.versions.outputs.next }}" || true + git push --force origin version-patch-from-${{ steps.versions.outputs.current }} + + - name: Generate PR description + id: description + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:generate-pr-description --unpicked-patches --manual-cherry-picks='${{ steps.pick-patches.outputs.failed-cherry-picks }}' ${{ steps.unreleased-changes.outputs.has-changes-to-release == 'true' && format('{0}={1} {2}={3}', '--current-version', steps.versions.outputs.current, '--next-version', steps.versions.outputs.next) || '' }} --verbose + + - name: Create or update pull request with release + if: steps.unreleased-changes.outputs.has-changes-to-release == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if PR_STATE=$(gh pr view --json state --jq .state 2>/dev/null) && [[ -n "$PR_STATE" && "$PR_STATE" == *"OPEN"* ]]; then + gh pr edit \ + --repo "${{github.repository }}" \ + --title "Release: Patch ${{ steps.versions.outputs.next }}" \ + --body "${{ steps.description.outputs.description }}" + else + gh pr create \ + --repo "${{github.repository }}" \ + --title "Release: Patch ${{ steps.versions.outputs.next }}" \ + --label "release" \ + --base latest-release \ + --head version-patch-from-${{ steps.versions.outputs.current }} \ + --body "${{ steps.description.outputs.description }}" + fi + + - name: Create or update pull request without release + if: steps.unreleased-changes.outputs.has-changes-to-release == 'false' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if PR_STATE=$(gh pr view --json state --jq .state 2>/dev/null) && [[ -n "$PR_STATE" && "$PR_STATE" == *"OPEN"* ]]; then + gh pr edit \ + --repo "${{github.repository }}"\ + --title "Release: Merge patches to \`main\` (without version bump)" \ + --body "${{ steps.description.outputs.description }}" + else + gh pr create \ + --repo "${{github.repository }}"\ + --title "Release: Merge patches to \`main\` (without version bump)" \ + --label "release" \ + --base latest-release \ + --head version-patch-from-${{ steps.versions.outputs.current }} \ + --body "${{ steps.description.outputs.description }}" + fi + + - name: Report job failure to Discord + if: failure() + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }} + uses: Ilshidur/action-discord@master + with: + args: 'The GitHub Action for preparing the release pull request bumping from v${{ steps.versions.outputs.current }} to v${{ steps.versions.outputs.next }} (triggered by ${{ github.triggering_actor }}) failed! See run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' diff --git a/.github/workflows/prepare-prerelease.yml b/.github/workflows/prepare-prerelease.yml new file mode 100644 index 000000000000..1250aedcfaa3 --- /dev/null +++ b/.github/workflows/prepare-prerelease.yml @@ -0,0 +1,164 @@ +name: Prepare prerelease PR +run-name: Prepare prerelease PR, triggered by ${{ github.triggering_actor }} + +on: + push: + branches: + - next + workflow_dispatch: + inputs: + release-type: + description: 'Which release type to use for bumping the version' + required: true + default: 'prerelease' + type: choice + options: + - prerelease + - prepatch + - preminor + - premajor + - patch + - minor + - major + pre-id: + description: For prerelease versions, what prerelease identifier to use, eg. 'alpha', 'beta', 'rc' + required: false + type: string + +env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + prepare-prerelease-pull-request: + name: Prepare prerelease pull request + runs-on: ubuntu-latest + environment: release + defaults: + run: + working-directory: scripts + steps: + - name: Checkout next + uses: actions/checkout@v3 + with: + ref: next + # this needs to be set to a high enough number that it will contain the last version tag + # as of May 2023, the whole repo had 55K commits + fetch-depth: 10000 + token: ${{ secrets.GH_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: | + ~/.yarn/berry/cache + key: yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + restore-keys: | + yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + yarn-v1-${{ hashFiles('scripts/yarn.lock') }} + yarn-v1 + + - name: Install Dependencies + working-directory: . + run: | + yarn task --task=install + + - name: Check if pull request is frozen + if: github.event_name != 'workflow_dispatch' + id: check-frozen + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:is-pr-frozen + + - name: Cancel when frozen + if: steps.check-frozen.outputs.frozen == 'true' && github.event_name != 'workflow_dispatch' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # From https://stackoverflow.com/a/75809743 + run: | + gh run cancel ${{ github.run_id }} + gh run watch ${{ github.run_id }} + + # tags are needed to get changes and changelog generation + - name: Fetch git tags + run: git fetch --tags origin + + - name: Check for unreleased changes + id: unreleased-changes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:unreleased-changes-exists + + - name: Cancel when no release necessary + if: steps.unreleased-changes.outputs.has-changes-to-release == 'false' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # From https://stackoverflow.com/a/75809743 + run: | + gh run cancel ${{ github.run_id }} + gh run watch ${{ github.run_id }} + + - name: Bump version deferred + id: bump-version + run: | + yarn release:version --deferred --release-type ${{ inputs.release-type || 'prerelease' }} ${{ inputs.pre-id && format('{0} {1}', '--pre-id', inputs.pre-id) || '' }} --verbose + + - name: Write changelog + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + yarn release:write-changelog ${{ steps.bump-version.outputs.next-version }} --verbose + + - name: 'Commit changes to branch: version-prerelease-from-${{ steps.bump-version.outputs.current-version }}' + working-directory: . + run: | + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' + git checkout -b version-prerelease-from-${{ steps.bump-version.outputs.current-version }} + git add . + git commit -m "Write changelog for ${{ steps.bump-version.outputs.next-version }}" || true + git push --force origin version-prerelease-from-${{ steps.bump-version.outputs.current-version }} + + - name: Generate PR description + id: description + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:generate-pr-description --current-version ${{ steps.bump-version.outputs.current-version }} --next-version ${{ steps.bump-version.outputs.next-version }} --verbose + + - name: Create or update pull request + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + RELEASE_TYPE=${{ inputs.release-type || 'prerelease' }} + CAPITALIZED_RELEASE_TYPE=${RELEASE_TYPE^} + if PR_STATE=$(gh pr view --json state --jq .state 2>/dev/null) && [[ -n "$PR_STATE" && "$PR_STATE" == *"OPEN"* ]]; then + gh pr edit \ + --repo "${{github.repository }}" \ + --title "Release: $CAPITALIZED_RELEASE_TYPE ${{ inputs.pre-id && format('{0} ', inputs.pre-id) }}${{ steps.bump-version.outputs.next-version }}" \ + --body "${{ steps.description.outputs.description }}" + else + gh pr create \ + --repo "${{github.repository }}"\ + --title "Release: $CAPITALIZED_RELEASE_TYPE ${{ inputs.pre-id && format('{0} ', inputs.pre-id) }}${{ steps.bump-version.outputs.next-version }}" \ + --label "release" \ + --base next-release \ + --head version-prerelease-from-${{ steps.bump-version.outputs.current-version }} \ + --body "${{ steps.description.outputs.description }}" + fi + + - name: Report job failure to Discord + if: failure() + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }} + uses: Ilshidur/action-discord@master + with: + args: 'The GitHub Action for preparing the release pull request bumping from v${{ steps.bump-version.outputs.current-version }} to v${{ steps.bump-version.outputs.next-version }} (triggered by ${{ github.triggering_actor }}) failed! See run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000000..18e23c174162 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,189 @@ +name: Publish +run-name: Publish new version on ${{ github.ref_name }}, triggered by ${{ github.triggering_actor }} + +on: + push: + branches: + - latest-release + - next-release + +env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 + +permissions: + contents: write + pull-requests: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} + +jobs: + publish: + name: Publish new version + runs-on: ubuntu-latest + environment: release + defaults: + run: + working-directory: scripts + steps: + - name: Cancel if [skip ci] + if: contains(github.event.head_commit.message, '[skip ci]') + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # From https://stackoverflow.com/a/75809743 + run: | + gh run cancel ${{ github.run_id }} + gh run watch ${{ github.run_id }} + + - name: Checkout ${{ github.ref_name }} + uses: actions/checkout@v3 + with: + fetch-depth: 100 + token: ${{ secrets.GH_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: | + ~/.yarn/berry/cache + key: yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + restore-keys: | + yarn-v1-${{ hashFiles('scripts/yarn.lock') }}-${{ hashFiles('code/yarn.lock') }} + yarn-v1-${{ hashFiles('scripts/yarn.lock') }} + yarn-v1 + + - name: Install script dependencies + run: | + yarn install + + - name: Apply deferred version bump and commit + id: version-bump + working-directory: . + run: | + CURRENT_VERSION=$(cat ./code/package.json | jq '.version') + DEFERRED_NEXT_VERSION=$(cat ./code/package.json | jq '.deferredNextVersion') + + if [[ "$DEFERRED_NEXT_VERSION" == "null" ]]; then + echo "No deferred version set, not bumping versions" + exit 0 + fi + cd scripts + yarn release:version --apply --verbose + cd .. + + git config --global user.name "storybook-bot" + git config --global user.email "32066757+storybook-bot@users.noreply.github.com" + git add . + git commit -m "Bump version from $CURRENT_VERSION to $DEFERRED_NEXT_VERSION [skip ci]" || true + git push origin ${{ github.ref_name }} + + - name: Get current version + id: version + run: yarn release:get-current-version + + - name: Check if publish is needed + id: publish-needed + run: yarn release:is-version-published ${{ steps.version.outputs.current-version }} + + - name: Check release vs prerelease + if: steps.publish-needed.outputs.published == 'false' + id: is-prerelease + run: yarn release:is-prerelease + + - name: Install code dependencies + if: steps.publish-needed.outputs.published == 'false' + working-directory: . + run: yarn task --task=install --start-from=install + + - name: Publish + if: steps.publish-needed.outputs.published == 'false' + env: + YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: yarn release:publish --tag ${{ steps.is-prerelease.outputs.prerelease == 'true' && 'next' || 'latest' }} --verbose + + - name: Get target branch + id: target + run: echo "target=${{ github.ref_name == 'next-release' && 'next' || 'main' }}" >> $GITHUB_OUTPUT + + - name: Get changelog for ${{ steps.version.outputs.current-version }} + if: steps.publish-needed.outputs.published == 'false' + id: changelog + run: yarn release:get-changelog-from-file ${{ steps.version.outputs.current-version }} + + # tags are needed to get list of patches to label as picked + - name: Fetch git tags + if: github.ref_name == 'latest-release' + run: git fetch --tags origin + + # when this is a patch release from main, label any patch PRs included in the release + # when this is a stable release from next, label ALL patch PRs found, as they will per definition be "patched" now + - name: Label patch PRs as picked + if: github.ref_name == 'latest-release' || (steps.publish-needed.outputs.published == 'false' && steps.target.outputs.target == 'next' && !steps.is-prerelease.outputs.prerelease) + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: yarn release:label-patches ${{ steps.target.outputs.target == 'next' && '--all' || '' }} + + - name: Create GitHub Release + if: steps.publish-needed.outputs.published == 'false' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release create \ + v${{ steps.version.outputs.current-version }} \ + --repo "${{ github.repository }}" \ + --target ${{ github.ref_name }} \ + --title "v${{ steps.version.outputs.current-version }}" \ + --notes "${{ steps.changelog.outputs.changelog }}" \ + ${{ steps.is-prerelease.outputs.prerelease == 'true' && '--prerelease' || '' }} + + - name: Merge ${{ github.ref_name }} into ${{ steps.target.outputs.target }} + run: | + git config --global user.name "storybook-bot" + git config --global user.email "32066757+storybook-bot@users.noreply.github.com" + git fetch origin ${{ steps.target.outputs.target }} + git checkout ${{ steps.target.outputs.target }} + git merge ${{ github.ref_name }} + git push origin ${{ steps.target.outputs.target }} + + - name: Sync CHANGELOG.md from `main` to `next` + if: github.ref_name == 'latest-release' + working-directory: . + run: | + git fetch origin next + git checkout next + git pull + git checkout origin/main ./CHANGELOG.md + git add ./CHANGELOG.md + git commit -m "Update CHANGELOG.md for v${{ steps.version.outputs.current-version }} [skip ci]" + git push origin next + + - name: Sync version JSONs from `next-release` to `main` + if: github.ref_name == 'next-release' + working-directory: . + run: | + VERSION_FILE="./docs/versions/${{ steps.is-prerelease.outputs.prerelease == 'true' && 'next' || 'latest' }}.json" + git fetch origin main + git checkout main + git pull + git checkout origin/next-release $VERSION_FILE + git add $VERSION_FILE + git commit -m "Update $VERSION_FILE for v${{ steps.version.outputs.current-version }}" + git push origin main + + - name: Overwrite main with next + if: steps.target.outputs.target == 'next' && steps.is-prerelease.outputs.prerelease == 'false' + run: git push --force origin next:main + + - name: Report job failure to Discord + if: failure() + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }} + uses: Ilshidur/action-discord@master + with: + args: 'The GitHub Action for publishing version ${{ steps.version.outputs.current-version }} (triggered by ${{ github.triggering_actor }}) failed! See run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000000..1418c69695f3 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,18 @@ +name: 'Close stale issues that need reproduction or more info from OP' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v8 + with: + stale-issue-message: "Hi there! Thank you for opening this issue, but it has been marked as `stale` because we need more information to move forward. Could you please provide us with the requested reproduction or additional information that could help us better understand the problem? We'd love to resolve this issue, but we can't do it without your help!" + close-issue-message: "I'm afraid we need to close this issue for now, since we can't take any action without the requested reproduction or additional information. But please don't hesitate to open a new issue if the problem persists – we're always happy to help. Thanks so much for your understanding." + any-of-labels: 'needs reproduction,needs more info' + exempt-issue-labels: 'needs triage' + labels-to-add-when-unstale: 'needs triage' + days-before-stale: 21 + days-before-pr-stale: -1 diff --git a/.github/workflows/tests-unit.yml b/.github/workflows/tests-unit.yml index 038f0bc08730..6c355ec1714b 100644 --- a/.github/workflows/tests-unit.yml +++ b/.github/workflows/tests-unit.yml @@ -13,13 +13,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [windows-latest] node_version: [16] - include: - - os: macos-latest - node_version: 16 - - os: windows-latest - node_version: 16 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/trigger-circle-ci-workflow.yml b/.github/workflows/trigger-circle-ci-workflow.yml index a54a57743175..c8c8a4c0af9c 100644 --- a/.github/workflows/trigger-circle-ci-workflow.yml +++ b/.github/workflows/trigger-circle-ci-workflow.yml @@ -10,6 +10,10 @@ on: - next - main +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: get-branch: runs-on: ubuntu-latest @@ -32,12 +36,12 @@ jobs: outputs: branch: ${{ env.branch }} - trigger-ci-tests: + trigger-normal-tests: runs-on: ubuntu-latest needs: get-branch - if: github.event_name == 'pull_request_target' && github.event.pull_request.draft == true && !contains(github.event.pull_request.labels.*.name, 'ci:pr') && !contains(github.event.pull_request.labels.*.name, 'ci:merged') && !contains(github.event.pull_request.labels.*.name, 'ci:daily') + if: github.event_name == 'pull_request_target' && contains(github.event.pull_request.labels.*.name, 'ci:normal') steps: - - name: Trigger draft PR tests + - name: Trigger Normal tests run: > curl -X POST --location "https://circleci.com/api/v2/project/gh/storybookjs/storybook/pipeline" \ -H "Content-Type: application/json" \ @@ -45,18 +49,18 @@ jobs: -d '{ "branch": "'"$BRANCH"'", "parameters": { - "workflow": "ci" + "workflow": "normal" } }' env: CIRCLE_CI_TOKEN: ${{ secrets.CIRCLE_CI_TOKEN }} BRANCH: ${{ needs.get-branch.outputs.branch }} - trigger-pr-tests: + trigger-docs-tests: runs-on: ubuntu-latest needs: get-branch - if: github.event_name == 'pull_request_target' && ((github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ci:pr')) && !contains(github.event.pull_request.labels.*.name, 'ci:merged') && !contains(github.event.pull_request.labels.*.name, 'ci:daily')) + if: github.event_name == 'pull_request_target' && contains(github.event.pull_request.labels.*.name, 'ci:docs') steps: - - name: Trigger PR tests + - name: Trigger docs tests run: > curl -X POST --location "https://circleci.com/api/v2/project/gh/storybookjs/storybook/pipeline" \ -H "Content-Type: application/json" \ @@ -64,7 +68,7 @@ jobs: -d '{ "branch": "'"$BRANCH"'", "parameters": { - "workflow": "pr" + "workflow": "docs" } }' env: @@ -73,7 +77,7 @@ jobs: trigger-merged-tests: runs-on: ubuntu-latest needs: get-branch - if: github.event_name == 'push' || (contains(github.event.pull_request.labels.*.name, 'ci:merged') && !contains(github.event.pull_request.labels.*.name, 'ci:daily')) + if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'ci:merged') steps: - name: Trigger merged tests run: > @@ -107,4 +111,4 @@ jobs: }' env: CIRCLE_CI_TOKEN: ${{ secrets.CIRCLE_CI_TOKEN }} - BRANCH: ${{ needs.get-branch.outputs.branch }} \ No newline at end of file + BRANCH: ${{ needs.get-branch.outputs.branch }} diff --git a/.gitignore b/.gitignore index c72facf13ace..29c025aadf26 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ code/test-results/ code/playwright-results/ code/playwright-report/ code/playwright/.cache/ +code/bench-results/ + +/packs \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index b600f07551c2..1737faa78f27 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -51,5 +51,6 @@ "*.js": "javascriptreact" }, "prettier.ignorePath": "./code/.prettierignore", - "typescript.tsdk": "./code/node_modules/typescript/lib" + "typescript.tsdk": "./code/node_modules/typescript/lib", + "storyExplorer.storybookConfigDir": "./code/ui/.storybook" } \ No newline at end of file diff --git a/.yarn/releases/yarn-3.4.1.cjs b/.yarn/releases/yarn-3.5.1.cjs similarity index 50% rename from .yarn/releases/yarn-3.4.1.cjs rename to .yarn/releases/yarn-3.5.1.cjs index 2bdb752d8609..97eed758032f 100755 --- a/.yarn/releases/yarn-3.4.1.cjs +++ b/.yarn/releases/yarn-3.5.1.cjs @@ -1,48 +1,48 @@ #!/usr/bin/env node /* eslint-disable */ //prettier-ignore -(()=>{var Mue=Object.create;var Wb=Object.defineProperty;var Kue=Object.getOwnPropertyDescriptor;var Uue=Object.getOwnPropertyNames;var Hue=Object.getPrototypeOf,Gue=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Yue=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)Wb(r,t,{get:e[t],enumerable:!0})},jue=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Uue(e))!Gue.call(r,n)&&n!==t&&Wb(r,n,{get:()=>e[n],enumerable:!(i=Kue(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Mue(Hue(r)):{},jue(e||!r||!r.__esModule?Wb(t,"default",{value:r,enumerable:!0}):t,r));var _1=w((O7e,X1)=>{X1.exports=V1;V1.sync=uge;var W1=J("fs");function cge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{tK.exports=$1;$1.sync=gge;var Z1=J("fs");function $1(r,e,t){Z1.stat(r,function(i,n){t(i,i?!1:eK(n,e))})}function gge(r,e){return eK(Z1.statSync(r),e)}function eK(r,e){return r.isFile()&&fge(r,e)}function fge(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var nK=w((U7e,iK)=>{var K7e=J("fs"),_E;process.platform==="win32"||global.TESTING_WINDOWS?_E=_1():_E=rK();iK.exports=uS;uS.sync=hge;function uS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){uS(r,e||{},function(s,o){s?n(s):i(o)})})}_E(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function hge(r,e){try{return _E.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var uK=w((H7e,cK)=>{var Ig=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",sK=J("path"),pge=Ig?";":":",oK=nK(),aK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),AK=(r,e)=>{let t=e.colon||pge,i=r.match(/\//)||Ig&&r.match(/\\/)?[""]:[...Ig?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Ig?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ig?n.split(t):[""];return Ig&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},lK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=AK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(aK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=sK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];oK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},dge=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=AK(r,e),s=[];for(let o=0;o{"use strict";var gK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};gS.exports=gK;gS.exports.default=gK});var CK=w((Y7e,dK)=>{"use strict";var hK=J("path"),Cge=uK(),mge=fK();function pK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=Cge.sync(r.command,{path:t[mge({env:t})],pathExt:e?hK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=hK.resolve(n?r.options.cwd:"",o)),o}function Ege(r){return pK(r)||pK(r,!0)}dK.exports=Ege});var mK=w((j7e,hS)=>{"use strict";var fS=/([()\][%!^"`<>&|;, *?])/g;function Ige(r){return r=r.replace(fS,"^$1"),r}function yge(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(fS,"^$1"),e&&(r=r.replace(fS,"^$1")),r}hS.exports.command=Ige;hS.exports.argument=yge});var IK=w((q7e,EK)=>{"use strict";EK.exports=/^#!(.*)/});var wK=w((J7e,yK)=>{"use strict";var wge=IK();yK.exports=(r="")=>{let e=r.match(wge);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var QK=w((W7e,BK)=>{"use strict";var pS=J("fs"),Bge=wK();function Qge(r){let t=Buffer.alloc(150),i;try{i=pS.openSync(r,"r"),pS.readSync(i,t,0,150,0),pS.closeSync(i)}catch{}return Bge(t.toString())}BK.exports=Qge});var xK=w((z7e,vK)=>{"use strict";var bge=J("path"),bK=CK(),SK=mK(),Sge=QK(),vge=process.platform==="win32",xge=/\.(?:com|exe)$/i,Pge=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Dge(r){r.file=bK(r);let e=r.file&&Sge(r.file);return e?(r.args.unshift(r.file),r.command=e,bK(r)):r.file}function kge(r){if(!vge)return r;let e=Dge(r),t=!xge.test(e);if(r.options.forceShell||t){let i=Pge.test(e);r.command=bge.normalize(r.command),r.command=SK.command(r.command),r.args=r.args.map(s=>SK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Rge(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:kge(i)}vK.exports=Rge});var kK=w((V7e,DK)=>{"use strict";var dS=process.platform==="win32";function CS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Fge(r,e){if(!dS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=PK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function PK(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawn"):null}function Nge(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawnSync"):null}DK.exports={hookChildProcess:Fge,verifyENOENT:PK,verifyENOENTSync:Nge,notFoundError:CS}});var IS=w((X7e,yg)=>{"use strict";var RK=J("child_process"),mS=xK(),ES=kK();function FK(r,e,t){let i=mS(r,e,t),n=RK.spawn(i.command,i.args,i.options);return ES.hookChildProcess(n,i),n}function Lge(r,e,t){let i=mS(r,e,t),n=RK.spawnSync(i.command,i.args,i.options);return n.error=n.error||ES.verifyENOENTSync(n.status,i),n}yg.exports=FK;yg.exports.spawn=FK;yg.exports.sync=Lge;yg.exports._parse=mS;yg.exports._enoent=ES});var LK=w((_7e,NK)=>{"use strict";function Tge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ml(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ml)}Tge(Ml,Error);Ml.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",tt=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Ls=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ei="$'",_n=me("$'",!1),oa="'",aA=me("'",!1),eg=function(m){return[{type:"text",text:m}]},Zn='""',AA=me('""',!1),aa=function(){return{type:"text",text:""}},up='"',lA=me('"',!1),cA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},wl=function(m){return{type:"shell",shell:m,quoted:!0}},tg=function(m){return{type:"variable",...m,quoted:!0}},po=function(m){return{type:"text",text:m}},rg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},gp=function(m){return{type:"shell",shell:m,quoted:!1}},fp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,Co=Je(["'"],!0,!1),Dn=function(m){return m.join("")},ig=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Bl=`\\ -`,kn=me(`\\ -`,!1),$n=function(){return""},es="\\",gt=me("\\",!1),mo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),an=function(m){return m},S="\\a",Tt=me("\\a",!1),ng=function(){return"a"},Ql="\\b",hp=me("\\b",!1),pp=function(){return"\b"},dp=/^[Ee]/,Cp=Je(["E","e"],!1,!1),mp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),uA=function(){return"\f"},ji="\\n",bl=me("\\n",!1),Xe=function(){return` -`},Aa="\\r",sg=me("\\r",!1),bE=function(){return"\r"},Ep="\\t",SE=me("\\t",!1),ar=function(){return" "},Rn="\\v",Sl=me("\\v",!1),Ip=function(){return"\v"},Ts=/^[\\'"?]/,la=Je(["\\","'",'"',"?"],!1,!1),An=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",og=me("\\x",!1),vl="\\u",Os=me("\\u",!1),xl="\\U",gA=me("\\U",!1),ag=function(m){return String.fromCodePoint(parseInt(m,16))},Ag=/^[0-7]/,ca=Je([["0","7"]],!1,!1),ua=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Eo=nt(),fA="-",Pl=me("-",!1),Ms="+",Dl=me("+",!1),vE=".",yp=me(".",!1),lg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},wp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},xE=function(m){return{type:"variable",...m}},kl=function(m){return{type:"variable",name:m}},PE=function(m){return m},cg="*",hA=me("*",!1),Rr="/",DE=me("/",!1),Ks=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},Us=function(m,b){return b.reduce((N,U)=>({left:N,...U}),m)},ug=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},pA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Fn=me("${",!1),Db=":-",$M=me(":-",!1),e1=function(m,b){return{name:m,defaultValue:b}},kb=":-}",t1=me(":-}",!1),r1=function(m){return{name:m,defaultValue:[]}},Rb=":+",i1=me(":+",!1),n1=function(m,b){return{name:m,alternativeValue:b}},Fb=":+}",s1=me(":+}",!1),o1=function(m){return{name:m,alternativeValue:[]}},Nb=function(m){return{name:m}},a1="$",A1=me("$",!1),l1=function(m){return e.isGlobPattern(m)},c1=function(m){return m},Lb=/^[a-zA-Z0-9_]/,Tb=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ob=function(){return T()},Mb=/^[$@*?#a-zA-Z0-9_\-]/,Kb=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),u1=/^[(){}<>$|&; \t"']/,gg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Ub=/^[<>&; \t"']/,Hb=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),kE=/^[ \t]/,RE=Je([" "," "],!1,!1),Q=0,Me=0,dA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function _(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),ki([lt(m)],r.substring(Me,Q),b)}function Be(m,b){throw b=b!==void 0?b:Et(Me,Q),Nn(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=dA[m],N;if(b)return b;for(N=m-1;!dA[N];)N--;for(b=dA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Nn(m,b){return new Ml(m,null,null,b)}function ki(m,b,N){return new Ml(Ml.buildMessage(m,b),m,b,N)}function CA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,U,ce;if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U===t&&(U=null),U!==t?(Me=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ts(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function ga(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Kr(){var m,b,N;return m=Q,b=g1(),b!==t?(N=yue(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function yue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=wue(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function wue(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function g1(){var m,b,N;return m=Q,b=bue(),b!==t?(N=Bue(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Bue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Que(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=g1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Que(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function FE(){var m,b,N,U,ce,Se;if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t)if(U=p1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function bue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=he,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],U=FE();U!==t;)N.push(U),U=FE();if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t){if(ce=[],Se=h1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=h1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=FE(),U!==t)for(;U!==t;)N.push(U),U=FE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=we(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function f1(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=NE(),U!==t)for(;U!==t;)N.push(U),U=NE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function h1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Bp(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=NE(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Bp(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(U=Sue(),U!==t?(ce=NE(),ce!==t?(Me=m,b=Y(N,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Sue(){var m;return r.substr(Q,2)===pe?(m=pe,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(tt)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function NE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=p1(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function p1(){var m,b,N;if(m=Q,b=[],N=d1(),N!==t)for(;N!==t;)b.push(N),N=d1();else b=t;return b!==t&&(Me=m,b=Ls(b)),m=b,m}function d1(){var m,b;return m=Q,b=vue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=xue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Pue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Due(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function vue(){var m,b,N,U;return m=Q,r.substr(Q,2)===Ei?(b=Ei,Q+=2):(b=t,I===0&&Qe(_n)),b!==t?(N=Fue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function xue(){var m,b,N,U;return m=Q,r.charCodeAt(Q)===39?(b=oa,Q++):(b=t,I===0&&Qe(aA)),b!==t?(N=kue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Pue(){var m,b,N,U;if(m=Q,r.substr(Q,2)===Zn?(b=Zn,Q+=2):(b=t,I===0&&Qe(AA)),b!==t&&(Me=m,b=aa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=up,Q++):(b=t,I===0&&Qe(lA)),b!==t){for(N=[],U=C1();U!==t;)N.push(U),U=C1();N!==t?(r.charCodeAt(Q)===34?(U=up,Q++):(U=t,I===0&&Qe(lA)),U!==t?(Me=m,b=cA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function Due(){var m,b,N;if(m=Q,b=[],N=m1(),N!==t)for(;N!==t;)b.push(N),N=m1();else b=t;return b!==t&&(Me=m,b=cA(b)),m=b,m}function C1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=wl(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=tg(b)),m=b,m===t&&(m=Q,b=Rue(),b!==t&&(Me=m,b=po(b)),m=b))),m}function m1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=rg(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=gp(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=fp(b)),m=b,m===t&&(m=Q,b=Tue(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=Lue(),b!==t&&(Me=m,b=po(b)),m=b)))),m}function kue(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Rue(){var m,b,N;if(m=Q,b=[],N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function E1(){var m,b,N;return m=Q,r.substr(Q,2)===Bl?(b=Bl,Q+=2):(b=t,I===0&&Qe(kn)),b!==t&&(Me=m,b=$n()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(mo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function Fue(){var m,b,N;for(m=Q,b=[],N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));N!==t;)b.push(N),N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function I1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=ng()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ql?(b=Ql,Q+=2):(b=t,I===0&&Qe(hp)),b!==t&&(Me=m,b=pp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(dp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Cp)),N!==t?(Me=m,b=mp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=uA()),m=b,m===t&&(m=Q,r.substr(Q,2)===ji?(b=ji,Q+=2):(b=t,I===0&&Qe(bl)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===Aa?(b=Aa,Q+=2):(b=t,I===0&&Qe(sg)),b!==t&&(Me=m,b=bE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ep?(b=Ep,Q+=2):(b=t,I===0&&Qe(SE)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Rn?(b=Rn,Q+=2):(b=t,I===0&&Qe(Sl)),b!==t&&(Me=m,b=Ip()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ts.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(la)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Nue()))))))))),m}function Nue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs,Jb;return m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=Gb(),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(og)),b!==t?(N=Q,U=Q,ce=Gb(),ce!==t?(Se=Ln(),Se!==t?(ce=[ce,Se],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=Gb()),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===vl?(b=vl,Q+=2):(b=t,I===0&&Qe(Os)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Se,ht,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===xl?(b=xl,Q+=2):(b=t,I===0&&Qe(gA)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(Jr=Ln(),Jr!==t?(hi=Ln(),hi!==t?(rs=Ln(),rs!==t?(Jb=Ln(),Jb!==t?(ce=[ce,Se,ht,Bt,Jr,hi,rs,Jb],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function Gb(){var m;return Ag.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(ca)),m}function Ln(){var m;return ua.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function Lue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Yb(){var m,b,N,U,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(U=vE,Q++):(U=t,I===0&&Qe(yp)),U!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=lg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=wp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=xE(b)),m=b,m===t&&(m=Q,b=Rl(),b!==t&&(Me=m,b=kl(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=PE(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function jb(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=Yb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function y1(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=jb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function w1(){var m,b,N,U,ce,Se;if(m=Q,r.substr(Q,3)===pA?(b=pA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ke(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function B1(){var m,b,N,U;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(U=O,Q++):(U=t,I===0&&Qe(F)),U!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function qb(){var m,b,N,U,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Db?(U=Db,Q+=2):(U=t,I===0&&Qe($M)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=e1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===kb?(U=kb,Q+=3):(U=t,I===0&&Qe(t1)),U!==t?(Me=m,b=r1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Rb?(U=Rb,Q+=2):(U=t,I===0&&Qe(i1)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=n1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===Fb?(U=Fb,Q+=3):(U=t,I===0&&Qe(s1)),U!==t?(Me=m,b=o1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.charCodeAt(Q)===125?(U=Fe,Q++):(U=t,I===0&&Qe(Ne)),U!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=a1,Q++):(b=t,I===0&&Qe(A1)),b!==t?(N=Rl(),N!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function Tue(){var m,b,N;return m=Q,b=Oue(),b!==t?(Me=Q,N=l1(b),N?N=void 0:N=t,N!==t?(Me=m,b=c1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Oue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Q1(){var m,b,N;if(m=Q,b=[],Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb)),N!==t)for(;N!==t;)b.push(N),Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function Rl(){var m,b,N;if(m=Q,b=[],Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb)),N!==t)for(;N!==t;)b.push(N),Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function b1(){var m;return u1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(gg)),m}function S1(){var m;return Ub.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(Hb)),m}function He(){var m,b;if(m=[],kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE)),b!==t)for(;b!==t;)m.push(b),kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Mge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ul(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ul)}Mge(Ul,Error);Ul.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new Ul(ne,null,null,Y)}function oe(ne,Y,pe){return new Ul(Ul.buildMessage(ne,Y),ne,Y,pe)}function le(){var ne,Y,pe,ie;return ne=v,Y=we(),Y!==t?(r.charCodeAt(v)===47?(pe=s,v++):(pe=t,$===0&&Fe(o)),pe!==t?(ie=we(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=we(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function we(){var ne,Y,pe,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(pe=c,v++):(pe=t,$===0&&Fe(u)),pe!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,pe,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(pe=Ae(),pe!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=Ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function Ae(){var ne,Y,pe;if(ne=v,Y=[],p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C)),pe!==t)for(;pe!==t;)Y.push(pe),p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,pe;if(ne=v,Y=[],y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B)),pe!==t)for(;pe!==t;)Y.push(pe),y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function UK(r){return typeof r>"u"||r===null}function Uge(r){return typeof r=="object"&&r!==null}function Hge(r){return Array.isArray(r)?r:UK(r)?[]:[r]}function Gge(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Op(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Op.prototype=Object.create(Error.prototype);Op.prototype.constructor=Op;Op.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};HK.exports=Op});var jK=w((pXe,YK)=>{"use strict";var GK=Gl();function SS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}SS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +(()=>{var Sge=Object.create;var lS=Object.defineProperty;var vge=Object.getOwnPropertyDescriptor;var xge=Object.getOwnPropertyNames;var Pge=Object.getPrototypeOf,Dge=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var kge=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)lS(r,t,{get:e[t],enumerable:!0})},Rge=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xge(e))!Dge.call(r,n)&&n!==t&&lS(r,n,{get:()=>e[n],enumerable:!(i=vge(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Sge(Pge(r)):{},Rge(e||!r||!r.__esModule?lS(t,"default",{value:r,enumerable:!0}):t,r));var vU=w((j7e,SU)=>{SU.exports=bU;bU.sync=$ge;var BU=J("fs");function _ge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{kU.exports=PU;PU.sync=efe;var xU=J("fs");function PU(r,e,t){xU.stat(r,function(i,n){t(i,i?!1:DU(n,e))})}function efe(r,e){return DU(xU.statSync(r),e)}function DU(r,e){return r.isFile()&&tfe(r,e)}function tfe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var NU=w((W7e,FU)=>{var J7e=J("fs"),lI;process.platform==="win32"||global.TESTING_WINDOWS?lI=vU():lI=RU();FU.exports=SS;SS.sync=rfe;function SS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){SS(r,e||{},function(s,o){s?n(s):i(o)})})}lI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function rfe(r,e){try{return lI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var HU=w((z7e,KU)=>{var Dg=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",LU=J("path"),ife=Dg?";":":",TU=NU(),OU=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),MU=(r,e)=>{let t=e.colon||ife,i=r.match(/\//)||Dg&&r.match(/\\/)?[""]:[...Dg?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Dg?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Dg?n.split(t):[""];return Dg&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},UU=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=MU(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(OU(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=LU.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];TU(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},nfe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=MU(r,e),s=[];for(let o=0;o{"use strict";var GU=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};vS.exports=GU;vS.exports.default=GU});var WU=w((X7e,JU)=>{"use strict";var jU=J("path"),sfe=HU(),ofe=YU();function qU(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=sfe.sync(r.command,{path:t[ofe({env:t})],pathExt:e?jU.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=jU.resolve(n?r.options.cwd:"",o)),o}function afe(r){return qU(r)||qU(r,!0)}JU.exports=afe});var zU=w((Z7e,PS)=>{"use strict";var xS=/([()\][%!^"`<>&|;, *?])/g;function Afe(r){return r=r.replace(xS,"^$1"),r}function lfe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(xS,"^$1"),e&&(r=r.replace(xS,"^$1")),r}PS.exports.command=Afe;PS.exports.argument=lfe});var XU=w((_7e,VU)=>{"use strict";VU.exports=/^#!(.*)/});var _U=w(($7e,ZU)=>{"use strict";var cfe=XU();ZU.exports=(r="")=>{let e=r.match(cfe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var eK=w((eZe,$U)=>{"use strict";var DS=J("fs"),ufe=_U();function gfe(r){let t=Buffer.alloc(150),i;try{i=DS.openSync(r,"r"),DS.readSync(i,t,0,150,0),DS.closeSync(i)}catch{}return ufe(t.toString())}$U.exports=gfe});var nK=w((tZe,iK)=>{"use strict";var ffe=J("path"),tK=WU(),rK=zU(),hfe=eK(),pfe=process.platform==="win32",dfe=/\.(?:com|exe)$/i,Cfe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function mfe(r){r.file=tK(r);let e=r.file&&hfe(r.file);return e?(r.args.unshift(r.file),r.command=e,tK(r)):r.file}function Efe(r){if(!pfe)return r;let e=mfe(r),t=!dfe.test(e);if(r.options.forceShell||t){let i=Cfe.test(e);r.command=ffe.normalize(r.command),r.command=rK.command(r.command),r.args=r.args.map(s=>rK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Ife(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:Efe(i)}iK.exports=Ife});var aK=w((rZe,oK)=>{"use strict";var kS=process.platform==="win32";function RS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function yfe(r,e){if(!kS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=sK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function sK(r,e){return kS&&r===1&&!e.file?RS(e.original,"spawn"):null}function wfe(r,e){return kS&&r===1&&!e.file?RS(e.original,"spawnSync"):null}oK.exports={hookChildProcess:yfe,verifyENOENT:sK,verifyENOENTSync:wfe,notFoundError:RS}});var LS=w((iZe,kg)=>{"use strict";var AK=J("child_process"),FS=nK(),NS=aK();function lK(r,e,t){let i=FS(r,e,t),n=AK.spawn(i.command,i.args,i.options);return NS.hookChildProcess(n,i),n}function Bfe(r,e,t){let i=FS(r,e,t),n=AK.spawnSync(i.command,i.args,i.options);return n.error=n.error||NS.verifyENOENTSync(n.status,i),n}kg.exports=lK;kg.exports.spawn=lK;kg.exports.sync=Bfe;kg.exports._parse=FS;kg.exports._enoent=NS});var uK=w((nZe,cK)=>{"use strict";function Qfe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Zl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Zl)}Qfe(Zl,Error);Zl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",_e=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Us=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ii="$'",rs=me("$'",!1),ga="'",dA=me("'",!1),cg=function(m){return[{type:"text",text:m}]},is='""',CA=me('""',!1),fa=function(){return{type:"text",text:""}},wp='"',mA=me('"',!1),EA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},Ll=function(m){return{type:"shell",shell:m,quoted:!0}},ug=function(m){return{type:"variable",...m,quoted:!0}},Io=function(m){return{type:"text",text:m}},gg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},Bp=function(m){return{type:"shell",shell:m,quoted:!1}},Qp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,yo=Je(["'"],!0,!1),Rn=function(m){return m.join("")},fg=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Tl=`\\ +`,Fn=me(`\\ +`,!1),ns=function(){return""},ss="\\",gt=me("\\",!1),wo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),An=function(m){return m},S="\\a",Tt=me("\\a",!1),hg=function(){return"a"},Ol="\\b",bp=me("\\b",!1),Sp=function(){return"\b"},vp=/^[Ee]/,xp=Je(["E","e"],!1,!1),Pp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),IA=function(){return"\f"},Wi="\\n",Ml=me("\\n",!1),Xe=function(){return` +`},ha="\\r",pg=me("\\r",!1),OE=function(){return"\r"},Dp="\\t",ME=me("\\t",!1),ar=function(){return" "},Nn="\\v",Ul=me("\\v",!1),kp=function(){return"\v"},Ks=/^[\\'"?]/,pa=Je(["\\","'",'"',"?"],!1,!1),ln=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",dg=me("\\x",!1),Kl="\\u",Hs=me("\\u",!1),Hl="\\U",yA=me("\\U",!1),Cg=function(m){return String.fromCodePoint(parseInt(m,16))},mg=/^[0-7]/,da=Je([["0","7"]],!1,!1),Ca=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Bo=nt(),wA="-",Gl=me("-",!1),Gs="+",Yl=me("+",!1),UE=".",Rp=me(".",!1),Eg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},Fp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},KE=function(m){return{type:"variable",...m}},jl=function(m){return{type:"variable",name:m}},HE=function(m){return m},Ig="*",BA=me("*",!1),Rr="/",GE=me("/",!1),Ys=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},js=function(m,b){return b.reduce((N,K)=>({left:N,...K}),m)},yg=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},QA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ue=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Ln=me("${",!1),Jb=":-",P1=me(":-",!1),D1=function(m,b){return{name:m,defaultValue:b}},Wb=":-}",k1=me(":-}",!1),R1=function(m){return{name:m,defaultValue:[]}},zb=":+",F1=me(":+",!1),N1=function(m,b){return{name:m,alternativeValue:b}},Vb=":+}",L1=me(":+}",!1),T1=function(m){return{name:m,alternativeValue:[]}},Xb=function(m){return{name:m}},O1="$",M1=me("$",!1),U1=function(m){return e.isGlobPattern(m)},K1=function(m){return m},Zb=/^[a-zA-Z0-9_]/,_b=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),$b=function(){return T()},eS=/^[$@*?#a-zA-Z0-9_\-]/,tS=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),H1=/^[(){}<>$|&; \t"']/,wg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),rS=/^[<>&; \t"']/,iS=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),YE=/^[ \t]/,jE=Je([" "," "],!1,!1),Q=0,Me=0,bA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function Z(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),Ri([lt(m)],r.substring(Me,Q),b)}function we(m,b){throw b=b!==void 0?b:Et(Me,Q),Tn(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=bA[m],N;if(b)return b;for(N=m-1;!bA[N];)N--;for(b=bA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Tn(m,b){return new Zl(m,null,null,b)}function Ri(m,b,N){return new Zl(Zl.buildMessage(m,b),m,b,N)}function SA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,K,ce;if(m=Q,b=Ur(),b!==t){for(N=[],K=He();K!==t;)N.push(K),K=He();N!==t?(K=ma(),K!==t?(ce=os(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,K,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Ur(),b!==t){for(N=[],K=He();K!==t;)N.push(K),K=He();N!==t?(K=ma(),K===t&&(K=null),K!==t?(Me=m,b=a(b,K),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function os(){var m,b,N,K,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();K!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function ma(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Ur(){var m,b,N;return m=Q,b=G1(),b!==t?(N=lge(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function lge(){var m,b,N,K,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=cge(),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();if(K!==t)if(ce=Ur(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function cge(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function G1(){var m,b,N;return m=Q,b=fge(),b!==t?(N=uge(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function uge(){var m,b,N,K,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=gge(),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();if(K!==t)if(ce=G1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function gge(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function qE(){var m,b,N,K,ce,Se;if(m=Q,b=eU(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(_)),N!==t)if(K=q1(),K!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,K),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=eU(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(_)),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();K!==t?(Me=m,b=Ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function fge(){var m,b,N,K,ce,Se,ht,Bt,Jr,hi,as;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();if(K!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Np();hi!==t;)Jr.push(hi),hi=Np();if(Jr!==t){for(hi=[],as=He();as!==t;)hi.push(as),as=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=pe,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();if(K!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Np();hi!==t;)Jr.push(hi),hi=Np();if(Jr!==t){for(hi=[],as=He();as!==t;)hi.push(as),as=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],K=qE();K!==t;)N.push(K),K=qE();if(N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();if(K!==t){if(ce=[],Se=j1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=j1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],K=qE(),K!==t)for(;K!==t;)N.push(K),K=qE();else N=t;if(N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();K!==t?(Me=m,b=Be(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function Y1(){var m,b,N,K,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],K=JE(),K!==t)for(;K!==t;)N.push(K),K=JE();else N=t;if(N!==t){for(K=[],ce=He();ce!==t;)K.push(ce),ce=He();K!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function j1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Np(),N!==t?(Me=m,b=ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=JE(),N!==t?(Me=m,b=ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Np(){var m,b,N,K,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(K=hge(),K!==t?(ce=JE(),ce!==t?(Me=m,b=Y(N,K,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function hge(){var m;return r.substr(Q,2)===he?(m=he,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(_e)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function JE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=q1(),N!==t?(Me=m,b=ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function q1(){var m,b,N;if(m=Q,b=[],N=J1(),N!==t)for(;N!==t;)b.push(N),N=J1();else b=t;return b!==t&&(Me=m,b=Us(b)),m=b,m}function J1(){var m,b;return m=Q,b=pge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=dge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Cge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=mge(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function pge(){var m,b,N,K;return m=Q,r.substr(Q,2)===Ii?(b=Ii,Q+=2):(b=t,I===0&&Qe(rs)),b!==t?(N=yge(),N!==t?(r.charCodeAt(Q)===39?(K=ga,Q++):(K=t,I===0&&Qe(dA)),K!==t?(Me=m,b=cg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function dge(){var m,b,N,K;return m=Q,r.charCodeAt(Q)===39?(b=ga,Q++):(b=t,I===0&&Qe(dA)),b!==t?(N=Ege(),N!==t?(r.charCodeAt(Q)===39?(K=ga,Q++):(K=t,I===0&&Qe(dA)),K!==t?(Me=m,b=cg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Cge(){var m,b,N,K;if(m=Q,r.substr(Q,2)===is?(b=is,Q+=2):(b=t,I===0&&Qe(CA)),b!==t&&(Me=m,b=fa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=wp,Q++):(b=t,I===0&&Qe(mA)),b!==t){for(N=[],K=W1();K!==t;)N.push(K),K=W1();N!==t?(r.charCodeAt(Q)===34?(K=wp,Q++):(K=t,I===0&&Qe(mA)),K!==t?(Me=m,b=EA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function mge(){var m,b,N;if(m=Q,b=[],N=z1(),N!==t)for(;N!==t;)b.push(N),N=z1();else b=t;return b!==t&&(Me=m,b=EA(b)),m=b,m}function W1(){var m,b;return m=Q,b=_1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=$1(),b!==t&&(Me=m,b=Ll(b)),m=b,m===t&&(m=Q,b=aS(),b!==t&&(Me=m,b=ug(b)),m=b,m===t&&(m=Q,b=Ige(),b!==t&&(Me=m,b=Io(b)),m=b))),m}function z1(){var m,b;return m=Q,b=_1(),b!==t&&(Me=m,b=gg(b)),m=b,m===t&&(m=Q,b=$1(),b!==t&&(Me=m,b=Bp(b)),m=b,m===t&&(m=Q,b=aS(),b!==t&&(Me=m,b=Qp(b)),m=b,m===t&&(m=Q,b=Qge(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=Bge(),b!==t&&(Me=m,b=Io(b)),m=b)))),m}function Ege(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo));return b!==t&&(Me=m,b=Rn(b)),m=b,m}function Ige(){var m,b,N;if(m=Q,b=[],N=V1(),N===t&&(fg.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=V1(),N===t&&(fg.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=Rn(b)),m=b,m}function V1(){var m,b,N;return m=Q,r.substr(Q,2)===Tl?(b=Tl,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t&&(Me=m,b=ns()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=ss,Q++):(b=t,I===0&&Qe(gt)),b!==t?(wo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function yge(){var m,b,N;for(m=Q,b=[],N=X1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo)));N!==t;)b.push(N),N=X1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo)));return b!==t&&(Me=m,b=Rn(b)),m=b,m}function X1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=hg()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ol?(b=Ol,Q+=2):(b=t,I===0&&Qe(bp)),b!==t&&(Me=m,b=Sp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=ss,Q++):(b=t,I===0&&Qe(gt)),b!==t?(vp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(xp)),N!==t?(Me=m,b=Pp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=IA()),m=b,m===t&&(m=Q,r.substr(Q,2)===Wi?(b=Wi,Q+=2):(b=t,I===0&&Qe(Ml)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===ha?(b=ha,Q+=2):(b=t,I===0&&Qe(pg)),b!==t&&(Me=m,b=OE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Dp?(b=Dp,Q+=2):(b=t,I===0&&Qe(ME)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Nn?(b=Nn,Q+=2):(b=t,I===0&&Qe(Ul)),b!==t&&(Me=m,b=kp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=ss,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ks.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(pa)),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=wge()))))))))),m}function wge(){var m,b,N,K,ce,Se,ht,Bt,Jr,hi,as,AS;return m=Q,r.charCodeAt(Q)===92?(b=ss,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=nS(),N!==t?(Me=m,b=ln(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(dg)),b!==t?(N=Q,K=Q,ce=nS(),ce!==t?(Se=On(),Se!==t?(ce=[ce,Se],K=ce):(Q=K,K=t)):(Q=K,K=t),K===t&&(K=nS()),K!==t?N=r.substring(N,Q):N=K,N!==t?(Me=m,b=ln(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Kl?(b=Kl,Q+=2):(b=t,I===0&&Qe(Hs)),b!==t?(N=Q,K=Q,ce=On(),ce!==t?(Se=On(),Se!==t?(ht=On(),ht!==t?(Bt=On(),Bt!==t?(ce=[ce,Se,ht,Bt],K=ce):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t),K!==t?N=r.substring(N,Q):N=K,N!==t?(Me=m,b=ln(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Hl?(b=Hl,Q+=2):(b=t,I===0&&Qe(yA)),b!==t?(N=Q,K=Q,ce=On(),ce!==t?(Se=On(),Se!==t?(ht=On(),ht!==t?(Bt=On(),Bt!==t?(Jr=On(),Jr!==t?(hi=On(),hi!==t?(as=On(),as!==t?(AS=On(),AS!==t?(ce=[ce,Se,ht,Bt,Jr,hi,as,AS],K=ce):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t)):(Q=K,K=t),K!==t?N=r.substring(N,Q):N=K,N!==t?(Me=m,b=Cg(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function nS(){var m;return mg.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(da)),m}function On(){var m;return Ca.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function Bge(){var m,b,N,K,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(K=ss,Q++):(K=t,I===0&&Qe(gt)),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,K=Q,I++,ce=tU(),I--,ce===t?K=void 0:(Q=K,K=t),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(K=ss,Q++):(K=t,I===0&&Qe(gt)),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,K=Q,I++,ce=tU(),I--,ce===t?K=void 0:(Q=K,K=t),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=Rn(b)),m=b,m}function sS(){var m,b,N,K,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=wA,Q++):(b=t,I===0&&Qe(Gl)),b===t&&(r.charCodeAt(Q)===43?(b=Gs,Q++):(b=t,I===0&&Qe(Yl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(K=r.charAt(Q),Q++):(K=t,I===0&&Qe(ne)),K!==t)for(;K!==t;)N.push(K),qe.test(r.charAt(Q))?(K=r.charAt(Q),Q++):(K=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(K=UE,Q++):(K=t,I===0&&Qe(Rp)),K!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=Eg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=wA,Q++):(b=t,I===0&&Qe(Gl)),b===t&&(r.charCodeAt(Q)===43?(b=Gs,Q++):(b=t,I===0&&Qe(Yl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(K=r.charAt(Q),Q++):(K=t,I===0&&Qe(ne)),K!==t)for(;K!==t;)N.push(K),qe.test(r.charAt(Q))?(K=r.charAt(Q),Q++):(K=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=Fp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=aS(),b!==t&&(Me=m,b=KE(b)),m=b,m===t&&(m=Q,b=ql(),b!==t&&(Me=m,b=jl(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],K=He();K!==t;)N.push(K),K=He();if(N!==t)if(K=Z1(),K!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=HE(K),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function oS(){var m,b,N,K,ce,Se,ht,Bt;if(m=Q,b=sS(),b!==t){for(N=[],K=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=Ig,Q++):(Se=t,I===0&&Qe(BA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(GE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=sS(),Bt!==t?(Me=K,ce=Ys(b,Se,Bt),K=ce):(Q=K,K=t)):(Q=K,K=t)}else Q=K,K=t;else Q=K,K=t;for(;K!==t;){for(N.push(K),K=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=Ig,Q++):(Se=t,I===0&&Qe(BA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(GE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=sS(),Bt!==t?(Me=K,ce=Ys(b,Se,Bt),K=ce):(Q=K,K=t)):(Q=K,K=t)}else Q=K,K=t;else Q=K,K=t}N!==t?(Me=m,b=js(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function Z1(){var m,b,N,K,ce,Se,ht,Bt;if(m=Q,b=oS(),b!==t){for(N=[],K=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Gs,Q++):(Se=t,I===0&&Qe(Yl)),Se===t&&(r.charCodeAt(Q)===45?(Se=wA,Q++):(Se=t,I===0&&Qe(Gl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=oS(),Bt!==t?(Me=K,ce=yg(b,Se,Bt),K=ce):(Q=K,K=t)):(Q=K,K=t)}else Q=K,K=t;else Q=K,K=t;for(;K!==t;){for(N.push(K),K=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Gs,Q++):(Se=t,I===0&&Qe(Yl)),Se===t&&(r.charCodeAt(Q)===45?(Se=wA,Q++):(Se=t,I===0&&Qe(Gl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=oS(),Bt!==t?(Me=K,ce=yg(b,Se,Bt),K=ce):(Q=K,K=t)):(Q=K,K=t)}else Q=K,K=t;else Q=K,K=t}N!==t?(Me=m,b=js(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function _1(){var m,b,N,K,ce,Se;if(m=Q,r.substr(Q,3)===QA?(b=QA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],K=He();K!==t;)N.push(K),K=He();if(N!==t)if(K=Z1(),K!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ue(K),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function $1(){var m,b,N,K;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(K=O,Q++):(K=t,I===0&&Qe(F)),K!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function aS(){var m,b,N,K,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Ln)),b!==t?(N=ql(),N!==t?(r.substr(Q,2)===Jb?(K=Jb,Q+=2):(K=t,I===0&&Qe(P1)),K!==t?(ce=Y1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=D1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Ln)),b!==t?(N=ql(),N!==t?(r.substr(Q,3)===Wb?(K=Wb,Q+=3):(K=t,I===0&&Qe(k1)),K!==t?(Me=m,b=R1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Ln)),b!==t?(N=ql(),N!==t?(r.substr(Q,2)===zb?(K=zb,Q+=2):(K=t,I===0&&Qe(F1)),K!==t?(ce=Y1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=N1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Ln)),b!==t?(N=ql(),N!==t?(r.substr(Q,3)===Vb?(K=Vb,Q+=3):(K=t,I===0&&Qe(L1)),K!==t?(Me=m,b=T1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Ln)),b!==t?(N=ql(),N!==t?(r.charCodeAt(Q)===125?(K=Fe,Q++):(K=t,I===0&&Qe(Ne)),K!==t?(Me=m,b=Xb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=O1,Q++):(b=t,I===0&&Qe(M1)),b!==t?(N=ql(),N!==t?(Me=m,b=Xb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function Qge(){var m,b,N;return m=Q,b=bge(),b!==t?(Me=Q,N=U1(b),N?N=void 0:N=t,N!==t?(Me=m,b=K1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function bge(){var m,b,N,K,ce;if(m=Q,b=[],N=Q,K=Q,I++,ce=rU(),I--,ce===t?K=void 0:(Q=K,K=t),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,K=Q,I++,ce=rU(),I--,ce===t?K=void 0:(Q=K,K=t),K!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,K=An(ce),N=K):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=Rn(b)),m=b,m}function eU(){var m,b,N;if(m=Q,b=[],Zb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(_b)),N!==t)for(;N!==t;)b.push(N),Zb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(_b));else b=t;return b!==t&&(Me=m,b=$b()),m=b,m}function ql(){var m,b,N;if(m=Q,b=[],eS.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(tS)),N!==t)for(;N!==t;)b.push(N),eS.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(tS));else b=t;return b!==t&&(Me=m,b=$b()),m=b,m}function tU(){var m;return H1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(wg)),m}function rU(){var m;return rS.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(iS)),m}function He(){var m,b;if(m=[],YE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(jE)),b!==t)for(;b!==t;)m.push(b),YE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(jE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Sfe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function $l(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,$l)}Sfe($l,Error);$l.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new $l(ne,null,null,Y)}function oe(ne,Y,he){return new $l($l.buildMessage(ne,Y),ne,Y,he)}function le(){var ne,Y,he,ie;return ne=v,Y=Be(),Y!==t?(r.charCodeAt(v)===47?(he=s,v++):(he=t,$===0&&Fe(o)),he!==t?(ie=Be(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Be(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function Be(){var ne,Y,he,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(he=c,v++):(he=t,$===0&&Fe(u)),he!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,he,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(he=ae(),he!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function ae(){var ne,Y,he;if(ne=v,Y=[],p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Fe(C)),he!==t)for(;he!==t;)Y.push(he),p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,he;if(ne=v,Y=[],y.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Fe(B)),he!==t)for(;he!==t;)Y.push(he),y.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function dK(r){return typeof r>"u"||r===null}function xfe(r){return typeof r=="object"&&r!==null}function Pfe(r){return Array.isArray(r)?r:dK(r)?[]:[r]}function Dfe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Vp(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Vp.prototype=Object.create(Error.prototype);Vp.prototype.constructor=Vp;Vp.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};CK.exports=Vp});var IK=w((wZe,EK)=>{"use strict";var mK=tc();function HS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}HS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r \x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),GK.repeat(" ",e)+i+a+s+` -`+GK.repeat(" ",e+this.position-n+i.length)+"^"};SS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: -`+t)),i};YK.exports=SS});var si=w((dXe,JK)=>{"use strict";var qK=Qg(),qge=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Jge=["scalar","sequence","mapping"];function Wge(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function zge(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(qge.indexOf(t)===-1)throw new qK('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Wge(e.styleAliases||null),Jge.indexOf(this.kind)===-1)throw new qK('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}JK.exports=zge});var Yl=w((CXe,zK)=>{"use strict";var WK=Gl(),nI=Qg(),Vge=si();function vS(r,e,t){var i=[];return r.include.forEach(function(n){t=vS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Xge(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var _ge=si();VK.exports=new _ge("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var ZK=w((EXe,_K)=>{"use strict";var Zge=si();_K.exports=new Zge("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var eU=w((IXe,$K)=>{"use strict";var $ge=si();$K.exports=new $ge("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var sI=w((yXe,tU)=>{"use strict";var efe=Yl();tU.exports=new efe({explicit:[XK(),ZK(),eU()]})});var iU=w((wXe,rU)=>{"use strict";var tfe=si();function rfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function ife(){return null}function nfe(r){return r===null}rU.exports=new tfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:rfe,construct:ife,predicate:nfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var sU=w((BXe,nU)=>{"use strict";var sfe=si();function ofe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function afe(r){return r==="true"||r==="True"||r==="TRUE"}function Afe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}nU.exports=new sfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:ofe,construct:afe,predicate:Afe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var aU=w((QXe,oU)=>{"use strict";var lfe=Gl(),cfe=si();function ufe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function gfe(r){return 48<=r&&r<=55}function ffe(r){return 48<=r&&r<=57}function hfe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var cU=w((bXe,lU)=>{"use strict";var AU=Gl(),Cfe=si(),mfe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Efe(r){return!(r===null||!mfe.test(r)||r[r.length-1]==="_")}function Ife(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var yfe=/^[-+]?[0-9]+e/;function wfe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(AU.isNegativeZero(r))return"-0.0";return t=r.toString(10),yfe.test(t)?t.replace("e",".e"):t}function Bfe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||AU.isNegativeZero(r))}lU.exports=new Cfe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Efe,construct:Ife,predicate:Bfe,represent:wfe,defaultStyle:"lowercase"})});var xS=w((SXe,uU)=>{"use strict";var Qfe=Yl();uU.exports=new Qfe({include:[sI()],implicit:[iU(),sU(),aU(),cU()]})});var PS=w((vXe,gU)=>{"use strict";var bfe=Yl();gU.exports=new bfe({include:[xS()]})});var dU=w((xXe,pU)=>{"use strict";var Sfe=si(),fU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),hU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function vfe(r){return r===null?!1:fU.exec(r)!==null||hU.exec(r)!==null}function xfe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=fU.exec(r),e===null&&(e=hU.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Pfe(r){return r.toISOString()}pU.exports=new Sfe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:vfe,construct:xfe,instanceOf:Date,represent:Pfe})});var mU=w((PXe,CU)=>{"use strict";var Dfe=si();function kfe(r){return r==="<<"||r===null}CU.exports=new Dfe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:kfe})});var yU=w((DXe,IU)=>{"use strict";var jl;try{EU=J,jl=EU("buffer").Buffer}catch{}var EU,Rfe=si(),DS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Ffe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=DS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function Nfe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=DS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),jl?jl.from?jl.from(a):new jl(a):a}function Lfe(r){var e="",t=0,i,n,s=r.length,o=DS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function Tfe(r){return jl&&jl.isBuffer(r)}IU.exports=new Rfe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ffe,construct:Nfe,predicate:Tfe,represent:Lfe})});var BU=w((kXe,wU)=>{"use strict";var Ofe=si(),Mfe=Object.prototype.hasOwnProperty,Kfe=Object.prototype.toString;function Ufe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Gfe=si(),Yfe=Object.prototype.toString;function jfe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Jfe=si(),Wfe=Object.prototype.hasOwnProperty;function zfe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Wfe.call(t,e)&&t[e]!==null)return!1;return!0}function Vfe(r){return r!==null?r:{}}SU.exports=new Jfe("tag:yaml.org,2002:set",{kind:"mapping",resolve:zfe,construct:Vfe})});var Sg=w((NXe,xU)=>{"use strict";var Xfe=Yl();xU.exports=new Xfe({include:[PS()],implicit:[dU(),mU()],explicit:[yU(),BU(),bU(),vU()]})});var DU=w((LXe,PU)=>{"use strict";var _fe=si();function Zfe(){return!0}function $fe(){}function ehe(){return""}function the(r){return typeof r>"u"}PU.exports=new _fe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Zfe,construct:$fe,predicate:the,represent:ehe})});var RU=w((TXe,kU)=>{"use strict";var rhe=si();function ihe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function nhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function she(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function ohe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}kU.exports=new rhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:ihe,construct:nhe,predicate:ohe,represent:she})});var LU=w((OXe,NU)=>{"use strict";var oI;try{FU=J,oI=FU("esprima")}catch{typeof window<"u"&&(oI=window.esprima)}var FU,ahe=si();function Ahe(r){if(r===null)return!1;try{var e="("+r+")",t=oI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function lhe(r){var e="("+r+")",t=oI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function che(r){return r.toString()}function uhe(r){return Object.prototype.toString.call(r)==="[object Function]"}NU.exports=new ahe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ahe,construct:lhe,predicate:uhe,represent:che})});var Mp=w((MXe,OU)=>{"use strict";var TU=Yl();OU.exports=TU.DEFAULT=new TU({include:[Sg()],explicit:[DU(),RU(),LU()]})});var r2=w((KXe,Kp)=>{"use strict";var da=Gl(),jU=Qg(),ghe=jK(),qU=Sg(),fhe=Mp(),wA=Object.prototype.hasOwnProperty,aI=1,JU=2,WU=3,AI=4,kS=1,hhe=2,MU=3,phe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,dhe=/[\x85\u2028\u2029]/,Che=/[,\[\]\{\}]/,zU=/^(?:!|!!|![a-z\-]+!)$/i,VU=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function KU(r){return Object.prototype.toString.call(r)}function Bo(r){return r===10||r===13}function Jl(r){return r===9||r===32}function un(r){return r===9||r===32||r===10||r===13}function vg(r){return r===44||r===91||r===93||r===123||r===125}function mhe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Ehe(r){return r===120?2:r===117?4:r===85?8:0}function Ihe(r){return 48<=r&&r<=57?r-48:-1}function UU(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` -`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function yhe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var XU=new Array(256),_U=new Array(256);for(ql=0;ql<256;ql++)XU[ql]=UU(ql)?1:0,_U[ql]=UU(ql);var ql;function whe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||fhe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function ZU(r,e){return new jU(e,new ghe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw ZU(r,e)}function lI(r,e){r.onWarning&&r.onWarning.call(null,ZU(r,e))}var HU={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&lI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],zU.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),wA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),VU.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function yA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=da.repeat(` -`,e-1))}function Bhe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),un(h)||vg(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),un(i))break}else{if(r.position===r.lineStart&&cI(r)||t&&vg(h))break;if(Bo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(yA(r,s,o,!1),FS(r,r.line-l),s=o=r.position,a=!1),Jl(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return yA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function Qhe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(yA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else Bo(t)?(yA(r,i,n,!0),FS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function bhe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return yA(r,t,r.position,!0),r.position++,!0;if(a===92){if(yA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),Bo(a))zr(r,!1,e);else if(a<256&&XU[a])r.result+=_U[a],r.position++;else if((o=Ehe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=mhe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=yhe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else Bo(a)?(yA(r,t,i,!0),FS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function She(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),un(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Pg(r,e,aI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Pg(r,e,aI,!1,!0),C=r.result),g?xg(r,s,f,p,h,C):c?s.push(xg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function vhe(r,e){var t,i,n=kS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)kS===n?n=g===43?MU:hhe:ft(r,"repeat of a chomping mode identifier");else if((u=Ihe(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Jl(g)){do g=r.input.charCodeAt(++r.position);while(Jl(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!Bo(g)&&g!==0)}for(;g!==0;){for(RS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),Bo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Pg(r,e,AI,!0,n)&&(p?f=r.result:h=r.result),p||(xg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function Rhe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;Jl(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!Bo(o));break}if(Bo(o))break;for(t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&RS(r),wA.call(HU,i)?HU[i](r,i,n):lI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Pg(r,r.lineIndent-1,AI,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&dhe.test(r.input.slice(e,r.position))&&lI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&cI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=$U(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),e2(r,e,da.extend({schema:qU},t))}function Nhe(r,e){return t2(r,da.extend({schema:qU},e))}Kp.exports.loadAll=e2;Kp.exports.load=t2;Kp.exports.safeLoadAll=Fhe;Kp.exports.safeLoad=Nhe});var b2=w((UXe,OS)=>{"use strict";var Hp=Gl(),Gp=Qg(),Lhe=Mp(),The=Sg(),c2=Object.prototype.toString,u2=Object.prototype.hasOwnProperty,Ohe=9,Up=10,Mhe=13,Khe=32,Uhe=33,Hhe=34,g2=35,Ghe=37,Yhe=38,jhe=39,qhe=42,f2=44,Jhe=45,h2=58,Whe=61,zhe=62,Vhe=63,Xhe=64,p2=91,d2=93,_he=96,C2=123,Zhe=124,m2=125,Fi={};Fi[0]="\\0";Fi[7]="\\a";Fi[8]="\\b";Fi[9]="\\t";Fi[10]="\\n";Fi[11]="\\v";Fi[12]="\\f";Fi[13]="\\r";Fi[27]="\\e";Fi[34]='\\"';Fi[92]="\\\\";Fi[133]="\\N";Fi[160]="\\_";Fi[8232]="\\L";Fi[8233]="\\P";var $he=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function epe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;nt/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),mK.repeat(" ",e)+i+a+s+` +`+mK.repeat(" ",e+this.position-n+i.length)+"^"};HS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};EK.exports=HS});var si=w((BZe,wK)=>{"use strict";var yK=Ng(),Ffe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Nfe=["scalar","sequence","mapping"];function Lfe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Tfe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(Ffe.indexOf(t)===-1)throw new yK('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Lfe(e.styleAliases||null),Nfe.indexOf(this.kind)===-1)throw new yK('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}wK.exports=Tfe});var rc=w((QZe,QK)=>{"use strict";var BK=tc(),dI=Ng(),Ofe=si();function GS(r,e,t){var i=[];return r.include.forEach(function(n){t=GS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Mfe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var Ufe=si();bK.exports=new Ufe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var xK=w((SZe,vK)=>{"use strict";var Kfe=si();vK.exports=new Kfe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var DK=w((vZe,PK)=>{"use strict";var Hfe=si();PK.exports=new Hfe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var CI=w((xZe,kK)=>{"use strict";var Gfe=rc();kK.exports=new Gfe({explicit:[SK(),xK(),DK()]})});var FK=w((PZe,RK)=>{"use strict";var Yfe=si();function jfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function qfe(){return null}function Jfe(r){return r===null}RK.exports=new Yfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:jfe,construct:qfe,predicate:Jfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var LK=w((DZe,NK)=>{"use strict";var Wfe=si();function zfe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function Vfe(r){return r==="true"||r==="True"||r==="TRUE"}function Xfe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}NK.exports=new Wfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:zfe,construct:Vfe,predicate:Xfe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var OK=w((kZe,TK)=>{"use strict";var Zfe=tc(),_fe=si();function $fe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function ehe(r){return 48<=r&&r<=55}function the(r){return 48<=r&&r<=57}function rhe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var KK=w((RZe,UK)=>{"use strict";var MK=tc(),she=si(),ohe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ahe(r){return!(r===null||!ohe.test(r)||r[r.length-1]==="_")}function Ahe(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var lhe=/^[-+]?[0-9]+e/;function che(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(MK.isNegativeZero(r))return"-0.0";return t=r.toString(10),lhe.test(t)?t.replace("e",".e"):t}function uhe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||MK.isNegativeZero(r))}UK.exports=new she("tag:yaml.org,2002:float",{kind:"scalar",resolve:ahe,construct:Ahe,predicate:uhe,represent:che,defaultStyle:"lowercase"})});var YS=w((FZe,HK)=>{"use strict";var ghe=rc();HK.exports=new ghe({include:[CI()],implicit:[FK(),LK(),OK(),KK()]})});var jS=w((NZe,GK)=>{"use strict";var fhe=rc();GK.exports=new fhe({include:[YS()]})});var JK=w((LZe,qK)=>{"use strict";var hhe=si(),YK=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),jK=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function phe(r){return r===null?!1:YK.exec(r)!==null||jK.exec(r)!==null}function dhe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=YK.exec(r),e===null&&(e=jK.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Che(r){return r.toISOString()}qK.exports=new hhe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:phe,construct:dhe,instanceOf:Date,represent:Che})});var zK=w((TZe,WK)=>{"use strict";var mhe=si();function Ehe(r){return r==="<<"||r===null}WK.exports=new mhe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Ehe})});var ZK=w((OZe,XK)=>{"use strict";var ic;try{VK=J,ic=VK("buffer").Buffer}catch{}var VK,Ihe=si(),qS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function yhe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=qS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function whe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=qS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),ic?ic.from?ic.from(a):new ic(a):a}function Bhe(r){var e="",t=0,i,n,s=r.length,o=qS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function Qhe(r){return ic&&ic.isBuffer(r)}XK.exports=new Ihe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:yhe,construct:whe,predicate:Qhe,represent:Bhe})});var $K=w((UZe,_K)=>{"use strict";var bhe=si(),She=Object.prototype.hasOwnProperty,vhe=Object.prototype.toString;function xhe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Dhe=si(),khe=Object.prototype.toString;function Rhe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Nhe=si(),Lhe=Object.prototype.hasOwnProperty;function The(r){if(r===null)return!0;var e,t=r;for(e in t)if(Lhe.call(t,e)&&t[e]!==null)return!1;return!0}function Ohe(r){return r!==null?r:{}}r2.exports=new Nhe("tag:yaml.org,2002:set",{kind:"mapping",resolve:The,construct:Ohe})});var Tg=w((GZe,n2)=>{"use strict";var Mhe=rc();n2.exports=new Mhe({include:[jS()],implicit:[JK(),zK()],explicit:[ZK(),$K(),t2(),i2()]})});var o2=w((YZe,s2)=>{"use strict";var Uhe=si();function Khe(){return!0}function Hhe(){}function Ghe(){return""}function Yhe(r){return typeof r>"u"}s2.exports=new Uhe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Khe,construct:Hhe,predicate:Yhe,represent:Ghe})});var A2=w((jZe,a2)=>{"use strict";var jhe=si();function qhe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function Jhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Whe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function zhe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}a2.exports=new jhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:qhe,construct:Jhe,predicate:zhe,represent:Whe})});var u2=w((qZe,c2)=>{"use strict";var mI;try{l2=J,mI=l2("esprima")}catch{typeof window<"u"&&(mI=window.esprima)}var l2,Vhe=si();function Xhe(r){if(r===null)return!1;try{var e="("+r+")",t=mI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Zhe(r){var e="("+r+")",t=mI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function _he(r){return r.toString()}function $he(r){return Object.prototype.toString.call(r)==="[object Function]"}c2.exports=new Vhe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Xhe,construct:Zhe,predicate:$he,represent:_he})});var Xp=w((WZe,f2)=>{"use strict";var g2=rc();f2.exports=g2.DEFAULT=new g2({include:[Tg()],explicit:[o2(),A2(),u2()]})});var R2=w((zZe,Zp)=>{"use strict";var wa=tc(),I2=Ng(),epe=IK(),y2=Tg(),tpe=Xp(),kA=Object.prototype.hasOwnProperty,EI=1,w2=2,B2=3,II=4,JS=1,rpe=2,h2=3,ipe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,npe=/[\x85\u2028\u2029]/,spe=/[,\[\]\{\}]/,Q2=/^(?:!|!!|![a-z\-]+!)$/i,b2=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function p2(r){return Object.prototype.toString.call(r)}function vo(r){return r===10||r===13}function sc(r){return r===9||r===32}function gn(r){return r===9||r===32||r===10||r===13}function Og(r){return r===44||r===91||r===93||r===123||r===125}function ope(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function ape(r){return r===120?2:r===117?4:r===85?8:0}function Ape(r){return 48<=r&&r<=57?r-48:-1}function d2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function lpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var S2=new Array(256),v2=new Array(256);for(nc=0;nc<256;nc++)S2[nc]=d2(nc)?1:0,v2[nc]=d2(nc);var nc;function cpe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||tpe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function x2(r,e){return new I2(e,new epe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw x2(r,e)}function yI(r,e){r.onWarning&&r.onWarning.call(null,x2(r,e))}var C2={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&yI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],Q2.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),kA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),b2.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function DA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=wa.repeat(` +`,e-1))}function upe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),gn(h)||Og(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),gn(n)||t&&Og(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),gn(n)||t&&Og(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),gn(i))break}else{if(r.position===r.lineStart&&wI(r)||t&&Og(h))break;if(vo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(DA(r,s,o,!1),zS(r,r.line-l),s=o=r.position,a=!1),sc(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return DA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function gpe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(DA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else vo(t)?(DA(r,i,n,!0),zS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&wI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function fpe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return DA(r,t,r.position,!0),r.position++,!0;if(a===92){if(DA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),vo(a))zr(r,!1,e);else if(a<256&&S2[a])r.result+=v2[a],r.position++;else if((o=ape(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=ope(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=lpe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else vo(a)?(DA(r,t,i,!0),zS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&wI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function hpe(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),gn(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Ug(r,e,EI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Ug(r,e,EI,!1,!0),C=r.result),g?Mg(r,s,f,p,h,C):c?s.push(Mg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function ppe(r,e){var t,i,n=JS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)JS===n?n=g===43?h2:rpe:ft(r,"repeat of a chomping mode identifier");else if((u=Ape(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(sc(g)){do g=r.input.charCodeAt(++r.position);while(sc(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!vo(g)&&g!==0)}for(;g!==0;){for(WS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),vo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Ug(r,e,II,!0,n)&&(p?f=r.result:h=r.result),p||(Mg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function Ipe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!gn(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;sc(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!vo(o));break}if(vo(o))break;for(t=r.position;o!==0&&!gn(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&WS(r),kA.call(C2,i)?C2[i](r,i,n):yI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Ug(r,r.lineIndent-1,II,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&npe.test(r.input.slice(e,r.position))&&yI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&wI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=P2(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),D2(r,e,wa.extend({schema:y2},t))}function wpe(r,e){return k2(r,wa.extend({schema:y2},e))}Zp.exports.loadAll=D2;Zp.exports.load=k2;Zp.exports.safeLoadAll=ype;Zp.exports.safeLoad=wpe});var tH=w((VZe,_S)=>{"use strict";var $p=tc(),ed=Ng(),Bpe=Xp(),Qpe=Tg(),K2=Object.prototype.toString,H2=Object.prototype.hasOwnProperty,bpe=9,_p=10,Spe=13,vpe=32,xpe=33,Ppe=34,G2=35,Dpe=37,kpe=38,Rpe=39,Fpe=42,Y2=44,Npe=45,j2=58,Lpe=61,Tpe=62,Ope=63,Mpe=64,q2=91,J2=93,Upe=96,W2=123,Kpe=124,z2=125,Ni={};Ni[0]="\\0";Ni[7]="\\a";Ni[8]="\\b";Ni[9]="\\t";Ni[10]="\\n";Ni[11]="\\v";Ni[12]="\\f";Ni[13]="\\r";Ni[27]="\\e";Ni[34]='\\"';Ni[92]="\\\\";Ni[133]="\\N";Ni[160]="\\_";Ni[8232]="\\L";Ni[8233]="\\P";var Hpe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function Gpe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Dg(o))return uI;a=s>0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?I2:y2:t>9&&E2(r)?uI:c?B2:w2}function ope(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&$he.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return rpe(r,l)}switch(spe(e,o,r.indent,s,a)){case I2:return e;case y2:return"'"+e.replace(/'/g,"''")+"'";case w2:return"|"+o2(e,r.indent)+a2(n2(e,n));case B2:return">"+o2(e,r.indent)+a2(n2(ape(e,s),n));case uI:return'"'+Ape(e,s)+'"';default:throw new Gp("impossible error: invalid scalar style")}}()}function o2(r,e){var t=E2(r)?String(e):"",i=r[r.length-1]===` +`&&(s+=t),s+=o;return s}function VS(r,e){return` +`+$p.repeat(" ",r.indent*e)}function jpe(r,e){var t,i,n;for(t=0,i=r.implicitTypes.length;t0?r.charCodeAt(s-1):null,f=f&&L2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Kg(o))return BI;a=s>0?r.charCodeAt(s-1):null,f=f&&L2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?X2:Z2:t>9&&V2(r)?BI:c?$2:_2}function zpe(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Hpe.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return jpe(r,l)}switch(Wpe(e,o,r.indent,s,a)){case X2:return e;case Z2:return"'"+e.replace(/'/g,"''")+"'";case _2:return"|"+T2(e,r.indent)+O2(N2(e,n));case $2:return">"+T2(e,r.indent)+O2(N2(Vpe(e,s),n));case BI:return'"'+Xpe(e,s)+'"';default:throw new ed("impossible error: invalid scalar style")}}()}function T2(r,e){var t=V2(r)?String(e):"",i=r[r.length-1]===` `,n=i&&(r[r.length-2]===` `||r===` `),s=n?"+":i?"":"-";return t+s+` -`}function a2(r){return r[r.length-1]===` -`?r.slice(0,-1):r}function ape(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` -`);return c=c!==-1?c:r.length,t.lastIndex=c,A2(r.slice(0,c),e)}(),n=r[0]===` +`}function O2(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function Vpe(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,M2(r.slice(0,c),e)}(),n=r[0]===` `||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+A2(l,e),n=s}return i}function A2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`:"")+M2(l,e),n=s}return i}function M2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` `+r.slice(n,s),n=s+1),o=a;return l+=` `,r.length-n>e&&o>n?l+=r.slice(n,o)+` -`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ape(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=i2((t-55296)*1024+i-56320+65536),s++;continue}n=Fi[t],e+=!n&&Dg(t)?r[s]:n||i2(t)}return e}function lpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Wl(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function gpe(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Gp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Up===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=NS(r,e)),Wl(r,e+1,u,!0,g)&&(r.dump&&Up===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function l2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Wl(r,e,t,i,n,s){r.tag=null,r.dump=t,l2(r,t,!1)||l2(r,t,!0);var o=c2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(gpe(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(upe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(cpe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(lpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&ope(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Gp("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function fpe(r,e){var t=[],i=[],n,s;for(LS(r,t,i),n=0,s=i.length;n{"use strict";var gI=r2(),S2=b2();function fI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=Yl();Fr.exports.FAILSAFE_SCHEMA=sI();Fr.exports.JSON_SCHEMA=xS();Fr.exports.CORE_SCHEMA=PS();Fr.exports.DEFAULT_SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_FULL_SCHEMA=Mp();Fr.exports.load=gI.load;Fr.exports.loadAll=gI.loadAll;Fr.exports.safeLoad=gI.safeLoad;Fr.exports.safeLoadAll=gI.safeLoadAll;Fr.exports.dump=S2.dump;Fr.exports.safeDump=S2.safeDump;Fr.exports.YAMLException=Qg();Fr.exports.MINIMAL_SCHEMA=sI();Fr.exports.SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_SCHEMA=Mp();Fr.exports.scan=fI("scan");Fr.exports.parse=fI("parse");Fr.exports.compose=fI("compose");Fr.exports.addConstructor=fI("addConstructor")});var P2=w((GXe,x2)=>{"use strict";var ppe=v2();x2.exports=ppe});var k2=w((YXe,D2)=>{"use strict";function dpe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function zl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,zl)}dpe(zl,Error);zl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ts("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===pA*ug},A=function(R){return R.length===(pA+1)*ug},ae=function(){return pA++,!0},ge=function(){return pA--,!0},re=function(){return sg()},O=Ts("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Rn(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),he=/^[^\r\n\t ,\][{}:#"']/,ke=Rn(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return sg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,we=Rn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,Ae=Rn(["\r",` -`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},pe="true",ie=ar("true",!1),de=function(){return!0},tt="false",Pt=ar("false",!1),It=function(){return!1},Or=Ts("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Ls=/^[^"\\\0-\x1F\x7F]/,pr=Rn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ei='\\"',_n=ar('\\"',!1),oa=function(){return'"'},aA="\\\\",eg=ar("\\\\",!1),Zn=function(){return"\\"},AA="\\/",aa=ar("\\/",!1),up=function(){return"/"},lA="\\b",cA=ar("\\b",!1),wr=function(){return"\b"},wl="\\f",tg=ar("\\f",!1),po=function(){return"\f"},rg="\\n",gp=ar("\\n",!1),fp=function(){return` -`},vr="\\r",se=ar("\\r",!1),Co=function(){return"\r"},Dn="\\t",ig=ar("\\t",!1),Qt=function(){return" "},Bl="\\u",kn=ar("\\u",!1),$n=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},es=/^[0-9a-fA-F]/,gt=Rn([["0","9"],["a","f"],["A","F"]],!1,!1),mo=Ts("blank space"),At=/^[ \t]/,an=Rn([" "," "],!1,!1),S=Ts("white space"),Tt=/^[ \t\n\r]/,ng=Rn([" "," ",` -`,"\r"],!1,!1),Ql=`\r -`,hp=ar(`\r -`,!1),pp=` -`,dp=ar(` -`,!1),Cp="\r",mp=ar("\r",!1),G=0,yt=0,uA=[{line:1,column:1}],ji=0,bl=[],Xe=0,Aa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function sg(){return r.substring(yt,G)}function bE(){return An(yt,G)}function Ep(R,q){throw q=q!==void 0?q:An(yt,G),vl([Ts(R)],r.substring(yt,G),q)}function SE(R,q){throw q=q!==void 0?q:An(yt,G),og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Rn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Sl(){return{type:"any"}}function Ip(){return{type:"end"}}function Ts(R){return{type:"other",description:R}}function la(R){var q=uA[R],Ce;if(q)return q;for(Ce=R-1;!uA[Ce];)Ce--;for(q=uA[Ce],q={line:q.line,column:q.column};Ceji&&(ji=G,bl=[]),bl.push(R))}function og(R,q){return new zl(R,null,null,q)}function vl(R,q,Ce){return new zl(zl.buildMessage(R,q),R,q,Ce)}function Os(){var R;return R=ag(),R}function xl(){var R,q,Ce;for(R=G,q=[],Ce=gA();Ce!==t;)q.push(Ce),Ce=gA();return q!==t&&(yt=R,q=s(q)),R=q,R}function gA(){var R,q,Ce,Ke,Re;return R=G,q=ua(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=ca(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function ag(){var R,q,Ce;for(R=G,q=[],Ce=Ag();Ce!==t;)q.push(Ce),Ce=Ag();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ag(){var R,q,Ce,Ke,Re,ze,dt,Ft,Fn;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Te(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Ks(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Ks();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=ua(),q!==t?(Ce=Pl(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=ua(),q!==t?(Ce=Ms(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=vE(),Re!==t){if(ze=[],dt=Ks(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ks();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=ca(),Ft!==t?(yt=R,q=L(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function ca(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=Us(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ks(),Ce!==t?(Ke=Eo(),Ke!==t?(Re=xl(),Re!==t?(ze=fA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Us(),q!==t?(Ce=Eo(),Ce!==t?(Ke=ag(),Ke!==t?(Re=fA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Dl(),q!==t){if(Ce=[],Ke=Ks(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Ks();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function ua(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=Z(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Eo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function fA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Pl(){var R;return R=kl(),R===t&&(R=yp()),R}function Ms(){var R,q,Ce;if(R=kl(),R===t){if(R=G,q=[],Ce=lg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=lg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Dl(){var R;return R=wp(),R===t&&(R=xE(),R===t&&(R=kl(),R===t&&(R=yp()))),R}function vE(){var R;return R=wp(),R===t&&(R=kl(),R===t&&(R=lg())),R}function yp(){var R,q,Ce,Ke,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function lg(){var R,q,Ce,Ke,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(we)),Ce!==t){for(Ke=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Re!==t;)Ke.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Ke!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function wp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function xE(){var R,q;return R=G,r.substr(G,4)===pe?(q=pe,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function kl(){var R,q,Ce,Ke;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=PE(),Ce!==t?(r.charCodeAt(G)===34?(Ke=ii,G++):(Ke=t,Xe===0&&Te(gi)),Ke!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function PE(){var R,q,Ce;if(R=G,q=[],Ce=cg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=cg();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function cg(){var R,q,Ce,Ke,Re,ze;return Ls.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ei?(q=Ei,G+=2):(q=t,Xe===0&&Te(_n)),q!==t&&(yt=R,q=oa()),R=q,R===t&&(R=G,r.substr(G,2)===aA?(q=aA,G+=2):(q=t,Xe===0&&Te(eg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===AA?(q=AA,G+=2):(q=t,Xe===0&&Te(aa)),q!==t&&(yt=R,q=up()),R=q,R===t&&(R=G,r.substr(G,2)===lA?(q=lA,G+=2):(q=t,Xe===0&&Te(cA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===wl?(q=wl,G+=2):(q=t,Xe===0&&Te(tg)),q!==t&&(yt=R,q=po()),R=q,R===t&&(R=G,r.substr(G,2)===rg?(q=rg,G+=2):(q=t,Xe===0&&Te(gp)),q!==t&&(yt=R,q=fp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=Co()),R=q,R===t&&(R=G,r.substr(G,2)===Dn?(q=Dn,G+=2):(q=t,Xe===0&&Te(ig)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Bl?(q=Bl,G+=2):(q=t,Xe===0&&Te(kn)),q!==t?(Ce=hA(),Ce!==t?(Ke=hA(),Ke!==t?(Re=hA(),Re!==t?(ze=hA(),ze!==t?(yt=R,q=$n(Ce,Ke,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function hA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(mo)),R}function DE(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Ks(){var R,q,Ce,Ke,Re,ze;if(R=G,q=Us(),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function Us(){var R;return r.substr(G,2)===Ql?(R=Ql,G+=2):(R=t,Xe===0&&Te(hp)),R===t&&(r.charCodeAt(G)===10?(R=pp,G++):(R=t,Xe===0&&Te(dp)),R===t&&(r.charCodeAt(G)===13?(R=Cp,G++):(R=t,Xe===0&&Te(mp)))),R}let ug=2,pA=0;if(Aa=n(),Aa!==t&&G===r.length)return Aa;throw Aa!==t&&G{"use strict";var wpe=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=wpe(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};KS.exports=T2;KS.exports.default=T2});var M2=w((VXe,Bpe)=>{Bpe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Vl=w(On=>{"use strict";var U2=M2(),Qo=process.env;Object.defineProperty(On,"_vendors",{value:U2.map(function(r){return r.constant})});On.name=null;On.isPR=null;U2.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return K2(i)});if(On[r.constant]=t,t)switch(On.name=r.name,typeof r.pr){case"string":On.isPR=!!Qo[r.pr];break;case"object":"env"in r.pr?On.isPR=r.pr.env in Qo&&Qo[r.pr.env]!==r.pr.ne:"any"in r.pr?On.isPR=r.pr.any.some(function(i){return!!Qo[i]}):On.isPR=K2(r.pr);break;default:On.isPR=null}});On.isCI=!!(Qo.CI||Qo.CONTINUOUS_INTEGRATION||Qo.BUILD_NUMBER||Qo.RUN_ID||On.name);function K2(r){return typeof r=="string"?!!Qo[r]:Object.keys(r).every(function(e){return Qo[e]===r[e]})}});var gn={};ut(gn,{KeyRelationship:()=>Xl,applyCascade:()=>zp,base64RegExp:()=>q2,colorStringAlphaRegExp:()=>j2,colorStringRegExp:()=>Y2,computeKey:()=>BA,getPrintable:()=>Vr,hasExactLength:()=>X2,hasForbiddenKeys:()=>tde,hasKeyRelationship:()=>JS,hasMaxLength:()=>Mpe,hasMinLength:()=>Ope,hasMutuallyExclusiveKeys:()=>rde,hasRequiredKeys:()=>ede,hasUniqueItems:()=>Kpe,isArray:()=>Ppe,isAtLeast:()=>Gpe,isAtMost:()=>Ype,isBase64:()=>Zpe,isBoolean:()=>Spe,isDate:()=>xpe,isDict:()=>kpe,isEnum:()=>Wi,isHexColor:()=>_pe,isISO8601:()=>Xpe,isInExclusiveRange:()=>qpe,isInInclusiveRange:()=>jpe,isInstanceOf:()=>Fpe,isInteger:()=>Jpe,isJSON:()=>$pe,isLiteral:()=>Qpe,isLowerCase:()=>Wpe,isNegative:()=>Upe,isNullable:()=>Tpe,isNumber:()=>vpe,isObject:()=>Rpe,isOneOf:()=>Npe,isOptional:()=>Lpe,isPositive:()=>Hpe,isString:()=>Wp,isTuple:()=>Dpe,isUUID4:()=>Vpe,isUnknown:()=>V2,isUpperCase:()=>zpe,iso8601RegExp:()=>qS,makeCoercionFn:()=>_l,makeSetter:()=>z2,makeTrait:()=>W2,makeValidator:()=>bt,matchesRegExp:()=>Vp,plural:()=>EI,pushError:()=>pt,simpleKeyRegExp:()=>G2,uuid4RegExp:()=>J2});function bt({test:r}){return W2(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function BA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:G2.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function _l(r,e){return t=>{let i=r[e];return r[e]=t,_l(r,e).bind(null,i)}}function z2(r,e){return t=>{r[e]=t}}function EI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function Qpe(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Wi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var G2,Y2,j2,q2,J2,qS,W2,V2,Wp,bpe,Spe,vpe,xpe,Ppe,Dpe,kpe,Rpe,Fpe,Npe,zp,Lpe,Tpe,Ope,Mpe,X2,Kpe,Upe,Hpe,Gpe,Ype,jpe,qpe,Jpe,Vp,Wpe,zpe,Vpe,Xpe,_pe,Zpe,$pe,ede,tde,rde,Xl,ide,JS,ns=Yue(()=>{G2=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Y2=/^#[0-9a-f]{6}$/i,j2=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,q2=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,J2=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,qS=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,W2=r=>()=>r;V2=()=>bt({test:(r,e)=>!0});Wp=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});bpe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Spe=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=bpe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),vpe=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),xpe=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&qS.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),Ppe=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=X2(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:BA(n,l),coercion:_l(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:z2(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Fpe=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),Npe=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),zp=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?_l(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Lpe=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),Tpe=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),Ope=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Mpe=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),X2=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),Kpe=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),Hpe=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),Gpe=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),Ype=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),jpe=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),qpe=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),Vp=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Wpe=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),zpe=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Vpe=()=>bt({test:(r,e)=>J2.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Xpe=()=>bt({test:(r,e)=>qS.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),_pe=({alpha:r=!1})=>bt({test:(e,t)=>(r?Y2.test(e):j2.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Zpe=()=>bt({test:(r,e)=>q2.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),$pe=(r=V2())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),ede=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},rde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(Xl||(Xl={}));ide={[Xl.Forbids]:{expect:!1,message:"forbids using"},[Xl.Requires]:{expect:!0,message:"requires using"}},JS=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=ide[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${EI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var fH=w((V_e,gH)=>{"use strict";gH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Tg=w((X_e,ev)=>{"use strict";var Ide=fH(),hH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Ide(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};ev.exports=hH;ev.exports.default=hH});var ed=w((Z_e,pH)=>{var yde="2.0.0",wde=Number.MAX_SAFE_INTEGER||9007199254740991,Bde=16;pH.exports={SEMVER_SPEC_VERSION:yde,MAX_LENGTH:256,MAX_SAFE_INTEGER:wde,MAX_SAFE_COMPONENT_LENGTH:Bde}});var td=w(($_e,dH)=>{var Qde=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};dH.exports=Qde});var Zl=w((bA,CH)=>{var{MAX_SAFE_COMPONENT_LENGTH:tv}=ed(),bde=td();bA=CH.exports={};var Sde=bA.re=[],$e=bA.src=[],et=bA.t={},vde=0,St=(r,e,t)=>{let i=vde++;bde(i,e),et[r]=i,$e[i]=e,Sde[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${$e[et.NUMERICIDENTIFIER]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${$e[et.NUMERICIDENTIFIERLOOSE]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${$e[et.PRERELEASEIDENTIFIER]}(?:\\.${$e[et.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${$e[et.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${$e[et.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${$e[et.BUILDIDENTIFIER]}(?:\\.${$e[et.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${$e[et.MAINVERSION]}${$e[et.PRERELEASE]}?${$e[et.BUILD]}?`);St("FULL",`^${$e[et.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${$e[et.MAINVERSIONLOOSE]}${$e[et.PRERELEASELOOSE]}?${$e[et.BUILD]}?`);St("LOOSE",`^${$e[et.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${$e[et.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${$e[et.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:${$e[et.PRERELEASE]})?${$e[et.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:${$e[et.PRERELEASELOOSE]})?${$e[et.BUILD]}?)?)?`);St("XRANGE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${tv}})(?:\\.(\\d{1,${tv}}))?(?:\\.(\\d{1,${tv}}))?(?:$|[^\\d])`);St("COERCERTL",$e[et.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${$e[et.LONETILDE]}\\s+`,!0);bA.tildeTrimReplace="$1~";St("TILDE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${$e[et.LONECARET]}\\s+`,!0);bA.caretTrimReplace="$1^";St("CARET",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${$e[et.GTLT]}\\s*(${$e[et.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]}|${$e[et.XRANGEPLAIN]})`,!0);bA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${$e[et.XRANGEPLAIN]})\\s+-\\s+(${$e[et.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${$e[et.XRANGEPLAINLOOSE]})\\s+-\\s+(${$e[et.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var rd=w((eZe,mH)=>{var xde=["includePrerelease","loose","rtl"],Pde=r=>r?typeof r!="object"?{loose:!0}:xde.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};mH.exports=Pde});var bI=w((tZe,yH)=>{var EH=/^[0-9]+$/,IH=(r,e)=>{let t=EH.test(r),i=EH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rIH(e,r);yH.exports={compareIdentifiers:IH,rcompareIdentifiers:Dde}});var Li=w((rZe,bH)=>{var SI=td(),{MAX_LENGTH:wH,MAX_SAFE_INTEGER:vI}=ed(),{re:BH,t:QH}=Zl(),kde=rd(),{compareIdentifiers:id}=bI(),Un=class{constructor(e,t){if(t=kde(t),e instanceof Un){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>wH)throw new TypeError(`version is longer than ${wH} characters`);SI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?BH[QH.LOOSE]:BH[QH.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>vI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>vI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>vI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};bH.exports=Un});var $l=w((iZe,PH)=>{var{MAX_LENGTH:Rde}=ed(),{re:SH,t:vH}=Zl(),xH=Li(),Fde=rd(),Nde=(r,e)=>{if(e=Fde(e),r instanceof xH)return r;if(typeof r!="string"||r.length>Rde||!(e.loose?SH[vH.LOOSE]:SH[vH.FULL]).test(r))return null;try{return new xH(r,e)}catch{return null}};PH.exports=Nde});var kH=w((nZe,DH)=>{var Lde=$l(),Tde=(r,e)=>{let t=Lde(r,e);return t?t.version:null};DH.exports=Tde});var FH=w((sZe,RH)=>{var Ode=$l(),Mde=(r,e)=>{let t=Ode(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};RH.exports=Mde});var LH=w((oZe,NH)=>{var Kde=Li(),Ude=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new Kde(r,t).inc(e,i).version}catch{return null}};NH.exports=Ude});var ss=w((aZe,OH)=>{var TH=Li(),Hde=(r,e,t)=>new TH(r,t).compare(new TH(e,t));OH.exports=Hde});var xI=w((AZe,MH)=>{var Gde=ss(),Yde=(r,e,t)=>Gde(r,e,t)===0;MH.exports=Yde});var HH=w((lZe,UH)=>{var KH=$l(),jde=xI(),qde=(r,e)=>{if(jde(r,e))return null;{let t=KH(r),i=KH(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};UH.exports=qde});var YH=w((cZe,GH)=>{var Jde=Li(),Wde=(r,e)=>new Jde(r,e).major;GH.exports=Wde});var qH=w((uZe,jH)=>{var zde=Li(),Vde=(r,e)=>new zde(r,e).minor;jH.exports=Vde});var WH=w((gZe,JH)=>{var Xde=Li(),_de=(r,e)=>new Xde(r,e).patch;JH.exports=_de});var VH=w((fZe,zH)=>{var Zde=$l(),$de=(r,e)=>{let t=Zde(r,e);return t&&t.prerelease.length?t.prerelease:null};zH.exports=$de});var _H=w((hZe,XH)=>{var eCe=ss(),tCe=(r,e,t)=>eCe(e,r,t);XH.exports=tCe});var $H=w((pZe,ZH)=>{var rCe=ss(),iCe=(r,e)=>rCe(r,e,!0);ZH.exports=iCe});var PI=w((dZe,tG)=>{var eG=Li(),nCe=(r,e,t)=>{let i=new eG(r,t),n=new eG(e,t);return i.compare(n)||i.compareBuild(n)};tG.exports=nCe});var iG=w((CZe,rG)=>{var sCe=PI(),oCe=(r,e)=>r.sort((t,i)=>sCe(t,i,e));rG.exports=oCe});var sG=w((mZe,nG)=>{var aCe=PI(),ACe=(r,e)=>r.sort((t,i)=>aCe(i,t,e));nG.exports=ACe});var nd=w((EZe,oG)=>{var lCe=ss(),cCe=(r,e,t)=>lCe(r,e,t)>0;oG.exports=cCe});var DI=w((IZe,aG)=>{var uCe=ss(),gCe=(r,e,t)=>uCe(r,e,t)<0;aG.exports=gCe});var rv=w((yZe,AG)=>{var fCe=ss(),hCe=(r,e,t)=>fCe(r,e,t)!==0;AG.exports=hCe});var kI=w((wZe,lG)=>{var pCe=ss(),dCe=(r,e,t)=>pCe(r,e,t)>=0;lG.exports=dCe});var RI=w((BZe,cG)=>{var CCe=ss(),mCe=(r,e,t)=>CCe(r,e,t)<=0;cG.exports=mCe});var iv=w((QZe,uG)=>{var ECe=xI(),ICe=rv(),yCe=nd(),wCe=kI(),BCe=DI(),QCe=RI(),bCe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return ECe(r,t,i);case"!=":return ICe(r,t,i);case">":return yCe(r,t,i);case">=":return wCe(r,t,i);case"<":return BCe(r,t,i);case"<=":return QCe(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};uG.exports=bCe});var fG=w((bZe,gG)=>{var SCe=Li(),vCe=$l(),{re:FI,t:NI}=Zl(),xCe=(r,e)=>{if(r instanceof SCe)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(FI[NI.COERCE]);else{let i;for(;(i=FI[NI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),FI[NI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;FI[NI.COERCERTL].lastIndex=-1}return t===null?null:vCe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};gG.exports=xCe});var pG=w((SZe,hG)=>{"use strict";hG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var sd=w((vZe,dG)=>{"use strict";dG.exports=Ht;Ht.Node=ec;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var RCe=sd(),tc=Symbol("max"),Ia=Symbol("length"),Og=Symbol("lengthCalculator"),ad=Symbol("allowStale"),rc=Symbol("maxAge"),Ea=Symbol("dispose"),CG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Ws=Symbol("cache"),EG=Symbol("updateAgeOnGet"),nv=()=>1,ov=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[tc]=e.max||1/0,i=e.length||nv;if(this[Og]=typeof i!="function"?nv:i,this[ad]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[rc]=e.maxAge||0,this[Ea]=e.dispose,this[CG]=e.noDisposeOnSet||!1,this[EG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[tc]=e||1/0,od(this)}get max(){return this[tc]}set allowStale(e){this[ad]=!!e}get allowStale(){return this[ad]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[rc]=e,od(this)}get maxAge(){return this[rc]}set lengthCalculator(e){typeof e!="function"&&(e=nv),e!==this[Og]&&(this[Og]=e,this[Ia]=0,this[di].forEach(t=>{t.length=this[Og](t.value,t.key),this[Ia]+=t.length})),od(this)}get lengthCalculator(){return this[Og]}get length(){return this[Ia]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;mG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;mG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[Ea]&&this[di]&&this[di].length&&this[di].forEach(e=>this[Ea](e.key,e.value)),this[Ws]=new Map,this[di]=new RCe,this[Ia]=0}dump(){return this[di].map(e=>LI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[rc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Og](t,e);if(this[Ws].has(e)){if(s>this[tc])return Mg(this,this[Ws].get(e)),!1;let l=this[Ws].get(e).value;return this[Ea]&&(this[CG]||this[Ea](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Ia]+=s-l.length,l.length=s,this.get(e),od(this),!0}let o=new av(e,t,s,n,i);return o.length>this[tc]?(this[Ea]&&this[Ea](e,t),!1):(this[Ia]+=o.length,this[di].unshift(o),this[Ws].set(e,this[di].head),od(this),!0)}has(e){if(!this[Ws].has(e))return!1;let t=this[Ws].get(e).value;return!LI(this,t)}get(e){return sv(this,e,!0)}peek(e){return sv(this,e,!1)}pop(){let e=this[di].tail;return e?(Mg(this,e),e.value):null}del(e){Mg(this,this[Ws].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Ws].forEach((e,t)=>sv(this,t,!1))}},sv=(r,e,t)=>{let i=r[Ws].get(e);if(i){let n=i.value;if(LI(r,n)){if(Mg(r,i),!r[ad])return}else t&&(r[EG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},LI=(r,e)=>{if(!e||!e.maxAge&&!r[rc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[rc]&&t>r[rc]},od=r=>{if(r[Ia]>r[tc])for(let e=r[di].tail;r[Ia]>r[tc]&&e!==null;){let t=e.prev;Mg(r,e),e=t}},Mg=(r,e)=>{if(e){let t=e.value;r[Ea]&&r[Ea](t.key,t.value),r[Ia]-=t.length,r[Ws].delete(t.key),r[di].removeNode(e)}},av=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},mG=(r,e,t,i)=>{let n=t.value;LI(r,n)&&(Mg(r,t),r[ad]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};IG.exports=ov});var os=w((PZe,bG)=>{var ic=class{constructor(e,t){if(t=NCe(t),e instanceof ic)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ic(e.raw,t);if(e instanceof Av)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!BG(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&KCe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=wG.get(i);if(n)return n;let s=this.options.loose,o=s?Ti[Bi.HYPHENRANGELOOSE]:Ti[Bi.HYPHENRANGE];e=e.replace(o,VCe(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Ti[Bi.COMPARATORTRIM],TCe),Gr("comparator trim",e,Ti[Bi.COMPARATORTRIM]),e=e.replace(Ti[Bi.TILDETRIM],OCe),e=e.replace(Ti[Bi.CARETTRIM],MCe),e=e.split(/\s+/).join(" ");let a=s?Ti[Bi.COMPARATORLOOSE]:Ti[Bi.COMPARATOR],l=e.split(" ").map(f=>UCe(f,this.options)).join(" ").split(/\s+/).map(f=>zCe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Av(f,this.options)),c=l.length,u=new Map;for(let f of l){if(BG(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return wG.set(i,g),g}intersects(e,t){if(!(e instanceof ic))throw new TypeError("a Range is required");return this.set.some(i=>QG(i,t)&&e.set.some(n=>QG(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new LCe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",KCe=r=>r.value==="",QG=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},UCe=(r,e)=>(Gr("comp",r,e),r=YCe(r,e),Gr("caret",r),r=HCe(r,e),Gr("tildes",r),r=qCe(r,e),Gr("xrange",r),r=WCe(r,e),Gr("stars",r),r),Vi=r=>!r||r.toLowerCase()==="x"||r==="*",HCe=(r,e)=>r.trim().split(/\s+/).map(t=>GCe(t,e)).join(" "),GCe=(r,e)=>{let t=e.loose?Ti[Bi.TILDELOOSE]:Ti[Bi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return Vi(n)?l="":Vi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Vi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},YCe=(r,e)=>r.trim().split(/\s+/).map(t=>jCe(t,e)).join(" "),jCe=(r,e)=>{Gr("caret",r,e);let t=e.loose?Ti[Bi.CARETLOOSE]:Ti[Bi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return Vi(s)?c="":Vi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Vi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},qCe=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>JCe(t,e)).join(" ")),JCe=(r,e)=>{r=r.trim();let t=e.loose?Ti[Bi.XRANGELOOSE]:Ti[Bi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=Vi(s),u=c||Vi(o),g=u||Vi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},WCe=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Ti[Bi.STAR],"")),zCe=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Ti[e.includePrerelease?Bi.GTE0PRE:Bi.GTE0],"")),VCe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Vi(i)?t="":Vi(n)?t=`>=${i}.0.0${r?"-0":""}`:Vi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Vi(c)?l="":Vi(u)?l=`<${+c+1}.0.0-0`:Vi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),XCe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ad=w((DZe,DG)=>{var ld=Symbol("SemVer ANY"),Kg=class{static get ANY(){return ld}constructor(e,t){if(t=_Ce(t),e instanceof Kg){if(e.loose===!!t.loose)return e;e=e.value}cv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ld?this.value="":this.value=this.operator+this.semver.version,cv("comp",this)}parse(e){let t=this.options.loose?SG[vG.COMPARATORLOOSE]:SG[vG.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new xG(i[2],this.options.loose):this.semver=ld}toString(){return this.value}test(e){if(cv("Comparator.test",e,this.options.loose),this.semver===ld||e===ld)return!0;if(typeof e=="string")try{e=new xG(e,this.options)}catch{return!1}return lv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Kg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new PG(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new PG(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=lv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=lv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};DG.exports=Kg;var _Ce=rd(),{re:SG,t:vG}=Zl(),lv=iv(),cv=td(),xG=Li(),PG=os()});var cd=w((kZe,kG)=>{var ZCe=os(),$Ce=(r,e,t)=>{try{e=new ZCe(e,t)}catch{return!1}return e.test(r)};kG.exports=$Ce});var FG=w((RZe,RG)=>{var eme=os(),tme=(r,e)=>new eme(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));RG.exports=tme});var LG=w((FZe,NG)=>{var rme=Li(),ime=os(),nme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ime(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new rme(i,t))}),i};NG.exports=nme});var OG=w((NZe,TG)=>{var sme=Li(),ome=os(),ame=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ome(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new sme(i,t))}),i};TG.exports=ame});var UG=w((LZe,KG)=>{var uv=Li(),Ame=os(),MG=nd(),lme=(r,e)=>{r=new Ame(r,e);let t=new uv("0.0.0");if(r.test(t)||(t=new uv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new uv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||MG(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||MG(t,s))&&(t=s)}return t&&r.test(t)?t:null};KG.exports=lme});var GG=w((TZe,HG)=>{var cme=os(),ume=(r,e)=>{try{return new cme(r,e).range||"*"}catch{return null}};HG.exports=ume});var TI=w((OZe,JG)=>{var gme=Li(),qG=Ad(),{ANY:fme}=qG,hme=os(),pme=cd(),YG=nd(),jG=DI(),dme=RI(),Cme=kI(),mme=(r,e,t,i)=>{r=new gme(r,i),e=new hme(e,i);let n,s,o,a,l;switch(t){case">":n=YG,s=dme,o=jG,a=">",l=">=";break;case"<":n=jG,s=Cme,o=YG,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(pme(r,e,i))return!1;for(let c=0;c{h.semver===fme&&(h=new qG(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};JG.exports=mme});var zG=w((MZe,WG)=>{var Eme=TI(),Ime=(r,e,t)=>Eme(r,e,">",t);WG.exports=Ime});var XG=w((KZe,VG)=>{var yme=TI(),wme=(r,e,t)=>yme(r,e,"<",t);VG.exports=wme});var $G=w((UZe,ZG)=>{var _G=os(),Bme=(r,e,t)=>(r=new _G(r,t),e=new _G(e,t),r.intersects(e));ZG.exports=Bme});var tY=w((HZe,eY)=>{var Qme=cd(),bme=ss();eY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>bme(u,g,t));for(let u of o)Qme(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var rY=os(),OI=Ad(),{ANY:gv}=OI,ud=cd(),fv=ss(),Sme=(r,e,t={})=>{if(r===e)return!0;r=new rY(r,t),e=new rY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=vme(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},vme=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===gv){if(e.length===1&&e[0].semver===gv)return!0;t.includePrerelease?r=[new OI(">=0.0.0-0")]:r=[new OI(">=0.0.0")]}if(e.length===1&&e[0].semver===gv){if(t.includePrerelease)return!0;e=[new OI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=iY(n,h,t):h.operator==="<"||h.operator==="<="?s=nY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=fv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!ud(h,String(n),t)||s&&!ud(h,String(s),t))return null;for(let p of e)if(!ud(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=iY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!ud(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=nY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!ud(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},iY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},nY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};sY.exports=Sme});var Xr=w((YZe,aY)=>{var hv=Zl();aY.exports={re:hv.re,src:hv.src,tokens:hv.t,SEMVER_SPEC_VERSION:ed().SEMVER_SPEC_VERSION,SemVer:Li(),compareIdentifiers:bI().compareIdentifiers,rcompareIdentifiers:bI().rcompareIdentifiers,parse:$l(),valid:kH(),clean:FH(),inc:LH(),diff:HH(),major:YH(),minor:qH(),patch:WH(),prerelease:VH(),compare:ss(),rcompare:_H(),compareLoose:$H(),compareBuild:PI(),sort:iG(),rsort:sG(),gt:nd(),lt:DI(),eq:xI(),neq:rv(),gte:kI(),lte:RI(),cmp:iv(),coerce:fG(),Comparator:Ad(),Range:os(),satisfies:cd(),toComparators:FG(),maxSatisfying:LG(),minSatisfying:OG(),minVersion:UG(),validRange:GG(),outside:TI(),gtr:zG(),ltr:XG(),intersects:$G(),simplifyRange:tY(),subset:oY()}});var pv=w(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.VERSION=void 0;MI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof KI=="object"&&KI.exports?KI.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:AY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Xpe(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=F2((t-55296)*1024+i-56320+65536),s++;continue}n=Ni[t],e+=!n&&Kg(t)?r[s]:n||F2(t)}return e}function Zpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),oc(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function ede(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new ed("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&_p===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=VS(r,e)),oc(r,e+1,u,!0,g)&&(r.dump&&_p===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function U2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function oc(r,e,t,i,n,s){r.tag=null,r.dump=t,U2(r,t,!1)||U2(r,t,!0);var o=K2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(ede(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):($pe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(_pe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Zpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&zpe(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new ed("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function tde(r,e){var t=[],i=[],n,s;for(XS(r,t,i),n=0,s=i.length;n{"use strict";var QI=R2(),rH=tH();function bI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=rc();Fr.exports.FAILSAFE_SCHEMA=CI();Fr.exports.JSON_SCHEMA=YS();Fr.exports.CORE_SCHEMA=jS();Fr.exports.DEFAULT_SAFE_SCHEMA=Tg();Fr.exports.DEFAULT_FULL_SCHEMA=Xp();Fr.exports.load=QI.load;Fr.exports.loadAll=QI.loadAll;Fr.exports.safeLoad=QI.safeLoad;Fr.exports.safeLoadAll=QI.safeLoadAll;Fr.exports.dump=rH.dump;Fr.exports.safeDump=rH.safeDump;Fr.exports.YAMLException=Ng();Fr.exports.MINIMAL_SCHEMA=CI();Fr.exports.SAFE_SCHEMA=Tg();Fr.exports.DEFAULT_SCHEMA=Xp();Fr.exports.scan=bI("scan");Fr.exports.parse=bI("parse");Fr.exports.compose=bI("compose");Fr.exports.addConstructor=bI("addConstructor")});var sH=w((ZZe,nH)=>{"use strict";var ide=iH();nH.exports=ide});var aH=w((_Ze,oH)=>{"use strict";function nde(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function ac(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ac)}nde(ac,Error);ac.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ue]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ks("correct indentation"),V=" ",W=ar(" ",!1),_=function(R){return R.length===QA*yg},A=function(R){return R.length===(QA+1)*yg},Ae=function(){return QA++,!0},ge=function(){return QA--,!0},re=function(){return pg()},O=Ks("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Nn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,ke=Nn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return pg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,Be=Nn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,ae=Nn(["\r",` +`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},he="true",ie=ar("true",!1),de=function(){return!0},_e="false",Pt=ar("false",!1),It=function(){return!1},Or=Ks("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Us=/^[^"\\\0-\x1F\x7F]/,pr=Nn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ii='\\"',rs=ar('\\"',!1),ga=function(){return'"'},dA="\\\\",cg=ar("\\\\",!1),is=function(){return"\\"},CA="\\/",fa=ar("\\/",!1),wp=function(){return"/"},mA="\\b",EA=ar("\\b",!1),wr=function(){return"\b"},Ll="\\f",ug=ar("\\f",!1),Io=function(){return"\f"},gg="\\n",Bp=ar("\\n",!1),Qp=function(){return` +`},vr="\\r",se=ar("\\r",!1),yo=function(){return"\r"},Rn="\\t",fg=ar("\\t",!1),Qt=function(){return" "},Tl="\\u",Fn=ar("\\u",!1),ns=function(R,q,Ce,Ue){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ue}`))},ss=/^[0-9a-fA-F]/,gt=Nn([["0","9"],["a","f"],["A","F"]],!1,!1),wo=Ks("blank space"),At=/^[ \t]/,An=Nn([" "," "],!1,!1),S=Ks("white space"),Tt=/^[ \t\n\r]/,hg=Nn([" "," ",` +`,"\r"],!1,!1),Ol=`\r +`,bp=ar(`\r +`,!1),Sp=` +`,vp=ar(` +`,!1),xp="\r",Pp=ar("\r",!1),G=0,yt=0,IA=[{line:1,column:1}],Wi=0,Ml=[],Xe=0,ha;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function pg(){return r.substring(yt,G)}function OE(){return ln(yt,G)}function Dp(R,q){throw q=q!==void 0?q:ln(yt,G),Kl([Ks(R)],r.substring(yt,G),q)}function ME(R,q){throw q=q!==void 0?q:ln(yt,G),dg(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Nn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Ul(){return{type:"any"}}function kp(){return{type:"end"}}function Ks(R){return{type:"other",description:R}}function pa(R){var q=IA[R],Ce;if(q)return q;for(Ce=R-1;!IA[Ce];)Ce--;for(q=IA[Ce],q={line:q.line,column:q.column};CeWi&&(Wi=G,Ml=[]),Ml.push(R))}function dg(R,q){return new ac(R,null,null,q)}function Kl(R,q,Ce){return new ac(ac.buildMessage(R,q),R,q,Ce)}function Hs(){var R;return R=Cg(),R}function Hl(){var R,q,Ce;for(R=G,q=[],Ce=yA();Ce!==t;)q.push(Ce),Ce=yA();return q!==t&&(yt=R,q=s(q)),R=q,R}function yA(){var R,q,Ce,Ue,Re;return R=G,q=Ca(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ue=Rr(),Ue!==t?(Re=da(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Cg(){var R,q,Ce;for(R=G,q=[],Ce=mg();Ce!==t;)q.push(Ce),Ce=mg();return q!==t&&(yt=R,q=c(q)),R=q,R}function mg(){var R,q,Ce,Ue,Re,ze,dt,Ft,Ln;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ue=u,G++):(Ue=t,Xe===0&&Te(g)),Ue!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=js(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=js(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ue=[Ue,Re],Ce=Ue):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ue=[],Re=Ys(),Re!==t)for(;Re!==t;)Ue.push(Re),Re=Ys();else Ue=t;Ue!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=Ca(),q!==t?(Ce=Gl(),Ce!==t?(Ue=Rr(),Ue===t&&(Ue=null),Ue!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=da(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Ca(),q!==t?(Ce=Gs(),Ce!==t?(Ue=Rr(),Ue===t&&(Ue=null),Ue!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=da(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=Ca(),q!==t)if(Ce=Gs(),Ce!==t)if(Ue=Rr(),Ue!==t)if(Re=UE(),Re!==t){if(ze=[],dt=Ys(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ys();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=Ca(),q!==t)if(Ce=Gs(),Ce!==t){if(Ue=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Ln=Gs(),Ln!==t?(yt=Re,ze=D(Ce,Ln),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ue.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Ln=Gs(),Ln!==t?(yt=Re,ze=D(Ce,Ln),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ue=t;Ue!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=da(),Ft!==t?(yt=R,q=L(Ce,Ue,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function da(){var R,q,Ce,Ue,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ue=js(),Ue!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ue=[Ue,Re,ze,dt],Ce=Ue):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ys(),Ce!==t?(Ue=Bo(),Ue!==t?(Re=Hl(),Re!==t?(ze=wA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=js(),q!==t?(Ce=Bo(),Ce!==t?(Ue=Cg(),Ue!==t?(Re=wA(),Re!==t?(yt=R,q=H(Ue),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Yl(),q!==t){if(Ce=[],Ue=Ys(),Ue!==t)for(;Ue!==t;)Ce.push(Ue),Ue=Ys();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function Ca(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=_(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Bo(){var R;return yt=G,R=Ae(),R?R=void 0:R=t,R}function wA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Gl(){var R;return R=jl(),R===t&&(R=Rp()),R}function Gs(){var R,q,Ce;if(R=jl(),R===t){if(R=G,q=[],Ce=Eg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=Eg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Yl(){var R;return R=Fp(),R===t&&(R=KE(),R===t&&(R=jl(),R===t&&(R=Rp()))),R}function UE(){var R;return R=Fp(),R===t&&(R=jl(),R===t&&(R=Eg())),R}function Rp(){var R,q,Ce,Ue,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ue=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(pe.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ue=Re):(G=Ue,Ue=t)):(G=Ue,Ue=t);Ue!==t;)Ce.push(Ue),Ue=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(pe.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ue=Re):(G=Ue,Ue=t)):(G=Ue,Ue=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function Eg(){var R,q,Ce,Ue,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(Be)),Ce!==t){for(Ue=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(ae));Re!==t;)Ue.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(ae));Ue!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function Fp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function KE(){var R,q;return R=G,r.substr(G,4)===he?(q=he,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===_e?(q=_e,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function jl(){var R,q,Ce,Ue;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=HE(),Ce!==t?(r.charCodeAt(G)===34?(Ue=ii,G++):(Ue=t,Xe===0&&Te(gi)),Ue!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function HE(){var R,q,Ce;if(R=G,q=[],Ce=Ig(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=Ig();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function Ig(){var R,q,Ce,Ue,Re,ze;return Us.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ii?(q=Ii,G+=2):(q=t,Xe===0&&Te(rs)),q!==t&&(yt=R,q=ga()),R=q,R===t&&(R=G,r.substr(G,2)===dA?(q=dA,G+=2):(q=t,Xe===0&&Te(cg)),q!==t&&(yt=R,q=is()),R=q,R===t&&(R=G,r.substr(G,2)===CA?(q=CA,G+=2):(q=t,Xe===0&&Te(fa)),q!==t&&(yt=R,q=wp()),R=q,R===t&&(R=G,r.substr(G,2)===mA?(q=mA,G+=2):(q=t,Xe===0&&Te(EA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===Ll?(q=Ll,G+=2):(q=t,Xe===0&&Te(ug)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===gg?(q=gg,G+=2):(q=t,Xe===0&&Te(Bp)),q!==t&&(yt=R,q=Qp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=yo()),R=q,R===t&&(R=G,r.substr(G,2)===Rn?(q=Rn,G+=2):(q=t,Xe===0&&Te(fg)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Tl?(q=Tl,G+=2):(q=t,Xe===0&&Te(Fn)),q!==t?(Ce=BA(),Ce!==t?(Ue=BA(),Ue!==t?(Re=BA(),Re!==t?(ze=BA(),ze!==t?(yt=R,q=ns(Ce,Ue,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function BA(){var R;return ss.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(An)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(An));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(wo)),R}function GE(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(hg)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(hg));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Ys(){var R,q,Ce,Ue,Re,ze;if(R=G,q=js(),q!==t){for(Ce=[],Ue=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=js(),ze!==t?(Re=[Re,ze],Ue=Re):(G=Ue,Ue=t)):(G=Ue,Ue=t);Ue!==t;)Ce.push(Ue),Ue=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=js(),ze!==t?(Re=[Re,ze],Ue=Re):(G=Ue,Ue=t)):(G=Ue,Ue=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function js(){var R;return r.substr(G,2)===Ol?(R=Ol,G+=2):(R=t,Xe===0&&Te(bp)),R===t&&(r.charCodeAt(G)===10?(R=Sp,G++):(R=t,Xe===0&&Te(vp)),R===t&&(r.charCodeAt(G)===13?(R=xp,G++):(R=t,Xe===0&&Te(Pp)))),R}let yg=2,QA=0;if(ha=n(),ha!==t&&G===r.length)return ha;throw ha!==t&&G{"use strict";var cde=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=cde(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};ev.exports=gH;ev.exports.default=gH});var hH=w((n_e,ude)=>{ude.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Ac=w(Un=>{"use strict";var dH=hH(),xo=process.env;Object.defineProperty(Un,"_vendors",{value:dH.map(function(r){return r.constant})});Un.name=null;Un.isPR=null;dH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return pH(i)});if(Un[r.constant]=t,t)switch(Un.name=r.name,typeof r.pr){case"string":Un.isPR=!!xo[r.pr];break;case"object":"env"in r.pr?Un.isPR=r.pr.env in xo&&xo[r.pr.env]!==r.pr.ne:"any"in r.pr?Un.isPR=r.pr.any.some(function(i){return!!xo[i]}):Un.isPR=pH(r.pr);break;default:Un.isPR=null}});Un.isCI=!!(xo.CI||xo.CONTINUOUS_INTEGRATION||xo.BUILD_NUMBER||xo.RUN_ID||Un.name);function pH(r){return typeof r=="string"?!!xo[r]:Object.keys(r).every(function(e){return xo[e]===r[e]})}});var fn={};ut(fn,{KeyRelationship:()=>lc,applyCascade:()=>od,base64RegExp:()=>yH,colorStringAlphaRegExp:()=>IH,colorStringRegExp:()=>EH,computeKey:()=>RA,getPrintable:()=>Vr,hasExactLength:()=>SH,hasForbiddenKeys:()=>Yde,hasKeyRelationship:()=>av,hasMaxLength:()=>Sde,hasMinLength:()=>bde,hasMutuallyExclusiveKeys:()=>jde,hasRequiredKeys:()=>Gde,hasUniqueItems:()=>vde,isArray:()=>Cde,isAtLeast:()=>Dde,isAtMost:()=>kde,isBase64:()=>Kde,isBoolean:()=>hde,isDate:()=>dde,isDict:()=>Ede,isEnum:()=>Xi,isHexColor:()=>Ude,isISO8601:()=>Mde,isInExclusiveRange:()=>Fde,isInInclusiveRange:()=>Rde,isInstanceOf:()=>yde,isInteger:()=>Nde,isJSON:()=>Hde,isLiteral:()=>gde,isLowerCase:()=>Lde,isNegative:()=>xde,isNullable:()=>Qde,isNumber:()=>pde,isObject:()=>Ide,isOneOf:()=>wde,isOptional:()=>Bde,isPositive:()=>Pde,isString:()=>sd,isTuple:()=>mde,isUUID4:()=>Ode,isUnknown:()=>bH,isUpperCase:()=>Tde,iso8601RegExp:()=>ov,makeCoercionFn:()=>cc,makeSetter:()=>QH,makeTrait:()=>BH,makeValidator:()=>bt,matchesRegExp:()=>ad,plural:()=>kI,pushError:()=>pt,simpleKeyRegExp:()=>mH,uuid4RegExp:()=>wH});function bt({test:r}){return BH(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function RA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:mH.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function cc(r,e){return t=>{let i=r[e];return r[e]=t,cc(r,e).bind(null,i)}}function QH(r,e){return t=>{r[e]=t}}function kI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function gde(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Xi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var mH,EH,IH,yH,wH,ov,BH,bH,sd,fde,hde,pde,dde,Cde,mde,Ede,Ide,yde,wde,od,Bde,Qde,bde,Sde,SH,vde,xde,Pde,Dde,kde,Rde,Fde,Nde,ad,Lde,Tde,Ode,Mde,Ude,Kde,Hde,Gde,Yde,jde,lc,qde,av,ls=kge(()=>{mH=/^[a-zA-Z_][a-zA-Z0-9_]*$/,EH=/^#[0-9a-f]{6}$/i,IH=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,yH=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,wH=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,ov=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,BH=r=>()=>r;bH=()=>bt({test:(r,e)=>!0});sd=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});fde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),hde=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=fde.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),pde=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),dde=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&ov.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),Cde=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=SH(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:RA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:RA(n,l),coercion:cc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:RA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:QH(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},yde=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),wde=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),od=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?cc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Bde=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),Qde=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),bde=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Sde=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),SH=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),vde=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),Pde=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),Dde=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),kde=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),Rde=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),Fde=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),ad=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Lde=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),Tde=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Ode=()=>bt({test:(r,e)=>wH.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Mde=()=>bt({test:(r,e)=>ov.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),Ude=({alpha:r=!1})=>bt({test:(e,t)=>(r?EH.test(e):IH.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Kde=()=>bt({test:(r,e)=>yH.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),Hde=(r=bH())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),Gde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${kI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},Yde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${kI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},jde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(lc||(lc={}));qde={[lc.Forbids]:{expect:!1,message:"forbids using"},[lc.Requires]:{expect:!0,message:"requires using"}},av=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=qde[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${kI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var YH=w((n$e,GH)=>{"use strict";GH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Jg=w((s$e,pv)=>{"use strict";var ACe=YH(),jH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=ACe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};pv.exports=jH;pv.exports.default=jH});var gd=w((a$e,qH)=>{var lCe="2.0.0",cCe=Number.MAX_SAFE_INTEGER||9007199254740991,uCe=16;qH.exports={SEMVER_SPEC_VERSION:lCe,MAX_LENGTH:256,MAX_SAFE_INTEGER:cCe,MAX_SAFE_COMPONENT_LENGTH:uCe}});var fd=w((A$e,JH)=>{var gCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};JH.exports=gCe});var uc=w((NA,WH)=>{var{MAX_SAFE_COMPONENT_LENGTH:dv}=gd(),fCe=fd();NA=WH.exports={};var hCe=NA.re=[],et=NA.src=[],tt=NA.t={},pCe=0,St=(r,e,t)=>{let i=pCe++;fCe(i,e),tt[r]=i,et[i]=e,hCe[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${et[tt.NUMERICIDENTIFIER]})\\.(${et[tt.NUMERICIDENTIFIER]})\\.(${et[tt.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${et[tt.NUMERICIDENTIFIERLOOSE]})\\.(${et[tt.NUMERICIDENTIFIERLOOSE]})\\.(${et[tt.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${et[tt.NUMERICIDENTIFIER]}|${et[tt.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${et[tt.NUMERICIDENTIFIERLOOSE]}|${et[tt.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${et[tt.PRERELEASEIDENTIFIER]}(?:\\.${et[tt.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${et[tt.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${et[tt.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${et[tt.BUILDIDENTIFIER]}(?:\\.${et[tt.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${et[tt.MAINVERSION]}${et[tt.PRERELEASE]}?${et[tt.BUILD]}?`);St("FULL",`^${et[tt.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${et[tt.MAINVERSIONLOOSE]}${et[tt.PRERELEASELOOSE]}?${et[tt.BUILD]}?`);St("LOOSE",`^${et[tt.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${et[tt.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${et[tt.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${et[tt.XRANGEIDENTIFIER]})(?:\\.(${et[tt.XRANGEIDENTIFIER]})(?:\\.(${et[tt.XRANGEIDENTIFIER]})(?:${et[tt.PRERELEASE]})?${et[tt.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:${et[tt.PRERELEASELOOSE]})?${et[tt.BUILD]}?)?)?`);St("XRANGE",`^${et[tt.GTLT]}\\s*${et[tt.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${et[tt.GTLT]}\\s*${et[tt.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${dv}})(?:\\.(\\d{1,${dv}}))?(?:\\.(\\d{1,${dv}}))?(?:$|[^\\d])`);St("COERCERTL",et[tt.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${et[tt.LONETILDE]}\\s+`,!0);NA.tildeTrimReplace="$1~";St("TILDE",`^${et[tt.LONETILDE]}${et[tt.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${et[tt.LONETILDE]}${et[tt.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${et[tt.LONECARET]}\\s+`,!0);NA.caretTrimReplace="$1^";St("CARET",`^${et[tt.LONECARET]}${et[tt.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${et[tt.LONECARET]}${et[tt.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${et[tt.GTLT]}\\s*(${et[tt.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${et[tt.GTLT]}\\s*(${et[tt.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${et[tt.GTLT]}\\s*(${et[tt.LOOSEPLAIN]}|${et[tt.XRANGEPLAIN]})`,!0);NA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${et[tt.XRANGEPLAIN]})\\s+-\\s+(${et[tt.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${et[tt.XRANGEPLAINLOOSE]})\\s+-\\s+(${et[tt.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var hd=w((l$e,zH)=>{var dCe=["includePrerelease","loose","rtl"],CCe=r=>r?typeof r!="object"?{loose:!0}:dCe.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};zH.exports=CCe});var OI=w((c$e,ZH)=>{var VH=/^[0-9]+$/,XH=(r,e)=>{let t=VH.test(r),i=VH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rXH(e,r);ZH.exports={compareIdentifiers:XH,rcompareIdentifiers:mCe}});var Ti=w((u$e,tG)=>{var MI=fd(),{MAX_LENGTH:_H,MAX_SAFE_INTEGER:UI}=gd(),{re:$H,t:eG}=uc(),ECe=hd(),{compareIdentifiers:pd}=OI(),Gn=class{constructor(e,t){if(t=ECe(t),e instanceof Gn){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>_H)throw new TypeError(`version is longer than ${_H} characters`);MI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?$H[eG.LOOSE]:$H[eG.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>UI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>UI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>UI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};tG.exports=Gn});var gc=w((g$e,sG)=>{var{MAX_LENGTH:ICe}=gd(),{re:rG,t:iG}=uc(),nG=Ti(),yCe=hd(),wCe=(r,e)=>{if(e=yCe(e),r instanceof nG)return r;if(typeof r!="string"||r.length>ICe||!(e.loose?rG[iG.LOOSE]:rG[iG.FULL]).test(r))return null;try{return new nG(r,e)}catch{return null}};sG.exports=wCe});var aG=w((f$e,oG)=>{var BCe=gc(),QCe=(r,e)=>{let t=BCe(r,e);return t?t.version:null};oG.exports=QCe});var lG=w((h$e,AG)=>{var bCe=gc(),SCe=(r,e)=>{let t=bCe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};AG.exports=SCe});var uG=w((p$e,cG)=>{var vCe=Ti(),xCe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new vCe(r,t).inc(e,i).version}catch{return null}};cG.exports=xCe});var cs=w((d$e,fG)=>{var gG=Ti(),PCe=(r,e,t)=>new gG(r,t).compare(new gG(e,t));fG.exports=PCe});var KI=w((C$e,hG)=>{var DCe=cs(),kCe=(r,e,t)=>DCe(r,e,t)===0;hG.exports=kCe});var CG=w((m$e,dG)=>{var pG=gc(),RCe=KI(),FCe=(r,e)=>{if(RCe(r,e))return null;{let t=pG(r),i=pG(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};dG.exports=FCe});var EG=w((E$e,mG)=>{var NCe=Ti(),LCe=(r,e)=>new NCe(r,e).major;mG.exports=LCe});var yG=w((I$e,IG)=>{var TCe=Ti(),OCe=(r,e)=>new TCe(r,e).minor;IG.exports=OCe});var BG=w((y$e,wG)=>{var MCe=Ti(),UCe=(r,e)=>new MCe(r,e).patch;wG.exports=UCe});var bG=w((w$e,QG)=>{var KCe=gc(),HCe=(r,e)=>{let t=KCe(r,e);return t&&t.prerelease.length?t.prerelease:null};QG.exports=HCe});var vG=w((B$e,SG)=>{var GCe=cs(),YCe=(r,e,t)=>GCe(e,r,t);SG.exports=YCe});var PG=w((Q$e,xG)=>{var jCe=cs(),qCe=(r,e)=>jCe(r,e,!0);xG.exports=qCe});var HI=w((b$e,kG)=>{var DG=Ti(),JCe=(r,e,t)=>{let i=new DG(r,t),n=new DG(e,t);return i.compare(n)||i.compareBuild(n)};kG.exports=JCe});var FG=w((S$e,RG)=>{var WCe=HI(),zCe=(r,e)=>r.sort((t,i)=>WCe(t,i,e));RG.exports=zCe});var LG=w((v$e,NG)=>{var VCe=HI(),XCe=(r,e)=>r.sort((t,i)=>VCe(i,t,e));NG.exports=XCe});var dd=w((x$e,TG)=>{var ZCe=cs(),_Ce=(r,e,t)=>ZCe(r,e,t)>0;TG.exports=_Ce});var GI=w((P$e,OG)=>{var $Ce=cs(),eme=(r,e,t)=>$Ce(r,e,t)<0;OG.exports=eme});var Cv=w((D$e,MG)=>{var tme=cs(),rme=(r,e,t)=>tme(r,e,t)!==0;MG.exports=rme});var YI=w((k$e,UG)=>{var ime=cs(),nme=(r,e,t)=>ime(r,e,t)>=0;UG.exports=nme});var jI=w((R$e,KG)=>{var sme=cs(),ome=(r,e,t)=>sme(r,e,t)<=0;KG.exports=ome});var mv=w((F$e,HG)=>{var ame=KI(),Ame=Cv(),lme=dd(),cme=YI(),ume=GI(),gme=jI(),fme=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return ame(r,t,i);case"!=":return Ame(r,t,i);case">":return lme(r,t,i);case">=":return cme(r,t,i);case"<":return ume(r,t,i);case"<=":return gme(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};HG.exports=fme});var YG=w((N$e,GG)=>{var hme=Ti(),pme=gc(),{re:qI,t:JI}=uc(),dme=(r,e)=>{if(r instanceof hme)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(qI[JI.COERCE]);else{let i;for(;(i=qI[JI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),qI[JI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;qI[JI.COERCERTL].lastIndex=-1}return t===null?null:pme(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};GG.exports=dme});var qG=w((L$e,jG)=>{"use strict";jG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var WI=w((T$e,JG)=>{"use strict";JG.exports=Ht;Ht.Node=fc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var Ime=WI(),hc=Symbol("max"),Sa=Symbol("length"),Wg=Symbol("lengthCalculator"),md=Symbol("allowStale"),pc=Symbol("maxAge"),ba=Symbol("dispose"),WG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Zs=Symbol("cache"),VG=Symbol("updateAgeOnGet"),Ev=()=>1,yv=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[hc]=e.max||1/0,i=e.length||Ev;if(this[Wg]=typeof i!="function"?Ev:i,this[md]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[pc]=e.maxAge||0,this[ba]=e.dispose,this[WG]=e.noDisposeOnSet||!1,this[VG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[hc]=e||1/0,Cd(this)}get max(){return this[hc]}set allowStale(e){this[md]=!!e}get allowStale(){return this[md]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[pc]=e,Cd(this)}get maxAge(){return this[pc]}set lengthCalculator(e){typeof e!="function"&&(e=Ev),e!==this[Wg]&&(this[Wg]=e,this[Sa]=0,this[di].forEach(t=>{t.length=this[Wg](t.value,t.key),this[Sa]+=t.length})),Cd(this)}get lengthCalculator(){return this[Wg]}get length(){return this[Sa]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;zG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;zG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[ba]&&this[di]&&this[di].length&&this[di].forEach(e=>this[ba](e.key,e.value)),this[Zs]=new Map,this[di]=new Ime,this[Sa]=0}dump(){return this[di].map(e=>zI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[pc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Wg](t,e);if(this[Zs].has(e)){if(s>this[hc])return zg(this,this[Zs].get(e)),!1;let l=this[Zs].get(e).value;return this[ba]&&(this[WG]||this[ba](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Sa]+=s-l.length,l.length=s,this.get(e),Cd(this),!0}let o=new wv(e,t,s,n,i);return o.length>this[hc]?(this[ba]&&this[ba](e,t),!1):(this[Sa]+=o.length,this[di].unshift(o),this[Zs].set(e,this[di].head),Cd(this),!0)}has(e){if(!this[Zs].has(e))return!1;let t=this[Zs].get(e).value;return!zI(this,t)}get(e){return Iv(this,e,!0)}peek(e){return Iv(this,e,!1)}pop(){let e=this[di].tail;return e?(zg(this,e),e.value):null}del(e){zg(this,this[Zs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Zs].forEach((e,t)=>Iv(this,t,!1))}},Iv=(r,e,t)=>{let i=r[Zs].get(e);if(i){let n=i.value;if(zI(r,n)){if(zg(r,i),!r[md])return}else t&&(r[VG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},zI=(r,e)=>{if(!e||!e.maxAge&&!r[pc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[pc]&&t>r[pc]},Cd=r=>{if(r[Sa]>r[hc])for(let e=r[di].tail;r[Sa]>r[hc]&&e!==null;){let t=e.prev;zg(r,e),e=t}},zg=(r,e)=>{if(e){let t=e.value;r[ba]&&r[ba](t.key,t.value),r[Sa]-=t.length,r[Zs].delete(t.key),r[di].removeNode(e)}},wv=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},zG=(r,e,t,i)=>{let n=t.value;zI(r,n)&&(zg(r,t),r[md]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};XG.exports=yv});var us=w((M$e,tY)=>{var dc=class{constructor(e,t){if(t=wme(t),e instanceof dc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new dc(e.raw,t);if(e instanceof Bv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!$G(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&vme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=_G.get(i);if(n)return n;let s=this.options.loose,o=s?Oi[Qi.HYPHENRANGELOOSE]:Oi[Qi.HYPHENRANGE];e=e.replace(o,Ome(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Oi[Qi.COMPARATORTRIM],Qme),Gr("comparator trim",e,Oi[Qi.COMPARATORTRIM]),e=e.replace(Oi[Qi.TILDETRIM],bme),e=e.replace(Oi[Qi.CARETTRIM],Sme),e=e.split(/\s+/).join(" ");let a=s?Oi[Qi.COMPARATORLOOSE]:Oi[Qi.COMPARATOR],l=e.split(" ").map(f=>xme(f,this.options)).join(" ").split(/\s+/).map(f=>Tme(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Bv(f,this.options)),c=l.length,u=new Map;for(let f of l){if($G(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return _G.set(i,g),g}intersects(e,t){if(!(e instanceof dc))throw new TypeError("a Range is required");return this.set.some(i=>eY(i,t)&&e.set.some(n=>eY(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Bme(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",vme=r=>r.value==="",eY=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},xme=(r,e)=>(Gr("comp",r,e),r=kme(r,e),Gr("caret",r),r=Pme(r,e),Gr("tildes",r),r=Fme(r,e),Gr("xrange",r),r=Lme(r,e),Gr("stars",r),r),_i=r=>!r||r.toLowerCase()==="x"||r==="*",Pme=(r,e)=>r.trim().split(/\s+/).map(t=>Dme(t,e)).join(" "),Dme=(r,e)=>{let t=e.loose?Oi[Qi.TILDELOOSE]:Oi[Qi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return _i(n)?l="":_i(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:_i(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},kme=(r,e)=>r.trim().split(/\s+/).map(t=>Rme(t,e)).join(" "),Rme=(r,e)=>{Gr("caret",r,e);let t=e.loose?Oi[Qi.CARETLOOSE]:Oi[Qi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return _i(s)?c="":_i(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:_i(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},Fme=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>Nme(t,e)).join(" ")),Nme=(r,e)=>{r=r.trim();let t=e.loose?Oi[Qi.XRANGELOOSE]:Oi[Qi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=_i(s),u=c||_i(o),g=u||_i(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},Lme=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Oi[Qi.STAR],"")),Tme=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Oi[e.includePrerelease?Qi.GTE0PRE:Qi.GTE0],"")),Ome=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(_i(i)?t="":_i(n)?t=`>=${i}.0.0${r?"-0":""}`:_i(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,_i(c)?l="":_i(u)?l=`<${+c+1}.0.0-0`:_i(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),Mme=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ed=w((U$e,oY)=>{var Id=Symbol("SemVer ANY"),Vg=class{static get ANY(){return Id}constructor(e,t){if(t=Ume(t),e instanceof Vg){if(e.loose===!!t.loose)return e;e=e.value}bv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Id?this.value="":this.value=this.operator+this.semver.version,bv("comp",this)}parse(e){let t=this.options.loose?rY[iY.COMPARATORLOOSE]:rY[iY.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new nY(i[2],this.options.loose):this.semver=Id}toString(){return this.value}test(e){if(bv("Comparator.test",e,this.options.loose),this.semver===Id||e===Id)return!0;if(typeof e=="string")try{e=new nY(e,this.options)}catch{return!1}return Qv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Vg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new sY(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new sY(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Qv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Qv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};oY.exports=Vg;var Ume=hd(),{re:rY,t:iY}=uc(),Qv=mv(),bv=fd(),nY=Ti(),sY=us()});var yd=w((K$e,aY)=>{var Kme=us(),Hme=(r,e,t)=>{try{e=new Kme(e,t)}catch{return!1}return e.test(r)};aY.exports=Hme});var lY=w((H$e,AY)=>{var Gme=us(),Yme=(r,e)=>new Gme(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));AY.exports=Yme});var uY=w((G$e,cY)=>{var jme=Ti(),qme=us(),Jme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new qme(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new jme(i,t))}),i};cY.exports=Jme});var fY=w((Y$e,gY)=>{var Wme=Ti(),zme=us(),Vme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new zme(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new Wme(i,t))}),i};gY.exports=Vme});var dY=w((j$e,pY)=>{var Sv=Ti(),Xme=us(),hY=dd(),Zme=(r,e)=>{r=new Xme(r,e);let t=new Sv("0.0.0");if(r.test(t)||(t=new Sv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new Sv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||hY(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||hY(t,s))&&(t=s)}return t&&r.test(t)?t:null};pY.exports=Zme});var mY=w((q$e,CY)=>{var _me=us(),$me=(r,e)=>{try{return new _me(r,e).range||"*"}catch{return null}};CY.exports=$me});var VI=w((J$e,wY)=>{var eEe=Ti(),yY=Ed(),{ANY:tEe}=yY,rEe=us(),iEe=yd(),EY=dd(),IY=GI(),nEe=jI(),sEe=YI(),oEe=(r,e,t,i)=>{r=new eEe(r,i),e=new rEe(e,i);let n,s,o,a,l;switch(t){case">":n=EY,s=nEe,o=IY,a=">",l=">=";break;case"<":n=IY,s=sEe,o=EY,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(iEe(r,e,i))return!1;for(let c=0;c{h.semver===tEe&&(h=new yY(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};wY.exports=oEe});var QY=w((W$e,BY)=>{var aEe=VI(),AEe=(r,e,t)=>aEe(r,e,">",t);BY.exports=AEe});var SY=w((z$e,bY)=>{var lEe=VI(),cEe=(r,e,t)=>lEe(r,e,"<",t);bY.exports=cEe});var PY=w((V$e,xY)=>{var vY=us(),uEe=(r,e,t)=>(r=new vY(r,t),e=new vY(e,t),r.intersects(e));xY.exports=uEe});var kY=w((X$e,DY)=>{var gEe=yd(),fEe=cs();DY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>fEe(u,g,t));for(let u of o)gEe(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var RY=us(),XI=Ed(),{ANY:vv}=XI,wd=yd(),xv=cs(),hEe=(r,e,t={})=>{if(r===e)return!0;r=new RY(r,t),e=new RY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=pEe(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},pEe=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===vv){if(e.length===1&&e[0].semver===vv)return!0;t.includePrerelease?r=[new XI(">=0.0.0-0")]:r=[new XI(">=0.0.0")]}if(e.length===1&&e[0].semver===vv){if(t.includePrerelease)return!0;e=[new XI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=FY(n,h,t):h.operator==="<"||h.operator==="<="?s=NY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=xv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!wd(h,String(n),t)||s&&!wd(h,String(s),t))return null;for(let p of e)if(!wd(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=FY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!wd(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=NY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!wd(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},FY=(r,e,t)=>{if(!r)return e;let i=xv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},NY=(r,e,t)=>{if(!r)return e;let i=xv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};LY.exports=hEe});var Xr=w((_$e,OY)=>{var Pv=uc();OY.exports={re:Pv.re,src:Pv.src,tokens:Pv.t,SEMVER_SPEC_VERSION:gd().SEMVER_SPEC_VERSION,SemVer:Ti(),compareIdentifiers:OI().compareIdentifiers,rcompareIdentifiers:OI().rcompareIdentifiers,parse:gc(),valid:aG(),clean:lG(),inc:uG(),diff:CG(),major:EG(),minor:yG(),patch:BG(),prerelease:bG(),compare:cs(),rcompare:vG(),compareLoose:PG(),compareBuild:HI(),sort:FG(),rsort:LG(),gt:dd(),lt:GI(),eq:KI(),neq:Cv(),gte:YI(),lte:jI(),cmp:mv(),coerce:YG(),Comparator:Ed(),Range:us(),satisfies:yd(),toComparators:lY(),maxSatisfying:uY(),minSatisfying:fY(),minVersion:dY(),validRange:mY(),outside:VI(),gtr:QY(),ltr:SY(),intersects:PY(),simplifyRange:kY(),subset:TY()}});var Dv=w(ZI=>{"use strict";Object.defineProperty(ZI,"__esModule",{value:!0});ZI.VERSION=void 0;ZI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof _I=="object"&&_I.exports?_I.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:MY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` `),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` `);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` `:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var GI=w(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});Ug.clearRegExpParserCache=Ug.getRegExpAst=void 0;var xme=UI(),HI={},Pme=new xme.RegExpParser;function Dme(r){var e=r.toString();if(HI.hasOwnProperty(e))return HI[e];var t=Pme.pattern(e);return HI[e]=t,t}Ug.getRegExpAst=Dme;function kme(){HI={}}Ug.clearRegExpParserCache=kme});var fY=w(pn=>{"use strict";var Rme=pn&&pn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(pn,"__esModule",{value:!0});pn.canMatchCharCode=pn.firstCharOptimizedIndices=pn.getOptimizedStartCodesIndices=pn.failedOptimizationPrefixMsg=void 0;var cY=UI(),as=Gt(),uY=GI(),ya=Cv(),gY="Complement Sets are not supported for first char optimization";pn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function Fme(r,e){e===void 0&&(e=!1);try{var t=(0,uY.getRegExpAst)(r),i=jI(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===gY)e&&(0,as.PRINT_WARNING)(""+pn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ty=w(Xg=>{"use strict";Object.defineProperty(Xg,"__esModule",{value:!0});Xg.clearRegExpParserCache=Xg.getRegExpAst=void 0;var dEe=$I(),ey={},CEe=new dEe.RegExpParser;function mEe(r){var e=r.toString();if(ey.hasOwnProperty(e))return ey[e];var t=CEe.pattern(e);return ey[e]=t,t}Xg.getRegExpAst=mEe;function EEe(){ey={}}Xg.clearRegExpParserCache=EEe});var YY=w(dn=>{"use strict";var IEe=dn&&dn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.canMatchCharCode=dn.firstCharOptimizedIndices=dn.getOptimizedStartCodesIndices=dn.failedOptimizationPrefixMsg=void 0;var KY=$I(),gs=Gt(),HY=ty(),va=Rv(),GY="Complement Sets are not supported for first char optimization";dn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function yEe(r,e){e===void 0&&(e=!1);try{var t=(0,HY.getRegExpAst)(r),i=iy(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===GY)e&&(0,gs.PRINT_WARNING)(""+dn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > `)+` Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,as.PRINT_ERROR)(pn.failedOptimizationPrefixMsg+` + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,gs.PRINT_ERROR)(dn.failedOptimizationPrefixMsg+` `+(" Failed parsing: < "+r.toString()+` > -`)+(" Using the regexp-to-ast library version: "+cY.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}pn.getOptimizedStartCodesIndices=Fme;function jI(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=ya.minOptimizationVal)for(var f=u.from>=ya.minOptimizationVal?u.from:ya.minOptimizationVal,h=u.to,p=(0,ya.charCodeToOptimizedIndex)(f),C=(0,ya.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":jI(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&dv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,as.values)(e)}pn.firstCharOptimizedIndices=jI;function YI(r,e,t){var i=(0,ya.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&Nme(r,e)}function Nme(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,ya.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,ya.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function lY(r,e){return(0,as.find)(r.value,function(t){if(typeof t=="number")return(0,as.contains)(e,t);var i=t;return(0,as.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function dv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,as.isArray)(r.value)?(0,as.every)(r.value,dv):dv(r.value):!1}var Lme=function(r){Rme(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,as.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?lY(t,this.targetCharCodes)===void 0&&(this.found=!0):lY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(cY.BaseRegExpVisitor);function Tme(r,e){if(e instanceof RegExp){var t=(0,uY.getRegExpAst)(e),i=new Lme(r);return i.visit(t),i.found}else return(0,as.find)(e,function(n){return(0,as.contains)(r,n.charCodeAt(0))})!==void 0}pn.canMatchCharCode=Tme});var Cv=w(Ve=>{"use strict";var hY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var pY=UI(),ir=gd(),xe=Gt(),Hg=fY(),dY=GI(),So="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function Ome(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=Ome;function Mme(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=Mme;function Kme(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){Vme()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[So]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[So];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Iv(D):Ev(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Iv(j):Ev(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=DY(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(xY(D,v)===!1)return(0,Hg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,wv),h=(0,xe.map)(s,vY),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=yv(H);mv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=yv(Z);$!==A&&($=A,mv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+(" Using the regexp-to-ast library version: "+KY.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}dn.getOptimizedStartCodesIndices=yEe;function iy(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=va.minOptimizationVal)for(var f=u.from>=va.minOptimizationVal?u.from:va.minOptimizationVal,h=u.to,p=(0,va.charCodeToOptimizedIndex)(f),C=(0,va.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":iy(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&kv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,gs.values)(e)}dn.firstCharOptimizedIndices=iy;function ry(r,e,t){var i=(0,va.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&wEe(r,e)}function wEe(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,va.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,va.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function UY(r,e){return(0,gs.find)(r.value,function(t){if(typeof t=="number")return(0,gs.contains)(e,t);var i=t;return(0,gs.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function kv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,gs.isArray)(r.value)?(0,gs.every)(r.value,kv):kv(r.value):!1}var BEe=function(r){IEe(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,gs.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?UY(t,this.targetCharCodes)===void 0&&(this.found=!0):UY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(KY.BaseRegExpVisitor);function QEe(r,e){if(e instanceof RegExp){var t=(0,HY.getRegExpAst)(e),i=new BEe(r);return i.visit(t),i.found}else return(0,gs.find)(e,function(n){return(0,gs.contains)(r,n.charCodeAt(0))})!==void 0}dn.canMatchCharCode=QEe});var Rv=w(Ve=>{"use strict";var jY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var qY=$I(),ir=Bd(),xe=Gt(),Zg=YY(),JY=ty(),Do="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function bEe(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=bEe;function SEe(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=SEe;function vEe(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){OEe()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[Do];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Lv(D):Nv(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Lv(j):Nv(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=oj(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(nj(D,v)===!1)return(0,Zg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,Ov),h=(0,xe.map)(s,ij),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Tv(H);Fv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var _=typeof W=="string"?W.charCodeAt(0):W,A=Tv(_);$!==A&&($=A,Fv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Zg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. `)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Hg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){mv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Zg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){Fv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Zg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. `)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=Kme;function Ume(r,e){var t=[],i=CY(r);t=t.concat(i.errors);var n=mY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(Hme(s)),t=t.concat(QY(s)),t=t.concat(bY(s,e)),t=t.concat(SY(s)),t}Ve.validatePatterns=Ume;function Hme(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[So])});return e=e.concat(EY(t)),e=e.concat(yY(t)),e=e.concat(wY(t)),e=e.concat(BY(t)),e=e.concat(IY(t)),e}function CY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,So)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=CY;function mY(r){var e=(0,xe.filter)(r,function(n){var s=n[So];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=mY;var Gme=/[^\\][\$]/;function EY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Gme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=vEe;function xEe(r,e){var t=[],i=WY(r);t=t.concat(i.errors);var n=zY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(PEe(s)),t=t.concat(ej(s)),t=t.concat(tj(s,e)),t=t.concat(rj(s)),t}Ve.validatePatterns=xEe;function PEe(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[Do])});return e=e.concat(VY(t)),e=e.concat(ZY(t)),e=e.concat(_Y(t)),e=e.concat($Y(t)),e=e.concat(XY(t)),e}function WY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,Do)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=WY;function zY(r){var e=(0,xe.filter)(r,function(n){var s=n[Do];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=zY;var DEe=/[^\\][\$]/;function VY(r){var e=function(n){jY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(qY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[Do];try{var o=(0,JY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return DEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=EY;function IY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=IY;var Yme=/[^\\[][\^]|^\^/;function yY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Yme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=VY;function XY(r){var e=(0,xe.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=XY;var kEe=/[^\\[][\^]|^\^/;function ZY(r){var e=function(n){jY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(qY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[Do];try{var o=(0,JY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return kEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=yY;function wY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=wY;function BY(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=BY;function QY(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=QY;function bY(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=bY;function SY(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&qme(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=_Y;function $Y(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=$Y;function ej(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=ej;function tj(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=tj;function rj(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&FEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=SY;function jme(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function qme(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Ev(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Ev;function Iv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Iv;function Jme(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=rj;function REe(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function FEe(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Nv(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Nv;function Lv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Lv;function NEe(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition `,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition `,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist `,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=Jme;function Wme(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[So]===ir.Lexer.NA}),a=DY(t);return e&&(0,xe.forEach)(o,function(l){var c=xY(l,a);if(c!==!1){var u=PY(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Hg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=NEe;function LEe(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=oj(t);return e&&(0,xe.forEach)(o,function(l){var c=nj(l,a);if(c!==!1){var u=sj(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Zg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=Wme;function zme(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=zme;function wv(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=wv;function vY(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=vY;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type `)+(" Root cause: "+e.errMsg+`. `)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. `+(" The problem is in the <"+r.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=PY;function DY(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function mv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var qI=[];function yv(r){return r255?255+~~(r/255):r}}});var Gg=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var _r=Gt();function Xme(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Xme;function _me(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=_me;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Zme(r){var e=kY(r);RY(e),NY(e),FY(e),(0,_r.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Zme;function kY(r){for(var e=(0,_r.cloneArr)(r),t=r,i=!0;i;){t=(0,_r.compact)((0,_r.flatten)((0,_r.map)(t,function(s){return s.CATEGORIES})));var n=(0,_r.difference)(t,e);e=e.concat(n),(0,_r.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=kY;function RY(r){(0,_r.forEach)(r,function(e){LY(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Bv(e)&&!(0,_r.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Bv(e)||(e.CATEGORIES=[]),TY(e)||(e.categoryMatches=[]),OY(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=RY;function FY(r){(0,_r.forEach)(r,function(e){e.categoryMatches=[],(0,_r.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=FY;function NY(r){(0,_r.forEach)(r,function(e){Qv([],e)})}Nt.assignCategoriesMapProp=NY;function Qv(r,e){(0,_r.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,_r.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,_r.contains)(i,t)||Qv(i,t)})}Nt.singleAssignCategoriesToksMap=Qv;function LY(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=LY;function Bv(r){return(0,_r.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Bv;function TY(r){return(0,_r.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=TY;function OY(r){return(0,_r.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=OY;function $me(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.isTokenType=$me});var bv=w(JI=>{"use strict";Object.defineProperty(JI,"__esModule",{value:!0});JI.defaultLexerErrorProvider=void 0;JI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var gd=w(nc=>{"use strict";Object.defineProperty(nc,"__esModule",{value:!0});nc.Lexer=nc.LexerDefinitionErrorType=void 0;var zs=Cv(),nr=Gt(),eEe=Gg(),tEe=bv(),rEe=GI(),iEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(iEe=nc.LexerDefinitionErrorType||(nc.LexerDefinitionErrorType={}));var fd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:tEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(fd);var nEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=fd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(fd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===fd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=zs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===fd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[zs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[zs.DEFAULT_MODE]=zs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,zs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,eEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,zs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=sj;function oj(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Fv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var ny=[];function Tv(r){return r255?255+~~(r/255):r}}});var _g=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var Zr=Gt();function MEe(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=MEe;function UEe(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=UEe;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function KEe(r){var e=aj(r);Aj(e),cj(e),lj(e),(0,Zr.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=KEe;function aj(r){for(var e=(0,Zr.cloneArr)(r),t=r,i=!0;i;){t=(0,Zr.compact)((0,Zr.flatten)((0,Zr.map)(t,function(s){return s.CATEGORIES})));var n=(0,Zr.difference)(t,e);e=e.concat(n),(0,Zr.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=aj;function Aj(r){(0,Zr.forEach)(r,function(e){uj(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Mv(e)&&!(0,Zr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Mv(e)||(e.CATEGORIES=[]),gj(e)||(e.categoryMatches=[]),fj(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=Aj;function lj(r){(0,Zr.forEach)(r,function(e){e.categoryMatches=[],(0,Zr.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=lj;function cj(r){(0,Zr.forEach)(r,function(e){Uv([],e)})}Nt.assignCategoriesMapProp=cj;function Uv(r,e){(0,Zr.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,Zr.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,Zr.contains)(i,t)||Uv(i,t)})}Nt.singleAssignCategoriesToksMap=Uv;function uj(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=uj;function Mv(r){return(0,Zr.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Mv;function gj(r){return(0,Zr.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=gj;function fj(r){return(0,Zr.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=fj;function HEe(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.isTokenType=HEe});var Kv=w(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.defaultLexerErrorProvider=void 0;sy.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var Bd=w(Cc=>{"use strict";Object.defineProperty(Cc,"__esModule",{value:!0});Cc.Lexer=Cc.LexerDefinitionErrorType=void 0;var _s=Rv(),nr=Gt(),GEe=_g(),YEe=Kv(),jEe=ty(),qEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(qEe=Cc.LexerDefinitionErrorType||(Cc.LexerDefinitionErrorType={}));var Qd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:YEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(Qd);var JEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=Qd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(Qd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===Qd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=_s.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===Qd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[_s.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[_s.DEFAULT_MODE]=_s.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,_s.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,_s.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,_s.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,GEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,_s.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- `);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(zs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(_s.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,rEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,jEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,zs.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],he=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ei=(0,zs.charCodeToOptimizedIndex)(pr),_n=he[Ei];return _n===void 0?Fe:_n}var we=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ei=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);Z.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ei})}else{ke.pop();var _n=(0,nr.last)(ke);ue=i.patternIdxToConfig[_n],he=i.charCodeToPatternIdxToConfig[_n],F=ue.length;var oa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;he&&oa?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),he=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ei=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;he&&Ei?Ne=le:Ne=oe}fe.call(this,t);for(var Ae;jc.length){c=a,u=g,Ae=tt;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,Ae.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),re===!0&&Ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,ae,f))}this.handleModes(Ae,we,fe,C)}else{for(var gi=j,hr=A,fi=ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();nc.Lexer=nEe});var SA=w(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.tokenMatcher=Qi.createTokenInstance=Qi.EOF=Qi.createToken=Qi.hasTokenLabel=Qi.tokenName=Qi.tokenLabel=void 0;var Vs=Gt(),sEe=gd(),Sv=Gg();function oEe(r){return JY(r)?r.LABEL:r.name}Qi.tokenLabel=oEe;function aEe(r){return r.name}Qi.tokenName=aEe;function JY(r){return(0,Vs.isString)(r.LABEL)&&r.LABEL!==""}Qi.hasTokenLabel=JY;var AEe="parent",MY="categories",KY="label",UY="group",HY="push_mode",GY="pop_mode",YY="longer_alt",jY="line_breaks",qY="start_chars_hint";function WY(r){return lEe(r)}Qi.createToken=WY;function lEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,Vs.isUndefined)(e)||(t.PATTERN=e),(0,Vs.has)(r,AEe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Vs.has)(r,MY)&&(t.CATEGORIES=r[MY]),(0,Sv.augmentTokenTypes)([t]),(0,Vs.has)(r,KY)&&(t.LABEL=r[KY]),(0,Vs.has)(r,UY)&&(t.GROUP=r[UY]),(0,Vs.has)(r,GY)&&(t.POP_MODE=r[GY]),(0,Vs.has)(r,HY)&&(t.PUSH_MODE=r[HY]),(0,Vs.has)(r,YY)&&(t.LONGER_ALT=r[YY]),(0,Vs.has)(r,jY)&&(t.LINE_BREAKS=r[jY]),(0,Vs.has)(r,qY)&&(t.START_CHARS_HINT=r[qY]),t}Qi.EOF=WY({name:"EOF",pattern:sEe.Lexer.NA});(0,Sv.augmentTokenTypes)([Qi.EOF]);function cEe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Qi.createTokenInstance=cEe;function uEe(r,e){return(0,Sv.tokenStructuredMatcher)(r,e)}Qi.tokenMatcher=uEe});var dn=w(Wt=>{"use strict";var wa=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var Ar=Gt(),gEe=SA(),vo=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=vo;var zY=function(r){wa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(vo);Wt.NonTerminal=zY;var VY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Rule=VY;var XY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Alternative=XY;var _Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Option=_Y;var ZY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatory=ZY;var $Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatoryWithSeparator=$Y;var ej=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Repetition=ej;var tj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionWithSeparator=tj;var rj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(vo);Wt.Alternation=rj;var WI=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=WI;function fEe(r){return(0,Ar.map)(r,hd)}Wt.serializeGrammar=fEe;function hd(r){function e(s){return(0,Ar.map)(s,hd)}if(r instanceof zY){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof XY)return{type:"Alternative",definition:e(r.definition)};if(r instanceof _Y)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof ZY)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof $Y)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof tj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof ej)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof rj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof WI){var i={type:"Terminal",name:r.terminalType.name,label:(0,gEe.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof VY)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=hd});var VI=w(zI=>{"use strict";Object.defineProperty(zI,"__esModule",{value:!0});zI.RestWalker=void 0;var vv=Gt(),Cn=dn(),hEe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,vv.forEach)(e.definition,function(n,s){var o=(0,vv.drop)(e.definition,s+1);if(n instanceof Cn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof Cn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof Cn.Alternative)i.walkFlat(n,o,t);else if(n instanceof Cn.Option)i.walkOption(n,o,t);else if(n instanceof Cn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof Cn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof Cn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof Cn.Repetition)i.walkMany(n,o,t);else if(n instanceof Cn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,vv.forEach)(e.definition,function(o){var a=new Cn.Alternative({definition:[o]});n.walk(a,s)})},r}();zI.RestWalker=hEe;function ij(r,e,t){var i=[new Cn.Option({definition:[new Cn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Yg=w(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.GAstVisitor=void 0;var xo=dn(),pEe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case xo.NonTerminal:return this.visitNonTerminal(t);case xo.Alternative:return this.visitAlternative(t);case xo.Option:return this.visitOption(t);case xo.RepetitionMandatory:return this.visitRepetitionMandatory(t);case xo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case xo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case xo.Repetition:return this.visitRepetition(t);case xo.Alternation:return this.visitAlternation(t);case xo.Terminal:return this.visitTerminal(t);case xo.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();XI.GAstVisitor=pEe});var dd=w(Oi=>{"use strict";var dEe=Oi&&Oi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Oi,"__esModule",{value:!0});Oi.collectMethods=Oi.DslMethodsCollectorVisitor=Oi.getProductionDslName=Oi.isBranchingProd=Oi.isOptionalProd=Oi.isSequenceProd=void 0;var pd=Gt(),Qr=dn(),CEe=Yg();function mEe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Oi.isSequenceProd=mEe;function xv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,pd.some)(r.definition,function(i){return xv(i,e)}):r instanceof Qr.NonTerminal&&(0,pd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,pd.every)(r.definition,function(i){return xv(i,e)})):!1}Oi.isOptionalProd=xv;function EEe(r){return r instanceof Qr.Alternation}Oi.isBranchingProd=EEe;function IEe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Oi.getProductionDslName=IEe;var nj=function(r){dEe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(CEe.GAstVisitor);Oi.DslMethodsCollectorVisitor=nj;var _I=new nj;function yEe(r){_I.reset(),r.accept(_I);var e=_I.dslMethods;return _I.reset(),e}Oi.collectMethods=yEe});var Dv=w(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.firstForTerminal=Po.firstForBranching=Po.firstForSequence=Po.first=void 0;var ZI=Gt(),sj=dn(),Pv=dd();function $I(r){if(r instanceof sj.NonTerminal)return $I(r.referencedRule);if(r instanceof sj.Terminal)return Aj(r);if((0,Pv.isSequenceProd)(r))return oj(r);if((0,Pv.isBranchingProd)(r))return aj(r);throw Error("non exhaustive match")}Po.first=$I;function oj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Pv.isOptionalProd)(s),e=e.concat($I(s)),i=i+1,n=t.length>i;return(0,ZI.uniq)(e)}Po.firstForSequence=oj;function aj(r){var e=(0,ZI.map)(r.definition,function(t){return $I(t)});return(0,ZI.uniq)((0,ZI.flatten)(e))}Po.firstForBranching=aj;function Aj(r){return[r.terminalType]}Po.firstForTerminal=Aj});var kv=w(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.IN=void 0;ey.IN="_~IN~_"});var fj=w(As=>{"use strict";var wEe=As&&As.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(As,"__esModule",{value:!0});As.buildInProdFollowPrefix=As.buildBetweenProdsFollowPrefix=As.computeAllProdsFollows=As.ResyncFollowsWalker=void 0;var BEe=VI(),QEe=Dv(),lj=Gt(),cj=kv(),bEe=dn(),uj=function(r){wEe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=gj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new bEe.Alternative({definition:o}),l=(0,QEe.first)(a);this.follows[s]=l},e}(BEe.RestWalker);As.ResyncFollowsWalker=uj;function SEe(r){var e={};return(0,lj.forEach)(r,function(t){var i=new uj(t).startWalking();(0,lj.assign)(e,i)}),e}As.computeAllProdsFollows=SEe;function gj(r,e){return r.name+e+cj.IN}As.buildBetweenProdsFollowPrefix=gj;function vEe(r){var e=r.terminalType.name;return e+r.idx+cj.IN}As.buildInProdFollowPrefix=vEe});var Cd=w(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.defaultGrammarValidatorErrorProvider=Ba.defaultGrammarResolverErrorProvider=Ba.defaultParserErrorProvider=void 0;var jg=SA(),xEe=Gt(),Xs=Gt(),Rv=dn(),hj=dd();Ba.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,jg.hasTokenLabel)(e),o=s?"--> "+(0,jg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,Xs.first)(t).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Xs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Xs.map)(c,function(h){return"["+(0,Xs.map)(h,function(p){return(0,jg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Xs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),_=[],A=this.trackStartLines?1:void 0,Ae=this.trackStartLines?1:void 0,ge=(0,_s.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],pe=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ii=(0,_s.charCodeToOptimizedIndex)(pr),rs=pe[Ii];return rs===void 0?Fe:rs}var Be=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ii=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);_.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ii})}else{ke.pop();var rs=(0,nr.last)(ke);ue=i.patternIdxToConfig[rs],pe=i.charCodeToPatternIdxToConfig[rs],F=ue.length;var ga=i.canModeBeOptimized[rs]&&i.config.safeMode===!1;pe&&ga?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),pe=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ii=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;pe&&Ii?Ne=le:Ne=oe}fe.call(this,t);for(var ae;jc.length){c=a,u=g,ae=_e;break}}}break}}if(c!==null){if(f=c.length,h=ae.group,h!==void 0&&(p=ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,ae.tokenType,A,Ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,Ae=this.computeNewColumn(Ae,f),re===!0&&ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,Ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,Ae,f))}this.handleModes(ae,Be,fe,C)}else{for(var gi=j,hr=A,fi=Ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();Cc.Lexer=JEe});var LA=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.tokenMatcher=bi.createTokenInstance=bi.EOF=bi.createToken=bi.hasTokenLabel=bi.tokenName=bi.tokenLabel=void 0;var $s=Gt(),WEe=Bd(),Hv=_g();function zEe(r){return wj(r)?r.LABEL:r.name}bi.tokenLabel=zEe;function VEe(r){return r.name}bi.tokenName=VEe;function wj(r){return(0,$s.isString)(r.LABEL)&&r.LABEL!==""}bi.hasTokenLabel=wj;var XEe="parent",hj="categories",pj="label",dj="group",Cj="push_mode",mj="pop_mode",Ej="longer_alt",Ij="line_breaks",yj="start_chars_hint";function Bj(r){return ZEe(r)}bi.createToken=Bj;function ZEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,$s.isUndefined)(e)||(t.PATTERN=e),(0,$s.has)(r,XEe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,$s.has)(r,hj)&&(t.CATEGORIES=r[hj]),(0,Hv.augmentTokenTypes)([t]),(0,$s.has)(r,pj)&&(t.LABEL=r[pj]),(0,$s.has)(r,dj)&&(t.GROUP=r[dj]),(0,$s.has)(r,mj)&&(t.POP_MODE=r[mj]),(0,$s.has)(r,Cj)&&(t.PUSH_MODE=r[Cj]),(0,$s.has)(r,Ej)&&(t.LONGER_ALT=r[Ej]),(0,$s.has)(r,Ij)&&(t.LINE_BREAKS=r[Ij]),(0,$s.has)(r,yj)&&(t.START_CHARS_HINT=r[yj]),t}bi.EOF=Bj({name:"EOF",pattern:WEe.Lexer.NA});(0,Hv.augmentTokenTypes)([bi.EOF]);function _Ee(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}bi.createTokenInstance=_Ee;function $Ee(r,e){return(0,Hv.tokenStructuredMatcher)(r,e)}bi.tokenMatcher=$Ee});var Cn=w(zt=>{"use strict";var xa=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.serializeProduction=zt.serializeGrammar=zt.Terminal=zt.Alternation=zt.RepetitionWithSeparator=zt.Repetition=zt.RepetitionMandatoryWithSeparator=zt.RepetitionMandatory=zt.Option=zt.Alternative=zt.Rule=zt.NonTerminal=zt.AbstractProduction=void 0;var Ar=Gt(),eIe=LA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();zt.AbstractProduction=ko;var Qj=function(r){xa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);zt.NonTerminal=Qj;var bj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Rule=bj;var Sj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Alternative=Sj;var vj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Option=vj;var xj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionMandatory=xj;var Pj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionMandatoryWithSeparator=Pj;var Dj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Repetition=Dj;var kj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionWithSeparator=kj;var Rj=function(r){xa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);zt.Alternation=Rj;var oy=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();zt.Terminal=oy;function tIe(r){return(0,Ar.map)(r,bd)}zt.serializeGrammar=tIe;function bd(r){function e(s){return(0,Ar.map)(s,bd)}if(r instanceof Qj){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof Sj)return{type:"Alternative",definition:e(r.definition)};if(r instanceof vj)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof xj)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Pj)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:bd(new oy({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof kj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:bd(new oy({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof Dj)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof Rj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof oy){var i={type:"Terminal",name:r.terminalType.name,label:(0,eIe.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof bj)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}zt.serializeProduction=bd});var Ay=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.RestWalker=void 0;var Gv=Gt(),mn=Cn(),rIe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Gv.forEach)(e.definition,function(n,s){var o=(0,Gv.drop)(e.definition,s+1);if(n instanceof mn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof mn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof mn.Alternative)i.walkFlat(n,o,t);else if(n instanceof mn.Option)i.walkOption(n,o,t);else if(n instanceof mn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof mn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof mn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof mn.Repetition)i.walkMany(n,o,t);else if(n instanceof mn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Fj(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Fj(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Gv.forEach)(e.definition,function(o){var a=new mn.Alternative({definition:[o]});n.walk(a,s)})},r}();ay.RestWalker=rIe;function Fj(r,e,t){var i=[new mn.Option({definition:[new mn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var $g=w(ly=>{"use strict";Object.defineProperty(ly,"__esModule",{value:!0});ly.GAstVisitor=void 0;var Ro=Cn(),iIe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();ly.GAstVisitor=iIe});var vd=w(Mi=>{"use strict";var nIe=Mi&&Mi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Mi,"__esModule",{value:!0});Mi.collectMethods=Mi.DslMethodsCollectorVisitor=Mi.getProductionDslName=Mi.isBranchingProd=Mi.isOptionalProd=Mi.isSequenceProd=void 0;var Sd=Gt(),Qr=Cn(),sIe=$g();function oIe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Mi.isSequenceProd=oIe;function Yv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Sd.some)(r.definition,function(i){return Yv(i,e)}):r instanceof Qr.NonTerminal&&(0,Sd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Sd.every)(r.definition,function(i){return Yv(i,e)})):!1}Mi.isOptionalProd=Yv;function aIe(r){return r instanceof Qr.Alternation}Mi.isBranchingProd=aIe;function AIe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Mi.getProductionDslName=AIe;var Nj=function(r){nIe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Sd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Sd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(sIe.GAstVisitor);Mi.DslMethodsCollectorVisitor=Nj;var cy=new Nj;function lIe(r){cy.reset(),r.accept(cy);var e=cy.dslMethods;return cy.reset(),e}Mi.collectMethods=lIe});var qv=w(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var uy=Gt(),Lj=Cn(),jv=vd();function gy(r){if(r instanceof Lj.NonTerminal)return gy(r.referencedRule);if(r instanceof Lj.Terminal)return Mj(r);if((0,jv.isSequenceProd)(r))return Tj(r);if((0,jv.isBranchingProd)(r))return Oj(r);throw Error("non exhaustive match")}Fo.first=gy;function Tj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,jv.isOptionalProd)(s),e=e.concat(gy(s)),i=i+1,n=t.length>i;return(0,uy.uniq)(e)}Fo.firstForSequence=Tj;function Oj(r){var e=(0,uy.map)(r.definition,function(t){return gy(t)});return(0,uy.uniq)((0,uy.flatten)(e))}Fo.firstForBranching=Oj;function Mj(r){return[r.terminalType]}Fo.firstForTerminal=Mj});var Jv=w(fy=>{"use strict";Object.defineProperty(fy,"__esModule",{value:!0});fy.IN=void 0;fy.IN="_~IN~_"});var Yj=w(fs=>{"use strict";var cIe=fs&&fs.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(fs,"__esModule",{value:!0});fs.buildInProdFollowPrefix=fs.buildBetweenProdsFollowPrefix=fs.computeAllProdsFollows=fs.ResyncFollowsWalker=void 0;var uIe=Ay(),gIe=qv(),Uj=Gt(),Kj=Jv(),fIe=Cn(),Hj=function(r){cIe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Gj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new fIe.Alternative({definition:o}),l=(0,gIe.first)(a);this.follows[s]=l},e}(uIe.RestWalker);fs.ResyncFollowsWalker=Hj;function hIe(r){var e={};return(0,Uj.forEach)(r,function(t){var i=new Hj(t).startWalking();(0,Uj.assign)(e,i)}),e}fs.computeAllProdsFollows=hIe;function Gj(r,e){return r.name+e+Kj.IN}fs.buildBetweenProdsFollowPrefix=Gj;function pIe(r){var e=r.terminalType.name;return e+r.idx+Kj.IN}fs.buildInProdFollowPrefix=pIe});var xd=w(Pa=>{"use strict";Object.defineProperty(Pa,"__esModule",{value:!0});Pa.defaultGrammarValidatorErrorProvider=Pa.defaultGrammarResolverErrorProvider=Pa.defaultParserErrorProvider=void 0;var ef=LA(),dIe=Gt(),eo=Gt(),Wv=Cn(),jj=vd();Pa.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,ef.hasTokenLabel)(e),o=s?"--> "+(0,ef.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,eo.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,eo.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,eo.map)(c,function(h){return"["+(0,eo.map)(h,function(p){return(0,ef.tokenLabel)(p)}).join(", ")+"]"}),g=(0,eo.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: `+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,Xs.first)(t).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Xs.map)(e,function(u){return"["+(0,Xs.map)(u,function(g){return(0,jg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ba.defaultParserErrorProvider);Ba.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+r.name+"<-";return t}};Ba.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Rv.Terminal?u.terminalType.name:u instanceof Rv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,Xs.first)(e),s=n.idx,o=(0,hj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,eo.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,eo.map)(e,function(u){return"["+(0,eo.map)(u,function(g){return(0,ef.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Pa.defaultParserErrorProvider);Pa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Pa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Wv.Terminal?u.terminalType.name:u instanceof Wv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,eo.first)(e),s=n.idx,o=(0,jj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` @@ -108,49 +108,49 @@ inside top level rule: ->`+r.name+"<-";return t}};Ba.defaultGrammarValidatorErro `+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. `)+`To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,eo.map)(r.prefixPath,function(n){return(0,ef.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix `+("in inside <"+r.topLevelRule.name+`> Rule, `)+("<"+e+`> may appears as a prefix path in all these alternatives. `)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,eo.map)(r.prefixPath,function(n){return(0,ef.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, `)+("<"+e+`> may appears as a prefix path in all these alternatives. `);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,hj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,jj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. `)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: `+(" inside <"+r.topLevelRule.name+`> Rule. - has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=xEe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=dIe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. `+("rule: <"+e+`> can be invoked from itself (directly or indirectly) `)+(`without consuming any Tokens. The grammar path that causes this is: `+i+` `)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Rv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Cj=w(vA=>{"use strict";var PEe=vA&&vA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(vA,"__esModule",{value:!0});vA.GastRefResolverVisitor=vA.resolveGrammar=void 0;var DEe=Hn(),pj=Gt(),kEe=Yg();function REe(r,e){var t=new dj(r,e);return t.resolveRefs(),t.errors}vA.resolveGrammar=REe;var dj=function(r){PEe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,pj.forEach)((0,pj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:DEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(kEe.GAstVisitor);vA.GastRefResolverVisitor=dj});var Ed=w(Nr=>{"use strict";var sc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var mj=VI(),Kt=Gt(),FEe=Dv(),kt=dn(),Ej=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(mj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Ej;var NEe=function(r){sc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,FEe.first)(o),this.found=!0}},e}(Ej);Nr.NextAfterTokenWalker=NEe;var md=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(mj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=md;var LEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManyWalker=LEe;var TEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManySepWalker=TEe;var OEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneWalker=OEe;var MEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneSepWalker=MEe;function Ij(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Ij(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(UEe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=KEe;function UEe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Id=w(_t=>{"use strict";var Bj=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),yj=Ed(),HEe=VI(),ty=Gg(),xA=dn(),GEe=Yg(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=_t.PROD_TYPE||(_t.PROD_TYPE={}));function YEe(r){if(r instanceof xA.Option)return oi.OPTION;if(r instanceof xA.Repetition)return oi.REPETITION;if(r instanceof xA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof xA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof xA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof xA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=YEe;function jEe(r,e,t,i,n,s){var o=bj(r,e,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=jEe;function qEe(r,e,t,i,n,s){var o=Sj(r,e,n,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=qEe;function JEe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Tv=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),br=Gt(),Do=Hn(),Ov=dd(),qg=Id(),_Ee=Ed(),_s=dn(),Mv=Yg();function ZEe(r,e,t,i,n){var s=er.map(r,function(h){return $Ee(h,i)}),o=er.map(r,function(h){return Kv(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return Rj(h,i)}),l=(0,br.map)(r,function(h){return Fj(h,e,i)}),c=Tj(r,e,i));var u=rIe(r,t,i),g=(0,br.map)(r,function(h){return Lj(h,i)}),f=(0,br.map)(r,function(h){return kj(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=ZEe;function $Ee(r,e){var t=new Dj;r.accept(t);var i=t.allProductions,n=er.groupBy(i,xj),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Ov.getProductionDslName)(l),g={message:c,type:Do.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=Pj(l);return f&&(g.parameter=f),g});return o}function xj(r){return(0,Ov.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+Pj(r)}zt.identifyProductionForDuplicates=xj;function Pj(r){return r instanceof _s.Terminal?r.terminalType.name:r instanceof _s.NonTerminal?r.nonTerminalName:""}var Dj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.OccurrenceValidationCollector=Dj;function kj(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:Do.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=kj;function eIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:Do.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=eIe;function Kv(r,e,t,i){i===void 0&&(i=[]);var n=[],s=yd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:Do.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),Kv(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=Kv;function yd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof _s.NonTerminal)e.push(t.referencedRule);else if(t instanceof _s.Alternative||t instanceof _s.Option||t instanceof _s.RepetitionMandatory||t instanceof _s.RepetitionMandatoryWithSeparator||t instanceof _s.RepetitionWithSeparator||t instanceof _s.Repetition)e=e.concat(yd(t.definition));else if(t instanceof _s.Alternation)e=er.flatten(er.map(t.definition,function(o){return yd(o.definition)}));else if(!(t instanceof _s.Terminal))throw Error("non exhaustive match");var i=(0,Ov.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(yd(s))}else return e}zt.getFirstNoneTerminal=yd;var Uv=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Mv.GAstVisitor);function Rj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,_Ee.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:Do.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=Rj;function Fj(r,e,t){var i=new Uv;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,qg.getLookaheadPathsForOr)(l,r,c,a),g=tIe(u,a,r,t),f=Oj(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=Fj;var Nj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.RepetionCollector=Nj;function Lj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:Do.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=Lj;function Tj(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new Nj;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,qg.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,qg.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:Do.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=Tj;function tIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,qg.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,qg.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:Do.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function Oj(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.validateGrammar=Jg.resolveGrammar=void 0;var Gv=Gt(),iIe=Cj(),nIe=Hv(),Mj=Cd();function sIe(r){r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarResolverErrorProvider});var e={};return(0,Gv.forEach)(r.rules,function(t){e[t.name]=t}),(0,iIe.resolveGrammar)(e,r.errMsgProvider)}Jg.resolveGrammar=sIe;function oIe(r){return r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarValidatorErrorProvider}),(0,nIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}Jg.validateGrammar=oIe});var Wg=w(mn=>{"use strict";var wd=mn&&mn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(mn,"__esModule",{value:!0});mn.EarlyExitException=mn.NotAllInputParsedException=mn.NoViableAltException=mn.MismatchedTokenException=mn.isRecognitionException=void 0;var aIe=Gt(),Uj="MismatchedTokenException",Hj="NoViableAltException",Gj="EarlyExitException",Yj="NotAllInputParsedException",jj=[Uj,Hj,Gj,Yj];Object.freeze(jj);function AIe(r){return(0,aIe.contains)(jj,r.name)}mn.isRecognitionException=AIe;var ry=function(r){wd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),lIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Uj,s}return e}(ry);mn.MismatchedTokenException=lIe;var cIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Hj,s}return e}(ry);mn.NoViableAltException=cIe;var uIe=function(r){wd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=Yj,n}return e}(ry);mn.NotAllInputParsedException=uIe;var gIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Gj,s}return e}(ry);mn.EarlyExitException=gIe});var jv=w(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.attemptInRepetitionRecovery=Mi.Recoverable=Mi.InRuleRecoveryException=Mi.IN_RULE_RECOVERY_EXCEPTION=Mi.EOF_FOLLOW_KEY=void 0;var iy=SA(),ls=Gt(),fIe=Wg(),hIe=kv(),pIe=Hn();Mi.EOF_FOLLOW_KEY={};Mi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Yv(r){this.name=Mi.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Mi.InRuleRecoveryException=Yv;Yv.prototype=Error.prototype;var dIe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ls.has)(e,"recoveryEnabled")?e.recoveryEnabled:pIe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=qj)},r.prototype.getTokenToInsert=function(e){var t=(0,iy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new fIe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,ls.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Yv("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ls.isEmpty)(t))return!1;var n=this.LA(1),s=(0,ls.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,ls.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,ls.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Mi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ls.map)(t,function(n,s){return s===0?Mi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,ls.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ls.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Mi.EOF_FOLLOW_KEY)return[iy.EOF];var t=e.ruleName+e.idxInCallingRule+hIe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,iy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,ls.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,ls.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ls.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Mi.Recoverable=dIe;function qj(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=iy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Mi.attemptInRepetitionRecovery=qj});var ny=w(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.LooksAhead=void 0;var Qa=Id(),Zs=Gt(),Jj=Hn(),ba=ny(),oc=dd(),mIe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Zs.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Jj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Zs.has)(e,"maxLookahead")?e.maxLookahead:Jj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Zs.isES2015MapSupported)()?new Map:[],(0,Zs.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,Zs.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,oc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Zs.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,oc.getProductionDslName)(g)+f,function(){var h=(0,Qa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,ba.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],ba.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,Zs.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_IDX,Qa.PROD_TYPE.REPETITION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,ba.OPTION_IDX,Qa.PROD_TYPE.OPTION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_SEP_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_SEP_IDX,Qa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Qa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ba.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Qa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Qa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,ba.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();sy.LooksAhead=mIe});var zj=w(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.addNoneTerminalToCst=ko.addTerminalToCst=ko.setNodeLocationFull=ko.setNodeLocationOnlyOffset=void 0;function EIe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.defineNameProp=PA.functionName=PA.classNameFromInstance=void 0;var BIe=Gt();function QIe(r){return Xj(r.constructor)}PA.classNameFromInstance=QIe;var Vj="name";function Xj(r){var e=r.name;return e||"anonymous"}PA.functionName=Xj;function bIe(r,e){var t=Object.getOwnPropertyDescriptor(r,Vj);return(0,BIe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,Vj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}PA.defineNameProp=bIe});var tq=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.validateRedundantMethods=bi.validateMissingCstMethods=bi.validateVisitor=bi.CstVisitorDefinitionError=bi.createBaseVisitorConstructorWithDefaults=bi.createBaseSemanticVisitorConstructor=bi.defaultVisit=void 0;var cs=Gt(),Bd=qv();function _j(r,e){for(var t=(0,cs.keys)(r),i=t.length,n=0;n: +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Wv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Wj=w(TA=>{"use strict";var CIe=TA&&TA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(TA,"__esModule",{value:!0});TA.GastRefResolverVisitor=TA.resolveGrammar=void 0;var mIe=Yn(),qj=Gt(),EIe=$g();function IIe(r,e){var t=new Jj(r,e);return t.resolveRefs(),t.errors}TA.resolveGrammar=IIe;var Jj=function(r){CIe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,qj.forEach)((0,qj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:mIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(EIe.GAstVisitor);TA.GastRefResolverVisitor=Jj});var Dd=w(Nr=>{"use strict";var mc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var zj=Ay(),Ut=Gt(),yIe=qv(),kt=Cn(),Vj=function(r){mc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Ut.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Ut.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Ut.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(zj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Vj;var wIe=function(r){mc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,yIe.first)(o),this.found=!0}},e}(Vj);Nr.NextAfterTokenWalker=wIe;var Pd=function(r){mc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(zj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=Pd;var BIe=function(r){mc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(Pd);Nr.NextTerminalAfterManyWalker=BIe;var QIe=function(r){mc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(Pd);Nr.NextTerminalAfterManySepWalker=QIe;var bIe=function(r){mc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(Pd);Nr.NextTerminalAfterAtLeastOneWalker=bIe;var SIe=function(r){mc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(Pd);Nr.NextTerminalAfterAtLeastOneSepWalker=SIe;function Xj(r,e,t){t===void 0&&(t=[]),t=(0,Ut.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Ut.drop)(r,n+1))}function o(c){var u=Xj(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(xIe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=vIe;function xIe(r,e,t,i){var n=(0,Ut.cloneArr)(t);n.push(r.name);var s=(0,Ut.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var kd=w(Zt=>{"use strict";var $j=Zt&&Zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Zt,"__esModule",{value:!0});Zt.areTokenCategoriesNotUsed=Zt.isStrictPrefixOfPath=Zt.containsPath=Zt.getLookaheadPathsForOptionalProd=Zt.getLookaheadPathsForOr=Zt.lookAheadSequenceFromAlternatives=Zt.buildSingleAlternativeLookaheadFunction=Zt.buildAlternativesLookAheadFunc=Zt.buildLookaheadFuncForOptionalProd=Zt.buildLookaheadFuncForOr=Zt.getProdType=Zt.PROD_TYPE=void 0;var sr=Gt(),Zj=Dd(),PIe=Ay(),hy=_g(),OA=Cn(),DIe=$g(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=Zt.PROD_TYPE||(Zt.PROD_TYPE={}));function kIe(r){if(r instanceof OA.Option)return oi.OPTION;if(r instanceof OA.Repetition)return oi.REPETITION;if(r instanceof OA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof OA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof OA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof OA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}Zt.getProdType=kIe;function RIe(r,e,t,i,n,s){var o=tq(r,e,t),a=Xv(o)?hy.tokenStructuredMatcherNoCategories:hy.tokenStructuredMatcher;return s(o,i,a,n)}Zt.buildLookaheadFuncForOr=RIe;function FIe(r,e,t,i,n,s){var o=rq(r,e,n,t),a=Xv(o)?hy.tokenStructuredMatcherNoCategories:hy.tokenStructuredMatcher;return s(o[0],a,i)}Zt.buildLookaheadFuncForOptionalProd=FIe;function NIe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Zv=Vt&&Vt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Vt,"__esModule",{value:!0});Vt.checkPrefixAlternativesAmbiguities=Vt.validateSomeNonEmptyLookaheadPath=Vt.validateTooManyAlts=Vt.RepetionCollector=Vt.validateAmbiguousAlternationAlternatives=Vt.validateEmptyOrAlternative=Vt.getFirstNoneTerminal=Vt.validateNoLeftRecursion=Vt.validateRuleIsOverridden=Vt.validateRuleDoesNotAlreadyExist=Vt.OccurrenceValidationCollector=Vt.identifyProductionForDuplicates=Vt.validateGrammar=void 0;var er=Gt(),br=Gt(),No=Yn(),_v=vd(),tf=kd(),UIe=Dd(),to=Cn(),$v=$g();function KIe(r,e,t,i,n){var s=er.map(r,function(h){return HIe(h,i)}),o=er.map(r,function(h){return ex(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return Aq(h,i)}),l=(0,br.map)(r,function(h){return lq(h,e,i)}),c=gq(r,e,i));var u=jIe(r,t,i),g=(0,br.map)(r,function(h){return uq(h,i)}),f=(0,br.map)(r,function(h){return aq(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}Vt.validateGrammar=KIe;function HIe(r,e){var t=new oq;r.accept(t);var i=t.allProductions,n=er.groupBy(i,nq),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,_v.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=sq(l);return f&&(g.parameter=f),g});return o}function nq(r){return(0,_v.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+sq(r)}Vt.identifyProductionForDuplicates=nq;function sq(r){return r instanceof to.Terminal?r.terminalType.name:r instanceof to.NonTerminal?r.nonTerminalName:""}var oq=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}($v.GAstVisitor);Vt.OccurrenceValidationCollector=oq;function aq(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}Vt.validateRuleDoesNotAlreadyExist=aq;function GIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}Vt.validateRuleIsOverridden=GIe;function ex(r,e,t,i){i===void 0&&(i=[]);var n=[],s=Rd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),ex(r,u,t,g)});return n.concat(er.flatten(c))}Vt.validateNoLeftRecursion=ex;function Rd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof to.NonTerminal)e.push(t.referencedRule);else if(t instanceof to.Alternative||t instanceof to.Option||t instanceof to.RepetitionMandatory||t instanceof to.RepetitionMandatoryWithSeparator||t instanceof to.RepetitionWithSeparator||t instanceof to.Repetition)e=e.concat(Rd(t.definition));else if(t instanceof to.Alternation)e=er.flatten(er.map(t.definition,function(o){return Rd(o.definition)}));else if(!(t instanceof to.Terminal))throw Error("non exhaustive match");var i=(0,_v.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(Rd(s))}else return e}Vt.getFirstNoneTerminal=Rd;var tx=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}($v.GAstVisitor);function Aq(r,e){var t=new tx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,UIe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}Vt.validateEmptyOrAlternative=Aq;function lq(r,e,t){var i=new tx;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,tf.getLookaheadPathsForOr)(l,r,c,a),g=YIe(u,a,r,t),f=fq(u,a,r,t);return o.concat(g,f)},[]);return s}Vt.validateAmbiguousAlternationAlternatives=lq;var cq=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}($v.GAstVisitor);Vt.RepetionCollector=cq;function uq(r,e){var t=new tx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}Vt.validateTooManyAlts=uq;function gq(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new cq;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,tf.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,tf.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Vt.validateSomeNonEmptyLookaheadPath=gq;function YIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,tf.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,tf.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function fq(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(rf,"__esModule",{value:!0});rf.validateGrammar=rf.resolveGrammar=void 0;var ix=Gt(),qIe=Wj(),JIe=rx(),hq=xd();function WIe(r){r=(0,ix.defaults)(r,{errMsgProvider:hq.defaultGrammarResolverErrorProvider});var e={};return(0,ix.forEach)(r.rules,function(t){e[t.name]=t}),(0,qIe.resolveGrammar)(e,r.errMsgProvider)}rf.resolveGrammar=WIe;function zIe(r){return r=(0,ix.defaults)(r,{errMsgProvider:hq.defaultGrammarValidatorErrorProvider}),(0,JIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}rf.validateGrammar=zIe});var nf=w(En=>{"use strict";var Fd=En&&En.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(En,"__esModule",{value:!0});En.EarlyExitException=En.NotAllInputParsedException=En.NoViableAltException=En.MismatchedTokenException=En.isRecognitionException=void 0;var VIe=Gt(),dq="MismatchedTokenException",Cq="NoViableAltException",mq="EarlyExitException",Eq="NotAllInputParsedException",Iq=[dq,Cq,mq,Eq];Object.freeze(Iq);function XIe(r){return(0,VIe.contains)(Iq,r.name)}En.isRecognitionException=XIe;var py=function(r){Fd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),ZIe=function(r){Fd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=dq,s}return e}(py);En.MismatchedTokenException=ZIe;var _Ie=function(r){Fd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Cq,s}return e}(py);En.NoViableAltException=_Ie;var $Ie=function(r){Fd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=Eq,n}return e}(py);En.NotAllInputParsedException=$Ie;var eye=function(r){Fd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=mq,s}return e}(py);En.EarlyExitException=eye});var sx=w(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.attemptInRepetitionRecovery=Ui.Recoverable=Ui.InRuleRecoveryException=Ui.IN_RULE_RECOVERY_EXCEPTION=Ui.EOF_FOLLOW_KEY=void 0;var dy=LA(),hs=Gt(),tye=nf(),rye=Jv(),iye=Yn();Ui.EOF_FOLLOW_KEY={};Ui.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function nx(r){this.name=Ui.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ui.InRuleRecoveryException=nx;nx.prototype=Error.prototype;var nye=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,hs.has)(e,"recoveryEnabled")?e.recoveryEnabled:iye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=yq)},r.prototype.getTokenToInsert=function(e){var t=(0,dy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new tye.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,hs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new nx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,hs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,hs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,hs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,hs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ui.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,hs.map)(t,function(n,s){return s===0?Ui.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,hs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,hs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ui.EOF_FOLLOW_KEY)return[dy.EOF];var t=e.ruleName+e.idxInCallingRule+rye.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,dy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,hs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,hs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,hs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ui.Recoverable=nye;function yq(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=dy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ui.attemptInRepetitionRecovery=yq});var Cy=w(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.getKeyForAutomaticLookahead=Jt.AT_LEAST_ONE_SEP_IDX=Jt.MANY_SEP_IDX=Jt.AT_LEAST_ONE_IDX=Jt.MANY_IDX=Jt.OPTION_IDX=Jt.OR_IDX=Jt.BITS_FOR_ALT_IDX=Jt.BITS_FOR_RULE_IDX=Jt.BITS_FOR_OCCURRENCE_IDX=Jt.BITS_FOR_METHOD_TYPE=void 0;Jt.BITS_FOR_METHOD_TYPE=4;Jt.BITS_FOR_OCCURRENCE_IDX=8;Jt.BITS_FOR_RULE_IDX=12;Jt.BITS_FOR_ALT_IDX=8;Jt.OR_IDX=1<{"use strict";Object.defineProperty(my,"__esModule",{value:!0});my.LooksAhead=void 0;var Da=kd(),ro=Gt(),wq=Yn(),ka=Cy(),Ec=vd(),oye=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,ro.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:wq.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,ro.has)(e,"maxLookahead")?e.maxLookahead:wq.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,ro.isES2015MapSupported)()?new Map:[],(0,ro.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,ro.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Ec.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,ro.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,Ec.getProductionDslName)(g)+f,function(){var h=(0,Da.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,ka.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],ka.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,ro.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,ka.MANY_IDX,Da.PROD_TYPE.REPETITION,g.maxLookahead,(0,Ec.getProductionDslName)(g))}),(0,ro.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,ka.OPTION_IDX,Da.PROD_TYPE.OPTION,g.maxLookahead,(0,Ec.getProductionDslName)(g))}),(0,ro.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,ka.AT_LEAST_ONE_IDX,Da.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Ec.getProductionDslName)(g))}),(0,ro.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,ka.AT_LEAST_ONE_SEP_IDX,Da.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Ec.getProductionDslName)(g))}),(0,ro.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,ka.MANY_SEP_IDX,Da.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Ec.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Da.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ka.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Da.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Da.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,ka.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();my.LooksAhead=oye});var Qq=w(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});Lo.addNoneTerminalToCst=Lo.addTerminalToCst=Lo.setNodeLocationFull=Lo.setNodeLocationOnlyOffset=void 0;function aye(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(MA,"__esModule",{value:!0});MA.defineNameProp=MA.functionName=MA.classNameFromInstance=void 0;var uye=Gt();function gye(r){return Sq(r.constructor)}MA.classNameFromInstance=gye;var bq="name";function Sq(r){var e=r.name;return e||"anonymous"}MA.functionName=Sq;function fye(r,e){var t=Object.getOwnPropertyDescriptor(r,bq);return(0,uye.isUndefined)(t)||t.configurable?(Object.defineProperty(r,bq,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}MA.defineNameProp=fye});var kq=w(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.validateRedundantMethods=Si.validateMissingCstMethods=Si.validateVisitor=Si.CstVisitorDefinitionError=Si.createBaseVisitorConstructorWithDefaults=Si.createBaseSemanticVisitorConstructor=Si.defaultVisit=void 0;var ps=Gt(),Nd=ox();function vq(r,e){for(var t=(0,ps.keys)(r),i=t.length,n=0;n: `+(""+s.join(` `).replace(/\n/g,` - `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}bi.createBaseSemanticVisitorConstructor=SIe;function vIe(r,e,t){var i=function(){};(0,Bd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,cs.forEach)(e,function(s){n[s]=_j}),i.prototype=n,i.prototype.constructor=i,i}bi.createBaseVisitorConstructorWithDefaults=vIe;var Jv;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(Jv=bi.CstVisitorDefinitionError||(bi.CstVisitorDefinitionError={}));function Zj(r,e){var t=$j(r,e),i=eq(r,e);return t.concat(i)}bi.validateVisitor=Zj;function $j(r,e){var t=(0,cs.map)(e,function(i){if(!(0,cs.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+" CST Visitor.",type:Jv.MISSING_METHOD,methodName:i}});return(0,cs.compact)(t)}bi.validateMissingCstMethods=$j;var xIe=["constructor","visit","validateVisitor"];function eq(r,e){var t=[];for(var i in r)(0,cs.isFunction)(r[i])&&!(0,cs.contains)(xIe,i)&&!(0,cs.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+` CST Visitor + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}Si.createBaseSemanticVisitorConstructor=hye;function pye(r,e,t){var i=function(){};(0,Nd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,ps.forEach)(e,function(s){n[s]=vq}),i.prototype=n,i.prototype.constructor=i,i}Si.createBaseVisitorConstructorWithDefaults=pye;var ax;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(ax=Si.CstVisitorDefinitionError||(Si.CstVisitorDefinitionError={}));function xq(r,e){var t=Pq(r,e),i=Dq(r,e);return t.concat(i)}Si.validateVisitor=xq;function Pq(r,e){var t=(0,ps.map)(e,function(i){if(!(0,ps.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Nd.functionName)(r.constructor)+" CST Visitor.",type:ax.MISSING_METHOD,methodName:i}});return(0,ps.compact)(t)}Si.validateMissingCstMethods=Pq;var dye=["constructor","visit","validateVisitor"];function Dq(r,e){var t=[];for(var i in r)(0,ps.isFunction)(r[i])&&!(0,ps.contains)(dye,i)&&!(0,ps.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Nd.functionName)(r.constructor)+` CST Visitor There is no Grammar Rule corresponding to this method's name. -`,type:Jv.REDUNDANT_METHOD,methodName:i});return t}bi.validateRedundantMethods=eq});var iq=w(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.TreeBuilder=void 0;var zg=zj(),Zr=Gt(),rq=tq(),PIe=Hn(),DIe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Zr.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:PIe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Zr.NOOP,this.cstFinallyStateUpdate=Zr.NOOP,this.cstPostTerminal=Zr.NOOP,this.cstPostNonTerminal=Zr.NOOP,this.cstPostRule=Zr.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationFull,this.setNodeLocationFromNode=zg.setNodeLocationFull,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=zg.setNodeLocationOnlyOffset,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=Zr.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,Zr.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,rq.createBaseSemanticVisitorConstructor)(this.className,(0,Zr.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Zr.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,rq.createBaseVisitorConstructorWithDefaults)(this.className,(0,Zr.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();oy.TreeBuilder=DIe});var sq=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.LexerAdapter=void 0;var nq=Hn(),kIe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):nq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?nq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();ay.LexerAdapter=kIe});var aq=w(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RecognizerApi=void 0;var oq=Gt(),RIe=Wg(),Wv=Hn(),FIe=Cd(),NIe=Hv(),LIe=dn(),TIe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG),(0,oq.contains)(this.definedRulesNames,e)){var n=FIe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Wv.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,NIe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,RIe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,LIe.serializeGrammar)((0,oq.values)(this.gastProductionsCache))},r}();Ay.RecognizerApi=TIe});var uq=w(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RecognizerEngine=void 0;var Pr=Gt(),Gn=ny(),ly=Wg(),Aq=Id(),Vg=Ed(),lq=Hn(),OIe=jv(),cq=SA(),Qd=Gg(),MIe=qv(),KIe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,MIe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Qd.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. +`,type:ax.REDUNDANT_METHOD,methodName:i});return t}Si.validateRedundantMethods=Dq});var Fq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.TreeBuilder=void 0;var sf=Qq(),_r=Gt(),Rq=kq(),Cye=Yn(),mye=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,_r.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Cye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=_r.NOOP,this.cstFinallyStateUpdate=_r.NOOP,this.cstPostTerminal=_r.NOOP,this.cstPostNonTerminal=_r.NOOP,this.cstPostRule=_r.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=sf.setNodeLocationFull,this.setNodeLocationFromNode=sf.setNodeLocationFull,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=sf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=sf.setNodeLocationOnlyOffset,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=_r.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,sf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,sf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,_r.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Rq.createBaseSemanticVisitorConstructor)(this.className,(0,_r.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,_r.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Rq.createBaseVisitorConstructorWithDefaults)(this.className,(0,_r.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Ey.TreeBuilder=mye});var Lq=w(Iy=>{"use strict";Object.defineProperty(Iy,"__esModule",{value:!0});Iy.LexerAdapter=void 0;var Nq=Yn(),Eye=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Nq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?Nq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();Iy.LexerAdapter=Eye});var Oq=w(yy=>{"use strict";Object.defineProperty(yy,"__esModule",{value:!0});yy.RecognizerApi=void 0;var Tq=Gt(),Iye=nf(),Ax=Yn(),yye=xd(),wye=rx(),Bye=Cn(),Qye=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Ax.DEFAULT_RULE_CONFIG),(0,Tq.contains)(this.definedRulesNames,e)){var n=yye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Ax.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Ax.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,wye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,Iye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,Bye.serializeGrammar)((0,Tq.values)(this.gastProductionsCache))},r}();yy.RecognizerApi=Qye});var Hq=w(By=>{"use strict";Object.defineProperty(By,"__esModule",{value:!0});By.RecognizerEngine=void 0;var Pr=Gt(),jn=Cy(),wy=nf(),Mq=kd(),of=Dd(),Uq=Yn(),bye=sx(),Kq=LA(),Ld=_g(),Sye=ox(),vye=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,Sye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Ld.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Qd.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=cq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Qd.tokenStructuredMatcherNoCategories:Qd.tokenStructuredMatcher,(0,Qd.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:lq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:lq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ly.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,ly.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ly.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===OIe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),cq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();cy.RecognizerEngine=KIe});var fq=w(uy=>{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.ErrorHandler=void 0;var zv=Wg(),Vv=Gt(),gq=Id(),UIe=Hn(),HIe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,Vv.has)(e,"errorMessageProvider")?e.errorMessageProvider:UIe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,zv.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,Vv.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,Vv.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,gq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new zv.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,gq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new zv.NoViableAltException(c,this.LA(1),l))},r}();uy.ErrorHandler=HIe});var dq=w(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.ContentAssist=void 0;var hq=Ed(),pq=Gt(),GIe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,pq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,hq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,pq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new hq.NextAfterTokenWalker(n,e).startWalking();return s},r}();gy.ContentAssist=GIe});var Qq=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.GastRecorder=void 0;var En=Gt(),Ro=dn(),YIe=gd(),Iq=Gg(),yq=SA(),jIe=Hn(),qIe=ny(),hy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(hy);var Cq=!0,mq=Math.pow(2,qIe.BITS_FOR_OCCURRENCE_IDX)-1,wq=(0,yq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:YIe.Lexer.NA});(0,Iq.augmentTokenTypes)([wq]);var Bq=(0,yq.createTokenInstance)(wq,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Bq);var JIe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},WIe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return jIe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Ro.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Ld.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Kq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Ld.tokenStructuredMatcherNoCategories:Ld.tokenStructuredMatcher,(0,Ld.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:Uq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:Uq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(jn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new wy.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,wy.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new wy.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===bye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Kq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();By.RecognizerEngine=vye});var Yq=w(Qy=>{"use strict";Object.defineProperty(Qy,"__esModule",{value:!0});Qy.ErrorHandler=void 0;var lx=nf(),cx=Gt(),Gq=kd(),xye=Yn(),Pye=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,cx.has)(e,"errorMessageProvider")?e.errorMessageProvider:xye.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,lx.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,cx.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,cx.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,Gq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new lx.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,Gq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new lx.NoViableAltException(c,this.LA(1),l))},r}();Qy.ErrorHandler=Pye});var Jq=w(by=>{"use strict";Object.defineProperty(by,"__esModule",{value:!0});by.ContentAssist=void 0;var jq=Dd(),qq=Gt(),Dye=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,qq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,jq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,qq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new jq.NextAfterTokenWalker(n,e).startWalking();return s},r}();by.ContentAssist=Dye});var eJ=w(xy=>{"use strict";Object.defineProperty(xy,"__esModule",{value:!0});xy.GastRecorder=void 0;var In=Gt(),To=Cn(),kye=Bd(),Xq=_g(),Zq=LA(),Rye=Yn(),Fye=Cy(),vy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(vy);var Wq=!0,zq=Math.pow(2,Fye.BITS_FOR_OCCURRENCE_IDX)-1,_q=(0,Zq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:kye.Lexer.NA});(0,Xq.augmentTokenTypes)([_q]);var $q=(0,Zq.createTokenInstance)(_q,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze($q);var Nye={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Lye=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return Rye.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new To.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return bd.call(this,Ro.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatoryWithSeparator,t,e,Cq)},r.prototype.manyInternalRecord=function(e,t){bd.call(this,Ro.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionWithSeparator,t,e,Cq)},r.prototype.orInternalRecord=function(e,t){return zIe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(fy(t),!e||(0,En.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=e.ruleName,a=new Ro.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?JIe:hy},r.prototype.consumeInternalRecord=function(e,t,i){if(fy(t),!(0,Iq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=new Ro.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),Bq},r}();py.GastRecorder=WIe;function bd(r,e,t,i){i===void 0&&(i=!1),fy(t);var n=(0,En.peek)(this.recordingProdStack),s=(0,En.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,En.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),hy}function zIe(r,e){var t=this;fy(e);var i=(0,En.peek)(this.recordingProdStack),n=(0,En.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Ro.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,En.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,En.some)(s,function(l){return(0,En.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,En.forEach)(s,function(l){var c=new Ro.Alternative({definition:[]});o.definition.push(c),(0,En.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,En.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),hy}function Eq(r){return r===0?"":""+r}function fy(r){if(r<0||r>mq){var e=new Error("Invalid DSL Method idx value: <"+r+`> - `+("Idx value must be a none negative value smaller than "+(mq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Sq=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.PerformanceTracer=void 0;var bq=Gt(),VIe=Hn(),XIe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,bq.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=VIe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,bq.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();dy.PerformanceTracer=XIe});var vq=w(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.applyMixins=void 0;function _Ie(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Cy.applyMixins=_Ie});var Hn=w(dr=>{"use strict";var Dq=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var Xi=Gt(),ZIe=fj(),xq=SA(),kq=Cd(),Pq=Kj(),$Ie=jv(),eye=Wj(),tye=iq(),rye=sq(),iye=aq(),nye=uq(),sye=fq(),oye=dq(),aye=Qq(),Aye=Sq(),lye=vq();dr.END_OF_FILE=(0,xq.createTokenInstance)(xq.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:kq.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var cye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(cye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function uye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=uye;var my=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,Xi.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return Td.call(this,To.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){Td.call(this,To.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){Td.call(this,To.RepetitionMandatoryWithSeparator,t,e,Wq)},r.prototype.manyInternalRecord=function(e,t){Td.call(this,To.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){Td.call(this,To.RepetitionWithSeparator,t,e,Wq)},r.prototype.orInternalRecord=function(e,t){return Tye.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(Sy(t),!e||(0,In.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=e.ruleName,a=new To.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Nye:vy},r.prototype.consumeInternalRecord=function(e,t,i){if(Sy(t),!(0,Xq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=new To.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),$q},r}();xy.GastRecorder=Lye;function Td(r,e,t,i){i===void 0&&(i=!1),Sy(t);var n=(0,In.peek)(this.recordingProdStack),s=(0,In.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,In.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),vy}function Tye(r,e){var t=this;Sy(e);var i=(0,In.peek)(this.recordingProdStack),n=(0,In.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new To.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,In.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,In.some)(s,function(l){return(0,In.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,In.forEach)(s,function(l){var c=new To.Alternative({definition:[]});o.definition.push(c),(0,In.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,In.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),vy}function Vq(r){return r===0?"":""+r}function Sy(r){if(r<0||r>zq){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(zq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var rJ=w(Py=>{"use strict";Object.defineProperty(Py,"__esModule",{value:!0});Py.PerformanceTracer=void 0;var tJ=Gt(),Oye=Yn(),Mye=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,tJ.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Oye.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,tJ.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();Py.PerformanceTracer=Mye});var iJ=w(Dy=>{"use strict";Object.defineProperty(Dy,"__esModule",{value:!0});Dy.applyMixins=void 0;function Uye(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Dy.applyMixins=Uye});var Yn=w(dr=>{"use strict";var oJ=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var $i=Gt(),Kye=Yj(),nJ=LA(),aJ=xd(),sJ=pq(),Hye=sx(),Gye=Bq(),Yye=Fq(),jye=Lq(),qye=Oq(),Jye=Hq(),Wye=Yq(),zye=Jq(),Vye=eJ(),Xye=rJ(),Zye=iJ();dr.END_OF_FILE=(0,nJ.createTokenInstance)(nJ.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:aJ.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var _ye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(_ye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function $ye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=$ye;var ky=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,$i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Xi.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Xi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Xi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,Pq.resolveGrammar)({rules:(0,Xi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Xi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,Pq.validateGrammar)({rules:(0,Xi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Xi.values)(e.tokensMap),errMsgProvider:kq.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Xi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,ZIe.computeAllProdsFollows)((0,Xi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Xi.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Xi.isEmpty)(e.definitionErrors))throw t=(0,Xi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + For further details.`);this.skipValidations=(0,$i.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,$i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,$i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,sJ.resolveGrammar)({rules:(0,$i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,$i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,sJ.validateGrammar)({rules:(0,$i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,$i.values)(e.tokensMap),errMsgProvider:aJ.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,$i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,Kye.computeAllProdsFollows)((0,$i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,$i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,$i.isEmpty)(e.definitionErrors))throw t=(0,$i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: `+t.join(` ------------------------------- -`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=my;(0,lye.applyMixins)(my,[$Ie.Recoverable,eye.LooksAhead,tye.TreeBuilder,rye.LexerAdapter,nye.RecognizerEngine,iye.RecognizerApi,sye.ErrorHandler,oye.ContentAssist,aye.GastRecorder,Aye.PerformanceTracer]);var gye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(my);dr.CstParser=gye;var fye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(my);dr.EmbeddedActionsParser=fye});var Fq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.createSyntaxDiagramsCode=void 0;var Rq=pv();function hye(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/diagrams.css":s,a=` +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=ky;(0,Zye.applyMixins)(ky,[Hye.Recoverable,Gye.LooksAhead,Yye.TreeBuilder,jye.LexerAdapter,Jye.RecognizerEngine,qye.RecognizerApi,Wye.ErrorHandler,zye.ContentAssist,Vye.GastRecorder,Xye.PerformanceTracer]);var ewe=function(r){oJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,$i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(ky);dr.CstParser=ewe;var twe=function(r){oJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,$i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(ky);dr.EmbeddedActionsParser=twe});var lJ=w(Ry=>{"use strict";Object.defineProperty(Ry,"__esModule",{value:!0});Ry.createSyntaxDiagramsCode=void 0;var AJ=Dv();function rwe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+AJ.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+AJ.VERSION+"/diagrams/diagrams.css":s,a=` @@ -178,62 +178,62 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis var diagramsDiv = document.getElementById("diagrams"); main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv); <\/script> -`;return a+l+c+u+g+f}Ey.createSyntaxDiagramsCode=hye});var Tq=w(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.Parser=We.createSyntaxDiagramsCode=We.clearCache=We.GAstVisitor=We.serializeProduction=We.serializeGrammar=We.Terminal=We.Rule=We.RepetitionWithSeparator=We.RepetitionMandatoryWithSeparator=We.RepetitionMandatory=We.Repetition=We.Option=We.NonTerminal=We.Alternative=We.Alternation=We.defaultLexerErrorProvider=We.NoViableAltException=We.NotAllInputParsedException=We.MismatchedTokenException=We.isRecognitionException=We.EarlyExitException=We.defaultParserErrorProvider=We.tokenName=We.tokenMatcher=We.tokenLabel=We.EOF=We.createTokenInstance=We.createToken=We.LexerDefinitionErrorType=We.Lexer=We.EMPTY_ALT=We.ParserDefinitionErrorType=We.EmbeddedActionsParser=We.CstParser=We.VERSION=void 0;var pye=pv();Object.defineProperty(We,"VERSION",{enumerable:!0,get:function(){return pye.VERSION}});var Iy=Hn();Object.defineProperty(We,"CstParser",{enumerable:!0,get:function(){return Iy.CstParser}});Object.defineProperty(We,"EmbeddedActionsParser",{enumerable:!0,get:function(){return Iy.EmbeddedActionsParser}});Object.defineProperty(We,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return Iy.ParserDefinitionErrorType}});Object.defineProperty(We,"EMPTY_ALT",{enumerable:!0,get:function(){return Iy.EMPTY_ALT}});var Nq=gd();Object.defineProperty(We,"Lexer",{enumerable:!0,get:function(){return Nq.Lexer}});Object.defineProperty(We,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return Nq.LexerDefinitionErrorType}});var Xg=SA();Object.defineProperty(We,"createToken",{enumerable:!0,get:function(){return Xg.createToken}});Object.defineProperty(We,"createTokenInstance",{enumerable:!0,get:function(){return Xg.createTokenInstance}});Object.defineProperty(We,"EOF",{enumerable:!0,get:function(){return Xg.EOF}});Object.defineProperty(We,"tokenLabel",{enumerable:!0,get:function(){return Xg.tokenLabel}});Object.defineProperty(We,"tokenMatcher",{enumerable:!0,get:function(){return Xg.tokenMatcher}});Object.defineProperty(We,"tokenName",{enumerable:!0,get:function(){return Xg.tokenName}});var dye=Cd();Object.defineProperty(We,"defaultParserErrorProvider",{enumerable:!0,get:function(){return dye.defaultParserErrorProvider}});var Sd=Wg();Object.defineProperty(We,"EarlyExitException",{enumerable:!0,get:function(){return Sd.EarlyExitException}});Object.defineProperty(We,"isRecognitionException",{enumerable:!0,get:function(){return Sd.isRecognitionException}});Object.defineProperty(We,"MismatchedTokenException",{enumerable:!0,get:function(){return Sd.MismatchedTokenException}});Object.defineProperty(We,"NotAllInputParsedException",{enumerable:!0,get:function(){return Sd.NotAllInputParsedException}});Object.defineProperty(We,"NoViableAltException",{enumerable:!0,get:function(){return Sd.NoViableAltException}});var Cye=bv();Object.defineProperty(We,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return Cye.defaultLexerErrorProvider}});var Fo=dn();Object.defineProperty(We,"Alternation",{enumerable:!0,get:function(){return Fo.Alternation}});Object.defineProperty(We,"Alternative",{enumerable:!0,get:function(){return Fo.Alternative}});Object.defineProperty(We,"NonTerminal",{enumerable:!0,get:function(){return Fo.NonTerminal}});Object.defineProperty(We,"Option",{enumerable:!0,get:function(){return Fo.Option}});Object.defineProperty(We,"Repetition",{enumerable:!0,get:function(){return Fo.Repetition}});Object.defineProperty(We,"RepetitionMandatory",{enumerable:!0,get:function(){return Fo.RepetitionMandatory}});Object.defineProperty(We,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return Fo.RepetitionMandatoryWithSeparator}});Object.defineProperty(We,"RepetitionWithSeparator",{enumerable:!0,get:function(){return Fo.RepetitionWithSeparator}});Object.defineProperty(We,"Rule",{enumerable:!0,get:function(){return Fo.Rule}});Object.defineProperty(We,"Terminal",{enumerable:!0,get:function(){return Fo.Terminal}});var Lq=dn();Object.defineProperty(We,"serializeGrammar",{enumerable:!0,get:function(){return Lq.serializeGrammar}});Object.defineProperty(We,"serializeProduction",{enumerable:!0,get:function(){return Lq.serializeProduction}});var mye=Yg();Object.defineProperty(We,"GAstVisitor",{enumerable:!0,get:function(){return mye.GAstVisitor}});function Eye(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. +`;return a+l+c+u+g+f}Ry.createSyntaxDiagramsCode=rwe});var gJ=w(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.Parser=We.createSyntaxDiagramsCode=We.clearCache=We.GAstVisitor=We.serializeProduction=We.serializeGrammar=We.Terminal=We.Rule=We.RepetitionWithSeparator=We.RepetitionMandatoryWithSeparator=We.RepetitionMandatory=We.Repetition=We.Option=We.NonTerminal=We.Alternative=We.Alternation=We.defaultLexerErrorProvider=We.NoViableAltException=We.NotAllInputParsedException=We.MismatchedTokenException=We.isRecognitionException=We.EarlyExitException=We.defaultParserErrorProvider=We.tokenName=We.tokenMatcher=We.tokenLabel=We.EOF=We.createTokenInstance=We.createToken=We.LexerDefinitionErrorType=We.Lexer=We.EMPTY_ALT=We.ParserDefinitionErrorType=We.EmbeddedActionsParser=We.CstParser=We.VERSION=void 0;var iwe=Dv();Object.defineProperty(We,"VERSION",{enumerable:!0,get:function(){return iwe.VERSION}});var Fy=Yn();Object.defineProperty(We,"CstParser",{enumerable:!0,get:function(){return Fy.CstParser}});Object.defineProperty(We,"EmbeddedActionsParser",{enumerable:!0,get:function(){return Fy.EmbeddedActionsParser}});Object.defineProperty(We,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return Fy.ParserDefinitionErrorType}});Object.defineProperty(We,"EMPTY_ALT",{enumerable:!0,get:function(){return Fy.EMPTY_ALT}});var cJ=Bd();Object.defineProperty(We,"Lexer",{enumerable:!0,get:function(){return cJ.Lexer}});Object.defineProperty(We,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return cJ.LexerDefinitionErrorType}});var af=LA();Object.defineProperty(We,"createToken",{enumerable:!0,get:function(){return af.createToken}});Object.defineProperty(We,"createTokenInstance",{enumerable:!0,get:function(){return af.createTokenInstance}});Object.defineProperty(We,"EOF",{enumerable:!0,get:function(){return af.EOF}});Object.defineProperty(We,"tokenLabel",{enumerable:!0,get:function(){return af.tokenLabel}});Object.defineProperty(We,"tokenMatcher",{enumerable:!0,get:function(){return af.tokenMatcher}});Object.defineProperty(We,"tokenName",{enumerable:!0,get:function(){return af.tokenName}});var nwe=xd();Object.defineProperty(We,"defaultParserErrorProvider",{enumerable:!0,get:function(){return nwe.defaultParserErrorProvider}});var Od=nf();Object.defineProperty(We,"EarlyExitException",{enumerable:!0,get:function(){return Od.EarlyExitException}});Object.defineProperty(We,"isRecognitionException",{enumerable:!0,get:function(){return Od.isRecognitionException}});Object.defineProperty(We,"MismatchedTokenException",{enumerable:!0,get:function(){return Od.MismatchedTokenException}});Object.defineProperty(We,"NotAllInputParsedException",{enumerable:!0,get:function(){return Od.NotAllInputParsedException}});Object.defineProperty(We,"NoViableAltException",{enumerable:!0,get:function(){return Od.NoViableAltException}});var swe=Kv();Object.defineProperty(We,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return swe.defaultLexerErrorProvider}});var Oo=Cn();Object.defineProperty(We,"Alternation",{enumerable:!0,get:function(){return Oo.Alternation}});Object.defineProperty(We,"Alternative",{enumerable:!0,get:function(){return Oo.Alternative}});Object.defineProperty(We,"NonTerminal",{enumerable:!0,get:function(){return Oo.NonTerminal}});Object.defineProperty(We,"Option",{enumerable:!0,get:function(){return Oo.Option}});Object.defineProperty(We,"Repetition",{enumerable:!0,get:function(){return Oo.Repetition}});Object.defineProperty(We,"RepetitionMandatory",{enumerable:!0,get:function(){return Oo.RepetitionMandatory}});Object.defineProperty(We,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return Oo.RepetitionMandatoryWithSeparator}});Object.defineProperty(We,"RepetitionWithSeparator",{enumerable:!0,get:function(){return Oo.RepetitionWithSeparator}});Object.defineProperty(We,"Rule",{enumerable:!0,get:function(){return Oo.Rule}});Object.defineProperty(We,"Terminal",{enumerable:!0,get:function(){return Oo.Terminal}});var uJ=Cn();Object.defineProperty(We,"serializeGrammar",{enumerable:!0,get:function(){return uJ.serializeGrammar}});Object.defineProperty(We,"serializeProduction",{enumerable:!0,get:function(){return uJ.serializeProduction}});var owe=$g();Object.defineProperty(We,"GAstVisitor",{enumerable:!0,get:function(){return owe.GAstVisitor}});function awe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}We.clearCache=Eye;var Iye=Fq();Object.defineProperty(We,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return Iye.createSyntaxDiagramsCode}});var yye=function(){function r(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return r}();We.Parser=yye});var Kq=w((k$e,Mq)=>{var yy=Tq(),Sa=yy.createToken,Oq=yy.tokenMatcher,Xv=yy.Lexer,wye=yy.EmbeddedActionsParser;Mq.exports=r=>{let e=Sa({name:"LogicalOperator",pattern:Xv.NA}),t=Sa({name:"Or",pattern:/\|/,categories:e}),i=Sa({name:"Xor",pattern:/\^/,categories:e}),n=Sa({name:"And",pattern:/&/,categories:e}),s=Sa({name:"Not",pattern:/!/}),o=Sa({name:"LParen",pattern:/\(/}),a=Sa({name:"RParen",pattern:/\)/}),l=Sa({name:"Query",pattern:r}),u=[Sa({name:"WhiteSpace",pattern:/\s+/,group:Xv.SKIPPED}),t,i,n,o,a,s,e,l],g=new Xv(u);class f extends wye{constructor(p){super(u),this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let y=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let B=y,v=this.CONSUME(e),D=this.SUBRULE2(this.atomicExpression);Oq(v,t)?y=L=>B(L)||D(L):Oq(v,i)?y=L=>!!(B(L)^D(L)):y=L=>B(L)&&D(L)}),y}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:C}=this.CONSUME(l);return y=>y(C)}},{ALT:()=>{this.CONSUME(s);let C=this.SUBRULE(this.atomicExpression);return y=>!C(y)}}])),this.RULE("parenthesisExpression",()=>{let C;return this.CONSUME(o),C=this.SUBRULE(this.expression),this.CONSUME(a),C}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var Uq=w(wy=>{var Bye=Kq();wy.makeParser=(r=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:t}=Bye(r),i=new t;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};wy.parse=wy.makeParser()});var Gq=w((F$e,Hq)=>{"use strict";Hq.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var _v=w((N$e,jq)=>{var vd=Gq(),Yq={};for(let r of Object.keys(vd))Yq[vd[r]]=r;var st={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};jq.exports=st;for(let r of Object.keys(st)){if(!("channels"in st[r]))throw new Error("missing channels property: "+r);if(!("labels"in st[r]))throw new Error("missing channel labels property: "+r);if(st[r].labels.length!==st[r].channels)throw new Error("channel and label counts mismatch: "+r);let{channels:e,labels:t}=st[r];delete st[r].channels,delete st[r].labels,Object.defineProperty(st[r],"channels",{value:e}),Object.defineProperty(st[r],"labels",{value:t})}st.rgb.hsl=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.min(e,t,i),s=Math.max(e,t,i),o=s-n,a,l;s===n?a=0:e===s?a=(t-i)/o:t===s?a=2+(i-e)/o:i===s&&(a=4+(e-t)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};st.rgb.hsv=function(r){let e,t,i,n,s,o=r[0]/255,a=r[1]/255,l=r[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),t=g(a),i=g(l),o===c?n=i-t:a===c?n=1/3+e-i:l===c&&(n=2/3+t-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};st.rgb.hwb=function(r){let e=r[0],t=r[1],i=r[2],n=st.rgb.hsl(r)[0],s=1/255*Math.min(e,Math.min(t,i));return i=1-1/255*Math.max(e,Math.max(t,i)),[n,s*100,i*100]};st.rgb.cmyk=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.min(1-e,1-t,1-i),s=(1-e-n)/(1-n)||0,o=(1-t-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function Qye(r,e){return(r[0]-e[0])**2+(r[1]-e[1])**2+(r[2]-e[2])**2}st.rgb.keyword=function(r){let e=Yq[r];if(e)return e;let t=1/0,i;for(let n of Object.keys(vd)){let s=vd[n],o=Qye(r,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+t*.3576+i*.1805,s=e*.2126+t*.7152+i*.0722,o=e*.0193+t*.1192+i*.9505;return[n*100,s*100,o*100]};st.rgb.lab=function(r){let e=st.rgb.xyz(r),t=e[0],i=e[1],n=e[2];t/=95.047,i/=100,n/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(t-i),a=200*(i-n);return[s,o,a]};st.hsl.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100,n,s,o;if(t===0)return o=i*255,[o,o,o];i<.5?n=i*(1+t):n=i+t-i*t;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};st.hsl.hsv=function(r){let e=r[0],t=r[1]/100,i=r[2]/100,n=t,s=Math.max(i,.01);i*=2,t*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+t)/2,a=i===0?2*n/(s+n):2*t/(i+t);return[e,a*100,o*100]};st.hsv.rgb=function(r){let e=r[0]/60,t=r[1]/100,i=r[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-t),a=255*i*(1-t*s),l=255*i*(1-t*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};st.hsv.hsl=function(r){let e=r[0],t=r[1]/100,i=r[2]/100,n=Math.max(i,.01),s,o;o=(2-t)*i;let a=(2-t)*n;return s=t*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};st.hwb.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100,n=t+i,s;n>1&&(t/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!==0&&(s=1-s);let l=t+s*(a-t),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=t;break;case 1:c=l,u=a,g=t;break;case 2:c=t,u=a,g=l;break;case 3:c=t,u=l,g=a;break;case 4:c=l,u=t,g=a;break;case 5:c=a,u=t,g=l;break}return[c*255,u*255,g*255]};st.cmyk.rgb=function(r){let e=r[0]/100,t=r[1]/100,i=r[2]/100,n=r[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,t*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};st.xyz.rgb=function(r){let e=r[0]/100,t=r[1]/100,i=r[2]/100,n,s,o;return n=e*3.2406+t*-1.5372+i*-.4986,s=e*-.9689+t*1.8758+i*.0415,o=e*.0557+t*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};st.xyz.lab=function(r){let e=r[0],t=r[1],i=r[2];e/=95.047,t/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,t=t>.008856?t**(1/3):7.787*t+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*t-16,s=500*(e-t),o=200*(t-i);return[n,s,o]};st.lab.xyz=function(r){let e=r[0],t=r[1],i=r[2],n,s,o;s=(e+16)/116,n=t/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};st.lab.lch=function(r){let e=r[0],t=r[1],i=r[2],n;n=Math.atan2(i,t)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(t*t+i*i);return[e,o,n]};st.lch.lab=function(r){let e=r[0],t=r[1],n=r[2]/360*2*Math.PI,s=t*Math.cos(n),o=t*Math.sin(n);return[e,s,o]};st.rgb.ansi16=function(r,e=null){let[t,i,n]=r,s=e===null?st.rgb.hsv(r)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(t/255));return s===2&&(o+=60),o};st.hsv.ansi16=function(r){return st.rgb.ansi16(st.hsv.rgb(r),r[2])};st.rgb.ansi256=function(r){let e=r[0],t=r[1],i=r[2];return e===t&&t===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(i/255*5)};st.ansi16.rgb=function(r){let e=r%10;if(e===0||e===7)return r>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let t=(~~(r>50)+1)*.5,i=(e&1)*t*255,n=(e>>1&1)*t*255,s=(e>>2&1)*t*255;return[i,n,s]};st.ansi256.rgb=function(r){if(r>=232){let s=(r-232)*10+8;return[s,s,s]}r-=16;let e,t=Math.floor(r/36)/5*255,i=Math.floor((e=r%36)/6)/5*255,n=e%6/5*255;return[t,i,n]};st.rgb.hex=function(r){let t=(((Math.round(r[0])&255)<<16)+((Math.round(r[1])&255)<<8)+(Math.round(r[2])&255)).toString(16).toUpperCase();return"000000".substring(t.length)+t};st.hex.rgb=function(r){let e=r.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];e[0].length===3&&(t=t.split("").map(a=>a+a).join(""));let i=parseInt(t,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};st.rgb.hcg=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.max(Math.max(e,t),i),s=Math.min(Math.min(e,t),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(t-i)/o%6:n===t?l=2+(i-e)/o:l=4+(e-t)/o,l/=6,l%=1,[l*360,o*100,a*100]};st.hsl.hcg=function(r){let e=r[1]/100,t=r[2]/100,i=t<.5?2*e*t:2*e*(1-t),n=0;return i<1&&(n=(t-.5*i)/(1-i)),[r[0],i*100,n*100]};st.hsv.hcg=function(r){let e=r[1]/100,t=r[2]/100,i=e*t,n=0;return i<1&&(n=(t-i)/(1-i)),[r[0],i*100,n*100]};st.hcg.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100;if(t===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-t)*i,[(t*n[0]+l)*255,(t*n[1]+l)*255,(t*n[2]+l)*255]};st.hcg.hsv=function(r){let e=r[1]/100,t=r[2]/100,i=e+t*(1-e),n=0;return i>0&&(n=e/i),[r[0],n*100,i*100]};st.hcg.hsl=function(r){let e=r[1]/100,i=r[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[r[0],n*100,i*100]};st.hcg.hwb=function(r){let e=r[1]/100,t=r[2]/100,i=e+t*(1-e);return[r[0],(i-e)*100,(1-i)*100]};st.hwb.hcg=function(r){let e=r[1]/100,t=r[2]/100,i=1-t,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[r[0],n*100,s*100]};st.apple.rgb=function(r){return[r[0]/65535*255,r[1]/65535*255,r[2]/65535*255]};st.rgb.apple=function(r){return[r[0]/255*65535,r[1]/255*65535,r[2]/255*65535]};st.gray.rgb=function(r){return[r[0]/100*255,r[0]/100*255,r[0]/100*255]};st.gray.hsl=function(r){return[0,0,r[0]]};st.gray.hsv=st.gray.hsl;st.gray.hwb=function(r){return[0,100,r[0]]};st.gray.cmyk=function(r){return[0,0,0,r[0]]};st.gray.lab=function(r){return[r[0],0,0]};st.gray.hex=function(r){let e=Math.round(r[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};st.rgb.gray=function(r){return[(r[0]+r[1]+r[2])/3/255*100]}});var Jq=w((L$e,qq)=>{var By=_v();function bye(){let r={},e=Object.keys(By);for(let t=e.length,i=0;i{var Zv=_v(),Pye=Jq(),_g={},Dye=Object.keys(Zv);function kye(r){let e=function(...t){let i=t[0];return i==null?i:(i.length>1&&(t=i),r(t))};return"conversion"in r&&(e.conversion=r.conversion),e}function Rye(r){let e=function(...t){let i=t[0];if(i==null)return i;i.length>1&&(t=i);let n=r(t);if(typeof n=="object")for(let s=n.length,o=0;o{_g[r]={},Object.defineProperty(_g[r],"channels",{value:Zv[r].channels}),Object.defineProperty(_g[r],"labels",{value:Zv[r].labels});let e=Pye(r);Object.keys(e).forEach(i=>{let n=e[i];_g[r][i]=Rye(n),_g[r][i].raw=kye(n)})});Wq.exports=_g});var eJ=w((O$e,$q)=>{"use strict";var Vq=(r,e)=>(...t)=>`\x1B[${r(...t)+e}m`,Xq=(r,e)=>(...t)=>{let i=r(...t);return`\x1B[${38+e};5;${i}m`},_q=(r,e)=>(...t)=>{let i=r(...t);return`\x1B[${38+e};2;${i[0]};${i[1]};${i[2]}m`},Qy=r=>r,Zq=(r,e,t)=>[r,e,t],Zg=(r,e,t)=>{Object.defineProperty(r,e,{get:()=>{let i=t();return Object.defineProperty(r,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},$v,$g=(r,e,t,i)=>{$v===void 0&&($v=zq());let n=i?10:0,s={};for(let[o,a]of Object.entries($v)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=r(t,n):typeof a=="object"&&(s[l]=r(a[e],n))}return s};function Fye(){let r=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[t,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},i[n]=e[n],r.set(s[0],s[1]);Object.defineProperty(e,t,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:r,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Zg(e.color,"ansi",()=>$g(Vq,"ansi16",Qy,!1)),Zg(e.color,"ansi256",()=>$g(Xq,"ansi256",Qy,!1)),Zg(e.color,"ansi16m",()=>$g(_q,"rgb",Zq,!1)),Zg(e.bgColor,"ansi",()=>$g(Vq,"ansi16",Qy,!0)),Zg(e.bgColor,"ansi256",()=>$g(Xq,"ansi256",Qy,!0)),Zg(e.bgColor,"ansi16m",()=>$g(_q,"rgb",Zq,!0)),e}Object.defineProperty($q,"exports",{enumerable:!0,get:Fye})});var rJ=w((M$e,tJ)=>{"use strict";tJ.exports=(r,e=process.argv)=>{let t=r.startsWith("-")?"":r.length===1?"-":"--",i=e.indexOf(t+r),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Nye=J("os"),iJ=J("tty"),us=rJ(),{env:ai}=process,DA;us("no-color")||us("no-colors")||us("color=false")||us("color=never")?DA=0:(us("color")||us("colors")||us("color=true")||us("color=always"))&&(DA=1);"FORCE_COLOR"in ai&&(ai.FORCE_COLOR==="true"?DA=1:ai.FORCE_COLOR==="false"?DA=0:DA=ai.FORCE_COLOR.length===0?1:Math.min(parseInt(ai.FORCE_COLOR,10),3));function ex(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function tx(r,e){if(DA===0)return 0;if(us("color=16m")||us("color=full")||us("color=truecolor"))return 3;if(us("color=256"))return 2;if(r&&!e&&DA===void 0)return 0;let t=DA||0;if(ai.TERM==="dumb")return t;if(process.platform==="win32"){let i=Nye.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ai)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in ai)||ai.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in ai)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ai.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ai)return 1;if(ai.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ai){let i=parseInt((ai.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ai.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ai.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ai.TERM)||"COLORTERM"in ai?1:t}function Lye(r){let e=tx(r,r&&r.isTTY);return ex(e)}nJ.exports={supportsColor:Lye,stdout:ex(tx(!0,iJ.isatty(1))),stderr:ex(tx(!0,iJ.isatty(2)))}});var aJ=w((U$e,oJ)=>{"use strict";var Tye=(r,e,t)=>{let i=r.indexOf(e);if(i===-1)return r;let n=e.length,s=0,o="";do o+=r.substr(s,i-s)+e+t,s=i+n,i=r.indexOf(e,s);while(i!==-1);return o+=r.substr(s),o},Oye=(r,e,t,i)=>{let n=0,s="";do{let o=r[i-1]==="\r";s+=r.substr(n,(o?i-1:i)-n)+e+(o?`\r + Please avoid using it as it will be completely removed in the future`)}We.clearCache=awe;var Awe=lJ();Object.defineProperty(We,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return Awe.createSyntaxDiagramsCode}});var lwe=function(){function r(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. +See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return r}();We.Parser=lwe});var pJ=w((Get,hJ)=>{var Ny=gJ(),Ra=Ny.createToken,fJ=Ny.tokenMatcher,ux=Ny.Lexer,cwe=Ny.EmbeddedActionsParser;hJ.exports=r=>{let e=Ra({name:"LogicalOperator",pattern:ux.NA}),t=Ra({name:"Or",pattern:/\|/,categories:e}),i=Ra({name:"Xor",pattern:/\^/,categories:e}),n=Ra({name:"And",pattern:/&/,categories:e}),s=Ra({name:"Not",pattern:/!/}),o=Ra({name:"LParen",pattern:/\(/}),a=Ra({name:"RParen",pattern:/\)/}),l=Ra({name:"Query",pattern:r}),u=[Ra({name:"WhiteSpace",pattern:/\s+/,group:ux.SKIPPED}),t,i,n,o,a,s,e,l],g=new ux(u);class f extends cwe{constructor(p){super(u),this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let y=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let B=y,v=this.CONSUME(e),D=this.SUBRULE2(this.atomicExpression);fJ(v,t)?y=L=>B(L)||D(L):fJ(v,i)?y=L=>!!(B(L)^D(L)):y=L=>B(L)&&D(L)}),y}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:C}=this.CONSUME(l);return y=>y(C)}},{ALT:()=>{this.CONSUME(s);let C=this.SUBRULE(this.atomicExpression);return y=>!C(y)}}])),this.RULE("parenthesisExpression",()=>{let C;return this.CONSUME(o),C=this.SUBRULE(this.expression),this.CONSUME(a),C}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var dJ=w(Ly=>{var uwe=pJ();Ly.makeParser=(r=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:t}=uwe(r),i=new t;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};Ly.parse=Ly.makeParser()});var mJ=w((jet,CJ)=>{"use strict";CJ.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var gx=w((qet,IJ)=>{var Md=mJ(),EJ={};for(let r of Object.keys(Md))EJ[Md[r]]=r;var st={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};IJ.exports=st;for(let r of Object.keys(st)){if(!("channels"in st[r]))throw new Error("missing channels property: "+r);if(!("labels"in st[r]))throw new Error("missing channel labels property: "+r);if(st[r].labels.length!==st[r].channels)throw new Error("channel and label counts mismatch: "+r);let{channels:e,labels:t}=st[r];delete st[r].channels,delete st[r].labels,Object.defineProperty(st[r],"channels",{value:e}),Object.defineProperty(st[r],"labels",{value:t})}st.rgb.hsl=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.min(e,t,i),s=Math.max(e,t,i),o=s-n,a,l;s===n?a=0:e===s?a=(t-i)/o:t===s?a=2+(i-e)/o:i===s&&(a=4+(e-t)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};st.rgb.hsv=function(r){let e,t,i,n,s,o=r[0]/255,a=r[1]/255,l=r[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),t=g(a),i=g(l),o===c?n=i-t:a===c?n=1/3+e-i:l===c&&(n=2/3+t-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};st.rgb.hwb=function(r){let e=r[0],t=r[1],i=r[2],n=st.rgb.hsl(r)[0],s=1/255*Math.min(e,Math.min(t,i));return i=1-1/255*Math.max(e,Math.max(t,i)),[n,s*100,i*100]};st.rgb.cmyk=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.min(1-e,1-t,1-i),s=(1-e-n)/(1-n)||0,o=(1-t-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function gwe(r,e){return(r[0]-e[0])**2+(r[1]-e[1])**2+(r[2]-e[2])**2}st.rgb.keyword=function(r){let e=EJ[r];if(e)return e;let t=1/0,i;for(let n of Object.keys(Md)){let s=Md[n],o=gwe(r,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+t*.3576+i*.1805,s=e*.2126+t*.7152+i*.0722,o=e*.0193+t*.1192+i*.9505;return[n*100,s*100,o*100]};st.rgb.lab=function(r){let e=st.rgb.xyz(r),t=e[0],i=e[1],n=e[2];t/=95.047,i/=100,n/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(t-i),a=200*(i-n);return[s,o,a]};st.hsl.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100,n,s,o;if(t===0)return o=i*255,[o,o,o];i<.5?n=i*(1+t):n=i+t-i*t;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};st.hsl.hsv=function(r){let e=r[0],t=r[1]/100,i=r[2]/100,n=t,s=Math.max(i,.01);i*=2,t*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+t)/2,a=i===0?2*n/(s+n):2*t/(i+t);return[e,a*100,o*100]};st.hsv.rgb=function(r){let e=r[0]/60,t=r[1]/100,i=r[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-t),a=255*i*(1-t*s),l=255*i*(1-t*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};st.hsv.hsl=function(r){let e=r[0],t=r[1]/100,i=r[2]/100,n=Math.max(i,.01),s,o;o=(2-t)*i;let a=(2-t)*n;return s=t*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};st.hwb.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100,n=t+i,s;n>1&&(t/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!==0&&(s=1-s);let l=t+s*(a-t),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=t;break;case 1:c=l,u=a,g=t;break;case 2:c=t,u=a,g=l;break;case 3:c=t,u=l,g=a;break;case 4:c=l,u=t,g=a;break;case 5:c=a,u=t,g=l;break}return[c*255,u*255,g*255]};st.cmyk.rgb=function(r){let e=r[0]/100,t=r[1]/100,i=r[2]/100,n=r[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,t*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};st.xyz.rgb=function(r){let e=r[0]/100,t=r[1]/100,i=r[2]/100,n,s,o;return n=e*3.2406+t*-1.5372+i*-.4986,s=e*-.9689+t*1.8758+i*.0415,o=e*.0557+t*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};st.xyz.lab=function(r){let e=r[0],t=r[1],i=r[2];e/=95.047,t/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,t=t>.008856?t**(1/3):7.787*t+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*t-16,s=500*(e-t),o=200*(t-i);return[n,s,o]};st.lab.xyz=function(r){let e=r[0],t=r[1],i=r[2],n,s,o;s=(e+16)/116,n=t/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};st.lab.lch=function(r){let e=r[0],t=r[1],i=r[2],n;n=Math.atan2(i,t)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(t*t+i*i);return[e,o,n]};st.lch.lab=function(r){let e=r[0],t=r[1],n=r[2]/360*2*Math.PI,s=t*Math.cos(n),o=t*Math.sin(n);return[e,s,o]};st.rgb.ansi16=function(r,e=null){let[t,i,n]=r,s=e===null?st.rgb.hsv(r)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(t/255));return s===2&&(o+=60),o};st.hsv.ansi16=function(r){return st.rgb.ansi16(st.hsv.rgb(r),r[2])};st.rgb.ansi256=function(r){let e=r[0],t=r[1],i=r[2];return e===t&&t===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(i/255*5)};st.ansi16.rgb=function(r){let e=r%10;if(e===0||e===7)return r>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let t=(~~(r>50)+1)*.5,i=(e&1)*t*255,n=(e>>1&1)*t*255,s=(e>>2&1)*t*255;return[i,n,s]};st.ansi256.rgb=function(r){if(r>=232){let s=(r-232)*10+8;return[s,s,s]}r-=16;let e,t=Math.floor(r/36)/5*255,i=Math.floor((e=r%36)/6)/5*255,n=e%6/5*255;return[t,i,n]};st.rgb.hex=function(r){let t=(((Math.round(r[0])&255)<<16)+((Math.round(r[1])&255)<<8)+(Math.round(r[2])&255)).toString(16).toUpperCase();return"000000".substring(t.length)+t};st.hex.rgb=function(r){let e=r.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];e[0].length===3&&(t=t.split("").map(a=>a+a).join(""));let i=parseInt(t,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};st.rgb.hcg=function(r){let e=r[0]/255,t=r[1]/255,i=r[2]/255,n=Math.max(Math.max(e,t),i),s=Math.min(Math.min(e,t),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(t-i)/o%6:n===t?l=2+(i-e)/o:l=4+(e-t)/o,l/=6,l%=1,[l*360,o*100,a*100]};st.hsl.hcg=function(r){let e=r[1]/100,t=r[2]/100,i=t<.5?2*e*t:2*e*(1-t),n=0;return i<1&&(n=(t-.5*i)/(1-i)),[r[0],i*100,n*100]};st.hsv.hcg=function(r){let e=r[1]/100,t=r[2]/100,i=e*t,n=0;return i<1&&(n=(t-i)/(1-i)),[r[0],i*100,n*100]};st.hcg.rgb=function(r){let e=r[0]/360,t=r[1]/100,i=r[2]/100;if(t===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-t)*i,[(t*n[0]+l)*255,(t*n[1]+l)*255,(t*n[2]+l)*255]};st.hcg.hsv=function(r){let e=r[1]/100,t=r[2]/100,i=e+t*(1-e),n=0;return i>0&&(n=e/i),[r[0],n*100,i*100]};st.hcg.hsl=function(r){let e=r[1]/100,i=r[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[r[0],n*100,i*100]};st.hcg.hwb=function(r){let e=r[1]/100,t=r[2]/100,i=e+t*(1-e);return[r[0],(i-e)*100,(1-i)*100]};st.hwb.hcg=function(r){let e=r[1]/100,i=1-r[2]/100,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[r[0],n*100,s*100]};st.apple.rgb=function(r){return[r[0]/65535*255,r[1]/65535*255,r[2]/65535*255]};st.rgb.apple=function(r){return[r[0]/255*65535,r[1]/255*65535,r[2]/255*65535]};st.gray.rgb=function(r){return[r[0]/100*255,r[0]/100*255,r[0]/100*255]};st.gray.hsl=function(r){return[0,0,r[0]]};st.gray.hsv=st.gray.hsl;st.gray.hwb=function(r){return[0,100,r[0]]};st.gray.cmyk=function(r){return[0,0,0,r[0]]};st.gray.lab=function(r){return[r[0],0,0]};st.gray.hex=function(r){let e=Math.round(r[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};st.rgb.gray=function(r){return[(r[0]+r[1]+r[2])/3/255*100]}});var wJ=w((Jet,yJ)=>{var Ty=gx();function fwe(){let r={},e=Object.keys(Ty);for(let t=e.length,i=0;i{var fx=gx(),Cwe=wJ(),Af={},mwe=Object.keys(fx);function Ewe(r){let e=function(...t){let i=t[0];return i==null?i:(i.length>1&&(t=i),r(t))};return"conversion"in r&&(e.conversion=r.conversion),e}function Iwe(r){let e=function(...t){let i=t[0];if(i==null)return i;i.length>1&&(t=i);let n=r(t);if(typeof n=="object")for(let s=n.length,o=0;o{Af[r]={},Object.defineProperty(Af[r],"channels",{value:fx[r].channels}),Object.defineProperty(Af[r],"labels",{value:fx[r].labels});let e=Cwe(r);Object.keys(e).forEach(i=>{let n=e[i];Af[r][i]=Iwe(n),Af[r][i].raw=Ewe(n)})});BJ.exports=Af});var DJ=w((zet,PJ)=>{"use strict";var bJ=(r,e)=>(...t)=>`\x1B[${r(...t)+e}m`,SJ=(r,e)=>(...t)=>{let i=r(...t);return`\x1B[${38+e};5;${i}m`},vJ=(r,e)=>(...t)=>{let i=r(...t);return`\x1B[${38+e};2;${i[0]};${i[1]};${i[2]}m`},Oy=r=>r,xJ=(r,e,t)=>[r,e,t],lf=(r,e,t)=>{Object.defineProperty(r,e,{get:()=>{let i=t();return Object.defineProperty(r,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},hx,cf=(r,e,t,i)=>{hx===void 0&&(hx=QJ());let n=i?10:0,s={};for(let[o,a]of Object.entries(hx)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=r(t,n):typeof a=="object"&&(s[l]=r(a[e],n))}return s};function ywe(){let r=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[t,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},i[n]=e[n],r.set(s[0],s[1]);Object.defineProperty(e,t,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:r,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",lf(e.color,"ansi",()=>cf(bJ,"ansi16",Oy,!1)),lf(e.color,"ansi256",()=>cf(SJ,"ansi256",Oy,!1)),lf(e.color,"ansi16m",()=>cf(vJ,"rgb",xJ,!1)),lf(e.bgColor,"ansi",()=>cf(bJ,"ansi16",Oy,!0)),lf(e.bgColor,"ansi256",()=>cf(SJ,"ansi256",Oy,!0)),lf(e.bgColor,"ansi16m",()=>cf(vJ,"rgb",xJ,!0)),e}Object.defineProperty(PJ,"exports",{enumerable:!0,get:ywe})});var RJ=w((Vet,kJ)=>{"use strict";kJ.exports=(r,e=process.argv)=>{let t=r.startsWith("-")?"":r.length===1?"-":"--",i=e.indexOf(t+r),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var wwe=J("os"),FJ=J("tty"),ds=RJ(),{env:ai}=process,UA;ds("no-color")||ds("no-colors")||ds("color=false")||ds("color=never")?UA=0:(ds("color")||ds("colors")||ds("color=true")||ds("color=always"))&&(UA=1);"FORCE_COLOR"in ai&&(ai.FORCE_COLOR==="true"?UA=1:ai.FORCE_COLOR==="false"?UA=0:UA=ai.FORCE_COLOR.length===0?1:Math.min(parseInt(ai.FORCE_COLOR,10),3));function px(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function dx(r,e){if(UA===0)return 0;if(ds("color=16m")||ds("color=full")||ds("color=truecolor"))return 3;if(ds("color=256"))return 2;if(r&&!e&&UA===void 0)return 0;let t=UA||0;if(ai.TERM==="dumb")return t;if(process.platform==="win32"){let i=wwe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ai)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in ai)||ai.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in ai)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ai.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ai)return 1;if(ai.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ai){let i=parseInt((ai.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ai.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ai.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ai.TERM)||"COLORTERM"in ai?1:t}function Bwe(r){let e=dx(r,r&&r.isTTY);return px(e)}NJ.exports={supportsColor:Bwe,stdout:px(dx(!0,FJ.isatty(1))),stderr:px(dx(!0,FJ.isatty(2)))}});var OJ=w((Zet,TJ)=>{"use strict";var Qwe=(r,e,t)=>{let i=r.indexOf(e);if(i===-1)return r;let n=e.length,s=0,o="";do o+=r.substr(s,i-s)+e+t,s=i+n,i=r.indexOf(e,s);while(i!==-1);return o+=r.substr(s),o},bwe=(r,e,t,i)=>{let n=0,s="";do{let o=r[i-1]==="\r";s+=r.substr(n,(o?i-1:i)-n)+e+(o?`\r `:` `)+t,n=i+1,i=r.indexOf(` -`,n)}while(i!==-1);return s+=r.substr(n),s};oJ.exports={stringReplaceAll:Tye,stringEncaseCRLFWithFirstIndex:Oye}});var gJ=w((H$e,uJ)=>{"use strict";var Mye=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,AJ=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Kye=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Uye=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,Hye=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function cJ(r){let e=r[0]==="u",t=r[1]==="{";return e&&!t&&r.length===5||r[0]==="x"&&r.length===3?String.fromCharCode(parseInt(r.slice(1),16)):e&&t?String.fromCodePoint(parseInt(r.slice(2,-1),16)):Hye.get(r)||r}function Gye(r,e){let t=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))t.push(o);else if(n=s.match(Kye))t.push(n[2].replace(Uye,(a,l,c)=>l?cJ(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${r}')`)}return t}function Yye(r){AJ.lastIndex=0;let e=[],t;for(;(t=AJ.exec(r))!==null;){let i=t[1];if(t[2]){let n=Gye(i,t[2]);e.push([i].concat(n))}else e.push([i])}return e}function lJ(r,e){let t={};for(let n of e)for(let s of n.styles)t[s[0]]=n.inverse?null:s.slice(1);let i=r;for(let[n,s]of Object.entries(t))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}uJ.exports=(r,e)=>{let t=[],i=[],n=[];if(e.replace(Mye,(s,o,a,l,c,u)=>{if(o)n.push(cJ(o));else if(l){let g=n.join("");n=[],i.push(t.length===0?g:lJ(r,t)(g)),t.push({inverse:a,styles:Yye(l)})}else if(c){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(lJ(r,t)(n.join(""))),n=[],t.pop()}else n.push(u)}),i.push(n.join("")),t.length>0){let s=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var ax=w((G$e,dJ)=>{"use strict";var xd=eJ(),{stdout:ix,stderr:nx}=sJ(),{stringReplaceAll:jye,stringEncaseCRLFWithFirstIndex:qye}=aJ(),fJ=["ansi","ansi","ansi256","ansi16m"],ef=Object.create(null),Jye=(r,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let t=ix?ix.level:0;r.level=e.level===void 0?t:e.level},sx=class{constructor(e){return hJ(e)}},hJ=r=>{let e={};return Jye(e,r),e.template=(...t)=>Vye(e.template,...t),Object.setPrototypeOf(e,by.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=sx,e.template};function by(r){return hJ(r)}for(let[r,e]of Object.entries(xd))ef[r]={get(){let t=Sy(this,ox(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,r,{value:t}),t}};ef.visible={get(){let r=Sy(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:r}),r}};var pJ=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let r of pJ)ef[r]={get(){let{level:e}=this;return function(...t){let i=ox(xd.color[fJ[e]][r](...t),xd.color.close,this._styler);return Sy(this,i,this._isEmpty)}}};for(let r of pJ){let e="bg"+r[0].toUpperCase()+r.slice(1);ef[e]={get(){let{level:t}=this;return function(...i){let n=ox(xd.bgColor[fJ[t]][r](...i),xd.bgColor.close,this._styler);return Sy(this,n,this._isEmpty)}}}}var Wye=Object.defineProperties(()=>{},{...ef,level:{enumerable:!0,get(){return this._generator.level},set(r){this._generator.level=r}}}),ox=(r,e,t)=>{let i,n;return t===void 0?(i=r,n=e):(i=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:i,closeAll:n,parent:t}},Sy=(r,e,t)=>{let i=(...n)=>zye(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=Wye,i._generator=r,i._styler=e,i._isEmpty=t,i},zye=(r,e)=>{if(r.level<=0||!e)return r._isEmpty?"":e;let t=r._styler;if(t===void 0)return e;let{openAll:i,closeAll:n}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=jye(e,t.close,t.open),t=t.parent;let s=e.indexOf(` -`);return s!==-1&&(e=qye(e,n,i,s)),i+e+n},rx,Vye=(r,...e)=>{let[t]=e;if(!Array.isArray(t))return e.join(" ");let i=e.slice(1),n=[t.raw[0]];for(let s=1;s{"use strict";gs.isInteger=r=>typeof r=="number"?Number.isInteger(r):typeof r=="string"&&r.trim()!==""?Number.isInteger(Number(r)):!1;gs.find=(r,e)=>r.nodes.find(t=>t.type===e);gs.exceedsLimit=(r,e,t=1,i)=>i===!1||!gs.isInteger(r)||!gs.isInteger(e)?!1:(Number(e)-Number(r))/Number(t)>=i;gs.escapeNode=(r,e=0,t)=>{let i=r.nodes[e];!i||(t&&i.type===t||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};gs.encloseBrace=r=>r.type!=="brace"?!1:r.commas>>0+r.ranges>>0===0?(r.invalid=!0,!0):!1;gs.isInvalidBrace=r=>r.type!=="brace"?!1:r.invalid===!0||r.dollar?!0:r.commas>>0+r.ranges>>0===0||r.open!==!0||r.close!==!0?(r.invalid=!0,!0):!1;gs.isOpenOrClose=r=>r.type==="open"||r.type==="close"?!0:r.open===!0||r.close===!0;gs.reduce=r=>r.reduce((e,t)=>(t.type==="text"&&e.push(t.value),t.type==="range"&&(t.type="text"),e),[]);gs.flatten=(...r)=>{let e=[],t=i=>{for(let n=0;n{"use strict";var CJ=vy();mJ.exports=(r,e={})=>{let t=(i,n={})=>{let s=e.escapeInvalid&&CJ.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&CJ.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=t(l);return a};return t(r)}});var IJ=w((q$e,EJ)=>{"use strict";EJ.exports=function(r){return typeof r=="number"?r-r===0:typeof r=="string"&&r.trim()!==""?Number.isFinite?Number.isFinite(+r):isFinite(+r):!1}});var PJ=w((J$e,xJ)=>{"use strict";var yJ=IJ(),ac=(r,e,t)=>{if(yJ(r)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||r===e)return String(r);if(yJ(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i={relaxZeros:!0,...t};typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=r+":"+e+"="+n+s+o+a;if(ac.cache.hasOwnProperty(l))return ac.cache[l].result;let c=Math.min(r,e),u=Math.max(r,e);if(Math.abs(c-u)===1){let C=r+"|"+e;return i.capture?`(${C})`:i.wrap===!1?C:`(?:${C})`}let g=vJ(r)||vJ(e),f={min:r,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let C=u<0?Math.abs(u):1;p=wJ(C,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=wJ(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Xye(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),ac.cache[l]=f,f.result};function Xye(r,e,t){let i=Ax(r,e,"-",!1,t)||[],n=Ax(e,r,"",!1,t)||[],s=Ax(r,e,"-?",!0,t)||[];return i.concat(s).concat(n).join("|")}function _ye(r,e){let t=1,i=1,n=QJ(r,t),s=new Set([e]);for(;r<=n&&n<=e;)s.add(n),t+=1,n=QJ(r,t);for(n=bJ(e+1,i)-1;r1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+SJ(a.count),o=c+1;continue}t.isPadded&&(g=rwe(c,t,i)),u.string=g+u.pattern+SJ(u.count),s.push(u),o=c+1,a=u}return s}function Ax(r,e,t,i,n){let s=[];for(let o of r){let{string:a}=o;!i&&!BJ(e,"string",a)&&s.push(t+a),i&&BJ(e,"string",a)&&s.push(t+a)}return s}function $ye(r,e){let t=[];for(let i=0;ie?1:e>r?-1:0}function BJ(r,e,t){return r.some(i=>i[e]===t)}function QJ(r,e){return Number(String(r).slice(0,-e)+"9".repeat(e))}function bJ(r,e){return r-r%Math.pow(10,e)}function SJ(r){let[e=0,t=""]=r;return t||e>1?`{${e+(t?","+t:"")}}`:""}function twe(r,e,t){return`[${r}${e-r===1?"":"-"}${e}]`}function vJ(r){return/^-?(0+)\d/.test(r)}function rwe(r,e,t){if(!e.isPadded)return r;let i=Math.abs(e.maxLen-String(r).length),n=t.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}ac.cache={};ac.clearCache=()=>ac.cache={};xJ.exports=ac});var ux=w((W$e,OJ)=>{"use strict";var iwe=J("util"),RJ=PJ(),DJ=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),nwe=r=>e=>r===!0?Number(e):String(e),lx=r=>typeof r=="number"||typeof r=="string"&&r!=="",Dd=r=>Number.isInteger(+r),cx=r=>{let e=`${r}`,t=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++t]==="0";);return t>0},swe=(r,e,t)=>typeof r=="string"||typeof e=="string"?!0:t.stringify===!0,owe=(r,e,t)=>{if(e>0){let i=r[0]==="-"?"-":"";i&&(r=r.slice(1)),r=i+r.padStart(i?e-1:e,"0")}return t===!1?String(r):r},kJ=(r,e)=>{let t=r[0]==="-"?"-":"";for(t&&(r=r.slice(1),e--);r.length{r.negatives.sort((o,a)=>oa?1:0),r.positives.sort((o,a)=>oa?1:0);let t=e.capture?"":"?:",i="",n="",s;return r.positives.length&&(i=r.positives.join("|")),r.negatives.length&&(n=`-(${t}${r.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${t}${s})`:s},FJ=(r,e,t,i)=>{if(t)return RJ(r,e,{wrap:!1,...i});let n=String.fromCharCode(r);if(r===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},NJ=(r,e,t)=>{if(Array.isArray(r)){let i=t.wrap===!0,n=t.capture?"":"?:";return i?`(${n}${r.join("|")})`:r.join("|")}return RJ(r,e,t)},LJ=(...r)=>new RangeError("Invalid range arguments: "+iwe.inspect(...r)),TJ=(r,e,t)=>{if(t.strictRanges===!0)throw LJ([r,e]);return[]},Awe=(r,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${r}" to be a number`);return[]},lwe=(r,e,t=1,i={})=>{let n=Number(r),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw LJ([r,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(r),l=String(e),c=String(t);t=Math.max(Math.abs(t),1);let u=cx(a)||cx(l)||cx(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&swe(r,e,i)===!1,h=i.transform||nwe(f);if(i.toRegex&&t===1)return FJ(kJ(r,g),kJ(e,g),!0,i);let p={negatives:[],positives:[]},C=v=>p[v<0?"negatives":"positives"].push(Math.abs(v)),y=[],B=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&t>1?C(n):y.push(owe(h(n,B),g,f)),n=o?n-t:n+t,B++;return i.toRegex===!0?t>1?awe(p,i):NJ(y,null,{wrap:!1,...i}):y},cwe=(r,e,t=1,i={})=>{if(!Dd(r)&&r.length>1||!Dd(e)&&e.length>1)return TJ(r,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${r}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&t===1)return FJ(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-t:s+t,g++;return i.toRegex===!0?NJ(u,null,{wrap:!1,options:i}):u},Py=(r,e,t,i={})=>{if(e==null&&lx(r))return[r];if(!lx(r)||!lx(e))return TJ(r,e,i);if(typeof t=="function")return Py(r,e,1,{transform:t});if(DJ(t))return Py(r,e,0,t);let n={...i};return n.capture===!0&&(n.wrap=!0),t=t||n.step||1,Dd(t)?Dd(r)&&Dd(e)?lwe(r,e,t,n):cwe(r,e,Math.max(Math.abs(t),1),n):t!=null&&!DJ(t)?Awe(t,n):Py(r,e,1,t)};OJ.exports=Py});var UJ=w((z$e,KJ)=>{"use strict";var uwe=ux(),MJ=vy(),gwe=(r,e={})=>{let t=(i,n={})=>{let s=MJ.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=MJ.reduce(i.nodes),g=uwe(...u,{...e,wrap:!1,toRegex:!0});if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=t(u,i);return c};return t(r)};KJ.exports=gwe});var YJ=w((V$e,GJ)=>{"use strict";var fwe=ux(),HJ=xy(),tf=vy(),Ac=(r="",e="",t=!1)=>{let i=[];if(r=[].concat(r),e=[].concat(e),!e.length)return r;if(!r.length)return t?tf.flatten(e).map(n=>`{${n}}`):e;for(let n of r)if(Array.isArray(n))for(let s of n)i.push(Ac(s,e,t));else for(let s of e)t===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Ac(n,s,t):n+s);return tf.flatten(i)},hwe=(r,e={})=>{let t=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Ac(a.pop(),HJ(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Ac(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=tf.reduce(n.nodes);if(tf.exceedsLimit(...g,e.step,t))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=fwe(...g,e);f.length===0&&(f=HJ(n,e)),a.push(Ac(a.pop(),f)),n.nodes=[];return}let l=tf.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";jJ.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var XJ=w((_$e,VJ)=>{"use strict";var pwe=xy(),{MAX_LENGTH:JJ,CHAR_BACKSLASH:gx,CHAR_BACKTICK:dwe,CHAR_COMMA:Cwe,CHAR_DOT:mwe,CHAR_LEFT_PARENTHESES:Ewe,CHAR_RIGHT_PARENTHESES:Iwe,CHAR_LEFT_CURLY_BRACE:ywe,CHAR_RIGHT_CURLY_BRACE:wwe,CHAR_LEFT_SQUARE_BRACKET:WJ,CHAR_RIGHT_SQUARE_BRACKET:zJ,CHAR_DOUBLE_QUOTE:Bwe,CHAR_SINGLE_QUOTE:Qwe,CHAR_NO_BREAK_SPACE:bwe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Swe}=qJ(),vwe=(r,e={})=>{if(typeof r!="string")throw new TypeError("Expected a string");let t=e||{},i=typeof t.maxLength=="number"?Math.min(JJ,t.maxLength):JJ;if(r.length>i)throw new SyntaxError(`Input length (${r.length}), exceeds max characters (${i})`);let n={type:"root",input:r,nodes:[]},s=[n],o=n,a=n,l=0,c=r.length,u=0,g=0,f,h={},p=()=>r[u++],C=y=>{if(y.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&y.type==="text"){a.value+=y.value;return}return o.nodes.push(y),y.parent=o,y.prev=a,a=y,y};for(C({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let y=o.nodes.shift();o.nodes=[y,{type:"text",value:pwe(o)}]}C({type:"comma",value:f}),o.commas++;continue}if(f===mwe&&g>0&&o.commas===0){let y=o.nodes;if(g===0||y.length===0){C({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){y.pop();let B=y[y.length-1];B.value+=a.value+f,a=B,o.ranges--;continue}C({type:"dot",value:f});continue}C({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=s[s.length-1],B=y.nodes.indexOf(o);y.nodes.splice(B,1,...o.nodes)}while(s.length>0);return C({type:"eos"}),n};VJ.exports=vwe});var $J=w((Z$e,ZJ)=>{"use strict";var _J=xy(),xwe=UJ(),Pwe=YJ(),Dwe=XJ(),Yn=(r,e={})=>{let t=[];if(Array.isArray(r))for(let i of r){let n=Yn.create(i,e);Array.isArray(n)?t.push(...n):t.push(n)}else t=[].concat(Yn.create(r,e));return e&&e.expand===!0&&e.nodupes===!0&&(t=[...new Set(t)]),t};Yn.parse=(r,e={})=>Dwe(r,e);Yn.stringify=(r,e={})=>_J(typeof r=="string"?Yn.parse(r,e):r,e);Yn.compile=(r,e={})=>(typeof r=="string"&&(r=Yn.parse(r,e)),xwe(r,e));Yn.expand=(r,e={})=>{typeof r=="string"&&(r=Yn.parse(r,e));let t=Pwe(r,e);return e.noempty===!0&&(t=t.filter(Boolean)),e.nodupes===!0&&(t=[...new Set(t)]),t};Yn.create=(r,e={})=>r===""||r.length<3?[r]:e.expand!==!0?Yn.compile(r,e):Yn.expand(r,e);ZJ.exports=Yn});var kd=w(($$e,nW)=>{"use strict";var kwe=J("path"),No="\\\\/",eW=`[^${No}]`,va="\\.",Rwe="\\+",Fwe="\\?",Dy="\\/",Nwe="(?=.)",tW="[^/]",fx=`(?:${Dy}|$)`,rW=`(?:^|${Dy})`,hx=`${va}{1,2}${fx}`,Lwe=`(?!${va})`,Twe=`(?!${rW}${hx})`,Owe=`(?!${va}{0,1}${fx})`,Mwe=`(?!${hx})`,Kwe=`[^.${Dy}]`,Uwe=`${tW}*?`,iW={DOT_LITERAL:va,PLUS_LITERAL:Rwe,QMARK_LITERAL:Fwe,SLASH_LITERAL:Dy,ONE_CHAR:Nwe,QMARK:tW,END_ANCHOR:fx,DOTS_SLASH:hx,NO_DOT:Lwe,NO_DOTS:Twe,NO_DOT_SLASH:Owe,NO_DOTS_SLASH:Mwe,QMARK_NO_DOT:Kwe,STAR:Uwe,START_ANCHOR:rW},Hwe={...iW,SLASH_LITERAL:`[${No}]`,QMARK:eW,STAR:`${eW}*?`,DOTS_SLASH:`${va}{1,2}(?:[${No}]|$)`,NO_DOT:`(?!${va})`,NO_DOTS:`(?!(?:^|[${No}])${va}{1,2}(?:[${No}]|$))`,NO_DOT_SLASH:`(?!${va}{0,1}(?:[${No}]|$))`,NO_DOTS_SLASH:`(?!${va}{1,2}(?:[${No}]|$))`,QMARK_NO_DOT:`[^.${No}]`,START_ANCHOR:`(?:^|[${No}])`,END_ANCHOR:`(?:[${No}]|$)`},Gwe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};nW.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Gwe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:kwe.sep,extglobChars(r){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${r.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(r){return r===!0?Hwe:iW}}});var Rd=w(In=>{"use strict";var Ywe=J("path"),jwe=process.platform==="win32",{REGEX_BACKSLASH:qwe,REGEX_REMOVE_BACKSLASH:Jwe,REGEX_SPECIAL_CHARS:Wwe,REGEX_SPECIAL_CHARS_GLOBAL:zwe}=kd();In.isObject=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);In.hasRegexChars=r=>Wwe.test(r);In.isRegexChar=r=>r.length===1&&In.hasRegexChars(r);In.escapeRegex=r=>r.replace(zwe,"\\$1");In.toPosixSlashes=r=>r.replace(qwe,"/");In.removeBackslashes=r=>r.replace(Jwe,e=>e==="\\"?"":e);In.supportsLookbehinds=()=>{let r=process.version.slice(1).split(".").map(Number);return r.length===3&&r[0]>=9||r[0]===8&&r[1]>=10};In.isWindows=r=>r&&typeof r.windows=="boolean"?r.windows:jwe===!0||Ywe.sep==="\\";In.escapeLast=(r,e,t)=>{let i=r.lastIndexOf(e,t);return i===-1?r:r[i-1]==="\\"?In.escapeLast(r,e,i-1):`${r.slice(0,i)}\\${r.slice(i)}`};In.removePrefix=(r,e={})=>{let t=r;return t.startsWith("./")&&(t=t.slice(2),e.prefix="./"),t};In.wrapOutput=(r,e={},t={})=>{let i=t.contains?"":"^",n=t.contains?"":"$",s=`${i}(?:${r})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var gW=w((tet,uW)=>{"use strict";var sW=Rd(),{CHAR_ASTERISK:px,CHAR_AT:Vwe,CHAR_BACKWARD_SLASH:Fd,CHAR_COMMA:Xwe,CHAR_DOT:dx,CHAR_EXCLAMATION_MARK:Cx,CHAR_FORWARD_SLASH:cW,CHAR_LEFT_CURLY_BRACE:mx,CHAR_LEFT_PARENTHESES:Ex,CHAR_LEFT_SQUARE_BRACKET:_we,CHAR_PLUS:Zwe,CHAR_QUESTION_MARK:oW,CHAR_RIGHT_CURLY_BRACE:$we,CHAR_RIGHT_PARENTHESES:aW,CHAR_RIGHT_SQUARE_BRACKET:eBe}=kd(),AW=r=>r===cW||r===Fd,lW=r=>{r.isPrefix!==!0&&(r.depth=r.isGlobstar?1/0:1)},tBe=(r,e)=>{let t=e||{},i=r.length-1,n=t.parts===!0||t.scanToEnd===!0,s=[],o=[],a=[],l=r,c=-1,u=0,g=0,f=!1,h=!1,p=!1,C=!1,y=!1,B=!1,v=!1,D=!1,L=!1,H=!1,j=0,$,V,W={value:"",depth:0,isGlob:!1},Z=()=>c>=i,A=()=>l.charCodeAt(c+1),ae=()=>($=V,l.charCodeAt(++c));for(;c0&&(re=l.slice(0,u),l=l.slice(u),g-=u),ge&&p===!0&&g>0?(ge=l.slice(0,g),O=l.slice(g)):p===!0?(ge="",O=l):ge=l,ge&&ge!==""&&ge!=="/"&&ge!==l&&AW(ge.charCodeAt(ge.length-1))&&(ge=ge.slice(0,-1)),t.unescape===!0&&(O&&(O=sW.removeBackslashes(O)),ge&&v===!0&&(ge=sW.removeBackslashes(ge)));let F={prefix:re,input:r,start:u,base:ge,glob:O,isBrace:f,isBracket:h,isGlob:p,isExtglob:C,isGlobstar:y,negated:D,negatedExtglob:L};if(t.tokens===!0&&(F.maxDepth=0,AW(V)||o.push(W),F.tokens=o),t.parts===!0||t.tokens===!0){let ue;for(let he=0;he{"use strict";var ky=kd(),jn=Rd(),{MAX_LENGTH:Ry,POSIX_REGEX_SOURCE:rBe,REGEX_NON_SPECIAL_CHARS:iBe,REGEX_SPECIAL_CHARS_BACKREF:nBe,REPLACEMENTS:fW}=ky,sBe=(r,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...r,e);r.sort();let t=`[${r.join("-")}]`;try{new RegExp(t)}catch{return r.map(n=>jn.escapeRegex(n)).join("..")}return t},rf=(r,e)=>`Missing ${r}: "${e}" - use "\\\\${e}" to match literal characters`,hW=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");r=fW[r]||r;let t={...e},i=typeof t.maxLength=="number"?Math.min(Ry,t.maxLength):Ry,n=r.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:t.prepend||""},o=[s],a=t.capture?"":"?:",l=jn.isWindows(e),c=ky.globChars(l),u=ky.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:C,NO_DOT:y,NO_DOT_SLASH:B,NO_DOTS_SLASH:v,QMARK:D,QMARK_NO_DOT:L,STAR:H,START_ANCHOR:j}=c,$=Y=>`(${a}(?:(?!${j}${Y.dot?C:g}).)*?)`,V=t.dot?"":y,W=t.dot?D:L,Z=t.bash===!0?$(t):H;t.capture&&(Z=`(${Z})`),typeof t.noext=="boolean"&&(t.noextglob=t.noext);let A={input:r,index:-1,start:0,dot:t.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};r=jn.removePrefix(r,A),n=r.length;let ae=[],ge=[],re=[],O=s,F,ue=()=>A.index===n-1,he=A.peek=(Y=1)=>r[A.index+Y],ke=A.advance=()=>r[++A.index]||"",Fe=()=>r.slice(A.index+1),Ne=(Y="",pe=0)=>{A.consumed+=Y,A.index+=pe},oe=Y=>{A.output+=Y.output!=null?Y.output:Y.value,Ne(Y.value)},le=()=>{let Y=1;for(;he()==="!"&&(he(2)!=="("||he(3)==="?");)ke(),A.start++,Y++;return Y%2===0?!1:(A.negated=!0,A.start++,!0)},we=Y=>{A[Y]++,re.push(Y)},fe=Y=>{A[Y]--,re.pop()},Ae=Y=>{if(O.type==="globstar"){let pe=A.braces>0&&(Y.type==="comma"||Y.type==="brace"),ie=Y.extglob===!0||ae.length&&(Y.type==="pipe"||Y.type==="paren");Y.type!=="slash"&&Y.type!=="paren"&&!pe&&!ie&&(A.output=A.output.slice(0,-O.output.length),O.type="star",O.value="*",O.output=Z,A.output+=O.output)}if(ae.length&&Y.type!=="paren"&&(ae[ae.length-1].inner+=Y.value),(Y.value||Y.output)&&oe(Y),O&&O.type==="text"&&Y.type==="text"){O.value+=Y.value,O.output=(O.output||"")+Y.value;return}Y.prev=O,o.push(Y),O=Y},qe=(Y,pe)=>{let ie={...u[pe],conditions:1,inner:""};ie.prev=O,ie.parens=A.parens,ie.output=A.output;let de=(t.capture?"(":"")+ie.open;we("parens"),Ae({type:Y,value:pe,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:ke(),output:de}),ae.push(ie)},ne=Y=>{let pe=Y.close+(t.capture?")":""),ie;if(Y.type==="negate"){let de=Z;Y.inner&&Y.inner.length>1&&Y.inner.includes("/")&&(de=$(t)),(de!==Z||ue()||/^\)+$/.test(Fe()))&&(pe=Y.close=`)$))${de}`),Y.inner.includes("*")&&(ie=Fe())&&/^\.[^\\/.]+$/.test(ie)&&(pe=Y.close=`)${ie})${de})`),Y.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:F,output:pe}),fe("parens")};if(t.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(r)){let Y=!1,pe=r.replace(nBe,(ie,de,tt,Pt,It,Or)=>Pt==="\\"?(Y=!0,ie):Pt==="?"?de?de+Pt+(It?D.repeat(It.length):""):Or===0?W+(It?D.repeat(It.length):""):D.repeat(tt.length):Pt==="."?g.repeat(tt.length):Pt==="*"?de?de+Pt+(It?Z:""):Z:de?ie:`\\${ie}`);return Y===!0&&(t.unescape===!0?pe=pe.replace(/\\/g,""):pe=pe.replace(/\\+/g,ie=>ie.length%2===0?"\\\\":ie?"\\":"")),pe===r&&t.contains===!0?(A.output=r,A):(A.output=jn.wrapOutput(pe,A,e),A)}for(;!ue();){if(F=ke(),F==="\0")continue;if(F==="\\"){let ie=he();if(ie==="/"&&t.bash!==!0||ie==="."||ie===";")continue;if(!ie){F+="\\",Ae({type:"text",value:F});continue}let de=/^\\+/.exec(Fe()),tt=0;if(de&&de[0].length>2&&(tt=de[0].length,A.index+=tt,tt%2!==0&&(F+="\\")),t.unescape===!0?F=ke():F+=ke(),A.brackets===0){Ae({type:"text",value:F});continue}}if(A.brackets>0&&(F!=="]"||O.value==="["||O.value==="[^")){if(t.posix!==!1&&F===":"){let ie=O.value.slice(1);if(ie.includes("[")&&(O.posix=!0,ie.includes(":"))){let de=O.value.lastIndexOf("["),tt=O.value.slice(0,de),Pt=O.value.slice(de+2),It=rBe[Pt];if(It){O.value=tt+It,A.backtrack=!0,ke(),!s.output&&o.indexOf(O)===1&&(s.output=p);continue}}}(F==="["&&he()!==":"||F==="-"&&he()==="]")&&(F=`\\${F}`),F==="]"&&(O.value==="["||O.value==="[^")&&(F=`\\${F}`),t.posix===!0&&F==="!"&&O.value==="["&&(F="^"),O.value+=F,oe({value:F});continue}if(A.quotes===1&&F!=='"'){F=jn.escapeRegex(F),O.value+=F,oe({value:F});continue}if(F==='"'){A.quotes=A.quotes===1?0:1,t.keepQuotes===!0&&Ae({type:"text",value:F});continue}if(F==="("){we("parens"),Ae({type:"paren",value:F});continue}if(F===")"){if(A.parens===0&&t.strictBrackets===!0)throw new SyntaxError(rf("opening","("));let ie=ae[ae.length-1];if(ie&&A.parens===ie.parens+1){ne(ae.pop());continue}Ae({type:"paren",value:F,output:A.parens?")":"\\)"}),fe("parens");continue}if(F==="["){if(t.nobracket===!0||!Fe().includes("]")){if(t.nobracket!==!0&&t.strictBrackets===!0)throw new SyntaxError(rf("closing","]"));F=`\\${F}`}else we("brackets");Ae({type:"bracket",value:F});continue}if(F==="]"){if(t.nobracket===!0||O&&O.type==="bracket"&&O.value.length===1){Ae({type:"text",value:F,output:`\\${F}`});continue}if(A.brackets===0){if(t.strictBrackets===!0)throw new SyntaxError(rf("opening","["));Ae({type:"text",value:F,output:`\\${F}`});continue}fe("brackets");let ie=O.value.slice(1);if(O.posix!==!0&&ie[0]==="^"&&!ie.includes("/")&&(F=`/${F}`),O.value+=F,oe({value:F}),t.literalBrackets===!1||jn.hasRegexChars(ie))continue;let de=jn.escapeRegex(O.value);if(A.output=A.output.slice(0,-O.value.length),t.literalBrackets===!0){A.output+=de,O.value=de;continue}O.value=`(${a}${de}|${O.value})`,A.output+=O.value;continue}if(F==="{"&&t.nobrace!==!0){we("braces");let ie={type:"brace",value:F,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};ge.push(ie),Ae(ie);continue}if(F==="}"){let ie=ge[ge.length-1];if(t.nobrace===!0||!ie){Ae({type:"text",value:F,output:F});continue}let de=")";if(ie.dots===!0){let tt=o.slice(),Pt=[];for(let It=tt.length-1;It>=0&&(o.pop(),tt[It].type!=="brace");It--)tt[It].type!=="dots"&&Pt.unshift(tt[It].value);de=sBe(Pt,t),A.backtrack=!0}if(ie.comma!==!0&&ie.dots!==!0){let tt=A.output.slice(0,ie.outputIndex),Pt=A.tokens.slice(ie.tokensIndex);ie.value=ie.output="\\{",F=de="\\}",A.output=tt;for(let It of Pt)A.output+=It.output||It.value}Ae({type:"brace",value:F,output:de}),fe("braces"),ge.pop();continue}if(F==="|"){ae.length>0&&ae[ae.length-1].conditions++,Ae({type:"text",value:F});continue}if(F===","){let ie=F,de=ge[ge.length-1];de&&re[re.length-1]==="braces"&&(de.comma=!0,ie="|"),Ae({type:"comma",value:F,output:ie});continue}if(F==="/"){if(O.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),O=s;continue}Ae({type:"slash",value:F,output:h});continue}if(F==="."){if(A.braces>0&&O.type==="dot"){O.value==="."&&(O.output=g);let ie=ge[ge.length-1];O.type="dots",O.output+=F,O.value+=F,ie.dots=!0;continue}if(A.braces+A.parens===0&&O.type!=="bos"&&O.type!=="slash"){Ae({type:"text",value:F,output:g});continue}Ae({type:"dot",value:F,output:g});continue}if(F==="?"){if(!(O&&O.value==="(")&&t.noextglob!==!0&&he()==="("&&he(2)!=="?"){qe("qmark",F);continue}if(O&&O.type==="paren"){let de=he(),tt=F;if(de==="<"&&!jn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(O.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(Fe()))&&(tt=`\\${F}`),Ae({type:"text",value:F,output:tt});continue}if(t.dot!==!0&&(O.type==="slash"||O.type==="bos")){Ae({type:"qmark",value:F,output:L});continue}Ae({type:"qmark",value:F,output:D});continue}if(F==="!"){if(t.noextglob!==!0&&he()==="("&&(he(2)!=="?"||!/[!=<:]/.test(he(3)))){qe("negate",F);continue}if(t.nonegate!==!0&&A.index===0){le();continue}}if(F==="+"){if(t.noextglob!==!0&&he()==="("&&he(2)!=="?"){qe("plus",F);continue}if(O&&O.value==="("||t.regex===!1){Ae({type:"plus",value:F,output:f});continue}if(O&&(O.type==="bracket"||O.type==="paren"||O.type==="brace")||A.parens>0){Ae({type:"plus",value:F});continue}Ae({type:"plus",value:f});continue}if(F==="@"){if(t.noextglob!==!0&&he()==="("&&he(2)!=="?"){Ae({type:"at",extglob:!0,value:F,output:""});continue}Ae({type:"text",value:F});continue}if(F!=="*"){(F==="$"||F==="^")&&(F=`\\${F}`);let ie=iBe.exec(Fe());ie&&(F+=ie[0],A.index+=ie[0].length),Ae({type:"text",value:F});continue}if(O&&(O.type==="globstar"||O.star===!0)){O.type="star",O.star=!0,O.value+=F,O.output=Z,A.backtrack=!0,A.globstar=!0,Ne(F);continue}let Y=Fe();if(t.noextglob!==!0&&/^\([^?]/.test(Y)){qe("star",F);continue}if(O.type==="star"){if(t.noglobstar===!0){Ne(F);continue}let ie=O.prev,de=ie.prev,tt=ie.type==="slash"||ie.type==="bos",Pt=de&&(de.type==="star"||de.type==="globstar");if(t.bash===!0&&(!tt||Y[0]&&Y[0]!=="/")){Ae({type:"star",value:F,output:""});continue}let It=A.braces>0&&(ie.type==="comma"||ie.type==="brace"),Or=ae.length&&(ie.type==="pipe"||ie.type==="paren");if(!tt&&ie.type!=="paren"&&!It&&!Or){Ae({type:"star",value:F,output:""});continue}for(;Y.slice(0,3)==="/**";){let ii=r[A.index+4];if(ii&&ii!=="/")break;Y=Y.slice(3),Ne("/**",3)}if(ie.type==="bos"&&ue()){O.type="globstar",O.value+=F,O.output=$(t),A.output=O.output,A.globstar=!0,Ne(F);continue}if(ie.type==="slash"&&ie.prev.type!=="bos"&&!Pt&&ue()){A.output=A.output.slice(0,-(ie.output+O.output).length),ie.output=`(?:${ie.output}`,O.type="globstar",O.output=$(t)+(t.strictSlashes?")":"|$)"),O.value+=F,A.globstar=!0,A.output+=ie.output+O.output,Ne(F);continue}if(ie.type==="slash"&&ie.prev.type!=="bos"&&Y[0]==="/"){let ii=Y[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ie.output+O.output).length),ie.output=`(?:${ie.output}`,O.type="globstar",O.output=`${$(t)}${h}|${h}${ii})`,O.value+=F,A.output+=ie.output+O.output,A.globstar=!0,Ne(F+ke()),Ae({type:"slash",value:"/",output:""});continue}if(ie.type==="bos"&&Y[0]==="/"){O.type="globstar",O.value+=F,O.output=`(?:^|${h}|${$(t)}${h})`,A.output=O.output,A.globstar=!0,Ne(F+ke()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-O.output.length),O.type="globstar",O.output=$(t),O.value+=F,A.output+=O.output,A.globstar=!0,Ne(F);continue}let pe={type:"star",value:F,output:Z};if(t.bash===!0){pe.output=".*?",(O.type==="bos"||O.type==="slash")&&(pe.output=V+pe.output),Ae(pe);continue}if(O&&(O.type==="bracket"||O.type==="paren")&&t.regex===!0){pe.output=F,Ae(pe);continue}(A.index===A.start||O.type==="slash"||O.type==="dot")&&(O.type==="dot"?(A.output+=B,O.output+=B):t.dot===!0?(A.output+=v,O.output+=v):(A.output+=V,O.output+=V),he()!=="*"&&(A.output+=p,O.output+=p)),Ae(pe)}for(;A.brackets>0;){if(t.strictBrackets===!0)throw new SyntaxError(rf("closing","]"));A.output=jn.escapeLast(A.output,"["),fe("brackets")}for(;A.parens>0;){if(t.strictBrackets===!0)throw new SyntaxError(rf("closing",")"));A.output=jn.escapeLast(A.output,"("),fe("parens")}for(;A.braces>0;){if(t.strictBrackets===!0)throw new SyntaxError(rf("closing","}"));A.output=jn.escapeLast(A.output,"{"),fe("braces")}if(t.strictSlashes!==!0&&(O.type==="star"||O.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let Y of A.tokens)A.output+=Y.output!=null?Y.output:Y.value,Y.suffix&&(A.output+=Y.suffix)}return A};hW.fastpaths=(r,e)=>{let t={...e},i=typeof t.maxLength=="number"?Math.min(Ry,t.maxLength):Ry,n=r.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);r=fW[r]||r;let s=jn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=ky.globChars(s),C=t.dot?g:u,y=t.dot?f:u,B=t.capture?"":"?:",v={negated:!1,prefix:""},D=t.bash===!0?".*?":h;t.capture&&(D=`(${D})`);let L=V=>V.noglobstar===!0?D:`(${B}(?:(?!${p}${V.dot?c:o}).)*?)`,H=V=>{switch(V){case"*":return`${C}${l}${D}`;case".*":return`${o}${l}${D}`;case"*.*":return`${C}${D}${o}${l}${D}`;case"*/*":return`${C}${D}${a}${l}${y}${D}`;case"**":return C+L(t);case"**/*":return`(?:${C}${L(t)}${a})?${y}${l}${D}`;case"**/*.*":return`(?:${C}${L(t)}${a})?${y}${D}${o}${l}${D}`;case"**/.*":return`(?:${C}${L(t)}${a})?${o}${l}${D}`;default:{let W=/^(.*?)\.(\w+)$/.exec(V);if(!W)return;let Z=H(W[1]);return Z?Z+o+W[2]:void 0}}},j=jn.removePrefix(r,v),$=H(j);return $&&t.strictSlashes!==!0&&($+=`${a}?`),$};pW.exports=hW});var mW=w((iet,CW)=>{"use strict";var oBe=J("path"),aBe=gW(),Ix=dW(),yx=Rd(),ABe=kd(),lBe=r=>r&&typeof r=="object"&&!Array.isArray(r),Yr=(r,e,t=!1)=>{if(Array.isArray(r)){let u=r.map(f=>Yr(f,e,t));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=lBe(r)&&r.tokens&&r.input;if(r===""||typeof r!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=yx.isWindows(e),o=i?Yr.compileRe(r,e):Yr.makeRe(r,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u={...e,ignore:null,onMatch:null,onResult:null};l=Yr(n.ignore,u,t)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Yr.test(u,o,e,{glob:r,posix:s}),C={glob:r,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(C),f===!1?(C.isMatch=!1,g?C:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(C),C.isMatch=!1,g?C:!1):(typeof n.onMatch=="function"&&n.onMatch(C),g?C:!0)};return t&&(c.state=a),c};Yr.test=(r,e,t,{glob:i,posix:n}={})=>{if(typeof r!="string")throw new TypeError("Expected input to be a string");if(r==="")return{isMatch:!1,output:""};let s=t||{},o=s.format||(n?yx.toPosixSlashes:null),a=r===i,l=a&&o?o(r):r;return a===!1&&(l=o?o(r):r,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Yr.matchBase(r,e,t,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Yr.matchBase=(r,e,t,i=yx.isWindows(t))=>(e instanceof RegExp?e:Yr.makeRe(e,t)).test(oBe.basename(r));Yr.isMatch=(r,e,t)=>Yr(e,t)(r);Yr.parse=(r,e)=>Array.isArray(r)?r.map(t=>Yr.parse(t,e)):Ix(r,{...e,fastpaths:!1});Yr.scan=(r,e)=>aBe(r,e);Yr.compileRe=(r,e,t=!1,i=!1)=>{if(t===!0)return r.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${r.output})${o}`;r&&r.negated===!0&&(a=`^(?!${a}).*$`);let l=Yr.toRegex(a,e);return i===!0&&(l.state=r),l};Yr.makeRe=(r,e={},t=!1,i=!1)=>{if(!r||typeof r!="string")throw new TypeError("Expected a non-empty string");let n={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(r[0]==="."||r[0]==="*")&&(n.output=Ix.fastpaths(r,e)),n.output||(n=Ix(r,e)),Yr.compileRe(n,e,t,i)};Yr.toRegex=(r,e)=>{try{let t=e||{};return new RegExp(r,t.flags||(t.nocase?"i":""))}catch(t){if(e&&e.debug===!0)throw t;return/$^/}};Yr.constants=ABe;CW.exports=Yr});var wx=w((net,EW)=>{"use strict";EW.exports=mW()});var yn=w((set,BW)=>{"use strict";var yW=J("util"),wW=$J(),Lo=wx(),Bx=Rd(),IW=r=>r===""||r==="./",Sr=(r,e,t)=>{e=[].concat(e),r=[].concat(r);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),t&&t.onResult&&t.onResult(u)};for(let u=0;u!i.has(u));if(t&&c.length===0){if(t.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(t.nonull===!0||t.nullglob===!0)return t.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};Sr.match=Sr;Sr.matcher=(r,e)=>Lo(r,e);Sr.isMatch=(r,e,t)=>Lo(e,t)(r);Sr.any=Sr.isMatch;Sr.not=(r,e,t={})=>{e=[].concat(e).map(String);let i=new Set,n=[],o=Sr(r,e,{...t,onResult:a=>{t.onResult&&t.onResult(a),n.push(a.output)}});for(let a of n)o.includes(a)||i.add(a);return[...i]};Sr.contains=(r,e,t)=>{if(typeof r!="string")throw new TypeError(`Expected a string: "${yW.inspect(r)}"`);if(Array.isArray(e))return e.some(i=>Sr.contains(r,i,t));if(typeof e=="string"){if(IW(r)||IW(e))return!1;if(r.includes(e)||r.startsWith("./")&&r.slice(2).includes(e))return!0}return Sr.isMatch(r,e,{...t,contains:!0})};Sr.matchKeys=(r,e,t)=>{if(!Bx.isObject(r))throw new TypeError("Expected the first argument to be an object");let i=Sr(Object.keys(r),e,t),n={};for(let s of i)n[s]=r[s];return n};Sr.some=(r,e,t)=>{let i=[].concat(r);for(let n of[].concat(e)){let s=Lo(String(n),t);if(i.some(o=>s(o)))return!0}return!1};Sr.every=(r,e,t)=>{let i=[].concat(r);for(let n of[].concat(e)){let s=Lo(String(n),t);if(!i.every(o=>s(o)))return!1}return!0};Sr.all=(r,e,t)=>{if(typeof r!="string")throw new TypeError(`Expected a string: "${yW.inspect(r)}"`);return[].concat(e).every(i=>Lo(i,t)(r))};Sr.capture=(r,e,t)=>{let i=Bx.isWindows(t),s=Lo.makeRe(String(r),{...t,capture:!0}).exec(i?Bx.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};Sr.makeRe=(...r)=>Lo.makeRe(...r);Sr.scan=(...r)=>Lo.scan(...r);Sr.parse=(r,e)=>{let t=[];for(let i of[].concat(r||[]))for(let n of wW(String(i),e))t.push(Lo.parse(n,e));return t};Sr.braces=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(r)?[r]:wW(r,e)};Sr.braceExpand=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");return Sr.braces(r,{...e,expand:!0})};BW.exports=Sr});var bW=w((oet,QW)=>{"use strict";QW.exports=({onlyFirst:r=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,r?void 0:"g")}});var vW=w((aet,SW)=>{"use strict";var cBe=bW();SW.exports=r=>typeof r=="string"?r.replace(cBe(),""):r});var HW=w((Eet,UW)=>{"use strict";UW.exports=(...r)=>[...new Set([].concat(...r))]});var Yx=w((Iet,jW)=>{"use strict";var BBe=J("stream"),GW=BBe.PassThrough,QBe=Array.prototype.slice;jW.exports=bBe;function bBe(){let r=[],e=!1,t=QBe.call(arguments),i=t[t.length-1];i&&!Array.isArray(i)&&i.pipe==null?t.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=GW(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(My,"__esModule",{value:!0});function SBe(r){return r.reduce((e,t)=>[].concat(e,t),[])}My.flatten=SBe;function vBe(r,e){let t=[[]],i=0;for(let n of r)e(n)?(i++,t[i]=[]):t[i].push(n);return t}My.splitWhen=vBe});var JW=w(jx=>{"use strict";Object.defineProperty(jx,"__esModule",{value:!0});function xBe(r){return r.code==="ENOENT"}jx.isEnoentCodeError=xBe});var WW=w(Jx=>{"use strict";Object.defineProperty(Jx,"__esModule",{value:!0});var qx=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function PBe(r,e){return new qx(r,e)}Jx.createDirentFromStats=PBe});var zW=w(uf=>{"use strict";Object.defineProperty(uf,"__esModule",{value:!0});var DBe=J("path"),kBe=2,RBe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function FBe(r){return r.replace(/\\/g,"/")}uf.unixify=FBe;function NBe(r,e){return DBe.resolve(r,e)}uf.makeAbsolute=NBe;function LBe(r){return r.replace(RBe,"\\$2")}uf.escape=LBe;function TBe(r){if(r.charAt(0)==="."){let e=r.charAt(1);if(e==="/"||e==="\\")return r.slice(kBe)}return r}uf.removeLeadingDotSegment=TBe});var XW=w((bet,VW)=>{VW.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1}});var $W=w((vet,ZW)=>{var OBe=XW(),_W={"{":"}","(":")","[":"]"},MBe=function(r){if(r[0]==="!")return!0;for(var e=0,t=-2,i=-2,n=-2,s=-2,o=-2;ee&&(o===-1||o>i||(o=r.indexOf("\\",e),o===-1||o>i)))||n!==-1&&r[e]==="{"&&r[e+1]!=="}"&&(n=r.indexOf("}",e),n>e&&(o=r.indexOf("\\",e),o===-1||o>n))||s!==-1&&r[e]==="("&&r[e+1]==="?"&&/[:!=]/.test(r[e+2])&&r[e+3]!==")"&&(s=r.indexOf(")",e),s>e&&(o=r.indexOf("\\",e),o===-1||o>s))||t!==-1&&r[e]==="("&&r[e+1]!=="|"&&(tt&&(o=r.indexOf("\\",t),o===-1||o>s))))return!0;if(r[e]==="\\"){var a=r[e+1];e+=2;var l=_W[a];if(l){var c=r.indexOf(l,e);c!==-1&&(e=c+1)}if(r[e]==="!")return!0}else e++}return!1},KBe=function(r){if(r[0]==="!")return!0;for(var e=0;e{"use strict";var UBe=$W(),HBe=J("path").posix.dirname,GBe=J("os").platform()==="win32",Wx="/",YBe=/\\/g,jBe=/[\{\[].*[\}\]]$/,qBe=/(^|[^\\])([\{\[]|\([^\)]+$)/,JBe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;e3.exports=function(e,t){var i=Object.assign({flipBackslashes:!0},t);i.flipBackslashes&&GBe&&e.indexOf(Wx)<0&&(e=e.replace(YBe,Wx)),jBe.test(e)&&(e+=Wx),e+="a";do e=HBe(e);while(UBe(e)||qBe.test(e));return e.replace(JBe,"$1")}});var c3=w($r=>{"use strict";Object.defineProperty($r,"__esModule",{value:!0});var WBe=J("path"),zBe=t3(),r3=yn(),VBe=wx(),i3="**",XBe="\\",_Be=/[*?]|^!/,ZBe=/\[.*]/,$Be=/(?:^|[^!*+?@])\(.*\|.*\)/,e0e=/[!*+?@]\(.*\)/,t0e=/{.*(?:,|\.\.).*}/;function n3(r,e={}){return!s3(r,e)}$r.isStaticPattern=n3;function s3(r,e={}){return!!(e.caseSensitiveMatch===!1||r.includes(XBe)||_Be.test(r)||ZBe.test(r)||$Be.test(r)||e.extglob!==!1&&e0e.test(r)||e.braceExpansion!==!1&&t0e.test(r))}$r.isDynamicPattern=s3;function r0e(r){return Ky(r)?r.slice(1):r}$r.convertToPositivePattern=r0e;function i0e(r){return"!"+r}$r.convertToNegativePattern=i0e;function Ky(r){return r.startsWith("!")&&r[1]!=="("}$r.isNegativePattern=Ky;function o3(r){return!Ky(r)}$r.isPositivePattern=o3;function n0e(r){return r.filter(Ky)}$r.getNegativePatterns=n0e;function s0e(r){return r.filter(o3)}$r.getPositivePatterns=s0e;function o0e(r){return zBe(r,{flipBackslashes:!1})}$r.getBaseDirectory=o0e;function a0e(r){return r.includes(i3)}$r.hasGlobStar=a0e;function a3(r){return r.endsWith("/"+i3)}$r.endsWithSlashGlobStar=a3;function A0e(r){let e=WBe.basename(r);return a3(r)||n3(e)}$r.isAffectDepthOfReadingPattern=A0e;function l0e(r){return r.reduce((e,t)=>e.concat(A3(t)),[])}$r.expandPatternsWithBraceExpansion=l0e;function A3(r){return r3.braces(r,{expand:!0,nodupes:!0})}$r.expandBraceExpansion=A3;function c0e(r,e){let t=VBe.scan(r,Object.assign(Object.assign({},e),{parts:!0}));return t.parts.length===0?[r]:t.parts}$r.getPatternParts=c0e;function l3(r,e){return r3.makeRe(r,e)}$r.makeRe=l3;function u0e(r,e){return r.map(t=>l3(t,e))}$r.convertPatternsToRe=u0e;function g0e(r,e){return e.some(t=>t.test(r))}$r.matchAny=g0e});var g3=w(zx=>{"use strict";Object.defineProperty(zx,"__esModule",{value:!0});var f0e=Yx();function h0e(r){let e=f0e(r);return r.forEach(t=>{t.once("error",i=>e.emit("error",i))}),e.once("close",()=>u3(r)),e.once("end",()=>u3(r)),e}zx.merge=h0e;function u3(r){r.forEach(e=>e.emit("close"))}});var f3=w(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});function p0e(r){return typeof r=="string"}Uy.isString=p0e;function d0e(r){return r===""}Uy.isEmpty=d0e});var Da=w(Pa=>{"use strict";Object.defineProperty(Pa,"__esModule",{value:!0});var C0e=qW();Pa.array=C0e;var m0e=JW();Pa.errno=m0e;var E0e=WW();Pa.fs=E0e;var I0e=zW();Pa.path=I0e;var y0e=c3();Pa.pattern=y0e;var w0e=g3();Pa.stream=w0e;var B0e=f3();Pa.string=B0e});var m3=w(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});var uc=Da();function Q0e(r,e){let t=h3(r),i=p3(r,e.ignore),n=t.filter(l=>uc.pattern.isStaticPattern(l,e)),s=t.filter(l=>uc.pattern.isDynamicPattern(l,e)),o=Vx(n,i,!1),a=Vx(s,i,!0);return o.concat(a)}ka.generate=Q0e;function Vx(r,e,t){let i=d3(r);return"."in i?[Xx(".",r,e,t)]:C3(i,e,t)}ka.convertPatternsToTasks=Vx;function h3(r){return uc.pattern.getPositivePatterns(r)}ka.getPositivePatterns=h3;function p3(r,e){return uc.pattern.getNegativePatterns(r).concat(e).map(uc.pattern.convertToPositivePattern)}ka.getNegativePatternsAsPositive=p3;function d3(r){let e={};return r.reduce((t,i)=>{let n=uc.pattern.getBaseDirectory(i);return n in t?t[n].push(i):t[n]=[i],t},e)}ka.groupPatternsByBaseDirectory=d3;function C3(r,e,t){return Object.keys(r).map(i=>Xx(i,r[i],e,t))}ka.convertPatternGroupsToTasks=C3;function Xx(r,e,t,i){return{dynamic:i,positive:e,negative:t,base:r,patterns:[].concat(e,t.map(uc.pattern.convertToNegativePattern))}}ka.convertPatternGroupToTask=Xx});var I3=w(Hy=>{"use strict";Object.defineProperty(Hy,"__esModule",{value:!0});Hy.read=void 0;function b0e(r,e,t){e.fs.lstat(r,(i,n)=>{if(i!==null){E3(t,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){_x(t,n);return}e.fs.stat(r,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){E3(t,s);return}_x(t,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),_x(t,o)})})}Hy.read=b0e;function E3(r,e){r(e)}function _x(r,e){r(null,e)}});var y3=w(Gy=>{"use strict";Object.defineProperty(Gy,"__esModule",{value:!0});Gy.read=void 0;function S0e(r,e){let t=e.fs.lstatSync(r);if(!t.isSymbolicLink()||!e.followSymbolicLink)return t;try{let i=e.fs.statSync(r);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return t;throw i}}Gy.read=S0e});var w3=w(kA=>{"use strict";Object.defineProperty(kA,"__esModule",{value:!0});kA.createFileSystemAdapter=kA.FILE_SYSTEM_ADAPTER=void 0;var Yy=J("fs");kA.FILE_SYSTEM_ADAPTER={lstat:Yy.lstat,stat:Yy.stat,lstatSync:Yy.lstatSync,statSync:Yy.statSync};function v0e(r){return r===void 0?kA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},kA.FILE_SYSTEM_ADAPTER),r)}kA.createFileSystemAdapter=v0e});var B3=w($x=>{"use strict";Object.defineProperty($x,"__esModule",{value:!0});var x0e=w3(),Zx=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=x0e.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,t){return e!=null?e:t}};$x.default=Zx});var gc=w(RA=>{"use strict";Object.defineProperty(RA,"__esModule",{value:!0});RA.statSync=RA.stat=RA.Settings=void 0;var Q3=I3(),P0e=y3(),eP=B3();RA.Settings=eP.default;function D0e(r,e,t){if(typeof e=="function"){Q3.read(r,tP(),e);return}Q3.read(r,tP(e),t)}RA.stat=D0e;function k0e(r,e){let t=tP(e);return P0e.read(r,t)}RA.statSync=k0e;function tP(r={}){return r instanceof eP.default?r:new eP.default(r)}});var S3=w((Ket,b3)=>{b3.exports=R0e;function R0e(r,e){var t,i,n,s=!0;Array.isArray(r)?(t=[],i=r.length):(n=Object.keys(r),t={},i=n.length);function o(l){function c(){e&&e(l,t),e=null}s?process.nextTick(c):c()}function a(l,c,u){t[l]=u,(--i===0||c)&&o(c)}i?n?n.forEach(function(l){r[l](function(c,u){a(l,c,u)})}):r.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var rP=w(qy=>{"use strict";Object.defineProperty(qy,"__esModule",{value:!0});qy.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var jy=process.versions.node.split(".");if(jy[0]===void 0||jy[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var v3=Number.parseInt(jy[0],10),F0e=Number.parseInt(jy[1],10),x3=10,N0e=10,L0e=v3>x3,T0e=v3===x3&&F0e>=N0e;qy.IS_SUPPORT_READDIR_WITH_FILE_TYPES=L0e||T0e});var P3=w(Jy=>{"use strict";Object.defineProperty(Jy,"__esModule",{value:!0});Jy.createDirentFromStats=void 0;var iP=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function O0e(r,e){return new iP(r,e)}Jy.createDirentFromStats=O0e});var nP=w(Wy=>{"use strict";Object.defineProperty(Wy,"__esModule",{value:!0});Wy.fs=void 0;var M0e=P3();Wy.fs=M0e});var sP=w(zy=>{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.joinPathSegments=void 0;function K0e(r,e,t){return r.endsWith(t)?r+e:r+t+e}zy.joinPathSegments=K0e});var L3=w(FA=>{"use strict";Object.defineProperty(FA,"__esModule",{value:!0});FA.readdir=FA.readdirWithFileTypes=FA.read=void 0;var U0e=gc(),D3=S3(),H0e=rP(),k3=nP(),R3=sP();function G0e(r,e,t){if(!e.stats&&H0e.IS_SUPPORT_READDIR_WITH_FILE_TYPES){F3(r,e,t);return}N3(r,e,t)}FA.read=G0e;function F3(r,e,t){e.fs.readdir(r,{withFileTypes:!0},(i,n)=>{if(i!==null){Vy(t,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:R3.joinPathSegments(r,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){oP(t,s);return}let o=s.map(a=>Y0e(a,e));D3(o,(a,l)=>{if(a!==null){Vy(t,a);return}oP(t,l)})})}FA.readdirWithFileTypes=F3;function Y0e(r,e){return t=>{if(!r.dirent.isSymbolicLink()){t(null,r);return}e.fs.stat(r.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){t(i);return}t(null,r);return}r.dirent=k3.fs.createDirentFromStats(r.name,n),t(null,r)})}}function N3(r,e,t){e.fs.readdir(r,(i,n)=>{if(i!==null){Vy(t,i);return}let s=n.map(o=>{let a=R3.joinPathSegments(r,o,e.pathSegmentSeparator);return l=>{U0e.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:k3.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});D3(s,(o,a)=>{if(o!==null){Vy(t,o);return}oP(t,a)})})}FA.readdir=N3;function Vy(r,e){r(e)}function oP(r,e){r(null,e)}});var U3=w(NA=>{"use strict";Object.defineProperty(NA,"__esModule",{value:!0});NA.readdir=NA.readdirWithFileTypes=NA.read=void 0;var j0e=gc(),q0e=rP(),T3=nP(),O3=sP();function J0e(r,e){return!e.stats&&q0e.IS_SUPPORT_READDIR_WITH_FILE_TYPES?M3(r,e):K3(r,e)}NA.read=J0e;function M3(r,e){return e.fs.readdirSync(r,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:O3.joinPathSegments(r,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=T3.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}NA.readdirWithFileTypes=M3;function K3(r,e){return e.fs.readdirSync(r).map(i=>{let n=O3.joinPathSegments(r,i,e.pathSegmentSeparator),s=j0e.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:T3.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}NA.readdir=K3});var H3=w(LA=>{"use strict";Object.defineProperty(LA,"__esModule",{value:!0});LA.createFileSystemAdapter=LA.FILE_SYSTEM_ADAPTER=void 0;var gf=J("fs");LA.FILE_SYSTEM_ADAPTER={lstat:gf.lstat,stat:gf.stat,lstatSync:gf.lstatSync,statSync:gf.statSync,readdir:gf.readdir,readdirSync:gf.readdirSync};function W0e(r){return r===void 0?LA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},LA.FILE_SYSTEM_ADAPTER),r)}LA.createFileSystemAdapter=W0e});var G3=w(AP=>{"use strict";Object.defineProperty(AP,"__esModule",{value:!0});var z0e=J("path"),V0e=gc(),X0e=H3(),aP=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=X0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,z0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new V0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e!=null?e:t}};AP.default=aP});var Xy=w(TA=>{"use strict";Object.defineProperty(TA,"__esModule",{value:!0});TA.Settings=TA.scandirSync=TA.scandir=void 0;var Y3=L3(),_0e=U3(),lP=G3();TA.Settings=lP.default;function Z0e(r,e,t){if(typeof e=="function"){Y3.read(r,cP(),e);return}Y3.read(r,cP(e),t)}TA.scandir=Z0e;function $0e(r,e){let t=cP(e);return _0e.read(r,t)}TA.scandirSync=$0e;function cP(r={}){return r instanceof lP.default?r:new lP.default(r)}});var q3=w((Vet,j3)=>{"use strict";function eQe(r){var e=new r,t=e;function i(){var s=e;return s.next?e=s.next:(e=new r,t=e),s.next=null,s}function n(s){t.next=s,t=s}return{get:i,release:n}}j3.exports=eQe});var W3=w((Xet,uP)=>{"use strict";var tQe=q3();function J3(r,e,t){if(typeof r=="function"&&(t=e,e=r,r=null),t<1)throw new Error("fastqueue concurrency must be greater than 1");var i=tQe(rQe),n=null,s=null,o=0,a=null,l={push:C,drain:ps,saturated:ps,pause:u,paused:!1,concurrency:t,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:y,empty:ps,kill:v,killAndDrain:D,error:L};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,j=0;H;)H=H.next,j++;return j}function f(){for(var H=n,j=[];H;)j.push(H.value),H=H.next;return j}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Mo,"__esModule",{value:!0});Mo.joinPathSegments=Mo.replacePathSegmentSeparator=Mo.isAppliedFilter=Mo.isFatalError=void 0;function nQe(r,e){return r.errorFilter===null?!0:!r.errorFilter(e)}Mo.isFatalError=nQe;function sQe(r,e){return r===null||r(e)}Mo.isAppliedFilter=sQe;function oQe(r,e){return r.split(/[/\\]/).join(e)}Mo.replacePathSegmentSeparator=oQe;function aQe(r,e,t){return r===""?e:r.endsWith(t)?r+e:r+t+e}Mo.joinPathSegments=aQe});var hP=w(fP=>{"use strict";Object.defineProperty(fP,"__esModule",{value:!0});var AQe=_y(),gP=class{constructor(e,t){this._root=e,this._settings=t,this._root=AQe.replacePathSegmentSeparator(e,t.pathSegmentSeparator)}};fP.default=gP});var CP=w(dP=>{"use strict";Object.defineProperty(dP,"__esModule",{value:!0});var lQe=J("events"),cQe=Xy(),uQe=W3(),Zy=_y(),gQe=hP(),pP=class extends gQe.default{constructor(e,t){super(e,t),this._settings=t,this._scandir=cQe.scandir,this._emitter=new lQe.EventEmitter,this._queue=uQe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,t){let i={directory:e,base:t};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,t){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){t(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);t(null,void 0)})}_handleError(e){this._isDestroyed||!Zy.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,t){if(this._isDestroyed||this._isFatalError)return;let i=e.path;t!==void 0&&(e.path=Zy.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),Zy.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&Zy.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};dP.default=pP});var z3=w(EP=>{"use strict";Object.defineProperty(EP,"__esModule",{value:!0});var fQe=CP(),mP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new fQe.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(t=>{hQe(e,t)}),this._reader.onEntry(t=>{this._storage.add(t)}),this._reader.onEnd(()=>{pQe(e,[...this._storage])}),this._reader.read()}};EP.default=mP;function hQe(r,e){r(e)}function pQe(r,e){r(null,e)}});var V3=w(yP=>{"use strict";Object.defineProperty(yP,"__esModule",{value:!0});var dQe=J("stream"),CQe=CP(),IP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new CQe.default(this._root,this._settings),this._stream=new dQe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};yP.default=IP});var X3=w(BP=>{"use strict";Object.defineProperty(BP,"__esModule",{value:!0});var mQe=Xy(),$y=_y(),EQe=hP(),wP=class extends EQe.default{constructor(){super(...arguments),this._scandir=mQe.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,t){this._queue.add({directory:e,base:t})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,t){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,t)}catch(i){this._handleError(i)}}_handleError(e){if(!!$y.isFatalError(this._settings,e))throw e}_handleEntry(e,t){let i=e.path;t!==void 0&&(e.path=$y.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),$y.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&$y.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};BP.default=wP});var _3=w(bP=>{"use strict";Object.defineProperty(bP,"__esModule",{value:!0});var IQe=X3(),QP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new IQe.default(this._root,this._settings)}read(){return this._reader.read()}};bP.default=QP});var Z3=w(vP=>{"use strict";Object.defineProperty(vP,"__esModule",{value:!0});var yQe=J("path"),wQe=Xy(),SP=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,yQe.sep),this.fsScandirSettings=new wQe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e!=null?e:t}};vP.default=SP});var PP=w(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.Settings=Ko.walkStream=Ko.walkSync=Ko.walk=void 0;var $3=z3(),BQe=V3(),QQe=_3(),xP=Z3();Ko.Settings=xP.default;function bQe(r,e,t){if(typeof e=="function"){new $3.default(r,ew()).read(e);return}new $3.default(r,ew(e)).read(t)}Ko.walk=bQe;function SQe(r,e){let t=ew(e);return new QQe.default(r,t).read()}Ko.walkSync=SQe;function vQe(r,e){let t=ew(e);return new BQe.default(r,t).read()}Ko.walkStream=vQe;function ew(r={}){return r instanceof xP.default?r:new xP.default(r)}});var RP=w(kP=>{"use strict";Object.defineProperty(kP,"__esModule",{value:!0});var xQe=J("path"),PQe=gc(),e4=Da(),DP=class{constructor(e){this._settings=e,this._fsStatSettings=new PQe.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return xQe.resolve(this._settings.cwd,e)}_makeEntry(e,t){let i={name:t,path:t,dirent:e4.fs.createDirentFromStats(t,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!e4.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};kP.default=DP});var LP=w(NP=>{"use strict";Object.defineProperty(NP,"__esModule",{value:!0});var DQe=J("stream"),kQe=gc(),RQe=PP(),FQe=RP(),FP=class extends FQe.default{constructor(){super(...arguments),this._walkStream=RQe.walkStream,this._stat=kQe.stat}dynamic(e,t){return this._walkStream(e,t)}static(e,t){let i=e.map(this._getFullEntryPath,this),n=new DQe.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],t).then(l=>{l!==null&&t.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,t)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((t,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?t(s):i(n))})}};NP.default=FP});var t4=w(OP=>{"use strict";Object.defineProperty(OP,"__esModule",{value:!0});var ff=Da(),TP=class{constructor(e,t,i){this._patterns=e,this._settings=t,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=ff.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let t of e){let i=this._getPatternSegments(t),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:t,segments:i,sections:n})}}_getPatternSegments(e){return ff.pattern.getPatternParts(e,this._micromatchOptions).map(i=>ff.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:ff.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return ff.array.splitWhen(e,t=>t.dynamic&&ff.pattern.hasGlobStar(t.pattern))}};OP.default=TP});var r4=w(KP=>{"use strict";Object.defineProperty(KP,"__esModule",{value:!0});var NQe=t4(),MP=class extends NQe.default{match(e){let t=e.split("/"),i=t.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||t.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};KP.default=MP});var i4=w(HP=>{"use strict";Object.defineProperty(HP,"__esModule",{value:!0});var tw=Da(),LQe=r4(),UP=class{constructor(e,t){this._settings=e,this._micromatchOptions=t}getFilter(e,t,i){let n=this._getMatcher(t),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new LQe.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let t=e.filter(tw.pattern.isAffectDepthOfReadingPattern);return tw.pattern.convertPatternsToRe(t,this._micromatchOptions)}_filter(e,t,i,n){let s=this._getEntryLevel(e,t.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(t))return!1;let o=tw.path.removeLeadingDotSegment(t.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,t){let i=e.split("/").length;return t.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,t){return!this._settings.baseNameMatch&&!t.match(e)}_isSkippedByNegativePatterns(e,t){return!tw.pattern.matchAny(e,t)}};HP.default=UP});var n4=w(YP=>{"use strict";Object.defineProperty(YP,"__esModule",{value:!0});var Ud=Da(),GP=class{constructor(e,t){this._settings=e,this._micromatchOptions=t,this.index=new Map}getFilter(e,t){let i=Ud.pattern.convertPatternsToRe(e,this._micromatchOptions),n=Ud.pattern.convertPatternsToRe(t,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,t,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,t)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,t){if(!this._settings.absolute)return!1;let i=Ud.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,t)}_isMatchToPatterns(e,t){let i=Ud.path.removeLeadingDotSegment(e);return Ud.pattern.matchAny(i,t)}};YP.default=GP});var s4=w(qP=>{"use strict";Object.defineProperty(qP,"__esModule",{value:!0});var TQe=Da(),jP=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return TQe.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};qP.default=jP});var a4=w(WP=>{"use strict";Object.defineProperty(WP,"__esModule",{value:!0});var o4=Da(),JP=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let t=e.path;return this._settings.absolute&&(t=o4.path.makeAbsolute(this._settings.cwd,t),t=o4.path.unixify(t)),this._settings.markDirectories&&e.dirent.isDirectory()&&(t+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:t}):t}};WP.default=JP});var rw=w(VP=>{"use strict";Object.defineProperty(VP,"__esModule",{value:!0});var OQe=J("path"),MQe=i4(),KQe=n4(),UQe=s4(),HQe=a4(),zP=class{constructor(e){this._settings=e,this.errorFilter=new UQe.default(this._settings),this.entryFilter=new KQe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new MQe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new HQe.default(this._settings)}_getRootDirectory(e){return OQe.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let t=e.base==="."?"":e.base;return{basePath:t,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(t,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};VP.default=zP});var A4=w(_P=>{"use strict";Object.defineProperty(_P,"__esModule",{value:!0});var GQe=LP(),YQe=rw(),XP=class extends YQe.default{constructor(){super(...arguments),this._reader=new GQe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(t,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};_P.default=XP});var l4=w($P=>{"use strict";Object.defineProperty($P,"__esModule",{value:!0});var jQe=J("stream"),qQe=LP(),JQe=rw(),ZP=class extends JQe.default{constructor(){super(...arguments),this._reader=new qQe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(t,e,i),s=new jQe.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};$P.default=ZP});var c4=w(tD=>{"use strict";Object.defineProperty(tD,"__esModule",{value:!0});var WQe=gc(),zQe=PP(),VQe=RP(),eD=class extends VQe.default{constructor(){super(...arguments),this._walkSync=zQe.walkSync,this._statSync=WQe.statSync}dynamic(e,t){return this._walkSync(e,t)}static(e,t){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,t);o===null||!t.entryFilter(o)||i.push(o)}return i}_getEntry(e,t,i){try{let n=this._getStat(e);return this._makeEntry(n,t)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};tD.default=eD});var u4=w(iD=>{"use strict";Object.defineProperty(iD,"__esModule",{value:!0});var XQe=c4(),_Qe=rw(),rD=class extends _Qe.default{constructor(){super(...arguments),this._reader=new XQe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(t,e,i).map(i.transform)}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};iD.default=rD});var g4=w(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});var hf=J("fs"),ZQe=J("os"),$Qe=ZQe.cpus().length;Hd.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:hf.lstat,lstatSync:hf.lstatSync,stat:hf.stat,statSync:hf.statSync,readdir:hf.readdir,readdirSync:hf.readdirSync};var nD=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,$Qe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,t){return e===void 0?t:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},Hd.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};Hd.default=nD});var iw=w((Itt,h4)=>{"use strict";var f4=m3(),ebe=A4(),tbe=l4(),rbe=u4(),sD=g4(),fc=Da();async function oD(r,e){pf(r);let t=aD(r,ebe.default,e),i=await Promise.all(t);return fc.array.flatten(i)}(function(r){function e(o,a){pf(o);let l=aD(o,rbe.default,a);return fc.array.flatten(l)}r.sync=e;function t(o,a){pf(o);let l=aD(o,tbe.default,a);return fc.stream.merge(l)}r.stream=t;function i(o,a){pf(o);let l=[].concat(o),c=new sD.default(a);return f4.generate(l,c)}r.generateTasks=i;function n(o,a){pf(o);let l=new sD.default(a);return fc.pattern.isDynamicPattern(o,l)}r.isDynamicPattern=n;function s(o){return pf(o),fc.path.escape(o)}r.escapePath=s})(oD||(oD={}));function aD(r,e,t){let i=[].concat(r),n=new sD.default(t),s=f4.generate(i,n),o=new e(n);return s.map(o.read,o)}function pf(r){if(![].concat(r).every(i=>fc.string.isString(i)&&!fc.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}h4.exports=oD});var d4=w(hc=>{"use strict";var{promisify:ibe}=J("util"),p4=J("fs");async function AD(r,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return(await ibe(p4[r])(t))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function lD(r,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return p4[r](t)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}hc.isFile=AD.bind(null,"stat","isFile");hc.isDirectory=AD.bind(null,"stat","isDirectory");hc.isSymlink=AD.bind(null,"lstat","isSymbolicLink");hc.isFileSync=lD.bind(null,"statSync","isFile");hc.isDirectorySync=lD.bind(null,"statSync","isDirectory");hc.isSymlinkSync=lD.bind(null,"lstatSync","isSymbolicLink")});var y4=w((wtt,cD)=>{"use strict";var pc=J("path"),C4=d4(),m4=r=>r.length>1?`{${r.join(",")}}`:r[0],E4=(r,e)=>{let t=r[0]==="!"?r.slice(1):r;return pc.isAbsolute(t)?t:pc.join(e,t)},nbe=(r,e)=>pc.extname(r)?`**/${r}`:`**/${r}.${m4(e)}`,I4=(r,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(t=>pc.posix.join(r,nbe(t,e.extensions))):e.files?e.files.map(t=>pc.posix.join(r,`**/${t}`)):e.extensions?[pc.posix.join(r,`**/*.${m4(e.extensions)}`)]:[pc.posix.join(r,"**")]};cD.exports=async(r,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=await Promise.all([].concat(r).map(async i=>await C4.isDirectory(E4(i,e.cwd))?I4(i,e):i));return[].concat.apply([],t)};cD.exports.sync=(r,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=[].concat(r).map(i=>C4.isDirectorySync(E4(i,e.cwd))?I4(i,e):i);return[].concat.apply([],t)}});var P4=w((Btt,x4)=>{function w4(r){return Array.isArray(r)?r:[r]}var S4="",B4=" ",uD="\\",sbe=/^\s+$/,obe=/^\\!/,abe=/^\\#/,Abe=/\r?\n/g,lbe=/^\.*\/|^\.+$/,gD="/",Q4=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",cbe=(r,e,t)=>Object.defineProperty(r,e,{value:t}),ube=/([0-z])-([0-z])/g,gbe=r=>r.replace(ube,(e,t,i)=>t.charCodeAt(0)<=i.charCodeAt(0)?e:S4),fbe=r=>{let{length:e}=r;return r.slice(0,e-e%2)},hbe=[[/\\?\s+$/,r=>r.indexOf("\\")===0?B4:S4],[/\\\s/g,()=>B4],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>uD],[/\\\\/g,()=>uD],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,i,n)=>e===uD?`\\[${t}${fbe(i)}${n}`:n==="]"&&i.length%2===0?`[${gbe(t)}${i}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(r,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],b4=Object.create(null),pbe=(r,e)=>{let t=b4[r];return t||(t=hbe.reduce((i,n)=>i.replace(n[0],n[1].bind(r)),r),b4[r]=t),e?new RegExp(t,"i"):new RegExp(t)},pD=r=>typeof r=="string",dbe=r=>r&&pD(r)&&!sbe.test(r)&&r.indexOf("#")!==0,Cbe=r=>r.split(Abe),fD=class{constructor(e,t,i,n){this.origin=e,this.pattern=t,this.negative=i,this.regex=n}},mbe=(r,e)=>{let t=r,i=!1;r.indexOf("!")===0&&(i=!0,r=r.substr(1)),r=r.replace(obe,"!").replace(abe,"#");let n=pbe(r,e);return new fD(t,r,i,n)},Ebe=(r,e)=>{throw new e(r)},Ra=(r,e,t)=>pD(r)?r?Ra.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),v4=r=>lbe.test(r);Ra.isNotRelative=v4;Ra.convert=r=>r;var hD=class{constructor({ignorecase:e=!0}={}){cbe(this,Q4,!0),this._rules=[],this._ignorecase=e,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[Q4]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(dbe(e)){let t=mbe(e,this._ignorecase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,w4(pD(e)?Cbe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!t)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,t,i,n){let s=e&&Ra.convert(e);return Ra(s,e,Ebe),this._t(s,t,i,n)}_t(e,t,i,n){if(e in t)return t[e];if(n||(n=e.split(gD)),n.pop(),!n.length)return t[e]=this._testOne(e,i);let s=this._t(n.join(gD)+gD,t,i,n);return t[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return w4(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},nw=r=>new hD(r),Ibe=()=>!1,ybe=r=>Ra(r&&Ra.convert(r),r,Ibe);nw.isPathValid=ybe;nw.default=nw;x4.exports=nw;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");Ra.convert=r;let e=/^[a-z]:\//i;Ra.isNotRelative=t=>e.test(t)||v4(t)}});var k4=w((Qtt,D4)=>{"use strict";D4.exports=r=>{let e=/^\\\\\?\\/.test(r),t=/[^\u0000-\u0080]+/.test(r);return e||t?r:r.replace(/\\/g,"/")}});var M4=w((btt,dD)=>{"use strict";var{promisify:wbe}=J("util"),R4=J("fs"),Fa=J("path"),F4=iw(),Bbe=P4(),Gd=k4(),N4=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],Qbe=wbe(R4.readFile),bbe=r=>e=>e.startsWith("!")?"!"+Fa.posix.join(r,e.slice(1)):Fa.posix.join(r,e),Sbe=(r,e)=>{let t=Gd(Fa.relative(e.cwd,Fa.dirname(e.fileName)));return r.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(bbe(t))},L4=r=>{let e=Bbe();for(let t of r)e.add(Sbe(t.content,{cwd:t.cwd,fileName:t.filePath}));return e},vbe=(r,e)=>{if(r=Gd(r),Fa.isAbsolute(e)){if(Gd(e).startsWith(r))return e;throw new Error(`Path ${e} is not in cwd ${r}`)}return Fa.join(r,e)},T4=(r,e)=>t=>r.ignores(Gd(Fa.relative(e,vbe(e,t.path||t)))),xbe=async(r,e)=>{let t=Fa.join(e,r),i=await Qbe(t,"utf8");return{cwd:e,filePath:t,content:i}},Pbe=(r,e)=>{let t=Fa.join(e,r),i=R4.readFileSync(t,"utf8");return{cwd:e,filePath:t,content:i}},O4=({ignore:r=[],cwd:e=Gd(process.cwd())}={})=>({ignore:r,cwd:e});dD.exports=async r=>{r=O4(r);let e=await F4("**/.gitignore",{ignore:N4.concat(r.ignore),cwd:r.cwd}),t=await Promise.all(e.map(n=>xbe(n,r.cwd))),i=L4(t);return T4(i,r.cwd)};dD.exports.sync=r=>{r=O4(r);let t=F4.sync("**/.gitignore",{ignore:N4.concat(r.ignore),cwd:r.cwd}).map(n=>Pbe(n,r.cwd)),i=L4(t);return T4(i,r.cwd)}});var U4=w((Stt,K4)=>{"use strict";var{Transform:Dbe}=J("stream"),sw=class extends Dbe{constructor(){super({objectMode:!0})}},CD=class extends sw{constructor(e){super(),this._filter=e}_transform(e,t,i){this._filter(e)&&this.push(e),i()}},mD=class extends sw{constructor(){super(),this._pushed=new Set}_transform(e,t,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};K4.exports={FilterStream:CD,UniqueStream:mD}});var wD=w((vtt,dc)=>{"use strict";var G4=J("fs"),ow=HW(),kbe=Yx(),aw=iw(),Aw=y4(),ED=M4(),{FilterStream:Rbe,UniqueStream:Fbe}=U4(),Y4=()=>!1,H4=r=>r[0]==="!",Nbe=r=>{if(!r.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},Lbe=(r={})=>{if(!r.cwd)return;let e;try{e=G4.statSync(r.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Tbe=r=>r.stats instanceof G4.Stats?r.path:r,lw=(r,e)=>{r=ow([].concat(r)),Nbe(r),Lbe(e);let t=[];e={ignore:[],expandDirectories:!0,...e};for(let[i,n]of r.entries()){if(H4(n))continue;let s=r.slice(i).filter(a=>H4(a)).map(a=>a.slice(1)),o={...e,ignore:e.ignore.concat(s)};t.push({pattern:n,options:o})}return t},Obe=(r,e)=>{let t={};return r.options.cwd&&(t.cwd=r.options.cwd),Array.isArray(r.options.expandDirectories)?t={...t,files:r.options.expandDirectories}:typeof r.options.expandDirectories=="object"&&(t={...t,...r.options.expandDirectories}),e(r.pattern,t)},ID=(r,e)=>r.options.expandDirectories?Obe(r,e):[r.pattern],j4=r=>r&&r.gitignore?ED.sync({cwd:r.cwd,ignore:r.ignore}):Y4,yD=r=>e=>{let{options:t}=r;return t.ignore&&Array.isArray(t.ignore)&&t.expandDirectories&&(t.ignore=Aw.sync(t.ignore)),{pattern:e,options:t}};dc.exports=async(r,e)=>{let t=lw(r,e),i=async()=>e&&e.gitignore?ED({cwd:e.cwd,ignore:e.ignore}):Y4,n=async()=>{let l=await Promise.all(t.map(async c=>{let u=await ID(c,Aw);return Promise.all(u.map(yD(c)))}));return ow(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>aw(l.pattern,l.options)));return ow(...a).filter(l=>!s(Tbe(l)))};dc.exports.sync=(r,e)=>{let t=lw(r,e),i=[];for(let o of t){let a=ID(o,Aw.sync).map(yD(o));i.push(...a)}let n=j4(e),s=[];for(let o of i)s=ow(s,aw.sync(o.pattern,o.options));return s.filter(o=>!n(o))};dc.exports.stream=(r,e)=>{let t=lw(r,e),i=[];for(let a of t){let l=ID(a,Aw.sync).map(yD(a));i.push(...l)}let n=j4(e),s=new Rbe(a=>!n(a)),o=new Fbe;return kbe(i.map(a=>aw.stream(a.pattern,a.options))).pipe(s).pipe(o)};dc.exports.generateGlobTasks=lw;dc.exports.hasMagic=(r,e)=>[].concat(r).some(t=>aw.isDynamicPattern(t,e));dc.exports.gitignore=ED});var bn=w((jtt,s8)=>{function Xbe(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}s8.exports=Xbe});var kD=w((qtt,o8)=>{var _be=typeof global=="object"&&global&&global.Object===Object&&global;o8.exports=_be});var ds=w((Jtt,a8)=>{var Zbe=kD(),$be=typeof self=="object"&&self&&self.Object===Object&&self,eSe=Zbe||$be||Function("return this")();a8.exports=eSe});var l8=w((Wtt,A8)=>{var tSe=ds(),rSe=function(){return tSe.Date.now()};A8.exports=rSe});var u8=w((ztt,c8)=>{var iSe=/\s/;function nSe(r){for(var e=r.length;e--&&iSe.test(r.charAt(e)););return e}c8.exports=nSe});var f8=w((Vtt,g8)=>{var sSe=u8(),oSe=/^\s+/;function aSe(r){return r&&r.slice(0,sSe(r)+1).replace(oSe,"")}g8.exports=aSe});var Ec=w((Xtt,h8)=>{var ASe=ds(),lSe=ASe.Symbol;h8.exports=lSe});var m8=w((_tt,C8)=>{var p8=Ec(),d8=Object.prototype,cSe=d8.hasOwnProperty,uSe=d8.toString,eC=p8?p8.toStringTag:void 0;function gSe(r){var e=cSe.call(r,eC),t=r[eC];try{r[eC]=void 0;var i=!0}catch{}var n=uSe.call(r);return i&&(e?r[eC]=t:delete r[eC]),n}C8.exports=gSe});var I8=w((Ztt,E8)=>{var fSe=Object.prototype,hSe=fSe.toString;function pSe(r){return hSe.call(r)}E8.exports=pSe});var Ic=w(($tt,B8)=>{var y8=Ec(),dSe=m8(),CSe=I8(),mSe="[object Null]",ESe="[object Undefined]",w8=y8?y8.toStringTag:void 0;function ISe(r){return r==null?r===void 0?ESe:mSe:w8&&w8 in Object(r)?dSe(r):CSe(r)}B8.exports=ISe});var Go=w((ert,Q8)=>{function ySe(r){return r!=null&&typeof r=="object"}Q8.exports=ySe});var tC=w((trt,b8)=>{var wSe=Ic(),BSe=Go(),QSe="[object Symbol]";function bSe(r){return typeof r=="symbol"||BSe(r)&&wSe(r)==QSe}b8.exports=bSe});var P8=w((rrt,x8)=>{var SSe=f8(),S8=bn(),vSe=tC(),v8=0/0,xSe=/^[-+]0x[0-9a-f]+$/i,PSe=/^0b[01]+$/i,DSe=/^0o[0-7]+$/i,kSe=parseInt;function RSe(r){if(typeof r=="number")return r;if(vSe(r))return v8;if(S8(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=S8(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=SSe(r);var t=PSe.test(r);return t||DSe.test(r)?kSe(r.slice(2),t?2:8):xSe.test(r)?v8:+r}x8.exports=RSe});var R8=w((irt,k8)=>{var FSe=bn(),RD=l8(),D8=P8(),NSe="Expected a function",LSe=Math.max,TSe=Math.min;function OSe(r,e,t){var i,n,s,o,a,l,c=0,u=!1,g=!1,f=!0;if(typeof r!="function")throw new TypeError(NSe);e=D8(e)||0,FSe(t)&&(u=!!t.leading,g="maxWait"in t,s=g?LSe(D8(t.maxWait)||0,e):s,f="trailing"in t?!!t.trailing:f);function h(j){var $=i,V=n;return i=n=void 0,c=j,o=r.apply(V,$),o}function p(j){return c=j,a=setTimeout(B,e),u?h(j):o}function C(j){var $=j-l,V=j-c,W=e-$;return g?TSe(W,s-V):W}function y(j){var $=j-l,V=j-c;return l===void 0||$>=e||$<0||g&&V>=s}function B(){var j=RD();if(y(j))return v(j);a=setTimeout(B,C(j))}function v(j){return a=void 0,f&&i?h(j):(i=n=void 0,o)}function D(){a!==void 0&&clearTimeout(a),c=0,i=l=n=a=void 0}function L(){return a===void 0?o:v(RD())}function H(){var j=RD(),$=y(j);if(i=arguments,n=this,l=j,$){if(a===void 0)return p(l);if(g)return clearTimeout(a),a=setTimeout(B,e),h(l)}return a===void 0&&(a=setTimeout(B,e)),o}return H.cancel=D,H.flush=L,H}k8.exports=OSe});var N8=w((nrt,F8)=>{var MSe=R8(),KSe=bn(),USe="Expected a function";function HSe(r,e,t){var i=!0,n=!0;if(typeof r!="function")throw new TypeError(USe);return KSe(t)&&(i="leading"in t?!!t.leading:i,n="trailing"in t?!!t.trailing:n),MSe(r,e,{leading:i,maxWait:e,trailing:n})}F8.exports=HSe});var Ta=w((La,kw)=>{"use strict";Object.defineProperty(La,"__esModule",{value:!0});var Y8=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function eve(r){return Y8.includes(r)}var tve=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Y8];function rve(r){return tve.includes(r)}var ive=["null","undefined","string","number","bigint","boolean","symbol"];function nve(r){return ive.includes(r)}function Sf(r){return e=>typeof e===r}var{toString:j8}=Object.prototype,oC=r=>{let e=j8.call(r).slice(8,-1);if(/HTML\w+Element/.test(e)&&X.domElement(r))return"HTMLElement";if(rve(e))return e},lr=r=>e=>oC(e)===r;function X(r){if(r===null)return"null";switch(typeof r){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(X.observable(r))return"Observable";if(X.array(r))return"Array";if(X.buffer(r))return"Buffer";let e=oC(r);if(e)return e;if(r instanceof String||r instanceof Boolean||r instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}X.undefined=Sf("undefined");X.string=Sf("string");var sve=Sf("number");X.number=r=>sve(r)&&!X.nan(r);X.bigint=Sf("bigint");X.function_=Sf("function");X.null_=r=>r===null;X.class_=r=>X.function_(r)&&r.toString().startsWith("class ");X.boolean=r=>r===!0||r===!1;X.symbol=Sf("symbol");X.numericString=r=>X.string(r)&&!X.emptyStringOrWhitespace(r)&&!Number.isNaN(Number(r));X.array=(r,e)=>Array.isArray(r)?X.function_(e)?r.every(e):!0:!1;X.buffer=r=>{var e,t,i,n;return(n=(i=(t=(e=r)===null||e===void 0?void 0:e.constructor)===null||t===void 0?void 0:t.isBuffer)===null||i===void 0?void 0:i.call(t,r))!==null&&n!==void 0?n:!1};X.nullOrUndefined=r=>X.null_(r)||X.undefined(r);X.object=r=>!X.null_(r)&&(typeof r=="object"||X.function_(r));X.iterable=r=>{var e;return X.function_((e=r)===null||e===void 0?void 0:e[Symbol.iterator])};X.asyncIterable=r=>{var e;return X.function_((e=r)===null||e===void 0?void 0:e[Symbol.asyncIterator])};X.generator=r=>X.iterable(r)&&X.function_(r.next)&&X.function_(r.throw);X.asyncGenerator=r=>X.asyncIterable(r)&&X.function_(r.next)&&X.function_(r.throw);X.nativePromise=r=>lr("Promise")(r);var ove=r=>{var e,t;return X.function_((e=r)===null||e===void 0?void 0:e.then)&&X.function_((t=r)===null||t===void 0?void 0:t.catch)};X.promise=r=>X.nativePromise(r)||ove(r);X.generatorFunction=lr("GeneratorFunction");X.asyncGeneratorFunction=r=>oC(r)==="AsyncGeneratorFunction";X.asyncFunction=r=>oC(r)==="AsyncFunction";X.boundFunction=r=>X.function_(r)&&!r.hasOwnProperty("prototype");X.regExp=lr("RegExp");X.date=lr("Date");X.error=lr("Error");X.map=r=>lr("Map")(r);X.set=r=>lr("Set")(r);X.weakMap=r=>lr("WeakMap")(r);X.weakSet=r=>lr("WeakSet")(r);X.int8Array=lr("Int8Array");X.uint8Array=lr("Uint8Array");X.uint8ClampedArray=lr("Uint8ClampedArray");X.int16Array=lr("Int16Array");X.uint16Array=lr("Uint16Array");X.int32Array=lr("Int32Array");X.uint32Array=lr("Uint32Array");X.float32Array=lr("Float32Array");X.float64Array=lr("Float64Array");X.bigInt64Array=lr("BigInt64Array");X.bigUint64Array=lr("BigUint64Array");X.arrayBuffer=lr("ArrayBuffer");X.sharedArrayBuffer=lr("SharedArrayBuffer");X.dataView=lr("DataView");X.directInstanceOf=(r,e)=>Object.getPrototypeOf(r)===e.prototype;X.urlInstance=r=>lr("URL")(r);X.urlString=r=>{if(!X.string(r))return!1;try{return new URL(r),!0}catch{return!1}};X.truthy=r=>Boolean(r);X.falsy=r=>!r;X.nan=r=>Number.isNaN(r);X.primitive=r=>X.null_(r)||nve(typeof r);X.integer=r=>Number.isInteger(r);X.safeInteger=r=>Number.isSafeInteger(r);X.plainObject=r=>{if(j8.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.getPrototypeOf({})};X.typedArray=r=>eve(oC(r));var ave=r=>X.safeInteger(r)&&r>=0;X.arrayLike=r=>!X.nullOrUndefined(r)&&!X.function_(r)&&ave(r.length);X.inRange=(r,e)=>{if(X.number(e))return r>=Math.min(0,e)&&r<=Math.max(e,0);if(X.array(e)&&e.length===2)return r>=Math.min(...e)&&r<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Ave=1,lve=["innerHTML","ownerDocument","style","attributes","nodeValue"];X.domElement=r=>X.object(r)&&r.nodeType===Ave&&X.string(r.nodeName)&&!X.plainObject(r)&&lve.every(e=>e in r);X.observable=r=>{var e,t,i,n;return r?r===((t=(e=r)[Symbol.observable])===null||t===void 0?void 0:t.call(e))||r===((n=(i=r)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};X.nodeStream=r=>X.object(r)&&X.function_(r.pipe)&&!X.observable(r);X.infinite=r=>r===1/0||r===-1/0;var q8=r=>e=>X.integer(e)&&Math.abs(e%2)===r;X.evenInteger=q8(0);X.oddInteger=q8(1);X.emptyArray=r=>X.array(r)&&r.length===0;X.nonEmptyArray=r=>X.array(r)&&r.length>0;X.emptyString=r=>X.string(r)&&r.length===0;X.nonEmptyString=r=>X.string(r)&&r.length>0;var cve=r=>X.string(r)&&!/\S/.test(r);X.emptyStringOrWhitespace=r=>X.emptyString(r)||cve(r);X.emptyObject=r=>X.object(r)&&!X.map(r)&&!X.set(r)&&Object.keys(r).length===0;X.nonEmptyObject=r=>X.object(r)&&!X.map(r)&&!X.set(r)&&Object.keys(r).length>0;X.emptySet=r=>X.set(r)&&r.size===0;X.nonEmptySet=r=>X.set(r)&&r.size>0;X.emptyMap=r=>X.map(r)&&r.size===0;X.nonEmptyMap=r=>X.map(r)&&r.size>0;X.propertyKey=r=>X.any([X.string,X.number,X.symbol],r);X.formData=r=>lr("FormData")(r);X.urlSearchParams=r=>lr("URLSearchParams")(r);var J8=(r,e,t)=>{if(!X.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(t.length===0)throw new TypeError("Invalid number of values");return r.call(t,e)};X.any=(r,...e)=>(X.array(r)?r:[r]).some(i=>J8(Array.prototype.some,i,e));X.all=(r,...e)=>J8(Array.prototype.every,r,e);var Ye=(r,e,t,i={})=>{if(!r){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(t.map(o=>`\`${X(o)}\``))].join(", ")}`:`received value of type \`${X(t)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};La.assert={undefined:r=>Ye(X.undefined(r),"undefined",r),string:r=>Ye(X.string(r),"string",r),number:r=>Ye(X.number(r),"number",r),bigint:r=>Ye(X.bigint(r),"bigint",r),function_:r=>Ye(X.function_(r),"Function",r),null_:r=>Ye(X.null_(r),"null",r),class_:r=>Ye(X.class_(r),"Class",r),boolean:r=>Ye(X.boolean(r),"boolean",r),symbol:r=>Ye(X.symbol(r),"symbol",r),numericString:r=>Ye(X.numericString(r),"string with a number",r),array:(r,e)=>{Ye(X.array(r),"Array",r),e&&r.forEach(e)},buffer:r=>Ye(X.buffer(r),"Buffer",r),nullOrUndefined:r=>Ye(X.nullOrUndefined(r),"null or undefined",r),object:r=>Ye(X.object(r),"Object",r),iterable:r=>Ye(X.iterable(r),"Iterable",r),asyncIterable:r=>Ye(X.asyncIterable(r),"AsyncIterable",r),generator:r=>Ye(X.generator(r),"Generator",r),asyncGenerator:r=>Ye(X.asyncGenerator(r),"AsyncGenerator",r),nativePromise:r=>Ye(X.nativePromise(r),"native Promise",r),promise:r=>Ye(X.promise(r),"Promise",r),generatorFunction:r=>Ye(X.generatorFunction(r),"GeneratorFunction",r),asyncGeneratorFunction:r=>Ye(X.asyncGeneratorFunction(r),"AsyncGeneratorFunction",r),asyncFunction:r=>Ye(X.asyncFunction(r),"AsyncFunction",r),boundFunction:r=>Ye(X.boundFunction(r),"Function",r),regExp:r=>Ye(X.regExp(r),"RegExp",r),date:r=>Ye(X.date(r),"Date",r),error:r=>Ye(X.error(r),"Error",r),map:r=>Ye(X.map(r),"Map",r),set:r=>Ye(X.set(r),"Set",r),weakMap:r=>Ye(X.weakMap(r),"WeakMap",r),weakSet:r=>Ye(X.weakSet(r),"WeakSet",r),int8Array:r=>Ye(X.int8Array(r),"Int8Array",r),uint8Array:r=>Ye(X.uint8Array(r),"Uint8Array",r),uint8ClampedArray:r=>Ye(X.uint8ClampedArray(r),"Uint8ClampedArray",r),int16Array:r=>Ye(X.int16Array(r),"Int16Array",r),uint16Array:r=>Ye(X.uint16Array(r),"Uint16Array",r),int32Array:r=>Ye(X.int32Array(r),"Int32Array",r),uint32Array:r=>Ye(X.uint32Array(r),"Uint32Array",r),float32Array:r=>Ye(X.float32Array(r),"Float32Array",r),float64Array:r=>Ye(X.float64Array(r),"Float64Array",r),bigInt64Array:r=>Ye(X.bigInt64Array(r),"BigInt64Array",r),bigUint64Array:r=>Ye(X.bigUint64Array(r),"BigUint64Array",r),arrayBuffer:r=>Ye(X.arrayBuffer(r),"ArrayBuffer",r),sharedArrayBuffer:r=>Ye(X.sharedArrayBuffer(r),"SharedArrayBuffer",r),dataView:r=>Ye(X.dataView(r),"DataView",r),urlInstance:r=>Ye(X.urlInstance(r),"URL",r),urlString:r=>Ye(X.urlString(r),"string with a URL",r),truthy:r=>Ye(X.truthy(r),"truthy",r),falsy:r=>Ye(X.falsy(r),"falsy",r),nan:r=>Ye(X.nan(r),"NaN",r),primitive:r=>Ye(X.primitive(r),"primitive",r),integer:r=>Ye(X.integer(r),"integer",r),safeInteger:r=>Ye(X.safeInteger(r),"integer",r),plainObject:r=>Ye(X.plainObject(r),"plain object",r),typedArray:r=>Ye(X.typedArray(r),"TypedArray",r),arrayLike:r=>Ye(X.arrayLike(r),"array-like",r),domElement:r=>Ye(X.domElement(r),"HTMLElement",r),observable:r=>Ye(X.observable(r),"Observable",r),nodeStream:r=>Ye(X.nodeStream(r),"Node.js Stream",r),infinite:r=>Ye(X.infinite(r),"infinite number",r),emptyArray:r=>Ye(X.emptyArray(r),"empty array",r),nonEmptyArray:r=>Ye(X.nonEmptyArray(r),"non-empty array",r),emptyString:r=>Ye(X.emptyString(r),"empty string",r),nonEmptyString:r=>Ye(X.nonEmptyString(r),"non-empty string",r),emptyStringOrWhitespace:r=>Ye(X.emptyStringOrWhitespace(r),"empty string or whitespace",r),emptyObject:r=>Ye(X.emptyObject(r),"empty object",r),nonEmptyObject:r=>Ye(X.nonEmptyObject(r),"non-empty object",r),emptySet:r=>Ye(X.emptySet(r),"empty set",r),nonEmptySet:r=>Ye(X.nonEmptySet(r),"non-empty set",r),emptyMap:r=>Ye(X.emptyMap(r),"empty map",r),nonEmptyMap:r=>Ye(X.nonEmptyMap(r),"non-empty map",r),propertyKey:r=>Ye(X.propertyKey(r),"PropertyKey",r),formData:r=>Ye(X.formData(r),"FormData",r),urlSearchParams:r=>Ye(X.urlSearchParams(r),"URLSearchParams",r),evenInteger:r=>Ye(X.evenInteger(r),"even integer",r),oddInteger:r=>Ye(X.oddInteger(r),"odd integer",r),directInstanceOf:(r,e)=>Ye(X.directInstanceOf(r,e),"T",r),inRange:(r,e)=>Ye(X.inRange(r,e),"in range",r),any:(r,...e)=>Ye(X.any(r,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(r,...e)=>Ye(X.all(r,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(X,{class:{value:X.class_},function:{value:X.function_},null:{value:X.null_}});Object.defineProperties(La.assert,{class:{value:La.assert.class_},function:{value:La.assert.function_},null:{value:La.assert.null_}});La.default=X;kw.exports=X;kw.exports.default=X;kw.exports.assert=La.assert});var W8=w((Yrt,ek)=>{"use strict";var Rw=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},vf=class{static fn(e){return(...t)=>new vf((i,n,s)=>{t.push(s),e(...t).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((t,i)=>{this._reject=i;let n=a=>{this._isPending=!1,t(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,t){return this._promise.then(e,t)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Rw(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(vf.prototype,Promise.prototype);ek.exports=vf;ek.exports.CancelError=Rw});var z8=w((rk,ik)=>{"use strict";Object.defineProperty(rk,"__esModule",{value:!0});var uve=J("tls"),tk=(r,e)=>{let t;typeof e=="function"?t={connect:e}:t=e;let i=typeof t.connect=="function",n=typeof t.secureConnect=="function",s=typeof t.close=="function",o=()=>{i&&t.connect(),r instanceof uve.TLSSocket&&n&&(r.authorized?t.secureConnect():r.authorizationError||r.once("secureConnect",t.secureConnect)),s&&r.once("close",t.close)};r.writable&&!r.connecting?o():r.connecting?r.once("connect",o):r.destroyed&&s&&t.close(r._hadError)};rk.default=tk;ik.exports=tk;ik.exports.default=tk});var V8=w((sk,ok)=>{"use strict";Object.defineProperty(sk,"__esModule",{value:!0});var gve=z8(),fve=Number(process.versions.node.split(".")[0]),nk=r=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};r.timings=e;let t=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};t(r),r.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||fve>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),gve.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};r.socket?i(r.socket):r.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof r.writableFinished=="boolean"?r.writableFinished:r.finished&&r.outputSize===0&&(!r.socket||r.socket.writableLength===0))()?n():r.prependOnceListener("finish",n),r.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,t(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};sk.default=nk;ok.exports=nk;ok.exports.default=nk});var rz=w((jrt,lk)=>{"use strict";var{V4MAPPED:hve,ADDRCONFIG:pve,ALL:tz,promises:{Resolver:X8},lookup:dve}=J("dns"),{promisify:ak}=J("util"),Cve=J("os"),xf=Symbol("cacheableLookupCreateConnection"),Ak=Symbol("cacheableLookupInstance"),_8=Symbol("expires"),mve=typeof tz=="number",Z8=r=>{if(!(r&&typeof r.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},Eve=r=>{for(let e of r)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},$8=()=>{let r=!1,e=!1;for(let t of Object.values(Cve.networkInterfaces()))for(let i of t)if(!i.internal&&(i.family==="IPv6"?e=!0:r=!0,r&&e))return{has4:r,has6:e};return{has4:r,has6:e}},Ive=r=>Symbol.iterator in r,ez={ttl:!0},yve={all:!0},Fw=class{constructor({cache:e=new Map,maxTtl:t=1/0,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new X8,lookup:o=dve}={}){if(this.maxTtl=t,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=ak(o),this._resolver instanceof X8?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=ak(this._resolver.resolve4.bind(this._resolver)),this._resolve6=ak(this._resolver.resolve6.bind(this._resolver))),this._iface=$8(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,t,i){if(typeof t=="function"?(i=t,t={}):typeof t=="number"&&(t={family:t}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,t).then(n=>{t.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,t={}){typeof t=="number"&&(t={family:t});let i=await this.query(e);if(t.family===6){let n=i.filter(s=>s.family===6);t.hints&hve&&(mve&&t.hints&tz||n.length===0)?Eve(i):i=n}else t.family===4&&(i=i.filter(n=>n.family===4));if(t.hints&pve){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return t.all?i:i[0]}async query(e){let t=await this._cache.get(e);if(!t){let i=this._pending[e];if(i)t=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,t=await n}}return t=t.map(i=>({...i})),t}async _resolve(e){let t=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,ez),this._resolve6(e,ez)].map(c=>t(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,t,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,t[_8]=Date.now()+i;try{await this._cache.set(e,t,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Ive(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,yve);try{let t=await this._resolve(e);t.entries.length===0&&this._fallback&&(t=await this._lookup(e),t.entries.length!==0&&this._hostnamesToFallback.add(e));let i=t.entries.length===0?this.errorTtl:t.cacheTtl;return await this._set(e,t.entries,i),delete this._pending[e],t.entries}catch(t){throw delete this._pending[e],t}}_tick(e){let t=this._nextRemovalTime;(!t||e{this._nextRemovalTime=!1;let i=1/0,n=Date.now();for(let[s,o]of this._cache){let a=o[_8];n>=a?this._cache.delete(s):a("lookup"in t||(t.lookup=this.lookup),e[xf](t,i))}uninstall(e){if(Z8(e),e[xf]){if(e[Ak]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[xf],delete e[xf],delete e[Ak]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=$8(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};lk.exports=Fw;lk.exports.default=Fw});var sz=w((qrt,ck)=>{"use strict";var wve=typeof URL>"u"?J("url").URL:URL,Bve="text/plain",Qve="us-ascii",iz=(r,e)=>e.some(t=>t instanceof RegExp?t.test(r):t===r),bve=(r,{stripHash:e})=>{let t=r.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!t)throw new Error(`Invalid URL: ${r}`);let i=t[1].split(";"),n=t[2],s=e?"":t[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Qve)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==Bve)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},nz=(r,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(r=r.trim(),/^data:/i.test(r))return bve(r,e);let t=r.startsWith("//");!t&&/^\.*\//.test(r)||(r=r.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new wve(r);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];iz(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])iz(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),r=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(r=r.replace(/\/$/,"")),t&&!e.normalizeProtocol&&(r=r.replace(/^http:\/\//,"//")),e.stripProtocol&&(r=r.replace(/^(?:https?:)?\/\//,"")),r};ck.exports=nz;ck.exports.default=nz});var Az=w((Jrt,az)=>{az.exports=oz;function oz(r,e){if(r&&e)return oz(r)(e);if(typeof r!="function")throw new TypeError("need wrapper function");return Object.keys(r).forEach(function(i){t[i]=r[i]}),t;function t(){for(var i=new Array(arguments.length),n=0;n{var lz=Az();uk.exports=lz(Nw);uk.exports.strict=lz(cz);Nw.proto=Nw(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Nw(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return cz(this)},configurable:!0})});function Nw(r){var e=function(){return e.called?e.value:(e.called=!0,e.value=r.apply(this,arguments))};return e.called=!1,e}function cz(r){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=r.apply(this,arguments)},t=r.name||"Function wrapped with `once`";return e.onceError=t+" shouldn't be called more than once",e.called=!1,e}});var fk=w((zrt,gz)=>{var Sve=gk(),vve=function(){},xve=function(r){return r.setHeader&&typeof r.abort=="function"},Pve=function(r){return r.stdio&&Array.isArray(r.stdio)&&r.stdio.length===3},uz=function(r,e,t){if(typeof e=="function")return uz(r,null,e);e||(e={}),t=Sve(t||vve);var i=r._writableState,n=r._readableState,s=e.readable||e.readable!==!1&&r.readable,o=e.writable||e.writable!==!1&&r.writable,a=function(){r.writable||l()},l=function(){o=!1,s||t.call(r)},c=function(){s=!1,o||t.call(r)},u=function(p){t.call(r,p?new Error("exited with error code: "+p):null)},g=function(p){t.call(r,p)},f=function(){if(s&&!(n&&n.ended))return t.call(r,new Error("premature close"));if(o&&!(i&&i.ended))return t.call(r,new Error("premature close"))},h=function(){r.req.on("finish",l)};return xve(r)?(r.on("complete",l),r.on("abort",f),r.req?h():r.on("request",h)):o&&!i&&(r.on("end",a),r.on("close",a)),Pve(r)&&r.on("exit",u),r.on("end",c),r.on("finish",l),e.error!==!1&&r.on("error",g),r.on("close",f),function(){r.removeListener("complete",l),r.removeListener("abort",f),r.removeListener("request",h),r.req&&r.req.removeListener("finish",l),r.removeListener("end",a),r.removeListener("close",a),r.removeListener("finish",l),r.removeListener("exit",u),r.removeListener("end",c),r.removeListener("error",g),r.removeListener("close",f)}};gz.exports=uz});var pz=w((Vrt,hz)=>{var Dve=gk(),kve=fk(),hk=J("fs"),aC=function(){},Rve=/^v?\.0/.test(process.version),Lw=function(r){return typeof r=="function"},Fve=function(r){return!Rve||!hk?!1:(r instanceof(hk.ReadStream||aC)||r instanceof(hk.WriteStream||aC))&&Lw(r.close)},Nve=function(r){return r.setHeader&&Lw(r.abort)},Lve=function(r,e,t,i){i=Dve(i);var n=!1;r.on("close",function(){n=!0}),kve(r,{readable:e,writable:t},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Fve(r))return r.close(aC);if(Nve(r))return r.abort();if(Lw(r.destroy))return r.destroy();i(o||new Error("stream was destroyed"))}}},fz=function(r){r()},Tve=function(r,e){return r.pipe(e)},Ove=function(){var r=Array.prototype.slice.call(arguments),e=Lw(r[r.length-1]||aC)&&r.pop()||aC;if(Array.isArray(r[0])&&(r=r[0]),r.length<2)throw new Error("pump requires two streams per minimum");var t,i=r.map(function(n,s){var o=s0;return Lve(n,o,a,function(l){t||(t=l),l&&i.forEach(fz),!o&&(i.forEach(fz),e(t))})});return r.reduce(Tve)};hz.exports=Ove});var Cz=w((Xrt,dz)=>{"use strict";var{PassThrough:Mve}=J("stream");dz.exports=r=>{r={...r};let{array:e}=r,{encoding:t}=r,i=t==="buffer",n=!1;e?n=!(t||i):t=t||"utf8",i&&(t=null);let s=new Mve({objectMode:n});t&&s.setEncoding(t);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var mz=w((_rt,Pf)=>{"use strict";var Kve=pz(),Uve=Cz(),Tw=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Ow(r,e){if(!r)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:t}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Kve(r,Uve(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>t&&o(new Tw)})}),i.getBufferedValue()}Pf.exports=Ow;Pf.exports.default=Ow;Pf.exports.buffer=(r,e)=>Ow(r,{...e,encoding:"buffer"});Pf.exports.array=(r,e)=>Ow(r,{...e,array:!0});Pf.exports.MaxBufferError=Tw});var Iz=w(($rt,Ez)=>{"use strict";var Hve=[200,203,204,206,300,301,404,405,410,414,501],Gve=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Yve={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},jve={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function pk(r){let e={};if(!r)return e;let t=r.trim().split(/\s*,\s*/);for(let i of t){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function qve(r){let e=[];for(let t in r){let i=r[t];e.push(i===!0?t:t+"="+i)}if(!!e.length)return e.join(", ")}Ez.exports=class{constructor(e,t,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!t||!t.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in t?t.status:200,this._resHeaders=t.headers,this._rescc=pk(t.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=t.headers.vary?e.headers:null,this._reqcc=pk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":qve(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!t.headers["cache-control"]&&/no-cache/.test(t.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&Gve.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Hve.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let t=pk(e.headers["cache-control"]);return t["no-cache"]||/no-cache/.test(e.headers.pragma)||t["max-age"]&&this.age()>t["max-age"]||t["min-fresh"]&&this.timeToLive()<1e3*t["min-fresh"]||this.stale()&&!(t["max-stale"]&&!this._rescc["must-revalidate"]&&(t["max-stale"]===!0||t["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,t){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||t&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let t=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of t)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let t={};for(let i in e)Yve[i]||(t[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete t[n]}if(t.warning){let i=t.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?t.warning=i.join(",").trim():delete t.warning}return t}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),t=this.age();return t>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(t)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);return isFinite(e)&&Math.abs(this._responseTime-e)<288e5?e:this._responseTime}age(){let e=Math.max(0,(this._responseTime-this.date())/1e3);if(this._resHeaders.age){let i=this._ageValue();i>e&&(e=i)}let t=(this.now()-this._responseTime)/1e3;return e+t}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,t=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(t-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let t=this._copyWithoutHopByHopHeaders(e.headers);if(delete t["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete t["if-none-match"],delete t["if-modified-since"],t;if(this._resHeaders.etag&&(t["if-none-match"]=t["if-none-match"]?`${t["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),t["accept-ranges"]||t["if-match"]||t["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete t["if-modified-since"],t["if-none-match"]){let n=t["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?t["if-none-match"]=n.join(",").trim():delete t["if-none-match"]}}else this._resHeaders["last-modified"]&&!t["if-modified-since"]&&(t["if-modified-since"]=this._resHeaders["last-modified"]);return t}revalidatedPolicy(e,t){if(this._assertRequestHasHeaders(e),!t||!t.headers)throw Error("Response headers missing");let i=!1;if(t.status!==void 0&&t.status!=304?i=!1:t.headers.etag&&!/^\s*W\//.test(t.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag:this._resHeaders.etag&&t.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===t.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!t.headers.etag&&!t.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,t),modified:t.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in t.headers&&!jve[o]?t.headers[o]:this._resHeaders[o];let s=Object.assign({},t,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Mw=w((eit,yz)=>{"use strict";yz.exports=r=>{let e={};for(let[t,i]of Object.entries(r))e[t.toLowerCase()]=i;return e}});var Bz=w((tit,wz)=>{"use strict";var Jve=J("stream").Readable,Wve=Mw(),dk=class extends Jve{constructor(e,t,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof t!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=Wve(t),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};wz.exports=dk});var bz=w((rit,Qz)=>{"use strict";var zve=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Qz.exports=(r,e)=>{let t=new Set(Object.keys(r).concat(zve));for(let i of t)i in e||(e[i]=typeof r[i]=="function"?r[i].bind(r):r[i])}});var vz=w((iit,Sz)=>{"use strict";var Vve=J("stream").PassThrough,Xve=bz(),_ve=r=>{if(!(r&&r.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Vve;return Xve(r,e),r.pipe(e)};Sz.exports=_ve});var xz=w(Ck=>{Ck.stringify=function r(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var t="",i=Array.isArray(e);t=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]>"u";Object.hasOwnProperty.call(e,s)&&!o&&(n||(t+=","),n=!1,i?e[s]==null?t+="null":t+=r(e[s]):e[s]!==void 0&&(t+=r(s)+":"+r(e[s])))}return t+=i?"]":"}",t}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};Ck.parse=function(r){return JSON.parse(r,function(e,t){return typeof t=="string"?/^:base64:/.test(t)?Buffer.from(t.substring(8),"base64"):/^:/.test(t)?t.substring(1):t:t})}});var kz=w((sit,Dz)=>{"use strict";var Zve=J("events"),Pz=xz(),$ve=r=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(r.adapter||r.uri){let t=r.adapter||/^[^:]*/.exec(r.uri)[0];return new(J(e[t]))(r)}return new Map},mk=class extends Zve{constructor(e,t){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:Pz.stringify,deserialize:Pz.parse},typeof e=="string"?{uri:e}:e,t),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=$ve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,t){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return t&&t.raw?n:n.value}})}set(e,t,i){e=this._getKeyPrefix(e),typeof i>"u"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return t={value:t,expires:s},this.opts.serialize(t)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:t}=this.opts;return Promise.resolve().then(()=>t.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};Dz.exports=mk});var Nz=w((oit,Fz)=>{"use strict";var exe=J("events"),Kw=J("url"),txe=sz(),rxe=mz(),Ek=Iz(),Rz=Bz(),ixe=Mw(),nxe=vz(),sxe=kz(),ro=class{constructor(e,t){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new sxe({uri:typeof t=="string"&&t,store:typeof t!="string"&&t,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(t,i)=>{let n;if(typeof t=="string")n=Ik(Kw.parse(t)),t={};else if(t instanceof Kw.URL)n=Ik(Kw.parse(t.toString())),t={};else{let[g,...f]=(t.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=Ik({...t,pathname:g,search:h})}t={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...t,...oxe(n)},t.headers=ixe(t.headers);let s=new exe,o=txe(Kw.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${t.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(y=>{h=()=>{f||(f=!0,y())}}),C=y=>{if(l&&!g.forceRefresh){y.status=y.statusCode;let v=Ek.fromObject(l.cachePolicy).revalidatedPolicy(g,y);if(!v.modified){let D=v.policy.responseHeaders();y=new Rz(l.statusCode,D,l.body,l.url),y.cachePolicy=v.policy,y.fromCache=!0}}y.fromCache||(y.cachePolicy=new Ek(g,y,g),y.fromCache=!1);let B;g.cache&&y.cachePolicy.storable()?(B=nxe(y),(async()=>{try{let v=rxe.buffer(y);if(await Promise.race([p,new Promise(j=>y.once("end",j))]),f)return;let D=await v,L={cachePolicy:y.cachePolicy.toObject(),url:y.url,statusCode:y.fromCache?l.statusCode:y.statusCode,body:D},H=g.strictTtl?y.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,L,H)}catch(v){s.emit("error",new ro.CacheError(v))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(v){s.emit("error",new ro.CacheError(v))}})(),s.emit("response",B||y),typeof i=="function"&&i(B||y)};try{let y=e(g,C);y.once("error",h),y.once("abort",h),s.emit("request",y)}catch(y){s.emit("error",new ro.RequestError(y))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p>"u")return u(h);let C=Ek.fromObject(p.cachePolicy);if(C.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let y=C.responseHeaders(),B=new Rz(p.statusCode,y,p.body,p.url);B.cachePolicy=C,B.fromCache=!0,s.emit("response",B),typeof i=="function"&&i(B)}else l=p,h.headers=C.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new ro.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(t)}catch(h){t.automaticFailover&&!c&&u(t),s.emit("error",new ro.CacheError(h))}})(),s}}};function oxe(r){let e={...r};return e.path=`${r.pathname||"/"}${r.search||""}`,delete e.pathname,delete e.search,e}function Ik(r){return{protocol:r.protocol,auth:r.auth,hostname:r.hostname||r.host||"localhost",port:r.port,pathname:r.pathname,search:r.search}}ro.RequestError=class extends Error{constructor(r){super(r.message),this.name="RequestError",Object.assign(this,r)}};ro.CacheError=class extends Error{constructor(r){super(r.message),this.name="CacheError",Object.assign(this,r)}};Fz.exports=ro});var Tz=w((lit,Lz)=>{"use strict";var axe=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Lz.exports=(r,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let t=new Set(Object.keys(r).concat(axe)),i={};for(let n of t)n in e||(i[n]={get(){let s=r[n];return typeof s=="function"?s.bind(r):s},set(s){r[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),r.once("aborted",()=>{e.destroy(),e.emit("aborted")}),r.once("close",()=>{r.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var Mz=w((cit,Oz)=>{"use strict";var{Transform:Axe,PassThrough:lxe}=J("stream"),yk=J("zlib"),cxe=Tz();Oz.exports=r=>{let e=(r.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return r;let t=e==="br";if(t&&typeof yk.createBrotliDecompress!="function")return r.destroy(new Error("Brotli is not supported on Node.js < 12")),r;let i=!0,n=new Axe({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new lxe({autoDestroy:!1,destroy(a,l){r.destroy(),l(a)}}),o=t?yk.createBrotliDecompress():yk.createUnzip();return o.once("error",a=>{if(i&&!r.readable){s.end();return}s.destroy(a)}),cxe(r,s),r.pipe(n).pipe(o).pipe(s),s}});var Bk=w((uit,Kz)=>{"use strict";var wk=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,t){if(this.cache.set(e,t),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let t=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,t),t}}set(e,t){return this.cache.has(e)?this.cache.set(e,t):this._set(e,t),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[t]=e;this.cache.has(t)||(yield e)}}get size(){let e=0;for(let t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}};Kz.exports=wk});var bk=w((git,Yz)=>{"use strict";var uxe=J("events"),gxe=J("tls"),fxe=J("http2"),hxe=Bk(),tn=Symbol("currentStreamsCount"),Uz=Symbol("request"),ms=Symbol("cachedOriginSet"),Df=Symbol("gracefullyClosing"),pxe=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],dxe=(r,e,t)=>{let i=0,n=r.length;for(;i>>1;t(r[s],e)?i=s+1:n=s}return i},Cxe=(r,e)=>r.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,Qk=(r,e)=>{for(let t of r)t[ms].lengthe[ms].includes(i))&&t[tn]+e[tn]<=e.remoteSettings.maxConcurrentStreams&&Gz(t)},mxe=(r,e)=>{for(let t of r)e[ms].lengtht[ms].includes(i))&&e[tn]+t[tn]<=t.remoteSettings.maxConcurrentStreams&&Gz(e)},Hz=({agent:r,isFree:e})=>{let t={};for(let i in r.sessions){let s=r.sessions[i].filter(o=>{let a=o[jo.kCurrentStreamsCount]{r[Df]=!0,r[tn]===0&&r.close()},jo=class extends uxe{constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=t,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new hxe({maxSize:n})}static normalizeOrigin(e,t){return typeof e=="string"&&(e=new URL(e)),t&&e.hostname!==t&&(e.hostname=t),e.origin}normalizeOptions(e){let t="";if(e)for(let i of pxe)e[i]&&(t+=`:${e[i]}`);return t}_tryToCreateNewSession(e,t){if(!(e in this.queue)||!(t in this.queue[e]))return;let i=this.queue[e][t];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(t),a=jo.normalizeOrigin(e,t&&t.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let C=p.remoteSettings.maxConcurrentStreams;if(C=C||p[Df]||p.destroyed)continue;h||(g=C),y>f&&(h=p,f=y)}}if(h){if(i.length!==1){for(let{reject:p}of i){let C=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(C)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=fxe.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u),...t});f[tn]=0,f[Df]=!1;let h=()=>f[tn]{this.tlsSessionCache.set(u,y)}),f.once("error",y=>{for(let{reject:B}of i)B(y);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let y=this.sessions[o];y.splice(y.indexOf(f),1),y.length===0&&delete this.sessions[o]}else{let y=new Error("Session closed without receiving a SETTINGS frame");y.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:B}of i)B(y);l()}this._tryToCreateNewSession(o,a)});let C=()=>{if(!(!(o in this.queue)||!h())){for(let y of f[ms])if(y in this.queue[o]){let{listeners:B}=this.queue[o][y];for(;B.length!==0&&h();)B.shift().resolve(f);let v=this.queue[o];if(v[y].listeners.length===0&&(delete v[y],Object.keys(v).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ms]=f.originSet,h()&&(C(),Qk(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let y=new Error("Agent has been destroyed");for(let B of i)B.reject(y);f.destroy();return}f[ms]=f.originSet;{let y=this.sessions;if(o in y){let B=y[o];B.splice(dxe(B,f,Cxe),0,f)}else y[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),C(),l(),f[tn]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,t,i),i.length=0),f.on("remoteSettings",()=>{C(),Qk(this.sessions[o],f)})}),f[Uz]=f.request,f.request=(y,B)=>{if(f[Df])throw new Error("The session is gracefully closing. No new streams are allowed.");let v=f[Uz](y,B);return f.ref(),++f[tn],f[tn]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,v.once("close",()=>{if(p=h(),--f[tn],!f.destroyed&&!f.closed&&(mxe(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let D=f[tn]===0;D&&f.unref(),D&&(this._freeSessionsCount>this.maxFreeSessions||f[Df])?f.close():(Qk(this.sessions[o],f),C())}}),v}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,t,i,n){return new Promise((s,o)=>{this.getSession(e,t,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,t){return jo.connect(e,t)}static connect(e,t){t.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof t.servername>"u"&&(t.servername=n),gxe.connect(i,n,t)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let t of e)t[tn]===0&&t.close()}destroy(e){for(let t of Object.values(this.sessions))for(let i of t)i.destroy(e);for(let t of Object.values(this.queue))for(let i of Object.values(t))i.destroyed=!0;this.queue={}}get freeSessions(){return Hz({agent:this,isFree:!0})}get busySessions(){return Hz({agent:this,isFree:!1})}};jo.kCurrentStreamsCount=tn;jo.kGracefullyClosing=Df;Yz.exports={Agent:jo,globalAgent:new jo}});var vk=w((fit,jz)=>{"use strict";var{Readable:Exe}=J("stream"),Sk=class extends Exe{constructor(e,t){super({highWaterMark:t,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,t){return this.req.setTimeout(e,t),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};jz.exports=Sk});var xk=w((hit,qz)=>{"use strict";qz.exports=r=>{let e={protocol:r.protocol,hostname:typeof r.hostname=="string"&&r.hostname.startsWith("[")?r.hostname.slice(1,-1):r.hostname,host:r.host,hash:r.hash,search:r.search,pathname:r.pathname,href:r.href,path:`${r.pathname||""}${r.search||""}`};return typeof r.port=="string"&&r.port.length!==0&&(e.port=Number(r.port)),(r.username||r.password)&&(e.auth=`${r.username||""}:${r.password||""}`),e}});var Wz=w((pit,Jz)=>{"use strict";Jz.exports=(r,e,t)=>{for(let i of t)r.on(i,(...n)=>e.emit(i,...n))}});var Vz=w((dit,zz)=>{"use strict";zz.exports=r=>{switch(r){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var _z=w((mit,Xz)=>{"use strict";var kf=(r,e,t)=>{Xz.exports[e]=class extends r{constructor(...n){super(typeof t=="string"?t:t(n)),this.name=`${super.name} [${e}]`,this.code=e}}};kf(TypeError,"ERR_INVALID_ARG_TYPE",r=>{let e=r[0].includes(".")?"property":"argument",t=r[1],i=Array.isArray(t);return i&&(t=`${t.slice(0,-1).join(", ")} or ${t.slice(-1)}`),`The "${r[0]}" ${e} must be ${i?"one of":"of"} type ${t}. Received ${typeof r[2]}`});kf(TypeError,"ERR_INVALID_PROTOCOL",r=>`Protocol "${r[0]}" not supported. Expected "${r[1]}"`);kf(Error,"ERR_HTTP_HEADERS_SENT",r=>`Cannot ${r[0]} headers after they are sent to the client`);kf(TypeError,"ERR_INVALID_HTTP_TOKEN",r=>`${r[0]} must be a valid HTTP token [${r[1]}]`);kf(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",r=>`Invalid value "${r[0]} for header "${r[1]}"`);kf(TypeError,"ERR_INVALID_CHAR",r=>`Invalid character in ${r[0]} [${r[1]}]`)});var Fk=w((Eit,n5)=>{"use strict";var Ixe=J("http2"),{Writable:yxe}=J("stream"),{Agent:Zz,globalAgent:wxe}=bk(),Bxe=vk(),Qxe=xk(),bxe=Wz(),Sxe=Vz(),{ERR_INVALID_ARG_TYPE:Pk,ERR_INVALID_PROTOCOL:vxe,ERR_HTTP_HEADERS_SENT:$z,ERR_INVALID_HTTP_TOKEN:xxe,ERR_HTTP_INVALID_HEADER_VALUE:Pxe,ERR_INVALID_CHAR:Dxe}=_z(),{HTTP2_HEADER_STATUS:e5,HTTP2_HEADER_METHOD:t5,HTTP2_HEADER_PATH:r5,HTTP2_METHOD_CONNECT:kxe}=Ixe.constants,Ki=Symbol("headers"),Dk=Symbol("origin"),kk=Symbol("session"),i5=Symbol("options"),Uw=Symbol("flushedHeaders"),AC=Symbol("jobs"),Rxe=/^[\^`\-\w!#$%&*+.|~]+$/,Fxe=/[^\t\u0020-\u007E\u0080-\u00FF]/,Rk=class extends yxe{constructor(e,t,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Qxe(e instanceof URL?e:new URL(e))),typeof t=="function"||t===void 0?(i=t,t=n?e:{...e}):t={...e,...t},t.h2session)this[kk]=t.h2session;else if(t.agent===!1)this.agent=new Zz({maxFreeSessions:0});else if(typeof t.agent>"u"||t.agent===null)typeof t.createConnection=="function"?(this.agent=new Zz({maxFreeSessions:0}),this.agent.createConnection=t.createConnection):this.agent=wxe;else if(typeof t.agent.request=="function")this.agent=t.agent;else throw new Pk("options.agent",["Agent-like Object","undefined","false"],t.agent);if(t.protocol&&t.protocol!=="https:")throw new vxe(t.protocol,"https:");let s=t.port||t.defaultPort||this.agent&&this.agent.defaultPort||443,o=t.hostname||t.host||"localhost";delete t.hostname,delete t.host,delete t.port;let{timeout:a}=t;if(t.timeout=void 0,this[Ki]=Object.create(null),this[AC]=[],this.socket=null,this.connection=null,this.method=t.method||"GET",this.path=t.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,t.headers)for(let[l,c]of Object.entries(t.headers))this.setHeader(l,c);t.auth&&!("authorization"in this[Ki])&&(this[Ki].authorization="Basic "+Buffer.from(t.auth).toString("base64")),t.session=t.tlsSession,t.path=t.socketPath,this[i5]=t,s===443?(this[Dk]=`https://${o}`,":authority"in this[Ki]||(this[Ki][":authority"]=o)):(this[Dk]=`https://${o}:${s}`,":authority"in this[Ki]||(this[Ki][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[Uw]=!1}get method(){return this[Ki][t5]}set method(e){e&&(this[Ki][t5]=e.toUpperCase())}get path(){return this[Ki][r5]}set path(e){e&&(this[Ki][r5]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,t,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,t,i);this._request?n():this[AC].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let t=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?t():this[AC].push(t)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,t){this.res&&this.res._dump(),this._request&&this._request.destroy(),t(e)}async flushHeaders(){if(this[Uw]||this.destroyed)return;this[Uw]=!0;let e=this.method===kxe,t=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||bxe(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new Bxe(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[e5],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[e5]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[AC])o();this.emit("socket",this.socket)};if(this[kk])try{t(this[kk].request(this[Ki]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{t(await this.agent.request(this[Dk],this[i5],this[Ki]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new Pk("name","string",e);return this[Ki][e.toLowerCase()]}get headersSent(){return this[Uw]}removeHeader(e){if(typeof e!="string")throw new Pk("name","string",e);if(this.headersSent)throw new $z("remove");delete this[Ki][e.toLowerCase()]}setHeader(e,t){if(this.headersSent)throw new $z("set");if(typeof e!="string"||!Rxe.test(e)&&!Sxe(e))throw new xxe("Header name",e);if(typeof t>"u")throw new Pxe(t,e);if(Fxe.test(t))throw new Dxe("header content",e);this[Ki][e.toLowerCase()]=t}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,t){let i=()=>this._request.setTimeout(e,t);return this._request?i():this[AC].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};n5.exports=Rk});var o5=w((Iit,s5)=>{"use strict";var Nxe=J("tls");s5.exports=(r={})=>new Promise((e,t)=>{let i=Nxe.connect(r,()=>{r.resolveSocket?(i.off("error",t),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",t)})});var A5=w((yit,a5)=>{"use strict";var Lxe=J("net");a5.exports=r=>{let e=r.host,t=r.headers&&r.headers.host;return t&&(t.startsWith("[")?t.indexOf("]")===-1?e=t:e=t.slice(1,-1):e=t.split(":",1)[0]),Lxe.isIP(e)?"":e}});var u5=w((wit,Lk)=>{"use strict";var l5=J("http"),Nk=J("https"),Txe=o5(),Oxe=Bk(),Mxe=Fk(),Kxe=A5(),Uxe=xk(),Hw=new Oxe({maxSize:100}),lC=new Map,c5=(r,e,t)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{r.emit("free",e,t)};e.on("free",i);let n=()=>{r.removeSocket(e,t)};e.on("close",n);let s=()=>{r.removeSocket(e,t),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),r.emit("free",e,t)},Hxe=async r=>{let e=`${r.host}:${r.port}:${r.ALPNProtocols.sort()}`;if(!Hw.has(e)){if(lC.has(e))return(await lC.get(e)).alpnProtocol;let{path:t,agent:i}=r;r.path=r.socketPath;let n=Txe(r);lC.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Hw.set(e,o),r.path=t,o==="h2")s.destroy();else{let{globalAgent:a}=Nk,l=Nk.Agent.prototype.createConnection;i?i.createConnection===l?c5(i,s,r):s.destroy():a.createConnection===l?c5(a,s,r):s.destroy()}return lC.delete(e),o}catch(s){throw lC.delete(e),s}}return Hw.get(e)};Lk.exports=async(r,e,t)=>{if((typeof r=="string"||r instanceof URL)&&(r=Uxe(new URL(r))),typeof e=="function"&&(t=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...r,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Kxe(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Nk.globalAgent:l5.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Hxe(e)==="h2"?(n&&(e.agent=n.http2),new Mxe(e,t)):l5.request(e,t)};Lk.exports.protocolCache=Hw});var f5=w((Bit,g5)=>{"use strict";var Gxe=J("http2"),Yxe=bk(),Tk=Fk(),jxe=vk(),qxe=u5(),Jxe=(r,e,t)=>new Tk(r,e,t),Wxe=(r,e,t)=>{let i=new Tk(r,e,t);return i.end(),i};g5.exports={...Gxe,ClientRequest:Tk,IncomingMessage:jxe,...Yxe,request:Jxe,get:Wxe,auto:qxe}});var Mk=w(Ok=>{"use strict";Object.defineProperty(Ok,"__esModule",{value:!0});var h5=Ta();Ok.default=r=>h5.default.nodeStream(r)&&h5.default.function_(r.getBoundary)});var m5=w(Kk=>{"use strict";Object.defineProperty(Kk,"__esModule",{value:!0});var d5=J("fs"),C5=J("util"),p5=Ta(),zxe=Mk(),Vxe=C5.promisify(d5.stat);Kk.default=async(r,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!r)return 0;if(p5.default.string(r))return Buffer.byteLength(r);if(p5.default.buffer(r))return r.length;if(zxe.default(r))return C5.promisify(r.getLength.bind(r))();if(r instanceof d5.ReadStream){let{size:t}=await Vxe(r.path);return t===0?void 0:t}}});var Hk=w(Uk=>{"use strict";Object.defineProperty(Uk,"__esModule",{value:!0});function Xxe(r,e,t){let i={};for(let n of t)i[n]=(...s)=>{e.emit(n,...s)},r.on(n,i[n]);return()=>{for(let n of t)r.off(n,i[n])}}Uk.default=Xxe});var E5=w(Gk=>{"use strict";Object.defineProperty(Gk,"__esModule",{value:!0});Gk.default=()=>{let r=[];return{once(e,t,i){e.once(t,i),r.push({origin:e,event:t,fn:i})},unhandleAll(){for(let e of r){let{origin:t,event:i,fn:n}=e;t.removeListener(i,n)}r.length=0}}}});var y5=w(cC=>{"use strict";Object.defineProperty(cC,"__esModule",{value:!0});cC.TimeoutError=void 0;var _xe=J("net"),Zxe=E5(),I5=Symbol("reentry"),$xe=()=>{},Gw=class extends Error{constructor(e,t){super(`Timeout awaiting '${t}' for ${e}ms`),this.event=t,this.name="TimeoutError",this.code="ETIMEDOUT"}};cC.TimeoutError=Gw;cC.default=(r,e,t)=>{if(I5 in r)return $xe;r[I5]=!0;let i=[],{once:n,unhandleAll:s}=Zxe.default(),o=(g,f,h)=>{var p;let C=setTimeout(f,g,g,h);(p=C.unref)===null||p===void 0||p.call(C);let y=()=>{clearTimeout(C)};return i.push(y),y},{host:a,hostname:l}=t,c=(g,f)=>{r.destroy(new Gw(g,f))},u=()=>{for(let g of i)g();s()};if(r.once("error",g=>{if(u(),r.listenerCount("error")===0)throw g}),r.once("close",u),n(r,"response",g=>{n(g,"end",u)}),typeof e.request<"u"&&o(e.request,c,"request"),typeof e.socket<"u"){let g=()=>{c(e.socket,"socket")};r.setTimeout(e.socket,g),i.push(()=>{r.removeListener("timeout",g)})}return n(r,"socket",g=>{var f;let{socketPath:h}=r;if(g.connecting){let p=Boolean(h!=null?h:_xe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup<"u"&&!p&&typeof g.address().address>"u"){let C=o(e.lookup,c,"lookup");n(g,"lookup",C)}if(typeof e.connect<"u"){let C=()=>o(e.connect,c,"connect");p?n(g,"connect",C()):n(g,"lookup",y=>{y===null&&n(g,"connect",C())})}typeof e.secureConnect<"u"&&t.protocol==="https:"&&n(g,"connect",()=>{let C=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",C)})}if(typeof e.send<"u"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(r,"upload-complete",p())}):n(r,"upload-complete",p())}}),typeof e.response<"u"&&n(r,"upload-complete",()=>{let g=o(e.response,c,"response");n(r,"response",g)}),u}});var B5=w(Yk=>{"use strict";Object.defineProperty(Yk,"__esModule",{value:!0});var w5=Ta();Yk.default=r=>{r=r;let e={protocol:r.protocol,hostname:w5.default.string(r.hostname)&&r.hostname.startsWith("[")?r.hostname.slice(1,-1):r.hostname,host:r.host,hash:r.hash,search:r.search,pathname:r.pathname,href:r.href,path:`${r.pathname||""}${r.search||""}`};return w5.default.string(r.port)&&r.port.length>0&&(e.port=Number(r.port)),(r.username||r.password)&&(e.auth=`${r.username||""}:${r.password||""}`),e}});var Q5=w(jk=>{"use strict";Object.defineProperty(jk,"__esModule",{value:!0});var ePe=J("url"),tPe=["protocol","host","hostname","port","pathname","search"];jk.default=(r,e)=>{var t,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!r){if(!e.protocol)throw new TypeError("No URL protocol specified");r=`${e.protocol}//${(i=(t=e.hostname)!==null&&t!==void 0?t:e.host)!==null&&i!==void 0?i:""}`}let n=new ePe.URL(r);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of tPe)e[s]&&(n[s]=e[s].toString());return n}});var b5=w(Jk=>{"use strict";Object.defineProperty(Jk,"__esModule",{value:!0});var qk=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,t){typeof e=="object"?this.weakMap.set(e,t):this.map.set(e,t)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Jk.default=qk});var zk=w(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var rPe=async r=>{let e=[],t=0;for await(let i of r)e.push(i),t+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,t):Buffer.from(e.join(""))};Wk.default=rPe});var v5=w(Bc=>{"use strict";Object.defineProperty(Bc,"__esModule",{value:!0});Bc.dnsLookupIpVersionToFamily=Bc.isDnsLookupIpVersion=void 0;var S5={auto:0,ipv4:4,ipv6:6};Bc.isDnsLookupIpVersion=r=>r in S5;Bc.dnsLookupIpVersionToFamily=r=>{if(Bc.isDnsLookupIpVersion(r))return S5[r];throw new Error("Invalid DNS lookup IP version")}});var Vk=w(Yw=>{"use strict";Object.defineProperty(Yw,"__esModule",{value:!0});Yw.isResponseOk=void 0;Yw.isResponseOk=r=>{let{statusCode:e}=r,t=r.request.options.followRedirect?299:399;return e>=200&&e<=t||e===304}});var P5=w(Xk=>{"use strict";Object.defineProperty(Xk,"__esModule",{value:!0});var x5=new Set;Xk.default=r=>{x5.has(r)||(x5.add(r),process.emitWarning(`Got: ${r}`,{type:"DeprecationWarning"}))}});var D5=w(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var mr=Ta(),iPe=(r,e)=>{if(mr.default.null_(r.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");mr.assert.any([mr.default.string,mr.default.undefined],r.encoding),mr.assert.any([mr.default.boolean,mr.default.undefined],r.resolveBodyOnly),mr.assert.any([mr.default.boolean,mr.default.undefined],r.methodRewriting),mr.assert.any([mr.default.boolean,mr.default.undefined],r.isStream),mr.assert.any([mr.default.string,mr.default.undefined],r.responseType),r.responseType===void 0&&(r.responseType="text");let{retry:t}=r;if(e?r.retry={...e.retry}:r.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},mr.default.object(t)?(r.retry={...r.retry,...t},r.retry.methods=[...new Set(r.retry.methods.map(i=>i.toUpperCase()))],r.retry.statusCodes=[...new Set(r.retry.statusCodes)],r.retry.errorCodes=[...new Set(r.retry.errorCodes)]):mr.default.number(t)&&(r.retry.limit=t),mr.default.undefined(r.retry.maxRetryAfter)&&(r.retry.maxRetryAfter=Math.min(...[r.timeout.request,r.timeout.connect].filter(mr.default.number))),mr.default.object(r.pagination)){e&&(r.pagination={...e.pagination,...r.pagination});let{pagination:i}=r;if(!mr.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!mr.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!mr.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!mr.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return r.responseType==="json"&&r.headers.accept===void 0&&(r.headers.accept="application/json"),r};_k.default=iPe});var k5=w(uC=>{"use strict";Object.defineProperty(uC,"__esModule",{value:!0});uC.retryAfterStatusCodes=void 0;uC.retryAfterStatusCodes=new Set([413,429,503]);var nPe=({attemptCount:r,retryOptions:e,error:t,retryAfter:i})=>{if(r>e.limit)return 0;let n=e.methods.includes(t.options.method),s=e.errorCodes.includes(t.code),o=t.response&&e.statusCodes.includes(t.response.statusCode);if(!n||!s&&!o)return 0;if(t.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(t.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(r-1)*1e3+a};uC.default=nPe});var hC=w(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});Yt.UnsupportedProtocolError=Yt.ReadError=Yt.TimeoutError=Yt.UploadError=Yt.CacheError=Yt.HTTPError=Yt.MaxRedirectsError=Yt.RequestError=Yt.setNonEnumerableProperties=Yt.knownHookEvents=Yt.withoutBody=Yt.kIsNormalizedAlready=void 0;var R5=J("util"),F5=J("stream"),sPe=J("fs"),UA=J("url"),N5=J("http"),Zk=J("http"),oPe=J("https"),aPe=V8(),APe=rz(),L5=Nz(),lPe=Mz(),cPe=f5(),uPe=Mw(),Ee=Ta(),gPe=m5(),T5=Mk(),fPe=Hk(),O5=y5(),hPe=B5(),M5=Q5(),pPe=b5(),dPe=zk(),K5=v5(),CPe=Vk(),HA=P5(),mPe=D5(),EPe=k5(),$k,xi=Symbol("request"),Jw=Symbol("response"),Rf=Symbol("responseSize"),Ff=Symbol("downloadedSize"),Nf=Symbol("bodySize"),Lf=Symbol("uploadedSize"),jw=Symbol("serverResponsesPiped"),U5=Symbol("unproxyEvents"),H5=Symbol("isFromCache"),eR=Symbol("cancelTimeouts"),G5=Symbol("startedReading"),Tf=Symbol("stopReading"),qw=Symbol("triggerRead"),GA=Symbol("body"),gC=Symbol("jobs"),Y5=Symbol("originalResponse"),j5=Symbol("retryTimeout");Yt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var IPe=Ee.default.string(process.versions.brotli);Yt.withoutBody=new Set(["GET","HEAD"]);Yt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function yPe(r){for(let e in r){let t=r[e];if(!Ee.default.string(t)&&!Ee.default.number(t)&&!Ee.default.boolean(t)&&!Ee.default.null_(t)&&!Ee.default.undefined(t))throw new TypeError(`The \`searchParams\` value '${String(t)}' must be a string, number, boolean or null`)}}function wPe(r){return Ee.default.object(r)&&!("statusCode"in r)}var tR=new pPe.default,BPe=async r=>new Promise((e,t)=>{let i=n=>{t(n)};r.pending||e(),r.once("error",i),r.once("ready",()=>{r.off("error",i),e()})}),QPe=new Set([300,301,302,303,304,307,308]),bPe=["context","body","json","form"];Yt.setNonEnumerableProperties=(r,e)=>{let t={};for(let i of r)if(!!i)for(let n of bPe)n in i&&(t[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,t)};var ei=class extends Error{constructor(e,t,i){var n;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=t.code,i instanceof $w?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Jw]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,Ee.default.string(t.stack)&&Ee.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` +`,n)}while(i!==-1);return s+=r.substr(n),s};TJ.exports={stringReplaceAll:Qwe,stringEncaseCRLFWithFirstIndex:bwe}});var GJ=w((_et,HJ)=>{"use strict";var Swe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,MJ=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,vwe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,xwe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,Pwe=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function KJ(r){let e=r[0]==="u",t=r[1]==="{";return e&&!t&&r.length===5||r[0]==="x"&&r.length===3?String.fromCharCode(parseInt(r.slice(1),16)):e&&t?String.fromCodePoint(parseInt(r.slice(2,-1),16)):Pwe.get(r)||r}function Dwe(r,e){let t=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))t.push(o);else if(n=s.match(vwe))t.push(n[2].replace(xwe,(a,l,c)=>l?KJ(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${r}')`)}return t}function kwe(r){MJ.lastIndex=0;let e=[],t;for(;(t=MJ.exec(r))!==null;){let i=t[1];if(t[2]){let n=Dwe(i,t[2]);e.push([i].concat(n))}else e.push([i])}return e}function UJ(r,e){let t={};for(let n of e)for(let s of n.styles)t[s[0]]=n.inverse?null:s.slice(1);let i=r;for(let[n,s]of Object.entries(t))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HJ.exports=(r,e)=>{let t=[],i=[],n=[];if(e.replace(Swe,(s,o,a,l,c,u)=>{if(o)n.push(KJ(o));else if(l){let g=n.join("");n=[],i.push(t.length===0?g:UJ(r,t)(g)),t.push({inverse:a,styles:kwe(l)})}else if(c){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(UJ(r,t)(n.join(""))),n=[],t.pop()}else n.push(u)}),i.push(n.join("")),t.length>0){let s=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var wx=w(($et,JJ)=>{"use strict";var Ud=DJ(),{stdout:mx,stderr:Ex}=LJ(),{stringReplaceAll:Rwe,stringEncaseCRLFWithFirstIndex:Fwe}=OJ(),YJ=["ansi","ansi","ansi256","ansi16m"],uf=Object.create(null),Nwe=(r,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let t=mx?mx.level:0;r.level=e.level===void 0?t:e.level},Ix=class{constructor(e){return jJ(e)}},jJ=r=>{let e={};return Nwe(e,r),e.template=(...t)=>Owe(e.template,...t),Object.setPrototypeOf(e,My.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=Ix,e.template};function My(r){return jJ(r)}for(let[r,e]of Object.entries(Ud))uf[r]={get(){let t=Uy(this,yx(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,r,{value:t}),t}};uf.visible={get(){let r=Uy(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:r}),r}};var qJ=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let r of qJ)uf[r]={get(){let{level:e}=this;return function(...t){let i=yx(Ud.color[YJ[e]][r](...t),Ud.color.close,this._styler);return Uy(this,i,this._isEmpty)}}};for(let r of qJ){let e="bg"+r[0].toUpperCase()+r.slice(1);uf[e]={get(){let{level:t}=this;return function(...i){let n=yx(Ud.bgColor[YJ[t]][r](...i),Ud.bgColor.close,this._styler);return Uy(this,n,this._isEmpty)}}}}var Lwe=Object.defineProperties(()=>{},{...uf,level:{enumerable:!0,get(){return this._generator.level},set(r){this._generator.level=r}}}),yx=(r,e,t)=>{let i,n;return t===void 0?(i=r,n=e):(i=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:i,closeAll:n,parent:t}},Uy=(r,e,t)=>{let i=(...n)=>Twe(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=Lwe,i._generator=r,i._styler=e,i._isEmpty=t,i},Twe=(r,e)=>{if(r.level<=0||!e)return r._isEmpty?"":e;let t=r._styler;if(t===void 0)return e;let{openAll:i,closeAll:n}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=Rwe(e,t.close,t.open),t=t.parent;let s=e.indexOf(` +`);return s!==-1&&(e=Fwe(e,n,i,s)),i+e+n},Cx,Owe=(r,...e)=>{let[t]=e;if(!Array.isArray(t))return e.join(" ");let i=e.slice(1),n=[t.raw[0]];for(let s=1;s{"use strict";Cs.isInteger=r=>typeof r=="number"?Number.isInteger(r):typeof r=="string"&&r.trim()!==""?Number.isInteger(Number(r)):!1;Cs.find=(r,e)=>r.nodes.find(t=>t.type===e);Cs.exceedsLimit=(r,e,t=1,i)=>i===!1||!Cs.isInteger(r)||!Cs.isInteger(e)?!1:(Number(e)-Number(r))/Number(t)>=i;Cs.escapeNode=(r,e=0,t)=>{let i=r.nodes[e];!i||(t&&i.type===t||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};Cs.encloseBrace=r=>r.type!=="brace"?!1:r.commas>>0+r.ranges>>0===0?(r.invalid=!0,!0):!1;Cs.isInvalidBrace=r=>r.type!=="brace"?!1:r.invalid===!0||r.dollar?!0:r.commas>>0+r.ranges>>0===0||r.open!==!0||r.close!==!0?(r.invalid=!0,!0):!1;Cs.isOpenOrClose=r=>r.type==="open"||r.type==="close"?!0:r.open===!0||r.close===!0;Cs.reduce=r=>r.reduce((e,t)=>(t.type==="text"&&e.push(t.value),t.type==="range"&&(t.type="text"),e),[]);Cs.flatten=(...r)=>{let e=[],t=i=>{for(let n=0;n{"use strict";var WJ=Ky();zJ.exports=(r,e={})=>{let t=(i,n={})=>{let s=e.escapeInvalid&&WJ.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&WJ.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=t(l);return a};return t(r)}});var XJ=w((rtt,VJ)=>{"use strict";VJ.exports=function(r){return typeof r=="number"?r-r===0:typeof r=="string"&&r.trim()!==""?Number.isFinite?Number.isFinite(+r):isFinite(+r):!1}});var s3=w((itt,n3)=>{"use strict";var ZJ=XJ(),Ic=(r,e,t)=>{if(ZJ(r)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||r===e)return String(r);if(ZJ(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i={relaxZeros:!0,...t};typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=r+":"+e+"="+n+s+o+a;if(Ic.cache.hasOwnProperty(l))return Ic.cache[l].result;let c=Math.min(r,e),u=Math.max(r,e);if(Math.abs(c-u)===1){let C=r+"|"+e;return i.capture?`(${C})`:i.wrap===!1?C:`(?:${C})`}let g=i3(r)||i3(e),f={min:r,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let C=u<0?Math.abs(u):1;p=_J(C,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=_J(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Mwe(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),Ic.cache[l]=f,f.result};function Mwe(r,e,t){let i=Bx(r,e,"-",!1,t)||[],n=Bx(e,r,"",!1,t)||[],s=Bx(r,e,"-?",!0,t)||[];return i.concat(s).concat(n).join("|")}function Uwe(r,e){let t=1,i=1,n=e3(r,t),s=new Set([e]);for(;r<=n&&n<=e;)s.add(n),t+=1,n=e3(r,t);for(n=t3(e+1,i)-1;r1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+r3(a.count),o=c+1;continue}t.isPadded&&(g=jwe(c,t,i)),u.string=g+u.pattern+r3(u.count),s.push(u),o=c+1,a=u}return s}function Bx(r,e,t,i,n){let s=[];for(let o of r){let{string:a}=o;!i&&!$J(e,"string",a)&&s.push(t+a),i&&$J(e,"string",a)&&s.push(t+a)}return s}function Hwe(r,e){let t=[];for(let i=0;ie?1:e>r?-1:0}function $J(r,e,t){return r.some(i=>i[e]===t)}function e3(r,e){return Number(String(r).slice(0,-e)+"9".repeat(e))}function t3(r,e){return r-r%Math.pow(10,e)}function r3(r){let[e=0,t=""]=r;return t||e>1?`{${e+(t?","+t:"")}}`:""}function Ywe(r,e,t){return`[${r}${e-r===1?"":"-"}${e}]`}function i3(r){return/^-?(0+)\d/.test(r)}function jwe(r,e,t){if(!e.isPadded)return r;let i=Math.abs(e.maxLen-String(r).length),n=t.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}Ic.cache={};Ic.clearCache=()=>Ic.cache={};n3.exports=Ic});var Sx=w((ntt,f3)=>{"use strict";var qwe=J("util"),A3=s3(),o3=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),Jwe=r=>e=>r===!0?Number(e):String(e),Qx=r=>typeof r=="number"||typeof r=="string"&&r!=="",Hd=r=>Number.isInteger(+r),bx=r=>{let e=`${r}`,t=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++t]==="0";);return t>0},Wwe=(r,e,t)=>typeof r=="string"||typeof e=="string"?!0:t.stringify===!0,zwe=(r,e,t)=>{if(e>0){let i=r[0]==="-"?"-":"";i&&(r=r.slice(1)),r=i+r.padStart(i?e-1:e,"0")}return t===!1?String(r):r},a3=(r,e)=>{let t=r[0]==="-"?"-":"";for(t&&(r=r.slice(1),e--);r.length{r.negatives.sort((o,a)=>oa?1:0),r.positives.sort((o,a)=>oa?1:0);let t=e.capture?"":"?:",i="",n="",s;return r.positives.length&&(i=r.positives.join("|")),r.negatives.length&&(n=`-(${t}${r.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${t}${s})`:s},l3=(r,e,t,i)=>{if(t)return A3(r,e,{wrap:!1,...i});let n=String.fromCharCode(r);if(r===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},c3=(r,e,t)=>{if(Array.isArray(r)){let i=t.wrap===!0,n=t.capture?"":"?:";return i?`(${n}${r.join("|")})`:r.join("|")}return A3(r,e,t)},u3=(...r)=>new RangeError("Invalid range arguments: "+qwe.inspect(...r)),g3=(r,e,t)=>{if(t.strictRanges===!0)throw u3([r,e]);return[]},Xwe=(r,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${r}" to be a number`);return[]},Zwe=(r,e,t=1,i={})=>{let n=Number(r),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw u3([r,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(r),l=String(e),c=String(t);t=Math.max(Math.abs(t),1);let u=bx(a)||bx(l)||bx(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Wwe(r,e,i)===!1,h=i.transform||Jwe(f);if(i.toRegex&&t===1)return l3(a3(r,g),a3(e,g),!0,i);let p={negatives:[],positives:[]},C=v=>p[v<0?"negatives":"positives"].push(Math.abs(v)),y=[],B=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&t>1?C(n):y.push(zwe(h(n,B),g,f)),n=o?n-t:n+t,B++;return i.toRegex===!0?t>1?Vwe(p,i):c3(y,null,{wrap:!1,...i}):y},_we=(r,e,t=1,i={})=>{if(!Hd(r)&&r.length>1||!Hd(e)&&e.length>1)return g3(r,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${r}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&t===1)return l3(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-t:s+t,g++;return i.toRegex===!0?c3(u,null,{wrap:!1,options:i}):u},Gy=(r,e,t,i={})=>{if(e==null&&Qx(r))return[r];if(!Qx(r)||!Qx(e))return g3(r,e,i);if(typeof t=="function")return Gy(r,e,1,{transform:t});if(o3(t))return Gy(r,e,0,t);let n={...i};return n.capture===!0&&(n.wrap=!0),t=t||n.step||1,Hd(t)?Hd(r)&&Hd(e)?Zwe(r,e,t,n):_we(r,e,Math.max(Math.abs(t),1),n):t!=null&&!o3(t)?Xwe(t,n):Gy(r,e,1,t)};f3.exports=Gy});var d3=w((stt,p3)=>{"use strict";var $we=Sx(),h3=Ky(),eBe=(r,e={})=>{let t=(i,n={})=>{let s=h3.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=h3.reduce(i.nodes),g=$we(...u,{...e,wrap:!1,toRegex:!0});if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=t(u,i);return c};return t(r)};p3.exports=eBe});var E3=w((ott,m3)=>{"use strict";var tBe=Sx(),C3=Hy(),gf=Ky(),yc=(r="",e="",t=!1)=>{let i=[];if(r=[].concat(r),e=[].concat(e),!e.length)return r;if(!r.length)return t?gf.flatten(e).map(n=>`{${n}}`):e;for(let n of r)if(Array.isArray(n))for(let s of n)i.push(yc(s,e,t));else for(let s of e)t===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?yc(n,s,t):n+s);return gf.flatten(i)},rBe=(r,e={})=>{let t=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(yc(a.pop(),C3(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(yc(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=gf.reduce(n.nodes);if(gf.exceedsLimit(...g,e.step,t))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=tBe(...g,e);f.length===0&&(f=C3(n,e)),a.push(yc(a.pop(),f)),n.nodes=[];return}let l=gf.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";I3.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var S3=w((Att,b3)=>{"use strict";var iBe=Hy(),{MAX_LENGTH:w3,CHAR_BACKSLASH:vx,CHAR_BACKTICK:nBe,CHAR_COMMA:sBe,CHAR_DOT:oBe,CHAR_LEFT_PARENTHESES:aBe,CHAR_RIGHT_PARENTHESES:ABe,CHAR_LEFT_CURLY_BRACE:lBe,CHAR_RIGHT_CURLY_BRACE:cBe,CHAR_LEFT_SQUARE_BRACKET:B3,CHAR_RIGHT_SQUARE_BRACKET:Q3,CHAR_DOUBLE_QUOTE:uBe,CHAR_SINGLE_QUOTE:gBe,CHAR_NO_BREAK_SPACE:fBe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:hBe}=y3(),pBe=(r,e={})=>{if(typeof r!="string")throw new TypeError("Expected a string");let t=e||{},i=typeof t.maxLength=="number"?Math.min(w3,t.maxLength):w3;if(r.length>i)throw new SyntaxError(`Input length (${r.length}), exceeds max characters (${i})`);let n={type:"root",input:r,nodes:[]},s=[n],o=n,a=n,l=0,c=r.length,u=0,g=0,f,h={},p=()=>r[u++],C=y=>{if(y.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&y.type==="text"){a.value+=y.value;return}return o.nodes.push(y),y.parent=o,y.prev=a,a=y,y};for(C({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let y=o.nodes.shift();o.nodes=[y,{type:"text",value:iBe(o)}]}C({type:"comma",value:f}),o.commas++;continue}if(f===oBe&&g>0&&o.commas===0){let y=o.nodes;if(g===0||y.length===0){C({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){y.pop();let B=y[y.length-1];B.value+=a.value+f,a=B,o.ranges--;continue}C({type:"dot",value:f});continue}C({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=s[s.length-1],B=y.nodes.indexOf(o);y.nodes.splice(B,1,...o.nodes)}while(s.length>0);return C({type:"eos"}),n};b3.exports=pBe});var P3=w((ltt,x3)=>{"use strict";var v3=Hy(),dBe=d3(),CBe=E3(),mBe=S3(),qn=(r,e={})=>{let t=[];if(Array.isArray(r))for(let i of r){let n=qn.create(i,e);Array.isArray(n)?t.push(...n):t.push(n)}else t=[].concat(qn.create(r,e));return e&&e.expand===!0&&e.nodupes===!0&&(t=[...new Set(t)]),t};qn.parse=(r,e={})=>mBe(r,e);qn.stringify=(r,e={})=>v3(typeof r=="string"?qn.parse(r,e):r,e);qn.compile=(r,e={})=>(typeof r=="string"&&(r=qn.parse(r,e)),dBe(r,e));qn.expand=(r,e={})=>{typeof r=="string"&&(r=qn.parse(r,e));let t=CBe(r,e);return e.noempty===!0&&(t=t.filter(Boolean)),e.nodupes===!0&&(t=[...new Set(t)]),t};qn.create=(r,e={})=>r===""||r.length<3?[r]:e.expand!==!0?qn.compile(r,e):qn.expand(r,e);x3.exports=qn});var Gd=w((ctt,N3)=>{"use strict";var EBe=J("path"),Mo="\\\\/",D3=`[^${Mo}]`,Fa="\\.",IBe="\\+",yBe="\\?",Yy="\\/",wBe="(?=.)",k3="[^/]",xx=`(?:${Yy}|$)`,R3=`(?:^|${Yy})`,Px=`${Fa}{1,2}${xx}`,BBe=`(?!${Fa})`,QBe=`(?!${R3}${Px})`,bBe=`(?!${Fa}{0,1}${xx})`,SBe=`(?!${Px})`,vBe=`[^.${Yy}]`,xBe=`${k3}*?`,F3={DOT_LITERAL:Fa,PLUS_LITERAL:IBe,QMARK_LITERAL:yBe,SLASH_LITERAL:Yy,ONE_CHAR:wBe,QMARK:k3,END_ANCHOR:xx,DOTS_SLASH:Px,NO_DOT:BBe,NO_DOTS:QBe,NO_DOT_SLASH:bBe,NO_DOTS_SLASH:SBe,QMARK_NO_DOT:vBe,STAR:xBe,START_ANCHOR:R3},PBe={...F3,SLASH_LITERAL:`[${Mo}]`,QMARK:D3,STAR:`${D3}*?`,DOTS_SLASH:`${Fa}{1,2}(?:[${Mo}]|$)`,NO_DOT:`(?!${Fa})`,NO_DOTS:`(?!(?:^|[${Mo}])${Fa}{1,2}(?:[${Mo}]|$))`,NO_DOT_SLASH:`(?!${Fa}{0,1}(?:[${Mo}]|$))`,NO_DOTS_SLASH:`(?!${Fa}{1,2}(?:[${Mo}]|$))`,QMARK_NO_DOT:`[^.${Mo}]`,START_ANCHOR:`(?:^|[${Mo}])`,END_ANCHOR:`(?:[${Mo}]|$)`},DBe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};N3.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:DBe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:EBe.sep,extglobChars(r){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${r.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(r){return r===!0?PBe:F3}}});var Yd=w(yn=>{"use strict";var kBe=J("path"),RBe=process.platform==="win32",{REGEX_BACKSLASH:FBe,REGEX_REMOVE_BACKSLASH:NBe,REGEX_SPECIAL_CHARS:LBe,REGEX_SPECIAL_CHARS_GLOBAL:TBe}=Gd();yn.isObject=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);yn.hasRegexChars=r=>LBe.test(r);yn.isRegexChar=r=>r.length===1&&yn.hasRegexChars(r);yn.escapeRegex=r=>r.replace(TBe,"\\$1");yn.toPosixSlashes=r=>r.replace(FBe,"/");yn.removeBackslashes=r=>r.replace(NBe,e=>e==="\\"?"":e);yn.supportsLookbehinds=()=>{let r=process.version.slice(1).split(".").map(Number);return r.length===3&&r[0]>=9||r[0]===8&&r[1]>=10};yn.isWindows=r=>r&&typeof r.windows=="boolean"?r.windows:RBe===!0||kBe.sep==="\\";yn.escapeLast=(r,e,t)=>{let i=r.lastIndexOf(e,t);return i===-1?r:r[i-1]==="\\"?yn.escapeLast(r,e,i-1):`${r.slice(0,i)}\\${r.slice(i)}`};yn.removePrefix=(r,e={})=>{let t=r;return t.startsWith("./")&&(t=t.slice(2),e.prefix="./"),t};yn.wrapOutput=(r,e={},t={})=>{let i=t.contains?"":"^",n=t.contains?"":"$",s=`${i}(?:${r})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var G3=w((gtt,H3)=>{"use strict";var L3=Yd(),{CHAR_ASTERISK:Dx,CHAR_AT:OBe,CHAR_BACKWARD_SLASH:jd,CHAR_COMMA:MBe,CHAR_DOT:kx,CHAR_EXCLAMATION_MARK:Rx,CHAR_FORWARD_SLASH:K3,CHAR_LEFT_CURLY_BRACE:Fx,CHAR_LEFT_PARENTHESES:Nx,CHAR_LEFT_SQUARE_BRACKET:UBe,CHAR_PLUS:KBe,CHAR_QUESTION_MARK:T3,CHAR_RIGHT_CURLY_BRACE:HBe,CHAR_RIGHT_PARENTHESES:O3,CHAR_RIGHT_SQUARE_BRACKET:GBe}=Gd(),M3=r=>r===K3||r===jd,U3=r=>{r.isPrefix!==!0&&(r.depth=r.isGlobstar?1/0:1)},YBe=(r,e)=>{let t=e||{},i=r.length-1,n=t.parts===!0||t.scanToEnd===!0,s=[],o=[],a=[],l=r,c=-1,u=0,g=0,f=!1,h=!1,p=!1,C=!1,y=!1,B=!1,v=!1,D=!1,L=!1,H=!1,j=0,$,V,W={value:"",depth:0,isGlob:!1},_=()=>c>=i,A=()=>l.charCodeAt(c+1),Ae=()=>($=V,l.charCodeAt(++c));for(;c0&&(re=l.slice(0,u),l=l.slice(u),g-=u),ge&&p===!0&&g>0?(ge=l.slice(0,g),O=l.slice(g)):p===!0?(ge="",O=l):ge=l,ge&&ge!==""&&ge!=="/"&&ge!==l&&M3(ge.charCodeAt(ge.length-1))&&(ge=ge.slice(0,-1)),t.unescape===!0&&(O&&(O=L3.removeBackslashes(O)),ge&&v===!0&&(ge=L3.removeBackslashes(ge)));let F={prefix:re,input:r,start:u,base:ge,glob:O,isBrace:f,isBracket:h,isGlob:p,isExtglob:C,isGlobstar:y,negated:D,negatedExtglob:L};if(t.tokens===!0&&(F.maxDepth=0,M3(V)||o.push(W),F.tokens=o),t.parts===!0||t.tokens===!0){let ue;for(let pe=0;pe{"use strict";var jy=Gd(),Jn=Yd(),{MAX_LENGTH:qy,POSIX_REGEX_SOURCE:jBe,REGEX_NON_SPECIAL_CHARS:qBe,REGEX_SPECIAL_CHARS_BACKREF:JBe,REPLACEMENTS:Y3}=jy,WBe=(r,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...r,e);r.sort();let t=`[${r.join("-")}]`;try{new RegExp(t)}catch{return r.map(n=>Jn.escapeRegex(n)).join("..")}return t},ff=(r,e)=>`Missing ${r}: "${e}" - use "\\\\${e}" to match literal characters`,Lx=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");r=Y3[r]||r;let t={...e},i=typeof t.maxLength=="number"?Math.min(qy,t.maxLength):qy,n=r.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:t.prepend||""},o=[s],a=t.capture?"":"?:",l=Jn.isWindows(e),c=jy.globChars(l),u=jy.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:C,NO_DOT:y,NO_DOT_SLASH:B,NO_DOTS_SLASH:v,QMARK:D,QMARK_NO_DOT:L,STAR:H,START_ANCHOR:j}=c,$=Y=>`(${a}(?:(?!${j}${Y.dot?C:g}).)*?)`,V=t.dot?"":y,W=t.dot?D:L,_=t.bash===!0?$(t):H;t.capture&&(_=`(${_})`),typeof t.noext=="boolean"&&(t.noextglob=t.noext);let A={input:r,index:-1,start:0,dot:t.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};r=Jn.removePrefix(r,A),n=r.length;let Ae=[],ge=[],re=[],O=s,F,ue=()=>A.index===n-1,pe=A.peek=(Y=1)=>r[A.index+Y],ke=A.advance=()=>r[++A.index]||"",Fe=()=>r.slice(A.index+1),Ne=(Y="",he=0)=>{A.consumed+=Y,A.index+=he},oe=Y=>{A.output+=Y.output!=null?Y.output:Y.value,Ne(Y.value)},le=()=>{let Y=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)ke(),A.start++,Y++;return Y%2===0?!1:(A.negated=!0,A.start++,!0)},Be=Y=>{A[Y]++,re.push(Y)},fe=Y=>{A[Y]--,re.pop()},ae=Y=>{if(O.type==="globstar"){let he=A.braces>0&&(Y.type==="comma"||Y.type==="brace"),ie=Y.extglob===!0||Ae.length&&(Y.type==="pipe"||Y.type==="paren");Y.type!=="slash"&&Y.type!=="paren"&&!he&&!ie&&(A.output=A.output.slice(0,-O.output.length),O.type="star",O.value="*",O.output=_,A.output+=O.output)}if(Ae.length&&Y.type!=="paren"&&(Ae[Ae.length-1].inner+=Y.value),(Y.value||Y.output)&&oe(Y),O&&O.type==="text"&&Y.type==="text"){O.value+=Y.value,O.output=(O.output||"")+Y.value;return}Y.prev=O,o.push(Y),O=Y},qe=(Y,he)=>{let ie={...u[he],conditions:1,inner:""};ie.prev=O,ie.parens=A.parens,ie.output=A.output;let de=(t.capture?"(":"")+ie.open;Be("parens"),ae({type:Y,value:he,output:A.output?"":p}),ae({type:"paren",extglob:!0,value:ke(),output:de}),Ae.push(ie)},ne=Y=>{let he=Y.close+(t.capture?")":""),ie;if(Y.type==="negate"){let de=_;if(Y.inner&&Y.inner.length>1&&Y.inner.includes("/")&&(de=$(t)),(de!==_||ue()||/^\)+$/.test(Fe()))&&(he=Y.close=`)$))${de}`),Y.inner.includes("*")&&(ie=Fe())&&/^\.[^\\/.]+$/.test(ie)){let _e=Lx(ie,{...e,fastpaths:!1}).output;he=Y.close=`)${_e})${de})`}Y.prev.type==="bos"&&(A.negatedExtglob=!0)}ae({type:"paren",extglob:!0,value:F,output:he}),fe("parens")};if(t.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(r)){let Y=!1,he=r.replace(JBe,(ie,de,_e,Pt,It,Or)=>Pt==="\\"?(Y=!0,ie):Pt==="?"?de?de+Pt+(It?D.repeat(It.length):""):Or===0?W+(It?D.repeat(It.length):""):D.repeat(_e.length):Pt==="."?g.repeat(_e.length):Pt==="*"?de?de+Pt+(It?_:""):_:de?ie:`\\${ie}`);return Y===!0&&(t.unescape===!0?he=he.replace(/\\/g,""):he=he.replace(/\\+/g,ie=>ie.length%2===0?"\\\\":ie?"\\":"")),he===r&&t.contains===!0?(A.output=r,A):(A.output=Jn.wrapOutput(he,A,e),A)}for(;!ue();){if(F=ke(),F==="\0")continue;if(F==="\\"){let ie=pe();if(ie==="/"&&t.bash!==!0||ie==="."||ie===";")continue;if(!ie){F+="\\",ae({type:"text",value:F});continue}let de=/^\\+/.exec(Fe()),_e=0;if(de&&de[0].length>2&&(_e=de[0].length,A.index+=_e,_e%2!==0&&(F+="\\")),t.unescape===!0?F=ke():F+=ke(),A.brackets===0){ae({type:"text",value:F});continue}}if(A.brackets>0&&(F!=="]"||O.value==="["||O.value==="[^")){if(t.posix!==!1&&F===":"){let ie=O.value.slice(1);if(ie.includes("[")&&(O.posix=!0,ie.includes(":"))){let de=O.value.lastIndexOf("["),_e=O.value.slice(0,de),Pt=O.value.slice(de+2),It=jBe[Pt];if(It){O.value=_e+It,A.backtrack=!0,ke(),!s.output&&o.indexOf(O)===1&&(s.output=p);continue}}}(F==="["&&pe()!==":"||F==="-"&&pe()==="]")&&(F=`\\${F}`),F==="]"&&(O.value==="["||O.value==="[^")&&(F=`\\${F}`),t.posix===!0&&F==="!"&&O.value==="["&&(F="^"),O.value+=F,oe({value:F});continue}if(A.quotes===1&&F!=='"'){F=Jn.escapeRegex(F),O.value+=F,oe({value:F});continue}if(F==='"'){A.quotes=A.quotes===1?0:1,t.keepQuotes===!0&&ae({type:"text",value:F});continue}if(F==="("){Be("parens"),ae({type:"paren",value:F});continue}if(F===")"){if(A.parens===0&&t.strictBrackets===!0)throw new SyntaxError(ff("opening","("));let ie=Ae[Ae.length-1];if(ie&&A.parens===ie.parens+1){ne(Ae.pop());continue}ae({type:"paren",value:F,output:A.parens?")":"\\)"}),fe("parens");continue}if(F==="["){if(t.nobracket===!0||!Fe().includes("]")){if(t.nobracket!==!0&&t.strictBrackets===!0)throw new SyntaxError(ff("closing","]"));F=`\\${F}`}else Be("brackets");ae({type:"bracket",value:F});continue}if(F==="]"){if(t.nobracket===!0||O&&O.type==="bracket"&&O.value.length===1){ae({type:"text",value:F,output:`\\${F}`});continue}if(A.brackets===0){if(t.strictBrackets===!0)throw new SyntaxError(ff("opening","["));ae({type:"text",value:F,output:`\\${F}`});continue}fe("brackets");let ie=O.value.slice(1);if(O.posix!==!0&&ie[0]==="^"&&!ie.includes("/")&&(F=`/${F}`),O.value+=F,oe({value:F}),t.literalBrackets===!1||Jn.hasRegexChars(ie))continue;let de=Jn.escapeRegex(O.value);if(A.output=A.output.slice(0,-O.value.length),t.literalBrackets===!0){A.output+=de,O.value=de;continue}O.value=`(${a}${de}|${O.value})`,A.output+=O.value;continue}if(F==="{"&&t.nobrace!==!0){Be("braces");let ie={type:"brace",value:F,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};ge.push(ie),ae(ie);continue}if(F==="}"){let ie=ge[ge.length-1];if(t.nobrace===!0||!ie){ae({type:"text",value:F,output:F});continue}let de=")";if(ie.dots===!0){let _e=o.slice(),Pt=[];for(let It=_e.length-1;It>=0&&(o.pop(),_e[It].type!=="brace");It--)_e[It].type!=="dots"&&Pt.unshift(_e[It].value);de=WBe(Pt,t),A.backtrack=!0}if(ie.comma!==!0&&ie.dots!==!0){let _e=A.output.slice(0,ie.outputIndex),Pt=A.tokens.slice(ie.tokensIndex);ie.value=ie.output="\\{",F=de="\\}",A.output=_e;for(let It of Pt)A.output+=It.output||It.value}ae({type:"brace",value:F,output:de}),fe("braces"),ge.pop();continue}if(F==="|"){Ae.length>0&&Ae[Ae.length-1].conditions++,ae({type:"text",value:F});continue}if(F===","){let ie=F,de=ge[ge.length-1];de&&re[re.length-1]==="braces"&&(de.comma=!0,ie="|"),ae({type:"comma",value:F,output:ie});continue}if(F==="/"){if(O.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),O=s;continue}ae({type:"slash",value:F,output:h});continue}if(F==="."){if(A.braces>0&&O.type==="dot"){O.value==="."&&(O.output=g);let ie=ge[ge.length-1];O.type="dots",O.output+=F,O.value+=F,ie.dots=!0;continue}if(A.braces+A.parens===0&&O.type!=="bos"&&O.type!=="slash"){ae({type:"text",value:F,output:g});continue}ae({type:"dot",value:F,output:g});continue}if(F==="?"){if(!(O&&O.value==="(")&&t.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){qe("qmark",F);continue}if(O&&O.type==="paren"){let de=pe(),_e=F;if(de==="<"&&!Jn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(O.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(Fe()))&&(_e=`\\${F}`),ae({type:"text",value:F,output:_e});continue}if(t.dot!==!0&&(O.type==="slash"||O.type==="bos")){ae({type:"qmark",value:F,output:L});continue}ae({type:"qmark",value:F,output:D});continue}if(F==="!"){if(t.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){qe("negate",F);continue}if(t.nonegate!==!0&&A.index===0){le();continue}}if(F==="+"){if(t.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){qe("plus",F);continue}if(O&&O.value==="("||t.regex===!1){ae({type:"plus",value:F,output:f});continue}if(O&&(O.type==="bracket"||O.type==="paren"||O.type==="brace")||A.parens>0){ae({type:"plus",value:F});continue}ae({type:"plus",value:f});continue}if(F==="@"){if(t.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){ae({type:"at",extglob:!0,value:F,output:""});continue}ae({type:"text",value:F});continue}if(F!=="*"){(F==="$"||F==="^")&&(F=`\\${F}`);let ie=qBe.exec(Fe());ie&&(F+=ie[0],A.index+=ie[0].length),ae({type:"text",value:F});continue}if(O&&(O.type==="globstar"||O.star===!0)){O.type="star",O.star=!0,O.value+=F,O.output=_,A.backtrack=!0,A.globstar=!0,Ne(F);continue}let Y=Fe();if(t.noextglob!==!0&&/^\([^?]/.test(Y)){qe("star",F);continue}if(O.type==="star"){if(t.noglobstar===!0){Ne(F);continue}let ie=O.prev,de=ie.prev,_e=ie.type==="slash"||ie.type==="bos",Pt=de&&(de.type==="star"||de.type==="globstar");if(t.bash===!0&&(!_e||Y[0]&&Y[0]!=="/")){ae({type:"star",value:F,output:""});continue}let It=A.braces>0&&(ie.type==="comma"||ie.type==="brace"),Or=Ae.length&&(ie.type==="pipe"||ie.type==="paren");if(!_e&&ie.type!=="paren"&&!It&&!Or){ae({type:"star",value:F,output:""});continue}for(;Y.slice(0,3)==="/**";){let ii=r[A.index+4];if(ii&&ii!=="/")break;Y=Y.slice(3),Ne("/**",3)}if(ie.type==="bos"&&ue()){O.type="globstar",O.value+=F,O.output=$(t),A.output=O.output,A.globstar=!0,Ne(F);continue}if(ie.type==="slash"&&ie.prev.type!=="bos"&&!Pt&&ue()){A.output=A.output.slice(0,-(ie.output+O.output).length),ie.output=`(?:${ie.output}`,O.type="globstar",O.output=$(t)+(t.strictSlashes?")":"|$)"),O.value+=F,A.globstar=!0,A.output+=ie.output+O.output,Ne(F);continue}if(ie.type==="slash"&&ie.prev.type!=="bos"&&Y[0]==="/"){let ii=Y[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ie.output+O.output).length),ie.output=`(?:${ie.output}`,O.type="globstar",O.output=`${$(t)}${h}|${h}${ii})`,O.value+=F,A.output+=ie.output+O.output,A.globstar=!0,Ne(F+ke()),ae({type:"slash",value:"/",output:""});continue}if(ie.type==="bos"&&Y[0]==="/"){O.type="globstar",O.value+=F,O.output=`(?:^|${h}|${$(t)}${h})`,A.output=O.output,A.globstar=!0,Ne(F+ke()),ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-O.output.length),O.type="globstar",O.output=$(t),O.value+=F,A.output+=O.output,A.globstar=!0,Ne(F);continue}let he={type:"star",value:F,output:_};if(t.bash===!0){he.output=".*?",(O.type==="bos"||O.type==="slash")&&(he.output=V+he.output),ae(he);continue}if(O&&(O.type==="bracket"||O.type==="paren")&&t.regex===!0){he.output=F,ae(he);continue}(A.index===A.start||O.type==="slash"||O.type==="dot")&&(O.type==="dot"?(A.output+=B,O.output+=B):t.dot===!0?(A.output+=v,O.output+=v):(A.output+=V,O.output+=V),pe()!=="*"&&(A.output+=p,O.output+=p)),ae(he)}for(;A.brackets>0;){if(t.strictBrackets===!0)throw new SyntaxError(ff("closing","]"));A.output=Jn.escapeLast(A.output,"["),fe("brackets")}for(;A.parens>0;){if(t.strictBrackets===!0)throw new SyntaxError(ff("closing",")"));A.output=Jn.escapeLast(A.output,"("),fe("parens")}for(;A.braces>0;){if(t.strictBrackets===!0)throw new SyntaxError(ff("closing","}"));A.output=Jn.escapeLast(A.output,"{"),fe("braces")}if(t.strictSlashes!==!0&&(O.type==="star"||O.type==="bracket")&&ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let Y of A.tokens)A.output+=Y.output!=null?Y.output:Y.value,Y.suffix&&(A.output+=Y.suffix)}return A};Lx.fastpaths=(r,e)=>{let t={...e},i=typeof t.maxLength=="number"?Math.min(qy,t.maxLength):qy,n=r.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);r=Y3[r]||r;let s=Jn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=jy.globChars(s),C=t.dot?g:u,y=t.dot?f:u,B=t.capture?"":"?:",v={negated:!1,prefix:""},D=t.bash===!0?".*?":h;t.capture&&(D=`(${D})`);let L=V=>V.noglobstar===!0?D:`(${B}(?:(?!${p}${V.dot?c:o}).)*?)`,H=V=>{switch(V){case"*":return`${C}${l}${D}`;case".*":return`${o}${l}${D}`;case"*.*":return`${C}${D}${o}${l}${D}`;case"*/*":return`${C}${D}${a}${l}${y}${D}`;case"**":return C+L(t);case"**/*":return`(?:${C}${L(t)}${a})?${y}${l}${D}`;case"**/*.*":return`(?:${C}${L(t)}${a})?${y}${D}${o}${l}${D}`;case"**/.*":return`(?:${C}${L(t)}${a})?${o}${l}${D}`;default:{let W=/^(.*?)\.(\w+)$/.exec(V);if(!W)return;let _=H(W[1]);return _?_+o+W[2]:void 0}}},j=Jn.removePrefix(r,v),$=H(j);return $&&t.strictSlashes!==!0&&($+=`${a}?`),$};j3.exports=Lx});var W3=w((htt,J3)=>{"use strict";var zBe=J("path"),VBe=G3(),Tx=q3(),Ox=Yd(),XBe=Gd(),ZBe=r=>r&&typeof r=="object"&&!Array.isArray(r),Yr=(r,e,t=!1)=>{if(Array.isArray(r)){let u=r.map(f=>Yr(f,e,t));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=ZBe(r)&&r.tokens&&r.input;if(r===""||typeof r!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=Ox.isWindows(e),o=i?Yr.compileRe(r,e):Yr.makeRe(r,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u={...e,ignore:null,onMatch:null,onResult:null};l=Yr(n.ignore,u,t)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Yr.test(u,o,e,{glob:r,posix:s}),C={glob:r,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(C),f===!1?(C.isMatch=!1,g?C:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(C),C.isMatch=!1,g?C:!1):(typeof n.onMatch=="function"&&n.onMatch(C),g?C:!0)};return t&&(c.state=a),c};Yr.test=(r,e,t,{glob:i,posix:n}={})=>{if(typeof r!="string")throw new TypeError("Expected input to be a string");if(r==="")return{isMatch:!1,output:""};let s=t||{},o=s.format||(n?Ox.toPosixSlashes:null),a=r===i,l=a&&o?o(r):r;return a===!1&&(l=o?o(r):r,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Yr.matchBase(r,e,t,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Yr.matchBase=(r,e,t,i=Ox.isWindows(t))=>(e instanceof RegExp?e:Yr.makeRe(e,t)).test(zBe.basename(r));Yr.isMatch=(r,e,t)=>Yr(e,t)(r);Yr.parse=(r,e)=>Array.isArray(r)?r.map(t=>Yr.parse(t,e)):Tx(r,{...e,fastpaths:!1});Yr.scan=(r,e)=>VBe(r,e);Yr.compileRe=(r,e,t=!1,i=!1)=>{if(t===!0)return r.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${r.output})${o}`;r&&r.negated===!0&&(a=`^(?!${a}).*$`);let l=Yr.toRegex(a,e);return i===!0&&(l.state=r),l};Yr.makeRe=(r,e={},t=!1,i=!1)=>{if(!r||typeof r!="string")throw new TypeError("Expected a non-empty string");let n={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(r[0]==="."||r[0]==="*")&&(n.output=Tx.fastpaths(r,e)),n.output||(n=Tx(r,e)),Yr.compileRe(n,e,t,i)};Yr.toRegex=(r,e)=>{try{let t=e||{};return new RegExp(r,t.flags||(t.nocase?"i":""))}catch(t){if(e&&e.debug===!0)throw t;return/$^/}};Yr.constants=XBe;J3.exports=Yr});var Mx=w((ptt,z3)=>{"use strict";z3.exports=W3()});var wn=w((dtt,_3)=>{"use strict";var X3=J("util"),Z3=P3(),Uo=Mx(),Ux=Yd(),V3=r=>r===""||r==="./",Sr=(r,e,t)=>{e=[].concat(e),r=[].concat(r);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),t&&t.onResult&&t.onResult(u)};for(let u=0;u!i.has(u));if(t&&c.length===0){if(t.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(t.nonull===!0||t.nullglob===!0)return t.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};Sr.match=Sr;Sr.matcher=(r,e)=>Uo(r,e);Sr.isMatch=(r,e,t)=>Uo(e,t)(r);Sr.any=Sr.isMatch;Sr.not=(r,e,t={})=>{e=[].concat(e).map(String);let i=new Set,n=[],o=Sr(r,e,{...t,onResult:a=>{t.onResult&&t.onResult(a),n.push(a.output)}});for(let a of n)o.includes(a)||i.add(a);return[...i]};Sr.contains=(r,e,t)=>{if(typeof r!="string")throw new TypeError(`Expected a string: "${X3.inspect(r)}"`);if(Array.isArray(e))return e.some(i=>Sr.contains(r,i,t));if(typeof e=="string"){if(V3(r)||V3(e))return!1;if(r.includes(e)||r.startsWith("./")&&r.slice(2).includes(e))return!0}return Sr.isMatch(r,e,{...t,contains:!0})};Sr.matchKeys=(r,e,t)=>{if(!Ux.isObject(r))throw new TypeError("Expected the first argument to be an object");let i=Sr(Object.keys(r),e,t),n={};for(let s of i)n[s]=r[s];return n};Sr.some=(r,e,t)=>{let i=[].concat(r);for(let n of[].concat(e)){let s=Uo(String(n),t);if(i.some(o=>s(o)))return!0}return!1};Sr.every=(r,e,t)=>{let i=[].concat(r);for(let n of[].concat(e)){let s=Uo(String(n),t);if(!i.every(o=>s(o)))return!1}return!0};Sr.all=(r,e,t)=>{if(typeof r!="string")throw new TypeError(`Expected a string: "${X3.inspect(r)}"`);return[].concat(e).every(i=>Uo(i,t)(r))};Sr.capture=(r,e,t)=>{let i=Ux.isWindows(t),s=Uo.makeRe(String(r),{...t,capture:!0}).exec(i?Ux.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};Sr.makeRe=(...r)=>Uo.makeRe(...r);Sr.scan=(...r)=>Uo.scan(...r);Sr.parse=(r,e)=>{let t=[];for(let i of[].concat(r||[]))for(let n of Z3(String(i),e))t.push(Uo.parse(n,e));return t};Sr.braces=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(r)?[r]:Z3(r,e)};Sr.braceExpand=(r,e)=>{if(typeof r!="string")throw new TypeError("Expected a string");return Sr.braces(r,{...e,expand:!0})};_3.exports=Sr});var e8=w((Ctt,$3)=>{"use strict";$3.exports=({onlyFirst:r=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,r?void 0:"g")}});var r8=w((mtt,t8)=>{"use strict";var _Be=e8();t8.exports=r=>typeof r=="string"?r.replace(_Be(),""):r});var d8=w((Ptt,p8)=>{"use strict";p8.exports=(...r)=>[...new Set([].concat(...r))]});var sP=w((Dtt,E8)=>{"use strict";var u0e=J("stream"),C8=u0e.PassThrough,g0e=Array.prototype.slice;E8.exports=f0e;function f0e(){let r=[],e=!1,t=g0e.call(arguments),i=t[t.length-1];i&&!Array.isArray(i)&&i.pipe==null?t.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=C8(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});function h0e(r){return r.reduce((e,t)=>[].concat(e,t),[])}Zy.flatten=h0e;function p0e(r,e){let t=[[]],i=0;for(let n of r)e(n)?(i++,t[i]=[]):t[i].push(n);return t}Zy.splitWhen=p0e});var y8=w(oP=>{"use strict";Object.defineProperty(oP,"__esModule",{value:!0});function d0e(r){return r.code==="ENOENT"}oP.isEnoentCodeError=d0e});var w8=w(AP=>{"use strict";Object.defineProperty(AP,"__esModule",{value:!0});var aP=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function C0e(r,e){return new aP(r,e)}AP.createDirentFromStats=C0e});var B8=w(yf=>{"use strict";Object.defineProperty(yf,"__esModule",{value:!0});var m0e=J("path"),E0e=2,I0e=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function y0e(r){return r.replace(/\\/g,"/")}yf.unixify=y0e;function w0e(r,e){return m0e.resolve(r,e)}yf.makeAbsolute=w0e;function B0e(r){return r.replace(I0e,"\\$2")}yf.escape=B0e;function Q0e(r){if(r.charAt(0)==="."){let e=r.charAt(1);if(e==="/"||e==="\\")return r.slice(E0e)}return r}yf.removeLeadingDotSegment=Q0e});var b8=w((Ltt,Q8)=>{Q8.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1}});var x8=w((Ttt,v8)=>{var b0e=b8(),S8={"{":"}","(":")","[":"]"},S0e=function(r){if(r[0]==="!")return!0;for(var e=0,t=-2,i=-2,n=-2,s=-2,o=-2;ee&&(o===-1||o>i||(o=r.indexOf("\\",e),o===-1||o>i)))||n!==-1&&r[e]==="{"&&r[e+1]!=="}"&&(n=r.indexOf("}",e),n>e&&(o=r.indexOf("\\",e),o===-1||o>n))||s!==-1&&r[e]==="("&&r[e+1]==="?"&&/[:!=]/.test(r[e+2])&&r[e+3]!==")"&&(s=r.indexOf(")",e),s>e&&(o=r.indexOf("\\",e),o===-1||o>s))||t!==-1&&r[e]==="("&&r[e+1]!=="|"&&(tt&&(o=r.indexOf("\\",t),o===-1||o>s))))return!0;if(r[e]==="\\"){var a=r[e+1];e+=2;var l=S8[a];if(l){var c=r.indexOf(l,e);c!==-1&&(e=c+1)}if(r[e]==="!")return!0}else e++}return!1},v0e=function(r){if(r[0]==="!")return!0;for(var e=0;e{"use strict";var x0e=x8(),P0e=J("path").posix.dirname,D0e=J("os").platform()==="win32",lP="/",k0e=/\\/g,R0e=/[\{\[].*[\}\]]$/,F0e=/(^|[^\\])([\{\[]|\([^\)]+$)/,N0e=/\\([\!\*\?\|\[\]\(\)\{\}])/g;P8.exports=function(e,t){var i=Object.assign({flipBackslashes:!0},t);i.flipBackslashes&&D0e&&e.indexOf(lP)<0&&(e=e.replace(k0e,lP)),R0e.test(e)&&(e+=lP),e+="a";do e=P0e(e);while(x0e(e)||F0e.test(e));return e.replace(N0e,"$1")}});var U8=w($r=>{"use strict";Object.defineProperty($r,"__esModule",{value:!0});var L0e=J("path"),T0e=D8(),k8=wn(),O0e=Mx(),R8="**",M0e="\\",U0e=/[*?]|^!/,K0e=/\[.*]/,H0e=/(?:^|[^!*+?@])\(.*\|.*\)/,G0e=/[!*+?@]\(.*\)/,Y0e=/{.*(?:,|\.\.).*}/;function F8(r,e={}){return!N8(r,e)}$r.isStaticPattern=F8;function N8(r,e={}){return!!(e.caseSensitiveMatch===!1||r.includes(M0e)||U0e.test(r)||K0e.test(r)||H0e.test(r)||e.extglob!==!1&&G0e.test(r)||e.braceExpansion!==!1&&Y0e.test(r))}$r.isDynamicPattern=N8;function j0e(r){return _y(r)?r.slice(1):r}$r.convertToPositivePattern=j0e;function q0e(r){return"!"+r}$r.convertToNegativePattern=q0e;function _y(r){return r.startsWith("!")&&r[1]!=="("}$r.isNegativePattern=_y;function L8(r){return!_y(r)}$r.isPositivePattern=L8;function J0e(r){return r.filter(_y)}$r.getNegativePatterns=J0e;function W0e(r){return r.filter(L8)}$r.getPositivePatterns=W0e;function z0e(r){return T0e(r,{flipBackslashes:!1})}$r.getBaseDirectory=z0e;function V0e(r){return r.includes(R8)}$r.hasGlobStar=V0e;function T8(r){return r.endsWith("/"+R8)}$r.endsWithSlashGlobStar=T8;function X0e(r){let e=L0e.basename(r);return T8(r)||F8(e)}$r.isAffectDepthOfReadingPattern=X0e;function Z0e(r){return r.reduce((e,t)=>e.concat(O8(t)),[])}$r.expandPatternsWithBraceExpansion=Z0e;function O8(r){return k8.braces(r,{expand:!0,nodupes:!0})}$r.expandBraceExpansion=O8;function _0e(r,e){let t=O0e.scan(r,Object.assign(Object.assign({},e),{parts:!0}));return t.parts.length===0?[r]:t.parts}$r.getPatternParts=_0e;function M8(r,e){return k8.makeRe(r,e)}$r.makeRe=M8;function $0e(r,e){return r.map(t=>M8(t,e))}$r.convertPatternsToRe=$0e;function eQe(r,e){return e.some(t=>t.test(r))}$r.matchAny=eQe});var H8=w(cP=>{"use strict";Object.defineProperty(cP,"__esModule",{value:!0});var tQe=sP();function rQe(r){let e=tQe(r);return r.forEach(t=>{t.once("error",i=>e.emit("error",i))}),e.once("close",()=>K8(r)),e.once("end",()=>K8(r)),e}cP.merge=rQe;function K8(r){r.forEach(e=>e.emit("close"))}});var G8=w($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});function iQe(r){return typeof r=="string"}$y.isString=iQe;function nQe(r){return r===""}$y.isEmpty=nQe});var Ta=w(La=>{"use strict";Object.defineProperty(La,"__esModule",{value:!0});var sQe=I8();La.array=sQe;var oQe=y8();La.errno=oQe;var aQe=w8();La.fs=aQe;var AQe=B8();La.path=AQe;var lQe=U8();La.pattern=lQe;var cQe=H8();La.stream=cQe;var uQe=G8();La.string=uQe});var W8=w(Oa=>{"use strict";Object.defineProperty(Oa,"__esModule",{value:!0});var Qc=Ta();function gQe(r,e){let t=Y8(r),i=j8(r,e.ignore),n=t.filter(l=>Qc.pattern.isStaticPattern(l,e)),s=t.filter(l=>Qc.pattern.isDynamicPattern(l,e)),o=uP(n,i,!1),a=uP(s,i,!0);return o.concat(a)}Oa.generate=gQe;function uP(r,e,t){let i=q8(r);return"."in i?[gP(".",r,e,t)]:J8(i,e,t)}Oa.convertPatternsToTasks=uP;function Y8(r){return Qc.pattern.getPositivePatterns(r)}Oa.getPositivePatterns=Y8;function j8(r,e){return Qc.pattern.getNegativePatterns(r).concat(e).map(Qc.pattern.convertToPositivePattern)}Oa.getNegativePatternsAsPositive=j8;function q8(r){let e={};return r.reduce((t,i)=>{let n=Qc.pattern.getBaseDirectory(i);return n in t?t[n].push(i):t[n]=[i],t},e)}Oa.groupPatternsByBaseDirectory=q8;function J8(r,e,t){return Object.keys(r).map(i=>gP(i,r[i],e,t))}Oa.convertPatternGroupsToTasks=J8;function gP(r,e,t,i){return{dynamic:i,positive:e,negative:t,base:r,patterns:[].concat(e,t.map(Qc.pattern.convertToNegativePattern))}}Oa.convertPatternGroupToTask=gP});var V8=w(ew=>{"use strict";Object.defineProperty(ew,"__esModule",{value:!0});ew.read=void 0;function fQe(r,e,t){e.fs.lstat(r,(i,n)=>{if(i!==null){z8(t,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){fP(t,n);return}e.fs.stat(r,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){z8(t,s);return}fP(t,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),fP(t,o)})})}ew.read=fQe;function z8(r,e){r(e)}function fP(r,e){r(null,e)}});var X8=w(tw=>{"use strict";Object.defineProperty(tw,"__esModule",{value:!0});tw.read=void 0;function hQe(r,e){let t=e.fs.lstatSync(r);if(!t.isSymbolicLink()||!e.followSymbolicLink)return t;try{let i=e.fs.statSync(r);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return t;throw i}}tw.read=hQe});var Z8=w(KA=>{"use strict";Object.defineProperty(KA,"__esModule",{value:!0});KA.createFileSystemAdapter=KA.FILE_SYSTEM_ADAPTER=void 0;var rw=J("fs");KA.FILE_SYSTEM_ADAPTER={lstat:rw.lstat,stat:rw.stat,lstatSync:rw.lstatSync,statSync:rw.statSync};function pQe(r){return r===void 0?KA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},KA.FILE_SYSTEM_ADAPTER),r)}KA.createFileSystemAdapter=pQe});var _8=w(pP=>{"use strict";Object.defineProperty(pP,"__esModule",{value:!0});var dQe=Z8(),hP=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=dQe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,t){return e!=null?e:t}};pP.default=hP});var bc=w(HA=>{"use strict";Object.defineProperty(HA,"__esModule",{value:!0});HA.statSync=HA.stat=HA.Settings=void 0;var $8=V8(),CQe=X8(),dP=_8();HA.Settings=dP.default;function mQe(r,e,t){if(typeof e=="function"){$8.read(r,CP(),e);return}$8.read(r,CP(e),t)}HA.stat=mQe;function EQe(r,e){let t=CP(e);return CQe.read(r,t)}HA.statSync=EQe;function CP(r={}){return r instanceof dP.default?r:new dP.default(r)}});var t4=w((ztt,e4)=>{e4.exports=IQe;function IQe(r,e){var t,i,n,s=!0;Array.isArray(r)?(t=[],i=r.length):(n=Object.keys(r),t={},i=n.length);function o(l){function c(){e&&e(l,t),e=null}s?process.nextTick(c):c()}function a(l,c,u){t[l]=u,(--i===0||c)&&o(c)}i?n?n.forEach(function(l){r[l](function(c,u){a(l,c,u)})}):r.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var mP=w(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});nw.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var iw=process.versions.node.split(".");if(iw[0]===void 0||iw[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var r4=Number.parseInt(iw[0],10),yQe=Number.parseInt(iw[1],10),i4=10,wQe=10,BQe=r4>i4,QQe=r4===i4&&yQe>=wQe;nw.IS_SUPPORT_READDIR_WITH_FILE_TYPES=BQe||QQe});var n4=w(sw=>{"use strict";Object.defineProperty(sw,"__esModule",{value:!0});sw.createDirentFromStats=void 0;var EP=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function bQe(r,e){return new EP(r,e)}sw.createDirentFromStats=bQe});var IP=w(ow=>{"use strict";Object.defineProperty(ow,"__esModule",{value:!0});ow.fs=void 0;var SQe=n4();ow.fs=SQe});var yP=w(aw=>{"use strict";Object.defineProperty(aw,"__esModule",{value:!0});aw.joinPathSegments=void 0;function vQe(r,e,t){return r.endsWith(t)?r+e:r+t+e}aw.joinPathSegments=vQe});var c4=w(GA=>{"use strict";Object.defineProperty(GA,"__esModule",{value:!0});GA.readdir=GA.readdirWithFileTypes=GA.read=void 0;var xQe=bc(),s4=t4(),PQe=mP(),o4=IP(),a4=yP();function DQe(r,e,t){if(!e.stats&&PQe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){A4(r,e,t);return}l4(r,e,t)}GA.read=DQe;function A4(r,e,t){e.fs.readdir(r,{withFileTypes:!0},(i,n)=>{if(i!==null){Aw(t,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:a4.joinPathSegments(r,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){wP(t,s);return}let o=s.map(a=>kQe(a,e));s4(o,(a,l)=>{if(a!==null){Aw(t,a);return}wP(t,l)})})}GA.readdirWithFileTypes=A4;function kQe(r,e){return t=>{if(!r.dirent.isSymbolicLink()){t(null,r);return}e.fs.stat(r.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){t(i);return}t(null,r);return}r.dirent=o4.fs.createDirentFromStats(r.name,n),t(null,r)})}}function l4(r,e,t){e.fs.readdir(r,(i,n)=>{if(i!==null){Aw(t,i);return}let s=n.map(o=>{let a=a4.joinPathSegments(r,o,e.pathSegmentSeparator);return l=>{xQe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:o4.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});s4(s,(o,a)=>{if(o!==null){Aw(t,o);return}wP(t,a)})})}GA.readdir=l4;function Aw(r,e){r(e)}function wP(r,e){r(null,e)}});var p4=w(YA=>{"use strict";Object.defineProperty(YA,"__esModule",{value:!0});YA.readdir=YA.readdirWithFileTypes=YA.read=void 0;var RQe=bc(),FQe=mP(),u4=IP(),g4=yP();function NQe(r,e){return!e.stats&&FQe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?f4(r,e):h4(r,e)}YA.read=NQe;function f4(r,e){return e.fs.readdirSync(r,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:g4.joinPathSegments(r,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=u4.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}YA.readdirWithFileTypes=f4;function h4(r,e){return e.fs.readdirSync(r).map(i=>{let n=g4.joinPathSegments(r,i,e.pathSegmentSeparator),s=RQe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:u4.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}YA.readdir=h4});var d4=w(jA=>{"use strict";Object.defineProperty(jA,"__esModule",{value:!0});jA.createFileSystemAdapter=jA.FILE_SYSTEM_ADAPTER=void 0;var wf=J("fs");jA.FILE_SYSTEM_ADAPTER={lstat:wf.lstat,stat:wf.stat,lstatSync:wf.lstatSync,statSync:wf.statSync,readdir:wf.readdir,readdirSync:wf.readdirSync};function LQe(r){return r===void 0?jA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},jA.FILE_SYSTEM_ADAPTER),r)}jA.createFileSystemAdapter=LQe});var C4=w(QP=>{"use strict";Object.defineProperty(QP,"__esModule",{value:!0});var TQe=J("path"),OQe=bc(),MQe=d4(),BP=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=MQe.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,TQe.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new OQe.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e!=null?e:t}};QP.default=BP});var lw=w(qA=>{"use strict";Object.defineProperty(qA,"__esModule",{value:!0});qA.Settings=qA.scandirSync=qA.scandir=void 0;var m4=c4(),UQe=p4(),bP=C4();qA.Settings=bP.default;function KQe(r,e,t){if(typeof e=="function"){m4.read(r,SP(),e);return}m4.read(r,SP(e),t)}qA.scandir=KQe;function HQe(r,e){let t=SP(e);return UQe.read(r,t)}qA.scandirSync=HQe;function SP(r={}){return r instanceof bP.default?r:new bP.default(r)}});var I4=w((nrt,E4)=>{"use strict";function GQe(r){var e=new r,t=e;function i(){var s=e;return s.next?e=s.next:(e=new r,t=e),s.next=null,s}function n(s){t.next=s,t=s}return{get:i,release:n}}E4.exports=GQe});var w4=w((srt,vP)=>{"use strict";var YQe=I4();function y4(r,e,t){if(typeof r=="function"&&(t=e,e=r,r=null),t<1)throw new Error("fastqueue concurrency must be greater than 1");var i=YQe(jQe),n=null,s=null,o=0,a=null,l={push:C,drain:Is,saturated:Is,pause:u,paused:!1,concurrency:t,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:y,empty:Is,kill:v,killAndDrain:D,error:L};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,j=0;H;)H=H.next,j++;return j}function f(){for(var H=n,j=[];H;)j.push(H.value),H=H.next;return j}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.joinPathSegments=Go.replacePathSegmentSeparator=Go.isAppliedFilter=Go.isFatalError=void 0;function JQe(r,e){return r.errorFilter===null?!0:!r.errorFilter(e)}Go.isFatalError=JQe;function WQe(r,e){return r===null||r(e)}Go.isAppliedFilter=WQe;function zQe(r,e){return r.split(/[/\\]/).join(e)}Go.replacePathSegmentSeparator=zQe;function VQe(r,e,t){return r===""?e:r.endsWith(t)?r+e:r+t+e}Go.joinPathSegments=VQe});var DP=w(PP=>{"use strict";Object.defineProperty(PP,"__esModule",{value:!0});var XQe=cw(),xP=class{constructor(e,t){this._root=e,this._settings=t,this._root=XQe.replacePathSegmentSeparator(e,t.pathSegmentSeparator)}};PP.default=xP});var FP=w(RP=>{"use strict";Object.defineProperty(RP,"__esModule",{value:!0});var ZQe=J("events"),_Qe=lw(),$Qe=w4(),uw=cw(),ebe=DP(),kP=class extends ebe.default{constructor(e,t){super(e,t),this._settings=t,this._scandir=_Qe.scandir,this._emitter=new ZQe.EventEmitter,this._queue=$Qe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,t){let i={directory:e,base:t};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,t){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){t(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);t(null,void 0)})}_handleError(e){this._isDestroyed||!uw.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,t){if(this._isDestroyed||this._isFatalError)return;let i=e.path;t!==void 0&&(e.path=uw.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),uw.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&uw.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};RP.default=kP});var B4=w(LP=>{"use strict";Object.defineProperty(LP,"__esModule",{value:!0});var tbe=FP(),NP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new tbe.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(t=>{rbe(e,t)}),this._reader.onEntry(t=>{this._storage.add(t)}),this._reader.onEnd(()=>{ibe(e,[...this._storage])}),this._reader.read()}};LP.default=NP;function rbe(r,e){r(e)}function ibe(r,e){r(null,e)}});var Q4=w(OP=>{"use strict";Object.defineProperty(OP,"__esModule",{value:!0});var nbe=J("stream"),sbe=FP(),TP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new sbe.default(this._root,this._settings),this._stream=new nbe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};OP.default=TP});var b4=w(UP=>{"use strict";Object.defineProperty(UP,"__esModule",{value:!0});var obe=lw(),gw=cw(),abe=DP(),MP=class extends abe.default{constructor(){super(...arguments),this._scandir=obe.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,t){this._queue.add({directory:e,base:t})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,t){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,t)}catch(i){this._handleError(i)}}_handleError(e){if(!!gw.isFatalError(this._settings,e))throw e}_handleEntry(e,t){let i=e.path;t!==void 0&&(e.path=gw.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),gw.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&gw.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};UP.default=MP});var S4=w(HP=>{"use strict";Object.defineProperty(HP,"__esModule",{value:!0});var Abe=b4(),KP=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new Abe.default(this._root,this._settings)}read(){return this._reader.read()}};HP.default=KP});var v4=w(YP=>{"use strict";Object.defineProperty(YP,"__esModule",{value:!0});var lbe=J("path"),cbe=lw(),GP=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,lbe.sep),this.fsScandirSettings=new cbe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e!=null?e:t}};YP.default=GP});var qP=w(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.Settings=Yo.walkStream=Yo.walkSync=Yo.walk=void 0;var x4=B4(),ube=Q4(),gbe=S4(),jP=v4();Yo.Settings=jP.default;function fbe(r,e,t){if(typeof e=="function"){new x4.default(r,fw()).read(e);return}new x4.default(r,fw(e)).read(t)}Yo.walk=fbe;function hbe(r,e){let t=fw(e);return new gbe.default(r,t).read()}Yo.walkSync=hbe;function pbe(r,e){let t=fw(e);return new ube.default(r,t).read()}Yo.walkStream=pbe;function fw(r={}){return r instanceof jP.default?r:new jP.default(r)}});var zP=w(WP=>{"use strict";Object.defineProperty(WP,"__esModule",{value:!0});var dbe=J("path"),Cbe=bc(),P4=Ta(),JP=class{constructor(e){this._settings=e,this._fsStatSettings=new Cbe.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return dbe.resolve(this._settings.cwd,e)}_makeEntry(e,t){let i={name:t,path:t,dirent:P4.fs.createDirentFromStats(t,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!P4.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};WP.default=JP});var ZP=w(XP=>{"use strict";Object.defineProperty(XP,"__esModule",{value:!0});var mbe=J("stream"),Ebe=bc(),Ibe=qP(),ybe=zP(),VP=class extends ybe.default{constructor(){super(...arguments),this._walkStream=Ibe.walkStream,this._stat=Ebe.stat}dynamic(e,t){return this._walkStream(e,t)}static(e,t){let i=e.map(this._getFullEntryPath,this),n=new mbe.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],t).then(l=>{l!==null&&t.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,t)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((t,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?t(s):i(n))})}};XP.default=VP});var D4=w($P=>{"use strict";Object.defineProperty($P,"__esModule",{value:!0});var Bf=Ta(),_P=class{constructor(e,t,i){this._patterns=e,this._settings=t,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Bf.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let t of e){let i=this._getPatternSegments(t),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:t,segments:i,sections:n})}}_getPatternSegments(e){return Bf.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Bf.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Bf.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Bf.array.splitWhen(e,t=>t.dynamic&&Bf.pattern.hasGlobStar(t.pattern))}};$P.default=_P});var k4=w(tD=>{"use strict";Object.defineProperty(tD,"__esModule",{value:!0});var wbe=D4(),eD=class extends wbe.default{match(e){let t=e.split("/"),i=t.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||t.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};tD.default=eD});var R4=w(iD=>{"use strict";Object.defineProperty(iD,"__esModule",{value:!0});var hw=Ta(),Bbe=k4(),rD=class{constructor(e,t){this._settings=e,this._micromatchOptions=t}getFilter(e,t,i){let n=this._getMatcher(t),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new Bbe.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let t=e.filter(hw.pattern.isAffectDepthOfReadingPattern);return hw.pattern.convertPatternsToRe(t,this._micromatchOptions)}_filter(e,t,i,n){let s=this._getEntryLevel(e,t.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(t))return!1;let o=hw.path.removeLeadingDotSegment(t.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,t){let i=e.split("/").length;return t.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,t){return!this._settings.baseNameMatch&&!t.match(e)}_isSkippedByNegativePatterns(e,t){return!hw.pattern.matchAny(e,t)}};iD.default=rD});var F4=w(sD=>{"use strict";Object.defineProperty(sD,"__esModule",{value:!0});var Zd=Ta(),nD=class{constructor(e,t){this._settings=e,this._micromatchOptions=t,this.index=new Map}getFilter(e,t){let i=Zd.pattern.convertPatternsToRe(e,this._micromatchOptions),n=Zd.pattern.convertPatternsToRe(t,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,t,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,t)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,t){if(!this._settings.absolute)return!1;let i=Zd.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,t)}_isMatchToPatterns(e,t){let i=Zd.path.removeLeadingDotSegment(e);return Zd.pattern.matchAny(i,t)}};sD.default=nD});var N4=w(aD=>{"use strict";Object.defineProperty(aD,"__esModule",{value:!0});var Qbe=Ta(),oD=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return Qbe.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};aD.default=oD});var T4=w(lD=>{"use strict";Object.defineProperty(lD,"__esModule",{value:!0});var L4=Ta(),AD=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let t=e.path;return this._settings.absolute&&(t=L4.path.makeAbsolute(this._settings.cwd,t),t=L4.path.unixify(t)),this._settings.markDirectories&&e.dirent.isDirectory()&&(t+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:t}):t}};lD.default=AD});var pw=w(uD=>{"use strict";Object.defineProperty(uD,"__esModule",{value:!0});var bbe=J("path"),Sbe=R4(),vbe=F4(),xbe=N4(),Pbe=T4(),cD=class{constructor(e){this._settings=e,this.errorFilter=new xbe.default(this._settings),this.entryFilter=new vbe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new Sbe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new Pbe.default(this._settings)}_getRootDirectory(e){return bbe.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let t=e.base==="."?"":e.base;return{basePath:t,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(t,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};uD.default=cD});var O4=w(fD=>{"use strict";Object.defineProperty(fD,"__esModule",{value:!0});var Dbe=ZP(),kbe=pw(),gD=class extends kbe.default{constructor(){super(...arguments),this._reader=new Dbe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(t,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};fD.default=gD});var M4=w(pD=>{"use strict";Object.defineProperty(pD,"__esModule",{value:!0});var Rbe=J("stream"),Fbe=ZP(),Nbe=pw(),hD=class extends Nbe.default{constructor(){super(...arguments),this._reader=new Fbe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(t,e,i),s=new Rbe.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};pD.default=hD});var U4=w(CD=>{"use strict";Object.defineProperty(CD,"__esModule",{value:!0});var Lbe=bc(),Tbe=qP(),Obe=zP(),dD=class extends Obe.default{constructor(){super(...arguments),this._walkSync=Tbe.walkSync,this._statSync=Lbe.statSync}dynamic(e,t){return this._walkSync(e,t)}static(e,t){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,t);o===null||!t.entryFilter(o)||i.push(o)}return i}_getEntry(e,t,i){try{let n=this._getStat(e);return this._makeEntry(n,t)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};CD.default=dD});var K4=w(ED=>{"use strict";Object.defineProperty(ED,"__esModule",{value:!0});var Mbe=U4(),Ube=pw(),mD=class extends Ube.default{constructor(){super(...arguments),this._reader=new Mbe.default(this._settings)}read(e){let t=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(t,e,i).map(i.transform)}api(e,t,i){return t.dynamic?this._reader.dynamic(e,i):this._reader.static(t.patterns,i)}};ED.default=mD});var H4=w(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});var Qf=J("fs"),Kbe=J("os"),Hbe=Kbe.cpus().length;_d.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Qf.lstat,lstatSync:Qf.lstatSync,stat:Qf.stat,statSync:Qf.statSync,readdir:Qf.readdir,readdirSync:Qf.readdirSync};var ID=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Hbe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,t){return e===void 0?t:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},_d.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};_d.default=ID});var dw=w((Prt,Y4)=>{"use strict";var G4=W8(),Gbe=O4(),Ybe=M4(),jbe=K4(),yD=H4(),Sc=Ta();async function wD(r,e){bf(r);let t=BD(r,Gbe.default,e),i=await Promise.all(t);return Sc.array.flatten(i)}(function(r){function e(o,a){bf(o);let l=BD(o,jbe.default,a);return Sc.array.flatten(l)}r.sync=e;function t(o,a){bf(o);let l=BD(o,Ybe.default,a);return Sc.stream.merge(l)}r.stream=t;function i(o,a){bf(o);let l=[].concat(o),c=new yD.default(a);return G4.generate(l,c)}r.generateTasks=i;function n(o,a){bf(o);let l=new yD.default(a);return Sc.pattern.isDynamicPattern(o,l)}r.isDynamicPattern=n;function s(o){return bf(o),Sc.path.escape(o)}r.escapePath=s})(wD||(wD={}));function BD(r,e,t){let i=[].concat(r),n=new yD.default(t),s=G4.generate(i,n),o=new e(n);return s.map(o.read,o)}function bf(r){if(![].concat(r).every(i=>Sc.string.isString(i)&&!Sc.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Y4.exports=wD});var q4=w(vc=>{"use strict";var{promisify:qbe}=J("util"),j4=J("fs");async function QD(r,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return(await qbe(j4[r])(t))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function bD(r,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return j4[r](t)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}vc.isFile=QD.bind(null,"stat","isFile");vc.isDirectory=QD.bind(null,"stat","isDirectory");vc.isSymlink=QD.bind(null,"lstat","isSymbolicLink");vc.isFileSync=bD.bind(null,"statSync","isFile");vc.isDirectorySync=bD.bind(null,"statSync","isDirectory");vc.isSymlinkSync=bD.bind(null,"lstatSync","isSymbolicLink")});var X4=w((krt,SD)=>{"use strict";var xc=J("path"),J4=q4(),W4=r=>r.length>1?`{${r.join(",")}}`:r[0],z4=(r,e)=>{let t=r[0]==="!"?r.slice(1):r;return xc.isAbsolute(t)?t:xc.join(e,t)},Jbe=(r,e)=>xc.extname(r)?`**/${r}`:`**/${r}.${W4(e)}`,V4=(r,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(t=>xc.posix.join(r,Jbe(t,e.extensions))):e.files?e.files.map(t=>xc.posix.join(r,`**/${t}`)):e.extensions?[xc.posix.join(r,`**/*.${W4(e.extensions)}`)]:[xc.posix.join(r,"**")]};SD.exports=async(r,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=await Promise.all([].concat(r).map(async i=>await J4.isDirectory(z4(i,e.cwd))?V4(i,e):i));return[].concat.apply([],t)};SD.exports.sync=(r,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=[].concat(r).map(i=>J4.isDirectorySync(z4(i,e.cwd))?V4(i,e):i);return[].concat.apply([],t)}});var nW=w((Rrt,iW)=>{function Z4(r){return Array.isArray(r)?r:[r]}var tW="",_4=" ",vD="\\",Wbe=/^\s+$/,zbe=/^\\!/,Vbe=/^\\#/,Xbe=/\r?\n/g,Zbe=/^\.*\/|^\.+$/,xD="/",$4=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",_be=(r,e,t)=>Object.defineProperty(r,e,{value:t}),$be=/([0-z])-([0-z])/g,eSe=r=>r.replace($be,(e,t,i)=>t.charCodeAt(0)<=i.charCodeAt(0)?e:tW),tSe=r=>{let{length:e}=r;return r.slice(0,e-e%2)},rSe=[[/\\?\s+$/,r=>r.indexOf("\\")===0?_4:tW],[/\\\s/g,()=>_4],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>vD],[/\\\\/g,()=>vD],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,i,n)=>e===vD?`\\[${t}${tSe(i)}${n}`:n==="]"&&i.length%2===0?`[${eSe(t)}${i}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(r,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],eW=Object.create(null),iSe=(r,e)=>{let t=eW[r];return t||(t=rSe.reduce((i,n)=>i.replace(n[0],n[1].bind(r)),r),eW[r]=t),e?new RegExp(t,"i"):new RegExp(t)},kD=r=>typeof r=="string",nSe=r=>r&&kD(r)&&!Wbe.test(r)&&r.indexOf("#")!==0,sSe=r=>r.split(Xbe),PD=class{constructor(e,t,i,n){this.origin=e,this.pattern=t,this.negative=i,this.regex=n}},oSe=(r,e)=>{let t=r,i=!1;r.indexOf("!")===0&&(i=!0,r=r.substr(1)),r=r.replace(zbe,"!").replace(Vbe,"#");let n=iSe(r,e);return new PD(t,r,i,n)},aSe=(r,e)=>{throw new e(r)},Ma=(r,e,t)=>kD(r)?r?Ma.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),rW=r=>Zbe.test(r);Ma.isNotRelative=rW;Ma.convert=r=>r;var DD=class{constructor({ignorecase:e=!0}={}){_be(this,$4,!0),this._rules=[],this._ignorecase=e,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[$4]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(nSe(e)){let t=oSe(e,this._ignorecase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,Z4(kD(e)?sSe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!t)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,t,i,n){let s=e&&Ma.convert(e);return Ma(s,e,aSe),this._t(s,t,i,n)}_t(e,t,i,n){if(e in t)return t[e];if(n||(n=e.split(xD)),n.pop(),!n.length)return t[e]=this._testOne(e,i);let s=this._t(n.join(xD)+xD,t,i,n);return t[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Z4(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Cw=r=>new DD(r),ASe=()=>!1,lSe=r=>Ma(r&&Ma.convert(r),r,ASe);Cw.isPathValid=lSe;Cw.default=Cw;iW.exports=Cw;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");Ma.convert=r;let e=/^[a-z]:\//i;Ma.isNotRelative=t=>e.test(t)||rW(t)}});var oW=w((Frt,sW)=>{"use strict";sW.exports=r=>{let e=/^\\\\\?\\/.test(r),t=/[^\u0000-\u0080]+/.test(r);return e||t?r:r.replace(/\\/g,"/")}});var fW=w((Nrt,RD)=>{"use strict";var{promisify:cSe}=J("util"),aW=J("fs"),Ua=J("path"),AW=dw(),uSe=nW(),$d=oW(),lW=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],gSe=cSe(aW.readFile),fSe=r=>e=>e.startsWith("!")?"!"+Ua.posix.join(r,e.slice(1)):Ua.posix.join(r,e),hSe=(r,e)=>{let t=$d(Ua.relative(e.cwd,Ua.dirname(e.fileName)));return r.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(fSe(t))},cW=r=>{let e=uSe();for(let t of r)e.add(hSe(t.content,{cwd:t.cwd,fileName:t.filePath}));return e},pSe=(r,e)=>{if(r=$d(r),Ua.isAbsolute(e)){if($d(e).startsWith(r))return e;throw new Error(`Path ${e} is not in cwd ${r}`)}return Ua.join(r,e)},uW=(r,e)=>t=>r.ignores($d(Ua.relative(e,pSe(e,t.path||t)))),dSe=async(r,e)=>{let t=Ua.join(e,r),i=await gSe(t,"utf8");return{cwd:e,filePath:t,content:i}},CSe=(r,e)=>{let t=Ua.join(e,r),i=aW.readFileSync(t,"utf8");return{cwd:e,filePath:t,content:i}},gW=({ignore:r=[],cwd:e=$d(process.cwd())}={})=>({ignore:r,cwd:e});RD.exports=async r=>{r=gW(r);let e=await AW("**/.gitignore",{ignore:lW.concat(r.ignore),cwd:r.cwd}),t=await Promise.all(e.map(n=>dSe(n,r.cwd))),i=cW(t);return uW(i,r.cwd)};RD.exports.sync=r=>{r=gW(r);let t=AW.sync("**/.gitignore",{ignore:lW.concat(r.ignore),cwd:r.cwd}).map(n=>CSe(n,r.cwd)),i=cW(t);return uW(i,r.cwd)}});var pW=w((Lrt,hW)=>{"use strict";var{Transform:mSe}=J("stream"),mw=class extends mSe{constructor(){super({objectMode:!0})}},FD=class extends mw{constructor(e){super(),this._filter=e}_transform(e,t,i){this._filter(e)&&this.push(e),i()}},ND=class extends mw{constructor(){super(),this._pushed=new Set}_transform(e,t,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};hW.exports={FilterStream:FD,UniqueStream:ND}});var MD=w((Trt,Pc)=>{"use strict";var CW=J("fs"),Ew=d8(),ESe=sP(),Iw=dw(),yw=X4(),LD=fW(),{FilterStream:ISe,UniqueStream:ySe}=pW(),mW=()=>!1,dW=r=>r[0]==="!",wSe=r=>{if(!r.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},BSe=(r={})=>{if(!r.cwd)return;let e;try{e=CW.statSync(r.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},QSe=r=>r.stats instanceof CW.Stats?r.path:r,ww=(r,e)=>{r=Ew([].concat(r)),wSe(r),BSe(e);let t=[];e={ignore:[],expandDirectories:!0,...e};for(let[i,n]of r.entries()){if(dW(n))continue;let s=r.slice(i).filter(a=>dW(a)).map(a=>a.slice(1)),o={...e,ignore:e.ignore.concat(s)};t.push({pattern:n,options:o})}return t},bSe=(r,e)=>{let t={};return r.options.cwd&&(t.cwd=r.options.cwd),Array.isArray(r.options.expandDirectories)?t={...t,files:r.options.expandDirectories}:typeof r.options.expandDirectories=="object"&&(t={...t,...r.options.expandDirectories}),e(r.pattern,t)},TD=(r,e)=>r.options.expandDirectories?bSe(r,e):[r.pattern],EW=r=>r&&r.gitignore?LD.sync({cwd:r.cwd,ignore:r.ignore}):mW,OD=r=>e=>{let{options:t}=r;return t.ignore&&Array.isArray(t.ignore)&&t.expandDirectories&&(t.ignore=yw.sync(t.ignore)),{pattern:e,options:t}};Pc.exports=async(r,e)=>{let t=ww(r,e),i=async()=>e&&e.gitignore?LD({cwd:e.cwd,ignore:e.ignore}):mW,n=async()=>{let l=await Promise.all(t.map(async c=>{let u=await TD(c,yw);return Promise.all(u.map(OD(c)))}));return Ew(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>Iw(l.pattern,l.options)));return Ew(...a).filter(l=>!s(QSe(l)))};Pc.exports.sync=(r,e)=>{let t=ww(r,e),i=[];for(let o of t){let a=TD(o,yw.sync).map(OD(o));i.push(...a)}let n=EW(e),s=[];for(let o of i)s=Ew(s,Iw.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Pc.exports.stream=(r,e)=>{let t=ww(r,e),i=[];for(let a of t){let l=TD(a,yw.sync).map(OD(a));i.push(...l)}let n=EW(e),s=new ISe(a=>!n(a)),o=new ySe;return ESe(i.map(a=>Iw.stream(a.pattern,a.options))).pipe(s).pipe(o)};Pc.exports.generateGlobTasks=ww;Pc.exports.hasMagic=(r,e)=>[].concat(r).some(t=>Iw.isDynamicPattern(t,e));Pc.exports.gitignore=LD});var Sn=w(($rt,NW)=>{function MSe(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}NW.exports=MSe});var WD=w((eit,LW)=>{var USe=typeof global=="object"&&global&&global.Object===Object&&global;LW.exports=USe});var ys=w((tit,TW)=>{var KSe=WD(),HSe=typeof self=="object"&&self&&self.Object===Object&&self,GSe=KSe||HSe||Function("return this")();TW.exports=GSe});var MW=w((rit,OW)=>{var YSe=ys(),jSe=function(){return YSe.Date.now()};OW.exports=jSe});var KW=w((iit,UW)=>{var qSe=/\s/;function JSe(r){for(var e=r.length;e--&&qSe.test(r.charAt(e)););return e}UW.exports=JSe});var GW=w((nit,HW)=>{var WSe=KW(),zSe=/^\s+/;function VSe(r){return r&&r.slice(0,WSe(r)+1).replace(zSe,"")}HW.exports=VSe});var Rc=w((sit,YW)=>{var XSe=ys(),ZSe=XSe.Symbol;YW.exports=ZSe});var WW=w((oit,JW)=>{var jW=Rc(),qW=Object.prototype,_Se=qW.hasOwnProperty,$Se=qW.toString,uC=jW?jW.toStringTag:void 0;function eve(r){var e=_Se.call(r,uC),t=r[uC];try{r[uC]=void 0;var i=!0}catch{}var n=$Se.call(r);return i&&(e?r[uC]=t:delete r[uC]),n}JW.exports=eve});var VW=w((ait,zW)=>{var tve=Object.prototype,rve=tve.toString;function ive(r){return rve.call(r)}zW.exports=ive});var Fc=w((Ait,_W)=>{var XW=Rc(),nve=WW(),sve=VW(),ove="[object Null]",ave="[object Undefined]",ZW=XW?XW.toStringTag:void 0;function Ave(r){return r==null?r===void 0?ave:ove:ZW&&ZW in Object(r)?nve(r):sve(r)}_W.exports=Ave});var Jo=w((lit,$W)=>{function lve(r){return r!=null&&typeof r=="object"}$W.exports=lve});var gC=w((cit,ez)=>{var cve=Fc(),uve=Jo(),gve="[object Symbol]";function fve(r){return typeof r=="symbol"||uve(r)&&cve(r)==gve}ez.exports=fve});var nz=w((uit,iz)=>{var hve=GW(),tz=Sn(),pve=gC(),rz=0/0,dve=/^[-+]0x[0-9a-f]+$/i,Cve=/^0b[01]+$/i,mve=/^0o[0-7]+$/i,Eve=parseInt;function Ive(r){if(typeof r=="number")return r;if(pve(r))return rz;if(tz(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=tz(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=hve(r);var t=Cve.test(r);return t||mve.test(r)?Eve(r.slice(2),t?2:8):dve.test(r)?rz:+r}iz.exports=Ive});var az=w((git,oz)=>{var yve=Sn(),zD=MW(),sz=nz(),wve="Expected a function",Bve=Math.max,Qve=Math.min;function bve(r,e,t){var i,n,s,o,a,l,c=0,u=!1,g=!1,f=!0;if(typeof r!="function")throw new TypeError(wve);e=sz(e)||0,yve(t)&&(u=!!t.leading,g="maxWait"in t,s=g?Bve(sz(t.maxWait)||0,e):s,f="trailing"in t?!!t.trailing:f);function h(j){var $=i,V=n;return i=n=void 0,c=j,o=r.apply(V,$),o}function p(j){return c=j,a=setTimeout(B,e),u?h(j):o}function C(j){var $=j-l,V=j-c,W=e-$;return g?Qve(W,s-V):W}function y(j){var $=j-l,V=j-c;return l===void 0||$>=e||$<0||g&&V>=s}function B(){var j=zD();if(y(j))return v(j);a=setTimeout(B,C(j))}function v(j){return a=void 0,f&&i?h(j):(i=n=void 0,o)}function D(){a!==void 0&&clearTimeout(a),c=0,i=l=n=a=void 0}function L(){return a===void 0?o:v(zD())}function H(){var j=zD(),$=y(j);if(i=arguments,n=this,l=j,$){if(a===void 0)return p(l);if(g)return clearTimeout(a),a=setTimeout(B,e),h(l)}return a===void 0&&(a=setTimeout(B,e)),o}return H.cancel=D,H.flush=L,H}oz.exports=bve});var lz=w((fit,Az)=>{var Sve=az(),vve=Sn(),xve="Expected a function";function Pve(r,e,t){var i=!0,n=!0;if(typeof r!="function")throw new TypeError(xve);return vve(t)&&(i="leading"in t?!!t.leading:i,n="trailing"in t?!!t.trailing:n),Sve(r,e,{leading:i,maxWait:e,trailing:n})}Az.exports=Pve});var Ga=w((Ha,jw)=>{"use strict";Object.defineProperty(Ha,"__esModule",{value:!0});var mz=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function Gve(r){return mz.includes(r)}var Yve=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...mz];function jve(r){return Yve.includes(r)}var qve=["null","undefined","string","number","bigint","boolean","symbol"];function Jve(r){return qve.includes(r)}function Tf(r){return e=>typeof e===r}var{toString:Ez}=Object.prototype,CC=r=>{let e=Ez.call(r).slice(8,-1);if(/HTML\w+Element/.test(e)&&X.domElement(r))return"HTMLElement";if(jve(e))return e},lr=r=>e=>CC(e)===r;function X(r){if(r===null)return"null";switch(typeof r){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(X.observable(r))return"Observable";if(X.array(r))return"Array";if(X.buffer(r))return"Buffer";let e=CC(r);if(e)return e;if(r instanceof String||r instanceof Boolean||r instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}X.undefined=Tf("undefined");X.string=Tf("string");var Wve=Tf("number");X.number=r=>Wve(r)&&!X.nan(r);X.bigint=Tf("bigint");X.function_=Tf("function");X.null_=r=>r===null;X.class_=r=>X.function_(r)&&r.toString().startsWith("class ");X.boolean=r=>r===!0||r===!1;X.symbol=Tf("symbol");X.numericString=r=>X.string(r)&&!X.emptyStringOrWhitespace(r)&&!Number.isNaN(Number(r));X.array=(r,e)=>Array.isArray(r)?X.function_(e)?r.every(e):!0:!1;X.buffer=r=>{var e,t,i,n;return(n=(i=(t=(e=r)===null||e===void 0?void 0:e.constructor)===null||t===void 0?void 0:t.isBuffer)===null||i===void 0?void 0:i.call(t,r))!==null&&n!==void 0?n:!1};X.nullOrUndefined=r=>X.null_(r)||X.undefined(r);X.object=r=>!X.null_(r)&&(typeof r=="object"||X.function_(r));X.iterable=r=>{var e;return X.function_((e=r)===null||e===void 0?void 0:e[Symbol.iterator])};X.asyncIterable=r=>{var e;return X.function_((e=r)===null||e===void 0?void 0:e[Symbol.asyncIterator])};X.generator=r=>X.iterable(r)&&X.function_(r.next)&&X.function_(r.throw);X.asyncGenerator=r=>X.asyncIterable(r)&&X.function_(r.next)&&X.function_(r.throw);X.nativePromise=r=>lr("Promise")(r);var zve=r=>{var e,t;return X.function_((e=r)===null||e===void 0?void 0:e.then)&&X.function_((t=r)===null||t===void 0?void 0:t.catch)};X.promise=r=>X.nativePromise(r)||zve(r);X.generatorFunction=lr("GeneratorFunction");X.asyncGeneratorFunction=r=>CC(r)==="AsyncGeneratorFunction";X.asyncFunction=r=>CC(r)==="AsyncFunction";X.boundFunction=r=>X.function_(r)&&!r.hasOwnProperty("prototype");X.regExp=lr("RegExp");X.date=lr("Date");X.error=lr("Error");X.map=r=>lr("Map")(r);X.set=r=>lr("Set")(r);X.weakMap=r=>lr("WeakMap")(r);X.weakSet=r=>lr("WeakSet")(r);X.int8Array=lr("Int8Array");X.uint8Array=lr("Uint8Array");X.uint8ClampedArray=lr("Uint8ClampedArray");X.int16Array=lr("Int16Array");X.uint16Array=lr("Uint16Array");X.int32Array=lr("Int32Array");X.uint32Array=lr("Uint32Array");X.float32Array=lr("Float32Array");X.float64Array=lr("Float64Array");X.bigInt64Array=lr("BigInt64Array");X.bigUint64Array=lr("BigUint64Array");X.arrayBuffer=lr("ArrayBuffer");X.sharedArrayBuffer=lr("SharedArrayBuffer");X.dataView=lr("DataView");X.directInstanceOf=(r,e)=>Object.getPrototypeOf(r)===e.prototype;X.urlInstance=r=>lr("URL")(r);X.urlString=r=>{if(!X.string(r))return!1;try{return new URL(r),!0}catch{return!1}};X.truthy=r=>Boolean(r);X.falsy=r=>!r;X.nan=r=>Number.isNaN(r);X.primitive=r=>X.null_(r)||Jve(typeof r);X.integer=r=>Number.isInteger(r);X.safeInteger=r=>Number.isSafeInteger(r);X.plainObject=r=>{if(Ez.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.getPrototypeOf({})};X.typedArray=r=>Gve(CC(r));var Vve=r=>X.safeInteger(r)&&r>=0;X.arrayLike=r=>!X.nullOrUndefined(r)&&!X.function_(r)&&Vve(r.length);X.inRange=(r,e)=>{if(X.number(e))return r>=Math.min(0,e)&&r<=Math.max(e,0);if(X.array(e)&&e.length===2)return r>=Math.min(...e)&&r<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Xve=1,Zve=["innerHTML","ownerDocument","style","attributes","nodeValue"];X.domElement=r=>X.object(r)&&r.nodeType===Xve&&X.string(r.nodeName)&&!X.plainObject(r)&&Zve.every(e=>e in r);X.observable=r=>{var e,t,i,n;return r?r===((t=(e=r)[Symbol.observable])===null||t===void 0?void 0:t.call(e))||r===((n=(i=r)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};X.nodeStream=r=>X.object(r)&&X.function_(r.pipe)&&!X.observable(r);X.infinite=r=>r===1/0||r===-1/0;var Iz=r=>e=>X.integer(e)&&Math.abs(e%2)===r;X.evenInteger=Iz(0);X.oddInteger=Iz(1);X.emptyArray=r=>X.array(r)&&r.length===0;X.nonEmptyArray=r=>X.array(r)&&r.length>0;X.emptyString=r=>X.string(r)&&r.length===0;X.nonEmptyString=r=>X.string(r)&&r.length>0;var _ve=r=>X.string(r)&&!/\S/.test(r);X.emptyStringOrWhitespace=r=>X.emptyString(r)||_ve(r);X.emptyObject=r=>X.object(r)&&!X.map(r)&&!X.set(r)&&Object.keys(r).length===0;X.nonEmptyObject=r=>X.object(r)&&!X.map(r)&&!X.set(r)&&Object.keys(r).length>0;X.emptySet=r=>X.set(r)&&r.size===0;X.nonEmptySet=r=>X.set(r)&&r.size>0;X.emptyMap=r=>X.map(r)&&r.size===0;X.nonEmptyMap=r=>X.map(r)&&r.size>0;X.propertyKey=r=>X.any([X.string,X.number,X.symbol],r);X.formData=r=>lr("FormData")(r);X.urlSearchParams=r=>lr("URLSearchParams")(r);var yz=(r,e,t)=>{if(!X.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(t.length===0)throw new TypeError("Invalid number of values");return r.call(t,e)};X.any=(r,...e)=>(X.array(r)?r:[r]).some(i=>yz(Array.prototype.some,i,e));X.all=(r,...e)=>yz(Array.prototype.every,r,e);var Ye=(r,e,t,i={})=>{if(!r){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(t.map(o=>`\`${X(o)}\``))].join(", ")}`:`received value of type \`${X(t)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};Ha.assert={undefined:r=>Ye(X.undefined(r),"undefined",r),string:r=>Ye(X.string(r),"string",r),number:r=>Ye(X.number(r),"number",r),bigint:r=>Ye(X.bigint(r),"bigint",r),function_:r=>Ye(X.function_(r),"Function",r),null_:r=>Ye(X.null_(r),"null",r),class_:r=>Ye(X.class_(r),"Class",r),boolean:r=>Ye(X.boolean(r),"boolean",r),symbol:r=>Ye(X.symbol(r),"symbol",r),numericString:r=>Ye(X.numericString(r),"string with a number",r),array:(r,e)=>{Ye(X.array(r),"Array",r),e&&r.forEach(e)},buffer:r=>Ye(X.buffer(r),"Buffer",r),nullOrUndefined:r=>Ye(X.nullOrUndefined(r),"null or undefined",r),object:r=>Ye(X.object(r),"Object",r),iterable:r=>Ye(X.iterable(r),"Iterable",r),asyncIterable:r=>Ye(X.asyncIterable(r),"AsyncIterable",r),generator:r=>Ye(X.generator(r),"Generator",r),asyncGenerator:r=>Ye(X.asyncGenerator(r),"AsyncGenerator",r),nativePromise:r=>Ye(X.nativePromise(r),"native Promise",r),promise:r=>Ye(X.promise(r),"Promise",r),generatorFunction:r=>Ye(X.generatorFunction(r),"GeneratorFunction",r),asyncGeneratorFunction:r=>Ye(X.asyncGeneratorFunction(r),"AsyncGeneratorFunction",r),asyncFunction:r=>Ye(X.asyncFunction(r),"AsyncFunction",r),boundFunction:r=>Ye(X.boundFunction(r),"Function",r),regExp:r=>Ye(X.regExp(r),"RegExp",r),date:r=>Ye(X.date(r),"Date",r),error:r=>Ye(X.error(r),"Error",r),map:r=>Ye(X.map(r),"Map",r),set:r=>Ye(X.set(r),"Set",r),weakMap:r=>Ye(X.weakMap(r),"WeakMap",r),weakSet:r=>Ye(X.weakSet(r),"WeakSet",r),int8Array:r=>Ye(X.int8Array(r),"Int8Array",r),uint8Array:r=>Ye(X.uint8Array(r),"Uint8Array",r),uint8ClampedArray:r=>Ye(X.uint8ClampedArray(r),"Uint8ClampedArray",r),int16Array:r=>Ye(X.int16Array(r),"Int16Array",r),uint16Array:r=>Ye(X.uint16Array(r),"Uint16Array",r),int32Array:r=>Ye(X.int32Array(r),"Int32Array",r),uint32Array:r=>Ye(X.uint32Array(r),"Uint32Array",r),float32Array:r=>Ye(X.float32Array(r),"Float32Array",r),float64Array:r=>Ye(X.float64Array(r),"Float64Array",r),bigInt64Array:r=>Ye(X.bigInt64Array(r),"BigInt64Array",r),bigUint64Array:r=>Ye(X.bigUint64Array(r),"BigUint64Array",r),arrayBuffer:r=>Ye(X.arrayBuffer(r),"ArrayBuffer",r),sharedArrayBuffer:r=>Ye(X.sharedArrayBuffer(r),"SharedArrayBuffer",r),dataView:r=>Ye(X.dataView(r),"DataView",r),urlInstance:r=>Ye(X.urlInstance(r),"URL",r),urlString:r=>Ye(X.urlString(r),"string with a URL",r),truthy:r=>Ye(X.truthy(r),"truthy",r),falsy:r=>Ye(X.falsy(r),"falsy",r),nan:r=>Ye(X.nan(r),"NaN",r),primitive:r=>Ye(X.primitive(r),"primitive",r),integer:r=>Ye(X.integer(r),"integer",r),safeInteger:r=>Ye(X.safeInteger(r),"integer",r),plainObject:r=>Ye(X.plainObject(r),"plain object",r),typedArray:r=>Ye(X.typedArray(r),"TypedArray",r),arrayLike:r=>Ye(X.arrayLike(r),"array-like",r),domElement:r=>Ye(X.domElement(r),"HTMLElement",r),observable:r=>Ye(X.observable(r),"Observable",r),nodeStream:r=>Ye(X.nodeStream(r),"Node.js Stream",r),infinite:r=>Ye(X.infinite(r),"infinite number",r),emptyArray:r=>Ye(X.emptyArray(r),"empty array",r),nonEmptyArray:r=>Ye(X.nonEmptyArray(r),"non-empty array",r),emptyString:r=>Ye(X.emptyString(r),"empty string",r),nonEmptyString:r=>Ye(X.nonEmptyString(r),"non-empty string",r),emptyStringOrWhitespace:r=>Ye(X.emptyStringOrWhitespace(r),"empty string or whitespace",r),emptyObject:r=>Ye(X.emptyObject(r),"empty object",r),nonEmptyObject:r=>Ye(X.nonEmptyObject(r),"non-empty object",r),emptySet:r=>Ye(X.emptySet(r),"empty set",r),nonEmptySet:r=>Ye(X.nonEmptySet(r),"non-empty set",r),emptyMap:r=>Ye(X.emptyMap(r),"empty map",r),nonEmptyMap:r=>Ye(X.nonEmptyMap(r),"non-empty map",r),propertyKey:r=>Ye(X.propertyKey(r),"PropertyKey",r),formData:r=>Ye(X.formData(r),"FormData",r),urlSearchParams:r=>Ye(X.urlSearchParams(r),"URLSearchParams",r),evenInteger:r=>Ye(X.evenInteger(r),"even integer",r),oddInteger:r=>Ye(X.oddInteger(r),"odd integer",r),directInstanceOf:(r,e)=>Ye(X.directInstanceOf(r,e),"T",r),inRange:(r,e)=>Ye(X.inRange(r,e),"in range",r),any:(r,...e)=>Ye(X.any(r,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(r,...e)=>Ye(X.all(r,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(X,{class:{value:X.class_},function:{value:X.function_},null:{value:X.null_}});Object.defineProperties(Ha.assert,{class:{value:Ha.assert.class_},function:{value:Ha.assert.function_},null:{value:Ha.assert.null_}});Ha.default=X;jw.exports=X;jw.exports.default=X;jw.exports.assert=Ha.assert});var wz=w((_it,dk)=>{"use strict";var qw=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},Of=class{static fn(e){return(...t)=>new Of((i,n,s)=>{t.push(s),e(...t).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((t,i)=>{this._reject=i;let n=a=>{this._isPending=!1,t(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,t){return this._promise.then(e,t)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new qw(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Of.prototype,Promise.prototype);dk.exports=Of;dk.exports.CancelError=qw});var Bz=w((mk,Ek)=>{"use strict";Object.defineProperty(mk,"__esModule",{value:!0});var $ve=J("tls"),Ck=(r,e)=>{let t;typeof e=="function"?t={connect:e}:t=e;let i=typeof t.connect=="function",n=typeof t.secureConnect=="function",s=typeof t.close=="function",o=()=>{i&&t.connect(),r instanceof $ve.TLSSocket&&n&&(r.authorized?t.secureConnect():r.authorizationError||r.once("secureConnect",t.secureConnect)),s&&r.once("close",t.close)};r.writable&&!r.connecting?o():r.connecting?r.once("connect",o):r.destroyed&&s&&t.close(r._hadError)};mk.default=Ck;Ek.exports=Ck;Ek.exports.default=Ck});var Qz=w((yk,wk)=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var exe=Bz(),txe=Number(process.versions.node.split(".")[0]),Ik=r=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};r.timings=e;let t=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};t(r),r.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||txe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),exe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};r.socket?i(r.socket):r.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof r.writableFinished=="boolean"?r.writableFinished:r.finished&&r.outputSize===0&&(!r.socket||r.socket.writableLength===0))()?n():r.prependOnceListener("finish",n),r.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,t(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};yk.default=Ik;wk.exports=Ik;wk.exports.default=Ik});var kz=w(($it,bk)=>{"use strict";var{V4MAPPED:rxe,ADDRCONFIG:ixe,ALL:Dz,promises:{Resolver:bz},lookup:nxe}=J("dns"),{promisify:Bk}=J("util"),sxe=J("os"),Mf=Symbol("cacheableLookupCreateConnection"),Qk=Symbol("cacheableLookupInstance"),Sz=Symbol("expires"),oxe=typeof Dz=="number",vz=r=>{if(!(r&&typeof r.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},axe=r=>{for(let e of r)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},xz=()=>{let r=!1,e=!1;for(let t of Object.values(sxe.networkInterfaces()))for(let i of t)if(!i.internal&&(i.family==="IPv6"?e=!0:r=!0,r&&e))return{has4:r,has6:e};return{has4:r,has6:e}},Axe=r=>Symbol.iterator in r,Pz={ttl:!0},lxe={all:!0},Jw=class{constructor({cache:e=new Map,maxTtl:t=1/0,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new bz,lookup:o=nxe}={}){if(this.maxTtl=t,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Bk(o),this._resolver instanceof bz?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Bk(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Bk(this._resolver.resolve6.bind(this._resolver))),this._iface=xz(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,t,i){if(typeof t=="function"?(i=t,t={}):typeof t=="number"&&(t={family:t}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,t).then(n=>{t.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,t={}){typeof t=="number"&&(t={family:t});let i=await this.query(e);if(t.family===6){let n=i.filter(s=>s.family===6);t.hints&rxe&&(oxe&&t.hints&Dz||n.length===0)?axe(i):i=n}else t.family===4&&(i=i.filter(n=>n.family===4));if(t.hints&ixe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return t.all?i:i[0]}async query(e){let t=await this._cache.get(e);if(!t){let i=this._pending[e];if(i)t=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,t=await n}}return t=t.map(i=>({...i})),t}async _resolve(e){let t=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,Pz),this._resolve6(e,Pz)].map(c=>t(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,t,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,t[Sz]=Date.now()+i;try{await this._cache.set(e,t,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Axe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,lxe);try{let t=await this._resolve(e);t.entries.length===0&&this._fallback&&(t=await this._lookup(e),t.entries.length!==0&&this._hostnamesToFallback.add(e));let i=t.entries.length===0?this.errorTtl:t.cacheTtl;return await this._set(e,t.entries,i),delete this._pending[e],t.entries}catch(t){throw delete this._pending[e],t}}_tick(e){let t=this._nextRemovalTime;(!t||e{this._nextRemovalTime=!1;let i=1/0,n=Date.now();for(let[s,o]of this._cache){let a=o[Sz];n>=a?this._cache.delete(s):a("lookup"in t||(t.lookup=this.lookup),e[Mf](t,i))}uninstall(e){if(vz(e),e[Mf]){if(e[Qk]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Mf],delete e[Mf],delete e[Qk]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=xz(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};bk.exports=Jw;bk.exports.default=Jw});var Nz=w((ent,Sk)=>{"use strict";var cxe=typeof URL>"u"?J("url").URL:URL,uxe="text/plain",gxe="us-ascii",Rz=(r,e)=>e.some(t=>t instanceof RegExp?t.test(r):t===r),fxe=(r,{stripHash:e})=>{let t=r.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!t)throw new Error(`Invalid URL: ${r}`);let i=t[1].split(";"),n=t[2],s=e?"":t[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===gxe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==uxe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},Fz=(r,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(r=r.trim(),/^data:/i.test(r))return fxe(r,e);let t=r.startsWith("//");!t&&/^\.*\//.test(r)||(r=r.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new cxe(r);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];Rz(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])Rz(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),r=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(r=r.replace(/\/$/,"")),t&&!e.normalizeProtocol&&(r=r.replace(/^http:\/\//,"//")),e.stripProtocol&&(r=r.replace(/^(?:https?:)?\/\//,"")),r};Sk.exports=Fz;Sk.exports.default=Fz});var Oz=w((tnt,Tz)=>{Tz.exports=Lz;function Lz(r,e){if(r&&e)return Lz(r)(e);if(typeof r!="function")throw new TypeError("need wrapper function");return Object.keys(r).forEach(function(i){t[i]=r[i]}),t;function t(){for(var i=new Array(arguments.length),n=0;n{var Mz=Oz();vk.exports=Mz(Ww);vk.exports.strict=Mz(Uz);Ww.proto=Ww(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ww(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Uz(this)},configurable:!0})});function Ww(r){var e=function(){return e.called?e.value:(e.called=!0,e.value=r.apply(this,arguments))};return e.called=!1,e}function Uz(r){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=r.apply(this,arguments)},t=r.name||"Function wrapped with `once`";return e.onceError=t+" shouldn't be called more than once",e.called=!1,e}});var Pk=w((int,Hz)=>{var hxe=xk(),pxe=function(){},dxe=function(r){return r.setHeader&&typeof r.abort=="function"},Cxe=function(r){return r.stdio&&Array.isArray(r.stdio)&&r.stdio.length===3},Kz=function(r,e,t){if(typeof e=="function")return Kz(r,null,e);e||(e={}),t=hxe(t||pxe);var i=r._writableState,n=r._readableState,s=e.readable||e.readable!==!1&&r.readable,o=e.writable||e.writable!==!1&&r.writable,a=function(){r.writable||l()},l=function(){o=!1,s||t.call(r)},c=function(){s=!1,o||t.call(r)},u=function(p){t.call(r,p?new Error("exited with error code: "+p):null)},g=function(p){t.call(r,p)},f=function(){if(s&&!(n&&n.ended))return t.call(r,new Error("premature close"));if(o&&!(i&&i.ended))return t.call(r,new Error("premature close"))},h=function(){r.req.on("finish",l)};return dxe(r)?(r.on("complete",l),r.on("abort",f),r.req?h():r.on("request",h)):o&&!i&&(r.on("end",a),r.on("close",a)),Cxe(r)&&r.on("exit",u),r.on("end",c),r.on("finish",l),e.error!==!1&&r.on("error",g),r.on("close",f),function(){r.removeListener("complete",l),r.removeListener("abort",f),r.removeListener("request",h),r.req&&r.req.removeListener("finish",l),r.removeListener("end",a),r.removeListener("close",a),r.removeListener("finish",l),r.removeListener("exit",u),r.removeListener("end",c),r.removeListener("error",g),r.removeListener("close",f)}};Hz.exports=Kz});var jz=w((nnt,Yz)=>{var mxe=xk(),Exe=Pk(),Dk=J("fs"),mC=function(){},Ixe=/^v?\.0/.test(process.version),zw=function(r){return typeof r=="function"},yxe=function(r){return!Ixe||!Dk?!1:(r instanceof(Dk.ReadStream||mC)||r instanceof(Dk.WriteStream||mC))&&zw(r.close)},wxe=function(r){return r.setHeader&&zw(r.abort)},Bxe=function(r,e,t,i){i=mxe(i);var n=!1;r.on("close",function(){n=!0}),Exe(r,{readable:e,writable:t},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,yxe(r))return r.close(mC);if(wxe(r))return r.abort();if(zw(r.destroy))return r.destroy();i(o||new Error("stream was destroyed"))}}},Gz=function(r){r()},Qxe=function(r,e){return r.pipe(e)},bxe=function(){var r=Array.prototype.slice.call(arguments),e=zw(r[r.length-1]||mC)&&r.pop()||mC;if(Array.isArray(r[0])&&(r=r[0]),r.length<2)throw new Error("pump requires two streams per minimum");var t,i=r.map(function(n,s){var o=s0;return Bxe(n,o,a,function(l){t||(t=l),l&&i.forEach(Gz),!o&&(i.forEach(Gz),e(t))})});return r.reduce(Qxe)};Yz.exports=bxe});var Jz=w((snt,qz)=>{"use strict";var{PassThrough:Sxe}=J("stream");qz.exports=r=>{r={...r};let{array:e}=r,{encoding:t}=r,i=t==="buffer",n=!1;e?n=!(t||i):t=t||"utf8",i&&(t=null);let s=new Sxe({objectMode:n});t&&s.setEncoding(t);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var Wz=w((ont,Uf)=>{"use strict";var vxe=jz(),xxe=Jz(),Vw=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Xw(r,e){if(!r)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:t}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=vxe(r,xxe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>t&&o(new Vw)})}),i.getBufferedValue()}Uf.exports=Xw;Uf.exports.default=Xw;Uf.exports.buffer=(r,e)=>Xw(r,{...e,encoding:"buffer"});Uf.exports.array=(r,e)=>Xw(r,{...e,array:!0});Uf.exports.MaxBufferError=Vw});var Vz=w((Ant,zz)=>{"use strict";var Pxe=new Set([200,203,204,206,300,301,404,405,410,414,501]),Dxe=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),kxe=new Set([500,502,503,504]),Rxe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Fxe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Tc(r){let e=parseInt(r,10);return isFinite(e)?e:0}function Nxe(r){return r?kxe.has(r.status):!0}function kk(r){let e={};if(!r)return e;let t=r.trim().split(/\s*,\s*/);for(let i of t){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function Lxe(r){let e=[];for(let t in r){let i=r[t];e.push(i===!0?t:t+"="+i)}if(!!e.length)return e.join(", ")}zz.exports=class{constructor(e,t,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,_fromObject:a}={}){if(a){this._fromObject(a);return}if(!t||!t.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in t?t.status:200,this._resHeaders=t.headers,this._rescc=kk(t.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=t.headers.vary?e.headers:null,this._reqcc=kk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":Lxe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),t.headers["cache-control"]==null&&/no-cache/.test(t.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&Dxe.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||Pxe.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let t=kk(e.headers["cache-control"]);return t["no-cache"]||/no-cache/.test(e.headers.pragma)||t["max-age"]&&this.age()>t["max-age"]||t["min-fresh"]&&this.timeToLive()<1e3*t["min-fresh"]||this.stale()&&!(t["max-stale"]&&!this._rescc["must-revalidate"]&&(t["max-stale"]===!0||t["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,t){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||t&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let t=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of t)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let t={};for(let i in e)Rxe[i]||(t[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete t[n]}if(t.warning){let i=t.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?t.warning=i.join(",").trim():delete t.warning}return t}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),t=this.age();return t>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(t)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),t=(this.now()-this._responseTime)/1e3;return e+t}_ageValue(){return Tc(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return Tc(this._rescc["s-maxage"])}if(this._rescc["max-age"])return Tc(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,t=this.date();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(t-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),t=e+Tc(this._rescc["stale-if-error"]),i=e+Tc(this._rescc["stale-while-revalidate"]);return Math.max(0,e,t,i)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Tc(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Tc(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let t=this._copyWithoutHopByHopHeaders(e.headers);if(delete t["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete t["if-none-match"],delete t["if-modified-since"],t;if(this._resHeaders.etag&&(t["if-none-match"]=t["if-none-match"]?`${t["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),t["accept-ranges"]||t["if-match"]||t["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete t["if-modified-since"],t["if-none-match"]){let n=t["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?t["if-none-match"]=n.join(",").trim():delete t["if-none-match"]}}else this._resHeaders["last-modified"]&&!t["if-modified-since"]&&(t["if-modified-since"]=this._resHeaders["last-modified"]);return t}revalidatedPolicy(e,t){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Nxe(t))return{modified:!1,matches:!1,policy:this};if(!t||!t.headers)throw Error("Response headers missing");let i=!1;if(t.status!==void 0&&t.status!=304?i=!1:t.headers.etag&&!/^\s*W\//.test(t.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag:this._resHeaders.etag&&t.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===t.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!t.headers.etag&&!t.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,t),modified:t.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in t.headers&&!Fxe[o]?t.headers[o]:this._resHeaders[o];let s=Object.assign({},t,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var Zw=w((lnt,Xz)=>{"use strict";Xz.exports=r=>{let e={};for(let[t,i]of Object.entries(r))e[t.toLowerCase()]=i;return e}});var _z=w((cnt,Zz)=>{"use strict";var Txe=J("stream").Readable,Oxe=Zw(),Rk=class extends Txe{constructor(e,t,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof t!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=Oxe(t),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};Zz.exports=Rk});var e5=w((unt,$z)=>{"use strict";var Mxe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];$z.exports=(r,e)=>{let t=new Set(Object.keys(r).concat(Mxe));for(let i of t)i in e||(e[i]=typeof r[i]=="function"?r[i].bind(r):r[i])}});var r5=w((gnt,t5)=>{"use strict";var Uxe=J("stream").PassThrough,Kxe=e5(),Hxe=r=>{if(!(r&&r.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Uxe;return Kxe(r,e),r.pipe(e)};t5.exports=Hxe});var i5=w(Fk=>{Fk.stringify=function r(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var t="",i=Array.isArray(e);t=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]>"u";Object.hasOwnProperty.call(e,s)&&!o&&(n||(t+=","),n=!1,i?e[s]==null?t+="null":t+=r(e[s]):e[s]!==void 0&&(t+=r(s)+":"+r(e[s])))}return t+=i?"]":"}",t}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};Fk.parse=function(r){return JSON.parse(r,function(e,t){return typeof t=="string"?/^:base64:/.test(t)?Buffer.from(t.substring(8),"base64"):/^:/.test(t)?t.substring(1):t:t})}});var o5=w((hnt,s5)=>{"use strict";var Gxe=J("events"),n5=i5(),Yxe=r=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(r.adapter||r.uri){let t=r.adapter||/^[^:]*/.exec(r.uri)[0];return new(J(e[t]))(r)}return new Map},Nk=class extends Gxe{constructor(e,t){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:n5.stringify,deserialize:n5.parse},typeof e=="string"?{uri:e}:e,t),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=Yxe(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,t){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return t&&t.raw?n:n.value}})}set(e,t,i){e=this._getKeyPrefix(e),typeof i>"u"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return t={value:t,expires:s},this.opts.serialize(t)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:t}=this.opts;return Promise.resolve().then(()=>t.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};s5.exports=Nk});var l5=w((dnt,A5)=>{"use strict";var jxe=J("events"),_w=J("url"),qxe=Nz(),Jxe=Wz(),Lk=Vz(),a5=_z(),Wxe=Zw(),zxe=r5(),Vxe=o5(),oo=class{constructor(e,t){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Vxe({uri:typeof t=="string"&&t,store:typeof t!="string"&&t,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(t,i)=>{let n;if(typeof t=="string")n=Tk(_w.parse(t)),t={};else if(t instanceof _w.URL)n=Tk(_w.parse(t.toString())),t={};else{let[g,...f]=(t.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=Tk({...t,pathname:g,search:h})}t={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...t,...Xxe(n)},t.headers=Wxe(t.headers);let s=new jxe,o=qxe(_w.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${t.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(y=>{h=()=>{f||(f=!0,y())}}),C=y=>{if(l&&!g.forceRefresh){y.status=y.statusCode;let v=Lk.fromObject(l.cachePolicy).revalidatedPolicy(g,y);if(!v.modified){let D=v.policy.responseHeaders();y=new a5(l.statusCode,D,l.body,l.url),y.cachePolicy=v.policy,y.fromCache=!0}}y.fromCache||(y.cachePolicy=new Lk(g,y,g),y.fromCache=!1);let B;g.cache&&y.cachePolicy.storable()?(B=zxe(y),(async()=>{try{let v=Jxe.buffer(y);if(await Promise.race([p,new Promise(j=>y.once("end",j))]),f)return;let D=await v,L={cachePolicy:y.cachePolicy.toObject(),url:y.url,statusCode:y.fromCache?l.statusCode:y.statusCode,body:D},H=g.strictTtl?y.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,L,H)}catch(v){s.emit("error",new oo.CacheError(v))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(v){s.emit("error",new oo.CacheError(v))}})(),s.emit("response",B||y),typeof i=="function"&&i(B||y)};try{let y=e(g,C);y.once("error",h),y.once("abort",h),s.emit("request",y)}catch(y){s.emit("error",new oo.RequestError(y))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p>"u")return u(h);let C=Lk.fromObject(p.cachePolicy);if(C.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let y=C.responseHeaders(),B=new a5(p.statusCode,y,p.body,p.url);B.cachePolicy=C,B.fromCache=!0,s.emit("response",B),typeof i=="function"&&i(B)}else l=p,h.headers=C.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new oo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(t)}catch(h){t.automaticFailover&&!c&&u(t),s.emit("error",new oo.CacheError(h))}})(),s}}};function Xxe(r){let e={...r};return e.path=`${r.pathname||"/"}${r.search||""}`,delete e.pathname,delete e.search,e}function Tk(r){return{protocol:r.protocol,auth:r.auth,hostname:r.hostname||r.host||"localhost",port:r.port,pathname:r.pathname,search:r.search}}oo.RequestError=class extends Error{constructor(r){super(r.message),this.name="RequestError",Object.assign(this,r)}};oo.CacheError=class extends Error{constructor(r){super(r.message),this.name="CacheError",Object.assign(this,r)}};A5.exports=oo});var u5=w((Ent,c5)=>{"use strict";var Zxe=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];c5.exports=(r,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let t=new Set(Object.keys(r).concat(Zxe)),i={};for(let n of t)n in e||(i[n]={get(){let s=r[n];return typeof s=="function"?s.bind(r):s},set(s){r[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),r.once("aborted",()=>{e.destroy(),e.emit("aborted")}),r.once("close",()=>{r.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var f5=w((Int,g5)=>{"use strict";var{Transform:_xe,PassThrough:$xe}=J("stream"),Ok=J("zlib"),ePe=u5();g5.exports=r=>{let e=(r.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return r;let t=e==="br";if(t&&typeof Ok.createBrotliDecompress!="function")return r.destroy(new Error("Brotli is not supported on Node.js < 12")),r;let i=!0,n=new _xe({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new $xe({autoDestroy:!1,destroy(a,l){r.destroy(),l(a)}}),o=t?Ok.createBrotliDecompress():Ok.createUnzip();return o.once("error",a=>{if(i&&!r.readable){s.end();return}s.destroy(a)}),ePe(r,s),r.pipe(n).pipe(o).pipe(s),s}});var Uk=w((ynt,h5)=>{"use strict";var Mk=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,t){if(this.cache.set(e,t),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let t=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,t),t}}set(e,t){return this.cache.has(e)?this.cache.set(e,t):this._set(e,t),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[t]=e;this.cache.has(t)||(yield e)}}get size(){let e=0;for(let t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}};h5.exports=Mk});var Hk=w((wnt,m5)=>{"use strict";var tPe=J("events"),rPe=J("tls"),iPe=J("http2"),nPe=Uk(),sn=Symbol("currentStreamsCount"),p5=Symbol("request"),Bs=Symbol("cachedOriginSet"),Kf=Symbol("gracefullyClosing"),sPe=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],oPe=(r,e,t)=>{let i=0,n=r.length;for(;i>>1;t(r[s],e)?i=s+1:n=s}return i},aPe=(r,e)=>r.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,Kk=(r,e)=>{for(let t of r)t[Bs].lengthe[Bs].includes(i))&&t[sn]+e[sn]<=e.remoteSettings.maxConcurrentStreams&&C5(t)},APe=(r,e)=>{for(let t of r)e[Bs].lengtht[Bs].includes(i))&&e[sn]+t[sn]<=t.remoteSettings.maxConcurrentStreams&&C5(e)},d5=({agent:r,isFree:e})=>{let t={};for(let i in r.sessions){let s=r.sessions[i].filter(o=>{let a=o[zo.kCurrentStreamsCount]{r[Kf]=!0,r[sn]===0&&r.close()},zo=class extends tPe{constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=t,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new nPe({maxSize:n})}static normalizeOrigin(e,t){return typeof e=="string"&&(e=new URL(e)),t&&e.hostname!==t&&(e.hostname=t),e.origin}normalizeOptions(e){let t="";if(e)for(let i of sPe)e[i]&&(t+=`:${e[i]}`);return t}_tryToCreateNewSession(e,t){if(!(e in this.queue)||!(t in this.queue[e]))return;let i=this.queue[e][t];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(t),a=zo.normalizeOrigin(e,t&&t.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let C=p.remoteSettings.maxConcurrentStreams;if(C=C||p[Kf]||p.destroyed)continue;h||(g=C),y>f&&(h=p,f=y)}}if(h){if(i.length!==1){for(let{reject:p}of i){let C=new Error(`Expected the length of listeners to be 1, got ${i.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);p(C)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=iPe.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u),...t});f[sn]=0,f[Kf]=!1;let h=()=>f[sn]{this.tlsSessionCache.set(u,y)}),f.once("error",y=>{for(let{reject:B}of i)B(y);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let y=this.sessions[o];y.splice(y.indexOf(f),1),y.length===0&&delete this.sessions[o]}else{let y=new Error("Session closed without receiving a SETTINGS frame");y.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:B}of i)B(y);l()}this._tryToCreateNewSession(o,a)});let C=()=>{if(!(!(o in this.queue)||!h())){for(let y of f[Bs])if(y in this.queue[o]){let{listeners:B}=this.queue[o][y];for(;B.length!==0&&h();)B.shift().resolve(f);let v=this.queue[o];if(v[y].listeners.length===0&&(delete v[y],Object.keys(v).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[Bs]=f.originSet,h()&&(C(),Kk(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let y=new Error("Agent has been destroyed");for(let B of i)B.reject(y);f.destroy();return}f[Bs]=f.originSet;{let y=this.sessions;if(o in y){let B=y[o];B.splice(oPe(B,f,aPe),0,f)}else y[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),C(),l(),f[sn]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,t,i),i.length=0),f.on("remoteSettings",()=>{C(),Kk(this.sessions[o],f)})}),f[p5]=f.request,f.request=(y,B)=>{if(f[Kf])throw new Error("The session is gracefully closing. No new streams are allowed.");let v=f[p5](y,B);return f.ref(),++f[sn],f[sn]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,v.once("close",()=>{if(p=h(),--f[sn],!f.destroyed&&!f.closed&&(APe(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let D=f[sn]===0;D&&f.unref(),D&&(this._freeSessionsCount>this.maxFreeSessions||f[Kf])?f.close():(Kk(this.sessions[o],f),C())}}),v}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,t,i,n){return new Promise((s,o)=>{this.getSession(e,t,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,t){return zo.connect(e,t)}static connect(e,t){t.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof t.servername>"u"&&(t.servername=n),rPe.connect(i,n,t)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let t of e)t[sn]===0&&t.close()}destroy(e){for(let t of Object.values(this.sessions))for(let i of t)i.destroy(e);for(let t of Object.values(this.queue))for(let i of Object.values(t))i.destroyed=!0;this.queue={}}get freeSessions(){return d5({agent:this,isFree:!0})}get busySessions(){return d5({agent:this,isFree:!1})}};zo.kCurrentStreamsCount=sn;zo.kGracefullyClosing=Kf;m5.exports={Agent:zo,globalAgent:new zo}});var Yk=w((Bnt,E5)=>{"use strict";var{Readable:lPe}=J("stream"),Gk=class extends lPe{constructor(e,t){super({highWaterMark:t,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,t){return this.req.setTimeout(e,t),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};E5.exports=Gk});var jk=w((Qnt,I5)=>{"use strict";I5.exports=r=>{let e={protocol:r.protocol,hostname:typeof r.hostname=="string"&&r.hostname.startsWith("[")?r.hostname.slice(1,-1):r.hostname,host:r.host,hash:r.hash,search:r.search,pathname:r.pathname,href:r.href,path:`${r.pathname||""}${r.search||""}`};return typeof r.port=="string"&&r.port.length!==0&&(e.port=Number(r.port)),(r.username||r.password)&&(e.auth=`${r.username||""}:${r.password||""}`),e}});var w5=w((bnt,y5)=>{"use strict";y5.exports=(r,e,t)=>{for(let i of t)r.on(i,(...n)=>e.emit(i,...n))}});var Q5=w((Snt,B5)=>{"use strict";B5.exports=r=>{switch(r){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var S5=w((xnt,b5)=>{"use strict";var Hf=(r,e,t)=>{b5.exports[e]=class extends r{constructor(...n){super(typeof t=="string"?t:t(n)),this.name=`${super.name} [${e}]`,this.code=e}}};Hf(TypeError,"ERR_INVALID_ARG_TYPE",r=>{let e=r[0].includes(".")?"property":"argument",t=r[1],i=Array.isArray(t);return i&&(t=`${t.slice(0,-1).join(", ")} or ${t.slice(-1)}`),`The "${r[0]}" ${e} must be ${i?"one of":"of"} type ${t}. Received ${typeof r[2]}`});Hf(TypeError,"ERR_INVALID_PROTOCOL",r=>`Protocol "${r[0]}" not supported. Expected "${r[1]}"`);Hf(Error,"ERR_HTTP_HEADERS_SENT",r=>`Cannot ${r[0]} headers after they are sent to the client`);Hf(TypeError,"ERR_INVALID_HTTP_TOKEN",r=>`${r[0]} must be a valid HTTP token [${r[1]}]`);Hf(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",r=>`Invalid value "${r[0]} for header "${r[1]}"`);Hf(TypeError,"ERR_INVALID_CHAR",r=>`Invalid character in ${r[0]} [${r[1]}]`)});var Vk=w((Pnt,F5)=>{"use strict";var cPe=J("http2"),{Writable:uPe}=J("stream"),{Agent:v5,globalAgent:gPe}=Hk(),fPe=Yk(),hPe=jk(),pPe=w5(),dPe=Q5(),{ERR_INVALID_ARG_TYPE:qk,ERR_INVALID_PROTOCOL:CPe,ERR_HTTP_HEADERS_SENT:x5,ERR_INVALID_HTTP_TOKEN:mPe,ERR_HTTP_INVALID_HEADER_VALUE:EPe,ERR_INVALID_CHAR:IPe}=S5(),{HTTP2_HEADER_STATUS:P5,HTTP2_HEADER_METHOD:D5,HTTP2_HEADER_PATH:k5,HTTP2_METHOD_CONNECT:yPe}=cPe.constants,Ki=Symbol("headers"),Jk=Symbol("origin"),Wk=Symbol("session"),R5=Symbol("options"),$w=Symbol("flushedHeaders"),EC=Symbol("jobs"),wPe=/^[\^`\-\w!#$%&*+.|~]+$/,BPe=/[^\t\u0020-\u007E\u0080-\u00FF]/,zk=class extends uPe{constructor(e,t,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=hPe(e instanceof URL?e:new URL(e))),typeof t=="function"||t===void 0?(i=t,t=n?e:{...e}):t={...e,...t},t.h2session)this[Wk]=t.h2session;else if(t.agent===!1)this.agent=new v5({maxFreeSessions:0});else if(typeof t.agent>"u"||t.agent===null)typeof t.createConnection=="function"?(this.agent=new v5({maxFreeSessions:0}),this.agent.createConnection=t.createConnection):this.agent=gPe;else if(typeof t.agent.request=="function")this.agent=t.agent;else throw new qk("options.agent",["Agent-like Object","undefined","false"],t.agent);if(t.protocol&&t.protocol!=="https:")throw new CPe(t.protocol,"https:");let s=t.port||t.defaultPort||this.agent&&this.agent.defaultPort||443,o=t.hostname||t.host||"localhost";delete t.hostname,delete t.host,delete t.port;let{timeout:a}=t;if(t.timeout=void 0,this[Ki]=Object.create(null),this[EC]=[],this.socket=null,this.connection=null,this.method=t.method||"GET",this.path=t.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,t.headers)for(let[l,c]of Object.entries(t.headers))this.setHeader(l,c);t.auth&&!("authorization"in this[Ki])&&(this[Ki].authorization="Basic "+Buffer.from(t.auth).toString("base64")),t.session=t.tlsSession,t.path=t.socketPath,this[R5]=t,s===443?(this[Jk]=`https://${o}`,":authority"in this[Ki]||(this[Ki][":authority"]=o)):(this[Jk]=`https://${o}:${s}`,":authority"in this[Ki]||(this[Ki][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[$w]=!1}get method(){return this[Ki][D5]}set method(e){e&&(this[Ki][D5]=e.toUpperCase())}get path(){return this[Ki][k5]}set path(e){e&&(this[Ki][k5]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,t,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,t,i);this._request?n():this[EC].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let t=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?t():this[EC].push(t)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,t){this.res&&this.res._dump(),this._request&&this._request.destroy(),t(e)}async flushHeaders(){if(this[$w]||this.destroyed)return;this[$w]=!0;let e=this.method===yPe,t=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||pPe(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new fPe(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[P5],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[P5]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[EC])o();this.emit("socket",this.socket)};if(this[Wk])try{t(this[Wk].request(this[Ki]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{t(await this.agent.request(this[Jk],this[R5],this[Ki]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new qk("name","string",e);return this[Ki][e.toLowerCase()]}get headersSent(){return this[$w]}removeHeader(e){if(typeof e!="string")throw new qk("name","string",e);if(this.headersSent)throw new x5("remove");delete this[Ki][e.toLowerCase()]}setHeader(e,t){if(this.headersSent)throw new x5("set");if(typeof e!="string"||!wPe.test(e)&&!dPe(e))throw new mPe("Header name",e);if(typeof t>"u")throw new EPe(t,e);if(BPe.test(t))throw new IPe("header content",e);this[Ki][e.toLowerCase()]=t}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,t){let i=()=>this._request.setTimeout(e,t);return this._request?i():this[EC].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};F5.exports=zk});var L5=w((Dnt,N5)=>{"use strict";var QPe=J("tls");N5.exports=(r={})=>new Promise((e,t)=>{let i=QPe.connect(r,()=>{r.resolveSocket?(i.off("error",t),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",t)})});var O5=w((knt,T5)=>{"use strict";var bPe=J("net");T5.exports=r=>{let e=r.host,t=r.headers&&r.headers.host;return t&&(t.startsWith("[")?t.indexOf("]")===-1?e=t:e=t.slice(1,-1):e=t.split(":",1)[0]),bPe.isIP(e)?"":e}});var K5=w((Rnt,Zk)=>{"use strict";var M5=J("http"),Xk=J("https"),SPe=L5(),vPe=Uk(),xPe=Vk(),PPe=O5(),DPe=jk(),eB=new vPe({maxSize:100}),IC=new Map,U5=(r,e,t)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{r.emit("free",e,t)};e.on("free",i);let n=()=>{r.removeSocket(e,t)};e.on("close",n);let s=()=>{r.removeSocket(e,t),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),r.emit("free",e,t)},kPe=async r=>{let e=`${r.host}:${r.port}:${r.ALPNProtocols.sort()}`;if(!eB.has(e)){if(IC.has(e))return(await IC.get(e)).alpnProtocol;let{path:t,agent:i}=r;r.path=r.socketPath;let n=SPe(r);IC.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(eB.set(e,o),r.path=t,o==="h2")s.destroy();else{let{globalAgent:a}=Xk,l=Xk.Agent.prototype.createConnection;i?i.createConnection===l?U5(i,s,r):s.destroy():a.createConnection===l?U5(a,s,r):s.destroy()}return IC.delete(e),o}catch(s){throw IC.delete(e),s}}return eB.get(e)};Zk.exports=async(r,e,t)=>{if((typeof r=="string"||r instanceof URL)&&(r=DPe(new URL(r))),typeof e=="function"&&(t=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...r,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||PPe(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Xk.globalAgent:M5.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await kPe(e)==="h2"?(n&&(e.agent=n.http2),new xPe(e,t)):M5.request(e,t)};Zk.exports.protocolCache=eB});var G5=w((Fnt,H5)=>{"use strict";var RPe=J("http2"),FPe=Hk(),_k=Vk(),NPe=Yk(),LPe=K5(),TPe=(r,e,t)=>new _k(r,e,t),OPe=(r,e,t)=>{let i=new _k(r,e,t);return i.end(),i};H5.exports={...RPe,ClientRequest:_k,IncomingMessage:NPe,...FPe,request:TPe,get:OPe,auto:LPe}});var eR=w($k=>{"use strict";Object.defineProperty($k,"__esModule",{value:!0});var Y5=Ga();$k.default=r=>Y5.default.nodeStream(r)&&Y5.default.function_(r.getBoundary)});var W5=w(tR=>{"use strict";Object.defineProperty(tR,"__esModule",{value:!0});var q5=J("fs"),J5=J("util"),j5=Ga(),MPe=eR(),UPe=J5.promisify(q5.stat);tR.default=async(r,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!r)return 0;if(j5.default.string(r))return Buffer.byteLength(r);if(j5.default.buffer(r))return r.length;if(MPe.default(r))return J5.promisify(r.getLength.bind(r))();if(r instanceof q5.ReadStream){let{size:t}=await UPe(r.path);return t===0?void 0:t}}});var iR=w(rR=>{"use strict";Object.defineProperty(rR,"__esModule",{value:!0});function KPe(r,e,t){let i={};for(let n of t)i[n]=(...s)=>{e.emit(n,...s)},r.on(n,i[n]);return()=>{for(let n of t)r.off(n,i[n])}}rR.default=KPe});var z5=w(nR=>{"use strict";Object.defineProperty(nR,"__esModule",{value:!0});nR.default=()=>{let r=[];return{once(e,t,i){e.once(t,i),r.push({origin:e,event:t,fn:i})},unhandleAll(){for(let e of r){let{origin:t,event:i,fn:n}=e;t.removeListener(i,n)}r.length=0}}}});var X5=w(yC=>{"use strict";Object.defineProperty(yC,"__esModule",{value:!0});yC.TimeoutError=void 0;var HPe=J("net"),GPe=z5(),V5=Symbol("reentry"),YPe=()=>{},tB=class extends Error{constructor(e,t){super(`Timeout awaiting '${t}' for ${e}ms`),this.event=t,this.name="TimeoutError",this.code="ETIMEDOUT"}};yC.TimeoutError=tB;yC.default=(r,e,t)=>{if(V5 in r)return YPe;r[V5]=!0;let i=[],{once:n,unhandleAll:s}=GPe.default(),o=(g,f,h)=>{var p;let C=setTimeout(f,g,g,h);(p=C.unref)===null||p===void 0||p.call(C);let y=()=>{clearTimeout(C)};return i.push(y),y},{host:a,hostname:l}=t,c=(g,f)=>{r.destroy(new tB(g,f))},u=()=>{for(let g of i)g();s()};if(r.once("error",g=>{if(u(),r.listenerCount("error")===0)throw g}),r.once("close",u),n(r,"response",g=>{n(g,"end",u)}),typeof e.request<"u"&&o(e.request,c,"request"),typeof e.socket<"u"){let g=()=>{c(e.socket,"socket")};r.setTimeout(e.socket,g),i.push(()=>{r.removeListener("timeout",g)})}return n(r,"socket",g=>{var f;let{socketPath:h}=r;if(g.connecting){let p=Boolean(h!=null?h:HPe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup<"u"&&!p&&typeof g.address().address>"u"){let C=o(e.lookup,c,"lookup");n(g,"lookup",C)}if(typeof e.connect<"u"){let C=()=>o(e.connect,c,"connect");p?n(g,"connect",C()):n(g,"lookup",y=>{y===null&&n(g,"connect",C())})}typeof e.secureConnect<"u"&&t.protocol==="https:"&&n(g,"connect",()=>{let C=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",C)})}if(typeof e.send<"u"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(r,"upload-complete",p())}):n(r,"upload-complete",p())}}),typeof e.response<"u"&&n(r,"upload-complete",()=>{let g=o(e.response,c,"response");n(r,"response",g)}),u}});var _5=w(sR=>{"use strict";Object.defineProperty(sR,"__esModule",{value:!0});var Z5=Ga();sR.default=r=>{r=r;let e={protocol:r.protocol,hostname:Z5.default.string(r.hostname)&&r.hostname.startsWith("[")?r.hostname.slice(1,-1):r.hostname,host:r.host,hash:r.hash,search:r.search,pathname:r.pathname,href:r.href,path:`${r.pathname||""}${r.search||""}`};return Z5.default.string(r.port)&&r.port.length>0&&(e.port=Number(r.port)),(r.username||r.password)&&(e.auth=`${r.username||""}:${r.password||""}`),e}});var $5=w(oR=>{"use strict";Object.defineProperty(oR,"__esModule",{value:!0});var jPe=J("url"),qPe=["protocol","host","hostname","port","pathname","search"];oR.default=(r,e)=>{var t,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!r){if(!e.protocol)throw new TypeError("No URL protocol specified");r=`${e.protocol}//${(i=(t=e.hostname)!==null&&t!==void 0?t:e.host)!==null&&i!==void 0?i:""}`}let n=new jPe.URL(r);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of qPe)e[s]&&(n[s]=e[s].toString());return n}});var e6=w(AR=>{"use strict";Object.defineProperty(AR,"__esModule",{value:!0});var aR=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,t){typeof e=="object"?this.weakMap.set(e,t):this.map.set(e,t)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};AR.default=aR});var cR=w(lR=>{"use strict";Object.defineProperty(lR,"__esModule",{value:!0});var JPe=async r=>{let e=[],t=0;for await(let i of r)e.push(i),t+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,t):Buffer.from(e.join(""))};lR.default=JPe});var r6=w(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.dnsLookupIpVersionToFamily=Oc.isDnsLookupIpVersion=void 0;var t6={auto:0,ipv4:4,ipv6:6};Oc.isDnsLookupIpVersion=r=>r in t6;Oc.dnsLookupIpVersionToFamily=r=>{if(Oc.isDnsLookupIpVersion(r))return t6[r];throw new Error("Invalid DNS lookup IP version")}});var uR=w(rB=>{"use strict";Object.defineProperty(rB,"__esModule",{value:!0});rB.isResponseOk=void 0;rB.isResponseOk=r=>{let{statusCode:e}=r,t=r.request.options.followRedirect?299:399;return e>=200&&e<=t||e===304}});var n6=w(gR=>{"use strict";Object.defineProperty(gR,"__esModule",{value:!0});var i6=new Set;gR.default=r=>{i6.has(r)||(i6.add(r),process.emitWarning(`Got: ${r}`,{type:"DeprecationWarning"}))}});var s6=w(fR=>{"use strict";Object.defineProperty(fR,"__esModule",{value:!0});var mr=Ga(),WPe=(r,e)=>{if(mr.default.null_(r.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");mr.assert.any([mr.default.string,mr.default.undefined],r.encoding),mr.assert.any([mr.default.boolean,mr.default.undefined],r.resolveBodyOnly),mr.assert.any([mr.default.boolean,mr.default.undefined],r.methodRewriting),mr.assert.any([mr.default.boolean,mr.default.undefined],r.isStream),mr.assert.any([mr.default.string,mr.default.undefined],r.responseType),r.responseType===void 0&&(r.responseType="text");let{retry:t}=r;if(e?r.retry={...e.retry}:r.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},mr.default.object(t)?(r.retry={...r.retry,...t},r.retry.methods=[...new Set(r.retry.methods.map(i=>i.toUpperCase()))],r.retry.statusCodes=[...new Set(r.retry.statusCodes)],r.retry.errorCodes=[...new Set(r.retry.errorCodes)]):mr.default.number(t)&&(r.retry.limit=t),mr.default.undefined(r.retry.maxRetryAfter)&&(r.retry.maxRetryAfter=Math.min(...[r.timeout.request,r.timeout.connect].filter(mr.default.number))),mr.default.object(r.pagination)){e&&(r.pagination={...e.pagination,...r.pagination});let{pagination:i}=r;if(!mr.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!mr.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!mr.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!mr.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return r.responseType==="json"&&r.headers.accept===void 0&&(r.headers.accept="application/json"),r};fR.default=WPe});var o6=w(wC=>{"use strict";Object.defineProperty(wC,"__esModule",{value:!0});wC.retryAfterStatusCodes=void 0;wC.retryAfterStatusCodes=new Set([413,429,503]);var zPe=({attemptCount:r,retryOptions:e,error:t,retryAfter:i})=>{if(r>e.limit)return 0;let n=e.methods.includes(t.options.method),s=e.errorCodes.includes(t.code),o=t.response&&e.statusCodes.includes(t.response.statusCode);if(!n||!s&&!o)return 0;if(t.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(t.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(r-1)*1e3+a};wC.default=zPe});var bC=w(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});Yt.UnsupportedProtocolError=Yt.ReadError=Yt.TimeoutError=Yt.UploadError=Yt.CacheError=Yt.HTTPError=Yt.MaxRedirectsError=Yt.RequestError=Yt.setNonEnumerableProperties=Yt.knownHookEvents=Yt.withoutBody=Yt.kIsNormalizedAlready=void 0;var a6=J("util"),A6=J("stream"),VPe=J("fs"),VA=J("url"),l6=J("http"),hR=J("http"),XPe=J("https"),ZPe=Qz(),_Pe=kz(),c6=l5(),$Pe=f5(),eDe=G5(),tDe=Zw(),Ee=Ga(),rDe=W5(),u6=eR(),iDe=iR(),g6=X5(),nDe=_5(),f6=$5(),sDe=e6(),oDe=cR(),h6=r6(),aDe=uR(),XA=n6(),ADe=s6(),lDe=o6(),pR,Pi=Symbol("request"),sB=Symbol("response"),Gf=Symbol("responseSize"),Yf=Symbol("downloadedSize"),jf=Symbol("bodySize"),qf=Symbol("uploadedSize"),iB=Symbol("serverResponsesPiped"),p6=Symbol("unproxyEvents"),d6=Symbol("isFromCache"),dR=Symbol("cancelTimeouts"),C6=Symbol("startedReading"),Jf=Symbol("stopReading"),nB=Symbol("triggerRead"),ZA=Symbol("body"),BC=Symbol("jobs"),m6=Symbol("originalResponse"),E6=Symbol("retryTimeout");Yt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var cDe=Ee.default.string(process.versions.brotli);Yt.withoutBody=new Set(["GET","HEAD"]);Yt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function uDe(r){for(let e in r){let t=r[e];if(!Ee.default.string(t)&&!Ee.default.number(t)&&!Ee.default.boolean(t)&&!Ee.default.null_(t)&&!Ee.default.undefined(t))throw new TypeError(`The \`searchParams\` value '${String(t)}' must be a string, number, boolean or null`)}}function gDe(r){return Ee.default.object(r)&&!("statusCode"in r)}var CR=new sDe.default,fDe=async r=>new Promise((e,t)=>{let i=n=>{t(n)};r.pending||e(),r.once("error",i),r.once("ready",()=>{r.off("error",i),e()})}),hDe=new Set([300,301,302,303,304,307,308]),pDe=["context","body","json","form"];Yt.setNonEnumerableProperties=(r,e)=>{let t={};for(let i of r)if(!!i)for(let n of pDe)n in i&&(t[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,t)};var ei=class extends Error{constructor(e,t,i){var n;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=t.code,i instanceof gB?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[sB]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,Ee.default.string(t.stack)&&Ee.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` `).reverse(),a=t.stack.slice(t.stack.indexOf(t.message)+t.message.length).split(` `).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` `)}${a.reverse().join(` -`)}`}}};Yt.RequestError=ei;var Ww=class extends ei{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Yt.MaxRedirectsError=Ww;var zw=class extends ei{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Yt.HTTPError=zw;var Vw=class extends ei{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};Yt.CacheError=Vw;var Xw=class extends ei{constructor(e,t){super(e.message,e,t),this.name="UploadError"}};Yt.UploadError=Xw;var _w=class extends ei{constructor(e,t,i){super(e.message,e,i),this.name="TimeoutError",this.event=e.event,this.timings=t}};Yt.TimeoutError=_w;var fC=class extends ei{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};Yt.ReadError=fC;var Zw=class extends ei{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Yt.UnsupportedProtocolError=Zw;var SPe=["socket","connect","continue","information","upgrade","timeout"],$w=class extends F5.Duplex{constructor(e,t={},i){super({autoDestroy:!1,highWaterMark:0}),this[Ff]=0,this[Lf]=0,this.requestInitialized=!1,this[jw]=new Set,this.redirects=[],this[Tf]=!1,this[qw]=!1,this[gC]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Zk.IncomingMessage&&(this.options.headers={...c.headers,...this.options.headers})});let{json:o,body:a,form:l}=t;if((o||a||l)&&this._lockWrite(),Yt.kIsNormalizedAlready in t)this.options=t;else try{this.options=this.constructor.normalizeArguments(e,t,i)}catch(c){Ee.default.nodeStream(t.body)&&t.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof sPe.ReadStream&&await BPe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[xi])===null||c===void 0||c.destroy();return}for(let g of this[gC])g();this[gC].length=0,this.requestInitialized=!0}catch(u){if(u instanceof ei){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,t,i){var n,s,o,a,l;let c=t;if(Ee.default.object(e)&&!Ee.default.urlInstance(e))t={...i,...e,...t};else{if(e&&t&&t.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");t={...i,...t},e!==void 0&&(t.url=e),Ee.default.urlInstance(t.url)&&(t.url=new UA.URL(t.url.toString()))}if(t.cache===!1&&(t.cache=void 0),t.dnsCache===!1&&(t.dnsCache=void 0),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.method),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.headers),Ee.assert.any([Ee.default.string,Ee.default.urlInstance,Ee.default.undefined],t.prefixUrl),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.cookieJar),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.searchParams),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.cache),Ee.assert.any([Ee.default.object,Ee.default.number,Ee.default.undefined],t.timeout),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.context),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.hooks),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.decompress),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.ignoreInvalidCookies),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.followRedirect),Ee.assert.any([Ee.default.number,Ee.default.undefined],t.maxRedirects),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.throwHttpErrors),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.http2),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.allowGetBody),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.localAddress),Ee.assert.any([K5.isDnsLookupIpVersion,Ee.default.undefined],t.dnsLookupIpVersion),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.https),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.rejectUnauthorized),t.https&&(Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.https.rejectUnauthorized),Ee.assert.any([Ee.default.function_,Ee.default.undefined],t.https.checkServerIdentity),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificateAuthority),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.key),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificate),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.https.passphrase),Ee.assert.any([Ee.default.string,Ee.default.buffer,Ee.default.array,Ee.default.undefined],t.https.pfx)),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.cacheOptions),Ee.default.string(t.method)?t.method=t.method.toUpperCase():t.method="GET",t.headers===(i==null?void 0:i.headers)?t.headers={...t.headers}:t.headers=uPe({...i==null?void 0:i.headers,...t.headers}),"slashes"in t)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in t)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in t&&t.searchParams&&t.searchParams!==(i==null?void 0:i.searchParams)){let h;if(Ee.default.string(t.searchParams)||t.searchParams instanceof UA.URLSearchParams)h=new UA.URLSearchParams(t.searchParams);else{yPe(t.searchParams),h=new UA.URLSearchParams;for(let p in t.searchParams){let C=t.searchParams[p];C===null?h.append(p,""):C!==void 0&&h.append(p,C)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,C)=>{h.has(C)||h.append(C,p)}),t.searchParams=h}if(t.username=(s=t.username)!==null&&s!==void 0?s:"",t.password=(o=t.password)!==null&&o!==void 0?o:"",Ee.default.undefined(t.prefixUrl)?t.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(t.prefixUrl=t.prefixUrl.toString(),t.prefixUrl!==""&&!t.prefixUrl.endsWith("/")&&(t.prefixUrl+="/")),Ee.default.string(t.url)){if(t.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");t.url=M5.default(t.prefixUrl+t.url,t)}else(Ee.default.undefined(t.url)&&t.prefixUrl!==""||t.protocol)&&(t.url=M5.default(t.prefixUrl,t));if(t.url){"port"in t&&delete t.port;let{prefixUrl:h}=t;Object.defineProperty(t,"prefixUrl",{set:C=>{let y=t.url;if(!y.href.startsWith(C))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${C}: ${y.href}`);t.url=new UA.URL(C+y.href.slice(h.length)),h=C},get:()=>h});let{protocol:p}=t.url;if(p==="unix:"&&(p="http:",t.url=new UA.URL(`http://unix${t.url.pathname}${t.url.search}`)),t.searchParams&&(t.url.search=t.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Zw(t);t.username===""?t.username=t.url.username:t.url.username=t.username,t.password===""?t.password=t.url.password:t.url.password=t.password}let{cookieJar:u}=t;if(u){let{setCookie:h,getCookieString:p}=u;Ee.assert.function_(h),Ee.assert.function_(p),h.length===4&&p.length===0&&(h=R5.promisify(h.bind(t.cookieJar)),p=R5.promisify(p.bind(t.cookieJar)),t.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=t;if(g&&(tR.has(g)||tR.set(g,new L5((h,p)=>{let C=h[xi](h,p);return Ee.default.promise(C)&&(C.once=(y,B)=>{if(y==="error")C.catch(B);else if(y==="abort")(async()=>{try{(await C).once("abort",B)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${y}`);return C}),C},g))),t.cacheOptions={...t.cacheOptions},t.dnsCache===!0)$k||($k=new APe.default),t.dnsCache=$k;else if(!Ee.default.undefined(t.dnsCache)&&!t.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${Ee.default(t.dnsCache)}`);Ee.default.number(t.timeout)?t.timeout={request:t.timeout}:i&&t.timeout!==i.timeout?t.timeout={...i.timeout,...t.timeout}:t.timeout={...t.timeout},t.context||(t.context={});let f=t.hooks===(i==null?void 0:i.hooks);t.hooks={...t.hooks};for(let h of Yt.knownHookEvents)if(h in t.hooks)if(Ee.default.array(t.hooks[h]))t.hooks[h]=[...t.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${Ee.default(t.hooks[h])}`);else t.hooks[h]=[];if(i&&!f)for(let h of Yt.knownHookEvents)i.hooks[h].length>0&&(t.hooks[h]=[...i.hooks[h],...t.hooks[h]]);if("family"in t&&HA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),i!=null&&i.https&&(t.https={...i.https,...t.https}),"rejectUnauthorized"in t&&HA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in t&&HA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in t&&HA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in t&&HA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in t&&HA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in t&&HA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in t&&HA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in t)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(t.agent){for(let h in t.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return t.maxRedirects=(l=t.maxRedirects)!==null&&l!==void 0?l:0,Yt.setNonEnumerableProperties([i,c],t),mPe.default(t,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:t}=e,i=!Ee.default.undefined(e.form),n=!Ee.default.undefined(e.json),s=!Ee.default.undefined(e.body),o=i||n||s,a=Yt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof F5.Readable)&&!Ee.default.string(e.body)&&!Ee.default.buffer(e.body)&&!T5.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!Ee.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!Ee.default.string(t["content-type"]);s?(T5.default(e.body)&&l&&(t["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[GA]=e.body):i?(l&&(t["content-type"]="application/x-www-form-urlencoded"),this[GA]=new UA.URLSearchParams(e.form).toString()):(l&&(t["content-type"]="application/json"),this[GA]=e.stringifyJson(e.json));let c=await gPe.default(this[GA],e.headers);Ee.default.undefined(t["content-length"])&&Ee.default.undefined(t["transfer-encoding"])&&!a&&!Ee.default.undefined(c)&&(t["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[Nf]=Number(t["content-length"])||void 0}async _onResponseBase(e){let{options:t}=this,{url:i}=t;this[Y5]=e,t.decompress&&(e=lPe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:N5.STATUS_CODES[n],s.url=t.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[H5]=s.isFromCache,this[Rf]=Number(e.headers["content-length"])||void 0,this[Jw]=e,e.once("end",()=>{this[Rf]=this[Ff],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new fC(a,this))}),e.once("aborted",()=>{this._beforeError(new fC({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(Ee.default.object(t.cookieJar)&&o){let a=o.map(async l=>t.cookieJar.setCookie(l,i.toString()));t.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(t.followRedirect&&e.headers.location&&QPe.has(n)){if(e.resume(),this[xi]&&(this[eR](),delete this[xi],this[U5]()),(n===303&&t.method!=="GET"&&t.method!=="HEAD"||!t.methodRewriting)&&(t.method="GET","body"in t&&delete t.body,"json"in t&&delete t.json,"form"in t&&delete t.form,this[GA]=void 0,delete t.headers["content-length"]),this.redirects.length>=t.maxRedirects){this._beforeError(new Ww(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new UA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in t.headers&&delete t.headers.host,"cookie"in t.headers&&delete t.headers.cookie,"authorization"in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username="",t.password="")):(c.username=t.username,c.password=t.password),this.redirects.push(u),t.url=c;for(let g of t.hooks.beforeRedirect)await g(t,s);this.emit("redirect",s,t),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(t.isStream&&t.throwHttpErrors&&!CPe.isResponseOk(s)){this._beforeError(new zw(s));return}e.on("readable",()=>{this[qw]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[jw])if(!a.headersSent){for(let l in e.headers){let c=t.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(t){this._beforeError(t)}}_onRequest(e){let{options:t}=this,{timeout:i,url:n}=t;aPe.default(e),this[eR]=O5.default(e,i,n);let s=t.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof O5.TimeoutError?new _w(l,this.timings,this):new ei(l.message,l,this),this._beforeError(l)}),this[U5]=fPe.default(e,this,SPe),this[xi]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[GA],a=this.redirects.length===0?this:e;Ee.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Xw(l,this))})):(this._unlockWrite(),Ee.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,t){return new Promise((i,n)=>{Object.assign(t,hPe.default(e)),delete t.url;let s,o=tR.get(t.cache)(t,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});t.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,t,i,n,s;let{options:o}=this,{headers:a}=o;for(let B in a)if(Ee.default.undefined(a[B]))delete a[B];else if(Ee.default.null_(a[B]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${B}\` header`);if(o.decompress&&Ee.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=IPe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let B=await o.cookieJar.getCookieString(o.url.toString());Ee.default.nonEmptyString(B)&&(o.headers.cookie=B)}for(let B of o.hooks.beforeRequest){let v=await B(o);if(!Ee.default.undefined(v)){o.request=()=>v;break}}o.body&&this[GA]!==o.body&&(this[GA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let B=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(B!=null&&B.groups){let{socketPath:v,path:D}=B.groups;Object.assign(o,{socketPath:v,path:D,host:""})}}let f=g.protocol==="https:",h;o.http2?h=cPe.auto:h=f?oPe.request:N5.request;let p=(e=o.request)!==null&&e!==void 0?e:h,C=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[xi]=p,delete o.request,delete o.timeout;let y=o;if(y.shared=(t=o.cacheOptions)===null||t===void 0?void 0:t.shared,y.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,y.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,y.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{y.family=K5.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(y.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(y.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(y.ca=o.https.certificateAuthority),o.https.certificate&&(y.cert=o.https.certificate),o.https.key&&(y.key=o.https.key),o.https.passphrase&&(y.passphrase=o.https.passphrase),o.https.pfx&&(y.pfx=o.https.pfx));try{let B=await C(g,y);Ee.default.undefined(B)&&(B=h(g,y)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete y.rejectUnauthorized,o.https.checkServerIdentity&&delete y.checkServerIdentity,o.https.certificateAuthority&&delete y.ca,o.https.certificate&&delete y.cert,o.https.key&&delete y.key,o.https.passphrase&&delete y.passphrase,o.https.pfx&&delete y.pfx),wPe(B)?this._onRequest(B):this.writable?(this.once("finish",()=>{this._onResponse(B)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(B)}catch(B){throw B instanceof L5.CacheError?new Vw(B,this):new ei(B.message,B,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new ei(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[Tf])return;let{options:t}=this,i=this.retryCount+1;this[Tf]=!0,e instanceof ei||(e=new ei(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await dPe.default(s),s.body=s.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await t.retry.calculateDelay({attemptCount:i,retryOptions:t.retry,error:n,retryAfter:a,computedValue:EPe.default({attemptCount:i,retryOptions:t.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new ei(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new ei(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[j5]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[qw]=!0;let e=this[Jw];if(e&&!this[Tf]){e.readableLength&&(this[qw]=!1);let t;for(;(t=e.read())!==null;){this[Ff]+=t.length,this[G5]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(t)}}}_write(e,t,i){let n=()=>{this._writeRequest(e,t,i)};this.requestInitialized?n():this[gC].push(n)}_writeRequest(e,t,i){this[xi].destroyed||(this._progressCallbacks.push(()=>{this[Lf]+=Buffer.byteLength(e,t);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[xi].write(e,t,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let t=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(xi in this)){e();return}if(this[xi].destroyed){e();return}this[xi].end(i=>{i||(this[Nf]=this[Lf],this.emit("uploadProgress",this.uploadProgress),this[xi].emit("upload-complete")),e(i)})};this.requestInitialized?t():this[gC].push(t)}_destroy(e,t){var i;this[Tf]=!0,clearTimeout(this[j5]),xi in this&&(this[eR](),!((i=this[Jw])===null||i===void 0)&&i.complete||this[xi].destroy()),e!==null&&!Ee.default.undefined(e)&&!(e instanceof ei)&&(e=new ei(e.message,e,this)),t(e)}get _isAboutToError(){return this[Tf]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,t,i;return((t=(e=this[xi])===null||e===void 0?void 0:e.destroyed)!==null&&t!==void 0?t:this.destroyed)&&!(!((i=this[Y5])===null||i===void 0)&&i.complete)}get socket(){var e,t;return(t=(e=this[xi])===null||e===void 0?void 0:e.socket)!==null&&t!==void 0?t:void 0}get downloadProgress(){let e;return this[Rf]?e=this[Ff]/this[Rf]:this[Rf]===this[Ff]?e=1:e=0,{percent:e,transferred:this[Ff],total:this[Rf]}}get uploadProgress(){let e;return this[Nf]?e=this[Lf]/this[Nf]:this[Nf]===this[Lf]?e=1:e=0,{percent:e,transferred:this[Lf],total:this[Nf]}}get timings(){var e;return(e=this[xi])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[H5]}pipe(e,t){if(this[G5])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Zk.ServerResponse&&this[jw].add(e),super.pipe(e,t)}unpipe(e){return e instanceof Zk.ServerResponse&&this[jw].delete(e),super.unpipe(e),this}};Yt.default=$w});var pC=w(io=>{"use strict";var vPe=io&&io.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),xPe=io&&io.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&vPe(e,r,t)};Object.defineProperty(io,"__esModule",{value:!0});io.CancelError=io.ParseError=void 0;var q5=hC(),rR=class extends q5.RequestError{constructor(e,t){let{options:i}=t.request;super(`${e.message} in "${i.url.toString()}"`,e,t.request),this.name="ParseError"}};io.ParseError=rR;var iR=class extends q5.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};io.CancelError=iR;xPe(hC(),io)});var W5=w(nR=>{"use strict";Object.defineProperty(nR,"__esModule",{value:!0});var J5=pC(),PPe=(r,e,t,i)=>{let{rawBody:n}=r;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":t(n.toString());if(e==="buffer")return n;throw new J5.ParseError({message:`Unknown body type '${e}'`,name:"Error"},r)}catch(s){throw new J5.ParseError(s,r)}};nR.default=PPe});var sR=w(YA=>{"use strict";var DPe=YA&&YA.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),kPe=YA&&YA.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&DPe(e,r,t)};Object.defineProperty(YA,"__esModule",{value:!0});var RPe=J("events"),FPe=Ta(),NPe=W8(),eB=pC(),z5=W5(),V5=hC(),LPe=Hk(),TPe=zk(),X5=Vk(),OPe=["request","response","redirect","uploadProgress","downloadProgress"];function _5(r){let e,t,i=new RPe.EventEmitter,n=new NPe((o,a,l)=>{let c=u=>{let g=new V5.default(void 0,r);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new eB.CancelError(g))),e=g,g.once("response",async p=>{var C;if(p.retryCount=u,p.request.aborted)return;let y;try{y=await TPe.default(g),p.rawBody=y}catch{return}if(g._isAboutToError)return;let B=((C=p.headers["content-encoding"])!==null&&C!==void 0?C:"").toLowerCase(),v=["gzip","deflate","br"].includes(B),{options:D}=g;if(v&&!D.decompress)p.body=y;else try{p.body=z5.default(p,D.responseType,D.parseJson,D.encoding)}catch(L){if(p.body=y.toString(),X5.isResponseOk(p)){g._beforeError(L);return}}try{for(let[L,H]of D.hooks.afterResponse.entries())p=await H(p,async j=>{let $=V5.default.normalizeArguments(void 0,{...j,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},D);$.hooks.afterResponse=$.hooks.afterResponse.slice(0,L);for(let W of $.hooks.beforeRetry)await W($);let V=_5($);return l(()=>{V.catch(()=>{}),V.cancel()}),V})}catch(L){g._beforeError(new eB.RequestError(L.message,L,g));return}if(!X5.isResponseOk(p)){g._beforeError(new eB.HTTPError(p));return}t=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:C}=g;if(p instanceof eB.HTTPError&&!C.throwHttpErrors){let{response:y}=p;o(g.options.resolveBodyOnly?y.body:y);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,C)=>{var y,B;if(h===((y=C.request)===null||y===void 0?void 0:y.options.body)&&FPe.default.nodeStream((B=C.request)===null||B===void 0?void 0:B.options.body)){f(C);return}c(p)}),LPe.default(g,i,OPe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=t.request;return z5.default(t,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}YA.default=_5;kPe(pC(),YA)});var Z5=w(oR=>{"use strict";Object.defineProperty(oR,"__esModule",{value:!0});var MPe=pC();function KPe(r,...e){let t=(async()=>{if(r instanceof MPe.RequestError)try{for(let n of e)if(n)for(let s of n)r=await s(r)}catch(n){r=n}throw r})(),i=()=>t;return t.json=i,t.text=i,t.buffer=i,t.on=i,t}oR.default=KPe});var tV=w(aR=>{"use strict";Object.defineProperty(aR,"__esModule",{value:!0});var $5=Ta();function eV(r){for(let e of Object.values(r))($5.default.plainObject(e)||$5.default.array(e))&&eV(e);return Object.freeze(r)}aR.default=eV});var iV=w(rV=>{"use strict";Object.defineProperty(rV,"__esModule",{value:!0})});var AR=w(Is=>{"use strict";var UPe=Is&&Is.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),HPe=Is&&Is.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&UPe(e,r,t)};Object.defineProperty(Is,"__esModule",{value:!0});Is.defaultHandler=void 0;var nV=Ta(),Es=sR(),GPe=Z5(),rB=hC(),YPe=tV(),jPe={RequestError:Es.RequestError,CacheError:Es.CacheError,ReadError:Es.ReadError,HTTPError:Es.HTTPError,MaxRedirectsError:Es.MaxRedirectsError,TimeoutError:Es.TimeoutError,ParseError:Es.ParseError,CancelError:Es.CancelError,UnsupportedProtocolError:Es.UnsupportedProtocolError,UploadError:Es.UploadError},qPe=async r=>new Promise(e=>{setTimeout(e,r)}),{normalizeArguments:tB}=rB.default,sV=(...r)=>{let e;for(let t of r)e=tB(void 0,t,e);return e},JPe=r=>r.isStream?new rB.default(void 0,r):Es.default(r),WPe=r=>"defaults"in r&&"options"in r.defaults,zPe=["get","post","put","patch","head","delete"];Is.defaultHandler=(r,e)=>e(r);var oV=(r,e)=>{if(r)for(let t of r)t(e)},aV=r=>{r._rawHandlers=r.handlers,r.handlers=r.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>r.handlers[l++](u,l===r.handlers.length?JPe:c);if(nV.default.plainObject(i)){let u={...i,...n};rB.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{oV(r.options.hooks.init,n),oV((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=tB(i,n,s!=null?s:r.options);if(g[rB.kIsNormalizedAlready]=!0,u)throw new Es.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return GPe.default(u,r.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[r.options],s=[...r._rawHandlers],o;for(let a of i)WPe(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==Is.defaultHandler),s.length===0&&s.push(Is.defaultHandler),aV({options:sV(...n),handlers:s,mutableDefaults:Boolean(o)})};let t=async function*(i,n){let s=tB(i,n,r.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!nV.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of t(i,n))s.push(o);return s},e.paginate.each=t,e.stream=(i,n)=>e(i,{...n,isStream:!0});for(let i of zPe)e[i]=(n,s)=>e(n,{...s,method:i}),e.stream[i]=(n,s)=>e(n,{...s,method:i,isStream:!0});return Object.assign(e,jPe),Object.defineProperty(e,"defaults",{value:r.mutableDefaults?r:YPe.default(r),writable:r.mutableDefaults,configurable:r.mutableDefaults,enumerable:!0}),e.mergeOptions=sV,e};Is.default=aV;HPe(iV(),Is)});var nB=w((Oa,iB)=>{"use strict";var VPe=Oa&&Oa.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),AV=Oa&&Oa.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&VPe(e,r,t)};Object.defineProperty(Oa,"__esModule",{value:!0});var XPe=J("url"),lV=AR(),_Pe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:r})=>r},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:r=>r.request.options.responseType==="json"?r.body:JSON.parse(r.body),paginate:r=>{if(!Reflect.has(r.headers,"link"))return!1;let e=r.headers.link.split(","),t;for(let i of e){let n=i.split(";");if(n[1].includes("next")){t=n[0].trimStart().trim(),t=t.slice(1,-1);break}}return t?{url:new XPe.URL(t)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:r=>JSON.parse(r),stringifyJson:r=>JSON.stringify(r),cacheOptions:{}},handlers:[lV.defaultHandler],mutableDefaults:!1},lR=lV.default(_Pe);Oa.default=lR;iB.exports=lR;iB.exports.default=lR;iB.exports.__esModule=!0;AV(AR(),Oa);AV(sR(),Oa)});var fV=w(Of=>{"use strict";var Jit=J("net"),ZPe=J("tls"),cR=J("http"),cV=J("https"),$Pe=J("events"),Wit=J("assert"),eDe=J("util");Of.httpOverHttp=tDe;Of.httpsOverHttp=rDe;Of.httpOverHttps=iDe;Of.httpsOverHttps=nDe;function tDe(r){var e=new Ma(r);return e.request=cR.request,e}function rDe(r){var e=new Ma(r);return e.request=cR.request,e.createSocket=uV,e.defaultPort=443,e}function iDe(r){var e=new Ma(r);return e.request=cV.request,e}function nDe(r){var e=new Ma(r);return e.request=cV.request,e.createSocket=uV,e.defaultPort=443,e}function Ma(r){var e=this;e.options=r||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||cR.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=gV(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ma.prototype.createSocket=function(e,t){var i=this,n={};i.sockets.push(n);var s=uR({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),jA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){jA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){jA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return jA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,t(f)}function u(g){o.removeAllListeners(),jA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ma.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function uV(r,e){var t=this;Ma.prototype.createSocket.call(t,r,function(i){var n=r.request.getHeader("host"),s=uR({},t.options,{socket:i,servername:n?n.replace(/:.*$/,""):r.host}),o=ZPe.connect(0,s);t.sockets[t.sockets.indexOf(i)]=o,e(o)})}function gV(r,e,t){return typeof r=="string"?{host:r,port:e,localAddress:t}:r}function uR(r){for(var e=1,t=arguments.length;e{hV.exports=fV()});var SV=w((aB,CR)=>{var bV=Object.assign({},J("fs")),dR=function(){var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(e){e=e||{};var t=typeof e<"u"?e:{},i,n;t.ready=new Promise(function(d,E){i=d,n=E});var s={},o;for(o in t)t.hasOwnProperty(o)&&(s[o]=t[o]);var a=[],l="./this.program",c=function(d,E){throw E},u=!1,g=!0,f="";function h(d){return t.locateFile?t.locateFile(d,f):f+d}var p,C,y,B;g&&(u?f=J("path").dirname(f)+"/":f=__dirname+"/",p=function(E,I){var k=ca(E);return k?I?k:k.toString():(y||(y=bV),B||(B=J("path")),E=B.normalize(E),y.readFileSync(E,I?null:"utf8"))},C=function(E){var I=p(E,!0);return I.buffer||(I=new Uint8Array(I)),re(I.buffer),I},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),a=process.argv.slice(2),c=function(d){process.exit(d)},t.inspect=function(){return"[Emscripten Module object]"});var v=t.print||console.log.bind(console),D=t.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(t[o]=s[o]);s=null,t.arguments&&(a=t.arguments),t.thisProgram&&(l=t.thisProgram),t.quit&&(c=t.quit);var L=16;function H(d,E){return E||(E=L),Math.ceil(d/E)*E}var j=0,$=function(d){j=d},V;t.wasmBinary&&(V=t.wasmBinary);var W=t.noExitRuntime||!0;typeof WebAssembly!="object"&&wr("no native wasm support detected");function Z(d,E,I){switch(E=E||"i8",E.charAt(E.length-1)==="*"&&(E="i32"),E){case"i1":return ne[d>>0];case"i8":return ne[d>>0];case"i16":return pe[d>>1];case"i32":return de[d>>2];case"i64":return de[d>>2];case"float":return Pt[d>>2];case"double":return It[d>>3];default:wr("invalid type for getValue: "+E)}return null}var A,ae=!1,ge;function re(d,E){d||wr("Assertion failed: "+E)}function O(d){var E=t["_"+d];return re(E,"Cannot call unknown function "+d+", make sure it is exported"),E}function F(d,E,I,k,T){var _={string:function(it){var Et=0;if(it!=null&&it!==0){var Qe=(it.length<<2)+1;Et=Q(Qe),oe(it,Et,Qe)}return Et},array:function(it){var Et=Q(it.length);return fe(it,Et),Et}};function te(it){return E==="string"?Fe(it):E==="boolean"?Boolean(it):it}var Be=O(d),me=[],Je=0;if(k)for(var nt=0;nt=k);)++T;if(T-E>16&&d.subarray&&he)return he.decode(d.subarray(E,T));for(var _="";E>10,56320|Je&1023)}}return _}function Fe(d,E){return d?ke(Y,d,E):""}function Ne(d,E,I,k){if(!(k>0))return 0;for(var T=I,_=I+k-1,te=0;te=55296&&Be<=57343){var me=d.charCodeAt(++te);Be=65536+((Be&1023)<<10)|me&1023}if(Be<=127){if(I>=_)break;E[I++]=Be}else if(Be<=2047){if(I+1>=_)break;E[I++]=192|Be>>6,E[I++]=128|Be&63}else if(Be<=65535){if(I+2>=_)break;E[I++]=224|Be>>12,E[I++]=128|Be>>6&63,E[I++]=128|Be&63}else{if(I+3>=_)break;E[I++]=240|Be>>18,E[I++]=128|Be>>12&63,E[I++]=128|Be>>6&63,E[I++]=128|Be&63}}return E[I]=0,I-T}function oe(d,E,I){return Ne(d,Y,E,I)}function le(d){for(var E=0,I=0;I=55296&&k<=57343&&(k=65536+((k&1023)<<10)|d.charCodeAt(++I)&1023),k<=127?++E:k<=2047?E+=2:k<=65535?E+=3:E+=4}return E}function we(d){var E=le(d)+1,I=dt(E);return I&&Ne(d,ne,I,E),I}function fe(d,E){ne.set(d,E)}function Ae(d,E){return d%E>0&&(d+=E-d%E),d}var qe,ne,Y,pe,ie,de,tt,Pt,It;function Or(d){qe=d,t.HEAP8=ne=new Int8Array(d),t.HEAP16=pe=new Int16Array(d),t.HEAP32=de=new Int32Array(d),t.HEAPU8=Y=new Uint8Array(d),t.HEAPU16=ie=new Uint16Array(d),t.HEAPU32=tt=new Uint32Array(d),t.HEAPF32=Pt=new Float32Array(d),t.HEAPF64=It=new Float64Array(d)}var ii=t.INITIAL_MEMORY||16777216,gi,hr=[],fi=[],ni=[],Ls=!1;function pr(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)oa(t.preRun.shift());Co(hr)}function Ei(){Ls=!0,!t.noFSInit&&!S.init.initialized&&S.init(),$n.init(),Co(fi)}function _n(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)eg(t.postRun.shift());Co(ni)}function oa(d){hr.unshift(d)}function aA(d){fi.unshift(d)}function eg(d){ni.unshift(d)}var Zn=0,AA=null,aa=null;function up(d){return d}function lA(d){Zn++,t.monitorRunDependencies&&t.monitorRunDependencies(Zn)}function cA(d){if(Zn--,t.monitorRunDependencies&&t.monitorRunDependencies(Zn),Zn==0&&(AA!==null&&(clearInterval(AA),AA=null),aa)){var E=aa;aa=null,E()}}t.preloadedImages={},t.preloadedAudios={};function wr(d){t.onAbort&&t.onAbort(d),d+="",D(d),ae=!0,ge=1,d="abort("+d+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(d);throw n(E),E}var wl="data:application/octet-stream;base64,";function tg(d){return d.startsWith(wl)}var po="data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAgAEUEQCAEQQA2AhwMAQsgBCgCDEEANgIAIAQoAgwgBCgCEDYCBCAEKAIMIAQvARo7AQggBCgCDCAELwEYOwEKAkAgBC8BGARAIAQoAhQhASAELwEYIQIjAEEgayIAJAAgACABNgIYIAAgAjYCFCAAQQA2AhACQCAAKAIURQRAIABBADYCHAwBCyAAIAAoAhQQGDYCDCAAKAIMRQRAIAAoAhBBDkEAEBQgAEEANgIcDAELIAAoAgwgACgCGCAAKAIUEBkaIAAgACgCDDYCHAsgACgCHCEBIABBIGokACABIQAgBCgCDCAANgIMIABFBEAgBCgCDBAVIARBADYCHAwDCwwBCyAEKAIMQQA2AgwLIAQgBCgCDDYCHAsgBCgCHCEAIARBIGokACAAC5EBAQV/IAAoAkxBAE4hAyAAKAIAQQFxIgRFBEAgACgCNCIBBEAgASAAKAI4NgI4CyAAKAI4IgIEQCACIAE2AjQLIABBrKABKAIARgRAQaygASACNgIACwsgABClASEBIAAgACgCDBEAACECIAAoAmAiBQRAIAUQFQsCQCAERQRAIAAQFQwBCyADRQ0ACyABIAJyC/kBAQF/IwBBIGsiAiQAIAIgADYCHCACIAE5AxACQCACKAIcRQ0AIAICfAJ8IAIrAxBEAAAAAAAAAABkBEAgAisDEAwBC0QAAAAAAAAAAAtEAAAAAAAA8D9jBEACfCACKwMQRAAAAAAAAAAAZARAIAIrAxAMAQtEAAAAAAAAAAALDAELRAAAAAAAAPA/CyACKAIcKwMoIAIoAhwrAyChoiACKAIcKwMgoDkDCCACKAIcKwMQIAIrAwggAigCHCsDGKFjRQ0AIAIoAhwoAgAgAisDCCACKAIcKAIMIAIoAhwoAgQRFgAgAigCHCACKwMIOQMYCyACQSBqJAAL4QUCAn8BfiMAQTBrIgQkACAEIAA2AiQgBCABNgIgIAQgAjYCHCAEIAM2AhgCQCAEKAIkRQRAIARCfzcDKAwBCyAEKAIgRQRAIAQoAhhBEkEAEBQgBEJ/NwMoDAELIAQoAhxBgyBxBEAgBEEVQRYgBCgCHEEBcRs2AhQgBEIANwMAA0AgBCkDACAEKAIkKQMwVARAIAQgBCgCJCAEKQMAIAQoAhwgBCgCGBBNNgIQIAQoAhAEQCAEKAIcQQJxBEAgBAJ/IAQoAhAiARAuQQFqIQADQEEAIABFDQEaIAEgAEEBayIAaiICLQAAQS9HDQALIAILNgIMIAQoAgwEQCAEIAQoAgxBAWo2AhALCyAEKAIgIAQoAhAgBCgCFBEDAEUEQCMAQRBrIgAgBCgCGDYCDCAAKAIMBEAgACgCDEEANgIAIAAoAgxBADYCBAsgBCAEKQMANwMoDAULCyAEIAQpAwBCAXw3AwAMAQsLIAQoAhhBCUEAEBQgBEJ/NwMoDAELIAQoAiQoAlAhASAEKAIgIQIgBCgCHCEDIAQoAhghBSMAQTBrIgAkACAAIAE2AiQgACACNgIgIAAgAzYCHCAAIAU2AhgCQAJAIAAoAiQEQCAAKAIgDQELIAAoAhhBEkEAEBQgAEJ/NwMoDAELIAAoAiQpAwhCAFIEQCAAIAAoAiAQczYCFCAAIAAoAhQgACgCJCgCAHA2AhAgACAAKAIkKAIQIAAoAhBBAnRqKAIANgIMA0ACQCAAKAIMRQ0AIAAoAiAgACgCDCgCABBbBEAgACAAKAIMKAIYNgIMDAIFIAAoAhxBCHEEQCAAKAIMKQMIQn9SBEAgACAAKAIMKQMINwMoDAYLDAILIAAoAgwpAxBCf1IEQCAAIAAoAgwpAxA3AygMBQsLCwsLIAAoAhhBCUEAEBQgAEJ/NwMoCyAAKQMoIQYgAEEwaiQAIAQgBjcDKAsgBCkDKCEGIARBMGokACAGC9QDAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQAkACQCADKAIYBEAgAygCFA0BCyADKAIQQRJBABAUIANBADoAHwwBCyADKAIYKQMIQgBSBEAgAyADKAIUEHM2AgwgAyADKAIMIAMoAhgoAgBwNgIIIANBADYCACADIAMoAhgoAhAgAygCCEECdGooAgA2AgQDQCADKAIEBEACQCADKAIEKAIcIAMoAgxHDQAgAygCFCADKAIEKAIAEFsNAAJAIAMoAgQpAwhCf1EEQAJAIAMoAgAEQCADKAIAIAMoAgQoAhg2AhgMAQsgAygCGCgCECADKAIIQQJ0aiADKAIEKAIYNgIACyADKAIEEBUgAygCGCIAIAApAwhCAX03AwgCQCADKAIYIgApAwi6IAAoAgC4RHsUrkfheoQ/omNFDQAgAygCGCgCAEGAAk0NACADKAIYIAMoAhgoAgBBAXYgAygCEBBaQQFxRQRAIANBADoAHwwICwsMAQsgAygCBEJ/NwMQCyADQQE6AB8MBAsgAyADKAIENgIAIAMgAygCBCgCGDYCBAwBCwsLIAMoAhBBCUEAEBQgA0EAOgAfCyADLQAfQQFxIQAgA0EgaiQAIAAL3wIBAX8jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI2AiACQCADKAIkIAMoAigoAgBGBEAgA0EBOgAvDAELIAMgAygCJEEEEH8iADYCHCAARQRAIAMoAiBBDkEAEBQgA0EAOgAvDAELIAMoAigpAwhCAFIEQCADQQA2AhgDQCADKAIYIAMoAigoAgBPRQRAIAMgAygCKCgCECADKAIYQQJ0aigCADYCFANAIAMoAhQEQCADIAMoAhQoAhg2AhAgAyADKAIUKAIcIAMoAiRwNgIMIAMoAhQgAygCHCADKAIMQQJ0aigCADYCGCADKAIcIAMoAgxBAnRqIAMoAhQ2AgAgAyADKAIQNgIUDAELCyADIAMoAhhBAWo2AhgMAQsLCyADKAIoKAIQEBUgAygCKCADKAIcNgIQIAMoAiggAygCJDYCACADQQE6AC8LIAMtAC9BAXEhACADQTBqJAAgAAtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvRCQECfyMAQSBrIgEkACABIAA2AhwgASABKAIcKAIsNgIQA0AgASABKAIcKAI8IAEoAhwoAnRrIAEoAhwoAmxrNgIUIAEoAhwoAmwgASgCECABKAIcKAIsQYYCa2pPBEAgASgCHCgCOCABKAIcKAI4IAEoAhBqIAEoAhAgASgCFGsQGRogASgCHCIAIAAoAnAgASgCEGs2AnAgASgCHCIAIAAoAmwgASgCEGs2AmwgASgCHCIAIAAoAlwgASgCEGs2AlwjAEEgayIAIAEoAhw2AhwgACAAKAIcKAIsNgIMIAAgACgCHCgCTDYCGCAAIAAoAhwoAkQgACgCGEEBdGo2AhADQCAAIAAoAhBBAmsiAjYCECAAIAIvAQA2AhQgACgCEAJ/IAAoAhQgACgCDE8EQCAAKAIUIAAoAgxrDAELQQALOwEAIAAgACgCGEEBayICNgIYIAINAAsgACAAKAIMNgIYIAAgACgCHCgCQCAAKAIYQQF0ajYCEANAIAAgACgCEEECayICNgIQIAAgAi8BADYCFCAAKAIQAn8gACgCFCAAKAIMTwRAIAAoAhQgACgCDGsMAQtBAAs7AQAgACAAKAIYQQFrIgI2AhggAg0ACyABIAEoAhAgASgCFGo2AhQLIAEoAhwoAgAoAgQEQCABIAEoAhwoAgAgASgCHCgCdCABKAIcKAI4IAEoAhwoAmxqaiABKAIUEHY2AhggASgCHCIAIAEoAhggACgCdGo2AnQgASgCHCgCdCABKAIcKAK0LWpBA08EQCABIAEoAhwoAmwgASgCHCgCtC1rNgIMIAEoAhwgASgCHCgCOCABKAIMai0AADYCSCABKAIcIAEoAhwoAlQgASgCHCgCOCABKAIMQQFqai0AACABKAIcKAJIIAEoAhwoAlh0c3E2AkgDQCABKAIcKAK0LQRAIAEoAhwgASgCHCgCVCABKAIcKAI4IAEoAgxBAmpqLQAAIAEoAhwoAkggASgCHCgCWHRzcTYCSCABKAIcKAJAIAEoAgwgASgCHCgCNHFBAXRqIAEoAhwoAkQgASgCHCgCSEEBdGovAQA7AQAgASgCHCgCRCABKAIcKAJIQQF0aiABKAIMOwEAIAEgASgCDEEBajYCDCABKAIcIgAgACgCtC1BAWs2ArQtIAEoAhwoAnQgASgCHCgCtC1qQQNPDQELCwsgASgCHCgCdEGGAkkEfyABKAIcKAIAKAIEQQBHBUEAC0EBcQ0BCwsgASgCHCgCwC0gASgCHCgCPEkEQCABIAEoAhwoAmwgASgCHCgCdGo2AggCQCABKAIcKALALSABKAIISQRAIAEgASgCHCgCPCABKAIIazYCBCABKAIEQYICSwRAIAFBggI2AgQLIAEoAhwoAjggASgCCGpBACABKAIEEDMgASgCHCABKAIIIAEoAgRqNgLALQwBCyABKAIcKALALSABKAIIQYICakkEQCABIAEoAghBggJqIAEoAhwoAsAtazYCBCABKAIEIAEoAhwoAjwgASgCHCgCwC1rSwRAIAEgASgCHCgCPCABKAIcKALALWs2AgQLIAEoAhwoAjggASgCHCgCwC1qQQAgASgCBBAzIAEoAhwiACABKAIEIAAoAsAtajYCwC0LCwsgAUEgaiQAC4YFAQF/IwBBIGsiBCQAIAQgADYCHCAEIAE2AhggBCACNgIUIAQgAzYCECAEQQM2AgwCQCAEKAIcKAK8LUEQIAQoAgxrSgRAIAQgBCgCEDYCCCAEKAIcIgAgAC8BuC0gBCgCCEH//wNxIAQoAhwoArwtdHI7AbgtIAQoAhwvAbgtQf8BcSEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhwvAbgtQQh2IQEgBCgCHCgCCCECIAQoAhwiAygCFCEAIAMgAEEBajYCFCAAIAJqIAE6AAAgBCgCHCAEKAIIQf//A3FBECAEKAIcKAK8LWt1OwG4LSAEKAIcIgAgACgCvC0gBCgCDEEQa2o2ArwtDAELIAQoAhwiACAALwG4LSAEKAIQQf//A3EgBCgCHCgCvC10cjsBuC0gBCgCHCIAIAQoAgwgACgCvC1qNgK8LQsgBCgCHBC9ASAEKAIUQf8BcSEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhRB//8DcUEIdiEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhRBf3NB/wFxIQEgBCgCHCgCCCECIAQoAhwiAygCFCEAIAMgAEEBajYCFCAAIAJqIAE6AAAgBCgCFEF/c0H//wNxQQh2IQEgBCgCHCgCCCECIAQoAhwiAygCFCEAIAMgAEEBajYCFCAAIAJqIAE6AAAgBCgCHCgCCCAEKAIcKAIUaiAEKAIYIAQoAhQQGRogBCgCHCIAIAQoAhQgACgCFGo2AhQgBEEgaiQAC6sBAQF/IwBBEGsiASQAIAEgADYCDCABKAIMKAIIBEAgASgCDCgCCBAbIAEoAgxBADYCCAsCQCABKAIMKAIERQ0AIAEoAgwoAgQoAgBBAXFFDQAgASgCDCgCBCgCEEF+Rw0AIAEoAgwoAgQiACAAKAIAQX5xNgIAIAEoAgwoAgQoAgBFBEAgASgCDCgCBBA3IAEoAgxBADYCBAsLIAEoAgxBADoADCABQRBqJAAL8QMBAX8jAEHQAGsiCCQAIAggADYCSCAIIAE3A0AgCCACNwM4IAggAzYCNCAIIAQ6ADMgCCAFNgIsIAggBjcDICAIIAc2AhwCQAJAAkAgCCgCSEUNACAIKQNAIAgpA0AgCCkDOHxWDQAgCCgCLA0BIAgpAyBQDQELIAgoAhxBEkEAEBQgCEEANgJMDAELIAhBgAEQGCIANgIYIABFBEAgCCgCHEEOQQAQFCAIQQA2AkwMAQsgCCgCGCAIKQNANwMAIAgoAhggCCkDQCAIKQM4fDcDCCAIKAIYQShqEDsgCCgCGCAILQAzOgBgIAgoAhggCCgCLDYCECAIKAIYIAgpAyA3AxgjAEEQayIAIAgoAhhB5ABqNgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIwBBEGsiACAIKAJINgIMIAAoAgwpAxhC/4EBgyEBIAhBfzYCCCAIQQc2AgQgCEEONgIAQRAgCBA0IAGEIQEgCCgCGCABNwNwIAgoAhggCCgCGCkDcELAAINCAFI6AHggCCgCNARAIAgoAhhBKGogCCgCNCAIKAIcEIQBQQBIBEAgCCgCGBAVIAhBADYCTAwCCwsgCCAIKAJIQQEgCCgCGCAIKAIcEIEBNgJMCyAIKAJMIQAgCEHQAGokACAAC9MEAQJ/IwBBMGsiAyQAIAMgADYCJCADIAE3AxggAyACNgIUAkAgAygCJCgCQCADKQMYp0EEdGooAgBFBEAgAygCFEEUQQAQFCADQgA3AygMAQsgAyADKAIkKAJAIAMpAxinQQR0aigCACkDSDcDCCADKAIkKAIAIAMpAwhBABAnQQBIBEAgAygCFCADKAIkKAIAEBcgA0IANwMoDAELIAMoAiQoAgAhAiADKAIUIQQjAEEwayIAJAAgACACNgIoIABBgAI7ASYgACAENgIgIAAgAC8BJkGAAnFBAEc6ABsgAEEeQS4gAC0AG0EBcRs2AhwCQCAAKAIoQRpBHCAALQAbQQFxG6xBARAnQQBIBEAgACgCICAAKAIoEBcgAEF/NgIsDAELIAAgACgCKEEEQQYgAC0AG0EBcRusIABBDmogACgCIBBCIgI2AgggAkUEQCAAQX82AiwMAQsgAEEANgIUA0AgACgCFEECQQMgAC0AG0EBcRtIBEAgACAAKAIIEB1B//8DcSAAKAIcajYCHCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEIEBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAgGiABKAIMQQA2AiQLIAFBEGokAAv/AgEBfyMAQTBrIgUkACAFIAA2AiggBSABNgIkIAUgAjYCICAFIAM6AB8gBSAENgIYAkACQCAFKAIgDQAgBS0AH0EBcQ0AIAVBADYCLAwBCyAFIAUoAiAgBS0AH0EBcWoQGDYCFCAFKAIURQRAIAUoAhhBDkEAEBQgBUEANgIsDAELAkAgBSgCKARAIAUgBSgCKCAFKAIgrRAeNgIQIAUoAhBFBEAgBSgCGEEOQQAQFCAFKAIUEBUgBUEANgIsDAMLIAUoAhQgBSgCECAFKAIgEBkaDAELIAUoAiQgBSgCFCAFKAIgrSAFKAIYEGRBAEgEQCAFKAIUEBUgBUEANgIsDAILCyAFLQAfQQFxBEAgBSgCFCAFKAIgakEAOgAAIAUgBSgCFDYCDANAIAUoAgwgBSgCFCAFKAIgakkEQCAFKAIMLQAARQRAIAUoAgxBIDoAAAsgBSAFKAIMQQFqNgIMDAELCwsgBSAFKAIUNgIsCyAFKAIsIQAgBUEwaiQAIAALwgEBAX8jAEEwayIEJAAgBCAANgIoIAQgATYCJCAEIAI3AxggBCADNgIUAkAgBCkDGEL///////////8AVgRAIAQoAhRBFEEAEBQgBEF/NgIsDAELIAQgBCgCKCAEKAIkIAQpAxgQKyICNwMIIAJCAFMEQCAEKAIUIAQoAigQFyAEQX82AiwMAQsgBCkDCCAEKQMYUwRAIAQoAhRBEUEAEBQgBEF/NgIsDAELIARBADYCLAsgBCgCLCEAIARBMGokACAAC3cBAX8jAEEQayICIAA2AgggAiABNgIEAkACQAJAIAIoAggpAyhC/////w9aDQAgAigCCCkDIEL/////D1oNACACKAIEQYAEcUUNASACKAIIKQNIQv////8PVA0BCyACQQE6AA8MAQsgAkEAOgAPCyACLQAPQQFxC/4BAQF/IwBBIGsiBSQAIAUgADYCGCAFIAE2AhQgBSACOwESIAVBADsBECAFIAM2AgwgBSAENgIIIAVBADYCBAJAA0AgBSgCGARAAkAgBSgCGC8BCCAFLwESRw0AIAUoAhgoAgQgBSgCDHFBgAZxRQ0AIAUoAgQgBS8BEEgEQCAFIAUoAgRBAWo2AgQMAQsgBSgCFARAIAUoAhQgBSgCGC8BCjsBAAsgBSgCGC8BCgRAIAUgBSgCGCgCDDYCHAwECyAFQZAVNgIcDAMLIAUgBSgCGCgCADYCGAwBCwsgBSgCCEEJQQAQFCAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGdBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIEIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQUwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQUUH//wNxrXxCHnw3A1ggAykDWCADKQNgVgRAIAMgAykDWDcDYAsgAykDYCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAygChAEoAgAgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNIQQAQJ0EASARAIAMoAnwgAygChAEoAgAQFyADQn83A4gBDAMLIAMgAygChAEoAgBBAEEBIAMoAnwQjAFCf1EEQCADEFIgA0J/NwOIAQwDCwJ/IAMoAoABKAIAIAMpA3CnQQR0aigCACEBIwBBEGsiACQAIAAgATYCCCAAIAM2AgQCQAJAAkAgACgCCC8BCiAAKAIELwEKSA0AIAAoAggoAhAgACgCBCgCEEcNACAAKAIIKAIUIAAoAgQoAhRHDQAgACgCCCgCMCAAKAIEKAIwEIYBDQELIABBfzYCDAwBCwJAAkAgACgCCCgCGCAAKAIEKAIYRw0AIAAoAggpAyAgACgCBCkDIFINACAAKAIIKQMoIAAoAgQpAyhRDQELAkACQCAAKAIELwEMQQhxRQ0AIAAoAgQoAhgNACAAKAIEKQMgQgBSDQAgACgCBCkDKFANAQsgAEF/NgIMDAILCyAAQQA2AgwLIAAoAgwhASAAQRBqJAAgAQsEQCADKAJ8QRVBABAUIAMQUiADQn83A4gBDAMFIAMoAoABKAIAIAMpA3CnQQR0aigCACgCNCADKAI0EJUBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQUiADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQL1AQBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAygCECEBIwBBEGsiACQAIAAgATYCCCAAQdgAEBg2AgQCQCAAKAIERQRAIAAoAghBDkEAEBQgAEEANgIMDAELIAAoAgghAiMAQRBrIgEkACABIAI2AgggAUEYEBgiAjYCBAJAIAJFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRCADcDCCABKAIEQQA2AhAgASABKAIENgIMCyABKAIMIQIgAUEQaiQAIAAoAgQgAjYCUCACRQRAIAAoAgQQFSAAQQA2AgwMAQsgACgCBEEANgIAIAAoAgRBADYCBCMAQRBrIgEgACgCBEEIajYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIEQQA2AhggACgCBEEANgIUIAAoAgRBADYCHCAAKAIEQQA2AiQgACgCBEEANgIgIAAoAgRBADoAKCAAKAIEQgA3AzggACgCBEIANwMwIAAoAgRBADYCQCAAKAIEQQA2AkggACgCBEEANgJEIAAoAgRBADYCTCAAKAIEQQA2AlQgACAAKAIENgIMCyAAKAIMIQEgAEEQaiQAIAMgASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFCAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigCTEF/TARAIAIgASAAEKABDAELIAIgASAAEKABC0EASARAIAQoAghBBEG0mwEoAgAQFCAEQX82AhwMAQsgBEEANgIcCyAEKAIcIQAgBEEgaiQAIAALJABBACAAEAUiACAAQRtGGyIABH9BtJsBIAA2AgBBAAVBAAsaC3ABAX8jAEEQayIDJAAgAwJ/IAFBwABxRQRAQQAgAUGAgIQCcUGAgIQCRw0BGgsgAyACQQRqNgIMIAIoAgALNgIAIAAgAUGAgAJyIAMQECIAQYFgTwRAQbSbAUEAIABrNgIAQX8hAAsgA0EQaiQAIAALMwEBfwJ/IAAQByIBQWFGBEAgABARIQELIAFBgWBPCwR/QbSbAUEAIAFrNgIAQX8FIAELC2kBAn8CQCAAKAIUIAAoAhxNDQAgAEEAQQAgACgCJBEBABogACgCFA0AQX8PCyAAKAIEIgEgACgCCCICSQRAIAAgASACa6xBASAAKAIoEQ8AGgsgAEEANgIcIABCADcDECAAQgA3AgRBAAvaAwEGfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiBCQAIARBCGpBkIcBQZABEBkaIAQgADYCNCAEIAA2AhwgBEF+IABrIgNB/////wcgA0H/////B0kbIgY2AjggBCAAIAZqIgA2AiQgBCAANgIYIARBCGohACMAQdABayIDJAAgAyACNgLMASADQaABakEAQSgQMyADIAMoAswBNgLIAQJAQQAgASADQcgBaiADQdAAaiADQaABahBwQQBIDQAgACgCTEEATiEHIAAoAgAhAiAALABKQQBMBEAgACACQV9xNgIACyACQSBxIQgCfyAAKAIwBEAgACABIANByAFqIANB0ABqIANBoAFqEHAMAQsgAEHQADYCMCAAIANB0ABqNgIQIAAgAzYCHCAAIAM2AhQgACgCLCECIAAgAzYCLCAAIAEgA0HIAWogA0HQAGogA0GgAWoQcCACRQ0AGiAAQQBBACAAKAIkEQEAGiAAQQA2AjAgACACNgIsIABBADYCHCAAQQA2AhAgACgCFBogAEEANgIUQQALGiAAIAAoAgAgCHI2AgAgB0UNAAsgA0HQAWokACAGBEAgBCgCHCIAIAAgBCgCGEZrQQA6AAALIARBoAFqJAAgBUEQaiQAC4wSAg9/AX4jAEHQAGsiBSQAIAUgATYCTCAFQTdqIRMgBUE4aiEQQQAhAQNAAkAgDUEASA0AQf////8HIA1rIAFIBEBBtJsBQT02AgBBfyENDAELIAEgDWohDQsgBSgCTCIHIQECQAJAAkACQAJAAkACQAJAIAUCfwJAIActAAAiBgRAA0ACQAJAIAZB/wFxIgZFBEAgASEGDAELIAZBJUcNASABIQYDQCABLQABQSVHDQEgBSABQQJqIgg2AkwgBkEBaiEGIAEtAAIhDiAIIQEgDkElRg0ACwsgBiAHayEBIAAEQCAAIAcgARAiCyABDQ0gBSgCTCEBIAUoAkwsAAFBMGtBCk8NAyABLQACQSRHDQMgASwAAUEwayEPQQEhESABQQNqDAQLIAUgAUEBaiIINgJMIAEtAAEhBiAIIQEMAAsACyANIQsgAA0IIBFFDQJBASEBA0AgBCABQQJ0aigCACIABEAgAyABQQN0aiAAIAIQqAFBASELIAFBAWoiAUEKRw0BDAoLC0EBIQsgAUEKTw0IA0AgBCABQQJ0aigCAA0IIAFBAWoiAUEKRw0ACwwIC0F/IQ8gAUEBagsiATYCTEEAIQgCQCABLAAAIgxBIGsiBkEfSw0AQQEgBnQiBkGJ0QRxRQ0AA0ACQCAFIAFBAWoiCDYCTCABLAABIgxBIGsiAUEgTw0AQQEgAXQiAUGJ0QRxRQ0AIAEgBnIhBiAIIQEMAQsLIAghASAGIQgLAkAgDEEqRgRAIAUCfwJAIAEsAAFBMGtBCk8NACAFKAJMIgEtAAJBJEcNACABLAABQQJ0IARqQcABa0EKNgIAIAEsAAFBA3QgA2pBgANrKAIAIQpBASERIAFBA2oMAQsgEQ0IQQAhEUEAIQogAARAIAIgAigCACIBQQRqNgIAIAEoAgAhCgsgBSgCTEEBagsiATYCTCAKQX9KDQFBACAKayEKIAhBgMAAciEIDAELIAVBzABqEKcBIgpBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQpwEhCSAFKAJMIQELQQAhBgNAIAYhEkF/IQsgASwAAEHBAGtBOUsNByAFIAFBAWoiDDYCTCABLAAAIQYgDCEBIAYgEkE6bGpB74IBai0AACIGQQFrQQhJDQALIAZBE0YNAiAGRQ0GIA9BAE4EQCAEIA9BAnRqIAY2AgAgBSADIA9BA3RqKQMANwNADAQLIAANAQtBACELDAULIAVBQGsgBiACEKgBIAUoAkwhDAwCCyAPQX9KDQMLQQAhASAARQ0ECyAIQf//e3EiDiAIIAhBgMAAcRshBkEAIQtBpAghDyAQIQgCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAMQQFrLAAAIgFBX3EgASABQQ9xQQNGGyABIBIbIgFB2ABrDiEEEhISEhISEhIOEg8GDg4OEgYSEhISAgUDEhIJEgESEgQACwJAIAFBwQBrDgcOEgsSDg4OAAsgAUHTAEYNCQwRCyAFKQNAIRRBpAgMBQtBACEBAkACQAJAAkACQAJAAkAgEkH/AXEOCAABAgMEFwUGFwsgBSgCQCANNgIADBYLIAUoAkAgDTYCAAwVCyAFKAJAIA2sNwMADBQLIAUoAkAgDTsBAAwTCyAFKAJAIA06AAAMEgsgBSgCQCANNgIADBELIAUoAkAgDaw3AwAMEAsgCUEIIAlBCEsbIQkgBkEIciEGQfgAIQELIBAhByABQSBxIQ4gBSkDQCIUUEUEQANAIAdBAWsiByAUp0EPcUGAhwFqLQAAIA5yOgAAIBRCD1YhDCAUQgSIIRQgDA0ACwsgBSkDQFANAyAGQQhxRQ0DIAFBBHZBpAhqIQ9BAiELDAMLIBAhASAFKQNAIhRQRQRAA0AgAUEBayIBIBSnQQdxQTByOgAAIBRCB1YhByAUQgOIIRQgBw0ACwsgASEHIAZBCHFFDQIgCSAQIAdrIgFBAWogASAJSBshCQwCCyAFKQNAIhRCf1cEQCAFQgAgFH0iFDcDQEEBIQtBpAgMAQsgBkGAEHEEQEEBIQtBpQgMAQtBpghBpAggBkEBcSILGwshDyAUIBAQRCEHCyAGQf//e3EgBiAJQX9KGyEGAkAgBSkDQCIUQgBSDQAgCQ0AQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIBIAEgCUgbIQkMCQsgBSgCQCIBQdgSIAEbIgdBACAJEKsBIgEgByAJaiABGyEIIA4hBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIApBACAGECYMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQqgEiB0EASCIODQAgByAJIAFrSw0AIAhBBGohCCAJIAEgB2oiAUsNAQwCCwtBfyELIA4NBQsgAEEgIAogASAGECYgAUUEQEEAIQEMAQtBACEIIAUoAkAhDANAIAwoAgAiB0UNASAFQQRqIAcQqgEiByAIaiIIIAFKDQEgACAFQQRqIAcQIiAMQQRqIQwgASAISw0ACwsgAEEgIAogASAGQYDAAHMQJiAKIAEgASAKSBshAQwFCyAAIAUrA0AgCiAJIAYgAUEXERkAIQEMBAsgBSAFKQNAPAA3QQEhCSATIQcgDiEGDAILQX8hCwsgBUHQAGokACALDwsgAEEgIAsgCCAHayIOIAkgCSAOSBsiDGoiCCAKIAggCkobIgEgCCAGECYgACAPIAsQIiAAQTAgASAIIAZBgIAEcxAmIABBMCAMIA5BABAmIAAgByAOECIgAEEgIAEgCCAGQYDAAHMQJgwACwALkAIBA38CQCABIAIoAhAiBAR/IAQFQQAhBAJ/IAIgAi0ASiIDQQFrIANyOgBKIAIoAgAiA0EIcQRAIAIgA0EgcjYCAEF/DAELIAJCADcCBCACIAIoAiwiAzYCHCACIAM2AhQgAiADIAIoAjBqNgIQQQALDQEgAigCEAsgAigCFCIFa0sEQCACIAAgASACKAIkEQEADwsCfyACLABLQX9KBEAgASEEA0AgASAEIgNFDQIaIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQEAIgQgA0kNAiAAIANqIQAgAigCFCEFIAEgA2sMAQsgAQshBCAFIAAgBBAZGiACIAIoAhQgBGo2AhQgASEECyAEC0gCAX8BfiMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBCADKAIMQQhqEFghBCADQRBqJAAgBAt3AQF/IwBBEGsiASAANgIIIAFChSo3AwACQCABKAIIRQRAIAFBADYCDAwBCwNAIAEoAggtAAAEQCABIAEoAggtAACtIAEpAwBCIX58Qv////8PgzcDACABIAEoAghBAWo2AggMAQsLIAEgASkDAD4CDAsgASgCDAuHBQEBfyMAQTBrIgUkACAFIAA2AiggBSABNgIkIAUgAjcDGCAFIAM2AhQgBSAENgIQAkACQAJAIAUoAihFDQAgBSgCJEUNACAFKQMYQv///////////wBYDQELIAUoAhBBEkEAEBQgBUEAOgAvDAELIAUoAigoAgBFBEAgBSgCKEGAAiAFKAIQEFpBAXFFBEAgBUEAOgAvDAILCyAFIAUoAiQQczYCDCAFIAUoAgwgBSgCKCgCAHA2AgggBSAFKAIoKAIQIAUoAghBAnRqKAIANgIEA0ACQCAFKAIERQ0AAkAgBSgCBCgCHCAFKAIMRw0AIAUoAiQgBSgCBCgCABBbDQACQAJAIAUoAhRBCHEEQCAFKAIEKQMIQn9SDQELIAUoAgQpAxBCf1ENAQsgBSgCEEEKQQAQFCAFQQA6AC8MBAsMAQsgBSAFKAIEKAIYNgIEDAELCyAFKAIERQRAIAVBIBAYIgA2AgQgAEUEQCAFKAIQQQ5BABAUIAVBADoALwwCCyAFKAIEIAUoAiQ2AgAgBSgCBCAFKAIoKAIQIAUoAghBAnRqKAIANgIYIAUoAigoAhAgBSgCCEECdGogBSgCBDYCACAFKAIEIAUoAgw2AhwgBSgCBEJ/NwMIIAUoAigiACAAKQMIQgF8NwMIAkAgBSgCKCIAKQMIuiAAKAIAuEQAAAAAAADoP6JkRQ0AIAUoAigoAgBBgICAgHhPDQAgBSgCKCAFKAIoKAIAQQF0IAUoAhAQWkEBcUUEQCAFQQA6AC8MAwsLCyAFKAIUQQhxBEAgBSgCBCAFKQMYNwMICyAFKAIEIAUpAxg3AxAgBUEBOgAvCyAFLQAvQQFxIQAgBUEwaiQAIAAL1BEBAX8jAEGwAWsiBiQAIAYgADYCqAEgBiABNgKkASAGIAI2AqABIAYgAzYCnAEgBiAENgKYASAGIAU2ApQBIAZBADYCkAEDQCAGKAKQAUEPS0UEQCAGQSBqIAYoApABQQF0akEAOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFPRQRAIAZBIGogBigCpAEgBigCjAFBAXRqLwEAQQF0aiIAIAAvAQBBAWo7AQAgBiAGKAKMAUEBajYCjAEMAQsLIAYgBigCmAEoAgA2AoABIAZBDzYChAEDQAJAIAYoAoQBQQFJDQAgBkEgaiAGKAKEAUEBdGovAQANACAGIAYoAoQBQQFrNgKEAQwBCwsgBigCgAEgBigChAFLBEAgBiAGKAKEATYCgAELAkAgBigChAFFBEAgBkHAADoAWCAGQQE6AFkgBkEAOwFaIAYoApwBIgEoAgAhACABIABBBGo2AgAgACAGQdgAaigBADYBACAGKAKcASIBKAIAIQAgASAAQQRqNgIAIAAgBkHYAGooAQA2AQAgBigCmAFBATYCACAGQQA2AqwBDAELIAZBATYCiAEDQAJAIAYoAogBIAYoAoQBTw0AIAZBIGogBigCiAFBAXRqLwEADQAgBiAGKAKIAUEBajYCiAEMAQsLIAYoAoABIAYoAogBSQRAIAYgBigCiAE2AoABCyAGQQE2AnQgBkEBNgKQAQNAIAYoApABQQ9NBEAgBiAGKAJ0QQF0NgJ0IAYgBigCdCAGQSBqIAYoApABQQF0ai8BAGs2AnQgBigCdEEASARAIAZBfzYCrAEMAwUgBiAGKAKQAUEBajYCkAEMAgsACwsCQCAGKAJ0QQBMDQAgBigCqAEEQCAGKAKEAUEBRg0BCyAGQX82AqwBDAELIAZBADsBAiAGQQE2ApABA0AgBigCkAFBD09FBEAgBigCkAFBAWpBAXQgBmogBigCkAFBAXQgBmovAQAgBkEgaiAGKAKQAUEBdGovAQBqOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFJBEAgBigCpAEgBigCjAFBAXRqLwEABEAgBigClAEhASAGKAKkASAGKAKMASICQQF0ai8BAEEBdCAGaiIDLwEAIQAgAyAAQQFqOwEAIABB//8DcUEBdCABaiACOwEACyAGIAYoAowBQQFqNgKMAQwBCwsCQAJAAkACQCAGKAKoAQ4CAAECCyAGIAYoApQBIgA2AkwgBiAANgJQIAZBFDYCSAwCCyAGQYDwADYCUCAGQcDwADYCTCAGQYECNgJIDAELIAZBgPEANgJQIAZBwPEANgJMIAZBADYCSAsgBkEANgJsIAZBADYCjAEgBiAGKAKIATYCkAEgBiAGKAKcASgCADYCVCAGIAYoAoABNgJ8IAZBADYCeCAGQX82AmAgBkEBIAYoAoABdDYCcCAGIAYoAnBBAWs2AlwCQAJAIAYoAqgBQQFGBEAgBigCcEHUBksNAQsgBigCqAFBAkcNASAGKAJwQdAETQ0BCyAGQQE2AqwBDAELA0AgBiAGKAKQASAGKAJ4azoAWQJAIAYoAkggBigClAEgBigCjAFBAXRqLwEAQQFqSwRAIAZBADoAWCAGIAYoApQBIAYoAowBQQF0ai8BADsBWgwBCwJAIAYoApQBIAYoAowBQQF0ai8BACAGKAJITwRAIAYgBigCTCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOgBYIAYgBigCUCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOwFaDAELIAZB4AA6AFggBkEAOwFaCwsgBkEBIAYoApABIAYoAnhrdDYCaCAGQQEgBigCfHQ2AmQgBiAGKAJkNgKIAQNAIAYgBigCZCAGKAJoazYCZCAGKAJUIAYoAmQgBigCbCAGKAJ4dmpBAnRqIAZB2ABqKAEANgEAIAYoAmQNAAsgBkEBIAYoApABQQFrdDYCaANAIAYoAmwgBigCaHEEQCAGIAYoAmhBAXY2AmgMAQsLAkAgBigCaARAIAYgBigCbCAGKAJoQQFrcTYCbCAGIAYoAmggBigCbGo2AmwMAQsgBkEANgJsCyAGIAYoAowBQQFqNgKMASAGQSBqIAYoApABQQF0aiIBLwEAQQFrIQAgASAAOwEAAkAgAEH//wNxRQRAIAYoApABIAYoAoQBRg0BIAYgBigCpAEgBigClAEgBigCjAFBAXRqLwEAQQF0ai8BADYCkAELAkAgBigCkAEgBigCgAFNDQAgBigCYCAGKAJsIAYoAlxxRg0AIAYoAnhFBEAgBiAGKAKAATYCeAsgBiAGKAJUIAYoAogBQQJ0ajYCVCAGIAYoApABIAYoAnhrNgJ8IAZBASAGKAJ8dDYCdANAAkAgBigChAEgBigCfCAGKAJ4ak0NACAGIAYoAnQgBkEgaiAGKAJ8IAYoAnhqQQF0ai8BAGs2AnQgBigCdEEATA0AIAYgBigCfEEBajYCfCAGIAYoAnRBAXQ2AnQMAQsLIAYgBigCcEEBIAYoAnx0ajYCcAJAAkAgBigCqAFBAUYEQCAGKAJwQdQGSw0BCyAGKAKoAUECRw0BIAYoAnBB0ARNDQELIAZBATYCrAEMBAsgBiAGKAJsIAYoAlxxNgJgIAYoApwBKAIAIAYoAmBBAnRqIAYoAnw6AAAgBigCnAEoAgAgBigCYEECdGogBigCgAE6AAEgBigCnAEoAgAgBigCYEECdGogBigCVCAGKAKcASgCAGtBAnU7AQILDAELCyAGKAJsBEAgBkHAADoAWCAGIAYoApABIAYoAnhrOgBZIAZBADsBWiAGKAJUIAYoAmxBAnRqIAZB2ABqKAEANgEACyAGKAKcASIAIAAoAgAgBigCcEECdGo2AgAgBigCmAEgBigCgAE2AgAgBkEANgKsAQsgBigCrAEhACAGQbABaiQAIAALsQIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYKAIENgIMIAMoAgwgAygCEEsEQCADIAMoAhA2AgwLAkAgAygCDEUEQCADQQA2AhwMAQsgAygCGCIAIAAoAgQgAygCDGs2AgQgAygCFCADKAIYKAIAIAMoAgwQGRoCQCADKAIYKAIcKAIYQQFGBEAgAygCGCgCMCADKAIUIAMoAgwQPSEAIAMoAhggADYCMAwBCyADKAIYKAIcKAIYQQJGBEAgAygCGCgCMCADKAIUIAMoAgwQGiEAIAMoAhggADYCMAsLIAMoAhgiACADKAIMIAAoAgBqNgIAIAMoAhgiACADKAIMIAAoAghqNgIIIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzYBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQXiABKAIMKAIAEDcgASgCDCgCBBA3IAFBEGokAAvtAQEBfyMAQRBrIgEgADYCCAJAAkACQCABKAIIRQ0AIAEoAggoAiBFDQAgASgCCCgCJA0BCyABQQE2AgwMAQsgASABKAIIKAIcNgIEAkACQCABKAIERQ0AIAEoAgQoAgAgASgCCEcNACABKAIEKAIEQSpGDQEgASgCBCgCBEE5Rg0BIAEoAgQoAgRBxQBGDQEgASgCBCgCBEHJAEYNASABKAIEKAIEQdsARg0BIAEoAgQoAgRB5wBGDQEgASgCBCgCBEHxAEYNASABKAIEKAIEQZoFRg0BCyABQQE2AgwMAQsgAUEANgIMCyABKAIMC9IEAQF/IwBBIGsiAyAANgIcIAMgATYCGCADIAI2AhQgAyADKAIcQdwWaiADKAIUQQJ0aigCADYCECADIAMoAhRBAXQ2AgwDQAJAIAMoAgwgAygCHCgC0ChKDQACQCADKAIMIAMoAhwoAtAoTg0AIAMoAhggAygCHCADKAIMQQJ0akHgFmooAgBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEATgRAIAMoAhggAygCHCADKAIMQQJ0akHgFmooAgBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEARw0BIAMoAhwgAygCDEECdGpB4BZqKAIAIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQELIAMgAygCDEEBajYCDAsgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEgNAAJAIAMoAhggAygCEEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBHDQAgAygCECADKAIcQdgoamotAAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcA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0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";tg(po)||(po=h(po));function rg(d){try{if(d==po&&V)return new Uint8Array(V);var E=ca(d);if(E)return E;if(C)return C(d);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(I){wr(I)}}function gp(d,E){var I,k,T;try{T=rg(d),k=new WebAssembly.Module(T),I=new WebAssembly.Instance(k,E)}catch(te){var _=te.toString();throw D("failed to compile wasm module: "+_),(_.includes("imported Memory")||_.includes("memory import"))&&D("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),te}return[I,k]}function fp(){var d={a:ua};function E(T,_){var te=T.exports;t.asm=te,A=t.asm.u,Or(A.buffer),gi=t.asm.pa,aA(t.asm.v),cA("wasm-instantiate")}if(lA("wasm-instantiate"),t.instantiateWasm)try{var I=t.instantiateWasm(d,E);return I}catch(T){return D("Module.instantiateWasm callback failed with error: "+T),!1}var k=gp(po,d);return E(k[0]),t.asm}var vr,se;function Co(d){for(;d.length>0;){var E=d.shift();if(typeof E=="function"){E(t);continue}var I=E.func;typeof I=="number"?E.arg===void 0?gi.get(I)():gi.get(I)(E.arg):I(E.arg===void 0?null:E.arg)}}function Dn(d,E){var I=new Date(de[d>>2]*1e3);de[E>>2]=I.getUTCSeconds(),de[E+4>>2]=I.getUTCMinutes(),de[E+8>>2]=I.getUTCHours(),de[E+12>>2]=I.getUTCDate(),de[E+16>>2]=I.getUTCMonth(),de[E+20>>2]=I.getUTCFullYear()-1900,de[E+24>>2]=I.getUTCDay(),de[E+36>>2]=0,de[E+32>>2]=0;var k=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),T=(I.getTime()-k)/(1e3*60*60*24)|0;return de[E+28>>2]=T,Dn.GMTString||(Dn.GMTString=we("GMT")),de[E+40>>2]=Dn.GMTString,E}function ig(d,E){return Dn(d,E)}var Qt={splitPath:function(d){var E=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return E.exec(d).slice(1)},normalizeArray:function(d,E){for(var I=0,k=d.length-1;k>=0;k--){var T=d[k];T==="."?d.splice(k,1):T===".."?(d.splice(k,1),I++):I&&(d.splice(k,1),I--)}if(E)for(;I;I--)d.unshift("..");return d},normalize:function(d){var E=d.charAt(0)==="/",I=d.substr(-1)==="/";return d=Qt.normalizeArray(d.split("/").filter(function(k){return!!k}),!E).join("/"),!d&&!E&&(d="."),d&&I&&(d+="/"),(E?"/":"")+d},dirname:function(d){var E=Qt.splitPath(d),I=E[0],k=E[1];return!I&&!k?".":(k&&(k=k.substr(0,k.length-1)),I+k)},basename:function(d){if(d==="/")return"/";d=Qt.normalize(d),d=d.replace(/\/$/,"");var E=d.lastIndexOf("/");return E===-1?d:d.substr(E+1)},extname:function(d){return Qt.splitPath(d)[3]},join:function(){var d=Array.prototype.slice.call(arguments,0);return Qt.normalize(d.join("/"))},join2:function(d,E){return Qt.normalize(d+"/"+E)}};function Bl(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var d=new Uint8Array(1);return function(){return crypto.getRandomValues(d),d[0]}}else if(g)try{var E=J("crypto");return function(){return E.randomBytes(1)[0]}}catch{}return function(){wr("randomDevice")}}var kn={resolve:function(){for(var d="",E=!1,I=arguments.length-1;I>=-1&&!E;I--){var k=I>=0?arguments[I]:S.cwd();if(typeof k!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!k)return"";d=k+"/"+d,E=k.charAt(0)==="/"}return d=Qt.normalizeArray(d.split("/").filter(function(T){return!!T}),!E).join("/"),(E?"/":"")+d||"."},relative:function(d,E){d=kn.resolve(d).substr(1),E=kn.resolve(E).substr(1);function I(Je){for(var nt=0;nt=0&&Je[wt]==="";wt--);return nt>wt?[]:Je.slice(nt,wt-nt+1)}for(var k=I(d.split("/")),T=I(E.split("/")),_=Math.min(k.length,T.length),te=_,Be=0;Be<_;Be++)if(k[Be]!==T[Be]){te=Be;break}for(var me=[],Be=te;Be0?E=k.slice(0,T).toString("utf-8"):E=null}else typeof window<"u"&&typeof window.prompt=="function"?(E=window.prompt("Input: "),E!==null&&(E+=` +`)}`}}};Yt.RequestError=ei;var oB=class extends ei{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Yt.MaxRedirectsError=oB;var aB=class extends ei{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Yt.HTTPError=aB;var AB=class extends ei{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};Yt.CacheError=AB;var lB=class extends ei{constructor(e,t){super(e.message,e,t),this.name="UploadError"}};Yt.UploadError=lB;var cB=class extends ei{constructor(e,t,i){super(e.message,e,i),this.name="TimeoutError",this.event=e.event,this.timings=t}};Yt.TimeoutError=cB;var QC=class extends ei{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};Yt.ReadError=QC;var uB=class extends ei{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Yt.UnsupportedProtocolError=uB;var dDe=["socket","connect","continue","information","upgrade","timeout"],gB=class extends A6.Duplex{constructor(e,t={},i){super({autoDestroy:!1,highWaterMark:0}),this[Yf]=0,this[qf]=0,this.requestInitialized=!1,this[iB]=new Set,this.redirects=[],this[Jf]=!1,this[nB]=!1,this[BC]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof hR.IncomingMessage&&(this.options.headers={...c.headers,...this.options.headers})});let{json:o,body:a,form:l}=t;if((o||a||l)&&this._lockWrite(),Yt.kIsNormalizedAlready in t)this.options=t;else try{this.options=this.constructor.normalizeArguments(e,t,i)}catch(c){Ee.default.nodeStream(t.body)&&t.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof VPe.ReadStream&&await fDe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Pi])===null||c===void 0||c.destroy();return}for(let g of this[BC])g();this[BC].length=0,this.requestInitialized=!0}catch(u){if(u instanceof ei){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,t,i){var n,s,o,a,l;let c=t;if(Ee.default.object(e)&&!Ee.default.urlInstance(e))t={...i,...e,...t};else{if(e&&t&&t.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");t={...i,...t},e!==void 0&&(t.url=e),Ee.default.urlInstance(t.url)&&(t.url=new VA.URL(t.url.toString()))}if(t.cache===!1&&(t.cache=void 0),t.dnsCache===!1&&(t.dnsCache=void 0),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.method),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.headers),Ee.assert.any([Ee.default.string,Ee.default.urlInstance,Ee.default.undefined],t.prefixUrl),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.cookieJar),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.searchParams),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.cache),Ee.assert.any([Ee.default.object,Ee.default.number,Ee.default.undefined],t.timeout),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.context),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.hooks),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.decompress),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.ignoreInvalidCookies),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.followRedirect),Ee.assert.any([Ee.default.number,Ee.default.undefined],t.maxRedirects),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.throwHttpErrors),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.http2),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.allowGetBody),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.localAddress),Ee.assert.any([h6.isDnsLookupIpVersion,Ee.default.undefined],t.dnsLookupIpVersion),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.https),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.rejectUnauthorized),t.https&&(Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.https.rejectUnauthorized),Ee.assert.any([Ee.default.function_,Ee.default.undefined],t.https.checkServerIdentity),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificateAuthority),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.key),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificate),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.https.passphrase),Ee.assert.any([Ee.default.string,Ee.default.buffer,Ee.default.array,Ee.default.undefined],t.https.pfx)),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.cacheOptions),Ee.default.string(t.method)?t.method=t.method.toUpperCase():t.method="GET",t.headers===(i==null?void 0:i.headers)?t.headers={...t.headers}:t.headers=tDe({...i==null?void 0:i.headers,...t.headers}),"slashes"in t)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in t)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in t&&t.searchParams&&t.searchParams!==(i==null?void 0:i.searchParams)){let h;if(Ee.default.string(t.searchParams)||t.searchParams instanceof VA.URLSearchParams)h=new VA.URLSearchParams(t.searchParams);else{uDe(t.searchParams),h=new VA.URLSearchParams;for(let p in t.searchParams){let C=t.searchParams[p];C===null?h.append(p,""):C!==void 0&&h.append(p,C)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,C)=>{h.has(C)||h.append(C,p)}),t.searchParams=h}if(t.username=(s=t.username)!==null&&s!==void 0?s:"",t.password=(o=t.password)!==null&&o!==void 0?o:"",Ee.default.undefined(t.prefixUrl)?t.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(t.prefixUrl=t.prefixUrl.toString(),t.prefixUrl!==""&&!t.prefixUrl.endsWith("/")&&(t.prefixUrl+="/")),Ee.default.string(t.url)){if(t.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");t.url=f6.default(t.prefixUrl+t.url,t)}else(Ee.default.undefined(t.url)&&t.prefixUrl!==""||t.protocol)&&(t.url=f6.default(t.prefixUrl,t));if(t.url){"port"in t&&delete t.port;let{prefixUrl:h}=t;Object.defineProperty(t,"prefixUrl",{set:C=>{let y=t.url;if(!y.href.startsWith(C))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${C}: ${y.href}`);t.url=new VA.URL(C+y.href.slice(h.length)),h=C},get:()=>h});let{protocol:p}=t.url;if(p==="unix:"&&(p="http:",t.url=new VA.URL(`http://unix${t.url.pathname}${t.url.search}`)),t.searchParams&&(t.url.search=t.searchParams.toString()),p!=="http:"&&p!=="https:")throw new uB(t);t.username===""?t.username=t.url.username:t.url.username=t.username,t.password===""?t.password=t.url.password:t.url.password=t.password}let{cookieJar:u}=t;if(u){let{setCookie:h,getCookieString:p}=u;Ee.assert.function_(h),Ee.assert.function_(p),h.length===4&&p.length===0&&(h=a6.promisify(h.bind(t.cookieJar)),p=a6.promisify(p.bind(t.cookieJar)),t.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=t;if(g&&(CR.has(g)||CR.set(g,new c6((h,p)=>{let C=h[Pi](h,p);return Ee.default.promise(C)&&(C.once=(y,B)=>{if(y==="error")C.catch(B);else if(y==="abort")(async()=>{try{(await C).once("abort",B)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${y}`);return C}),C},g))),t.cacheOptions={...t.cacheOptions},t.dnsCache===!0)pR||(pR=new _Pe.default),t.dnsCache=pR;else if(!Ee.default.undefined(t.dnsCache)&&!t.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${Ee.default(t.dnsCache)}`);Ee.default.number(t.timeout)?t.timeout={request:t.timeout}:i&&t.timeout!==i.timeout?t.timeout={...i.timeout,...t.timeout}:t.timeout={...t.timeout},t.context||(t.context={});let f=t.hooks===(i==null?void 0:i.hooks);t.hooks={...t.hooks};for(let h of Yt.knownHookEvents)if(h in t.hooks)if(Ee.default.array(t.hooks[h]))t.hooks[h]=[...t.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${Ee.default(t.hooks[h])}`);else t.hooks[h]=[];if(i&&!f)for(let h of Yt.knownHookEvents)i.hooks[h].length>0&&(t.hooks[h]=[...i.hooks[h],...t.hooks[h]]);if("family"in t&&XA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),i!=null&&i.https&&(t.https={...i.https,...t.https}),"rejectUnauthorized"in t&&XA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in t&&XA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in t&&XA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in t&&XA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in t&&XA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in t&&XA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in t&&XA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in t)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(t.agent){for(let h in t.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return t.maxRedirects=(l=t.maxRedirects)!==null&&l!==void 0?l:0,Yt.setNonEnumerableProperties([i,c],t),ADe.default(t,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:t}=e,i=!Ee.default.undefined(e.form),n=!Ee.default.undefined(e.json),s=!Ee.default.undefined(e.body),o=i||n||s,a=Yt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof A6.Readable)&&!Ee.default.string(e.body)&&!Ee.default.buffer(e.body)&&!u6.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!Ee.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!Ee.default.string(t["content-type"]);s?(u6.default(e.body)&&l&&(t["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ZA]=e.body):i?(l&&(t["content-type"]="application/x-www-form-urlencoded"),this[ZA]=new VA.URLSearchParams(e.form).toString()):(l&&(t["content-type"]="application/json"),this[ZA]=e.stringifyJson(e.json));let c=await rDe.default(this[ZA],e.headers);Ee.default.undefined(t["content-length"])&&Ee.default.undefined(t["transfer-encoding"])&&!a&&!Ee.default.undefined(c)&&(t["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[jf]=Number(t["content-length"])||void 0}async _onResponseBase(e){let{options:t}=this,{url:i}=t;this[m6]=e,t.decompress&&(e=$Pe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:l6.STATUS_CODES[n],s.url=t.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[d6]=s.isFromCache,this[Gf]=Number(e.headers["content-length"])||void 0,this[sB]=e,e.once("end",()=>{this[Gf]=this[Yf],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new QC(a,this))}),e.once("aborted",()=>{this._beforeError(new QC({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(Ee.default.object(t.cookieJar)&&o){let a=o.map(async l=>t.cookieJar.setCookie(l,i.toString()));t.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(t.followRedirect&&e.headers.location&&hDe.has(n)){if(e.resume(),this[Pi]&&(this[dR](),delete this[Pi],this[p6]()),(n===303&&t.method!=="GET"&&t.method!=="HEAD"||!t.methodRewriting)&&(t.method="GET","body"in t&&delete t.body,"json"in t&&delete t.json,"form"in t&&delete t.form,this[ZA]=void 0,delete t.headers["content-length"]),this.redirects.length>=t.maxRedirects){this._beforeError(new oB(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new VA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in t.headers&&delete t.headers.host,"cookie"in t.headers&&delete t.headers.cookie,"authorization"in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username="",t.password="")):(c.username=t.username,c.password=t.password),this.redirects.push(u),t.url=c;for(let g of t.hooks.beforeRedirect)await g(t,s);this.emit("redirect",s,t),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(t.isStream&&t.throwHttpErrors&&!aDe.isResponseOk(s)){this._beforeError(new aB(s));return}e.on("readable",()=>{this[nB]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[iB])if(!a.headersSent){for(let l in e.headers){let c=t.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(t){this._beforeError(t)}}_onRequest(e){let{options:t}=this,{timeout:i,url:n}=t;ZPe.default(e),this[dR]=g6.default(e,i,n);let s=t.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof g6.TimeoutError?new cB(l,this.timings,this):new ei(l.message,l,this),this._beforeError(l)}),this[p6]=iDe.default(e,this,dDe),this[Pi]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[ZA],a=this.redirects.length===0?this:e;Ee.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new lB(l,this))})):(this._unlockWrite(),Ee.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,t){return new Promise((i,n)=>{Object.assign(t,nDe.default(e)),delete t.url;let s,o=CR.get(t.cache)(t,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});t.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,t,i,n,s;let{options:o}=this,{headers:a}=o;for(let B in a)if(Ee.default.undefined(a[B]))delete a[B];else if(Ee.default.null_(a[B]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${B}\` header`);if(o.decompress&&Ee.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=cDe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let B=await o.cookieJar.getCookieString(o.url.toString());Ee.default.nonEmptyString(B)&&(o.headers.cookie=B)}for(let B of o.hooks.beforeRequest){let v=await B(o);if(!Ee.default.undefined(v)){o.request=()=>v;break}}o.body&&this[ZA]!==o.body&&(this[ZA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let B=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(B!=null&&B.groups){let{socketPath:v,path:D}=B.groups;Object.assign(o,{socketPath:v,path:D,host:""})}}let f=g.protocol==="https:",h;o.http2?h=eDe.auto:h=f?XPe.request:l6.request;let p=(e=o.request)!==null&&e!==void 0?e:h,C=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Pi]=p,delete o.request,delete o.timeout;let y=o;if(y.shared=(t=o.cacheOptions)===null||t===void 0?void 0:t.shared,y.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,y.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,y.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{y.family=h6.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(y.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(y.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(y.ca=o.https.certificateAuthority),o.https.certificate&&(y.cert=o.https.certificate),o.https.key&&(y.key=o.https.key),o.https.passphrase&&(y.passphrase=o.https.passphrase),o.https.pfx&&(y.pfx=o.https.pfx));try{let B=await C(g,y);Ee.default.undefined(B)&&(B=h(g,y)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete y.rejectUnauthorized,o.https.checkServerIdentity&&delete y.checkServerIdentity,o.https.certificateAuthority&&delete y.ca,o.https.certificate&&delete y.cert,o.https.key&&delete y.key,o.https.passphrase&&delete y.passphrase,o.https.pfx&&delete y.pfx),gDe(B)?this._onRequest(B):this.writable?(this.once("finish",()=>{this._onResponse(B)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(B)}catch(B){throw B instanceof c6.CacheError?new AB(B,this):new ei(B.message,B,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new ei(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[Jf])return;let{options:t}=this,i=this.retryCount+1;this[Jf]=!0,e instanceof ei||(e=new ei(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await oDe.default(s),s.body=s.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await t.retry.calculateDelay({attemptCount:i,retryOptions:t.retry,error:n,retryAfter:a,computedValue:lDe.default({attemptCount:i,retryOptions:t.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new ei(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new ei(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[E6]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[nB]=!0;let e=this[sB];if(e&&!this[Jf]){e.readableLength&&(this[nB]=!1);let t;for(;(t=e.read())!==null;){this[Yf]+=t.length,this[C6]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(t)}}}_write(e,t,i){let n=()=>{this._writeRequest(e,t,i)};this.requestInitialized?n():this[BC].push(n)}_writeRequest(e,t,i){this[Pi].destroyed||(this._progressCallbacks.push(()=>{this[qf]+=Buffer.byteLength(e,t);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Pi].write(e,t,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let t=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Pi in this)){e();return}if(this[Pi].destroyed){e();return}this[Pi].end(i=>{i||(this[jf]=this[qf],this.emit("uploadProgress",this.uploadProgress),this[Pi].emit("upload-complete")),e(i)})};this.requestInitialized?t():this[BC].push(t)}_destroy(e,t){var i;this[Jf]=!0,clearTimeout(this[E6]),Pi in this&&(this[dR](),!((i=this[sB])===null||i===void 0)&&i.complete||this[Pi].destroy()),e!==null&&!Ee.default.undefined(e)&&!(e instanceof ei)&&(e=new ei(e.message,e,this)),t(e)}get _isAboutToError(){return this[Jf]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,t,i;return((t=(e=this[Pi])===null||e===void 0?void 0:e.destroyed)!==null&&t!==void 0?t:this.destroyed)&&!(!((i=this[m6])===null||i===void 0)&&i.complete)}get socket(){var e,t;return(t=(e=this[Pi])===null||e===void 0?void 0:e.socket)!==null&&t!==void 0?t:void 0}get downloadProgress(){let e;return this[Gf]?e=this[Yf]/this[Gf]:this[Gf]===this[Yf]?e=1:e=0,{percent:e,transferred:this[Yf],total:this[Gf]}}get uploadProgress(){let e;return this[jf]?e=this[qf]/this[jf]:this[jf]===this[qf]?e=1:e=0,{percent:e,transferred:this[qf],total:this[jf]}}get timings(){var e;return(e=this[Pi])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[d6]}pipe(e,t){if(this[C6])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof hR.ServerResponse&&this[iB].add(e),super.pipe(e,t)}unpipe(e){return e instanceof hR.ServerResponse&&this[iB].delete(e),super.unpipe(e),this}};Yt.default=gB});var SC=w(ao=>{"use strict";var CDe=ao&&ao.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),mDe=ao&&ao.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&CDe(e,r,t)};Object.defineProperty(ao,"__esModule",{value:!0});ao.CancelError=ao.ParseError=void 0;var I6=bC(),mR=class extends I6.RequestError{constructor(e,t){let{options:i}=t.request;super(`${e.message} in "${i.url.toString()}"`,e,t.request),this.name="ParseError"}};ao.ParseError=mR;var ER=class extends I6.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};ao.CancelError=ER;mDe(bC(),ao)});var w6=w(IR=>{"use strict";Object.defineProperty(IR,"__esModule",{value:!0});var y6=SC(),EDe=(r,e,t,i)=>{let{rawBody:n}=r;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":t(n.toString());if(e==="buffer")return n;throw new y6.ParseError({message:`Unknown body type '${e}'`,name:"Error"},r)}catch(s){throw new y6.ParseError(s,r)}};IR.default=EDe});var yR=w(_A=>{"use strict";var IDe=_A&&_A.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),yDe=_A&&_A.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&IDe(e,r,t)};Object.defineProperty(_A,"__esModule",{value:!0});var wDe=J("events"),BDe=Ga(),QDe=wz(),fB=SC(),B6=w6(),Q6=bC(),bDe=iR(),SDe=cR(),b6=uR(),vDe=["request","response","redirect","uploadProgress","downloadProgress"];function S6(r){let e,t,i=new wDe.EventEmitter,n=new QDe((o,a,l)=>{let c=u=>{let g=new Q6.default(void 0,r);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new fB.CancelError(g))),e=g,g.once("response",async p=>{var C;if(p.retryCount=u,p.request.aborted)return;let y;try{y=await SDe.default(g),p.rawBody=y}catch{return}if(g._isAboutToError)return;let B=((C=p.headers["content-encoding"])!==null&&C!==void 0?C:"").toLowerCase(),v=["gzip","deflate","br"].includes(B),{options:D}=g;if(v&&!D.decompress)p.body=y;else try{p.body=B6.default(p,D.responseType,D.parseJson,D.encoding)}catch(L){if(p.body=y.toString(),b6.isResponseOk(p)){g._beforeError(L);return}}try{for(let[L,H]of D.hooks.afterResponse.entries())p=await H(p,async j=>{let $=Q6.default.normalizeArguments(void 0,{...j,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},D);$.hooks.afterResponse=$.hooks.afterResponse.slice(0,L);for(let W of $.hooks.beforeRetry)await W($);let V=S6($);return l(()=>{V.catch(()=>{}),V.cancel()}),V})}catch(L){g._beforeError(new fB.RequestError(L.message,L,g));return}if(!b6.isResponseOk(p)){g._beforeError(new fB.HTTPError(p));return}t=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:C}=g;if(p instanceof fB.HTTPError&&!C.throwHttpErrors){let{response:y}=p;o(g.options.resolveBodyOnly?y.body:y);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,C)=>{var y,B;if(h===((y=C.request)===null||y===void 0?void 0:y.options.body)&&BDe.default.nodeStream((B=C.request)===null||B===void 0?void 0:B.options.body)){f(C);return}c(p)}),bDe.default(g,i,vDe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=t.request;return B6.default(t,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}_A.default=S6;yDe(SC(),_A)});var v6=w(wR=>{"use strict";Object.defineProperty(wR,"__esModule",{value:!0});var xDe=SC();function PDe(r,...e){let t=(async()=>{if(r instanceof xDe.RequestError)try{for(let n of e)if(n)for(let s of n)r=await s(r)}catch(n){r=n}throw r})(),i=()=>t;return t.json=i,t.text=i,t.buffer=i,t.on=i,t}wR.default=PDe});var D6=w(BR=>{"use strict";Object.defineProperty(BR,"__esModule",{value:!0});var x6=Ga();function P6(r){for(let e of Object.values(r))(x6.default.plainObject(e)||x6.default.array(e))&&P6(e);return Object.freeze(r)}BR.default=P6});var R6=w(k6=>{"use strict";Object.defineProperty(k6,"__esModule",{value:!0})});var QR=w(bs=>{"use strict";var DDe=bs&&bs.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),kDe=bs&&bs.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&DDe(e,r,t)};Object.defineProperty(bs,"__esModule",{value:!0});bs.defaultHandler=void 0;var F6=Ga(),Qs=yR(),RDe=v6(),pB=bC(),FDe=D6(),NDe={RequestError:Qs.RequestError,CacheError:Qs.CacheError,ReadError:Qs.ReadError,HTTPError:Qs.HTTPError,MaxRedirectsError:Qs.MaxRedirectsError,TimeoutError:Qs.TimeoutError,ParseError:Qs.ParseError,CancelError:Qs.CancelError,UnsupportedProtocolError:Qs.UnsupportedProtocolError,UploadError:Qs.UploadError},LDe=async r=>new Promise(e=>{setTimeout(e,r)}),{normalizeArguments:hB}=pB.default,N6=(...r)=>{let e;for(let t of r)e=hB(void 0,t,e);return e},TDe=r=>r.isStream?new pB.default(void 0,r):Qs.default(r),ODe=r=>"defaults"in r&&"options"in r.defaults,MDe=["get","post","put","patch","head","delete"];bs.defaultHandler=(r,e)=>e(r);var L6=(r,e)=>{if(r)for(let t of r)t(e)},T6=r=>{r._rawHandlers=r.handlers,r.handlers=r.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>r.handlers[l++](u,l===r.handlers.length?TDe:c);if(F6.default.plainObject(i)){let u={...i,...n};pB.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{L6(r.options.hooks.init,n),L6((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=hB(i,n,s!=null?s:r.options);if(g[pB.kIsNormalizedAlready]=!0,u)throw new Qs.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return RDe.default(u,r.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[r.options],s=[...r._rawHandlers],o;for(let a of i)ODe(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==bs.defaultHandler),s.length===0&&s.push(bs.defaultHandler),T6({options:N6(...n),handlers:s,mutableDefaults:Boolean(o)})};let t=async function*(i,n){let s=hB(i,n,r.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!F6.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of t(i,n))s.push(o);return s},e.paginate.each=t,e.stream=(i,n)=>e(i,{...n,isStream:!0});for(let i of MDe)e[i]=(n,s)=>e(n,{...s,method:i}),e.stream[i]=(n,s)=>e(n,{...s,method:i,isStream:!0});return Object.assign(e,NDe),Object.defineProperty(e,"defaults",{value:r.mutableDefaults?r:FDe.default(r),writable:r.mutableDefaults,configurable:r.mutableDefaults,enumerable:!0}),e.mergeOptions=N6,e};bs.default=T6;kDe(R6(),bs)});var CB=w((Ya,dB)=>{"use strict";var UDe=Ya&&Ya.__createBinding||(Object.create?function(r,e,t,i){i===void 0&&(i=t),Object.defineProperty(r,i,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}),O6=Ya&&Ya.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&UDe(e,r,t)};Object.defineProperty(Ya,"__esModule",{value:!0});var KDe=J("url"),M6=QR(),HDe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:r})=>r},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:r=>r.request.options.responseType==="json"?r.body:JSON.parse(r.body),paginate:r=>{if(!Reflect.has(r.headers,"link"))return!1;let e=r.headers.link.split(","),t;for(let i of e){let n=i.split(";");if(n[1].includes("next")){t=n[0].trimStart().trim(),t=t.slice(1,-1);break}}return t?{url:new KDe.URL(t)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:r=>JSON.parse(r),stringifyJson:r=>JSON.stringify(r),cacheOptions:{}},handlers:[M6.defaultHandler],mutableDefaults:!1},bR=M6.default(HDe);Ya.default=bR;dB.exports=bR;dB.exports.default=bR;dB.exports.__esModule=!0;O6(QR(),Ya);O6(yR(),Ya)});var G6=w(Wf=>{"use strict";var rst=J("net"),GDe=J("tls"),SR=J("http"),U6=J("https"),YDe=J("events"),ist=J("assert"),jDe=J("util");Wf.httpOverHttp=qDe;Wf.httpsOverHttp=JDe;Wf.httpOverHttps=WDe;Wf.httpsOverHttps=zDe;function qDe(r){var e=new ja(r);return e.request=SR.request,e}function JDe(r){var e=new ja(r);return e.request=SR.request,e.createSocket=K6,e.defaultPort=443,e}function WDe(r){var e=new ja(r);return e.request=U6.request,e}function zDe(r){var e=new ja(r);return e.request=U6.request,e.createSocket=K6,e.defaultPort=443,e}function ja(r){var e=this;e.options=r||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||SR.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=H6(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};ja.prototype.createSocket=function(e,t){var i=this,n={};i.sockets.push(n);var s=vR({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),$A("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){$A("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){$A("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return $A("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,t(f)}function u(g){o.removeAllListeners(),$A(`tunneling socket could not be established, cause=%s +`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};ja.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function K6(r,e){var t=this;ja.prototype.createSocket.call(t,r,function(i){var n=r.request.getHeader("host"),s=vR({},t.options,{socket:i,servername:n?n.replace(/:.*$/,""):r.host}),o=GDe.connect(0,s);t.sockets[t.sockets.indexOf(i)]=o,e(o)})}function H6(r,e,t){return typeof r=="string"?{host:r,port:e,localAddress:t}:r}function vR(r){for(var e=1,t=arguments.length;e{Y6.exports=G6()});var tV=w((IB,FR)=>{var eV=Object.assign({},J("fs")),RR=function(){var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(e){e=e||{};var t=typeof e<"u"?e:{},i,n;t.ready=new Promise(function(d,E){i=d,n=E});var s={},o;for(o in t)t.hasOwnProperty(o)&&(s[o]=t[o]);var a=[],l="./this.program",c=function(d,E){throw E},u=!1,g=!0,f="";function h(d){return t.locateFile?t.locateFile(d,f):f+d}var p,C,y,B;g&&(u?f=J("path").dirname(f)+"/":f=__dirname+"/",p=function(E,I){var k=da(E);return k?I?k:k.toString():(y||(y=eV),B||(B=J("path")),E=B.normalize(E),y.readFileSync(E,I?null:"utf8"))},C=function(E){var I=p(E,!0);return I.buffer||(I=new Uint8Array(I)),re(I.buffer),I},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),a=process.argv.slice(2),c=function(d){process.exit(d)},t.inspect=function(){return"[Emscripten Module object]"});var v=t.print||console.log.bind(console),D=t.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(t[o]=s[o]);s=null,t.arguments&&(a=t.arguments),t.thisProgram&&(l=t.thisProgram),t.quit&&(c=t.quit);var L=16;function H(d,E){return E||(E=L),Math.ceil(d/E)*E}var j=0,$=function(d){j=d},V;t.wasmBinary&&(V=t.wasmBinary);var W=t.noExitRuntime||!0;typeof WebAssembly!="object"&&wr("no native wasm support detected");function _(d,E,I){switch(E=E||"i8",E.charAt(E.length-1)==="*"&&(E="i32"),E){case"i1":return ne[d>>0];case"i8":return ne[d>>0];case"i16":return he[d>>1];case"i32":return de[d>>2];case"i64":return de[d>>2];case"float":return Pt[d>>2];case"double":return It[d>>3];default:wr("invalid type for getValue: "+E)}return null}var A,Ae=!1,ge;function re(d,E){d||wr("Assertion failed: "+E)}function O(d){var E=t["_"+d];return re(E,"Cannot call unknown function "+d+", make sure it is exported"),E}function F(d,E,I,k,T){var Z={string:function(it){var Et=0;if(it!=null&&it!==0){var Qe=(it.length<<2)+1;Et=Q(Qe),oe(it,Et,Qe)}return Et},array:function(it){var Et=Q(it.length);return fe(it,Et),Et}};function te(it){return E==="string"?Fe(it):E==="boolean"?Boolean(it):it}var we=O(d),me=[],Je=0;if(k)for(var nt=0;nt=k);)++T;if(T-E>16&&d.subarray&&pe)return pe.decode(d.subarray(E,T));for(var Z="";E>10,56320|Je&1023)}}return Z}function Fe(d,E){return d?ke(Y,d,E):""}function Ne(d,E,I,k){if(!(k>0))return 0;for(var T=I,Z=I+k-1,te=0;te=55296&&we<=57343){var me=d.charCodeAt(++te);we=65536+((we&1023)<<10)|me&1023}if(we<=127){if(I>=Z)break;E[I++]=we}else if(we<=2047){if(I+1>=Z)break;E[I++]=192|we>>6,E[I++]=128|we&63}else if(we<=65535){if(I+2>=Z)break;E[I++]=224|we>>12,E[I++]=128|we>>6&63,E[I++]=128|we&63}else{if(I+3>=Z)break;E[I++]=240|we>>18,E[I++]=128|we>>12&63,E[I++]=128|we>>6&63,E[I++]=128|we&63}}return E[I]=0,I-T}function oe(d,E,I){return Ne(d,Y,E,I)}function le(d){for(var E=0,I=0;I=55296&&k<=57343&&(k=65536+((k&1023)<<10)|d.charCodeAt(++I)&1023),k<=127?++E:k<=2047?E+=2:k<=65535?E+=3:E+=4}return E}function Be(d){var E=le(d)+1,I=dt(E);return I&&Ne(d,ne,I,E),I}function fe(d,E){ne.set(d,E)}function ae(d,E){return d%E>0&&(d+=E-d%E),d}var qe,ne,Y,he,ie,de,_e,Pt,It;function Or(d){qe=d,t.HEAP8=ne=new Int8Array(d),t.HEAP16=he=new Int16Array(d),t.HEAP32=de=new Int32Array(d),t.HEAPU8=Y=new Uint8Array(d),t.HEAPU16=ie=new Uint16Array(d),t.HEAPU32=_e=new Uint32Array(d),t.HEAPF32=Pt=new Float32Array(d),t.HEAPF64=It=new Float64Array(d)}var ii=t.INITIAL_MEMORY||16777216,gi,hr=[],fi=[],ni=[],Us=!1;function pr(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)ga(t.preRun.shift());yo(hr)}function Ii(){Us=!0,!t.noFSInit&&!S.init.initialized&&S.init(),ns.init(),yo(fi)}function rs(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)cg(t.postRun.shift());yo(ni)}function ga(d){hr.unshift(d)}function dA(d){fi.unshift(d)}function cg(d){ni.unshift(d)}var is=0,CA=null,fa=null;function wp(d){return d}function mA(d){is++,t.monitorRunDependencies&&t.monitorRunDependencies(is)}function EA(d){if(is--,t.monitorRunDependencies&&t.monitorRunDependencies(is),is==0&&(CA!==null&&(clearInterval(CA),CA=null),fa)){var E=fa;fa=null,E()}}t.preloadedImages={},t.preloadedAudios={};function wr(d){t.onAbort&&t.onAbort(d),d+="",D(d),Ae=!0,ge=1,d="abort("+d+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(d);throw n(E),E}var Ll="data:application/octet-stream;base64,";function ug(d){return d.startsWith(Ll)}var Io="data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAg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AAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAAAAFIFAADZBwAArAgAAJEIAACCBQAApAUAAI0FAADFBQAAbwgAADQHAADpBAAAJAcAAAMHAACvBQAA4QYAAMsIAAA3CAAAQQcAAFoEAAC5BgAAcwUAAEEEAABXBwAAWAgAABcIAACnBgAA4ggAAPcIAAD/BwAAywYAAGgFAADBBwAAIABBmBQLEQEAAAABAAAAAQAAAAEAAAABAEG8FAsJAQAAAAEAAAACAEHoFAsBAQBBiBULAQEAQaIVC6REOiY7JmUmZiZjJmAmIiDYJcsl2SVCJkAmaiZrJjwmuiXEJZUhPCC2AKcArCWoIZEhkyGSIZAhHyKUIbIlvCUgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AAiPHAPwA6QDiAOQA4ADlAOcA6gDrAOgA7wDuAOwAxADFAMkA5gDGAPQA9gDyAPsA+QD/ANYA3ACiAKMApQCnIJIB4QDtAPMA+gDxANEAqgC6AL8AECOsAL0AvAChAKsAuwCRJZIlkyUCJSQlYSViJVYlVSVjJVElVyVdJVwlWyUQJRQlNCUsJRwlACU8JV4lXyVaJVQlaSVmJWAlUCVsJWclaCVkJWUlWSVYJVIlUyVrJWolGCUMJYglhCWMJZAlgCWxA98AkwPAA6MDwwO1AMQDpgOYA6kDtAMeIsYDtQMpImEisQBlImQiICMhI/cASCKwABkitwAaIn8gsgCgJaAAAAAAAJYwB3csYQ7uulEJmRnEbQeP9GpwNaVj6aOVZJ4yiNsOpLjceR7p1eCI2dKXK0y2Cb18sX4HLbjnkR2/kGQQtx3yILBqSHG5895BvoR91Noa6+TdbVG11PTHhdODVphsE8Coa2R6+WL97Mllik9cARTZbAZjYz0P+vUNCI3IIG47XhBpTORBYNVycWei0eQDPEfUBEv9hQ3Sa7UKpfqotTVsmLJC1sm720D5vKzjbNgydVzfRc8N1txZPdGrrDDZJjoA3lGAUdfIFmHQv7X0tCEjxLNWmZW6zw+lvbieuAIoCIgFX7LZDMYk6Quxh3xvLxFMaFirHWHBPS1mtpBB3HYGcdsBvCDSmCoQ1e+JhbFxH7W2BqXkv58z1LjooskHeDT5AA+OqAmWGJgO4bsNan8tPW0Il2xkkQFcY+b0UWtrYmFsHNgwZYVOAGLy7ZUGbHulARvB9AiCV8QP9cbZsGVQ6bcS6ri+i3yIufzfHd1iSS3aFfN804xlTNT7WGGyTc5RtTp0ALyj4jC71EGl30rXldg9bcTRpPv01tNq6WlD/NluNEaIZ63QuGDacy0EROUdAzNfTAqqyXwN3TxxBVCqQQInEBALvoYgDMkltWhXs4VvIAnUZrmf5GHODvneXpjJ2SkimNCwtKjXxxc9s1mBDbQuO1y9t61susAgg7jttrO/mgzitgOa0rF0OUfV6q930p0VJtsEgxbccxILY+OEO2SUPmptDahaanoLzw7knf8JkyeuAAqxngd9RJMP8NKjCIdo8gEe/sIGaV1XYvfLZ2WAcTZsGecGa252G9T+4CvTiVp62hDMSt1nb9+5+fnvvo5DvrcX1Y6wYOij1tZ+k9GhxMLYOFLy30/xZ7vRZ1e8pt0GtT9LNrJI2isN2EwbCq/2SgM2YHoEQcPvYN9V32eo745uMXm+aUaMs2HLGoNmvKDSbyU24mhSlXcMzANHC7u5FgIiLyYFVb47usUoC72yklq0KwRqs1yn/9fCMc/QtYue2Swdrt5bsMJkmybyY+yco2p1CpNtAqkGCZw/Ng7rhWcHchNXAAWCSr+VFHq44q4rsXs4G7YMm47Skg2+1eW379x8Id/bC9TS04ZC4tTx+LPdaG6D2h/NFr6BWya59uF3sG93R7cY5loIiHBqD//KOwZmXAsBEf+eZY9prmL40/9rYUXPbBZ44gqg7tIN11SDBE7CswM5YSZnp/cWYNBNR2lJ23duPkpq0a7cWtbZZgvfQPA72DdTrrypxZ673n/Pskfp/7UwHPK9vYrCusowk7NTpqO0JAU20LqTBtfNKVfeVL9n2SMuemazuEphxAIbaF2UK28qN74LtKGODMMb3wVaje8CLQAAAABBMRsZgmI2MsNTLSsExWxkRfR3fYanWlbHlkFPCIrZyEm7wtGK6O/6y9n04wxPtaxNfq61ji2Dns8cmIdREsJKECPZU9Nw9HiSQe9hVdeuLhTmtTfXtZgcloSDBVmYG4IYqQCb2/otsJrLNqldXXfmHGxs/98/QdSeDlrNoiSEleMVn4wgRrKnYXepvqbh6PHn0PPoJIPew2Wyxdqqrl1d659GRCjMa29p/XB2rmsxOe9aKiAsCQcLbTgcEvM2Rt+yB13GcVRw7TBla/T38yq7tsIxonWRHIk0oAeQ+7yfF7qNhA553qklOO+yPP9583O+SOhqfRvFQTwq3lgFT3nwRH5i6YctT8LGHFTbAYoVlEC7Do2D6COmwtk4vw3FoDhM9Lshj6eWCs6WjRMJAMxcSDHXRYti+m7KU+F3VF27uhVsoKPWP42Ilw6WkVCY194RqczH0vrh7JPL+vVc12JyHeZ5a961VECfhE9ZWBIOFhkjFQ/acDgkm0EjPadr/WXmWuZ8JQnLV2Q40E6jrpEB4p+KGCHMpzNg/bwqr+Ekre7QP7QtgxKfbLIJhqskSMnqFVPQKUZ++2h3ZeL2eT8vt0gkNnQbCR01KhIE8rxTS7ONSFJw3mV5Me9+YP7z5ue/wv3+fJHQ1T2gy8z6NoqDuweRmnhUvLE5ZaeoS5iDOwqpmCLJ+rUJiMuuEE9d718ObPRGzT/ZbYwOwnRDElrzAiNB6sFwbMGAQXfYR9c2lwbmLY7FtQClhIQbvBqKQXFbu1pomOh3Q9nZbFoeTy0VX342DJwtGyfdHAA+EgCYuVMxg6CQYq6L0VO1khbF9N1X9O/ElKfC79WW2fbpvAeuqI0ct2veMZwq7yqF7XlryqxIcNNvG134LipG4eE23magB8V/Y1ToVCJl803l87ICpMKpG2eRhDAmoJ8puK7F5Pmf3v06zPPWe/3oz7xrqYD9WrKZPgmfsn84hKuwJBws8RUHNTJGKh5zdzEHtOFwSPXQa1E2g0Z6d7JdY07X+ssP5uHSzLXM+Y2E1+BKEpavCyONtshwoJ2JQbuERl0jAwdsOBrEPxUxhQ4OKEKYT2cDqVR+wPp5VYHLYkwfxTiBXvQjmJ2nDrPclhWqGwBU5VoxT/yZYmLX2FN5zhdP4UlWfvpQlS3Xe9QczGITio0tUruWNJHoux/Q2aAG7PN+Xq3CZUdukUhsL6BTdeg2EjqpBwkjalQkCCtlPxHkeaeWpUi8j2YbkaQnKoq94LzL8qGN0Oti3v3AI+/m2b3hvBT80KcNP4OKJn6ykT+5JNBw+BXLaTtG5kJ6d/1btWtl3PRafsU3CVPudjhI97GuCbjwnxKhM8w/inL9JJMAAAAAN2rCAW7UhANZvkYC3KgJB+vCywayfI0EhRZPBbhREw6PO9EP1oWXDeHvVQxk+RoJU5PYCAotngo9R1wLcKMmHEfJ5B0ed6IfKR1gHqwLLxubYe0awt+rGPW1aRnI8jUS/5j3E6YmsRGRTHMQFFo8FSMw/hR6jrgWTeR6F+BGTTjXLI85jpLJO7n4Czo87kQ/C4SGPlI6wDxlUAI9WBdeNm99nDc2w9o1AakYNIS/VzGz1ZUw6mvTMt0BETOQ5Wskp4+pJf4x7yfJWy0mTE1iI3snoCIimeYgFfMkISi0eCof3rorRmD8KXEKPij0HHEtw3azLJrI9S6tojcvwI2acPfnWHGuWR5zmTPcchwlk3crT1F2cvEXdEWb1XV43Il+T7ZLfxYIDX0hYs98pHSAeZMeQnjKoAR6/crGe7AuvGyHRH5t3vo4b+mQ+m5shrVrW+x3agJSMWg1OPNpCH+vYj8VbWNmqythUcHpYNTXpmXjvWRkugMiZo1p4Gcgy9dIF6EVSU4fU0t5dZFK/GPeT8sJHE6St1pMpd2YTZiaxEav8AZH9k5ARcEkgkREMs1Bc1gPQCrmSUIdjItDUGjxVGcCM1U+vHVXCda3VozA+FO7qjpS4hR8UNV+vlHoOeJa31MgW4btZlmxh6RYNJHrXQP7KVxaRW9ebS+tX4AbNeG3cffg7s+x4tmlc+Ncszzma9n+5zJnuOUFDXrkOEom7w8g5O5WnqLsYfRg7eTiL+jTiO3pijar671caerwuBP9x9LR/J5sl/6pBlX/LBAa+ht62PtCxJ75da5c+EjpAPN/g8LyJj2E8BFXRvGUQQn0oyvL9fqVjffN/0/2YF142Vc3utgOifzaOeM+27z1cd6Ln7Pf0iH13eVLN9zYDGvX72ap1rbY79SBsi3VBKRi0DPOoNFqcObTXRok0hD+XsUnlJzEfiraxklAGMfMVlfC+zyVw6KC08GV6BHAqK9Ny5/Fj8rGe8nI8RELyXQHRMxDbYbNGtPAzy25As5Alq+Rd/xtkC5CK5IZKOmTnD6mlqtUZJfy6iKVxYDglPjHvJ/PrX6elhM4nKF5+p0kb7WYEwV3mUq7MZt90fOaMDWJjQdfS4xe4Q2OaYvPj+ydgIrb90KLgkkEibUjxoiIZJqDvw5YguawHoDR2tyBVMyThGOmUYU6GBeHDXLVhqDQ4qmXuiCozgRmqvlupKt8eOuuSxIprxKsb60lxq2sGIHxpy/rM6Z2VXWkQT+3pcQp+KDzQzqhqv18o52XvqLQc8S15xkGtL6nQLaJzYK3DNvNsjuxD7NiD0mxVWWLsGgi17tfSBW6BvZTuDGckbm0it68g+AcvdpeWr/tNJi+AAAAAGVnvLiLyAmq7q+1EleXYo8y8N433F9rJbk4153vKLTFik8IfWTgvW8BhwHXuL/WSt3YavIzd9/gVhBjWJ9XGVD6MKXoFJ8Q+nH4rELIwHvfrafHZ0MIcnUmb87NcH+tlRUYES37t6Q/ntAYhyfozxpCj3OirCDGsMlHegg+rzKgW8iOGLVnOwrQAIeyaThQLwxf7Jfi8FmFh5flPdGHhmW04DrdWk+Pzz8oM3eGEOTq43dYUg3Y7UBov1H4ofgr8MSfl0gqMCJaT1ee4vZvSX+TCPXHfadA1RjA/G1O0J81K7cjjcUYlp+gfyonGUf9unwgQQKSj/QQ9+hIqD1YFJtYP6gjtpAdMdP3oYlqz3YUD6jKrOEHf76EYMMG0nCgXrcXHOZZuKn0PN8VTIXnwtHggH5pDi/Le2tId8OiDw3Lx2ixcynHBGFMoLjZ9ZhvRJD/0/x+UGbuGzfaVk0nuQ4oQAW2xu+wpKOIDBwasNuBf9dnOZF40iv0H26TA/cmO2aQmoOIPy+R7ViTKVRgRLQxB/gM36hNHrrP8abs35L+ibguRmcXm1QCcCfsu0jwcd4vTMkwgPnbVedFY5ygP2v5x4PTF2g2wXIPinnLN13krlDhXED/VE4lmOj2c4iLrhbvNxb4QIIEnSc+vCQf6SFBeFWZr9fgi8qwXDM7tlntXtHlVbB+UEfVGez/bCE7YglGh9rn6TLIgo6OcNSe7Six+VGQX1bkgjoxWDqDCY+n5m4zHwjBhg1tpjq1pOFAvcGG/AUvKUkXSk71r/N2IjKWEZ6KeL4rmB3ZlyBLyfR4Lq5IwMAB/dKlZkFqHF6W93k5Kk+Xlp9d8vEj5QUZa01gftf1jtFi5+u23l9SjgnCN+m1etlGAGi8IbzQ6jHfiI9WYzBh+dYiBJ5qmr2mvQfYwQG/Nm60rVMJCBWaTnId/ynOpRGGe7d04ccPzdkQkqi+rCpGERk4I3algHVmxtgQAXpg/q7PcpvJc8oi8aRXR5YY76k5rf3MXhFFBu5NdmOJ8c6NJkTc6EH4ZFF5L/k0HpNB2rEmU7/WmuvpxvmzjKFFC2IO8BkHaUyhvlGbPNs2J4Q1mZKWUP4uLpm5VCb83uieEnFdjHcW4TTOLjapq0mKEUXmPwMggYO7dpHg4xP2XFv9WelJmD5V8SEGgmxEYT7Uqs6Lxs+pN344QX/WXSbDbrOJdnzW7srEb9YdWQqxoeHkHhTzgXmoS9dpyxOyDnerXKHCuTnGfgGA/qmc5ZkVJAs2oDZuURyOpxZmhsJx2j4s3m8sSbnTlPCBBAmV5rixe0kNox4usRtIPtJDLVlu+8P22+mmkWdRH6mwzHrODHSUYblm8QYF3gAAAAB3BzCW7g5hLJkJUboHbcQZcGr0j+ljpTWeZJWjDtuIMnncuKTg1ekel9LZiAm2TCt+sXy957gtB5C/HZEdtxBkarAg8vO5cUiEvkHeGtrUfW3d5Ov01LVRg9OFxxNsmFZka6jA/WL5eoplyewUAVxPYwZs2foPPWONCA31O24gyExpEF7VYEHkomdxcjwD5NFLBNRH0g2F/aUKtWs1taj6QrKYbNu7ydasvPlAMths40XfXHXc1g3Pq9E9WSbZMKxR3gA6yNdRgL/QYRYhtPS1VrPEI8+6lZm4vaUPKAK4nl8FiAjGDNmysQvpJC9vfIdYaEwRwWEdq7ZmLT123EGQAdtxBpjSILzv1RAqcbGFiQa2tR+fv+Sl6LjUM3gHyaIPAPk0lgmojuEOmBh/ag27CG09LZFkbJfmY1wBa2tR9BxsYWKFZTDY8mIATmwGle0bAaV7ggj0wfUPxFdlsNnGErfpUIu+uOr8uYh8Yt0d3xXaLUmM03zz+9RMZU2yYVg6tVHOo7wAdNS7MOJK36VBPdiV16TRxG3T1vT7Q2npajRu2fytZ4hG2mC40EQELXMzAx3lqgpMX90NfMlQBXE8JwJBqr4LEBDJDCCGV2i1JSBvhbO5ZtQJzmHkn17e+Q4p2cmYsNCYIsfXqLRZsz0XLrQNgbe9XDvAumyt7biDIJq/s7YDtuIMdLHSmurVRzmd0nevBNsmFXPcFoPjYwsSlGQ7hA1taj56alqo5A7PC5MJ/50KAK4nfQeesfAPk0SHCKPSHgHyaGkGwv73YlddgGVnyxlsNnFuawbn/tQbdonTK+AQ2npaZ91KzPm532+Ovu/5F7e+Q2CwjtXW1qPoodGTfjjYwsRP3/JS0btn8aa8V2c/tQbdSLI2S9gNK9qvChtMNgNK9kEEemDfYO/DqGffVTFuju9Gab55y2GzjLxmgxolb9KgUmjiNswMd5W7C0cDIgIWuVUFJi/Fuju+sr0LKCu0WpJcs2oEwtf/p7XQzzEs2Z6LW96uHZtkwrDsY/ImdWqjnAJtkwqcCQap6w42P3IHZ4UFAFcTlb9KguK4ehR7sSuuDLYbOJLSjpvl1b4NfNzvtwvb3yGG09LU8dTiQmjds/gf2oNugb4Wzfa5JltvsHfhGLdHd4gIWub/D2pwZgY7yhEBC1yPZZ7/+GKuaWFr/9MWbM9FoArieNcN0u5OBINUOQOzwqdnJmHQYBb3SWlHTT5ud9uu0WpK2dZa3EDfC2Y32DvwqbyuU967nsVHss9/MLX/6b298hzKusKKU7OTMCS0o6a60DYFzdcGk1TeVykj2We/s2Z6LsRhSrhdaBsCKm8rlLQLvjfDDI6hWgXfGy0C740AAAAAGRsxQTI2YoIrLVPDZGzFBH139EVWWqeGT0GWx8jZigjRwrtJ+u/oiuP02custU8Mta5+TZ6DLY6HmBzPSsISUVPZIxB49HDTYe9Bki6u11U3teYUHJi11wWDhJaCG5hZmwCpGLAt+tupNsua5nddXf9sbBzUQT/fzVoOnpWEJKKMnxXjp7JGIL6pd2Hx6OGm6PPQ58PegyTaxbJlXV2uqkRGn+tva8wodnD9aTkxa64gKlrvCwcJLBIcOG3fRjbzxl0Hsu1wVHH0a2Uwuyrz96IxwraJHJF1kAegNBefvPsOhI26JaneeTyy7zhz83n/auhIvkHFG31Y3io88HlPBelifkTCTy2H21QcxpQVigGNDrtApiPog7842cI4oMUNIbv0TAqWp48TjZbOXMwACUXXMUhu+mKLd+FTyrq7XVSjoGwViI0/1pGWDpfe15hQx8ypEezh+tL1+suTcmLXXGt55h1AVLXeWU+EnxYOElgPFSMZJDhw2j0jQZtl/WunfOZa5lfLCSVO0DhkAZGuoxiKn+Izp8whKrz9YK0k4a+0P9DunxKDLYYJsmzJSCSr0FMV6vt+RiniZXdoLz959jYkSLcdCRt0BBIqNUtTvPJSSI2zeWXecGB+7zHn5vP+/v3Cv9XQkXzMy6A9g4o2+pqRB7uxvFR4qKdlOTuDmEsimKkKCbX6yRCuy4hf711PRvRsDm3ZP810wg6M81oSQ+pBIwLBbHDB2HdBgJc210eOLeYGpQC1xbwbhIRxQYoaaFq7W0N36JhabNnZFS1PHgw2fl8nGy2cPgAc3bmYABKggzFTi65ikJK1U9Hd9MUWxO/0V+/Cp5T22ZbVrge86bccjaicMd5rhSrvKspree3TcEis+F0bb+FGKi5m3jbhf8UHoFToVGNN82UiArLz5RupwqQwhJFnKZ+gJuTFrrj93p/51vPMOs/o/XuAqWu8mbJa/bKfCT6rhDh/LBwksDUHFfEeKkYyBzF3c0hw4bRRa9D1ekaDNmNdsnfL+tdO0uHmD/nMtczg14SNr5YSSraNIwudoHDIhLtBiQMjXUYaOGwHMRU/xCgODoVnT5hCflSpA1V5+sBMYsuBgTjFH5gj9F6zDqedqhWW3OVUABv8TzFa12Jimc55U9hJ4U8XUPp+VnvXLZVizBzULY2KEzSWu1Ifu+iRBqDZ0F5+8+xHZcKtbEiRbnVToC86EjboIwkHqQgkVGoRP2Urlqd55I+8SKWkkRtmvYoqJ/LLvODr0I2hwP3eYtnm7yMUvOG9DafQ/CaKgz8/kbJ+cNAkuWnLFfhC5kY7W/13etxla7XFflr07lMJN/dIOHa4Ca6xoRKf8Io/zDOTJP1yAAAAAAHCajcDhNRuAka+WQcJqNwGy8LrBI18sgVPFoUOE1G4D9E7jw2XhdYMVe/hCRr5ZAjYk1MKni0KC1xHPRwmo3Ad5MlHH6J3Hh5gHSkbLwusGu1hmxir38IZabX1EjXyyBP3mP8RsSamEHNMkRU8WhQU/jAjFriOehd65E04TUbgOY8s1zvJko46C/i5P0TuPD6GhAs8wDpSPQJQZTZeF1g3nH1vNdrDNjQYqQExV7+EMJXVszLTa+ozEQHdJGvlkCWpj6cn7zH+Ji1bySNiTUwioCd7IOaZIiEk8xUqeLQoK7reHyn8YEYoPgpxLXEc9CyzdsMu9ciaLzeirXCajcBxWOf3cx5ZrnLcM5l3kyUcdlFPK3QX8XJ11ZtFfonceH9Ltk99DQgWfM9iIXmAdKR4Qh6TegSgynvGyv1svC6wbX5Eh284+t5u+pDpa7WGbGp37FtoMVICafM4NWKvfwhjbRU/YSurZmDpwVFlptfUZGS942YiA7pn4GmNSNfLIEkVoRdLUx9OSpF1eU/eY/xOHAnLTFq3kk2Y3aVGxJqYRwbwr0VATvZEgiTBQc0yREAPWHNCSeYqQ4uMHVTxaFBVMwJnV3W8Pla31glT+MCMUjqqu1B8FOJRvn7VWuI56FsgU99ZZu2GWKSHsV3rkTRcKfsDXm9FWl+tL23hNRuA4Pdxt+Kxz+7jc6XZ5jyzXOf+2WvluGcy5HoNBe8mSjju5CAP7KKeVu1g9GHoL+Lk6e2I0+urNorqaVy9/RO48PzR0sf+l2ye/1UGqfoaECz72Hob+Z7EQvhcrnXzAOlI8sKDf/CEPSbxRlcR9AlBlPXLK6P3jZX69k//zdl4XWDYujdX2vyJDts+4znecfW837Ofi931IdLcN0vl12sM2NapZu/U79i21S2ygdBipATRoM4z0+ZwatIkGl3FXv4QxJyUJ8baKn7HGEBJwldWzMOVPPvB04KiwBHolctNr6jKj8WfyMl7xskLEfHMRAd0zYZtQ8/A0xrOArktka+WQJBt/HeSK0Iuk+koGZamPpyXZFSrlSLq8pTggMWfvMf4nn6tz5w4E5ad+nmhmLVvJJl3BRObMbtKmvPRfY2JNTCMS18Hjg3hXo/Pi2mKgJ3si0L324kESYKIxiO1g5pkiIJYDr+AHrDmgdza0YSTzFSFUaZjhxcYOobVcg2p4tCgqCC6l6pmBM6rpG75rut4fK8pEkutb6wSrK3GJafxgRimM+svpHVVdqW3P0Gg+CnEoTpD86N8/aqivpedtcRz0LQGGee2QKe+t4LNibLN2wyzD7E7sUkPYrCLZVW71yJouhVIX7hT9ga5kZwxvN6KtL0c4IO/Wl7avpg07QAAAAC4vGdlqgnIixK1r+6PYpdXN97wMiVrX9yd1zi5xbQo730IT4pvveBk1wGHAUrWv7jyatjd4N93M1hjEFZQGVef6KUw+voQnxRCrPhx33vAyGfHp611cghDzc5vJpWtf3AtERgVP6S3+4cY0J4az+gnonOPQrDGIKwIekfJoDKvPhiOyFsKO2e1socA0C9QOGmX7F8MhVnw4j3ll4dlhofR3TrgtM+PT1p3Myg/6uQQhlJYd+NA7dgN+FG/aPAr+KFIl5/EWiIwKuKeV09/SW/2x/UIk9VAp31t/MAYNZ/QTo0jtyuflhjFJyp/oLr9RxkCQSB8EPSPkqhI6PebFFg9I6g/WDEdkLaJoffTFHbPaqzKqA++fwfhBsNghF6gcNLmHBe39Km4WUwV3zzRwueFaX6A4HvLLw7Dd0hryw0PonOxaMdhBMcp2bigTERvmPX80/+Q7mZQflbaNxsOuSdNtgVAKKSw78YcDIijgduwGjln138r0niRk24f9Dsm9wODmpBmkS8/iCmTWO20RGBUDPgHMR5NqN+m8c+6/pLf7EYuuIlUmxdn7CdwAnHwSLvJTC/e2/mAMGNF51VrP6Cc04PH+cE2aBd5ig9y5F03y1zhUK5OVP9A9uiYJa6LiHMWN+8WBIJA+Lw+J50h6R8kmVV4QYvg168zXLDK7Vm2O1Xl0V5HUH6w/+wZ1WI7IWzah0YJyDLp53COjoIo7Z7UkFH5sYLkVl86WDE6p48Jgx8zbuYNhsEItTqmbb1A4aQF/IbBF0kpL6/1TkoyInbzip4Rlpgrvnggl9kdePTJS8BIri7S/QHAakFmpfeWXhxPKjl5XZ+Wl+Uj8fJNaxkF9dd+YOdi0Y5f3rbrwgmOUnq16TdoAEbZ0LwhvIjfMeowY1aPItb5YZpqngQHvaa9vwHB2K20bjYVCAlTHXJOmqXOKf+3e4YRD8fhdJIQ2c0qrL6oOBkRRoCldiPYxmZ1YHoBEHLPrv7Kc8mbV6TxIu8Ylkf9rTmpRRFezHZN7gbO8Ylj3EQmjWT4Qej5L3lRQZMeNFMmsdrrmta/s/nG6QtFoYwZ8A5ioUxpBzybUb6EJzbblpKZNS4u/lAmVLmZnuje/IxdcRI04RZ3qTYuzhGKSasDP+ZFu4OBIOPgkXZbXPYTSelZ/fFVPphsggYh1D5hRMaLzqp+N6nP1n9BOG7DJl18domzxMru1lkd1m/hobEK8xQe5EuoeYETy2nXq3cOsrnCoVwBfsY5nKn+gCQVmeU2oDYLjhxRboZmFqc+2nHCLG/eLJTTuUkJBIHwsbjmlaMNSXsbsS4eQ9I+SPtuWS3p2/bDUWeRpsywqR90DM56ZrlhlN4FBvEUBAAAtgcAAHoJAACZBQAAWwUAALoFAAAABAAARQUAAM8FAAB6CQBB0dkAC7YQAQIDBAQFBQYGBgYHBwcHCAgICAgICAgJCQkJCQkJCQoKCgoKCgoKCgoKCgoKCgoLCwsLCwsLCwsLCwsLCwsLDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAAAQERISExMUFBQUFRUVFRYWFhYWFhYWFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQABAgMEBQYHCAgJCQoKCwsMDAwMDQ0NDQ4ODg4PDw8PEBAQEBAQEBARERERERERERISEhISEhISExMTExMTExMUFBQUFBQUFBQUFBQUFBQUFRUVFRUVFRUVFRUVFRUVFRYWFhYWFhYWFhYWFhYWFhYXFxcXFxcXFxcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwQMAAAEDUAAAEBAAAeAQAADwAAAJA0AACQNQAAAAAAAB4AAAAPAAAAAAAAABA2AAAAAAAAEwAAAAcAAAAAAAAADAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";ug(Io)||(Io=h(Io));function gg(d){try{if(d==Io&&V)return new Uint8Array(V);var E=da(d);if(E)return E;if(C)return C(d);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(I){wr(I)}}function Bp(d,E){var I,k,T;try{T=gg(d),k=new WebAssembly.Module(T),I=new WebAssembly.Instance(k,E)}catch(te){var Z=te.toString();throw D("failed to compile wasm module: "+Z),(Z.includes("imported Memory")||Z.includes("memory import"))&&D("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),te}return[I,k]}function Qp(){var d={a:Ca};function E(T,Z){var te=T.exports;t.asm=te,A=t.asm.u,Or(A.buffer),gi=t.asm.pa,dA(t.asm.v),EA("wasm-instantiate")}if(mA("wasm-instantiate"),t.instantiateWasm)try{var I=t.instantiateWasm(d,E);return I}catch(T){return D("Module.instantiateWasm callback failed with error: "+T),!1}var k=Bp(Io,d);return E(k[0]),t.asm}var vr,se;function yo(d){for(;d.length>0;){var E=d.shift();if(typeof E=="function"){E(t);continue}var I=E.func;typeof I=="number"?E.arg===void 0?gi.get(I)():gi.get(I)(E.arg):I(E.arg===void 0?null:E.arg)}}function Rn(d,E){var I=new Date(de[d>>2]*1e3);de[E>>2]=I.getUTCSeconds(),de[E+4>>2]=I.getUTCMinutes(),de[E+8>>2]=I.getUTCHours(),de[E+12>>2]=I.getUTCDate(),de[E+16>>2]=I.getUTCMonth(),de[E+20>>2]=I.getUTCFullYear()-1900,de[E+24>>2]=I.getUTCDay(),de[E+36>>2]=0,de[E+32>>2]=0;var k=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),T=(I.getTime()-k)/(1e3*60*60*24)|0;return de[E+28>>2]=T,Rn.GMTString||(Rn.GMTString=Be("GMT")),de[E+40>>2]=Rn.GMTString,E}function fg(d,E){return Rn(d,E)}var Qt={splitPath:function(d){var E=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return E.exec(d).slice(1)},normalizeArray:function(d,E){for(var I=0,k=d.length-1;k>=0;k--){var T=d[k];T==="."?d.splice(k,1):T===".."?(d.splice(k,1),I++):I&&(d.splice(k,1),I--)}if(E)for(;I;I--)d.unshift("..");return d},normalize:function(d){var E=d.charAt(0)==="/",I=d.substr(-1)==="/";return d=Qt.normalizeArray(d.split("/").filter(function(k){return!!k}),!E).join("/"),!d&&!E&&(d="."),d&&I&&(d+="/"),(E?"/":"")+d},dirname:function(d){var E=Qt.splitPath(d),I=E[0],k=E[1];return!I&&!k?".":(k&&(k=k.substr(0,k.length-1)),I+k)},basename:function(d){if(d==="/")return"/";d=Qt.normalize(d),d=d.replace(/\/$/,"");var E=d.lastIndexOf("/");return E===-1?d:d.substr(E+1)},extname:function(d){return Qt.splitPath(d)[3]},join:function(){var d=Array.prototype.slice.call(arguments,0);return Qt.normalize(d.join("/"))},join2:function(d,E){return Qt.normalize(d+"/"+E)}};function Tl(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var d=new Uint8Array(1);return function(){return crypto.getRandomValues(d),d[0]}}else if(g)try{var E=J("crypto");return function(){return E.randomBytes(1)[0]}}catch{}return function(){wr("randomDevice")}}var Fn={resolve:function(){for(var d="",E=!1,I=arguments.length-1;I>=-1&&!E;I--){var k=I>=0?arguments[I]:S.cwd();if(typeof k!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!k)return"";d=k+"/"+d,E=k.charAt(0)==="/"}return d=Qt.normalizeArray(d.split("/").filter(function(T){return!!T}),!E).join("/"),(E?"/":"")+d||"."},relative:function(d,E){d=Fn.resolve(d).substr(1),E=Fn.resolve(E).substr(1);function I(Je){for(var nt=0;nt=0&&Je[wt]==="";wt--);return nt>wt?[]:Je.slice(nt,wt-nt+1)}for(var k=I(d.split("/")),T=I(E.split("/")),Z=Math.min(k.length,T.length),te=Z,we=0;we0?E=k.slice(0,T).toString("utf-8"):E=null}else typeof window<"u"&&typeof window.prompt=="function"?(E=window.prompt("Input: "),E!==null&&(E+=` `)):typeof readline=="function"&&(E=readline(),E!==null&&(E+=` -`));if(!E)return null;d.input=gA(E,!0)}return d.input.shift()},put_char:function(d,E){E===null||E===10?(v(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(v(ke(d.output,0)),d.output=[])}},default_tty1_ops:{put_char:function(d,E){E===null||E===10?(D(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(D(ke(d.output,0)),d.output=[])}}};function es(d){for(var E=H(d,65536),I=dt(E);d=E)){var k=1024*1024;E=Math.max(E,I*(I>>0),I!=0&&(E=Math.max(E,256));var T=d.contents;d.contents=new Uint8Array(E),d.usedBytes>0&&d.contents.set(T.subarray(0,d.usedBytes),0)}},resizeFileStorage:function(d,E){if(d.usedBytes!=E)if(E==0)d.contents=null,d.usedBytes=0;else{var I=d.contents;d.contents=new Uint8Array(E),I&&d.contents.set(I.subarray(0,Math.min(E,d.usedBytes))),d.usedBytes=E}},node_ops:{getattr:function(d){var E={};return E.dev=S.isChrdev(d.mode)?d.id:1,E.ino=d.id,E.mode=d.mode,E.nlink=1,E.uid=0,E.gid=0,E.rdev=d.rdev,S.isDir(d.mode)?E.size=4096:S.isFile(d.mode)?E.size=d.usedBytes:S.isLink(d.mode)?E.size=d.link.length:E.size=0,E.atime=new Date(d.timestamp),E.mtime=new Date(d.timestamp),E.ctime=new Date(d.timestamp),E.blksize=4096,E.blocks=Math.ceil(E.size/E.blksize),E},setattr:function(d,E){E.mode!==void 0&&(d.mode=E.mode),E.timestamp!==void 0&&(d.timestamp=E.timestamp),E.size!==void 0&>.resizeFileStorage(d,E.size)},lookup:function(d,E){throw S.genericErrors[44]},mknod:function(d,E,I,k){return gt.createNode(d,E,I,k)},rename:function(d,E,I){if(S.isDir(d.mode)){var k;try{k=S.lookupNode(E,I)}catch{}if(k)for(var T in k.contents)throw new S.ErrnoError(55)}delete d.parent.contents[d.name],d.parent.timestamp=Date.now(),d.name=I,E.contents[I]=d,E.timestamp=d.parent.timestamp,d.parent=E},unlink:function(d,E){delete d.contents[E],d.timestamp=Date.now()},rmdir:function(d,E){var I=S.lookupNode(d,E);for(var k in I.contents)throw new S.ErrnoError(55);delete d.contents[E],d.timestamp=Date.now()},readdir:function(d){var E=[".",".."];for(var I in d.contents)!d.contents.hasOwnProperty(I)||E.push(I);return E},symlink:function(d,E,I){var k=gt.createNode(d,E,41471,0);return k.link=I,k},readlink:function(d){if(!S.isLink(d.mode))throw new S.ErrnoError(28);return d.link}},stream_ops:{read:function(d,E,I,k,T){var _=d.node.contents;if(T>=d.node.usedBytes)return 0;var te=Math.min(d.node.usedBytes-T,k);if(te>8&&_.subarray)E.set(_.subarray(T,T+te),I);else for(var Be=0;Be0||k+I>2)}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}return E.mode},realPath:function(d){for(var E=[];d.parent!==d;)E.push(d.name),d=d.parent;return E.push(d.mount.opts.root),E.reverse(),Qt.join.apply(null,E)},flagsForNode:function(d){d&=-2097153,d&=-2049,d&=-32769,d&=-524289;var E=0;for(var I in At.flagsForNodeMap)d&I&&(E|=At.flagsForNodeMap[I],d^=I);if(d)throw new S.ErrnoError(28);return E},node_ops:{getattr:function(d){var E=At.realPath(d),I;try{I=Te.lstatSync(E)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}return At.isWindows&&!I.blksize&&(I.blksize=4096),At.isWindows&&!I.blocks&&(I.blocks=(I.size+I.blksize-1)/I.blksize|0),{dev:I.dev,ino:I.ino,mode:I.mode,nlink:I.nlink,uid:I.uid,gid:I.gid,rdev:I.rdev,size:I.size,atime:I.atime,mtime:I.mtime,ctime:I.ctime,blksize:I.blksize,blocks:I.blocks}},setattr:function(d,E){var I=At.realPath(d);try{if(E.mode!==void 0&&(Te.chmodSync(I,E.mode),d.mode=E.mode),E.timestamp!==void 0){var k=new Date(E.timestamp);Te.utimesSync(I,k,k)}E.size!==void 0&&Te.truncateSync(I,E.size)}catch(T){throw T.code?new S.ErrnoError(At.convertNodeCode(T)):T}},lookup:function(d,E){var I=Qt.join2(At.realPath(d),E),k=At.getMode(I);return At.createNode(d,E,k)},mknod:function(d,E,I,k){var T=At.createNode(d,E,I,k),_=At.realPath(T);try{S.isDir(T.mode)?Te.mkdirSync(_,T.mode):Te.writeFileSync(_,"",{mode:T.mode})}catch(te){throw te.code?new S.ErrnoError(At.convertNodeCode(te)):te}return T},rename:function(d,E,I){var k=At.realPath(d),T=Qt.join2(At.realPath(E),I);try{Te.renameSync(k,T)}catch(_){throw _.code?new S.ErrnoError(At.convertNodeCode(_)):_}d.name=I},unlink:function(d,E){var I=Qt.join2(At.realPath(d),E);try{Te.unlinkSync(I)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}},rmdir:function(d,E){var I=Qt.join2(At.realPath(d),E);try{Te.rmdirSync(I)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}},readdir:function(d){var E=At.realPath(d);try{return Te.readdirSync(E)}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}},symlink:function(d,E,I){var k=Qt.join2(At.realPath(d),E);try{Te.symlinkSync(I,k)}catch(T){throw T.code?new S.ErrnoError(At.convertNodeCode(T)):T}},readlink:function(d){var E=At.realPath(d);try{return E=Te.readlinkSync(E),E=og.relative(og.resolve(d.mount.opts.root),E),E}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}}},stream_ops:{open:function(d){var E=At.realPath(d.node);try{S.isFile(d.node.mode)&&(d.nfd=Te.openSync(E,At.flagsForNode(d.flags)))}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}},close:function(d){try{S.isFile(d.node.mode)&&d.nfd&&Te.closeSync(d.nfd)}catch(E){throw E.code?new S.ErrnoError(At.convertNodeCode(E)):E}},read:function(d,E,I,k,T){if(k===0)return 0;try{return Te.readSync(d.nfd,At.bufferFrom(E.buffer),I,k,T)}catch(_){throw new S.ErrnoError(At.convertNodeCode(_))}},write:function(d,E,I,k,T){try{return Te.writeSync(d.nfd,At.bufferFrom(E.buffer),I,k,T)}catch(_){throw new S.ErrnoError(At.convertNodeCode(_))}},llseek:function(d,E,I){var k=E;if(I===1)k+=d.position;else if(I===2&&S.isFile(d.node.mode))try{var T=Te.fstatSync(d.nfd);k+=T.size}catch(_){throw new S.ErrnoError(At.convertNodeCode(_))}if(k<0)throw new S.ErrnoError(28);return k},mmap:function(d,E,I,k,T,_){if(E!==0)throw new S.ErrnoError(28);if(!S.isFile(d.node.mode))throw new S.ErrnoError(43);var te=es(I);return At.stream_ops.read(d,ne,te,I,k),{ptr:te,allocated:!0}},msync:function(d,E,I,k,T){if(!S.isFile(d.node.mode))throw new S.ErrnoError(43);if(T&2)return 0;var _=At.stream_ops.write(d,E,0,k,I,!1);return 0}}},an={lookupPath:function(d){return{path:d,node:{mode:At.getMode(d)}}},createStandardStreams:function(){S.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var d=1;d<3;d++)S.streams[d]={fd:d,nfd:d,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(d,E){S.isDir(d)?Te.mkdirSync(d,E):Te.writeFileSync(d,"",{mode:E})},mkdir:function(){Te.mkdirSync.apply(void 0,arguments)},symlink:function(){Te.symlinkSync.apply(void 0,arguments)},rename:function(){Te.renameSync.apply(void 0,arguments)},rmdir:function(){Te.rmdirSync.apply(void 0,arguments)},readdir:function(){Te.readdirSync.apply(void 0,arguments)},unlink:function(){Te.unlinkSync.apply(void 0,arguments)},readlink:function(){return Te.readlinkSync.apply(void 0,arguments)},stat:function(){return Te.statSync.apply(void 0,arguments)},lstat:function(){return Te.lstatSync.apply(void 0,arguments)},chmod:function(){Te.chmodSync.apply(void 0,arguments)},fchmod:function(){Te.fchmodSync.apply(void 0,arguments)},chown:function(){Te.chownSync.apply(void 0,arguments)},fchown:function(){Te.fchownSync.apply(void 0,arguments)},truncate:function(){Te.truncateSync.apply(void 0,arguments)},ftruncate:function(d,E){if(E<0)throw new S.ErrnoError(28);Te.ftruncateSync.apply(void 0,arguments)},utime:function(){Te.utimesSync.apply(void 0,arguments)},open:function(d,E,I,k){typeof E=="string"&&(E=Os.modeStringToFlags(E));var T=Te.openSync(d,At.flagsForNode(E),I),_=k!=null?k:S.nextfd(T),te={fd:_,nfd:T,position:0,path:d,flags:E,seekable:!0};return S.streams[_]=te,te},close:function(d){d.stream_ops||Te.closeSync(d.nfd),S.closeStream(d.fd)},llseek:function(d,E,I){if(d.stream_ops)return Os.llseek(d,E,I);var k=E;if(I===1)k+=d.position;else if(I===2)k+=Te.fstatSync(d.nfd).size;else if(I!==0)throw new S.ErrnoError(mo.EINVAL);if(k<0)throw new S.ErrnoError(mo.EINVAL);return d.position=k,k},read:function(d,E,I,k,T){if(d.stream_ops)return Os.read(d,E,I,k,T);var _=typeof T<"u";!_&&d.seekable&&(T=d.position);var te=Te.readSync(d.nfd,At.bufferFrom(E.buffer),I,k,T);return _||(d.position+=te),te},write:function(d,E,I,k,T){if(d.stream_ops)return Os.write(d,E,I,k,T);d.flags&+"1024"&&S.llseek(d,0,+"2");var _=typeof T<"u";!_&&d.seekable&&(T=d.position);var te=Te.writeSync(d.nfd,At.bufferFrom(E.buffer),I,k,T);return _||(d.position+=te),te},allocate:function(){throw new S.ErrnoError(mo.EOPNOTSUPP)},mmap:function(d,E,I,k,T,_){if(d.stream_ops)return Os.mmap(d,E,I,k,T,_);if(E!==0)throw new S.ErrnoError(28);var te=es(I);return S.read(d,ne,te,I,k),{ptr:te,allocated:!0}},msync:function(d,E,I,k,T){return d.stream_ops?Os.msync(d,E,I,k,T):(T&2||S.write(d,E,0,k,I),0)},munmap:function(){return 0},ioctl:function(){throw new S.ErrnoError(mo.ENOTTY)}},S={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(d,E){if(d=kn.resolve(S.cwd(),d),E=E||{},!d)return{path:"",node:null};var I={follow_mount:!0,recurse_count:0};for(var k in I)E[k]===void 0&&(E[k]=I[k]);if(E.recurse_count>8)throw new S.ErrnoError(32);for(var T=Qt.normalizeArray(d.split("/").filter(function(lt){return!!lt}),!1),_=S.root,te="/",Be=0;Be40)throw new S.ErrnoError(32)}}return{path:te,node:_}},getPath:function(d){for(var E;;){if(S.isRoot(d)){var I=d.mount.mountpoint;return E?I[I.length-1]!=="/"?I+"/"+E:I+E:I}E=E?d.name+"/"+E:d.name,d=d.parent}},hashName:function(d,E){for(var I=0,k=0;k>>0)%S.nameTable.length},hashAddNode:function(d){var E=S.hashName(d.parent.id,d.name);d.name_next=S.nameTable[E],S.nameTable[E]=d},hashRemoveNode:function(d){var E=S.hashName(d.parent.id,d.name);if(S.nameTable[E]===d)S.nameTable[E]=d.name_next;else for(var I=S.nameTable[E];I;){if(I.name_next===d){I.name_next=d.name_next;break}I=I.name_next}},lookupNode:function(d,E){var I=S.mayLookup(d);if(I)throw new S.ErrnoError(I,d);for(var k=S.hashName(d.id,E),T=S.nameTable[k];T;T=T.name_next){var _=T.name;if(T.parent.id===d.id&&_===E)return T}return S.lookup(d,E)},createNode:function(d,E,I,k){var T=new S.FSNode(d,E,I,k);return S.hashAddNode(T),T},destroyNode:function(d){S.hashRemoveNode(d)},isRoot:function(d){return d===d.parent},isMountpoint:function(d){return!!d.mounted},isFile:function(d){return(d&61440)===32768},isDir:function(d){return(d&61440)===16384},isLink:function(d){return(d&61440)===40960},isChrdev:function(d){return(d&61440)===8192},isBlkdev:function(d){return(d&61440)===24576},isFIFO:function(d){return(d&61440)===4096},isSocket:function(d){return(d&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(d){var E=S.flagModes[d];if(typeof E>"u")throw new Error("Unknown file open mode: "+d);return E},flagsToPermissionString:function(d){var E=["r","w","rw"][d&3];return d&512&&(E+="w"),E},nodePermissions:function(d,E){return S.ignorePermissions?0:E.includes("r")&&!(d.mode&292)||E.includes("w")&&!(d.mode&146)||E.includes("x")&&!(d.mode&73)?2:0},mayLookup:function(d){var E=S.nodePermissions(d,"x");return E||(d.node_ops.lookup?0:2)},mayCreate:function(d,E){try{var I=S.lookupNode(d,E);return 20}catch{}return S.nodePermissions(d,"wx")},mayDelete:function(d,E,I){var k;try{k=S.lookupNode(d,E)}catch(_){return _.errno}var T=S.nodePermissions(d,"wx");if(T)return T;if(I){if(!S.isDir(k.mode))return 54;if(S.isRoot(k)||S.getPath(k)===S.cwd())return 10}else if(S.isDir(k.mode))return 31;return 0},mayOpen:function(d,E){return d?S.isLink(d.mode)?32:S.isDir(d.mode)&&(S.flagsToPermissionString(E)!=="r"||E&512)?31:S.nodePermissions(d,S.flagsToPermissionString(E)):44},MAX_OPEN_FDS:4096,nextfd:function(d,E){d=d||0,E=E||S.MAX_OPEN_FDS;for(var I=d;I<=E;I++)if(!S.streams[I])return I;throw new S.ErrnoError(33)},getStream:function(d){return S.streams[d]},createStream:function(d,E,I){S.FSStream||(S.FSStream=function(){},S.FSStream.prototype={object:{get:function(){return this.node},set:function(te){this.node=te}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var k=new S.FSStream;for(var T in d)k[T]=d[T];d=k;var _=S.nextfd(E,I);return d.fd=_,S.streams[_]=d,d},closeStream:function(d){S.streams[d]=null},chrdev_stream_ops:{open:function(d){var E=S.getDevice(d.node.rdev);d.stream_ops=E.stream_ops,d.stream_ops.open&&d.stream_ops.open(d)},llseek:function(){throw new S.ErrnoError(70)}},major:function(d){return d>>8},minor:function(d){return d&255},makedev:function(d,E){return d<<8|E},registerDevice:function(d,E){S.devices[d]={stream_ops:E}},getDevice:function(d){return S.devices[d]},getMounts:function(d){for(var E=[],I=[d];I.length;){var k=I.pop();E.push(k),I.push.apply(I,k.mounts)}return E},syncfs:function(d,E){typeof d=="function"&&(E=d,d=!1),S.syncFSRequests++,S.syncFSRequests>1&&D("warning: "+S.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var I=S.getMounts(S.root.mount),k=0;function T(te){return S.syncFSRequests--,E(te)}function _(te){if(te)return _.errored?void 0:(_.errored=!0,T(te));++k>=I.length&&T(null)}I.forEach(function(te){if(!te.type.syncfs)return _(null);te.type.syncfs(te,d,_)})},mount:function(d,E,I){var k=I==="/",T=!I,_;if(k&&S.root)throw new S.ErrnoError(10);if(!k&&!T){var te=S.lookupPath(I,{follow_mount:!1});if(I=te.path,_=te.node,S.isMountpoint(_))throw new S.ErrnoError(10);if(!S.isDir(_.mode))throw new S.ErrnoError(54)}var Be={type:d,opts:E,mountpoint:I,mounts:[]},me=d.mount(Be);return me.mount=Be,Be.root=me,k?S.root=me:_&&(_.mounted=Be,_.mount&&_.mount.mounts.push(Be)),me},unmount:function(d){var E=S.lookupPath(d,{follow_mount:!1});if(!S.isMountpoint(E.node))throw new S.ErrnoError(28);var I=E.node,k=I.mounted,T=S.getMounts(k);Object.keys(S.nameTable).forEach(function(te){for(var Be=S.nameTable[te];Be;){var me=Be.name_next;T.includes(Be.mount)&&S.destroyNode(Be),Be=me}}),I.mounted=null;var _=I.mount.mounts.indexOf(k);I.mount.mounts.splice(_,1)},lookup:function(d,E){return d.node_ops.lookup(d,E)},mknod:function(d,E,I){var k=S.lookupPath(d,{parent:!0}),T=k.node,_=Qt.basename(d);if(!_||_==="."||_==="..")throw new S.ErrnoError(28);var te=S.mayCreate(T,_);if(te)throw new S.ErrnoError(te);if(!T.node_ops.mknod)throw new S.ErrnoError(63);return T.node_ops.mknod(T,_,E,I)},create:function(d,E){return E=E!==void 0?E:438,E&=4095,E|=32768,S.mknod(d,E,0)},mkdir:function(d,E){return E=E!==void 0?E:511,E&=1023,E|=16384,S.mknod(d,E,0)},mkdirTree:function(d,E){for(var I=d.split("/"),k="",T=0;T"u"&&(I=E,E=438),E|=8192,S.mknod(d,E,I)},symlink:function(d,E){if(!kn.resolve(d))throw new S.ErrnoError(44);var I=S.lookupPath(E,{parent:!0}),k=I.node;if(!k)throw new S.ErrnoError(44);var T=Qt.basename(E),_=S.mayCreate(k,T);if(_)throw new S.ErrnoError(_);if(!k.node_ops.symlink)throw new S.ErrnoError(63);return k.node_ops.symlink(k,T,d)},rename:function(d,E){var I=Qt.dirname(d),k=Qt.dirname(E),T=Qt.basename(d),_=Qt.basename(E),te,Be,me;if(te=S.lookupPath(d,{parent:!0}),Be=te.node,te=S.lookupPath(E,{parent:!0}),me=te.node,!Be||!me)throw new S.ErrnoError(44);if(Be.mount!==me.mount)throw new S.ErrnoError(75);var Je=S.lookupNode(Be,T),nt=kn.relative(d,k);if(nt.charAt(0)!==".")throw new S.ErrnoError(28);if(nt=kn.relative(E,I),nt.charAt(0)!==".")throw new S.ErrnoError(55);var wt;try{wt=S.lookupNode(me,_)}catch{}if(Je!==wt){var lt=S.isDir(Je.mode),it=S.mayDelete(Be,T,lt);if(it)throw new S.ErrnoError(it);if(it=wt?S.mayDelete(me,_,lt):S.mayCreate(me,_),it)throw new S.ErrnoError(it);if(!Be.node_ops.rename)throw new S.ErrnoError(63);if(S.isMountpoint(Je)||wt&&S.isMountpoint(wt))throw new S.ErrnoError(10);if(me!==Be&&(it=S.nodePermissions(Be,"w"),it))throw new S.ErrnoError(it);try{S.trackingDelegate.willMovePath&&S.trackingDelegate.willMovePath(d,E)}catch(Et){D("FS.trackingDelegate['willMovePath']('"+d+"', '"+E+"') threw an exception: "+Et.message)}S.hashRemoveNode(Je);try{Be.node_ops.rename(Je,me,_)}catch(Et){throw Et}finally{S.hashAddNode(Je)}try{S.trackingDelegate.onMovePath&&S.trackingDelegate.onMovePath(d,E)}catch(Et){D("FS.trackingDelegate['onMovePath']('"+d+"', '"+E+"') threw an exception: "+Et.message)}}},rmdir:function(d){var E=S.lookupPath(d,{parent:!0}),I=E.node,k=Qt.basename(d),T=S.lookupNode(I,k),_=S.mayDelete(I,k,!0);if(_)throw new S.ErrnoError(_);if(!I.node_ops.rmdir)throw new S.ErrnoError(63);if(S.isMountpoint(T))throw new S.ErrnoError(10);try{S.trackingDelegate.willDeletePath&&S.trackingDelegate.willDeletePath(d)}catch(te){D("FS.trackingDelegate['willDeletePath']('"+d+"') threw an exception: "+te.message)}I.node_ops.rmdir(I,k),S.destroyNode(T);try{S.trackingDelegate.onDeletePath&&S.trackingDelegate.onDeletePath(d)}catch(te){D("FS.trackingDelegate['onDeletePath']('"+d+"') threw an exception: "+te.message)}},readdir:function(d){var E=S.lookupPath(d,{follow:!0}),I=E.node;if(!I.node_ops.readdir)throw new S.ErrnoError(54);return I.node_ops.readdir(I)},unlink:function(d){var E=S.lookupPath(d,{parent:!0}),I=E.node,k=Qt.basename(d),T=S.lookupNode(I,k),_=S.mayDelete(I,k,!1);if(_)throw new S.ErrnoError(_);if(!I.node_ops.unlink)throw new S.ErrnoError(63);if(S.isMountpoint(T))throw new S.ErrnoError(10);try{S.trackingDelegate.willDeletePath&&S.trackingDelegate.willDeletePath(d)}catch(te){D("FS.trackingDelegate['willDeletePath']('"+d+"') threw an exception: "+te.message)}I.node_ops.unlink(I,k),S.destroyNode(T);try{S.trackingDelegate.onDeletePath&&S.trackingDelegate.onDeletePath(d)}catch(te){D("FS.trackingDelegate['onDeletePath']('"+d+"') threw an exception: "+te.message)}},readlink:function(d){var E=S.lookupPath(d),I=E.node;if(!I)throw new S.ErrnoError(44);if(!I.node_ops.readlink)throw new S.ErrnoError(28);return kn.resolve(S.getPath(I.parent),I.node_ops.readlink(I))},stat:function(d,E){var I=S.lookupPath(d,{follow:!E}),k=I.node;if(!k)throw new S.ErrnoError(44);if(!k.node_ops.getattr)throw new S.ErrnoError(63);return k.node_ops.getattr(k)},lstat:function(d){return S.stat(d,!0)},chmod:function(d,E,I){var k;if(typeof d=="string"){var T=S.lookupPath(d,{follow:!I});k=T.node}else k=d;if(!k.node_ops.setattr)throw new S.ErrnoError(63);k.node_ops.setattr(k,{mode:E&4095|k.mode&-4096,timestamp:Date.now()})},lchmod:function(d,E){S.chmod(d,E,!0)},fchmod:function(d,E){var I=S.getStream(d);if(!I)throw new S.ErrnoError(8);S.chmod(I.node,E)},chown:function(d,E,I,k){var T;if(typeof d=="string"){var _=S.lookupPath(d,{follow:!k});T=_.node}else T=d;if(!T.node_ops.setattr)throw new S.ErrnoError(63);T.node_ops.setattr(T,{timestamp:Date.now()})},lchown:function(d,E,I){S.chown(d,E,I,!0)},fchown:function(d,E,I){var k=S.getStream(d);if(!k)throw new S.ErrnoError(8);S.chown(k.node,E,I)},truncate:function(d,E){if(E<0)throw new S.ErrnoError(28);var I;if(typeof d=="string"){var k=S.lookupPath(d,{follow:!0});I=k.node}else I=d;if(!I.node_ops.setattr)throw new S.ErrnoError(63);if(S.isDir(I.mode))throw new S.ErrnoError(31);if(!S.isFile(I.mode))throw new S.ErrnoError(28);var T=S.nodePermissions(I,"w");if(T)throw new S.ErrnoError(T);I.node_ops.setattr(I,{size:E,timestamp:Date.now()})},ftruncate:function(d,E){var I=S.getStream(d);if(!I)throw new S.ErrnoError(8);if((I.flags&2097155)===0)throw new S.ErrnoError(28);S.truncate(I.node,E)},utime:function(d,E,I){var k=S.lookupPath(d,{follow:!0}),T=k.node;T.node_ops.setattr(T,{timestamp:Math.max(E,I)})},open:function(d,E,I,k,T){if(d==="")throw new S.ErrnoError(44);E=typeof E=="string"?S.modeStringToFlags(E):E,I=typeof I>"u"?438:I,E&64?I=I&4095|32768:I=0;var _;if(typeof d=="object")_=d;else{d=Qt.normalize(d);try{var te=S.lookupPath(d,{follow:!(E&131072)});_=te.node}catch{}}var Be=!1;if(E&64)if(_){if(E&128)throw new S.ErrnoError(20)}else _=S.mknod(d,I,0),Be=!0;if(!_)throw new S.ErrnoError(44);if(S.isChrdev(_.mode)&&(E&=-513),E&65536&&!S.isDir(_.mode))throw new S.ErrnoError(54);if(!Be){var me=S.mayOpen(_,E);if(me)throw new S.ErrnoError(me)}E&512&&S.truncate(_,0),E&=-131713;var Je=S.createStream({node:_,path:S.getPath(_),flags:E,seekable:!0,position:0,stream_ops:_.stream_ops,ungotten:[],error:!1},k,T);Je.stream_ops.open&&Je.stream_ops.open(Je),t.logReadFiles&&!(E&1)&&(S.readFiles||(S.readFiles={}),d in S.readFiles||(S.readFiles[d]=1,D("FS.trackingDelegate error on read file: "+d)));try{if(S.trackingDelegate.onOpenFile){var nt=0;(E&2097155)!==1&&(nt|=S.tracking.openFlags.READ),(E&2097155)!==0&&(nt|=S.tracking.openFlags.WRITE),S.trackingDelegate.onOpenFile(d,nt)}}catch(wt){D("FS.trackingDelegate['onOpenFile']('"+d+"', flags) threw an exception: "+wt.message)}return Je},close:function(d){if(S.isClosed(d))throw new S.ErrnoError(8);d.getdents&&(d.getdents=null);try{d.stream_ops.close&&d.stream_ops.close(d)}catch(E){throw E}finally{S.closeStream(d.fd)}d.fd=null},isClosed:function(d){return d.fd===null},llseek:function(d,E,I){if(S.isClosed(d))throw new S.ErrnoError(8);if(!d.seekable||!d.stream_ops.llseek)throw new S.ErrnoError(70);if(I!=0&&I!=1&&I!=2)throw new S.ErrnoError(28);return d.position=d.stream_ops.llseek(d,E,I),d.ungotten=[],d.position},read:function(d,E,I,k,T){if(k<0||T<0)throw new S.ErrnoError(28);if(S.isClosed(d))throw new S.ErrnoError(8);if((d.flags&2097155)===1)throw new S.ErrnoError(8);if(S.isDir(d.node.mode))throw new S.ErrnoError(31);if(!d.stream_ops.read)throw new S.ErrnoError(28);var _=typeof T<"u";if(!_)T=d.position;else if(!d.seekable)throw new S.ErrnoError(70);var te=d.stream_ops.read(d,E,I,k,T);return _||(d.position+=te),te},write:function(d,E,I,k,T,_){if(k<0||T<0)throw new S.ErrnoError(28);if(S.isClosed(d))throw new S.ErrnoError(8);if((d.flags&2097155)===0)throw new S.ErrnoError(8);if(S.isDir(d.node.mode))throw new S.ErrnoError(31);if(!d.stream_ops.write)throw new S.ErrnoError(28);d.seekable&&d.flags&1024&&S.llseek(d,0,2);var te=typeof T<"u";if(!te)T=d.position;else if(!d.seekable)throw new S.ErrnoError(70);var Be=d.stream_ops.write(d,E,I,k,T,_);te||(d.position+=Be);try{d.path&&S.trackingDelegate.onWriteToFile&&S.trackingDelegate.onWriteToFile(d.path)}catch(me){D("FS.trackingDelegate['onWriteToFile']('"+d.path+"') threw an exception: "+me.message)}return Be},allocate:function(d,E,I){if(S.isClosed(d))throw new S.ErrnoError(8);if(E<0||I<=0)throw new S.ErrnoError(28);if((d.flags&2097155)===0)throw new S.ErrnoError(8);if(!S.isFile(d.node.mode)&&!S.isDir(d.node.mode))throw new S.ErrnoError(43);if(!d.stream_ops.allocate)throw new S.ErrnoError(138);d.stream_ops.allocate(d,E,I)},mmap:function(d,E,I,k,T,_){if((T&2)!==0&&(_&2)===0&&(d.flags&2097155)!==2)throw new S.ErrnoError(2);if((d.flags&2097155)===1)throw new S.ErrnoError(2);if(!d.stream_ops.mmap)throw new S.ErrnoError(43);return d.stream_ops.mmap(d,E,I,k,T,_)},msync:function(d,E,I,k,T){return!d||!d.stream_ops.msync?0:d.stream_ops.msync(d,E,I,k,T)},munmap:function(d){return 0},ioctl:function(d,E,I){if(!d.stream_ops.ioctl)throw new S.ErrnoError(59);return d.stream_ops.ioctl(d,E,I)},readFile:function(d,E){if(E=E||{},E.flags=E.flags||0,E.encoding=E.encoding||"binary",E.encoding!=="utf8"&&E.encoding!=="binary")throw new Error('Invalid encoding type "'+E.encoding+'"');var I,k=S.open(d,E.flags),T=S.stat(d),_=T.size,te=new Uint8Array(_);return S.read(k,te,0,_,0),E.encoding==="utf8"?I=ke(te,0):E.encoding==="binary"&&(I=te),S.close(k),I},writeFile:function(d,E,I){I=I||{},I.flags=I.flags||577;var k=S.open(d,I.flags,I.mode);if(typeof E=="string"){var T=new Uint8Array(le(E)+1),_=Ne(E,T,0,T.length);S.write(k,T,0,_,void 0,I.canOwn)}else if(ArrayBuffer.isView(E))S.write(k,E,0,E.byteLength,void 0,I.canOwn);else throw new Error("Unsupported data type");S.close(k)},cwd:function(){return S.currentPath},chdir:function(d){var E=S.lookupPath(d,{follow:!0});if(E.node===null)throw new S.ErrnoError(44);if(!S.isDir(E.node.mode))throw new S.ErrnoError(54);var I=S.nodePermissions(E.node,"x");if(I)throw new S.ErrnoError(I);S.currentPath=E.path},createDefaultDirectories:function(){S.mkdir("/tmp"),S.mkdir("/home"),S.mkdir("/home/web_user")},createDefaultDevices:function(){S.mkdir("/dev"),S.registerDevice(S.makedev(1,3),{read:function(){return 0},write:function(E,I,k,T,_){return T}}),S.mkdev("/dev/null",S.makedev(1,3)),$n.register(S.makedev(5,0),$n.default_tty_ops),$n.register(S.makedev(6,0),$n.default_tty1_ops),S.mkdev("/dev/tty",S.makedev(5,0)),S.mkdev("/dev/tty1",S.makedev(6,0));var d=Bl();S.createDevice("/dev","random",d),S.createDevice("/dev","urandom",d),S.mkdir("/dev/shm"),S.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){S.mkdir("/proc");var d=S.mkdir("/proc/self");S.mkdir("/proc/self/fd"),S.mount({mount:function(){var E=S.createNode(d,"fd",16895,73);return E.node_ops={lookup:function(I,k){var T=+k,_=S.getStream(T);if(!_)throw new S.ErrnoError(8);var te={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return _.path}}};return te.parent=te,te}},E}},{},"/proc/self/fd")},createStandardStreams:function(){t.stdin?S.createDevice("/dev","stdin",t.stdin):S.symlink("/dev/tty","/dev/stdin"),t.stdout?S.createDevice("/dev","stdout",null,t.stdout):S.symlink("/dev/tty","/dev/stdout"),t.stderr?S.createDevice("/dev","stderr",null,t.stderr):S.symlink("/dev/tty1","/dev/stderr");var d=S.open("/dev/stdin",0),E=S.open("/dev/stdout",1),I=S.open("/dev/stderr",1)},ensureErrnoError:function(){S.ErrnoError||(S.ErrnoError=function(E,I){this.node=I,this.setErrno=function(k){this.errno=k},this.setErrno(E),this.message="FS error"},S.ErrnoError.prototype=new Error,S.ErrnoError.prototype.constructor=S.ErrnoError,[44].forEach(function(d){S.genericErrors[d]=new S.ErrnoError(d),S.genericErrors[d].stack=""}))},staticInit:function(){S.ensureErrnoError(),S.nameTable=new Array(4096),S.mount(gt,{},"/"),S.createDefaultDirectories(),S.createDefaultDevices(),S.createSpecialDirectories(),S.filesystems={MEMFS:gt,NODEFS:At}},init:function(d,E,I){S.init.initialized=!0,S.ensureErrnoError(),t.stdin=d||t.stdin,t.stdout=E||t.stdout,t.stderr=I||t.stderr,S.createStandardStreams()},quit:function(){S.init.initialized=!1;var d=t._fflush;d&&d(0);for(var E=0;Ethis.length-1||lt<0)){var it=lt%this.chunkSize,Et=lt/this.chunkSize|0;return this.getter(Et)[it]}},_.prototype.setDataGetter=function(lt){this.getter=lt},_.prototype.cacheLength=function(){var lt=new XMLHttpRequest;if(lt.open("HEAD",I,!1),lt.send(null),!(lt.status>=200&<.status<300||lt.status===304))throw new Error("Couldn't load "+I+". Status: "+lt.status);var it=Number(lt.getResponseHeader("Content-length")),Et,Qe=(Et=lt.getResponseHeader("Accept-Ranges"))&&Et==="bytes",Nn=(Et=lt.getResponseHeader("Content-Encoding"))&&Et==="gzip",ki=1024*1024;Qe||(ki=it);var CA=function(ts,ga){if(ts>ga)throw new Error("invalid range ("+ts+", "+ga+") or no bytes requested!");if(ga>it-1)throw new Error("only "+it+" bytes available! programmer error!");var Kr=new XMLHttpRequest;if(Kr.open("GET",I,!1),it!==ki&&Kr.setRequestHeader("Range","bytes="+ts+"-"+ga),typeof Uint8Array<"u"&&(Kr.responseType="arraybuffer"),Kr.overrideMimeType&&Kr.overrideMimeType("text/plain; charset=x-user-defined"),Kr.send(null),!(Kr.status>=200&&Kr.status<300||Kr.status===304))throw new Error("Couldn't load "+I+". Status: "+Kr.status);return Kr.response!==void 0?new Uint8Array(Kr.response||[]):gA(Kr.responseText||"",!0)},Mr=this;Mr.setDataGetter(function(ts){var ga=ts*ki,Kr=(ts+1)*ki-1;if(Kr=Math.min(Kr,it-1),typeof Mr.chunks[ts]>"u"&&(Mr.chunks[ts]=CA(ga,Kr)),typeof Mr.chunks[ts]>"u")throw new Error("doXHR failed!");return Mr.chunks[ts]}),(Nn||!it)&&(ki=it=1,it=this.getter(0).length,ki=it,v("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=it,this._chunkSize=ki,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var te=new _;Object.defineProperties(te,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var Be={isDevice:!1,contents:te}}else var Be={isDevice:!1,url:I};var me=S.createFile(d,E,Be,k,T);Be.contents?me.contents=Be.contents:Be.url&&(me.contents=null,me.url=Be.url),Object.defineProperties(me,{usedBytes:{get:function(){return this.contents.length}}});var Je={},nt=Object.keys(me.stream_ops);return nt.forEach(function(wt){var lt=me.stream_ops[wt];Je[wt]=function(){return S.forceLoadFile(me),lt.apply(null,arguments)}}),Je.read=function(lt,it,Et,Qe,Nn){S.forceLoadFile(me);var ki=lt.node.contents;if(Nn>=ki.length)return 0;var CA=Math.min(ki.length-Nn,Qe);if(ki.slice)for(var Mr=0;Mr>2]=k.dev,de[I+4>>2]=0,de[I+8>>2]=k.ino,de[I+12>>2]=k.mode,de[I+16>>2]=k.nlink,de[I+20>>2]=k.uid,de[I+24>>2]=k.gid,de[I+28>>2]=k.rdev,de[I+32>>2]=0,se=[k.size>>>0,(vr=k.size,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[I+40>>2]=se[0],de[I+44>>2]=se[1],de[I+48>>2]=4096,de[I+52>>2]=k.blocks,de[I+56>>2]=k.atime.getTime()/1e3|0,de[I+60>>2]=0,de[I+64>>2]=k.mtime.getTime()/1e3|0,de[I+68>>2]=0,de[I+72>>2]=k.ctime.getTime()/1e3|0,de[I+76>>2]=0,se=[k.ino>>>0,(vr=k.ino,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[I+80>>2]=se[0],de[I+84>>2]=se[1],0},doMsync:function(d,E,I,k,T){var _=Y.slice(d,d+I);S.msync(E,_,T,I,k)},doMkdir:function(d,E){return d=Qt.normalize(d),d[d.length-1]==="/"&&(d=d.substr(0,d.length-1)),S.mkdir(d,E,0),0},doMknod:function(d,E,I){switch(E&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return S.mknod(d,E,I),0},doReadlink:function(d,E,I){if(I<=0)return-28;var k=S.readlink(d),T=Math.min(I,le(k)),_=ne[E+T];return oe(k,E,I+1),ne[E+T]=_,T},doAccess:function(d,E){if(E&-8)return-28;var I,k=S.lookupPath(d,{follow:!0});if(I=k.node,!I)return-44;var T="";return E&4&&(T+="r"),E&2&&(T+="w"),E&1&&(T+="x"),T&&S.nodePermissions(I,T)?-2:0},doDup:function(d,E,I){var k=S.getStream(I);return k&&S.close(k),S.open(d,E,0,I,I).fd},doReadv:function(d,E,I,k){for(var T=0,_=0;_>2],Be=de[E+(_*8+4)>>2],me=S.read(d,ne,te,Be,k);if(me<0)return-1;if(T+=me,me>2],Be=de[E+(_*8+4)>>2],me=S.write(d,ne,te,Be,k);if(me<0)return-1;T+=me}return T},varargs:void 0,get:function(){Tt.varargs+=4;var d=de[Tt.varargs-4>>2];return d},getStr:function(d){var E=Fe(d);return E},getStreamFromFD:function(d){var E=S.getStream(d);if(!E)throw new S.ErrnoError(8);return E},get64:function(d,E){return d}};function ng(d,E){try{return d=Tt.getStr(d),S.chmod(d,E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function Ql(d){return de[Ft()>>2]=d,d}function hp(d,E,I){Tt.varargs=I;try{var k=Tt.getStreamFromFD(d);switch(E){case 0:{var T=Tt.get();if(T<0)return-28;var _;return _=S.open(k.path,k.flags,0,T),_.fd}case 1:case 2:return 0;case 3:return k.flags;case 4:{var T=Tt.get();return k.flags|=T,0}case 12:{var T=Tt.get(),te=0;return pe[T+te>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Ql(28),-1;default:return-28}}catch(Be){return(typeof S>"u"||!(Be instanceof S.ErrnoError))&&wr(Be),-Be.errno}}function pp(d,E){try{var I=Tt.getStreamFromFD(d);return Tt.doStat(S.stat,I.path,E)}catch(k){return(typeof S>"u"||!(k instanceof S.ErrnoError))&&wr(k),-k.errno}}function dp(d,E,I){Tt.varargs=I;try{var k=Tt.getStreamFromFD(d);switch(E){case 21509:case 21505:return k.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return k.tty?0:-59;case 21519:{if(!k.tty)return-59;var T=Tt.get();return de[T>>2]=0,0}case 21520:return k.tty?-28:-59;case 21531:{var T=Tt.get();return S.ioctl(k,E,T)}case 21523:return k.tty?0:-59;case 21524:return k.tty?0:-59;default:wr("bad ioctl syscall "+E)}}catch(_){return(typeof S>"u"||!(_ instanceof S.ErrnoError))&&wr(_),-_.errno}}function Cp(d,E,I){Tt.varargs=I;try{var k=Tt.getStr(d),T=I?Tt.get():0,_=S.open(k,E,T);return _.fd}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),-te.errno}}function mp(d,E){try{return d=Tt.getStr(d),E=Tt.getStr(E),S.rename(d,E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function G(d){try{return d=Tt.getStr(d),S.rmdir(d),0}catch(E){return(typeof S>"u"||!(E instanceof S.ErrnoError))&&wr(E),-E.errno}}function yt(d,E){try{return d=Tt.getStr(d),Tt.doStat(S.stat,d,E)}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function uA(d){try{return d=Tt.getStr(d),S.unlink(d),0}catch(E){return(typeof S>"u"||!(E instanceof S.ErrnoError))&&wr(E),-E.errno}}function ji(d,E,I){Y.copyWithin(d,E,E+I)}function bl(d){try{return A.grow(d-qe.byteLength+65535>>>16),Or(A.buffer),1}catch{}}function Xe(d){var E=Y.length;d=d>>>0;var I=2147483648;if(d>I)return!1;for(var k=1;k<=4;k*=2){var T=E*(1+.2/k);T=Math.min(T,d+100663296);var _=Math.min(I,Ae(Math.max(d,T),65536)),te=bl(_);if(te)return!0}return!1}function Aa(d){try{var E=Tt.getStreamFromFD(d);return S.close(E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),I.errno}}function sg(d,E){try{var I=Tt.getStreamFromFD(d),k=I.tty?2:S.isDir(I.mode)?3:S.isLink(I.mode)?7:4;return ne[E>>0]=k,0}catch(T){return(typeof S>"u"||!(T instanceof S.ErrnoError))&&wr(T),T.errno}}function bE(d,E,I,k){try{var T=Tt.getStreamFromFD(d),_=Tt.doReadv(T,E,I);return de[k>>2]=_,0}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),te.errno}}function Ep(d,E,I,k,T){try{var _=Tt.getStreamFromFD(d),te=4294967296,Be=I*te+(E>>>0),me=9007199254740992;return Be<=-me||Be>=me?-61:(S.llseek(_,Be,k),se=[_.position>>>0,(vr=_.position,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[T>>2]=se[0],de[T+4>>2]=se[1],_.getdents&&Be===0&&k===0&&(_.getdents=null),0)}catch(Je){return(typeof S>"u"||!(Je instanceof S.ErrnoError))&&wr(Je),Je.errno}}function SE(d,E,I,k){try{var T=Tt.getStreamFromFD(d),_=Tt.doWritev(T,E,I);return de[k>>2]=_,0}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),te.errno}}function ar(d){$(d)}function Rn(d){var E=Date.now()/1e3|0;return d&&(de[d>>2]=E),E}function Sl(){if(Sl.called)return;Sl.called=!0;var d=new Date().getFullYear(),E=new Date(d,0,1),I=new Date(d,6,1),k=E.getTimezoneOffset(),T=I.getTimezoneOffset(),_=Math.max(k,T);de[Hb()>>2]=_*60,de[Ub()>>2]=Number(k!=T);function te(wt){var lt=wt.toTimeString().match(/\(([A-Za-z ]+)\)$/);return lt?lt[1]:"GMT"}var Be=te(E),me=te(I),Je=we(Be),nt=we(me);T>2]=Je,de[gg()+4>>2]=nt):(de[gg()>>2]=nt,de[gg()+4>>2]=Je)}function Ip(d){Sl();var E=Date.UTC(de[d+20>>2]+1900,de[d+16>>2],de[d+12>>2],de[d+8>>2],de[d+4>>2],de[d>>2],0),I=new Date(E);de[d+24>>2]=I.getUTCDay();var k=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),T=(I.getTime()-k)/(1e3*60*60*24)|0;return de[d+28>>2]=T,I.getTime()/1e3|0}var Ts=function(d,E,I,k){d||(d=this),this.parent=d,this.mount=d.mount,this.mounted=null,this.id=S.nextInode++,this.name=E,this.mode=I,this.node_ops={},this.stream_ops={},this.rdev=k},la=365,An=146;if(Object.defineProperties(Ts.prototype,{read:{get:function(){return(this.mode&la)===la},set:function(d){d?this.mode|=la:this.mode&=~la}},write:{get:function(){return(this.mode&An)===An},set:function(d){d?this.mode|=An:this.mode&=~An}},isFolder:{get:function(){return S.isDir(this.mode)}},isDevice:{get:function(){return S.isChrdev(this.mode)}}}),S.FSNode=Ts,S.staticInit(),g){var Te=bV,og=J("path");At.staticInit()}if(g){var vl=function(d){return function(){try{return d.apply(this,arguments)}catch(E){throw E.code?new S.ErrnoError(mo[E.code]):E}}},Os=Object.assign({},S);for(var xl in an)S[xl]=vl(an[xl])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");function gA(d,E,I){var k=I>0?I:le(d)+1,T=new Array(k),_=Ne(d,T,0,T.length);return E&&(T.length=_),T}var ag=typeof atob=="function"?atob:function(d){var E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I="",k,T,_,te,Be,me,Je,nt=0;d=d.replace(/[^A-Za-z0-9\+\/\=]/g,"");do te=E.indexOf(d.charAt(nt++)),Be=E.indexOf(d.charAt(nt++)),me=E.indexOf(d.charAt(nt++)),Je=E.indexOf(d.charAt(nt++)),k=te<<2|Be>>4,T=(Be&15)<<4|me>>2,_=(me&3)<<6|Je,I=I+String.fromCharCode(k),me!==64&&(I=I+String.fromCharCode(T)),Je!==64&&(I=I+String.fromCharCode(_));while(nt0||(pr(),Zn>0))return;function E(){Me||(Me=!0,t.calledRun=!0,!ae&&(Ei(),i(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),_n()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),E()},1)):E()}if(t.run=dA,t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return dA(),e}}();typeof aB=="object"&&typeof CR=="object"?CR.exports=dR:typeof define=="function"&&define.amd?define([],function(){return dR}):typeof aB=="object"&&(aB.createModule=dR)});var XV=w((Dnt,VV)=>{function wDe(r,e){for(var t=-1,i=r==null?0:r.length,n=Array(i);++t{var BDe=Array.isArray;_V.exports=BDe});var i6=w((Rnt,r6)=>{var ZV=Ec(),QDe=XV(),bDe=ws(),SDe=tC(),vDe=1/0,$V=ZV?ZV.prototype:void 0,e6=$V?$V.toString:void 0;function t6(r){if(typeof r=="string")return r;if(bDe(r))return QDe(r,t6)+"";if(SDe(r))return e6?e6.call(r):"";var e=r+"";return e=="0"&&1/r==-vDe?"-0":e}r6.exports=t6});var Kf=w((Fnt,n6)=>{var xDe=i6();function PDe(r){return r==null?"":xDe(r)}n6.exports=PDe});var bR=w((Nnt,s6)=>{function DDe(r,e,t){var i=-1,n=r.length;e<0&&(e=-e>n?0:n+e),t=t>n?n:t,t<0&&(t+=n),n=e>t?0:t-e>>>0,e>>>=0;for(var s=Array(n);++i{var kDe=bR();function RDe(r,e,t){var i=r.length;return t=t===void 0?i:t,!e&&t>=i?r:kDe(r,e,t)}o6.exports=RDe});var SR=w((Tnt,A6)=>{var FDe="\\ud800-\\udfff",NDe="\\u0300-\\u036f",LDe="\\ufe20-\\ufe2f",TDe="\\u20d0-\\u20ff",ODe=NDe+LDe+TDe,MDe="\\ufe0e\\ufe0f",KDe="\\u200d",UDe=RegExp("["+KDe+FDe+ODe+MDe+"]");function HDe(r){return UDe.test(r)}A6.exports=HDe});var c6=w((Ont,l6)=>{function GDe(r){return r.split("")}l6.exports=GDe});var m6=w((Mnt,C6)=>{var u6="\\ud800-\\udfff",YDe="\\u0300-\\u036f",jDe="\\ufe20-\\ufe2f",qDe="\\u20d0-\\u20ff",JDe=YDe+jDe+qDe,WDe="\\ufe0e\\ufe0f",zDe="["+u6+"]",vR="["+JDe+"]",xR="\\ud83c[\\udffb-\\udfff]",VDe="(?:"+vR+"|"+xR+")",g6="[^"+u6+"]",f6="(?:\\ud83c[\\udde6-\\uddff]){2}",h6="[\\ud800-\\udbff][\\udc00-\\udfff]",XDe="\\u200d",p6=VDe+"?",d6="["+WDe+"]?",_De="(?:"+XDe+"(?:"+[g6,f6,h6].join("|")+")"+d6+p6+")*",ZDe=d6+p6+_De,$De="(?:"+[g6+vR+"?",vR,f6,h6,zDe].join("|")+")",eke=RegExp(xR+"(?="+xR+")|"+$De+ZDe,"g");function tke(r){return r.match(eke)||[]}C6.exports=tke});var I6=w((Knt,E6)=>{var rke=c6(),ike=SR(),nke=m6();function ske(r){return ike(r)?nke(r):rke(r)}E6.exports=ske});var w6=w((Unt,y6)=>{var oke=a6(),ake=SR(),Ake=I6(),lke=Kf();function cke(r){return function(e){e=lke(e);var t=ake(e)?Ake(e):void 0,i=t?t[0]:e.charAt(0),n=t?oke(t,1).join(""):e.slice(1);return i[r]()+n}}y6.exports=cke});var Q6=w((Hnt,B6)=>{var uke=w6(),gke=uke("toUpperCase");B6.exports=gke});var dB=w((Gnt,b6)=>{var fke=Kf(),hke=Q6();function pke(r){return hke(fke(r).toLowerCase())}b6.exports=pke});var S6=w((Ynt,CB)=>{function dke(){var r=0,e=1,t=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,C=15,y=16,B=17,v=0,D=1,L=2,H=3,j=4;function $(A,ae){return 55296<=A.charCodeAt(ae)&&A.charCodeAt(ae)<=56319&&56320<=A.charCodeAt(ae+1)&&A.charCodeAt(ae+1)<=57343}function V(A,ae){ae===void 0&&(ae=0);var ge=A.charCodeAt(ae);if(55296<=ge&&ge<=56319&&ae=1){var re=A.charCodeAt(ae-1),O=ge;return 55296<=re&&re<=56319?(re-55296)*1024+(O-56320)+65536:O}return ge}function W(A,ae,ge){var re=[A].concat(ae).concat([ge]),O=re[re.length-2],F=ge,ue=re.lastIndexOf(p);if(ue>1&&re.slice(1,ue).every(function(Fe){return Fe==i})&&[i,h,B].indexOf(A)==-1)return L;var he=re.lastIndexOf(n);if(he>0&&re.slice(1,he).every(function(Fe){return Fe==n})&&[f,n].indexOf(O)==-1)return re.filter(function(Fe){return Fe==n}).length%2==1?H:j;if(O==r&&F==e)return v;if(O==t||O==r||O==e)return F==p&&ae.every(function(Fe){return Fe==i})?L:D;if(F==t||F==r||F==e)return D;if(O==o&&(F==o||F==a||F==c||F==u))return v;if((O==c||O==a)&&(F==a||F==l))return v;if((O==u||O==l)&&F==l)return v;if(F==i||F==C)return v;if(F==s)return v;if(O==f)return v;var ke=re.indexOf(i)!=-1?re.lastIndexOf(i)-1:re.length-2;return[h,B].indexOf(re[ke])!=-1&&re.slice(ke+1,-1).every(function(Fe){return Fe==i})&&F==p||O==C&&[y,B].indexOf(F)!=-1?v:ae.indexOf(n)!=-1?L:O==n&&F==n?v:D}this.nextBreak=function(A,ae){if(ae===void 0&&(ae=0),ae<0)return 0;if(ae>=A.length-1)return A.length;for(var ge=Z(V(A,ae)),re=[],O=ae+1;O{var Cke=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,mB;function mke(){if(mB)return mB;if(typeof Intl.Segmenter<"u"){let r=new Intl.Segmenter("en",{granularity:"grapheme"});return mB=e=>Array.from(r.segment(e),({segment:t})=>t)}else{let r=S6(),e=new r;return mB=t=>e.splitGraphemes(t)}}v6.exports=(r,e=0,t=r.length)=>{if(e<0||t<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=t-e,n="",s=0,o=0;for(;r.length>0;){let a=r.match(Cke)||[r,r,void 0],l=mke()(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]<"u"&&(n+=a[2]),r=r.slice(a[0].length)}return n}});var Uf=w((ust,j6)=>{"use strict";var Y6=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),cst=j6.exports=r=>r?Object.keys(r).map(e=>[Y6.has(e)?Y6.get(e):e,r[e]]).reduce((e,t)=>(e[t[0]]=t[1],e),Object.create(null)):{}});var Hf=w((gst,$6)=>{"use strict";var kke=J("events"),q6=J("stream"),BC=sd(),J6=J("string_decoder").StringDecoder,Ua=Symbol("EOF"),QC=Symbol("maybeEmitEnd"),WA=Symbol("emittedEnd"),QB=Symbol("emittingEnd"),bB=Symbol("closed"),W6=Symbol("read"),RR=Symbol("flush"),z6=Symbol("flushChunk"),Sn=Symbol("encoding"),Ha=Symbol("decoder"),SB=Symbol("flowing"),bC=Symbol("paused"),SC=Symbol("resume"),nn=Symbol("bufferLength"),V6=Symbol("bufferPush"),FR=Symbol("bufferShift"),Ui=Symbol("objectMode"),Hi=Symbol("destroyed"),_6=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Rke=_6&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Fke=_6&&Symbol.iterator||Symbol("iterator not implemented"),X6=r=>r==="end"||r==="finish"||r==="prefinish",Nke=r=>r instanceof ArrayBuffer||typeof r=="object"&&r.constructor&&r.constructor.name==="ArrayBuffer"&&r.byteLength>=0,Lke=r=>!Buffer.isBuffer(r)&&ArrayBuffer.isView(r);$6.exports=class Z6 extends q6{constructor(e){super(),this[SB]=!1,this[bC]=!1,this.pipes=new BC,this.buffer=new BC,this[Ui]=e&&e.objectMode||!1,this[Ui]?this[Sn]=null:this[Sn]=e&&e.encoding||null,this[Sn]==="buffer"&&(this[Sn]=null),this[Ha]=this[Sn]?new J6(this[Sn]):null,this[Ua]=!1,this[WA]=!1,this[QB]=!1,this[bB]=!1,this.writable=!0,this.readable=!0,this[nn]=0,this[Hi]=!1}get bufferLength(){return this[nn]}get encoding(){return this[Sn]}set encoding(e){if(this[Ui])throw new Error("cannot set encoding in objectMode");if(this[Sn]&&e!==this[Sn]&&(this[Ha]&&this[Ha].lastNeed||this[nn]))throw new Error("cannot change encoding");this[Sn]!==e&&(this[Ha]=e?new J6(e):null,this.buffer.length&&(this.buffer=this.buffer.map(t=>this[Ha].write(t)))),this[Sn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ui]}set objectMode(e){this[Ui]=this[Ui]||!!e}write(e,t,i){if(this[Ua])throw new Error("write after end");return this[Hi]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8"),!this[Ui]&&!Buffer.isBuffer(e)&&(Lke(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Nke(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[nn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ui]&&!(t===this[Sn]&&!this[Ha].lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[Sn]&&(e=this[Ha].write(e)),this.flowing?(this[nn]!==0&&this[RR](!0),this.emit("data",e)):this[V6](e),this[nn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Hi])return null;try{return this[nn]===0||e===0||e>this[nn]?null:(this[Ui]&&(e=null),this.buffer.length>1&&!this[Ui]&&(this.encoding?this.buffer=new BC([Array.from(this.buffer).join("")]):this.buffer=new BC([Buffer.concat(Array.from(this.buffer),this[nn])])),this[W6](e||null,this.buffer.head.value))}finally{this[QC]()}}[W6](e,t){return e===t.length||e===null?this[FR]():(this.buffer.head.value=t.slice(e),t=t.slice(0,e),this[nn]-=e),this.emit("data",t),!this.buffer.length&&!this[Ua]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=null),typeof t=="function"&&(i=t,t="utf8"),e&&this.write(e,t),i&&this.once("end",i),this[Ua]=!0,this.writable=!1,(this.flowing||!this[bC])&&this[QC](),this}[SC](){this[Hi]||(this[bC]=!1,this[SB]=!0,this.emit("resume"),this.buffer.length?this[RR]():this[Ua]?this[QC]():this.emit("drain"))}resume(){return this[SC]()}pause(){this[SB]=!1,this[bC]=!0}get destroyed(){return this[Hi]}get flowing(){return this[SB]}get paused(){return this[bC]}[V6](e){return this[Ui]?this[nn]+=1:this[nn]+=e.length,this.buffer.push(e)}[FR](){return this.buffer.length&&(this[Ui]?this[nn]-=1:this[nn]-=this.buffer.head.value.length),this.buffer.shift()}[RR](e){do;while(this[z6](this[FR]()));!e&&!this.buffer.length&&!this[Ua]&&this.emit("drain")}[z6](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,t){if(this[Hi])return;let i=this[WA];t=t||{},e===process.stdout||e===process.stderr?t.end=!1:t.end=t.end!==!1;let n={dest:e,opts:t,ondrain:s=>this[SC]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[SC](),i&&n.opts.end&&n.dest.end(),e}addListener(e,t){return this.on(e,t)}on(e,t){try{return super.on(e,t)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[SC]():X6(e)&&this[WA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[WA]}[QC](){!this[QB]&&!this[WA]&&!this[Hi]&&this.buffer.length===0&&this[Ua]&&(this[QB]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[bB]&&this.emit("close"),this[QB]=!1)}emit(e,t){if(e!=="error"&&e!=="close"&&e!==Hi&&this[Hi])return;if(e==="data"){if(!t)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(t)===!1&&this.pause())}else if(e==="end"){if(this[WA]===!0)return;this[WA]=!0,this.readable=!1,this[Ha]&&(t=this[Ha].end(),t&&(this.pipes.forEach(n=>n.dest.write(t)),super.emit("data",t))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[bB]=!0,!this[WA]&&!this[Hi]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=t,arguments.length>2)for(let n=2;n{e.push(i),this[Ui]||(e.dataLength+=i.length)}),t.then(()=>e)}concat(){return this[Ui]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ui]?Promise.reject(new Error("cannot concat in objectMode")):this[Sn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,t)=>{this.on(Hi,()=>t(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>t(i))})}[Rke](){return{next:()=>{let t=this.read();if(t!==null)return Promise.resolve({done:!1,value:t});if(this[Ua])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[Ua]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Hi,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[Fke](){return{next:()=>{let t=this.read();return{value:t,done:t===null}}}}destroy(e){return this[Hi]?(e?this.emit("error",e):this.emit(Hi),this):(this[Hi]=!0,this.buffer=new BC,this[nn]=0,typeof this.close=="function"&&!this[bB]&&this.close(),e?this.emit("error",e):this.emit(Hi),this)}static isStream(e){return!!e&&(e instanceof Z6||e instanceof q6||e instanceof kke&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var t9=w((fst,e9)=>{var Tke=J("zlib").constants||{ZLIB_VERNUM:4736};e9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Tke))});var VR=w(Wn=>{"use strict";var MR=J("assert"),zA=J("buffer").Buffer,n9=J("zlib"),Sc=Wn.constants=t9(),Oke=Hf(),r9=zA.concat,vc=Symbol("_superWrite"),Yf=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Mke=Symbol("opts"),vC=Symbol("flushFlag"),i9=Symbol("finishFlushFlag"),zR=Symbol("fullFlushFlag"),cr=Symbol("handle"),vB=Symbol("onError"),Gf=Symbol("sawError"),NR=Symbol("level"),LR=Symbol("strategy"),TR=Symbol("ended"),hst=Symbol("_defaultFullFlush"),xB=class extends Oke{constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[Gf]=!1,this[TR]=!1,this[Mke]=e,this[vC]=e.flush,this[i9]=e.finishFlush;try{this[cr]=new n9[t](e)}catch(i){throw new Yf(i)}this[vB]=i=>{this[Gf]||(this[Gf]=!0,this.close(),this.emit("error",i))},this[cr].on("error",i=>this[vB](new Yf(i))),this.once("end",()=>this.close)}close(){this[cr]&&(this[cr].close(),this[cr]=null,this.emit("close"))}reset(){if(!this[Gf])return MR(this[cr],"zlib binding closed"),this[cr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[zR]),this.write(Object.assign(zA.alloc(0),{[vC]:e})))}end(e,t,i){return e&&this.write(e,t),this.flush(this[i9]),this[TR]=!0,super.end(null,null,i)}get ended(){return this[TR]}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=zA.from(e,t)),this[Gf])return;MR(this[cr],"zlib binding closed");let n=this[cr]._handle,s=n.close;n.close=()=>{};let o=this[cr].close;this[cr].close=()=>{},zA.concat=c=>c;let a;try{let c=typeof e[vC]=="number"?e[vC]:this[vC];a=this[cr]._processChunk(e,c),zA.concat=r9}catch(c){zA.concat=r9,this[vB](new Yf(c))}finally{this[cr]&&(this[cr]._handle=n,n.close=s,this[cr].close=o,this[cr].removeAllListeners("error"))}this[cr]&&this[cr].on("error",c=>this[vB](new Yf(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[vc](zA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[cr].params(e,t)}finally{this[cr].flush=i}this[cr]&&(this[NR]=e,this[LR]=t)}}}},KR=class extends Ga{constructor(e){super(e,"Deflate")}},UR=class extends Ga{constructor(e){super(e,"Inflate")}},OR=Symbol("_portable"),HR=class extends Ga{constructor(e){super(e,"Gzip"),this[OR]=e&&!!e.portable}[vc](e){return this[OR]?(this[OR]=!1,e[9]=255,super[vc](e)):super[vc](e)}},GR=class extends Ga{constructor(e){super(e,"Gunzip")}},YR=class extends Ga{constructor(e){super(e,"DeflateRaw")}},jR=class extends Ga{constructor(e){super(e,"InflateRaw")}},qR=class extends Ga{constructor(e){super(e,"Unzip")}},PB=class extends xB{constructor(e,t){e=e||{},e.flush=e.flush||Sc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Sc.BROTLI_OPERATION_FINISH,super(e,t),this[zR]=Sc.BROTLI_OPERATION_FLUSH}},JR=class extends PB{constructor(e){super(e,"BrotliCompress")}},WR=class extends PB{constructor(e){super(e,"BrotliDecompress")}};Wn.Deflate=KR;Wn.Inflate=UR;Wn.Gzip=HR;Wn.Gunzip=GR;Wn.DeflateRaw=YR;Wn.InflateRaw=jR;Wn.Unzip=qR;typeof n9.BrotliCompress=="function"?(Wn.BrotliCompress=JR,Wn.BrotliDecompress=WR):Wn.BrotliCompress=Wn.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var xC=w(DB=>{"use strict";DB.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);DB.code=new Map(Array.from(DB.name).map(r=>[r[1],r[0]]))});var PC=w((Ist,s9)=>{"use strict";var mst=xC(),Kke=Hf(),XR=Symbol("slurp");s9.exports=class extends Kke{constructor(e,t,i){switch(super(),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,t&&this[XR](t),i&&this[XR](i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,n-t),this.ignore?!0:i>=t?super.write(e):super.write(e.slice(0,i))}[XR](e,t){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(t&&i==="path")&&(this[i]=e[i])}}});var A9=w(_R=>{"use strict";var yst=_R.encode=(r,e)=>{if(Number.isSafeInteger(r))r<0?Hke(r,e):Uke(r,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Uke=(r,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=r&255,r=Math.floor(r/256)},Hke=(r,e)=>{e[0]=255;var t=!1;r=r*-1;for(var i=e.length;i>1;i--){var n=r&255;r=Math.floor(r/256),t?e[i-1]=o9(n):n===0?e[i-1]=0:(t=!0,e[i-1]=a9(n))}},wst=_R.parse=r=>{var e=r[r.length-1],t=r[0],i;if(t===128)i=Yke(r.slice(1,r.length));else if(t===255)i=Gke(r);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},Gke=r=>{for(var e=r.length,t=0,i=!1,n=e-1;n>-1;n--){var s=r[n],o;i?o=o9(s):s===0?o=s:(i=!0,o=a9(s)),o!==0&&(t-=o*Math.pow(256,e-n-1))}return t},Yke=r=>{for(var e=r.length,t=0,i=e-1;i>-1;i--){var n=r[i];n!==0&&(t+=n*Math.pow(256,e-i-1))}return t},o9=r=>(255^r)&255,a9=r=>(255^r)+1&255});var qf=w((Qst,c9)=>{"use strict";var ZR=xC(),jf=J("path").posix,l9=A9(),$R=Symbol("slurp"),zn=Symbol("type"),rF=class{constructor(e,t,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[zn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,t||0,i,n):e&&this.set(e)}decode(e,t,i,n){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");if(this.path=xc(e,t,100),this.mode=VA(e,t+100,8),this.uid=VA(e,t+108,8),this.gid=VA(e,t+116,8),this.size=VA(e,t+124,12),this.mtime=eF(e,t+136,12),this.cksum=VA(e,t+148,12),this[$R](i),this[$R](n,!0),this[zn]=xc(e,t+156,1),this[zn]===""&&(this[zn]="0"),this[zn]==="0"&&this.path.substr(-1)==="/"&&(this[zn]="5"),this[zn]==="5"&&(this.size=0),this.linkpath=xc(e,t+157,100),e.slice(t+257,t+265).toString()==="ustar\x0000")if(this.uname=xc(e,t+265,32),this.gname=xc(e,t+297,32),this.devmaj=VA(e,t+329,8),this.devmin=VA(e,t+337,8),e[t+475]!==0){let o=xc(e,t+345,155);this.path=o+"/"+this.path}else{let o=xc(e,t+345,130);o&&(this.path=o+"/"+this.path),this.atime=eF(e,t+476,12),this.ctime=eF(e,t+488,12)}let s=8*32;for(let o=t;o=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=jke(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=Pc(e,t,100,s)||this.needPax,this.needPax=XA(e,t+100,8,this.mode)||this.needPax,this.needPax=XA(e,t+108,8,this.uid)||this.needPax,this.needPax=XA(e,t+116,8,this.gid)||this.needPax,this.needPax=XA(e,t+124,12,this.size)||this.needPax,this.needPax=tF(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this[zn].charCodeAt(0),this.needPax=Pc(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Pc(e,t+265,32,this.uname)||this.needPax,this.needPax=Pc(e,t+297,32,this.gname)||this.needPax,this.needPax=XA(e,t+329,8,this.devmaj)||this.needPax,this.needPax=XA(e,t+337,8,this.devmin)||this.needPax,this.needPax=Pc(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Pc(e,t+345,155,o)||this.needPax:(this.needPax=Pc(e,t+345,130,o)||this.needPax,this.needPax=tF(e,t+476,12,this.atime)||this.needPax,this.needPax=tF(e,t+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=t;l{let i=r,n="",s,o=jf.parse(r).root||".";if(Buffer.byteLength(i)<100)s=[i,n,!1];else{n=jf.dirname(i),i=jf.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(n)<=e?s=[i,n,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(n)<=e?s=[i.substr(0,100-1),n,!0]:(i=jf.join(jf.basename(n),i),n=jf.dirname(n));while(n!==o&&!s);s||(s=[r.substr(0,100-1),"",!0])}return s},xc=(r,e,t)=>r.slice(e,e+t).toString("utf8").replace(/\0.*/,""),eF=(r,e,t)=>qke(VA(r,e,t)),qke=r=>r===null?null:new Date(r*1e3),VA=(r,e,t)=>r[e]&128?l9.parse(r.slice(e,e+t)):Wke(r,e,t),Jke=r=>isNaN(r)?null:r,Wke=(r,e,t)=>Jke(parseInt(r.slice(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),zke={12:8589934591,8:2097151},XA=(r,e,t,i)=>i===null?!1:i>zke[t]||i<0?(l9.encode(i,r.slice(e,e+t)),!0):(Vke(r,e,t,i),!1),Vke=(r,e,t,i)=>r.write(Xke(i,t),e,t,"ascii"),Xke=(r,e)=>_ke(Math.floor(r).toString(8),e),_ke=(r,e)=>(r.length===e-1?r:new Array(e-r.length-1).join("0")+r+" ")+"\0",tF=(r,e,t,i)=>i===null?!1:XA(r,e,t,i.getTime()/1e3),Zke=new Array(156).join("\0"),Pc=(r,e,t,i)=>i===null?!1:(r.write(i+Zke,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t);c9.exports=rF});var kB=w((bst,u9)=>{"use strict";var $ke=qf(),eRe=J("path"),DC=class{constructor(e,t){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=t||!1}encode(){let e=this.encodeBody();if(e==="")return null;let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new $ke({path:("PaxHeader/"+eRe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:t,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,t,"utf8");for(let s=t+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};DC.parse=(r,e,t)=>new DC(tRe(rRe(r),e),t);var tRe=(r,e)=>e?Object.keys(r).reduce((t,i)=>(t[i]=r[i],t),e):r,rRe=r=>r.replace(/\n$/,"").split(` -`).reduce(iRe,Object.create(null)),iRe=(r,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return r;e=e.substr((t+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return r;let s=i.join("=");return r[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,r};u9.exports=DC});var RB=w((Sst,g9)=>{"use strict";g9.exports=r=>class extends r{warn(e,t,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),this.emit("warn",i.tarCode,t,i)):t instanceof Error?this.emit("error",Object.assign(t,i)):this.emit("error",Object.assign(new Error(`${e}: ${t}`),i))}}});var nF=w((xst,f9)=>{"use strict";var FB=["|","<",">","?",":"],iF=FB.map(r=>String.fromCharCode(61440+r.charCodeAt(0))),nRe=new Map(FB.map((r,e)=>[r,iF[e]])),sRe=new Map(iF.map((r,e)=>[r,FB[e]]));f9.exports={encode:r=>FB.reduce((e,t)=>e.split(t).join(nRe.get(t)),r),decode:r=>iF.reduce((e,t)=>e.split(t).join(sRe.get(t)),r)}});var p9=w((Pst,h9)=>{"use strict";h9.exports=(r,e,t)=>(r&=4095,t&&(r=(r|384)&-19),e&&(r&256&&(r|=64),r&32&&(r|=8),r&4&&(r|=1)),r)});var gF=w((Nst,b9)=>{"use strict";var I9=Hf(),y9=kB(),w9=qf(),Dst=PC(),Jo=J("fs"),Jf=J("path"),kst=xC(),oRe=16*1024*1024,d9=Symbol("process"),C9=Symbol("file"),m9=Symbol("directory"),sF=Symbol("symlink"),E9=Symbol("hardlink"),kC=Symbol("header"),NB=Symbol("read"),oF=Symbol("lstat"),LB=Symbol("onlstat"),aF=Symbol("onread"),AF=Symbol("onreadlink"),lF=Symbol("openfile"),cF=Symbol("onopenfile"),Dc=Symbol("close"),TB=Symbol("mode"),B9=RB(),aRe=nF(),Q9=p9(),OB=B9(class extends I9{constructor(e,t){if(t=t||{},super(t),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!t.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=t.maxReadSize||oRe,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=t.cwd||process.cwd(),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=!1;if(!this.preservePaths&&Jf.win32.isAbsolute(e)){let n=Jf.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=aRe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=t.absolute||Jf.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[LB](this.statCache.get(this.absolute)):this[oF]()}[oF](){Jo.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[LB](t)})}[LB](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=lRe(e),this.emit("stat",e),this[d9]()}[d9](){switch(this.type){case"File":return this[C9]();case"Directory":return this[m9]();case"SymbolicLink":return this[sF]();default:return this.end()}}[TB](e){return Q9(e,this.type==="Directory",this.portable)}[kC](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new w9({path:this.path,linkpath:this.linkpath,mode:this[TB](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new y9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[m9](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[kC](),this.end()}[sF](){Jo.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[AF](t)})}[AF](e){this.linkpath=e.replace(/\\/g,"/"),this[kC](),this.end()}[E9](e){this.type="Link",this.linkpath=Jf.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[kC](),this.end()}[C9](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let t=this.linkCache.get(e);if(t.indexOf(this.cwd)===0)return this[E9](t)}this.linkCache.set(e,this.absolute)}if(this[kC](),this.stat.size===0)return this.end();this[lF]()}[lF](){Jo.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[cF](t)})}[cF](e){let t=512*Math.ceil(this.stat.size/512),i=Math.min(t,this.maxReadSize),n=Buffer.allocUnsafe(i);this[NB](e,n,0,n.length,0,this.stat.size,t)}[NB](e,t,i,n,s,o,a){Jo.read(e,t,i,n,s,(l,c)=>{if(l)return this[Dc](e,()=>this.emit("error",l));this[aF](e,t,i,n,s,o,a,c)})}[Dc](e,t){Jo.close(e,t)}[aF](e,t,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Dc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Dc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(t=Buffer.allocUnsafe(n),i=0),n=t.length-i,this[NB](e,t,i,n,s,o,a)}}),uF=class extends OB{constructor(e,t){super(e,t)}[oF](){this[LB](Jo.lstatSync(this.absolute))}[sF](){this[AF](Jo.readlinkSync(this.absolute))}[lF](){this[cF](Jo.openSync(this.absolute,"r"))}[NB](e,t,i,n,s,o,a){let l=!0;try{let c=Jo.readSync(e,t,i,n,s);this[aF](e,t,i,n,s,o,a,c),l=!1}finally{if(l)try{this[Dc](e,()=>{})}catch{}}}[Dc](e,t){Jo.closeSync(e),t()}},ARe=B9(class extends I9{constructor(e,t){t=t||{},super(t),this.preservePaths=!!t.preservePaths,this.portable=!!t.portable,this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[TB](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:t.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=!1;if(Jf.isAbsolute(this.path)&&!this.preservePaths){let n=Jf.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new w9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new y9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[TB](e){return Q9(e,this.type==="Directory",this.portable)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=t,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});OB.Sync=uF;OB.Tar=ARe;var lRe=r=>r.isFile()?"File":r.isDirectory()?"Directory":r.isSymbolicLink()?"SymbolicLink":"Unsupported";b9.exports=OB});var JB=w((Tst,R9)=>{"use strict";var jB=class{constructor(e,t){this.path=e||"./",this.absolute=t,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},cRe=Hf(),uRe=VR(),gRe=PC(),IF=gF(),fRe=IF.Sync,hRe=IF.Tar,pRe=sd(),S9=Buffer.alloc(1024),UB=Symbol("onStat"),MB=Symbol("ended"),Wo=Symbol("queue"),Wf=Symbol("current"),kc=Symbol("process"),KB=Symbol("processing"),v9=Symbol("processJob"),zo=Symbol("jobs"),fF=Symbol("jobDone"),HB=Symbol("addFSEntry"),x9=Symbol("addTarEntry"),dF=Symbol("stat"),CF=Symbol("readdir"),GB=Symbol("onreaddir"),YB=Symbol("pipe"),P9=Symbol("entry"),hF=Symbol("entryOpt"),mF=Symbol("writeEntryClass"),k9=Symbol("write"),pF=Symbol("ondrain"),qB=J("fs"),D9=J("path"),dRe=RB(),yF=dRe(class extends cRe{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[mF]=IF,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new uRe.Gzip(e.gzip),this.zip.on("data",t=>super.write(t)),this.zip.on("end",t=>super.end()),this.zip.on("drain",t=>this[pF]()),this.on("resume",t=>this.zip.resume())):this.on("drain",this[pF]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:t=>!0,this[Wo]=new pRe,this[zo]=0,this.jobs=+e.jobs||4,this[KB]=!1,this[MB]=!1}[k9](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[MB]=!0,this[kc](),this}write(e){if(this[MB])throw new Error("write after end");return e instanceof gRe?this[x9](e):this[HB](e),this.flowing}[x9](e){let t=D9.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new jB(e.path,t,!1);i.entry=new hRe(e,this[hF](i)),i.entry.on("end",n=>this[fF](i)),this[zo]+=1,this[Wo].push(i)}this[kc]()}[HB](e){let t=D9.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[Wo].push(new jB(e,t)),this[kc]()}[dF](e){e.pending=!0,this[zo]+=1;let t=this.follow?"stat":"lstat";qB[t](e.absolute,(i,n)=>{e.pending=!1,this[zo]-=1,i?this.emit("error",i):this[UB](e,n)})}[UB](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)||(e.ignore=!0),this[kc]()}[CF](e){e.pending=!0,this[zo]+=1,qB.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[zo]-=1,t)return this.emit("error",t);this[GB](e,i)})}[GB](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[kc]()}[kc](){if(!this[KB]){this[KB]=!0;for(let e=this[Wo].head;e!==null&&this[zo]this.warn(t,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[P9](e){this[zo]+=1;try{return new this[mF](e.path,this[hF](e)).on("end",()=>this[fF](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[pF](){this[Wf]&&this[Wf].entry&&this[Wf].entry.resume()}[YB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[HB](o+n)});let t=e.entry,i=this.zip;i?t.on("data",n=>{i.write(n)||t.pause()}):t.on("data",n=>{super.write(n)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),EF=class extends yF{constructor(e){super(e),this[mF]=fRe}pause(){}resume(){}[dF](e){let t=this.follow?"statSync":"lstatSync";this[UB](e,qB[t](e.absolute))}[CF](e,t){this[GB](e,qB.readdirSync(e.absolute))}[YB](e){let t=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[HB](o+n)}),i?t.on("data",n=>{i.write(n)}):t.on("data",n=>{super[k9](n)})}};yF.Sync=EF;R9.exports=yF});var $f=w(FC=>{"use strict";var CRe=Hf(),mRe=J("events").EventEmitter,Bs=J("fs"),_B=process.binding("fs"),Ost=_B.writeBuffers,ERe=_B.FSReqWrap||_B.FSReqCallback,_f=Symbol("_autoClose"),Xo=Symbol("_close"),RC=Symbol("_ended"),rr=Symbol("_fd"),F9=Symbol("_finished"),Nc=Symbol("_flags"),wF=Symbol("_flush"),QF=Symbol("_handleChunk"),bF=Symbol("_makeBuf"),SF=Symbol("_mode"),WB=Symbol("_needDrain"),Xf=Symbol("_onerror"),Zf=Symbol("_onopen"),BF=Symbol("_onread"),Fc=Symbol("_onwrite"),ZA=Symbol("_open"),$A=Symbol("_path"),Rc=Symbol("_pos"),Vo=Symbol("_queue"),Vf=Symbol("_read"),N9=Symbol("_readSize"),_A=Symbol("_reading"),zB=Symbol("_remain"),L9=Symbol("_size"),VB=Symbol("_write"),zf=Symbol("_writing"),XB=Symbol("_defaultFlag"),ZB=class extends CRe{constructor(e,t){if(t=t||{},super(t),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[rr]=typeof t.fd=="number"?t.fd:null,this[$A]=e,this[N9]=t.readSize||16*1024*1024,this[_A]=!1,this[L9]=typeof t.size=="number"?t.size:1/0,this[zB]=this[L9],this[_f]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[rr]=="number"?this[Vf]():this[ZA]()}get fd(){return this[rr]}get path(){return this[$A]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ZA](){Bs.open(this[$A],"r",(e,t)=>this[Zf](e,t))}[Zf](e,t){e?this[Xf](e):(this[rr]=t,this.emit("open",t),this[Vf]())}[bF](){return Buffer.allocUnsafe(Math.min(this[N9],this[zB]))}[Vf](){if(!this[_A]){this[_A]=!0;let e=this[bF]();if(e.length===0)return process.nextTick(()=>this[BF](null,0,e));Bs.read(this[rr],e,0,e.length,null,(t,i,n)=>this[BF](t,i,n))}}[BF](e,t,i){this[_A]=!1,e?this[Xf](e):this[QF](t,i)&&this[Vf]()}[Xo](){this[_f]&&typeof this[rr]=="number"&&(Bs.close(this[rr],e=>this.emit("close")),this[rr]=null)}[Xf](e){this[_A]=!0,this[Xo](),this.emit("error",e)}[QF](e,t){let i=!1;return this[zB]-=e,e>0&&(i=super.write(ethis[Zf](e,t))}[Zf](e,t){this[XB]&&this[Nc]==="r+"&&e&&e.code==="ENOENT"?(this[Nc]="w",this[ZA]()):e?this[Xf](e):(this[rr]=t,this.emit("open",t),this[wF]())}end(e,t){e&&this.write(e,t),this[RC]=!0,!this[zf]&&!this[Vo].length&&typeof this[rr]=="number"&&this[Fc](null,0)}write(e,t){return typeof e=="string"&&(e=new Buffer(e,t)),this[RC]?(this.emit("error",new Error("write() after end()")),!1):this[rr]===null||this[zf]||this[Vo].length?(this[Vo].push(e),this[WB]=!0,!1):(this[zf]=!0,this[VB](e),!0)}[VB](e){Bs.write(this[rr],e,0,e.length,this[Rc],(t,i)=>this[Fc](t,i))}[Fc](e,t){e?this[Xf](e):(this[Rc]!==null&&(this[Rc]+=t),this[Vo].length?this[wF]():(this[zf]=!1,this[RC]&&!this[F9]?(this[F9]=!0,this[Xo](),this.emit("finish")):this[WB]&&(this[WB]=!1,this.emit("drain"))))}[wF](){if(this[Vo].length===0)this[RC]&&this[Fc](null,0);else if(this[Vo].length===1)this[VB](this[Vo].pop());else{let e=this[Vo];this[Vo]=[],IRe(this[rr],e,this[Rc],(t,i)=>this[Fc](t,i))}}[Xo](){this[_f]&&typeof this[rr]=="number"&&(Bs.close(this[rr],e=>this.emit("close")),this[rr]=null)}},xF=class extends $B{[ZA](){let e;try{e=Bs.openSync(this[$A],this[Nc],this[SF])}catch(t){if(this[XB]&&this[Nc]==="r+"&&t&&t.code==="ENOENT")return this[Nc]="w",this[ZA]();throw t}this[Zf](null,e)}[Xo](){if(this[_f]&&typeof this[rr]=="number"){try{Bs.closeSync(this[rr])}catch{}this[rr]=null,this.emit("close")}}[VB](e){try{this[Fc](null,Bs.writeSync(this[rr],e,0,e.length,this[Rc]))}catch(t){this[Fc](t,0)}}},IRe=(r,e,t,i)=>{let n=(o,a)=>i(o,a,e),s=new ERe;s.oncomplete=n,_B.writeBuffers(r,e,t,s)};FC.ReadStream=ZB;FC.ReadStreamSync=vF;FC.WriteStream=$B;FC.WriteStreamSync=xF});var TC=w((Hst,G9)=>{"use strict";var yRe=RB(),Kst=J("path"),wRe=qf(),BRe=J("events"),QRe=sd(),bRe=1024*1024,SRe=PC(),T9=kB(),vRe=VR(),PF=Buffer.from([31,139]),Qs=Symbol("state"),Lc=Symbol("writeEntry"),Ya=Symbol("readEntry"),DF=Symbol("nextEntry"),O9=Symbol("processEntry"),bs=Symbol("extendedHeader"),NC=Symbol("globalExtendedHeader"),el=Symbol("meta"),M9=Symbol("emitMeta"),Er=Symbol("buffer"),ja=Symbol("queue"),Tc=Symbol("ended"),K9=Symbol("emittedEnd"),Oc=Symbol("emit"),vn=Symbol("unzip"),e0=Symbol("consumeChunk"),t0=Symbol("consumeChunkSub"),kF=Symbol("consumeBody"),U9=Symbol("consumeMeta"),H9=Symbol("consumeHeader"),r0=Symbol("consuming"),RF=Symbol("bufferConcat"),FF=Symbol("maybeEnd"),LC=Symbol("writing"),tl=Symbol("aborted"),i0=Symbol("onDone"),Mc=Symbol("sawValidEntry"),n0=Symbol("sawNullBlock"),s0=Symbol("sawEOF"),xRe=r=>!0;G9.exports=yRe(class extends BRe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Mc]=null,this.on(i0,t=>{(this[Qs]==="begin"||this[Mc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(i0,e.ondone):this.on(i0,t=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||bRe,this.filter=typeof e.filter=="function"?e.filter:xRe,this.writable=!0,this.readable=!1,this[ja]=new QRe,this[Er]=null,this[Ya]=null,this[Lc]=null,this[Qs]="begin",this[el]="",this[bs]=null,this[NC]=null,this[Tc]=!1,this[vn]=null,this[tl]=!1,this[n0]=!1,this[s0]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[H9](e,t){this[Mc]===null&&(this[Mc]=!1);let i;try{i=new wRe(e,t,this[bs],this[NC])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[n0]?(this[s0]=!0,this[Qs]==="begin"&&(this[Qs]="header"),this[Oc]("eof")):(this[n0]=!0,this[Oc]("nullBlock"));else if(this[n0]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Lc]=new SRe(i,this[bs],this[NC]);if(!this[Mc])if(s.remain){let o=()=>{s.invalid||(this[Mc]=!0)};s.on("end",o)}else this[Mc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[Oc]("ignoredEntry",s),this[Qs]="ignore",s.resume()):s.size>0&&(this[el]="",s.on("data",o=>this[el]+=o),this[Qs]="meta"):(this[bs]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[Oc]("ignoredEntry",s),this[Qs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Qs]="body":(this[Qs]="header",s.end()),this[Ya]?this[ja].push(s):(this[ja].push(s),this[DF]())))}}}[O9](e){let t=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Ya]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[DF]()),t=!1)):(this[Ya]=null,t=!1),t}[DF](){do;while(this[O9](this[ja].shift()));if(!this[ja].length){let e=this[Ya];!e||e.flowing||e.size===e.remain?this[LC]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[kF](e,t){let i=this[Lc],n=i.blockRemain,s=n>=e.length&&t===0?e:e.slice(t,t+n);return i.write(s),i.blockRemain||(this[Qs]="header",this[Lc]=null,i.end()),s.length}[U9](e,t){let i=this[Lc],n=this[kF](e,t);return this[Lc]||this[M9](i),n}[Oc](e,t,i){!this[ja].length&&!this[Ya]?this.emit(e,t,i):this[ja].push([e,t,i])}[M9](e){switch(this[Oc]("meta",this[el]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[bs]=T9.parse(this[el],this[bs],!1);break;case"GlobalExtendedHeader":this[NC]=T9.parse(this[el],this[NC],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[bs]=this[bs]||Object.create(null),this[bs].path=this[el].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[bs]=this[bs]||Object.create(null),this[bs].linkpath=this[el].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[tl]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[tl])return;if(this[vn]===null&&e){if(this[Er]&&(e=Buffer.concat([this[Er],e]),this[Er]=null),e.lengththis[e0](s)),this[vn].on("error",s=>this.abort(s)),this[vn].on("end",s=>{this[Tc]=!0,this[e0]()}),this[LC]=!0;let n=this[vn][i?"end":"write"](e);return this[LC]=!1,n}}this[LC]=!0,this[vn]?this[vn].write(e):this[e0](e),this[LC]=!1;let t=this[ja].length?!1:this[Ya]?this[Ya].flowing:!0;return!t&&!this[ja].length&&this[Ya].once("drain",i=>this.emit("drain")),t}[RF](e){e&&!this[tl]&&(this[Er]=this[Er]?Buffer.concat([this[Er],e]):e)}[FF](){if(this[Tc]&&!this[K9]&&!this[tl]&&!this[r0]){this[K9]=!0;let e=this[Lc];if(e&&e.blockRemain){let t=this[Er]?this[Er].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Er]&&e.write(this[Er]),e.end()}this[Oc](i0)}}[e0](e){if(this[r0])this[RF](e);else if(!e&&!this[Er])this[FF]();else{if(this[r0]=!0,this[Er]){this[RF](e);let t=this[Er];this[Er]=null,this[t0](t)}else this[t0](e);for(;this[Er]&&this[Er].length>=512&&!this[tl]&&!this[s0];){let t=this[Er];this[Er]=null,this[t0](t)}this[r0]=!1}(!this[Er]||this[Tc])&&this[FF]()}[t0](e){let t=0,i=e.length;for(;t+512<=i&&!this[tl]&&!this[s0];)switch(this[Qs]){case"begin":case"header":this[H9](e,t),t+=512;break;case"ignore":case"body":t+=this[kF](e,t);break;case"meta":t+=this[U9](e,t);break;default:throw new Error("invalid state: "+this[Qs])}t{"use strict";var PRe=Uf(),j9=TC(),eh=J("fs"),DRe=$f(),Y9=J("path"),Gst=J9.exports=(r,e,t)=>{typeof r=="function"?(t=r,e=null,r={}):Array.isArray(r)&&(e=r,r={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let i=PRe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&RRe(i,e),i.noResume||kRe(i),i.file&&i.sync?FRe(i):i.file?NRe(i,t):q9(i)},kRe=r=>{let e=r.onentry;r.onentry=e?t=>{e(t),t.resume()}:t=>t.resume()},RRe=(r,e)=>{let t=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=r.filter,n=(s,o)=>{let a=o||Y9.parse(s).root||".",l=s===a?!1:t.has(s)?t.get(s):n(Y9.dirname(s),a);return t.set(s,l),l};r.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},FRe=r=>{let e=q9(r),t=r.file,i=!0,n;try{let s=eh.statSync(t),o=r.maxReadSize||16*1024*1024;if(s.size{let t=new j9(r),i=r.maxReadSize||16*1024*1024,n=r.file,s=new Promise((o,a)=>{t.on("error",a),t.on("end",o),eh.stat(n,(l,c)=>{if(l)a(l);else{let u=new DRe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(t)}})});return e?s.then(e,e):s},q9=r=>new j9(r)});var Z9=w((Jst,_9)=>{"use strict";var LRe=Uf(),a0=JB(),jst=J("fs"),W9=$f(),z9=o0(),V9=J("path"),qst=_9.exports=(r,e,t)=>{if(typeof e=="function"&&(t=e),Array.isArray(r)&&(e=r,r={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=LRe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?TRe(i,e):i.file?ORe(i,e,t):i.sync?MRe(i,e):KRe(i,e)},TRe=(r,e)=>{let t=new a0.Sync(r),i=new W9.WriteStreamSync(r.file,{mode:r.mode||438});t.pipe(i),X9(t,e)},ORe=(r,e,t)=>{let i=new a0(r),n=new W9.WriteStream(r.file,{mode:r.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return NF(i,e),t?s.then(t,t):s},X9=(r,e)=>{e.forEach(t=>{t.charAt(0)==="@"?z9({file:V9.resolve(r.cwd,t.substr(1)),sync:!0,noResume:!0,onentry:i=>r.add(i)}):r.add(t)}),r.end()},NF=(r,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return z9({file:V9.resolve(r.cwd,t.substr(1)),noResume:!0,onentry:i=>r.add(i)}).then(i=>NF(r,e));r.add(t)}r.end()},MRe=(r,e)=>{let t=new a0.Sync(r);return X9(t,e),t},KRe=(r,e)=>{let t=new a0(r);return NF(t,e),t}});var LF=w((Vst,s7)=>{"use strict";var URe=Uf(),$9=JB(),Wst=TC(),Ss=J("fs"),e7=$f(),t7=o0(),r7=J("path"),i7=qf(),zst=s7.exports=(r,e,t)=>{let i=URe(r);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?HRe(i,e):YRe(i,e,t)},HRe=(r,e)=>{let t=new $9.Sync(r),i=!0,n,s;try{try{n=Ss.openSync(r.file,"r+")}catch(l){if(l.code==="ENOENT")n=Ss.openSync(r.file,"w+");else throw l}let o=Ss.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,r.mtimeCache&&r.mtimeCache.set(l.path,l.mtime)}i=!1,GRe(r,t,s,n,e)}finally{if(i)try{Ss.closeSync(n)}catch{}}},GRe=(r,e,t,i,n)=>{let s=new e7.WriteStreamSync(r.file,{fd:i,start:t});e.pipe(s),jRe(e,n)},YRe=(r,e,t)=>{e=Array.from(e);let i=new $9(r),n=(o,a,l)=>{let c=(p,C)=>{p?Ss.close(o,y=>l(p)):l(null,C)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,C)=>{if(p)return c(p);if(g+=C,g<512&&C)return Ss.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let y=new i7(f);if(!y.cksumValid)return c(null,u);let B=512*Math.ceil(y.size/512);if(u+B+512>a||(u+=B+512,u>=a))return c(null,u);r.mtimeCache&&r.mtimeCache.set(y.path,y.mtime),g=0,Ss.read(o,f,0,512,u,h)};Ss.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",Ss.open(r.file,l,c);if(u)return a(u);Ss.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,C)=>{if(p)return a(p);let y=new e7.WriteStream(r.file,{fd:g,start:C});i.pipe(y),y.on("error",a),y.on("close",o),n7(i,e)})})};Ss.open(r.file,l,c)});return t?s.then(t,t):s},jRe=(r,e)=>{e.forEach(t=>{t.charAt(0)==="@"?t7({file:r7.resolve(r.cwd,t.substr(1)),sync:!0,noResume:!0,onentry:i=>r.add(i)}):r.add(t)}),r.end()},n7=(r,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return t7({file:r7.resolve(r.cwd,t.substr(1)),noResume:!0,onentry:i=>r.add(i)}).then(i=>n7(r,e));r.add(t)}r.end()}});var a7=w((_st,o7)=>{"use strict";var qRe=Uf(),JRe=LF(),Xst=o7.exports=(r,e,t)=>{let i=qRe(r);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),WRe(i),JRe(i,e,t)},WRe=r=>{let e=r.filter;r.mtimeCache||(r.mtimeCache=new Map),r.filter=e?(t,i)=>e(t,i)&&!(r.mtimeCache.get(t)>i.mtime):(t,i)=>!(r.mtimeCache.get(t)>i.mtime)}});var c7=w((Zst,l7)=>{var{promisify:A7}=J("util"),rl=J("fs"),zRe=r=>{if(!r)r={mode:511,fs:rl};else if(typeof r=="object")r={mode:511,fs:rl,...r};else if(typeof r=="number")r={mode:r,fs:rl};else if(typeof r=="string")r={mode:parseInt(r,8),fs:rl};else throw new TypeError("invalid options argument");return r.mkdir=r.mkdir||r.fs.mkdir||rl.mkdir,r.mkdirAsync=A7(r.mkdir),r.stat=r.stat||r.fs.stat||rl.stat,r.statAsync=A7(r.stat),r.statSync=r.statSync||r.fs.statSync||rl.statSync,r.mkdirSync=r.mkdirSync||r.fs.mkdirSync||rl.mkdirSync,r};l7.exports=zRe});var g7=w(($st,u7)=>{var VRe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:XRe,parse:_Re}=J("path"),ZRe=r=>{if(/\0/.test(r))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:r,code:"ERR_INVALID_ARG_VALUE"});if(r=XRe(r),VRe==="win32"){let e=/[*|"<>?:]/,{root:t}=_Re(r);if(e.test(r.substr(t.length)))throw Object.assign(new Error("Illegal characters in path."),{path:r,code:"EINVAL"})}return r};u7.exports=ZRe});var C7=w((eot,d7)=>{var{dirname:f7}=J("path"),h7=(r,e,t=void 0)=>t===e?Promise.resolve():r.statAsync(e).then(i=>i.isDirectory()?t:void 0,i=>i.code==="ENOENT"?h7(r,f7(e),e):void 0),p7=(r,e,t=void 0)=>{if(t!==e)try{return r.statSync(e).isDirectory()?t:void 0}catch(i){return i.code==="ENOENT"?p7(r,f7(e),e):void 0}};d7.exports={findMade:h7,findMadeSync:p7}});var MF=w((tot,E7)=>{var{dirname:m7}=J("path"),TF=(r,e,t)=>{e.recursive=!1;let i=m7(r);return i===r?e.mkdirAsync(r,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(r,e).then(()=>t||r,n=>{if(n.code==="ENOENT")return TF(i,e).then(s=>TF(r,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(r).then(s=>{if(s.isDirectory())return t;throw n},()=>{throw n})})},OF=(r,e,t)=>{let i=m7(r);if(e.recursive=!1,i===r)try{return e.mkdirSync(r,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(r,e),t||r}catch(n){if(n.code==="ENOENT")return OF(r,e,OF(i,e,t));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(r).isDirectory())throw n}catch{throw n}}};E7.exports={mkdirpManual:TF,mkdirpManualSync:OF}});var w7=w((rot,y7)=>{var{dirname:I7}=J("path"),{findMade:$Re,findMadeSync:eFe}=C7(),{mkdirpManual:tFe,mkdirpManualSync:rFe}=MF(),iFe=(r,e)=>(e.recursive=!0,I7(r)===r?e.mkdirAsync(r,e):$Re(e,r).then(i=>e.mkdirAsync(r,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return tFe(r,e);throw n}))),nFe=(r,e)=>{if(e.recursive=!0,I7(r)===r)return e.mkdirSync(r,e);let i=eFe(e,r);try{return e.mkdirSync(r,e),i}catch(n){if(n.code==="ENOENT")return rFe(r,e);throw n}};y7.exports={mkdirpNative:iFe,mkdirpNativeSync:nFe}});var S7=w((iot,b7)=>{var B7=J("fs"),sFe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,KF=sFe.replace(/^v/,"").split("."),Q7=+KF[0]>10||+KF[0]==10&&+KF[1]>=12,oFe=Q7?r=>r.mkdir===B7.mkdir:()=>!1,aFe=Q7?r=>r.mkdirSync===B7.mkdirSync:()=>!1;b7.exports={useNative:oFe,useNativeSync:aFe}});var R7=w((not,k7)=>{var th=c7(),rh=g7(),{mkdirpNative:v7,mkdirpNativeSync:x7}=w7(),{mkdirpManual:P7,mkdirpManualSync:D7}=MF(),{useNative:AFe,useNativeSync:lFe}=S7(),ih=(r,e)=>(r=rh(r),e=th(e),AFe(e)?v7(r,e):P7(r,e)),cFe=(r,e)=>(r=rh(r),e=th(e),lFe(e)?x7(r,e):D7(r,e));ih.sync=cFe;ih.native=(r,e)=>v7(rh(r),th(e));ih.manual=(r,e)=>P7(rh(r),th(e));ih.nativeSync=(r,e)=>x7(rh(r),th(e));ih.manualSync=(r,e)=>D7(rh(r),th(e));k7.exports=ih});var K7=w((sot,M7)=>{"use strict";var vs=J("fs"),Kc=J("path"),uFe=vs.lchown?"lchown":"chown",gFe=vs.lchownSync?"lchownSync":"chownSync",N7=vs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),F7=(r,e,t)=>{try{return vs[gFe](r,e,t)}catch(i){if(i.code!=="ENOENT")throw i}},fFe=(r,e,t)=>{try{return vs.chownSync(r,e,t)}catch(i){if(i.code!=="ENOENT")throw i}},hFe=N7?(r,e,t,i)=>n=>{!n||n.code!=="EISDIR"?i(n):vs.chown(r,e,t,i)}:(r,e,t,i)=>i,UF=N7?(r,e,t)=>{try{return F7(r,e,t)}catch(i){if(i.code!=="EISDIR")throw i;fFe(r,e,t)}}:(r,e,t)=>F7(r,e,t),pFe=process.version,L7=(r,e,t)=>vs.readdir(r,e,t),dFe=(r,e)=>vs.readdirSync(r,e);/^v4\./.test(pFe)&&(L7=(r,e,t)=>vs.readdir(r,t));var A0=(r,e,t,i)=>{vs[uFe](r,e,t,hFe(r,e,t,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},T7=(r,e,t,i,n)=>{if(typeof e=="string")return vs.lstat(Kc.resolve(r,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,T7(r,o,t,i,n)});if(e.isDirectory())HF(Kc.resolve(r,e.name),t,i,s=>{if(s)return n(s);let o=Kc.resolve(r,e.name);A0(o,t,i,n)});else{let s=Kc.resolve(r,e.name);A0(s,t,i,n)}},HF=(r,e,t,i)=>{L7(r,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return A0(r,e,t,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o===0)return A0(r,e,t,i)}};s.forEach(c=>T7(r,c,e,t,l))})},CFe=(r,e,t,i)=>{if(typeof e=="string")try{let n=vs.lstatSync(Kc.resolve(r,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&O7(Kc.resolve(r,e.name),t,i),UF(Kc.resolve(r,e.name),t,i)},O7=(r,e,t)=>{let i;try{i=dFe(r,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return UF(r,e,t);throw n}return i&&i.length&&i.forEach(n=>CFe(r,n,e,t)),UF(r,e,t)};M7.exports=HF;HF.sync=O7});var Y7=w((Aot,GF)=>{"use strict";var U7=R7(),xs=J("fs"),l0=J("path"),H7=K7(),c0=class extends Error{constructor(e,t){super("Cannot extract through symbolic link"),this.path=t,this.symlink=e}get name(){return"SylinkError"}},nh=class extends Error{constructor(e,t){super(t+": Cannot cd into '"+e+"'"),this.path=e,this.code=t}get name(){return"CwdError"}},oot=GF.exports=(r,e,t)=>{let i=e.umask,n=e.mode|448,s=(n&i)!==0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(y,B)=>{y?t(y):(g.set(r,!0),B&&l?H7(B,o,a,v=>h(v)):s?xs.chmod(r,n,t):t())};if(g&&g.get(r)===!0)return h();if(r===f)return xs.stat(r,(y,B)=>{(y||!B.isDirectory())&&(y=new nh(r,y&&y.code||"ENOTDIR")),h(y)});if(c)return U7(r,{mode:n}).then(y=>h(null,y),h);let C=l0.relative(f,r).split(/\/|\\/);u0(f,C,n,g,u,f,null,h)},u0=(r,e,t,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=r+"/"+l;if(i.get(c))return u0(c,e,t,i,n,s,o,a);xs.mkdir(c,t,G7(c,e,t,i,n,s,o,a))},G7=(r,e,t,i,n,s,o,a)=>l=>{if(l){if(l.path&&l0.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new nh(s,l.code));xs.lstat(r,(c,u)=>{if(c)a(c);else if(u.isDirectory())u0(r,e,t,i,n,s,o,a);else if(n)xs.unlink(r,g=>{if(g)return a(g);xs.mkdir(r,t,G7(r,e,t,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new c0(r,r+"/"+e.join("/")));a(l)}})}else o=o||r,u0(r,e,t,i,n,s,o,a)},aot=GF.exports.sync=(r,e)=>{let t=e.umask,i=e.mode|448,n=(i&t)!==0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=y=>{u.set(r,!0),y&&a&&H7.sync(y,s,o),n&&xs.chmodSync(r,i)};if(u&&u.get(r)===!0)return f();if(r===g){let y=!1,B="ENOTDIR";try{y=xs.statSync(r).isDirectory()}catch(v){B=v.code}finally{if(!y)throw new nh(r,B)}f();return}if(l)return f(U7.sync(r,i));let p=l0.relative(g,r).split(/\/|\\/),C=null;for(let y=p.shift(),B=g;y&&(B+="/"+y);y=p.shift())if(!u.get(B))try{xs.mkdirSync(B,i),C=C||B,u.set(B,!0)}catch(v){if(v.path&&l0.dirname(v.path)===g&&(v.code==="ENOTDIR"||v.code==="ENOENT"))return new nh(g,v.code);let D=xs.lstatSync(B);if(D.isDirectory()){u.set(B,!0);continue}else if(c){xs.unlinkSync(B),xs.mkdirSync(B,i),C=C||B,u.set(B,!0);continue}else if(D.isSymbolicLink())return new c0(B,B+"/"+p.join("/"))}return f(C)}});var J7=w((lot,q7)=>{var j7=J("assert");q7.exports=()=>{let r=new Map,e=new Map,{join:t}=J("path"),i=u=>t(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(t(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>r.get(f)),dirs:[...g.dirs].map(f=>r.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let C=r.get(p);j7.equal(C[0],u),C.length===1?r.delete(p):(C.shift(),typeof C[0]=="function"?h.add(C[0]):C[0].forEach(y=>h.add(y)))}),f.forEach(p=>{let C=r.get(p);j7(C[0]instanceof Set),C[0].size===1&&C.length===1?r.delete(p):C[0].size===1?(C.shift(),h.add(C[0])):C[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=r.get(h);p?p.push(g):r.set(h,[g])}),f.forEach(h=>{let p=r.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):r.set(h,[new Set([g])])}),a(g)}}}});var V7=w((cot,z7)=>{var mFe=process.env.__FAKE_PLATFORM__||process.platform,EFe=mFe==="win32",IFe=global.__FAKE_TESTING_FS__||J("fs"),{O_CREAT:yFe,O_TRUNC:wFe,O_WRONLY:BFe,UV_FS_O_FILEMAP:W7=0}=IFe.constants,QFe=EFe&&!!W7,bFe=512*1024,SFe=W7|wFe|yFe|BFe;z7.exports=QFe?r=>r"w"});var ZF=w((hot,aX)=>{"use strict";var vFe=J("assert"),uot=J("events").EventEmitter,xFe=TC(),Xt=J("fs"),PFe=$f(),qa=J("path"),_F=Y7(),got=_F.sync,X7=nF(),DFe=J7(),_7=Symbol("onEntry"),qF=Symbol("checkFs"),Z7=Symbol("checkFs2"),JF=Symbol("isReusable"),Ja=Symbol("makeFs"),WF=Symbol("file"),zF=Symbol("directory"),h0=Symbol("link"),$7=Symbol("symlink"),eX=Symbol("hardlink"),tX=Symbol("unsupported"),fot=Symbol("unknown"),rX=Symbol("checkPath"),oh=Symbol("mkdir"),sn=Symbol("onError"),g0=Symbol("pending"),iX=Symbol("pend"),sh=Symbol("unpend"),YF=Symbol("ended"),jF=Symbol("maybeClose"),VF=Symbol("skip"),OC=Symbol("doChown"),MC=Symbol("uid"),KC=Symbol("gid"),sX=J("crypto"),oX=V7(),f0=()=>{throw new Error("sync function called cb somehow?!?")},kFe=(r,e)=>{if(process.platform!=="win32")return Xt.unlink(r,e);let t=r+".DELETE."+sX.randomBytes(16).toString("hex");Xt.rename(r,t,i=>{if(i)return e(i);Xt.unlink(t,e)})},RFe=r=>{if(process.platform!=="win32")return Xt.unlinkSync(r);let e=r+".DELETE."+sX.randomBytes(16).toString("hex");Xt.renameSync(r,e),Xt.unlinkSync(e)},nX=(r,e,t)=>r===r>>>0?r:e===e>>>0?e:t,UC=class extends xFe{constructor(e){if(e||(e={}),e.ondone=t=>{this[YF]=!0,this[jF]()},super(e),this.reservations=DFe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[g0]=0,this[YF]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=qa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[_7](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[jF](){this[YF]&&this[g0]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[rX](e){if(this.strip){let t=e.path.split(/\/|\\/);if(t.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let t=e.path;if(t.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:t}),!1;if(qa.win32.isAbsolute(t)){let i=qa.win32.parse(t);e.path=t.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:t})}}if(this.win32){let t=qa.win32.parse(e.path);e.path=t.root===""?X7.encode(e.path):t.root+X7.encode(e.path.substr(t.root.length))}return qa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=qa.resolve(this.cwd,e.path),!0}[_7](e){if(!this[rX](e))return e.resume();switch(vFe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[qF](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[tX](e)}}[sn](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[sh](),t.resume())}[oh](e,t,i){_F(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t},i)}[OC](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[MC](e){return nX(this.uid,e.uid,this.processUid)}[KC](e){return nX(this.gid,e.gid,this.processGid)}[WF](e,t){let i=e.mode&4095||this.fmode,n=new PFe.WriteStream(e.absolute,{flags:oX(e.size),mode:i,autoClose:!1});n.on("error",l=>this[sn](l,e));let s=1,o=l=>{if(l)return this[sn](l,e);--s===0&&Xt.close(n.fd,c=>{t(),c?this[sn](c,e):this[sh]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Xt.futimes(u,g,f,h=>h?Xt.utimes(c,g,f,p=>o(p&&h)):o())}if(this[OC](e)){s++;let g=this[MC](e),f=this[KC](e);Xt.fchown(u,g,f,h=>h?Xt.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[sn](l,e)),e.pipe(a)),a.pipe(n)}[zF](e,t){let i=e.mode&4095||this.dmode;this[oh](e.absolute,i,n=>{if(n)return t(),this[sn](n,e);let s=1,o=a=>{--s===0&&(t(),this[sh](),e.resume())};e.mtime&&!this.noMtime&&(s++,Xt.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[OC](e)&&(s++,Xt.chown(e.absolute,this[MC](e),this[KC](e),o)),o()})}[tX](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[$7](e,t){this[h0](e,e.linkpath,"symlink",t)}[eX](e,t){this[h0](e,qa.resolve(this.cwd,e.linkpath),"link",t)}[iX](){this[g0]++}[sh](){this[g0]--,this[jF]()}[VF](e){this[sh](),e.resume()}[JF](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&process.platform!=="win32"}[qF](e){this[iX]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[Z7](e,i))}[Z7](e,t){this[oh](qa.dirname(e.absolute),this.dmode,i=>{if(i)return t(),this[sn](i,e);Xt.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[VF](e),t()):n||this[JF](e,s)?this[Ja](null,e,t):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Ja](null,e,t):Xt.chmod(e.absolute,e.mode,o=>this[Ja](o,e,t)):Xt.rmdir(e.absolute,o=>this[Ja](o,e,t)):kFe(e.absolute,o=>this[Ja](o,e,t))})})}[Ja](e,t,i){if(e)return this[sn](e,t);switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[WF](t,i);case"Link":return this[eX](t,i);case"SymbolicLink":return this[$7](t,i);case"Directory":case"GNUDumpDir":return this[zF](t,i)}}[h0](e,t,i,n){Xt[i](t,e.absolute,s=>{if(s)return this[sn](s,e);n(),this[sh](),e.resume()})}},XF=class extends UC{constructor(e){super(e)}[qF](e){let t=this[oh](qa.dirname(e.absolute),this.dmode,f0);if(t)return this[sn](t,e);try{let i=Xt.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[VF](e);if(this[JF](e,i))return this[Ja](null,e,f0);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Xt.chmodSync(e.absolute,e.mode):Xt.rmdirSync(e.absolute):RFe(e.absolute),this[Ja](null,e,f0)}catch(n){return this[sn](n,e)}}catch{return this[Ja](null,e,f0)}}[WF](e,t){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Xt.closeSync(o)}catch(u){c=u}(l||c)&&this[sn](l||c,e)},s,o;try{o=Xt.openSync(e.absolute,oX(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[sn](l,e)),e.pipe(a)),a.on("data",l=>{try{Xt.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Xt.futimesSync(o,u,g)}catch(f){try{Xt.utimesSync(e.absolute,u,g)}catch{c=f}}}if(this[OC](e)){let u=this[MC](e),g=this[KC](e);try{Xt.fchownSync(o,u,g)}catch(f){try{Xt.chownSync(e.absolute,u,g)}catch{c=c||f}}}n(c)})}[zF](e,t){let i=e.mode&4095||this.dmode,n=this[oh](e.absolute,i);if(n)return this[sn](n,e);if(e.mtime&&!this.noMtime)try{Xt.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[OC](e))try{Xt.chownSync(e.absolute,this[MC](e),this[KC](e))}catch{}e.resume()}[oh](e,t){try{return _F.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t})}catch(i){return i}}[h0](e,t,i,n){try{Xt[i+"Sync"](t,e.absolute),e.resume()}catch(s){return this[sn](s,e)}}};UC.Sync=XF;aX.exports=UC});var gX=w((dot,uX)=>{"use strict";var FFe=Uf(),p0=ZF(),lX=J("fs"),cX=$f(),AX=J("path"),pot=uX.exports=(r,e,t)=>{typeof r=="function"?(t=r,e=null,r={}):Array.isArray(r)&&(e=r,r={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let i=FFe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&NFe(i,e),i.file&&i.sync?LFe(i):i.file?TFe(i,t):i.sync?OFe(i):MFe(i)},NFe=(r,e)=>{let t=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=r.filter,n=(s,o)=>{let a=o||AX.parse(s).root||".",l=s===a?!1:t.has(s)?t.get(s):n(AX.dirname(s),a);return t.set(s,l),l};r.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},LFe=r=>{let e=new p0.Sync(r),t=r.file,i=!0,n,s=lX.statSync(t),o=r.maxReadSize||16*1024*1024;new cX.ReadStreamSync(t,{readSize:o,size:s.size}).pipe(e)},TFe=(r,e)=>{let t=new p0(r),i=r.maxReadSize||16*1024*1024,n=r.file,s=new Promise((o,a)=>{t.on("error",a),t.on("close",o),lX.stat(n,(l,c)=>{if(l)a(l);else{let u=new cX.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(t)}})});return e?s.then(e,e):s},OFe=r=>new p0.Sync(r),MFe=r=>new p0(r)});var fX=w(ci=>{"use strict";ci.c=ci.create=Z9();ci.r=ci.replace=LF();ci.t=ci.list=o0();ci.u=ci.update=a7();ci.x=ci.extract=gX();ci.Pack=JB();ci.Unpack=ZF();ci.Parse=TC();ci.ReadEntry=PC();ci.WriteEntry=gF();ci.Header=qf();ci.Pax=kB();ci.types=xC()});var CX=w((Eot,dX)=>{var $F;dX.exports.getContent=()=>(typeof $F>"u"&&($F=J("zlib").brotliDecompressSync(Buffer.from("W4cNdwE3xxFxBTLHtk3ByhDhVM1doBzbUTrHtsmVjBVyejNHkHl/YQV0jm0GmYB29PjGUVXVrKNjjNrSAaiW1fV9JTIjVyhtozk6gs0EHx1Os+045mEw6w6pxuri3DphGBzGYm2qQMGjZFIehhhhOHGiNQtXIth1QDSoN6yZ7u3KGieuy5Bli72GQThhSOiOkmM0W7RCEz9ubCy+dzK6yRvuHO7ukGqclZ4i1f+r/7wU/x8SiTfJWnnrtd9OT0zIOw2a7qVfqnZseMdy/oRhVrzq+0FzYIcoG9LiOYDFsf0NoKpEkdAIvYxZkiVu8Yh38dB5aXyEn5ctrdc3VrkoeVw4ksAOrh15qt0hKc1NjrnsHBjkjnKAB5QTdtZl2etb0RMpot3j8sqqWDAzKIREHNNEXcuvT3hpi6r+dasXk06VJQnHX5CB5GyzVHt9Q44HwYYri+CuJKcwNxCPuuE115/l6xRm3Ziy6chZaZZG8ZHSCv3oxZdSLBpTI/6R/o7GQ6CJJJ+rhIH/+nKvq62GskdzxSFJufs3ryicWDktEQoJhWznx71spq/3aXC8C4sK5zQRLGuUxuOVogVXLNeOsFWvmd///XwJfWaBY/DUGJpdGSgikSrplTxk3MhwjlubbD1yeoVpyiE4sC6qlWsThAj4OYB2U/Xfac1aqv9Pw50GCAQlxCTAB4C2nMa0rd4e/1UrrdrVYEHoz7yV/8XbtIrWTsoNk7sO+pC5931X/dev8fp6qnDF9GOfcipa81x2gO5DmKc7NyNiBTRxJK+lkKSxfG3Iz2mS/tA3Oo6xjzWFxiIcFqau57OVp0xxBIa7LnZ+O7Oi2qTaIfGjbIs/Hv4CKuPg8VV1daezUukEjDcWaWIG2ZyJ+P/aa79cvB9CnPNcck0l0oap2AC6i7GjUTCe+kWo1harIf+xOyNYP2TpggphllrPxyWetPHZ4FAeWuMAefPPEYS4Wa6FKD++sXU8dJDKdun45jPAoGADUtGNMAejDRW3L8ETn+iKjofdXRxgus3xVf2SXbKspGQU2tyMGUrCQzuJQn+nfSlxPh0Pu7vfhbSlxyeNxtbEY5ATh5hbMEU2poTWFEMXM7Wej72Yo8c+ARCSaEtOIIZNnF/raUCIspXUmZFp//neUqtZRhoAKpVTqY0xqzF2l0gkWe3tZp9xzTvM/39EkBGRmUQaoIgEqBFAil0gJZZhqe597/3Ajx+ZVKShOpGkVCAotdwYljRGbaw4xrjVrDZTvaqudS8XKPVGNbZmVrNZznL+z1TzKr9ZkKJA6gJ5IcaiYXCsU2qaKPz/ByvOzALH3QVJ7AKkuAtSTwAoPQEgqQDJAOgAwYmSU8oMFxguhVSfXYVYXu8YispN6fK6zlXronFTuK3z/1+m1rd9LyLSgCAhUEWpSqdUamPMOjIBoiiV+caadTPeve+2Mt6L+ALSdBGZiS4iAfwvguRvAiDml0jVe5EJMiIBqRIQ1Z2AqG6AUtUnVeZQavUcVY0vUdJC1d3fmbF+sW433izWs/qLpb5X13i7nOVsNrPZzWK3GJP2frMU4dACp4/d5A2tyqLsJpNytSo0QuEtWn4cPE8//Waz54o/71KaYoVjjcqgkDqhJtSAQlWHcLjStEZIjDTcT/V94OOQuquKAQkw9J+6Zc6cYcw8uO2ff/PqLhdEfrz3LBBRWgYSo3KMkDGiJSI2hlLqrXPOUS/xY942/RoTmFwrDjTgQSxofaq3byKn7SGTeZizvm8mJrkkE+/6bCbVaKdoFLGAFcSGWCg2sAFixYammt3+3g21mZUsbNuk5lE2EGJKDIgSJUT1xN99vM7GmDlx6MQAi18ycdHnCAQCJSe/0z4+38y2d5f8l7DFFFOYYIgKF4IYokIBFSKIRAkKuFDhwsUUU2yxxX1+ZlsffG9WqPeR9xmBQCAiEAgEdYVAICIQEYiIiBapuohZt/6f/z+zljD3899ixOQGgeAlCASiAlExeUEgEIgKREVfUlFRgdjyWTkrKtwD4D27dwMMDAQMBAQUFwICBgYGAgYCDRwXBgICBQokKJCg7tk2/x++03OEfN/dKyo6swgEAoFARCAimJ0IRAQCUVFRgUAgEBERQJQ2/T2FoVQqwDPfGzVjBQBKd3E6wtJl4F+8cJvo4KBQOCgEAoFA4EMgUII332/rv4L1ZuimgZWo2BiF61LqDKi0+ernwwA89w29btFfUFCpr25xoYcmrQmEHopCQgsEhBBKlyJIcd328TOTbAlPTa6PY/ikbCi+CVX3/pC2PgXdK4i00+X6SgjVckQ1/KwnxUStGAS5LTg1YqKjsOwS0Z1lqQ3SMsCsGPVVVf6Frniw2a3XIt711pln54nLL5pCeNuwrnvFPIc1iuHYB8er62CI2hiRq2duj7l+O0HK+okqYtBitwGjFi0mHSkDdxi9S2b8OCi5blwrBEQ6aVhmeFjwyS/XALpbAxRA+e/K+oGfDPQBNlSubRN7JvqxaICfx0ChGyBAlZzWpomJ/51o6KEpOGmN6A4iBs4o0uHL3iqgleqwD7XDIJE2Ka88IgdESHe/Spq62Xn+4b114gOBNqPgo1rsBk7LyBv0pQqSDDwFUmbf36jQRBx7/KeLN53JinvQFBA8ktO5r3nS4dAvk/4+Ra5897TAn7w5cnsIIfoUddX7+nhFHpMcVQtNchZNgf4/Sp4h8jZOM2L11OwK7WTwmJ2dKWNJ7bk17LyxYRHf0FqbT+p8bOL0Hr/pfXOezvOBlVdK583Vs+ev4pMrD6xuxUgyZXLBkH+5Qv6+BKggGn2f6gdFyRp6PZ43TcuC61aEHAk3v8Habe4IoO/b32c70g5i7SQM7hoYfX5T160sWGmrayFgp61vFP32vBts3TXVqFOcUGJVaJ06ZnmjGZ650rvfs/Qbf34tf0p3QRAoTh5C6TVpAzwGrAYQnCpP/zu6tD7rph5z/TasUEjxtyaIHyh0+TrmhhsdTkVP4NCsKvMasJTMxsNEc9/S0K0NWefw3ixOgf9pugtK8vdBUTErUFbUtAa5JnqKSwewhoc1PKzxYdWHJ5+y8VxQuL2L5A33XZaf0mZ10hsftAd0FAHYfwKLgj5DibGj4KsWjKNpc32QWlDeTG2uD/sjKc8D80/EPUu5L0UIMIskWUGPjSsWrMXxM2BGULpCyp5gNu7zG+X5Izq8lxdBoRD1BmQYtEjGlRsecIjyyd/nEpE25sXY8BhUMDuq0LJcbHzEnjLvEWPAPdrsCu6qAZHUVub4yY4QW40pQ4jSnTOlKu20MaVYIDcT4XkjpWGNj98dF3GJ83lMNiYia5Y7XTG+vEUQDwoTSwEnRBf7yQd+CUVj+N180A3Kv61CfUQ28UHFuROtbh8HBK/YNQvIIighr/Zc7sQbkdOphKXkS0yhWRQ0EwuhqY9k6GNM/NHGtMTFuI921hEX42K2TGQjwbFY8SkOMRGWFxsWEIngH48hk51Iwyeh9Eu5a3AxDtOcyiIgquinPsTwIbFEbBNJkT9Fw21rXlNkBiIF+RyT6e/NPSMEdLXUE0N9mULJJGu4SBddS8U4UNtaG+/35QH/8E/+yV/kC42DglJ20+KKshw+OuJGaN5G7auG3M0Q7y47E1SedkrJuem+19lOpCrrI5aCTj2OhBTr5xHZieuXBJnvHjDVulvivuXMsBbaEFcPJHuoeHrswcVgGhwHs3Y4/jDmUkpf63mJ9+3ZOgT2tth/uMoCItCjOTQDYDl+k6oX8VWiw941GwTJntvU/hWQCKv6PTEcYElpmv5UxR/n4UGH9ztRCsHT/phonBxlyzfqHi8ZUqF/jsAtMYmTA2ELX2qop7gZYXSJ9JwSJE7zVBK9WZHTSGpM8R04Q1hf4J50CfdKcFDQA820PPtXXiv29GDVC3k7iEoOjP0fFrg/QtyfvNWTP7NOSiwUnV+cmD6QFStgyQodnIa3vYjbTgLOc7H7aFfAzx25AN9Ir6K41PP70t7Yz0HcFLJzEF+ajqzn7jUOCWnLvhg62ZOo3NXwou59kuCSHzc7CK7iYYBL498LoGu+/shiDkNOE+X7rhAsjfc+pmbsCVFGnPvDWKlELNrASv4vp3fhRSF4iHsFtsh3zgRitFwyI0L3O69rVcwJcVHsWSwk3ZEA1a1RMvbPIk8pOX32/RQk7lGiuE3ipw9AWmfvdpnmFwkjYSDO09Jj+qmJ9bHxn8/PxCojBVLnYJ4NxmZ/XHVAGMeLdAaH2fG0d66v/CmYzpck700qtO74fTWvLnD/XXbV0IFo6MHyqizKlok6hbInHVjE1ba9vRMj73HcxXLUxRNCS+HhJ58G5bRpzdCbXbC7lPhdCvGoe3yzx09ZNZRN04EbS2bYsFLkcTm6UKit8iZ9iaavCQSUJ4oc4/fvdLvtO6jkaMl2oX2QcZtIOVFp2pUNeNLyl4uBsBoFnwyJrZMaI9kHsCEgagjcX0pRPfSS8OfS6NrmjAUCuHqOPKlqv82+oyYeHpNxXQapkj5yr11xJ2BvwBekfN+jpWy0+hQJ6X2p7VRPc10uc+84r373wrc6od4/27LkLc9FzvFcXg8s2aiW2enGzMscIKoqKGApPQi+W9e7Zx1jcLo2sXzZkMIghL6UUrlvK/MnJr15c/7vcDgNglN/+gEvuiUbeiPqSSPsAA5jP+TwEmvu+Mcws979PQGLUNfHewelJJ2oQxg430Z1xwC6RnN1tsq6ouXGovwBkEmY+vffJ0stVSiR80AI8N3SRhZ9abqRcM5Rj0rfWtoSMg7OC4dSvH6EbDUf5Biw2/KsbklVylCS5mk5GhiEJ9dNoWzBAOUtodsWYafJi08oR5dNXaSx7PiTBr7lw9Vm0RgNx0OehnPvIdL8TIm6DCnCTGEeeQ4a5YjnMs5KctHz2jkQjrbEtjLM0MRj0b1laeWyk0QeVWmZvjANmQswaK5C6rwfoiUynKOkFD+KdPd09vTrqEjLDQ1hnBSSya1+d0s6Gv6jt5YONJeGHTgrfMlXLA/Xqjcwvzgta3gZT1926q8xyCMp7cliLVpi5dgIOzOjZ6SLs8bpdyX+SfC9cMlMButJST1AaILw08sq7tc7f9Gd1XoxeL4MrsFpVo5334NX0jcqhTAvhau1FbIhDuSCbi6cF2SXC5ac9Cmb3iCtbR5wIwr8FB3K2xkefYEci5y1ojiQ0c9CC7xEOpbEULYBsgBCeyirT0sCR0wCw7axmU3Dl2hEBdWBoS/fQugfCiEmkt0Tl9ZMsrsWR5rgLeYNdqLQXGq/+bLWoy75YR7cfbHVvplRkM7uK/CbUnGdnapfPo3swMiTh4dDBxJx2qiXyUthL+azij4+EYwwMCKBfcAzNVQd5pvZw5ZxKNdbNtNmaiicZWlESqgzazaP+BbF8J+eSlZ4JqBROwSMJXdxLIjxeuQGmHPiCVn8wRG+HQNxCnYlnYJPWsZloYkaqzqCFby7BpFluD4h4EVMRKgSY0+bhMNyjSoVJ4X9HTWBC/tLhh1E7L0Kap4V3cv9zkO0Q19Jz3s9eAb3jDJZn1eAGyknvP9whVKkxOdlHIB/Cbf5ZlNg8rRbHjkrbxkUnAjSKvAFnFsfjtm6221uFM85KBVPAMvF5h1QbhfytNsPKzctW0Bu18N09PTpF7AdWcTNaoMv3vn5gcM6o8TxWOJYFefxAmf5kIUtyjDJ0y7hqKpKuiirpU6/ALcaJrbuDgSk+FSelMCqTGUab/wyXRmncNAd8SGgWQEvBXNso846zLiAk26Pg29GSyUZ5df4KuLr/+XXNHDv6CbPTBQTxyzTEP2OPOVdAFozNEyf94lZv5seDNfQxVulPfY8p+NHwzDQv0ujFwkCuVPpQ8jj3axRAKTqufVLhjlM1PZ0gZJoBQggKwjBT9nAug2yrjbzJ0XA5442H+DetoubEmhqqT3OJVTEHZXa9un13z4o3jJvRzqk3LCYmjfQKJDoKjDeYdaxHhw6+AIWEGHPkMN/RndtgpB7RHAtdU1QiL9gF7anEmDKeVkd4c06xy6Mq4k7JAw6rN3T3LKCe3xnoLHEiGJzDwYHqwGPQFQgtoNE4kRBsUnYkfcGVV1Ie0qkgsjEW7i8tvaoadqTvtYWpG3Ts78kC7rdmtah7wUHae2CqHGL/tqSX9ctwfWWzre0iHqqQEupDNFqRUPjfpFDbG+w/akesvC883V8oLb6+mO2VmoGoE0Gyd0n2j6FUidGJX4O3FpoQyGKpjyB3ve9PSYZDtgj0u92BoglfyoRm/V8U/wiQM1mYMp4irY4S8C9sBPsSDmWHhjUVNqZtqi+tyurPTtiEgNYFRmDwhoLofgoFwUeJ+AoGK22Y9708SseD+qw9ZQPeVFdJRYV1aEf+fZsrkTwbXJUqwOZVP0/tMy7sVkuaegr/taspBhxWR2pJxfTWCJpURMLiRwpnimif29x7ppOPFS4LtwuKFPbE5WG+bArF0WFG40q1Gtx8cQPHZrSJ74QCQh0aWNbme37wZH5KYhKstpQlXNg1qaDRFxyWjR9TWYucY5KSXE34atrM0K03qS+9XQfCGcnUz/TABAEGzYe9IlSeZCiw8Tt/30hEp2XjA9CN5ScCJAHFNmU6HrfAvAAmRUd+xNxxX2MLP3dioq4fiO06xj4sg/nzhxLFHre+3g7AyjCCaBCM/iJCGoSdxVWp5YqfLfZIZqo7IrCNAYkLdpOnxqjYnDrAK2UXdUnxipMWyS788Sx4Nwc3eXIk4EkkWChpLWeHF3JSYlOO2z6pCozmwQp8pbddhtHpAzG3j/yXJksoVZPypUhBYHvrmzGqI2s1Eemi9PMqyjU/IxWWhAdDCy2cTJ71ykY34BEAkPhdZ9lFRZC79Gr+i82J6YZCesUEKJxEnofKPu1A/L51kd/5s9iZ93/uQkix7heDBxrcz6YtL1QF0YsmygL0hY03JJNv3cIqJ6OT4kzWWxVpD2QTh9Rd3IrHy0KYXQx60VpL6HVIS8R6XzyPGpBb8SIysSG+pKTW7nQbxBPKX57Xrky7BlVrmoiPV10LeKXgsXg1vvfTfx77luU4aMavuoFLW9U+1lq7rtG+vBAz9ibmLHSWg8mET/pfXfFNsy3oUPEo52QQ9Og1FJtq4r0DdAqVJkoZrvs0KoE9Zfz9Km9kv0PGk0jMOFZHnogJyGckU5qfwIkMiHpoFCTgmpPCPFKP49fQSbBFaSRtBRPjTMFo3+TAO92CqtAkFESGSCeF77Bpv24+1D3n+1gRIJoeEwOglMa+rXHT8e0C+t/ikiESmSbpspAer/FgIAdD9Ho3VMVw301InapLThipFT5QAgBIDKurIPZ9jy5lPeYEwj1kzxdWrhMzgh6On2pCsm1xEP5gJM2HQFkJsg00hhsFzepu79z9tRyibc+erq1ba7iFDk0VyfeEGGgKNVMI8aEUg8IWVT020SufJUkgSfK1tAwJpliF1OICFi8PVweO7n1R+86VPc76vbAzTEv0K8yB70C2rlF4bhwj1mEf/1/09kZHMI3gbz/orQr5j0KICiJjbZm5HyZ+wsABFoSDXerdfjiqAZGQmIf0/f2VyLtD+mAOldWCmwEA/C8NukNIvlKS86sgOfD+nbX/9yoankpiTv2hz+TD75Da7Y3Drppae6SXv9O5rv/1bE+rd2qfjhdt/69KG3sWIloB6/ICB3RNn7FrI+wV9fbMe2CR42qatwUDB2WSCQrDQR45ItkHFrcBXKNEZHr9KxbU3hkOVb85Y+QszqS5Ojp0/DdKeLNk9etp9zwKXrSKzoUWoxwlVeaPfhnawJwxrgLNziVX6FRX1UsLUu1Wn4y7cgPH//oDJ8t7ipRqtaFqUi7A8JjIT/JZHLFajdxZalBSo5LV83sOUOLyfg5gJHW8S8DeYknB1ne+YsCqXOcDCfwh6tIN5OErWaUyHmrvDmRaLDX/GNMnLyhUqufSmcz+mdSXc96KcrXTn7kR0mHK22/NHD5EnK2P+7N/Tu5fzwTXl9pc18Kvq+rvnx5TVMgKn2YQWZaz8zS68DN9C2oo0A97nN2vr03Seb0uUhPg1iSXfCk3ZcSMYLZRpEJHfHnP3MlcXzcpRLq7NBIgxCXqJTfR3XXyRgasVaaBWh6R4qqZ/F9UnSKZ6dVmew+h/7DakTNQ/9hnWRIj2njIGpHwcpriRTl8SCKieDMa1sYsSTq3NC+gatUhUVKFcRJuIQgIK0wFQEjyQmshJ16KsOKQQyLRhQUBqGFwQXufIGjfJ9cjFTSqJb8k4+SjlQ+JnmqAPP9j4eR4X4WFbDSJxxP9E4X3IeQNVuF6DoZsR2cyHFw19TQWUE1hP4sNkuhCCXoYg1c1MoERHtCLtFLlxG9p5GWHYl0ClzP8McXHnxO1HBhIyNwgmcVeYr+JznbgeWR6UVjF4SY0TcLN2mCTjl0AkRcS6BusHWhGTOyPpKCDFuBxkmNodjkgxcEI8tbT5xJRqzroeXdp4KRkUjgUpXNTGKGYMZSUnu/E9EhF5KG7EgFgbh3NMxkghytbib7IYpcqrLA2WAUvxUwu+fEQXcYAuOV3J4ss4fcoS08RQfRxrNCmQS+w2Uuozjb9pQRKPE6kG/xqUldbwhEkublDCS5Kw89eI2jiGkeIpnOY+QwYUM8Ry+l9JB5t7ZjTjcWR3GQGmqxVFaB5JnV1d6MkenM55ewFTVtJ2h1FF06Zc0A0lR/5wGF/UIjI7bfvqSUOc5XqcCAZ/tKeNOEk0NbiBHWy0lfCVaJ5eLcqp/tfUXPvpvKGXXhpO+FU+7CaXUBN+cdlkOSwV2ksiIbt3heJC1jKy98h11LFh18OJ+1se/Q7fddks6NAMcrUcw89yW1rM288D37w3QFFj7PtUD7EAMHLcQkQKIXkcfHVykgoOPZbHFUHgRkqtW+QBOpNnkVUnloMpmu4GExCLJQ9OBloQpzeGk+brInGBHjN3gSrPlB0vcFhWtDKxTHDJdhvML++h2jQNuRB/SnfoKwZxu8/yjmEYLsufWWPoft3ToHeHMetoVzDOE0tOwEQvAy3LwW79FWAWxlTehUbaqZBErThVyZC+JHUa1EpMQe2dBu59Fhv6i1ay+lakX9TDurN30sk6UvE/2NGwifk2fDVy+v0+Mm/p4Ftbc+Sn8NymnS0QAnJiPqzoUXjncjzKXRsaN2u1iHCaOFA51XcRPspU1QFu9pMU0wjSaAqjdNz3G8PK/YgjE2JDFMuyIQDrjxS9jqusS40K7yVOGELqzeoT/HHS37lCJ/qIFlGgXG7k4ghuID9YUyC5RfK6t/c7L5fwOIEkOdkuHu0iAw/Fr4j2hwU8xUdLj5veZBea33BRwBzF1IHMRyRy3hblsLYvQIpWgRgFd+n93Tr/dcicE8o0uVkQScuogiSkWgTMb1CYUKJPq9tatffSk1wWvchLM/rQ07u1JBMrBBaanot6u4xdjMdzZ1hw9wctK9fDSI3TdeIiRaqouTuKAmgGbuiAKDsxTAi3/ZU24y3+LpYXBmQG4Y/2uaABFIDqvuaGWyKogYP2sW3KXe+YRCYq8sVEBueLclYz3smqovlo4nVrijV+gNcoEt9hraFgRkasyyCfxqm9/AlZgQtCZ3tS0CvS04idWr0sifcSUbn9xEuVq20rurBz8Tz81PlbvqD0qRPNQpVgdNbbRKjpkwvixBIUwQ3+vKzwENTR7SgJb162QANNb64BDEE0JthgqxctRehgGPX6Z7RtkwX6IYHvTl9lNRtaNAZTpzPXz44TTES5A1e03dmgDpZfpjCRO7Q5rNnQtaQyg7WohA7Lse1kBYjCwafNKn5T7QZtzWYTDt9YlEhwyclrSchjnIHF4SWlsgUEssrVG92c+fbm3PlAuKT4sZ2EfoYh62ieNG2dkvwemmqE+BMi9AnCLtlb5t0uHmnaEYRJKaHFNm9vHKqqDeBt5H9d9eilA57aDXMHgNpumLIsl+CxnegLZ9ZP2bjbwsepfE2mOmlCQoKzA5URX4pAXrAqV9XiSruNmRf+27Qwhh+VsZnAJ6F9S9+7cPeYgtGJkESB8PXjWIc6P7WL9W3hcQYgq4rHyxO1vvNKuPDKtL0ffRrrh0LD1HdtLA1KP/rtofjVOpuefPj6MuM/SqxarqMV3rRPUjkaQnpSd0RJz2WDRtyG9humLOqMzpmn0o3GzPfHI5dhEObU7c7uyiztTSx0icWhjxCDl1RqcknWpW75WKS6fP7q5cgMzQzBNf95oDrlzHNMv6CNE5iKL48jdEtKJYy+z0UKUt0vZsI7KGm/Acja/4shMh1u0m4YLWZd/Di2LXCePli6DVMl+dMaKYfE2CKE9J27cqK6otPAfzDATRMO/WvfvDN13G06DO4RYJWGRfhTuCzz7nAw7Lo9jP/1PKn7EE7969mTMt0+6sYPSUmm3rHKur6bjM4RlP8O4hA4YFIytL+/G001Ll9Yw+6HMt32NY7q3on+vWnVF7ditRePeYdZQ9trZC5uVE23Fv0zxgNA+S/nV/x6bd0SHf/6X7F4znEbc/yWvk/mRPP18/GlfuPoniPcf9+7KKVnDSDQ1jPKduhBl5QJNmBUb0YaO9iUV2BtdLXrHgx3RLbskCkLhZ9sWSNlk/zOh6Si62x0sgGmXcijd78v8OJ7Kc8mDfAJYilDEnC0oLeSRoOZeKmcjVb46aqiZP51msd4XJz7gJLMMNHVG4Sr32M1eNct3ju2UFJZ0HePyWdWeBH6mcFeTy6c6oJjFYTBGzcBOr6yBWmY4w3tmm5riUiZ1Ll6pFeZbcC7aGimjm8Rgh3f7xZJM/imnrafXvdPW6Z2cbaURRGUCGF3cfzShKfrN9+rPNbtoBqqXO/3CQz5WwLMbDV1NB/6RGQUruGQMwk/c82gaYOi7lQyz3NpTJkokOSJnO6A8FUGi+d5rARzVQeCYWS/IBS6nBrx39+PkyJHCxpve5phUY6A+QNYUcTMySPxrtN3Um87l5oLPLzqdGVIrxdhYGh5ra/K5cEuE5PpGjpPbGnB4zHsSCs/8w5W/5PMT8PGVayGMhT8UCHu2CQkotALAL5koxvvTGtnAuDtAuP6kkFQHVAwAhhn+3XAXbEHYDDFojQMYHw7b++ZkPiZR1ugR4A18fjd16CO/EXc3tGXzcQc6JKDwEpQvppIthCA8EqMZIS/oT/QaRgWtPeERUO7+zF6kp2hQ75Jh/kBPpmnABnEy6O/CNFqnWV3S9HS4d9vNr+SO+JiRIJbf5qUKXf3YIY0C1QFtKaBaJvmtCNmIPcptrLBEmEgstoaZVngqDE7E5bChN2VQqbH28r7jZWh1xiNvANYWO+T09CsIfTLxXOmFHkqh4rSqZxwNIJWZBE6Fk2LoxwLTUOW3iTs5pD1XyKxzaPCTr9yKxAJ78Ls9t7Nba6sSzcxjqWtVqdZyONuagpftskWoGSFyeDY1EPGAVJIRupxi/QrRBqx1ugpk6QutLZPqNMngLCiGcq0YGCtUDypEcq8gzEBqpzbyprn8ejBREf1HjuX+O1HrDbK2z//8DH880S754dBJ1HEy08nnMC0L/vwrAxv9rLs/tX7PEnuXqM8RY/iDAyNZo5NBU5Ay0Ko4OVwWxqJ4TAT/fEUzot2FDFIwxPPS6JWL/Wp32VKiOklzs+745263/Ptg9/qzEr4hUMN1ybbkzOgSajlI2EDvkfFc+5PB0SYdoWx3fppEotdWeHsli0r205wx5811+pZSTlF0F7OsQvRk+6F+sOjg/qmmL5DBh7KuDdyuqW+nQ8vXsuq0rcmoBz9c3sYspp+xG+YCgZw4YoN2jy75OT+sbhwHsmN3MGiWnLkFw4oqKsKTqG50dpgNskPWk1ino0vrQBAQbcv6RIPfAxoM447E+TE9NhELd4Tya3fOncafZ7ppjuzHTilf7x724Wh46OY4XjpUZt7bVcpFzM1B+J+N1cg3xbm7awiWlsrz8ijFtnhgQQjI1p20jxE7NIjqO2S2c62dJpFAwR9m7cRd6QHt93eAoWAVL2ljFNc/USilLOhviMH35Cu/SQ1HxeVUBgxnasy4+LXj/f1L2Uz8eMuc8mfhJBSH6/K6TgTK7cl8MILrpq52WOUU6rrGcHquM+5hWTRux7h2DfpMXmWANFW2kdapTedBo9UesD75+GppyOS3sGPQE7cu5JLO3C6qLudzXSsesv/2QUst/3bBcIB4v/BbprxF1gIxrWj0m6Ki4menT0McT6syWrjSeXTL4/69REQtSpmrX1372ms200lfsEYDlTKx2CRhL3DRO49XU/E//vgxSQqs6e37waUyRnnCQ4AyDbsnx1P3tg54ONOupEsJbAmKEbolIsVkENacTK1O4HS88d73T9e+LqtgGVrkw0TwDtHCavnIR3em9vA6zAfBgI353gP0wI84OCCQNok0vtHLo+d9w6M5gClHhsdH9F6Uyni1l9CEDcmwpqhDbfN1KhZSe4UOfZxIfkotf/CJOCJGgapr3bhp6flp5AUUySzZnEFpnziaerrTB4QzP2IX90xex9ERa+yMd+c66yb5xOUNg9HqWMEMfyTVRStNAs8ycb+OXCkVEMAZ5EE/NpMGZpK9LBCrok1pWxsDpc1+UZiG9IlWBIh0kT1Zgp7L3WJR+3CiiSEHnaS+1tMvRYgEATWanfR/XxgcaGdUwT0mtd7kGrSoPEnFzFGnvJ2ac9ePW85sUq94Y957CZ2epIzBUj49DmBKJoxx79JzXsCvVYs1KAn8cZjWiFbJSevo0BE6u4s1BdGrqImC3Md0HMV0IU7wFErsE1Bf16uvpM3ZPwD0J51GIaKTZ/pizSI7wwlfHDKMAcxY6qHg0AK/lB8z1pZSEtpgmFlxAJtgNk+FnBHYP63WMHkwszwAQtxMjohNUgrOCnmzHZYKJL15IAIwDVzUEn0Q+aNxfMEpni5J978DnMKGZ1mDJ02UKEpQnLEUSgdXgs+dbABC2Y7K7v4O4z2ebVyHAhHpy+P56HtfPhYwkXPTDeL5YQ6waAKiXivk/GR++tlirTx/C0AztnQkXncN381Q3f4e8N7fdm/9v3dHVd8q9+cj35ln3ZtiBzmZIHlzkdbSRx9LhfXiXU2/2Iqbmp2yctun3LL2D+jOGziM03xF13tfKbd5G7SanrRnKware3wdsr5etUflKFM3Xz4vadGC3DVl5g/GtIJDF+2G25mBl2Q+tND/4KXVcpryyrPBLt9jsu2Mn3y1bn/JPruN1M6gECk3SPJfKHSykPMNOSfZN9/yncTKf/32s1i6V8b7+HBd5DwAFWA1GRgW/qsyXyXmPfIyrmYtYqHOzrzh/ksv9I2l7NK0I0mu60ecHrhn3lNEUlbaP0RGFDitox7TnhnlxoNsrfbdstrp11rlPsZzirdbM21/uOdGDWnVpr3+ft8NKfCyohyc0XDKh7lsYOf0V4qt82BXjlNUTiaucQMedoJyH254xBxjKp6T6YMIy4ZpaCIRZar7Fqu/Eiu9YWYlu4bLaIoKT5Flm3KahC08Fz0eu+ZfcnDsVjqVWqGWLe5iyO3ar0512G5uzvIcvetHFeZnIpd5P0SeWO6PCELa+brYFb8qrJTi3X/80Nnz48vP9n6rPzc+lGsrytOpLEoWDZP4pmM/JR1RNuu/0ZT2qfJrKz+VdBFhEQNRrCOpFm7RVQ3x7My5xXQJmstUl6qJQpCVm18shZXd5xKL/YIWOCFXGAX7iMjw/PUjAGO0iaf7gguFHKapvDamte8xEgoYOt0MmxuKI6OLshVboUyAJtIAAoqonScTwLV61d+DvI9httD/9iEw47ShZEWGpBNcGvz1ZdPYYzZhEdNLsgwaKq8+YClibhUThg0hxfcOfExJFYJNQnfm/tlwWWD4of8Qdaqpdo4kiwR43SCasY8y/RBNd0yKWRscb5mCGPbhO4m7ALEsTKYsSieYjHMvOZXTKEV4bWIGJNx9ovINCPmyA0zPfLDNlDDCWrMRDdezFJ9IGow38G5l9n+3c+i5g5xHWW6k0muZzovyqyHfZO0hLxVK8VKBGYLpSO72vrYyKMETfi6W/muPoj6oCkhilMrtTxRYEmVSqX10RtqyUPQasqaXqGyL6pLIIm73gLstFe8loHaUR27P1oGRI7HKlr/rmDw3/9DIWKfkLGf5/mES+C70nETE76AhzMiXsnzF6BC7IPVsNFs+5imMPb3E8n0aMhmHsGhTURcn2FW2bDp2jWLk/PoIkR5a2W46neCyK6Xg6HGOwJldHppwfEaOAk7X6A+O0Hvb4I1/4rqHUEkbzIrI0BaHnOSfsFjFF/03yxXA5pZFO7eBLiTNBqKET2vF4r949l9P3VA6c1MmaPcCRfapBo3WLaECYLA26JhoS0VDtphdyYKWz4OHrfzyHZBsFNxpuyn32N3nrWfAFAaEHFEnUSnH+Buzkm4LR78vhS19ym9cfASMDvr01RQjJJ6kZYnCgU/En3iZJbXnO1WoqkmRR5f5lRWpiySTydjT5k5PR+hQyLvEz7SKvJfygew5CnId6cyN1Dt1sypvi0ulMq4yngj6tQuoNTkQuxZygLbVNnpF/hnjkQrWKs0ooqaCcC8ppcmQPDPkPvlbMA58Pb6H8+Sfr/eXaKynPvLsihWNq1J7NIyDt6pSqjP2KZf/gNb2oDPbi6LdlhQ+48Hr9CHsopH/qJbeUvFc+GYxOFGJ9ZVWGQVYZtZ7Dkv5BqZFz/FhQjlaPDNcfmlN+OlZrxuXUBsbaM7T5ZDtXqhKALyIVWlAZ1ikoeCqQBLG6x2YQy9+pJQfCLszFUHmn4BH6oAm8wQTBzbVI26itXHuMy+js9QWXxaBms0NYsx3eXr9qG5jde56vRCXW2CPlO9QXqVafQi55ZtX1b6oppu+OiWnXnYFaIMNJmgQFApneEnGBadjIgqRkWHvR6TjUCh7jwait+JavCzq9smPkXj2/8udcDu0W3iGtlDK7wnlr57LmxsuaI4r2zld+vddiqRIrXAV4DBsF5lgRos7EZcdjKMC54HVdxlnlIFOT9t5BozpD85MVpWR4HhTasYBgqcW0upWFtVh2roWLH6UYmIi8jvdU/KhpAE5Ud6ldrnnztjsQa7z/ehshKK6b1QRuMIdxetfmGC3ACANdxZcjGMgSDwniAhdPpcE9Ljq6hjVbwh4JzR/KH9/MMwWs2LJnEVVDVPJNQhs8icfJ2pL8W7CYWXxyoyXjC4ncpSVth7b/1ZNKHcrG3skARc1zjICyUSh1q1v7tMu9LzCE2EC6lQuJY9D+22W4XN1hK6RKWxkxrSw1XCQul4Mte13M4pwHZHRsl9WhfbFz1AWIWOWDkFVkqW3Rvl3w9Z6VnP1fgMoOho00PmWocYcaT/p/4ff4t5tUamBYCyuzHm5fqaylRTqktk/amljpz2hIwjvwBmS6VP+lRl27dQzQDxn7fujbKHqk/bc1vCcT++dn3EYEfsFpNC7A+8cNIi2xbmqc65OGqBbK2uVFTY2e2FmmupIaMhT1Z+te5/keLZmdmrzx+CKJVO6ogaQkcDQ76RYcUBIkCM4SWo/El2rZHMEL9yf3GOJu1SqbxXkU59cW3NT6voqy/DocFbzA1D0vkoDFMFyP7ucs4gYBiSV42XX0di0MipeoaS0ONzDZkLAKXMMjcLR784xuflPfmz8j92Y0yHMs5p6UEgkqORUYTX4ZO5tju8sMs/2LswJZZ3Xkq+JkN9FVhQ6N8gVG5+z6UgrJrfD8FQXsvkjQ/LR3dDJsIRHKADuogd5VTvppiunS+0opY0Lkkgi7ncCldwH6EE/jZUd2CI+8IB73PU0ULFWOVFJH9CUOsFUeF7+4E9+RzjLViCuGABOUjiDgJow6yK/XABQXbxKTSZMI9Xz2yGAfe9zyzpHMqQbimglIeSVzAfYhkavTg9I0xB/pbaw7pGks3xFSdkvIMM2AbVJpcO4aEoDpli2Iru0gobZ7BStunCQaom7DhuzA9JuxxG7WImr1kNnevzbTrmGqz51lB54uVVpYftRFf6YLxu+EhI6qX6QOaS5tz7K/tnz9QCW77TnA+46LOK5ZkWZpPyGWlM9pqA1sjb/0WFMoVKSbhShW5yRTQ+XdwuAyFQ8oWOnQ1PIbjnP7aCfYoplYU+XB6xwwZw9u3IaHVj+fxqbpT7w/xgtjyKykyLf++iLIBr5ej92sN63tF8tK6YUAzAdkApQs05uRm4sMqtFhEXX7yMScpVSlFS4MNMOO1zr6gqSIDUN8dQ5pSe/RocmVh4NOpTXIjQj0S4FMKNC0nx52zHPNCcwhOL4x9AA1mQF38rn7adclgZcj04NpqecX8zzF0CMRDaTkIblOCwafJlIG1x9C9qilpVJvcvS6tTQjgM6L8kR+6oMgkV8dg4cim8T8PMZCMvqTiGjGDoDqr1rDnqO24tUzoKiaRI21aZydXHjaXx1dsYbFiMGI4sDByF6KzWz2ZdwR8aLeMG8pw3vkim1fuNnrdtc9dFVSBA9q4nvv1er5qZ5mitAbfSdTavmJNzyJF8n/uZkuWVAiayfw9sWyVtfBE9FBVGvqQa3NdfBtQkB5GikN3sgbwoz/9H///CaOB4NQydb0jsINeT1L2NcXIark/x5SwFNYSXv0opSF/O/bYntCeGdjT3rbn5gZZVa/IxM7DBVfqGbdXWNvrNSz2+937jET6KwneweGwMNk57j09hyChpwUmk1KIcquJ3v4dVEUer+X/aeM+cm8KpeNSsfvF4OUK2ARzJcambZdHxXNQKITA9+1YAhNLPjDbLRFxVM88l5Zb9HCeTdSd2b9+ucEgKLY+vxplfF3nt93FuD9KUWmyhr//ujXUXHdz83Gsp19kVH056Flr90dtK5bCKq0k0jdR9BXlymcmGOuxu2ibSLK/hSck8QTA4j12voT7JGIoc9ejl6E4eVtD5APbQJYvV0zTmPLvXvV3Ch2SyvMs/01hBlkobdq72j/bFF1rO2neJTfD8hoFlPl1Sc60oHjy35ujvqVxPe6e9mNt968gdzZPHcVg1P9A0REzIYq/viG7xdjyXo2UIPDAu0KKiv07Ze6Ch+OQEG+3e+356xqmCf92IlvEh5+vLqrgwmPU3fdE1qfl4f97/T6qXa63/HSR0jWvYQiQdK3EfQHJlqt5iliBkR7hzZLnQhpfgNY+hGSAtp5lmUNhcY9wXxaNGlpC57m4s+9vVQXOiVp7Vp9O0IA6GaG2X5gBXpPLHwMLilpCEH3Eg9T7+sT48K5jvL3ppYg3kHeXTDNhkj0oI+i9qHxpST5qum7O8pP+JGDD/yFy2ViIZ6S31BPspQp3EMAhDyi9CNnxRVWUCYox8OYEolvd52C1+14BaXOVe5fp74DIbtwfs28cGs41sUpF8PlXNJY+FW9FkJn1QdqSb4sVeoCTrA2ycx0YvtV+GK2i1YU4zOfHPogITTApt+lGZGeneu0snfV9gY89Gfmw3/zwjWj5cmX7/3H9BUf6TW9pM/4Nz3QqxoL9m6mLt8bCVehKr1nQLnDu0VKKC/yZSUdxpDnUkHT06owohkxFcasHDnMXR1DZk5Enb0HeATwUhE5SLHdV2UJcAuAblhYkDb8DNGYc0rTqOJd2JuCOIW7AZ8dtYRs9f6Vry08XqfqEfudeoTM7ZR4b/J0jlhVGXG+oOEYQxaVfZ+u9lp1vSbRP7/JirByJoLzvZIuidES/VnE8l8MoAfvV1G5iJC2hUSBgGZsdzGZ/md8FbWm9W623TCukikvYrXwbsubvXic7S8Eyed/vRraTtlYEKOoZj/gjS6AXaRHuh3sbJ9sxp8uowQvDTDnfb2eS5xTqRIb4v3LYOayE0y5W4NBj5RBLRQMVrMeMIVnts4q9t8foE33d2Vzm8XKGJt9YY+LSsuEKlO82HAC+I+I/OyoGcU2e2kcfp8aBuZuqu6f8GSwtWM375zp9PFj1dVm27u4N60lyS0gAjUdL8qGIEsFpsGNmgXUZw5rAw3AJhhGnf0FwNPFBiwyxcW7n9yUwb2mavYTHhtSOXy8bThj/zbyeEVgDih3Jq2Xyjhj7Ge+UsYnW3hy/dLbOREqoiffwh2ap8LSPbTLaBqIp36oWYJw3G5OoB5rValgxEwQ4fCruWEGoHvnmzMfCwxthervsbZY7KxTDbBe/JLGa/NOHz+ZH/im4+VDfW4O9t/jURizTY0v6RtBpqMj37Sb6eFAws9On+uDzinzr/TTx99jf99ixr+xHCV/vjmCy6h8WAVWPvpv5/+XP1fG12orhDHn16OfZ4dvrPbo49TLKrtn/bEfg51q9fR4ED4nNP0vGZIfgc/3BbQ/SB7T577oKumrXx+hrVDHGwV0KPkjmMnw0Xp1QwCL1wGmPs8dIMeUIreT4r8XNFSPBdszg8svUhq8X+K/pudtgjeVSotrrji+vZjyTHkGh8Bym8KdLtlAuW4HTrqeIQzsBQKs0nN0w9vL7eftiQfiJfq5Fz7MfMEzMWbEi6utaqugw+TV0SqVRvbw37ewElj6r5E8Gbzrx8wXEBI+E7/Rf/VcskH+i0YSf7kjMAzDsCOjzAkjgkxMNwxKg/Ujgos6Do+VGK5GKbZGnl/KJEwIykLovozaGrZhZRqoVJjTCBs/guLNwTUAhgObxc7lh+fVmhi+DMCoaXHxIjsnt79LYvhaAXuE43hUsEuwQwcQHxWGcHql5xN0EphEwZn4w9rijOOOFRd4mGExxqELEvDoR+YX+u3++TGucvkBFACUGo17QJ/s4IB9OpkNTs++HGH/HOjvExsd6GNFn/bcmU2OsIsD9t/p9M+u/a6vBzY70L87C/4/wgiWO8DPCg/AmOHsCBsj74SxdrKuiCi+A8gRtEqtBtw9VicYFBi8oVrIgAAIwwusAdyRjLdmNMTqT5h4JPOGLY/xkcJQAlCRcg8ab2AC8mGkZcWnt4AQ1j10HX8RNYVNj7AcpDkDxbdmXAkBtfN7E2EFVrpMcwL8hDCT5gTfG2DYkneC+9FkcsJipOM5HAAAYG6ALpJyifXoyMZIdiS0QoAmMjAyEBbCylLq0LICQGa2q8DEAABuHisMGzfABlYIaewZwx+inaAHmwOTXWRfGwp2EcGX7b/07xxrBuIdCsKxo1THD/wnEj9ww4TjiAsm1UhhsUMOBV3GvzQsEXJYHCNPgq7HZwiVXgO88UjM6Gam6liZZvAmx/Us6Fbu03CrUY/EGwQvjS9zLFbcDIID439QqPYyIvEWN6PgoNgg9Kw44NCgRHxF7gQH4xpCLxrtkbhltxQcQi6DKUMYkKw/atQh2eGzRu9I9nnUqEWy4ajRGyz7OmrUwLJ/R41eYdn3UaMTko2f1XVIdjxq9ALLTkeNnmHZ+ahRDcumo+Kd490ETrr5ZfCZRu/vDTskf1QGXpoDbafbXwZFNereG74hvNsIijTafRH8qEa7XwY/0mj33vAjmD/OBF+r0cdHwdc0+vhm8DU4qTJMuU6nlIFtgfML/WS7xp+z9JoJzvd6yJ3FWdnqjnEuZPQLPH2UhaZ/OfyseNxTmNt//H4hfyOd+H0Q/v+XugasENq/7WElnV33Ed+4yCEI5ALPpEKFOSvyiFYTh7CC5u1O+R5Hqalmq0j5/1XY/7M3kGpfWygojhQOi56GewERJdMVxUhxeT54nLw0mFGSUBdTFJFw2cSRslPxKyjUm6trT4/tJBkUOw1EAOd5bBCC7uc7oilkMHEg3a9lqyVQ/z7NGKha3LkPhMuBPttR1v24rqAd/tkUKm2AfdxsSNXwq9qCCu1n+OGDXeAMWJfEwMJ8EIgzHdlhVca8tBdrnDqEVlbraSC2UtVdeaLLyNH5PWyqrNSyPLk6lf/fKyhQNMTl6JgpWCQoEZgpgtQocKx0AjuQpDt5pRUU6lGCQVrSyUWcaCosEhS14EEQGgcsKcO4g2VQZKOmJk5YNQvirfrgeXRhU0jP5iAKucBRJBD98DtSNZIpoT8rGUy0VJPeVBih7F+fAW+Wuga+JBFlYb4nVMy0dQDJeWZwpTlmV2AR4OodsfoY9Iv76GRjHde/lCYJ3cih9CvsY3wjAo05KDonxZuu6Rw5BAERjnKBR4QQWgcacwh+SSrN1q+AMlpODZBkZC+XEcOlrUICP8AREy3whTzyHS4UtpPoXiVcw8DJKwrLX8FC3U9L1Et6FNvpV234zEm1fF2Gq05woBvZAzGh+ihCYd414OFNp1BkCR4beYByDjx4g2qB94WZQ5T0TzVJ2M2VTYsgmvnM83HjDhAdXk/3bKxIq6EHxMfY6zIl2d2aPjm0Fsj+ZinB1DkuMaMSWlk+0yTEOK9lJ6z7A6HnN58qaDNBfBsfvjgIO9Srv5X38rHEjqfzdRPwNbpZjiFFI1vLr0QlEudCCSB9fWDcj4UO6n+yJwdc4PQCooW3JTEcFsmHl40NSAv9eAiKH8HOix54USwkoUS/6skff29gFZ6BLVR5NhLAuR7ZObB6q2pSASPn8t+Lq07LcMLwatwxonC1WCzCxAlfSuTShsc3a6Kbp7snkeqNXMoTzocMiiO2dYid3iUMucchFPHyj7okJUX3RyOCuxkefi0zSWingCJS/HJ8Hxpfzxc7nLwQh4ANq3/axWhnbf2SzcWFWZGAWegPC+GqV9+Bd+qrbkxiLNKjKoyKPgMjnR1smfEfdSKI3AkS4fh2dkiUBsf37yoskDNKRgooZBI2JbbCfGsrLf+9fW16Ilg1DtzEhUGq5fXktdOSTngztlMjvBupIvSLYh5O3Gvr0QbiRRwD7KqzpyIHwWe5ozNwCI+PAKbrtKk6UskvKHRD4Xaa4bgQcN9HB/avCosXEkJcTjNRoZCIAZJ+JobaKeMCAoPVCCyuVzQ01qmQJRzcbINP0AK1+jByvSBdHbhWXlAoqEqLhShmyggB5Kpen/Vb/nsMhvp8HfjrS7Sh5tYL/N8sSJ95DrB9BE2pQrtHLZFlqdvOscj00rrZQ+gUt4/uDeHSgsh5ffxXxgvkkE6uPeEyDqSyfqE5CWe5RNMVUFg0cX1LzT+PqbTxRmjuz5879wA69bJjBIeccbgpJsEYjFhrqVGPkEnysfY8E8xD/e7b260GIhAxJJiKc4oeFijofJ5BQQrOBw9TOO3lFhqfXVFY8u5i0h087+aKqs93of3NFeXkSgROWqaVltylsbpG39DWSKFFEcWNj2+EI090gFl+XR1nYace9lYRIhdJ9hhUKTD7vUJUOhHRlUHuEq6jB8jw3GAMgaeQTl1ET15AYaZCj4k2Mqd2nwRjFOtWb4mQel9wLuKwlaGqid5+L12EXDhmwcs6pRUSxMC9+R4UuZOgZpgaHM7u0zGWiYhKYAonIqRDv5norWSnaFnEesCMDig6/XDeS8qy+I7AKNt1o/opEWB6fR8lXWWO0aup35DAjIyXbbOOsRZ3mLXB6pOJud1+ZRZ0oI9ZXN00UUExCYoEhZ7JGNyJOfAK2qmLjZRrAarujNk+33GXmQwiO8FLi6YJVdEd91c3es7QVgN9jMw56R00VWyWUUMWrZIR9H7laBADC29cbV+FgaQja1RvcTV+0Ustvoc/yh0LVMURxSAgo2YaUf/LDwU806niAmdw/lX2bxYURD8fPnWRWkl4GL5/f3PpvWb/rwmzMdDTMG856+XT8fStAVcaUA725jDK5M6lYOlBI7RRH+ZUENnD7F3bm+wuFlQ39LTLPTxqvJh2cbjRqAAPxjc7i2w4O9B8Gg7O+3HDE5ZD+/0r4RjPUV+f9e5N7BFRrZwPFqghwy4CZihG9y46NBwE/aNxYaRQQXXzzolb924ZaWpydx+tMwaBjsBaeEa6nOjlTveVT5KHjoATyHMcNw5w+V4mCNQlaDytrmC/JAQZkE/AgkPgLv88Aqe1u77yBHcNPjHpZXgSvAz01c6kdVMwg2eg1UDErKQVi35VMTdNXaFkNi+AC780JirNUi5siYf1IhdnB+im2hxR5caTr+7yIHozQ7tq21jhswuPlZFRYCacCJjX/ZjkKgj7YJpUgwMD2D3gvFRQym4VwC0SbMiQ8VE6UtpDh7SDra2tQxlPLGH68xgwoxjhNBy1pCdior/BjQO2OX5zk0c2HZMMvuiag0GR3HQzVuFgvGoZtTRIWcpcQuLKFuELuaCJj5m16zK219Gy4lpFqQ4g88WA7juDHxVBDCqoebBk1KPjrBqoe4Lzr5rfXT1rttD3tx/AVWhh3eEFHYvy4sY9ef/vWWCbxHYMdwJFx2AZnifTIpLb3oznsWtOr18u8poHmoM2tBR76zFtiloGwOXQRwKD2uFdd/AsGHujR/ls5+Z0QsxTJO08RoVaryhoiigizqvs/Kpzwcb+rvYJEFHKDemoWLwQe5A2pDLQ5AlJBC3ayi3lkKZkNMxrrctmsHBzusAgYTmT4qK01cYd/W0FNNNZj3xQxKvIgyGKJE+GYbeQ+1JupukpmqwSuTH9EA2b7S6EA3vjjFkIHPIUt+oJeu2160i7zqOzp0MFRUwj5eywpASU7aDrDj7q/s/xN1j5VVNWKKBBX+u4cWIqMjhZXkjar44FGGpbOjkcikiJrjyKTTUgtqsnbm+3tokeI0wcoChFjPgffX3cjhATsf9lEWBEvFNgUBzO5penCV0tAFnm8yLYGhA0XwKGTrUG5AQCp4hUam3znsR8xwU1ZISzdM5+JouF33VG2cn8SzQm0DMG5xeVrnLHCK3HJQQ+nmTJ8ShrDtEkX1JlZYg+KZtHFp5NDoZmkzeqCvnaOzeICky86Dny2FykWxFB6yxkcPDnEWhbXrJB9NFiClIOlyNKozTUaCuvo/ILDe3/DYjxwxUDVbwTlfKIoUgYSfUh8NOG2+RjyXIlDYekXLfJwSwLRc/aitJIUVvr7qjV38uePjKoTVZ1I0MRySVHoXu7d5UrFGhh1jYt7Es8Hu22XM7WuI5U5RwoK10CBQQWTelns8l0SULNh97Qq7BOAQQM+vcelb5ayuOr0H1DYFSq/XPo7ra5O5y8Bvz0XnOW40mEcxE4jdTpU2j88HME02UDWTuKdnath8aqUQBbJi0mTgVedSzKnCJtLdCfhzE4U4xsBTd7+HcOComgtZuBWpFV+9uggbhAvvyg2Hx5Pe3CsEVU0pOIvHNYoNnzjJDOkZC8PkVkfLuT141g9OCFpZk50pnwP7+hcIqFU7euG76eXUdVRmq9tu0wEnQu0yMbV+GvaiofR4ZU/ldtKFSrgeS+B6QHrisgZ+SJy8KxXFkoB5DTu8sVAgeVV/iYZZSxRQakrAvpcebyWKvuTKV1w+Fq1AwcuQRIiaMimSFPXP3eCTgFwGCiRGvFmtelabZxvRLbq0OguRSGEDzaiinYZ/clQp9zdSp2P6tG9YHlodbZqsIRQ0NL7TPZURG8MvBMaDUgf7Mh3QdwvQIrmQMeCwZFGtMfMn4vaR4brCSKHbR5HQ5JcncFBPLDmFzr7xkzJSDbxIjVSBpnEywFbgNcSWx/7IDU/Kouj9cmASx4iFdJvkE8ubDSl44arUPBiTKxW0qhVF3iXUnHkHtxNUcM3q0uHwxuf7/0UNQLsKJwYI+uoJWHvfSLJ4Df/eIJYC+MsvDBgwsuMy5LHFjr4qcqg0PjXQQkyA6FE7HTc/gJGmFj4va/kvRwLuUoTwyldheVMyt58vAlcKpi8T1rMkq5WJ+7hv3RGSKZT5vB1mfFC+R8O9z76C6eSyk/2BuEixX9Pv424tw+SRad4hK+9/0KB1wsIi8OrYnFoXpK23KExxeHiux9yaGeZor9gp9KdIYp5RQcfMdTwVrXwdAQuNOtP1R8OTd9KTgCSCtJRj9NE6U0RgpjZRU7LJIEz4iLzIQ7GB2Xg+qYfqy6nbo8LrM4mbEyGWKZ/ZTkwRKpUI6JHyTLNzm4wz0EUizVY/WMZucNaJDHFZIgIIGK0X0cK5tp7iVUpbLFdn/vnMrxZCTfbYM3loNmmIFuNhRQNs15LoWZgAuW9TiDrhSBlUNiTP9anguPw+FVp2YqktGv7ERR7Uj5+iwP3+eC9+Go/WuxIBKl8cl1Vm9KgC/ZMD1CnZPad4sGFk4HTo+yJ70yygZ9V6mKQ2P6PGTqw9rCeIkU4lVM3Z9CdewO5YbUW8Rc6qhK0UNscB8EjVF3mt5vg2GEeZ2hkPpwaEnEV8lrfT9sSLIC1ypGYNUAuDSOFKwO4uTybUB/gRgeERx0M+vOqE4hLA0dfJq/1xyIRbrJ9iYV6d/TiY65GAaKSpqZhSRaEA/bgFuKMzM525dwQVLVx+BqMkIKSQmJZyJIdgEZ1zDUtLAm62NHk4XG3WlijJ013o7hS6F1Pwplvs/LbND9wIWIeNu7NFw+L7qgVmIhdShNlmQNJiJMt/Ts61zys48m27h6SMG8EHkoqN/uiWCP3DwRm/CJplwPiRUj3rNUwwYQseXLmse8SOEdvak3ScpHTwo2KoMVwbneq904KiYnjN3FzwnCh8WU4jfXZjCLp2581RGnWol0whEvh6IxyrhkJEkOJ8GE90tR2ZSInxnHn5TbpThsPniW429EEIUeIzBT1zAuQdkUcvTpXgP1MW3/mRDAyz3DioWQyBifzHmJQM1dr7ZsEmNzubG2CPmwWPvViKfuGS16LCowxn1HNRZYyPaAs+r//VgbAxBGsi8E03gxrFaC1QKZ4gLZkd+rN+H54MU6YKcB6PVEIk5em8qv8oIZjJDeA0IuaVk/RlnkOT9wyXMxx9gYvM/veZJPi8bYBJ/zhWeFFY988DW/8jJfFKcce0p+xb4vR9JkWnh8WU1n15m2IAMUzl/1sKIzB5DNlw53BG2W58BS64hnEzdrziSuKJbnpzfk7AD5O7wB8g3IR60VvHGoyP9t/oniFPe5GWLZHIICGTAQwjaaWAq0PGv40s9jt4V3cZAFx0UxQJClx5hwy4wZXiSLqkGnpmMeTSwCiFM5xgltUwV7mwm7dhgJYkwPdsMRoA6EqpHsKSjQeqVlHcuUpgnOyknEoLTxGCEwKJKMMQPDo1lo/yFGm3i103xHaVhULumcQesfKT+zI5ZC+18KvE734j1JanuTtQKK9Bv7tXSj/5ZssxoT+woR0Ye/W48owcwYYAa9627GqyR1QmtbRQYJsa/yligZExDMqbKX+jE4NT5zv7ugPMZ2l+0En2Lf7BuzPUFEtgq/p95my2WOhP4HVPv3/dzdrPycSf6NERADIxrWPOL7rzMQ8ZXBYVbr7EeIc4aUIqoKSM2sRKTS1weXlHWLmgYtM+1y6dvmvt9SFb/nfx30ZQNRMulYPwG4YsJbOul/sozgHuYBAi1kqHvt9dElngRuNUZPqltfTHNYnDoSU9SxA4OaukDyiQIeDpyXm+gG662SeKr26/q6Y4n/rPwO7Vcnr2CvA/1uc+pAmO9AQceiXZAN0scdG4IMjSpq1QmenMhmSfu0cxJCGUKU4dK6AgzuVhTL3v883Pp79ypIsFJ+XlOKUszJ/jkwEUrF/sYPmG89v+OD1b2OoF0XA/63fFr23q4yuYqOJ9QNex6jot+XcOq3aofleDjlOsVpwBq+SMmLiV72ywRSxqq1G+SsHiVQ+9TCnLF0UfFnh/ovSnhZ/4TF2uGYAdi/htlLWeCugauybwVdfRVc0fQkvdj7Br23sm2iVPAPsZC0ZvdFfr3+Zm1HDgcWl7iUusV+Z5o3Ob1WnAOiXjRTZ3ZszOp48RbAFrmoe8yrZbXsWh1SGYA63WQCruakWuEDlsJamCa+nM6eytBgOnGIEGUoNE42oO6nXLNQezpyic5VrHc6q7Xzy0BvfBOIwrQ2oXGUbYAr9GuBJP4av+vUxwSCKkbRgIuiJgUOpGFxgHXxD3bWBBRO3Hou1nbNLPkKaB5uC4F922FgauY8CWwRFCHzVRmuHGuCN4wO0ibScuTIU48UQ/v4gwHzc5xMv5h+/khF5xoKMr2FX9ViLA7D32YF30E4TpAPFzIrMy0F5ewQaOZLIiFMYkz0sa71BTQEb+wL6sPm9BpbdgJ5R5a798o1wPsT4ouVq3LjUb/Xr/vKhUz0VSzB27Akl3wgN5T1TgDERxYrbmmuwh3AXk+hoUh1/WK00BoK8xTzJ+s5mX+xlUvZ6lXVaIbVoyT8wqbUOL6Xdo5KrnT0DrXQ1Yf7BqYGLV4s1xkC1wf9g5pUp4sUU05u7d2zc7OzWa0FDtaMDpw9hAl1zkR48OCX9R1pugJnHuW1t9b6p+8drB1CUEuHaRrRHJnjv0evkOeHhF2LMr9JTd7BfOH3XcquUezOXWp65jIpdvZ27Z/jemrR/v7kdxQlR0lYIKQmkhaF358mCJOLwjxFZ0cLUWyLywrPkK3WBtpQ4VIivkboCo9gFg2qYn19yh0QgejYN4fOO6iIjez83vNcsyxm0lgZ6LLatEwiRfF2LNetrWh9B4jZJETwBxMB4m9nyRQWu6CV+SpywKFhhwgdk0+ZicTjUVfC5V9hpr+bLeWWifH2tXifjrnKHLqILJgVV3i8WWj6eWQ4XFUV9X60NBNnIJlipslK4JKENZ92qUwFEWcyXdKWpXIQEeFPW8FIWASkD9STA3rn5S8wUCtgFdku8fs5BkjFpzy+htcKcFqGONJ0UPff4qncSWHaDltlxU1HMYtimyf6fxxaIvuAdMgNM9XUD/zt03RS4RSwS2soSAP55m6HUVZgii8sr6z6GVoGpyZPDimtFqV92RazvIWl6W/ZLFKX/32JsTm7jmUlq1qyPQRQf7k6rrIYRpkX79W3y0zZwBf/CcBVJZRcuTrEWHAvVxzICCa5YL0WRKSu7BNQ/yzUxJeUtgR+XTvwPpyJs3X2bihO5tYo+u5h2riSey6+Qr21WRn0NXzPNLfWAEl8lkVWK0nwhbvkuwyhcRIpzwqXZwGlQNUVUWcE+h8TrPXWr+YF+UjljrWZoC300aWRgBn/ik/dRbVREUW3DqBQzTl8I6gLrs9JuJzFvc7W9j/ZihZfHR4VZufQ0AFbMWE6PemZB6YHWkJg9OvElUVJlVasejh/OMJ8gMEBwqtFdlm4lGixNIvvpzVjEPY2MF8ahurjnpsknMEEjWK7apI/NKd/Cdi5fOlGg4yiQ0LvD3Nwh0YcIqo7geViiMJl7EL5DzfZdVr7zZzqc/kPh4TAi2DKLAh6uI5K8XJICcxpQlqwN6ULpCDby28EaBt7+wdTJV0EWDmMVBmayZzS4BEmdxjmufwoR3k7WTdmIb0s1rpqmzxPCBLllsMF8u8aZO692f5OeYVt1xz0md0LGq+7SS/l6Xas/cgvUo/yg+fVufTN8arvDlgJJpaKIk16DkX2qLxnX8dVWmtk3+7L/B9EclSq304hk7i79oKlC9txCcNfqMUUdXwa+62TTmcG+Cf4JUWkOAaOJAinW9m2q+rADiQQQb+PrK+hx+fQQiD8uVlNGIPiW9xbOMXITlxHcBftRUinjg+Uopo9K6d+6XfTOe80yHimM9mA9xrkVb2smFax0NOQ78xENq3etmiu3pJBp278j6oJTSkvm4byox6aneTDfDif7mq/mXUVZLLz7xZYW/1r/dOH1fnnIn/z9D0eyn/gfkqyS+yYqWG18xT54S2LwcsQoCEL2rJLm54GavFLtDwVsZ7btSpwVXXCMrc3nkaAmVkVpqcmi3CyzxiNz3Jaj9+5z9fe79liG1ZMmwBz9kenBsD2m6DAe3VZCL+eGhBXQPa9lvM9wdbiSl62nHz/AEMq/RPFW2RwqX8C9j9s/SouN3ZhhnxVuN9+PaVr+GrJi1sI1KenA6ZgXqnT1ceQyROsKrrARerLmhNWgL0WhztMmLKceJhxEDeOEmLxfKsvv6Om0X75/llC6i34wvaqk0h5ee7jbt6pR4nHHBRWQ68jNFiC/GK+bz2Sly0oh+4KRE0YVKyqSH5hTFhc6XwUiEKl8edRTcZYL1mip4VK4clxD0vyfNy0rk/mzvCKp5Cb46L2cogDRurKSkrCr8XzwWHtwgkJRAyGgnGUu+IovVJ2hC3KoSpuiu8f0caE37oTh/+KEUNuUrXQdB+38Yjoi0cjgkcMbOL4U06ZhdUbN4ZyRu0dU+Jm0Nv6KyGqgrX7kd7IazKUii4z3DWkDqmesKQMZSY8CrYiv34MD4QJpjU7I90FdhwK1VnWVorux5HRGfHGUajitAse2dUQ09j75XJHk0X9r/cqL2Ltiii4FtpvIoLW1bBInOgpTsnCFoGhZrSoBwkg7rjs3mMWSeLq3raUmjHd96DVF/H8ZcrtFORK8XhiSWQ9xyfrs7LL+O+s0YCnDjCE+IzpdNGDcmXy2QVXYZPML85dwGZzHRqUmLvJ9sSyaFYMXV19aLu6oojd3hnKTFZv3CZEd/GL061F5YnN+VceaBpCT3Ay6EQCMHWUFka6tAByvL+scVupDLp41F+AEYuGSzjNXj/t+KvicMRpRGToHIav0yIX1xiL+nDoWL8USamwCJt7A5av2tZwjN8i7pG7S66pfaBxvCvCOdDmTFM5j9xhpl0oCfT3av00tBnlTfpWAdqEehnbxfa5gjunb8APvVFhjUDlUJkc0DlT1r6a8xgBATtxufUioSvsCr+RccfH6bXiZrSDJlaawOUBXT/juHUk4P1p36d9mKT82jYugtoV9tUKzqxoyKXlyU7OdgtGMuc59cqXCfg7Y1VKnh4xf+e5uDL6jb7XH/hMI9c6YW7S7eqlOK4Xfz4a4mCrYpDDo1BMDQ+9VG5mbvxcMsosdYovkCnlVLlp22QTvP8Q+TvUsLo1HzOg5VPESEKnIl1llUklZPa5Z7SRXJVqNOWdOvp58hy8PlJeQtmEZRJg/nHJIeZsrusyfyPU9O0Rg04T0ARNaceZvKa21yl03R1TFto4TiqEVCVtuvLynh/gS6fkwks3oIT1nmi/5VscfZ3ULO44H1CRt19ZNzE/FI6tMe6Lo6s6r05ylSALFNxWXBSQQwPuRt+XEy+BIjysd7MQldx8B1X3fbHUC3zOQw5oY6O+gNpc5Wct9m8Fdn8Al/5VEGYddeKdeQKYNqf9gVgm33XID4HOtyoXfWuZ/oTPWdqD3OhlV6pv7xybKsaIs6LAYxMNvIevpDhSgfjqwrUoUIkSQCIurNZgz198s+jueG0S15NfzmMLP2b8c7ZxpKgFzekji5eddnqgrdY3QEb8nPmTq60N0QXDl4nO+nwkE1B3sNNhckRaBsXGyI2zDqSyXYdMzcmBcuETFoVYkzV4YzUlBxFmxqmqoWTeaAuF8KNA/A1MYqW0UcRoaRYg7EG+0/bfI//RG5nT/QwpHBwRATvLycn/ntzHKBw42P8eiNC+Nv8Z635yoFUDO8JP7QxUjd6Cad6Kp8ExgD//Wl+dx7CZ5hcvO+v0dyXdiQOo/V9XchfWvSGfwO4SfXZ7LfFQ0hfxu5RZWYxzYKfKaiIm7novaln852yZX8c8AnrG4IttZjYoPO8jNdmumYwZrmOBJgBGi/ctT1RZTaHd6WJ22fTnXNw/o3zl7ZR2+3TFDNW1aJi0C94r6iSGmBzCzjECrvXbSVFF0I0dinmn7WQp+4sJc/V26CiF55IJUt21xrj0l8f59L4wwBqY5Q6uw8V1H0kwLDDHMCc+RP6m6uIust/KxPHqJDoFD5ZcPfcycsiTg+J4zsCU/ln1+pITHb1XnU8DCWNjRJKqSISMcjtJ1yBoKUl8pTjNk9+dqPu3rwPzLYm0XYk/45bM/7/21iTh3jSFg429Q3fJRyYREXxcLC5NVzgN1xbafTQ4wE6xt8Ozu1sHIpFuMWNl8tlc3W3IC4miJPASgsd4JusEpuXJRWTEwR1yMRKW4yHhESzPz9NVZYIZQpXr7RtwiRiuA5flhz4idm50mViG4IoFlXAOl73sZ8fM2Fdg92dkWCYLvNrT5wXFK0iwKgMmtQi1yxXoRDLVpBszGxmBp4H5bqtO4KSLfFJJkhveCi3kEx6XPGcgJ6nMV2guptMAjmPkuqNEghsKpDlH6sCookhlLlQBnYX2R3aeusQJEQpkUA4Cjgs8EFLZ90bJ1ebmUkM4oowa8+ETAyw3JDBHVMGDtCKt92tepwYWFlI0GvAkPO1whT6OsTqJGHuAHuhe9jfhKGVm7yLC94wKRJ4huTx00wl2aF9q2mcAB9bHR6AEN9e6p+vFPifBB5qx2yYjJbyfed79uDaZtm85Gm98gD5oKM1w0YETJNiwoTC7mq9AERgFKJG0ewkODTBf7vVrb7z3q8QzF+rJExDjybFULd4pGZ8BIqPJTF+X9GxU9wVEG4dWz4IV3AzsXjWeSqMhyRx2oX/EkniNLVgReRk134L/OaH//TienBv/PvdPHGuo484QbhwNCCQ32yiPsawK01+MoHXTFqGpdaMNKVaayRRGMNipDox8ZLbRoG7j7bKRbBGQa4kwsIhBREshpyzUpV6452KL5C/lEFvZuYEwnyddaapFGmlHhyDHJqiSu1ZdEsvkK0WESluNOkhbjRRbvT78Dg76eGWQLZsgkB7UbdnINnHVax9kAajgI3YdrZ4RI5NEX7x3kuLnvuI7e6k/oyVcMtGWzCSENfS+6dMhoQl6q4yy8LfkRlpkaTxnX3AmY4jCp2lg7KUMG/DOZ0EfrOJJQW0aZBXjCDjrZAAaZZ8s5nNR9i9Uel4QfRX/LNyWTy+cELDS1gzQlAl3CoflMQ01WLhYM/hZ5jTHtdh1lXYembnj68rkYXPS3Rt4ER4VxtFDsCVVQHVPGO53isR/HnUs5TQwyk0JZ6YPFLflb7AptIW5Av+JLI27Bq1OJkUhNKPaB9TowqnY87RZM8fGUanhSdAgT2TZzlpOhpcyoDVpEvOchO89oG1+cj017sVj93J9Lw5O3dCXM50CSVDfcUij6qcoshLQiTNZo21Vg6Z1b1eCqhTL2KQSRbNRKwHdTKB15j/WJVDq4iMcV9d3vryWDLG0sT78C7K2h/n1db+dYLXEHVGm50oKzj+FEFo1WoVemJA5kaGNGMF1lUwv4wx126XeQIhNqKvdBBYJdxmSLl0K/ZExqbMaGdprP/KrbhGa9It81vSdPz3mYbvli8kAij4bb0+jLMcXIBnhQ8TZAa1V5rntKusCMGUCkJN0n5faTGGYOvvgUTWF5dQNHzx2U5im8Dx18xTmqSs+eOEwRTezA3GLfCh155GXSoawOKU7q4dt6W3t+TaCFihcRGQbvXB/5iBThw8edk8izzN1+YNH7kmMbaawn7p5CnXq5g8eH6awnrr1gxeqKbyeoqtTLLapeC9v7WO1j/TQmgRJ+EDWBBBpw+9tiIu3vu7lkwzt9lPCClhC22NrMX+drBULd36e4ltROD4EDmpgBubFztiFRFp2Bwkjni/yGnY/BJjg8Jhw3rjImFcuCC+SsDDqMfImhSPFQKeuXcQjjkip4otbfIAlwb6QI9VYhkvAJad/u/5Ao4RNmVgIDWY1pUXRze/hSwn0n2wr7UM7EXxByIn4faMocaLj+5dSN+1JXlkxp1N+nKHIdieUlqcdVO62w8pjyuT5XW8PI4mPjHQHLHFyOM+YUatVV9y6SC2dvFuaXq9lu4RpOE2QW9UKrU2LDK/D83UHwn4EMdsrmvgMvP2DxOq5bS5IwHPn7Tzgp+ftVsPLcUfrY7LuvuGChwseTO4wN2x6FfuJr0ezxdMHI1zbPuZh1vj24spe01phJeIfeLA0TjTUSSj7iHC7D1oODO6MzNw8J1YhlXsMKVcVxrwssEMYTWpfFZzFwWnEIk5H1w/HNj1r0A+QaGFNAiwpycum5PhX1zCza4NafuADXOQu+ar4e2pIMHivwVu4EyRqLNGpi0U1CdafpkKA2TPBH9l9/+fT08rWM3ibtp/ZYf5mjx9wbqkRQ8RojazvZ1SwmklIc/1k6hTbvs/Vqx6XE00YPdXZEQG6MQC5h9RPTi5e5SNg2/cl1YkauQ/UI+7stpG7R1eTYzu1+eTwGPeaixeRwlYSPMJ3avjOu0/K5/imulztiA8T37TaL2V68csI3zaWgoOyQqQEjvCBGK1ZMxL/qjrpy2025TrS+lU91PkyGalY9G7VpAyf9Vx/WuskV03ltvEUaI3K91smDKyLR0HJnKGvSpkTw/ljpD0PAXBzkAPGKRKEmo+YAo3PZOptIUDVXqF7Iayp/kEREq/PWQOqoFt+T2nByj6ddSCeTyCfB2JH4pMhuxNCBNgMdZ870FURJ4PaBk6aEyfcSx6GY/IBZQySwek56pBFmUQTsBLHkkZZen8EBDOTTQ0nC5J4ctd97YxoBxKCf8r/Ku0u9nYeO+Ao38Bhrtw+3qIDsWB8B+ojwOYlcwlnbCE+cT6sO/cOSSTNL6Tvr/R033RQM560Wy3817VtI/gwLidKyk7vdm/hNMfO57u1sDv0/kyStpbX5PD750mTr85CuL08ozj4RV5hxnZrHTJVtO6cRwfwswNbI+UFfTsHhtCR3sjILwyMg0GRsDDFD5i+imI7TAxNORYhE9LMql5PevvyH5WKtuIlqWKEwNNdSeiTOeksLPv86r/VpVDipsvZBWxZqGPFQ+z/BTvPCxuPTfRCXEIuJnxs9kfEP5+TToDfUdPL/zWwLvuxozFu1iu2wz4pifnIi6y7DcyEEFPoqQIjP0Qp0cVrx1WfRxjZebNmr646nsQ5hhF7SgLAc8ZApxxijHzcm8Se9i4giQ2OXXJXCr/8cHvpkMlxdH0eYIG5wj1JEdAhaFhsQL/BouFmu4XOSEo6aIWBkyQNtX4Fapi+hMvDjJ2+i8E7thcVlsedOMFLdUsIVkBfbzBAELhQjJkVDFOuLjMwK7AHE9nH7Fdy9rLOqQ3hp5zlbhfx9wvJ/+6aTgHuw095r9+P0fpzPJu+tkglIPx0nFsmZXUAOzNPwZFVkTv+pasMhlZ3QZa1jNCVwmXhqzE+TH4Rc+ZMxOzHU7JE/k6/9lWUmMgRerHCIYcM369OSjgQFpqYIQ4D5PA7CqegC1Sk0Q+rXplAkUMnJL6ds+rDToDQ0vxw7/gTdxiDeSAvOAfpV/Mam8EKOhFdJagtBFYn4Z2ZUg/4HMyC/TyRvdOfc+WboJagIkSiNu/cTLfjSpUgLJPiJyUZXohuSjDAVqwvdFQMXKspmUVVa0JHSFWT8R39SJxAlNPSApJLwt4uDlS9g12AVLMphYU2X9sSnXOqkIHKLBAOG14tkDyhH0nU30oh5/DCoBKYwX+bLPHuD8TtUPCkCu6tjNrsQ+9haaowW0PIGRP2tRc/VAe7vEtYYETvvlHB5JBkAnqjG+fbiZZwkkeBR6FZEJddMs2iKlPJZi6qRclS8eamcBk2wHzpMV5NGPsqbAYJOzl8UXF3tgnDYlrjevirmEtCNtuekU7VhfUTmQxLG1qnpCwS4Xi67OpwN4dmlpH7OpfjkOHNI+Fg6U8wfy1kvaaAn506jJgWSd7+vYsow6rHRCN4FhzZ5bMlvPgtHlbdWa++ifDIr0KOtDaBnTJoSCvnZPgG3CQ9GxsnR8StrrSVBkrLRG1OAKHXKyu2N5VtpEDk8kBGNChCtU7g7j4qDaO02pFeeyAwsypGwZsZOzRDq/s3Un8DgC2Uyh+RXYuy4yQSxiW2De/am9a+20EbMJuUVGXSUeFzsNdcybmEsTdMwj2IEzP3yoLP3LtbH7vTedMk7qNqyqlXuXEIdR9GhXOcVyWTYnbKcnnsuKfvVlP2uNCM6ZQN7r0k3IUxdv19K0r8YZ2O6t2rXD+scr8yav/g95yXDH7NhXgwcxHOpa9ci1gXSxDrAp+vPaDsLkbvzGJ4x93vKyLhzl8PumKvf18QrCKtMvZvoUudP7NELhmveQaZbJa2E2NxPWG4w1XeM2Banlu7oCVc2n21+THbPDDd/dmtkyuvyQEQql30UmDFQlYYQXMx3gBMslPd4o+O2MriULXx0uEZEWVLJuj3r+d2mHcz3i1rgcUU8dfqO21z4x/Gt0HZGzMEcDGnPCmOmiakxnptLqHSF/BaeJ5QRQ9nrQq3xnWxJYo6B4at62YkUuql7h6ZMAW3Zij8TCgKjlSbkh6XAOfEPFwqRBlEWtg3R0+EhESDMi6X2tvzZjXezZCPhChuNBCGLxNucWxmePvOupmtKW3A88pIHSBsHxN63payBa1OFMviya5z//VqD1pW3GwopP0MF5H/ZYvs9zlcSBpQJRxOtHnMjgh3rjb0PVAQZp70WeVYUsoqK0uejrMoK6wqmY9rQwR8gGtW1OYPh2rTyIstCX+Lz8MJDP+255CZnuGGNDYYuYj2dKAXHru3GJPP8jfQB9eXC/pchFN+o/E1Nu5abeB1M5y3bQyuN7eH9WZdzicFs2srVmL26eP7fu8k+tNpHC78y8feWsnMBD548IAK25rwOfeM94Ngf+odDERBzpy6sDsR98n27yBFoBqlr6Dg6Ugeg0a+PmKbxr5Q4Te9Hdp59VkkjCteU3qySF3xh4YwD29QWW7QCSkDxc2rwbsqAMyrZglS4usET0UaO9KeEuytM6zpusAGbWA3KJCoYDlUQL2xXGVyE5ru802My/b4RRp6/C9YFX7CNNZ1LGwEhogyNffZFb+rGGS1HsQYL9KAu5hW0qlDxuLtLa14eEaA1fAir10y6kfaLfNdBXIFme0WT/LN7BkeERHCAFi7sanHlnzPK+j86yKEhVDqOTERivPTI7QVOMp3TPLB4lCBnabtLTbOfz6RE4dXN1IJ/m7IeN9S3em6Kiw3qlxrEqY1IQkGQqtgZSPJDUvQ8eFxNBZ4rXd+ZGS1dS74g4XIatRGPxAQ+wgpj5oQXp0gPjqL4AQ9OpITcb3IAJt8NlvXGmN+WjA2V1WjUXcp5QZgW0Pxstfu6Pb4KGQslTeYSQJNwlvJqFZd90pF1so7qwgwGkZwRvh/sId/+fKYxFRw7NjgGv2m5uNm3A4XLy9pF+K56ZR945MIanE/oPdbHCBEV8EsNeRfUIhw0Ilrk3ZWfQltBu1BJ6TPjyRRZTAmX59h02ogB+7L1tbvDHN4+aiFcEGMuXqSHddcFPj7ndHWNWp3lMhen7eN+4RLzxJu6zWXkC4YBJdmUIRXXTvj1+pizyQI3NnZoe3eMQ/vGVdUCnuKdJ3zD90t4flaEWGm8PVo+WizHeFgG0Jk2T3tK88tU7mFtLdhyGeK5bhsrX1zUu1IXLAB9bLc5OplJj6ANs1kT5moAaua5KtsFeVR8573xPQJnWuyefZTaLi6Wtk+2qT/TwMv9itUVatj3FhmpnF8c8m5hVZBI/y6tbfAAVnQsFqqyby8+XFlb2LDmrM7bO0BjxWyYkd8JB46fyF0FGqA/1GfIB4LpIkejSzQtDo9IHKBvi2l9Sfztab3fyuJ/CM/JIiFXdf6zZYRj5ewhtQ7jcmEC9rdmh9fjnITEEa04Qx/O4bcGlC+lvls3V9ysLEglrfEBWd+Ya7oDYi9yZIte7phY4/i/kYBkGTSI88oKbX5e7OFslft5rYXga7WxNzNeIjDxbUhSxQogTYdDegEC6aY2oHe0HVO0MlnO25wUGRq2yujraQbQziL7ueXHIoSHoG3lFAxYu9/IZNxfb3FB1O+1sIFxW3j2PkBQUc3O7AJjdKj/q0LbJMbjHk/G9Bp9kC6aR1isWm4orJcpkbvrtwu36AuNrBYizm/yL5od0O8yDDM1LBIYa9UZHC+IBfjorgrEAYyWjcJQsI8WfU2aGKLgRKETXmjQt1FTkzdk4HJ8hEgtYm1LMv40g9hCeIRDkBhHzcNP7PEwKlWuQ++sPE8p//ruEFORA9M4g55y6eQKYccjIhBLQxdOEjaxq3NY0CCFRgoSjBClUWAoPC92lKmoVAShqN5IAYsyWwgwf4v5TLik0gDaMpZuUCsEwtzyIMiPFIyke1dhbgmMjQFi1rL3GQy32lSFEREojxTMpQxQ4U9FUNyRJvO5E3RiD8rjExdNhrIEERVyvyMFkonZMLhWL3pze91/mGOtJjJzFNoF4fOO7ixHG1HOizwW4/ui8gEYiUxwMzfLz9ios3O4sHRArpm8curUpJh+KmlWSeD9spL2VeymrCBBz+Z8p5N6NA/XETwp9M0iGyzhyIeNQOBT/wWvO+qPP6c5j10v99r+V/n79AiGWawmQ5Gbwq3b/CfQL2wG/cnHdX6F6oerv5YH6/TUNjdQk2vranMWzEVt4o/a0FC84pWoNgQND+Xo46NOJR/1F9b3qBIFvoxy6gZL2vp8H5ba/fYpHnlKTpYSH5ez9ukpZ3jHPteXci2pQWea24S3+SbKHcOWjb4LrNQN2hUB0SE3kPCtO8qP4y4g8OO6sLLS46ooKljmc4QmuW2kBbPZWPEXw3zWQRl8e1c5lMFYTfQ4QdsI9XH7dbS0FqNPqBVua1VS9ke6YFgFvBjTeLQjzScUPhJijgiLZUBaL2rN/NkQRpbeH+4rppK7DoWrYp8tGNq35+cec1rIdU5Uxkaphwt+b2ZWJSisc83J4VyBVOmkTfqCnE7IoafRgVuFXd+ZSEwQ9R2GKS46H2WoyCZuPR9IHoXg0iQLw6RionBVYo9Y86KfX86xOgOdcLet8lYyQvC+7tKdAd1IiM0qGXRVA7RvS+i+Vil4Rx3m3yYffzlZ6x0jxGJF3KhBL3lxEhZxWTa9JLfkhBGOh/2IA6bwL3dSeUUSasU2ciqjFtN3HiN0RNXvaE0IAueExrEJWOhJBV90wALG88OJE67pwgBUuP7O6N7DU6TXzQ2xDlxlVMw+AJmABoaACyIUB0JYAr4rjsGH1gT6rT4aWZ+9fkzUZ0N6TT+ufyY/vtDJ6PrbY3YmUPaqx5xA16TcJy+FwlRq6oTpFaWnPxSAV+9oqiC9g9QqMncDZWNH/sn2ABHnn0Sui1BvZGZaTy2o1Um7+P31QtHx49S2eJmlnmB2tSz5QZZCpF6ljbOP2tSqjvPilThPPQxZnHa5hhzFIVUq0tQzVTP0oqZrRaJkJfKms/0VsR2jEZmaYihK9Ex8Cc8h2w3EhoVBAySCxlf0kRa9JYhzVBy2kzRmK+nkQE2SlqAUMeBdZJtQgAU3w+UFoK0zF4gNXA4PuKtwMV6loEHxNKItlt0Ezc694XQzlSDbtOKtNarArCT4Iyh4qcVgYEN3R0iZz/rFWrjn4GVee/+4FRNEyderN10FzsRzJ6503D9mTneTLDGTVfruJH2uOga166eHvY7nqSqgNp8qnL5J4TmbDJZHt2EQZ2eTKL3P3Tddazyoss3nwStFywN9d9JAMmuUDbVyOJQs17CQUKT8XzEKw2i+mV1ZYxmvxiq+gOCtBjXvQxfiRkzt5fVznRos5pKA+aRJmVWuuH0ec7sC2PiBb1qHJxQGmiSmOQ4lHvV3timIDZveFl/8aaz9G4UriaTQ+LNWP7ENBdkqvdyaAYbJcNmnKNSV7b3NN0JkdId4bb8fHJw/FSTR99YBBa2O4nNIu1z2Qbdy1FQrLPvOtZTX/ogdG6wkSWJaCE0rkqllJ3nCAcqiggVGEhyzU+r84fdbVvRgntqify+SxjjehNQZFFio2Tk9CotfxNEqsp2kdLU6TJNvQPlKaEQKqAdiAst4yNdVxF4odYJUI3F6oucPgDqKApYUOAO/YmvLskE+OC9p+ZTpFouau+jrU0wX+ztDQKaxVZQSrVgi9sVU4nNjTr9uZ4Fz20jKkOe2sB8jbr6ahWVjCQIDenpZMXtWCMsgZ+KZPKnHXHc2IOpTyPSkpB/LSNucAOz1sHYkFwkaKm2vQZJVwPZNrfrzGcpo0C6AnmOh5fDWInynuplKk/x6JmjWCDCv1BjJlOhBNsrv6OhNvRlUvDyGHNQcSpS9kC5UKQj1yXDIsHsiN5io1qe6zuYhQaZrUIT5Ww2tmi6W6akqRky+aN44VkGrinKKqmU1i+XMoNVGy4u5QzlJxjFSmyiZCBx9JBh2Vog0Cb3aI296gDJ2kLWqquYVt1/0IFf1TbOWo6LbjO7qu2OHVE0+i7tTm6PK2P6uAakIkYUXNkXxX8WUZ1aDYHqyY7jXh1oOSsxPUwFvsG8iORrUoQ/fHe8KX04+CP14N4cTZqyRbCKUcklo0zHUA14ZywfDyN3jisrRTnNuUtcZxXXr3dJgeu4389cD4vnl9sfQq6iDjH0VR/6T2WIP2KGQh0/4GMv2WoBhT8lt4ZSWau5zuco5NmsorSFe+EGfGG1La5zo0SY2Ed76txHZV5X3Vk8lSshqBxkhFkk1EczX/6QMrjerteqfzYf/S614t+9SoTSC1HjOALlhQLSVAhwPzfJL0j3Qu3IqYksqUXM0mEH4+oXIZW82mQpZG+GgnHfCl1d1oUOil3/xA5WwpVQOEpW4yrnqfD9WAP1Jl9gaz2gjUOUb1SPuRJthWaWjHeouzhYsA0IUgTpd0e95Te1lo8sn+LTQixn3Bx4Vy4GgaFU2vK9m/XLCZCXBZTlxRPaOSLTQGQalQpRIc3cQrIRBNY8TLo+WS7q8FACFhjy9MXWSUB42f8ie5GOecBBB3lGr77YtNSSOLhwjMCPJzLCd3aN9xZTGOCZbGAS/kwJMvwBTQnLTw3LhALKgDxHda38233W+iiJA2rFfWh83TzfBG1xRtqHRemQ1cPeGQK3z1jEtMmZ/nvA1JEnw7wnciuFO3BpwW2eRIk+StovZvezap44+OUk8oAK3VrGKoPxs6nfQ2Z0iwBhKA6EN46Ub8IMI5pJpaC3M7d+TNU1HjpXcPtyQW84ETirXbKxrEql1e16+8Y/DXtaIfhrIVY2WtXlC3r4+mE9H6UyyjcfD7m7lax1b+PisZH7B8x03zVhbliUP22USPCyPTLY1/qs3PReSPCPsLwl1MyGxhB8tZGei64f3PRsbXbiiO95B3O2lbHVjasnSwkgVQbr3InFSs6IwZmL3lNjHse96EUSAqrgdAA7BEKQMLS/O2OhzpeTunUfxR1WfNJZ2nTb+Gz0Z2EmQxB+MB81QUoScDtlIXIjhjnDQnVqlD3fRVhLGimQRGF45uzMy+Gfiz2X5daenIyqgKihpLtFkDJz6pSSasRWieF0SWF1yUGOjCBdojfxYQT8bPtHvULkH6RJ8JoH4NIOofbSYrk1Wl7By8RY4OWlrpYqufk9MFDMVh9mzV6M/gR7RTbbnqx3ur1Z2BnuHpGvWSYdqNfc98ldqyV0kycMrCXrWMnZdmZAjRa+INdM8qP8RHanlOc440uvgWoDkSDc3bLK9MC+oojDV1fvC3gMPbrZnnZQJ0taqk5wO5Z4kQULnc1q8fVmJ5Gn+MiXVeEDqoAaijc5ixaYf+7kQnEOce0tTmjdbQ/wnTbpIoW/whMerVD4HeCO4+I6IB3hvVORdZvPRYDlFloILmIZpleTt6NvOHAWLJshDpY0hX3SIrOklzcsDPnOF4t/v/XsS0Htw2XrM0pSjtogDhteC20pd10RsRXJNCAEYrvEveVL9wQnt3Xd2crc9m9nJzsxiIrvZC0HL9k4ssdAowJrn5U2mZbBM/CRds661sxecSF526tuYSsyZh3vKAIErALRW43vh73ZOARhsBsXeV/csoEpjm0xI3hrw1XKDF5DWvhJ+gd4n26qdZhK0Lzc+U4naHPNOWbm3eNjc2sKoywMenEvFWy4zGxqHGmsZEr7n8ZWc/txLS1M8IR3ePnrW5Pv+oEvNdUqoqxjVb4HVLHS1Hbt1EPZ3ou/YiGmsCxg4OqnmoAYo4GvtUkx7pmBDwkBGO3EB80Ou8YhcBS93Ir7APOFW+y9xZ2Z9OfsibmgTGoQy+MAFanfSWpv2wqF1q2ZaEE8uB4YW4cYlHYSadr9poUT/Gkz9LSuNb0lyQgU8bm5vvT59z5RA14pue7RfAw8UxkaYGJRDelfnKJklAlcxP+SByLNGM9i1G1aJHqYJynoDw/vjMCgTAjlng9mraemtx63BSuXhx+LwlJNYqiBomTrEYKhJLeJyJWCfGRe0pe+DLNr+5+nuk27eT0/6OJPEXqmqYUFp6dPxkpYHlX0iMKrnenhURhwjldWKGx9i60Je/fO73MxSQu94gwaTmVIY7vEHj6kTr4hnRYKxzxiqZMJlhRpqWQJpJlsaUK7aj9J28IJ1w/tsH1EW5QXLA78GKsjroOmtixyS8iBotVI1WToevS0Fx4hwbwArFE6k1klKZMGHzSpT+8d2aIKh+NRZkws0RPn3NbKp2Q78hyDAFQPGOf5xtmInC0PXbWoqgfKM/R3aKGKb7Ozkr+DSEoIwaEXT3rkpii7npjTMaqveTaPI4nmD1zyQX7gTq6MsuL6rS4yVUPmhL/2P95dVJL0f0VXgfi9/WuY1P2bZiVmvNAjLHInZoyhj21hdSuMgGxBL1Zyi7gx5BJ3H3Hp3l2WqfvpvtCr//JmIAIDgm6CACsvGzc7UPool/ZGAE5ZCDgQsJzyE32z2HA4V0fyoEYlSBp2F9f9E25q2omxFqVWO8BWPR48hq6ue2Rlfr0mNs0LmQq5LvrjTcCSOC1Zc+4Ni2wEo9lRX4wcg4hWlF6fx77Qk/PDJLEhfvONQGp3dxG8rJU56Mu33pRo2LCNTIkJNDrbiQJgPLxJRDoixU54J9XggNtkZ+wInSshMHg7rgN1GxOJlwYtx+L9xGrtQtDpCNNNvf6ES+MZadkKk0WDH0TfQMw3Ya4Vuoc0OXijvzqNi9wqTMh1ftXlm+tR06WgptAZXA3RvffrB1IO2wnLjJq64pS1BdtuYJVFwQnFz1VKysMyiFC0uxSYhnfAyaOjm4yhJBMi27Bgf6AgTFw3ghq0UiU29UhgfX68caa44Opium/DWENI3ryZ5vTcKYA6R0taB7JpVkqL5RGEdAZEZ0q1HA2yGH4G1iShDAluRxkFrhk0C+r2lLnUgPIAmBIxokkTvkN46NRYO+tDoA8c8rrRkcB6pqjrHIyt6opvqWhW1FKCRAp8g5K9LEwPY3dnNYRfC1oYSF50y45XD/BvRyy63JX01c+etG2ubnfPPuY1trGLOO2TPW6K0gp2KLB9Z+6fCL68ZKIQU6/spNtgaP9mO5XDcFmNraz1T71xUonxeZaUouMTUmpQkZAmmT/Jzy3p+nVe2FxmZO8oq4fjST3WcGKrtXpOIy8BeIdVpoioxI2DtRdA3gAdS09QYy+DzcxYRnq6drsxwNTOPCQjpnwHIw2qQOFO7s6UugCR8uQiPKx7fIJrBWtVppHmRvRAJ+tp2KMqjxZBqsWpwNb+BY7XMLdQqZ1llLDL/EOzE5sSKFwpjiPNCDsmFLgwyCzFKYGsGejCpmnBiYaw60k6BmPK1tgbRDgvHBilh5xta3vqG0Ph0f1hXz3YLFRY3rVlRiefBWqmDRQAUL+NMremzmXKLp/Ry7BJgyiXBmemIzFH5bkCgAY6hCT+OcjLY5FMBTTiwPjegEaoRCnm/nuEIvJ7iDpeNaQxlxE3riK3TyBRttgStAaIM3O0p9iCbbJtYZ7g4jK8xRORnXrHtCPputa6uPbPhTEJ3BSjJYHaaEBrgN0HLBSBoz8xjW9SzWAvq8NWXx93kcYExrYdthWMEvfAMJfwBufrQL/gybadeH8SiPd0qOYY117tU82s40laDzU1HVUdN8RoTnCuHx16fDCKl4WiCkjX4/zMRjuFnPoWuL0Ifx4ZGmOtYE2qQ2gduY2EuiYBRHb9jIgbmgFKw8QgH+l+Ssa5zadJctJA/4LlZv+6guHkn+ND7z1FW+UoRz1Xi+kAjqAYJfZe31uRV01VJpGKUF6k6hYcHcVW0/0Kao0VZhL0ZsW+ftuc5fdHp9YTYClV43No3xpFLbgjLo4FJtpSg43gh0A2Zg6i+MHecndoNyDc2SVJFnaPXoihOani1xG6di1NemmIeGu9Y09FSace8ZB5zamIQKuB8Qw/438QmzoujMyFHG6TDAZqFzmjU7kjYtbDE/e1l1/ly/rYkMid6cUzDb3e20JD3fTl0SJJZlBI7l0buoPOpS8so8e/Tvogvt5E9vFe/Hg4foSPnkffMIt5HLqYJZIPOpd4vmdfDpXLDixJqraQvnDqB55pVlpA25KO6J6AvTQ6Y2SrCfYLXDNA8L1EP7Yx0fXVodGyBalBsAm0GEXlY04QycXFYs6bSBpqnKTV5y+y+AMgsye3YrUWZgz2MZ9M8SzMyzeXwUuNYfB0nwjbKJS4g7Nn5mVKGIo66Trp/AGsB5mIC9xJryu76cYWY224yMv09e1eAaXSRbfHvjA6s4PXVq1g4DBxZIwGn7TURxU39bnf6Eh+dnkUTKWPkMvEiMA/2DhoqeYCl6pvL/uehrI1apJ73f22MnpErjSRzllgBnENMMHDiyEHHbvzKpomVbzDueef93dnE4eohjZJMG9MV5SFUKY1NHbYQCqWhxbwNHMq2SlHgrw68Yv4MyclWOm4cjPtuwRdxEYpuCnZjxnwYfK1gWqAKcbi01u3Z1tSA7qOq9DJk7S4ts62b8+KxGUR0l0ePOTe9buAkXg7iXdT8cieGpPZgmIzSQ9CycCcjDA0j2y2vo0Uq3JgWOyuO3CWqZK50cRyxXBC0FXwo6W6kbUOpEyX8zwzNrehxVv/PsjYUBfnfW+MMkMXaq25h7ikmUwNOyfXQVEcRhb4/fwqRqFkbMpIAnF5vDpp0cOJ10bWD2960qn0Xmcj9hnpnE8DG/o2Km+X2mphE7jWrhC5fA8HRVwdItEDvp8YfqTw/Yaa28sLTKtNBFS5Zge2jKiJrYAMrZkNFN0fHK49GwHuQXLkdojQPrqhFrgBLkNHZ9q9WJelL20EHV4xctHZmZ46KuEtqRyaQX+43HNqwPWOpnlyo2fGVuCpw/XO1VQZ1u1IuBEs4SfAtnAiVHFH5iDDjaMDUe6QBV8FhF8OcLnzICy5mpRWn9oq5OkHAuFyHUfoNJMUX9kCi1UxSow/JnUssTtUrxqfHZr5XiXzk+gzHYz1rjN3ZU9KXFidT+oQOiUHTlrM62sxu4Z/qmmhDauijpTXhli1s9ZJbE+7RHh9hxeXDAqbHGgNWmvMV4IhIocn6r11SJam4zOKrRh82hpzaquaUA8XcWPSaccERWyOjjNchkrINOkdfbiQrk8RyP6I4tc4IwvPMAepOAqxtUqDzvZetYBX/8tn6cCh2ILoLtiPamPUGAn7cwrePmjS30gRXX84rVlR7Ce7rRzzPZwE9ppudb7YcRfl+LDems/bv+eCIApDnpNbw0BYull8RvB3JmVDjp2LExDxSstibJ4x5TsXlTKMLO6UN4wPKJeA4TBk4UwrdDmdYfVi4UzGJTClV6lxPMrxuRhRyWNAPFSBlEWZyFtE2VX35CbU+WLdg3TKMY9caDtHLprHOF8N0+dtQfReFEo9DyIpj3khCDUNYbRuzY6+X0S2+3ZwtdXcExCH4iQmapbEUs1+0D6Q6N0rvkVdfmRac+ADLhrpfdU4Vmk/4lV7BxTvW1I5giInxIHXNJKLWkfGSqKi9gm1Ga8DVIHHnv+ZcfLQfz3q6n+LsL8qjNfP7bA6CZWQ6HBje1hLcVYBjghAG0vIy8C+Edw21gXiUmfaszyc0Gkj7UEFS5bZD3zg5xByQM57InszeitBSnQ96+X5gZkTUye4rccGPG7Q/g0e/1DfAc5ex7qR12jeETRPy0EdSoXJvNxUQbXTpVY0bsQn6C9YpJHVWM96PSy1oAAI4WGJFecQFITCj3yhJkFhsnKX+8W9dYZDIO/Md6NBVuTaPEYjt2MAEwWj3G2p9gkdwDK1Iyd8Zs5UK0a/Tn8KCT3uZtEwa7YzmJ4SGZMcdHMDRhlee+7jTmC8COt1LMwOc2viUpq5iMUaMwE3/pMatkAYeXYoVfkbcUiBWG3WYOereC9+d4ZStJaD2h13yU83QWgIDXU6omyoQGZTIA4iM+x8c9cILjCAATNGDdwO+42UTTyyB0h1EwC7t37VVrpvKRUayUvuAAl1MHExaIkv60VDgArj6ZcgAkrIISuA28BjD3g6BVIs9tZOkzbd4TnvbwQipYoQmV/Sd7rHaCyeVzbIDbit6jJblEcAFy6wvEeadZtRq8shmGfDJJiqVV95AXyTZhR8QoLeJnDPeTU5Xu942+EPiPr0h4pO7/f8MmK8nXyyP7MjMVsP/2R5XRgwnDYBDX1QNb3tsJwm4UUEGR2FNsEOSOjwyartiteidY+QP3pElgoIx1rvQco5PKIx3Srx5ThqXEVMgvid9fi9uFlq9+NsP9Qwj8i3NGcPkqD81ylCpAWDU9xzNwSIqFf2stAt6s4ZxM+98Qi48/PaR8Zk5heYy9DDu4y6mD559Mw9V8VXQ/axqBonXFZuratpWLwOQsLdVmB0WfKxg/cq5V3KcyiQHctrl6fTlWdtqpXk3t3CzdNh1AcNRjwkS5JiOUyysjVLbyVQa0j23gaqYR7XopHo0H0uJBekxWuXrjo1LZhW8l+/BN+IZuChPC5s2DswmZ5eGPG2qkrm4v1W7/gVNvruQx93HlZAvfVbHG9Px1dYw0StY7pR+vit1lUuOK95B512EDRmUG6XABJZDR41dqWwPqrr2UhwfMwkODZ3/IpzclB9DWlCqIzA4vlz/F5XWQico3/Nz6hAd2U33Vm3VlGY6Oyk2vX6zjBeKoL3Tcozi1oUEclI3UUkyYR+1FEPZRajwtSq6xpOLUfn203DNd342kHrg/MBeVUXm0jivdK2FKQ2qFQJ2fCdRModantVDW5xoOY6jA51hG7p2Vsze6ADEK/u4j2sMrgiqNjx09oa44a3HqqzKhkDuWpwj8br/nCVR3Wn2PtlJ6ngfB9NBHYeyASMAC/2sY0zppVBMQV9DqR16h+gBJwHxaZw4uOkOtkmL4NL17mB3qtfxm+Y1KMHpey51a3BxXuVt5FmK/NNN7+9ZYPnubUEBYp522h1i48ohnyHF6rvbn1duTqVUV3f+a/fnqin8MDkSL7H4nKGRRatCDB6ydbjByvqztVSEQwEZG6KVE6PWcH15kDWR2V44kCRfkYVgaiLdRYVoxRIjVGuxLZTJp89pDtIxcxczhAUDi0TuOvTmZ54YI+e1u/RkWdbvHqf7BQ6+ZMkmet4RcwI2zCTmkzg4GUb7p4qhWVOxSiqWdKc5hMWZBeMBuGHyZepWHU0XLY7xPK1iw3D3V7XoNArVhmkL7BL2nO3EH3oh1r+Ov42bjZqz9vh0b163MoObo6T98jHmiF29cta7rM0OTF/sDurXtcOvRHIywtT7XdneEz1FKvrPlnexRWKyTqeF+3b2ByvPrl2+ENcdQXwg/6wv//T3NuQLnodqpihdWeZydvpxdfkmzxqr/VIhlnI9JzP6+03m+7QKlLVEmkytmMxsZOrIXaIzD3wJG8ndZHtt1sX13BR3VhcbrEzei5L4Zg0X/2lwlYBkZ61ZuXt8znvbEWA1N/RPPRcLVGpHcVYjuoNX2Ej6XDuuH1723vrZFcXxGPmZ3lShysaZePJxVqfO4Qj1MiIWduU5Rnp4DQz8gxzhmm+05VL+ENLbFZmTmuqsTyuaIezjgy+e3M0YYnCC0YG3LKgCdbgmnWN95Pqp7YwighU0IJ57ALXriA0HD6tFgWjk1xkNhQTghycEF+UgmSlN1x2qHXFwhValyYtNxnngm6+WjRHH+8ILLUczpGPcpDDw1Q0aLzwQewnMb1re2OSBDPqnlsdF4cJ8BhmtqdHG6pO3e4S+iOlzppBlZ1xbokQPyOShBbBqrwbeg4NgLe7jQG16hx0RA8NFE4yVQ/6RStnyZqPY9vw/o2CdSrV5GlTabCp+cYSwCNpbQWNQ3MpTVOQ+F3nULaPG/DFV/7muTDvpYM5EbPzvih86kH7Rjz19DDII7DxUESOAKKNdauMiBPpM/aTap2Uuq+Hl7Og77csTJJshwCd991enNYvRZ0JKcmPT4k2xIjBwHePzqCmRk+plCSftgPXq1Eg55C2aapRnxkgwm0aFwwh7gZLO8TVUBlGf14wf1zeeA+keEs0zc/VJw5NaUgJ3n2Veun43qcXpcS4cIFFd4P4ScxPb7o7Pkfx4pRdxcVfofsTErhFyqwWiPy57zZV6bLKSucfdJ3oHx5ICZATH7Up4mNVpxfg7KGvdWs3gxAmRrVQZXAOdG5/JMfJYNsOJZmiSOywj7NeQ+lZSQ3pZ5A+a2MFlOTDCg2eM+jN4EcMiqXwPrB+Rus/SwAr//yO/rKALQBFocVKGZo/x+qZzF9l0HanG3B29adySMB2sq1/qzOq+kEADpjkuLhux3kFipZOO1kAzkoSO5vuB9GtWaJUILWQoRBawCFoMZr88AaMcIuOvua2t45LMB6WG7CyzUpgHPQgUgX9162d0inP5P2qrMRCbOoXLgg3Kj5ZyBzKziTrbJOz3jDj53GUeMD3XvnkyO9j1wxOxUHhgztC2JX6RxVGI4ozNJO0h5UCK7PDJj9oKnCDhBhevoc+kt6rYLHOFjhxul19tgbQswJJL0Tak+RJYDSqzlOrjrq326ljvoU+0NA1FvagzmdXsBPdiPGYZ0HhlskAGA9Rm/YZ2KlqPjiiU4jOc1j9mcRVUC+T54Qbd1ey2sim6O1gDpCXgJHtIXScm8xBeDA6BzbEWGmHlP4LpGMhuexJA5m6HozVsmSchsQ+hBFxXLHuk3sWouYtxJMT6NGSa4Y2d3fG0sc4Se8EVtO5BZyyle/JwUc1AxgJ6QJFaN0NljymsR4ziVks5H59xdgF8Drxfq9CyUd+8bIH7vnIYD0BciSoPMBszkLoJFNiUMR9lle7Jbpw7XQ8CDIt4tIL+VCzzkF1igU1aRleTTX+/WasDz+X+2pB9wYMITgUU/kFI5sQnbkFL5uX1/dXBUudfvUhMJdmDLurfr5GdfccypYMh6pBcR3aNiiI95NKkyDyX+MU3YucD8D9jGOcipFZoeT4QzxEn6jN5jFARQt8fp09UE7p+NuTEDux3Ov3vgx1t6MrqxmR5lXpmvLy6qkVwd608cP/51zER8MdH+RHcg9qwZ6OAZPwmSAb0tdyynkphqIYO3Ek2C1xYe21/YZ69i16GlMTiNKam/nqsTPj2CbmPVJp8r3AmPoO2U0NHXl2bb5d5p2ar2doCh3Ai2IC6im4z/oLB2r7Htd3qn0TNqvVNZN4EURmP4GD5a99H7sq2+fVB1b6LPIPyEpOIx5BkA6eycgmnhhCqH7xuxC8f7QyUHDciS8O5eXHXP2xDy91XjIyBzn4rhoG9As493m7/aZ3JyY7o+5wtTxb6FghDzI0GWycvTNqrKC7GQHeiGdXUo3VEhhyR5zbSrD/mFo/bjrncuJJH2ekpkhiJvh0GddYho6Aoruuug48LmpnZAmxdIdTayhOtYIo1HThMbthe/LT+JNeTs+xIfQuB31E6C9JscjhDAVibor5mRAsEd/0q1w7S2HNuPFEIzJEvl49mUds5WIms3zu2Y/s/KBafwPsr6gj1CdSyDkJviznHaHC8905GNoQQrsgzbjgim4XmS7wyvsTcL+Ir74hrlipG2JtZzQ8WIKeSu0OVnhSB96U6SY1cyuN70evp6Dnzb4md+BL6fmnMgG+cnQ+oB3Qt5zJo0kKsPCiayFboC9sDjZ3Pf8PT+KCiTfRu9dlbIvwIueWsjg5yJ6ewlj+g7xZwLerxmxKnw8HCQkurJnyyll1VDVdV/92/odUF/ONxunJuNZUkaurJHia9GK2t+gg9z6uAFlTsbO1N241U2MIlGAcsjH0VhWtnRb50fRNOiT0REVrKDrvElMiEE5AE4/YGF7KUncockNaW9gpZXPXE+rAQnP+/kv+8YH4/ULH+zdOfa6XVuEnHdKGWaAIVHkLENLEVgtVTvhvqiYK1Li1Pi7vYXWAKc2GhlLw4FU8ng9iBedvtWZGIKmuZnDs7Le0QJkHvtMDRy/46spsk9LU7ZkVt1quleBekGt2XbsOZKLhqDpTSGrJNxsuJA8ecZt84J2c9Y/qd1o5f3nYOOOgGEZ/NKe2SjqxdkI0wIpHxxB9jmo+STtZktY0FxIui/u0RssJVKlxDRL7O9+cIO3TOma1Y10Rqd1zA16lJOb9ZGNp1MHpkyqtNAWH4tagseZiCuWibVo7LV13K6j4tD7D3vMlk6QHOXjqTIJmG0r3V9DrXkyDgZSNZZEHZjx45fzD+CBUz9vwMp8AaU2RL8GHSFxOT6tYDb1OK4bG/XaW3Cva0TpV5BG35lWeXIrd+KNFH2PrsD4oX9+EpXfcHv6EPwsymTYx02FSnp2MgwcsjthFjbnqWKaB2/LK6EGdqpz0NUOP109T+wYlcKt1zO9GXwhWfOL55dcrPwdyjCBQv/kUSunG+cvhQOlgf7/KofZSuecHAwFh2WedjWDtsLY/P2Jzy3EgLnqD97W87hUR1VuBIriF2tEtnT4rQvVQoSg0RAkg4OD3X0kMTQ8FbG9R98fwR20HMtYGSksuvrHse2hxrXiwXUHu+RrWlizqvuopFIaUPhjHtZsPLtfMTvnGVIiGwyZyXYwlHG2zO0nFiB2KqA1cUi7bAaAgFH+h7ST54QYdN/93Fe4qvfZ8LckhyiC4ac280E3Fbi2NVvqa+sRT79U2Po1SY0Iq7Fdes6TdZatw1HxX7e2snh3FkNSakbnH82c/x9XvxAdx94eVMe7+zbYnZ4G/fzDcwfkfjqZQrp3LbZOgRTHUDo2Nnyg4gIsN/YHfLytXgjafrnOnV5emPV0OPjV7o/vV7Nb8TVETOycaktYkPh89jyAVfCI00BGXLoMCdFyMJaJxPviTHTLRbGFVo/Qu6I01OCE7UG73ytt7b4DGYC8Xvf9ozKBoJvclzBECfnjQSOp33SGWQR+GiMNhoCqc7QCQAEm8RvABi6EI+nJsH7ZH4SAqeA5+MMFm8wYKAbsr0NERYWg18Is4eRRmVxAMzq1RRXsRcXh1O3ZN9jB32CXRKWil320Hfgbml5HRf1COegiKhL5sJ2YETG4eLMzSPPhxAOAgifS1nmVcSt5eHAor46RRt47WIOw+hLEyKtd8yV+YS8SiPsIHv42UeKfYGRtHhpXq0jU0tDTrRIAKDbZ+q1ZrEX3OKqKzG8whaVH3KLyCGBsy5LXrww2hVnFy8Ls3SsNSzPmEq8HxlCKH6NwWQc4ltHGY/YLpM6FFbZ/u6LIeTG0a0JsiV7XJ9/oGXxTcQAjTGyKH6DUJA/w+4POSo1bk1nVhJWHIchRgJiu0NTepuV1bkGB5W3iHuMs7UzpEdbHZPEYCkeP/3OGDpTdLJB4KJZ6qnlDH5K83jFYvIEjYvYgDj9KDjnsDAlUjnOkcYYK1tzhmk1X9942jg440Ndf1qRO9TmUA9qyk04MPHReQtCDCXsGtcboiRxKjTLhyRAOwGwnhY8DbUe9vRvCo/Q0mFHtPbxBeDfBAOgLdkccxluLvAWN5eDl7LNDZ4krgQhH7cAliYF8OhsdU5z5Z3RTuufPxlXYsxK5BeXRRr6A6EwFVjYO9HABwE671YFwEiT/3cYHWO1BLezB54sIW/2fDsmv7hqZsyXglEP3bEgyn7ce8M2ZEwZpWjEK5Qwg0pyncyIQCsZnVxdXUdkLMwlRQhQ23cEHRCJVLOLQzTKbAc/fgDgWqzvlb1A6oyILGCYEF3Z5Ssk0e0vXXVoz8XkbAuk3mFK+gaE33FhZeqWoXwoSh5p/aFF2xgvB9pVUW/jvm2nQpXDo8LUJ4XgrW5G6zGhcCMF4iXcH1bT1qDzbpc7stMaoe32Emp7HGoYBwfOChTr8jGoCQaU3lKIaQM7YKOftwSXWqPgevAvIuSUDaGIg9yW3HKComyqjZ6TQ5veoFxIsXvKmX0DzSmYIr5EV+ynAfYFy/mf2qJnym0ZfBO21hvF/toSZmz5BvAI+BHWr2NSoUAJNpnKUg6BYz1tSvVQD4JE6vEO95gm+vz5lxxm9ilnqXwCR6NmFLd4TwlkcxtbDXw8u9ffzXMIk7WDRGuGj8HbkFTGHlYeNZYJZ4zizK4UVCMBMjKQd0iV5Or/62llG6TDaPQMC+1W7di9M6RG4f2lcTudOWsYuIOh+b6X5RebqkXbxvU0SQsZ0Tc7WZctlAwfOmhDePmwxKIYo9b15P6wJVfE9XPNfHah5r2QhWc7ZnfUrIGh41ZVV5Ei5jSk76aHHuMc5laJDt7VSrXRh61GWimYaZDOxlz2SyQWTLN+O4yELdiVG6vqYHIg9KcxrTKbVhpr3PyYetrwlwx+MreWE1yqpPu8Hl9ygVnuAFj+aKuh8TSOS1hNWl4lhXBFCYLbbyBOpJfCPn16w5luWZNibaj7nWJ02mo1CH16SDB0Yw52DPxguu7Pl8FHz2Z9arJceUKUuTSg1CW75HD7BTPsFS36bQKfw5l2LoClCUncnsIyF1FF4FEqU4elqLWQfwBSgHhP2pjz9n60JxhMc767u88dazZ5hL9A9ylQpHJmjiWC07S3iz2fQeORf/kDGU6qumauHzp1UUg1FEmuVcz0ZNJnsjnsJUR5ENnSwZebv27u0J8lC/5hgD9h4i+DrD2IK+jc19KrWjYA8ZnebTtytkaS3QeAqu7hB8FvZPPegD+2Yir0mbKK5jTsUQFIv6Bo2L9P6QHxFzOumqCfkVJ51ddaCjFgOlGZnRxGrZFSKQaEf9Zz9x3BUhI4dYTKuu5oxEaFgk6RxS6q9IuluTcTPxNu/5zr457Ot7jrx2RyYT5HDhnad2/IEWWovdn4mRcAJtaJHujDdO0GDNvQ/TZtxsQX12nc2To3g8FY/FwpkU79Q2t4KK4sWxauPyPX+ZEpVXdLa1YJGWxgdbXZ1zJRr7Xz2vyelofIAIJq4piJ7FnQus9A9cH8gkJonXqKET/Rfk3VLfM6EuU4PunuGFAeetXvtTonT14n0d1ofoww331GDGI+dY2ljjUgGmWUEHZ0zrfNiE55pg3L/7ZCufz1CrTXjSpDmPVLCO2+qF3A3uYLYTsHCd4uyB2uibcUaVMFzP5ibkY19yZTuMwwfiFW3gdDoGWfhEW5lxMw6nSOEvFb1HPUx8S8xftBfSORnNrpHUl9yw+2M+qaKyfKJ1MBrH7ekYMsFFelwDE4KzEa+yEACIkQaBwtPE5kanTTr3glAoPY2wm1IPbqoAEGBbTuXTBu/b1QXPVABuDRaB6vH03NO5XXNGcyNYfP+kaE9rFSz5bI/CAbtPvdo4cND5ad/G6bpJ0q9+xHv17fdkvKC8AVecTvFetkAHrws5h5mZh54pS/5LHITUNidHzqXLgbVaTnnKOLkHjlPuF9r0El8FMgdFcpqjNlQ3P3TP0zPC5jVizc7HOGaImds5nNi2/Wp45iYPCj9AhH0Mi1gqc+rnUOeaucyleL3ZMSzk2iMcb9MMc9ezIO4ClqcjXLBeeGGU89QzmAZJw0Ku6KJxMXuWAk5U+GGDTCcW9Ywp7GUFYbF1F2HE/Mg35rTqSOHAzPW2ZC4mbSad6bXzxofi8UYI8MCC17icPvvdDJhA03p1T2vsjBRToQjuN9pQYkSg7Eu2PmTacrgH7aUcS12rmxu8LsJla8gYU46jbc3tfE3j9eB1joX3x0Td8QfWpYvyI8kCeQbx/eiIN2Z8Xn388fz9KlDRHvP7OHfk1FCcn1iyBRhtzKH6D7ncgQZan3U2OM0Io9xrPtJ8IdCFToovgepgFl4yBXaZ/3gXlH+QXjhtcthFsC5/gCVFs0WINgogbWGis9J7sqIXLFWW3Rg2S3UvA93ytqE0tAiH8gs6XAscQdOINhMQOO3MsyIYue0k0MYimpY6ll53wC+pmICMqQoeDlD2pITPQ5pDUP/meGSOlFjOMB/jStKWY4G1PA9GXx6HMZNGY0m5TQndpy0CGc1MNOO1UPysxWxjHKqrxY5mlZelsVa20tTBPJwP6QMLdmT1gHK5LVzEzqlKXODbVBDPpMS0bYrB41JaYJqqLs2x1pmre7XYMYbTona5kh4QoCOHZIiSbxUEsJtrDDMzJmEYxu0XqunEJH7aiMKCI60BhZaFcbw6KJkBcMxuwmHw96D+5xDIfbJtPcfbRHhBZIvTjfOwkd2TRFQ6Vc8mK0N0YrW6kDRjB+Wlrp7xo7zbZ/CljJi3NSTYVNmnbtMS2hwQGD5jzmVZ9i6Mwd4yh6Qq4CGt23wVhSsRWxmaFgqly1xqJyIqlI+ODmGDE0ClcfDmNU0f2OFeyeaw+7npmpMEOTOQHMDEB1M3Fe1yON50BEsHSFQhPlO6Rok8NdjUFZfxTKJYBd3FPRBc5aFUUqJoDdWrsnEGsKcq7NKV+F7volF3GnW1HFb23baxphZ/rHYs/JI/fOKjEflhZI6UFZptosocPllzwH2Kdc4tdVjPWWK41LdzXyTZw69hg/mN4+wAeVgIRu80NeIXT7CMO2rSJNH23/BjXhPJ4mrT9bmjS+yJSa8z7N6rhBfzhNmBHNIRtDFBckWgBZ1uoNE0b4aFd9kt9MS+mpstC7oDKO37A0UT6oSKYtGeFXVMNxA5aBsmFOi1qQ5BQE8/cCaaewMPtXKoebQP6YpQw74JE2zTuKfqlE3wDSQKFs+kzbwFLXK4NgaPfIrp9zLovEm5dlNQHaQFRGWc4hwk+t8FCCtWOs7EftOsHdfcZ/AOlSmrXgHQgTIzkVbBgsThVKNrC0NCDIHWC+VJd3KRSzF5MLkDiY+/RKdPiuxWsck0q4d3BMiUSHFGZVqYMBp+gUiYGBlyyO2mdxlpUPc0VcOB2ioJ6UK1SEsn/n642D63iwc9cOB0IfU2ah9wOiiTy1rWdZEaRELjY5ZFERo+6HtaEddgbTL5zW8tCGCjPaWbTjDXyk0JErV6CmA/9FYkaRJzKVPQ3Lr+wv5Tpf1aSMko+6yPT+BRHLfUFxMPbRIs5qGo4zGr83J/V5+ym4LOW4a64lea4cEwaPYLLMizUIs2LjgdK7AznIWV+vh3oTa5s6Av2p8JZoL+WyHBlioUdzNg2AsHoejQQzX5ndljmC99vT/jJ+vXz0X2WsA+ALG50Oafa8/UZdaYB0Pc7BbJUgIP40Kjs60OCJfa8gS3P2+Vkj3+0vxAIbRsxwNww9+fBkEfPK7JOcnpTuaIlG5gTy5xhqRp1b9UUbjZhG0/h0UoMGoFAG+cczGK3JUa18XdIumyePdbkqjSYEbLgwTxW1FxmcXbfueADqqWVwdt9fprwlaP39LeWZGtK9+G1dSuTKcbFrtH0t5i+XT6bmR5B6G/j6SGp05/wZGkZE61+LR8NT9HZHxqfBtN8RSjvIk/6KJCc3RoEATpPnFOZbuG3zZ08yd9TiNFkD4dYlmMMTF530BX1xJHWlpWg5ibY3a/8eAXYkfJbM5WH/NwYawkHT+axmGXQ9iMUqnJh9QvEcUPxDDc5HJIK9gQd9Ha++cGOvQBX3yVOcIx2zoEFRX/wl6L3PWUrZXjaN+KB/c2q5Vvj/yKWhuVwnWtnCiqx+RbdjW+OOu4nUruN+PO4LbIpJxnkkbDX5tFrBmlVCXroSr+QYdM8VFvGWfM2mGGQjwKOBSqd0h0Drpda1B4X3xm48gU1qR0l7t2ZK4TdL552gY63OzNyX35yvkDX7hYC9X+a7uZq9XKyj6xILnnin7CgOnKG3GnK7ycxQ1YpOAYfHsOrGA8kpomzMj/uiK9FYyePebWylTPStRDXulgIe5/Pf5CRHrPg2Xi/K9p4NxHDy2dGSgejnOCqioPtkS6PSxqj8GkqdiyVJUk3yf1vJSxYmAZK7hTPAOLDQSA2n8VQnzWWDEoRG5yXpszdIQ6opwqUgA+7SeX6E0tYdmokTLSngwwVH6mLONX+zUSnxv5uUhY49C+PL1ZwwE7XWCm6mQzZz9M1Wenu2eeygPb1cWVfvWCLgmGugsQSNlpM5VPnTC48nPb1VUv1VZXJlB4GRo6Quqm+Gx8pXWra578opK9+Lx2WCBDs0PqjpbuXALPMmZZ+O73gf/ROmyYMGP1a5yumBP5nULYfv2LlNxt7fAV2nRlpdIBvX7Po+UeTyWgaV/x9C1LQejLwVx6I6w9wIgts/vjR+4vCMNh89e7AkRB234omG/mKVdkqc+IDgi2OlW86ngEDqchJ1GQhOADw2943gGwna7+fT7QkuhtfTYPwwtcBnU8E6UlddalSVpaOU6BYg73zurYjF2HiPeLS/MeIsqQ+nL2a8qH/XhfXJnK9tnIYnTm7CrCoWw3UVSdwm8mSKht9VfTOt40MOLhHOUWeDzIs/JhKQGbxc0rnx8thpDTJcU9Kx7JAxmja3TzQ0EHoSuv/dWeuiqyHhFTEZG1iogaRPPLgLf4WXGdtKp8xstwhHk/g4vkCPbFeFs/2go4kKIzQTWt416da8D1GAqYnitUG9JmUoadJfIzTs3Po/qZwajCuqtbcuLjbYkXPsTEiIOL5/aua/KndjBAKv16utRh/Bpcz1l5A3doUIPqNtEygUUC6DLLt10pkNJYgJUdAWPr+6qrGtDin4suvQ7c2NxAI4hxRmLQiPoLl40FFniDxhHh51kPhiP+/S1UAX/3neHbbbFn3LhMrny7HbFzyDMH9hVTZzWRRLGmNuFxkV4FwO/ATFrOkcOv4CDc88TW+sh5USu7YluQcIQAvXDgSz5fNIyNjdZUXn/zFsh7qH9suwf/dy1PlGY2iS7rVGQKu96C2Akn2afro9FbjL9yb//zlqvMv6ABEpjs5hJjsnOwb55x/WhvZ6OttTKr8RwElsUeqfoft1z/Y7L80UiDHrTa/TQL1r/WnWRtjbLg2tYpdhLNTipOwy5vyT6AC4dolBenUWksARfRw2jI+Qj50YnIsUFP7hI4O2Ilmfo4yEFkRv24TqLO93G32umCCwa1VjCydf8+rNGm3x5XMgrW2+f+Hpim3kol3z0LbfLBE+OSgPecCIalJjgVLzZRiBrDe5FpIPzG+EAlQo3RYsdMUkTUTunVuz4UFwzj0Phea70vKRqQIjMvn9djRFAq2c1C9ZHoSagN6wvymPxrIpbb6DWu3UDgWKdk3HfUzbuo7YTDdHYTJnm7hGpeRRdH3z/laT1a0Bwhr33uaksg8VEJANQiCXjLtJQFIFlFlWBcQ4ouKiJwuCNV8ZDVhcTAuuoziOt5A0jxgrfRX2DtHvHHh1B9qAb3ii5RICmkDbGbVW8yPpxev8xq7wDROeY6l8boyyiU7QChs+MWKkOohRDpYZe7E8ffNXIaDXrMmAcgN1RuZ95J316XIk1kPbTImBHzq1H7pvrzSNk3WLSqdXK0KRkNWS3DZYWqAZB2aL3Ljc6UrG6ekaxaGLV12bAQZrXSM414zEt+bk8DCEYTzYxk58ofNljPybgAqd2oEU1L1my29kTWpp9Xj72fSSX7TescFckZm6kIzAg+M+EIadCX0ABlQAYl1JzMnpgyA5TgA1Azs9QDBUJLyxGFADvdzsdUEW2v05C5quWAmt1YAc81k+ZfUa67NapjBi1EW+yhirBtDxs2RWOTdvdo/cKzNlPVHBtj44inPZL2Cbq2xLwTmObcU3JaqndjWSA1DLE7yhUjn2vq7aO2zWEtsDUZ7dBej610yOWgSJ4uDT1s31b3UJKXcZl6vRAX5x5r231u8Ny0yDuYE25xrM3UQq+qegEz4y3r8qKUIxYgclWDz5sxJiyoi6iAZCSuwR66LaF/Blg8wt2QCbqWiLV/HyN6Hqm2nc5xyUwa3I2uXIJQ947dAaTWWmn/4q19I3yzxq+06NoZhGm3HOQHCD5miSc89IYo1UJ4SIHWYusVQJi6RbP719IrMQgiBoDwNZucNAp4qZnL10E3ecpaC5JI0wQ1rNYJGrOwKa80BjZexaGgaphhFgLhucsUFRBON5HSTzlOGypqOiksFY9F2c4qGUV9/LZWzDfbawixnPtkojsfeftqBIn7B6GeILoN0V4AJC4CkUBcsUKQcCERiHrIW2PKN4bMi0CqjnuAemUg+tmjDv5RMo1qrVzzldqPxMIkbZDYcgigA500wuIZrc6sQUh1H5UzaMd/mcDONddvM2wVgw0FywteoMoppG5uSluzXzYHXYYHLb0oMInWb0QsDxFlnKwQRVZpoT4a/Gntt3LzWUmuh/jIqTAbcB3+z7jvR1fKVRU9YmN11v9hzTkP3gA3+VjldusAKCXMhl5cogOIaTq5tIQ74Wc557zUxsEdlxoUTeaLmLiaOMx4E+1syQzaKVhqL18nKxhDP89d3p1/xk1Kj3BlZUr4kexW0GGSKKQQm963PBBu7bmgBW9woHAqChp4bFyv+GIJAGwJmteVeVoW6C+crd7tabQcV8GgCt9jILc1dakJNhrOOom0She1yKsYNu/fcizLDOlZIHxWc1W9mKQBUw1zCXhNtLelXTz16Ldd3QDPk7B0U3G6bN7xju9hI2+OWxlyDY2QYTxCAip42z5zfr2OHnilX9/3+lWJ0Fgy5n/WV2AEwFGSjHPu8vrbrvn2kzAL3Dbiqkju9gIEqJkhNgAxqrwFSdQDOsY2xAy8xQ8z3j1S9f5wSsbm7osOZsFpG2gaq/PkPkjdhmsWgZjZSLLBd4v/A4sNF50CMvOYaJB5TftqB+wmtO5AQwITriRa2ILCXG10mz+Q9pgu3ZRxX7eU44xbfzJZk49fDq0t9zleX7bTCZnAaL+0HTFayXXFnyEbFCHRcCSL3x1q02AZ6P78KxVB8K+yr/9MqFGtf/aQFuiQcvltBq4ByFaoVFBbOACEGP5l6Zu1QjajK3GBgZXzxy0VLf45RFpdtSdN/draiwHcBbZ3aHtPebxODIBUPTycNMBtoPRrB1UYOSFtoIOPahBzpujNXFdiVfYZWDuZfCUho5ldjcX1jl6+IktSNmBZI1y0+zRP+mYNq9fs09IIKpBLJ+rtL4PL7WmBCw9sCfPbjctLvanlOIMDKk6nBK6aFj6z4LTf5HlPosua2SJX/XadnzeeJjuR8+qw8flsi9xU5IYKrQUm4yFSe1nDtJAsqq17oVWU5v5gY3eH1kaaGwbyltX2BagBCSkjI1MkLtXgR1DXckjcG3e43KJzZNfdbPitm82yn1j7f8H83f6AJucpIGaSSFRg+0RNmDspYWbK/S97ashcbTGRZEn+Ze6fAIrgJQW3LF4bRsh6qM30nUB4mbRjCAyc0gxAMnacTRK/HL+grVxfFVxn0A3IF6pjR5hGQyc8/8cxmyiGYrnBGinOr3L9FJ/YmuOBlQkv36SVPv6vkC1EvWHEwd7mVui8vCh2RzXXUvL/8OOvEZ7HltYxzNE0mAup1XfzlJRLm8IfrWDjz2qOjX8/BzmGjMjlzGpo4naqp8wy+qbkRcYpQl3AfRK6e/dYOCNYXOB8EgQIrMBqArydqqMKdb5dze+H3DdxBghPJrN8YcWwAJiDAE7pPxqkOMGFHQw8EMMWJnBaKJe7/K9OCEQoILbwPxx4wce7ne+J2hlD//6Q2vi4A4SxhiU7O+m4IMtSYHK8Rlx9Rp70A+jKBHVTpLLS5D7dpz7NoUQ+TaHlieahDxDweOP5+eQOeNjL92wK9q/v5mV/QkkfzDgv5u1OJv7l5to+F7eUemj0bhJY0YT9td2MzuHv0upnd0Z3FKYxCVXGoZY80DvEbWja7mWdasCdt1m+8/axBzs++oD/+vzjhwydh0XxRSaL0BH0JrSL9vmXR2WkzMql/gs5o4zwT6cSj0Zb281Laavy9Qg6Rj1AMMlyOQSki30rb7b8GDCVTFjiFhd2T4DGn3VLY7I9Qnl9bRZvKkapt5SEorvK3cWQeT4S1lnzStTGgRJbrYXJVssdK6xy0leV2V3sXU42csb9vjlthFD1r41RK4e2WHwkmJSwCip+hmt3kxufQeeYGyaEh5YuKnCbbPXzPAqapr9IpC8w2UZijH338H0gTS+2ufGRSXeV6DGABgVv6Ou2ZFf19yoBxd1chdC9Od/OCVuE10gLSlVmmymW+5tY5hCixFYDxgIaAKyI7mew+IECL9OrAG8nw2GLQ+agKW26/ryUiH+gjCxB90RB5A6tavwgttRJf3S7/6gYxiYr4mB9VmW7FKFFb6axMA2ORgkUFxw0ahszYmhHmnR6oN3uTqTBciuMU+VkzyK7YVFhYdpwOAqibxOgm4SFL2W/Ecj0FxnhSY1+IdJMxfVBLSxJNp9S9NGwSoB1z9ZOF/0934P3IMhkZcSK/7BLACPxKY/3XfIt3c45ChKN6ft94RuqccdXlMBocBY+tF2CYBq64A+W3AuX2hdcWlM3Z3V50CiIDelzdv+lUXMoYT+cOWnjmx9BtkFKjs5mmrkLrfxSZS4DWQ3TfPWTBMHvCPbiaK5g2wbtKiKf/Qmu9QEQlXnNN4cDzeDJugfE7cQJEyUMVqRymtkOjEj4EzzAAw6tqcQ/fGhEmkDsEhTcnqLxQIlc/3AoCGGxxwFtzBsOaACyYv4n5qmQn2HdU9zy7G/wJhMrr9KoOk0kRF2Z6WMglEiSQchcIfW1SxIBLmyWpDpvx/H4uPbNcyilZxX3jxUiFJj8qKv6yT4Ko/WvgiN/Q0yXQOGiUMipZ2dF+aSMrqSuoIzwcM/EnEf9A00yQkBdVfTZcG2JHddqZ4Jj05eu9vYpEqPufPg2enwFaZzgLfJEVE66tI+1rLvGQmYWmEDzIHSruONIMNHmq5PA0ssO7h5csl4wRx5qPVyCp4hl5BGzmOZMPzrq6+wqcy+T7p4nC9Re5sP+TBtYQrCaKKYsF9tKMBtMdNkL+dnMSwtRyEB3tsm+wF74bMKzJ/ZYi4NJgxHhmiyfiYKDrHCQ8Ln6FB11LCgRDcC5pGLZGamHhGTw5QPesSQHkmEPlq38iDjlDXKD/QGu3JWlnMMGjg7P8ay9M0m51NvvfutYfOOpn/m1/XylxIFKJxCKWJyj44x3MpMd7vYUnw92B5R4YogWyr6QoMV9WpABp2a1pADrc1JNIp+7ZHPC3sw3ehJ9kAKI+2kQx6ruT8s9bAk2m3AxkqTjoALoAXVSTJju3rMzq8uaCwEA2uS0ewTFE7+w473Bd0/iEgK4BDROs50rVqznaSEQzRmzijnWTLNF5ByKBgiKjwbgyw/gQIQaHFP5D/AYt8qhDFjWTQi286h54eLUVFhpJxvZij8IYeoYaK6TNLyD5IRwdp6tCUeFvOqHVgJoiYJIHYuyFtLX1/Y0941nU8Bb9bZ5auh6z5jVZzsMVsjam7Q62jBeFaI4S9C6y6rpHUEQwStnzmHDhCBcGpwK9g6zqnSQRaGxBVEBYi30eoodPBqjro+ol0gTHf3VwhiiPKw2pdlUoXzSWq6/9PWXXYRdHQNS/bxvbNoPEaew3O7u0Ur1dmTSMdd81xgTjCm7+LGUuyTh28aMGw4O/IvMzpZcFWRMIT73eWaSgoXaiPxzRExUcq0sOojg2kFeuCNaTrlj7wXDrLxtQiaGCXNcxlcU/a3UGormCzQpO7dfne2NcXH29WHzSBahyvis4A8v2v5e8Qeim1ve83vimQwWExSSU4L13yA4JK7G6+PTfSO+IgYsdRWk05omZxnqDhX+MYab2YXl79BFWDQR9cakENJEfjSIjaHGq2CFT1VDiUZUxiCb14yNW+SpmxudMeks31990HbKNdlLv55KG3XOS7TkrsSTFClbNquJu37hbosl126cF4G+dGI9hfeIAwsevSFVE9gJm6xoKT/VAjHlfNYU+O2qV9vzmNffp9cp2AEYJ4QEejYamoA9fehvO3KY8XwKwvLj2jux1hJBYhADpVIX43Y9eB9IOIQsL/lGhQzEjnF3SJBMioIm6bvlOhnh0cVa6KYsfEbI4eIzbBQqbriL+CFsjoiDS1Ff81DEFimm3Yd4urBUtsS2blbuidRxGwZkbcWIgyjKXlyyteiU7YC7ySqvRsmGdy+JgR3tnDj52wnHrWz+gFthGEY4JGXyKv3+EqXQ0XcgP7R5P8fclaZVdqSDpcZVFB37yPU5lwl+XSzPoJcZiVxL4sokbI+ZF7UTxtxYgBvuW+1qFMXSuaslFAmQIrWtJrYc+z/QPF0QWx/J7hivUn/aq5Z5kKoIg67xSccCmHOLh6FatszgokMHVcH1Cogq5OxrRdY7LIEDyfHCeVGExawTP7CtVyV/0GZKBxWcXivI9pY+fDZnqbGwjtp+w+jagPOwtYKF3aac2OZ98Krlcm4oQGPQt+jINsCEi6oJ2mZxUUX2ClH5QS0PWVqNEABq+DpOSb5cn7O2R8SEgv232BUXoYtq6jXtNoCoDbS0wUhzyeXMo8ysY7h0JICZwCnNeRVboxlhP27HtGi6bWLn/LCNgasDY4KpCCzlwjGP3QpR2QiN87IdzarL+5rqgIjh1J41Fjwn3PDFypeTVFVAVTiwNUuct2DyJoVGMe2id+RPuCEJmdUiKNNy6IB7EOv4h7C85jnEwMFRKqyyL9dcbFN/aJ63ECJR+AK9Er1MJo70tvdhFNiuBcWwhWlOdpKFA1L1rVn9OxIuxQy4QewNZ93RPXffBmvWTJycOpYIX6n7pKEqHCIhY6283BwLFxWdlVKDp31fkXn6eqE90UW5w1GTBa1J/bLGdkQ8SDsInGvsDmQrSFz5Da7BX0MEjvo4en6c98nyrr7tXAUWVGJEdo5jYNNsQPmfzXPr7vs2CgBm+Ky2LKFdjWDk0LvhEqvtVC7p/S7ZwfXy7O/zPwC8CzEojNihvwtQh6SYNAcrMxw6EXttAUkZr3jjWJuvwVCKKlmU+CYK4rENHBhCYLY1OHBLaCddndeRZ2+lua2/DgENkrjbiNKa2mfUXR/h+P3kkhKv8jMocDDHCpLQy06iUGl8waTI/duxBIi/Gpgcin2qiCmQafB4pZSRmOlMbzpJweKF6Xya2hQSTT5bpzcugU02fcclNeE/kCeH2kx2RsvarV+3wlXmaS4wXKrUxhXwEjyASRPIhOCqyfQf0yuq11kHxNL7Z2kbiJPibZA9JVuAyeWw7lFfmLTrNZoqJ01xVl+L9viUbOkxyYENF4dJ5nWPWPDpKq7G02gmFxia4l5eol2/Av19EhR+RmzVcTCMauTXlGLBNzfJV2/PjUZldcfBjUzpU3i9T5cKdsLbUocqgTcM5aZNb2hlKhRTnuQS49Ae6//gUzXL0oI8wwUmlKoxFcMNIwkhI4hfnw43qiM2CMvSlULdER7ISiMiCVeagGowxPAZnw4UKwHjbWtEwjWL4W/xnf22xe+psk9MlRJcol9m4Ku5RnJDGOkT/1jssXfOC/egCXlnc8UP5mRtSyjklM9C/54F/N53h3iGC451MJuEBjpMHsFwZisU9HN9yww+MyL8vdfAwGjI9QYj1Urr5KdS6Lk8AfqSEO2wJ64JYZSZoBIXDBlB15nytYQmdYOn7yTwdcLfQfaQtwWVytyHbL6EbOJJp5lrBeEUFOp33hpIzjXEAiwrNPq0eF52MNsasS82syh4zrItYXy1PXM/5s+Lak1AnWurU+byU/eUpAQI0eTgfKR9zdielzVUSpJfFr/2zWKkLAMhnOLk3/O/6tlg6J56FQgCLCx+lg1WtMSJb+dUlVUht/ywNqNUp+BoV1j2d0c44eH+oRrqqdaX6SOeTWzVmEERjpnIJOtZ+3yLW2xjOjNPDprrlEMv3dV0qrXCIRLsw6YmOwIrTFUTGSrMGAmg+cBTw2V0JC6Fj66X3iNYwHwWC6j4xGrvSUeqJ9C3AQjURsokhXREETW3wQV6/cswJLiiyD+GYBUTAN8EQkuG5ZJjrxseTMvrF/dazuDRRX4pIhbQgfs/rw8ERY1FZ4UWRvmelxrwVEfplGBI90jW5btDaiNzkwd+taGDwxbuATR0IwDzV1uNN6z6N1c3UetAoHBoMVS9HAxbYimnYBX+jan/YRj7sGLjwUPZK/Qnyag9w+w1R7WeVBKlmhJN8N12rsaS50fXY/KfmIh6yX+hJIsz30qe9y/exeeDruvxlgTvCVb5nqg8pSphQpQ1ltQ+kEeMknbCVlYpfRHPPlN+noL801TV4kwlKQAzeVGtrI7otsMxz8+hlLeS5a18eijFZOSLuP9MuU9N+gGnmDhl+WTGSeTJJF/E3WfK+7dd8pk4W3lx3FbifE1gHZkMfxGXz5TbFNnjlokt6ybj5dWpJ+O+iPNnynVqzBRdyisM71AdhkTCVXeF7MzBp8xzLllhX5Wd3CpB3Zg9twOXtbmxEhbTsy9w0X5VP9RoBKmbtf27B9WpDHJ+5hhqLlO/As1WwDpDjzg1Zn/P6aGzT46Xj3a75cvwAzzVJyrDdKM6k3tH0MCco/4aEyixYyTKCnFY41Mlp9nUODs39NCmFJeXYBywx1TvBctDIYURLy5SPEnArJ05lZSFjIWQzh0jSbpzudUJrCQOEhfNINrUnrJKc29rWCZ+cTlP9EPLxQWVTRRnNPA5Ijf4sPC9DVeIL+MyjrkBP/D37DbW6bJ13+FvajEuCHc83UDS1uFpSS5Iict7qeR8TsbPV++8zFWKuedjWZGv+Jx2FXpt8Sc+8NmnkArnmn5VUnNCbSODofhuseAXbyTOFZ8MNdmwdQZVf1C5tcL2K17McLXryKRzHWqp1RR5q7J5STZRmaiUlqnJJyglzRSVLTTVZKL8+PPyRUnC7Oq99AiJmoCyC3pAmmtcgCIOnv4sn1tLMk1JRJVl4rIBBxa2Iol/EfefKfepSpNhklcyd+XziVLp9q3wUtKwWRg0fv5Mr8WUuTIfs40LpnT2hKbKmujrKDDsRrB0aEx+Zl7fpuHSuT3bYhXLFjuMZ6uxm6ImlX+vLkpU7ehLIOiwYuPBc9lr92wc34JyXnagxHWZg67n5ZN4rhlutqyGSoF4aCG/sLJUu8EBv8Zn7OjNjaKho9J2yiqB92PUB+fSq0uKyfAXcflMuU2B9XjKyrKdTEWXHQrtP57mUqvVI62Xdyn+DOZj+J7BKOOKFqvSTTpvaFTnyud/BU9+ynUKTAZVbqJm0g1Q22ZIdeizouKerf3mfWUrVPQFIouDrSDNL+L4TDmOlwjeRou8LL308fcnuLHIJrrVy9QalLzjJcpzZrFgnpgIV6OD3OjgmMto6LWM6UvvH4gDvYbQPQzcgCvmHG8GtgBildlGUqY59oqLdcTSFUo8gDnCCFTWi6H9S4ZAHHHfssuGD0lh/Wdil6sKyzquTnwWsjUmvxil1cdoGtQWfmACbbIA4jX9rBsuwZRJe+rQgr0tVdOQIkp13BqA/iwAy6UjmNjLghYDCgLZn5G/Ihv7XLr/5bavI1aznjbrpuXqGn7VC37XPqcat49d+NPjU+9u7TJgK3qFHf6EwpgYngGQEnUScWMw30dpTlpoADCZU8w6PMtrhGuc2Y+BDuAshxTrvbXyobLi5PDQbp5tLI1sweyzywkszG7KJDn2hYVxnKNRdxTTT+Mz54ImI6pSQA9ttDKyOPS88vNZSP4Lqwn0mIMwW7xmCkDFtrmHzUWWnGAPCZScLzy3Te4xhvjdvJkR/7iKImDHvJlnOpcfgoh49k6CfNrw/oJIbqMsJLcl1Ny5QmwqtsiWkGDf/CJMcvpe4spr4c3LPibLepI4f3YLoX8+R3PAm2PHSkKM5YkemaHsURpBxbEQcp/4MVclY+id8IQI8XrgwCFK+Kb1OOpz2QgFAc7OAhIA3Emiu6nmIkGzIeF0PinhzfZiSnMNxKcNjR1b5yTsPnNa35PcGIa/C4Ydx+lo9gSdt2ezmKKXUAkOiqmQEXZYM0GbckAuAD5ieE/CITv89Hz+xb8/r8YBiZqel4BzHEIU2RuJBvItV80iDkfwsy/GaofCaJLRIc6dC9oz763YRfRa8preNrQ1cUobkYMMgOASbCsgfQPeJM1/L14ue9jbwofigKjZ+xI5YVhEq5jnHeCYh7rvcOBZU11mD4ULtqAWDnEhiytg4oKy+pl9HDJvef7wrMC0o2I6gtqzweVWpjhWs53/cYrDoK4/Ox3ksP0QirnU8FrFdxzjkt6RMZyby8gr9YK7OFJhopahOovzIUzF/k8uf3R2F/TMDf1xZshN33lDcnsPz/OG5yy7Hx4cZ8HTewzvAW+ZHKsQU+dqGjNWvXWHMl2cMdkUmUlKGAXV+m+fCrZTNdWFnhJX9HQk4IPzq2dXeU124aLLedsUbsEcNnly0Gad56lIix/HHblUi25+QSbfr2HH48uM+mlTf/OgQ6q8+UhkoaLAH5eWi+mbPHcx8VKZMiY8mb4kpfnU+/IyJtH6mbpuVFqPHfeiGw+JOpanUWE/5/l9og5YfK93DMrrQ0pbwscTfc1E2OJyHkMMnBtdkXk6C51TKPoST7pNIAXXNp6dVfaPp3SBC/N+ZVXDtduLCVLg3jo/YpxrXDlCHDfQQ8acA4qFwVH14MUrEo0AEx097Ik78KWk2r/nfvkG/32+PEdNXvDqw3QzuhFc4n4Zc3i2op2GPr4/0qpEnFMrvv37cVQjgrV8Pn2/GHZ/pZQmY0MX63F2yCQvXqzL4uaqLlJPpl9YyLXvHhLPUBiOkHIlX46Jixt+oerMIxO3MO+lcYNzjaDyg8Op9UJM11M5CWF9yCvHYgh+MXOIaJsTlA6htCiyXYcYVzfQhyz2lxi4T/ayCkqq/TagzeuB4b3bXaHI+PaVQLoa/wjiPlSrGvvfVaJOC96BoPrm12I5Az3Bx42z6/Yva3Ce2RbR620eOsW6EzWumpAPBXoYMl220icYURSOWgnoYhAONiNrHg3ZQe5WKzAnpFhxN+l3t+ZN2k/UJLrun/g6EdAojDk5ESgvEn47uulVhYnpIdKfkEIOYLWQsaD1if22AxD1MeJBMAmZhEROmKVS7lBPKOpXS73SUj2IlbBLFCS0ac0dw/KE6oA09vULvo1brOALpQ9qe+CDuzJuOgl+zAixxtQ/B/+Wooaq8/6IUwFbze4bX3UwldlwZHSXUAfa7R5WLFqIXae5GrjT63Z2JEAU5Qe+SQ2oL491EiSrMqwKAx1NJ6bjsSi4NNFPs8oLJdlaF7io9w8wJGnE6IjCt20H/HQdJYBUzjZndnuJW2sjHLFqY+mK6YcK7AeL9NoGoVo+fmjyudUx5qkpC6+Mf4+nHWuLM055mCgbcayH5OtAFbTAVgGser7hsMd3wZsj5cFzMQTDKBNvWsKQhQ1URyX1u35MeALPfqILB6+Yah+Q860DePyoBxqCuOMtJdk4ZlD/rGe/8kGWLQSjuyKeEo5ZoOA3J9TGQyWM+L72o2Gk0ujHBHhQOVT+9eJ8IhpTRLRws8umuluR1HpSU35FjmWL56/n/C2smsuthRd658/fLSPu1RhvDaS0X7Wp7uTxN371Sx7iOxHnUsb/Jcn6GHAIdD6Az2Pw6aqRCku17Hg13M+AyDyT1OftNsCgY10ewYCivDhsL9Fn1yuCwPRKbHBuOVwHgv3TCLpzqK3BnX6m5ONORU/lGRh1X69clMYO4jF4WIJX6Cgl8/r+HUjwQdKW7SaIvoP2custqZsNlgAMV91jgmTpWejCLCmhCy2bKnuMrTDtwwQYCEW9S0JWAHSlY6H3XTgZthMRAE5pbFMxQsESYzeQ6FNAw0DhSLL0IQwcfqXNLaDsXc0o1IlCuLAur2oZj9Fedti5CERQW6XxiLXrKf8wuC6x7YiCWTCLwc9i/skhoTv2iBBxuTSX5GXN9Sw4Li/h66h1c/Vv6F9vgOL6Rb/XAftS/hQFf1wHFp2+G8Al67prmvn2jtkymOdTgXODwcMLm0iQNopXiIxTq6yMSEkaaYi1NDaDzYseWdAIWsTuWX6l0HsjLRkgNlBVUrA7hrWcqktsJz+bfm6WyzjX5Jap6hxSutlP1MNjvMNczn+skq9N0vaYn8lxh2NDtlDYEFov3ZK2wwukO8qbMbckB06IJZ8wi7XCOiu+XKLwdDZkRg7cSaCqmR0Kn0RnvGPtWRaryxwlY/5frSUcIVFD9+vaAxIgSlo97E6NrZ9H4w3r5dW+E9KSyQn0HiAzJloHf5iNa7wz/LL9K9Kc0YssJwpekF+1gw4J1h4oE76Gp8DSI+1AcdZteD9dDd87W3G6pMSIDJqSTZtY+BJD9F0+FCJZ51NyT/HYu4y2lphEz5BxUwIqMU8eZaicTCQT9v7URyq3ErWsAT+8u6I5odmzcVca6ipHd29uSSdo7B/TYjbQbBu0KbmG2HeenyVFZ/9CavbA7IWTj5sr0kD4xvEi6i0WdRuhevCa7Z6SkfbO2IsqiSG141qeGvWQ8CBHRU06tiuL7d8bspja/Dv82isP3bhd0BlgWaSWprY7BxFQ/oR44HNvDhzgeDT23edGS1MUiFC9HG1NACLvUxCagQgqTu0xiakPqQ+7lP2kpSY0m+kYXaGCTFBIxkQqhpI3JD8gNrFEjSRp/XrWQTbQuK1lMNSQbrJUWRQh3hQDH3qlVm1MiajJqrEMj8Rz18zvSXrnDY40WlpjDOnvR7nkKPnvFWE8cZZFRzZPi/6MNCpwhJI8mJlqpxG0uyfSwrOwMbHRZHJTJ2eeklhS3lpc/PuYcB8jX/Y/rsC0IHMf/qyh/+JbimeC44IXkH/waUnwFaHy7/6xirq6gZ4Waqfju1sNFPjCfD8nkyh/Fs/gN2BE1rPw/Zo1YOOaAmOYYNkErzOuZBJDBN2OOvDCuip/R9dMi3Xw87ZtIML/f+wYeIKAU2r8+eCRAAeWDRhIQE3AE/A3o2muLIWzbdkmyhWENS7cQ++Lt8o+cr1cLcmHV71HrXnSjKkK7XKiJ3L0qGc8uJPcNsGRWC6JkMZUO4auTHLpRTNOgwVZpl1SQwmN/tQYHLyK7dsxlpi7PYr2UHgXyfWWMENxZAthwPWWGAUJusT0Wam76kUzEuIyI0i/7ymTYvriJWXvaWf/M/ABddgGkMvjuyDZMA/f6mQ9ASGNBVxLnCGIzkArUSdjZFGvFP1YuybhHn7vIwGA9aTFw3ptluOu5DPsWofDpoOJLFiB6OPTWikbPdEOp0NqID/BDggEteboSYP3tyURxDtiKNEJprCTD6o+lvNXgmvcIB6Ouf49I+gzuYloaGMJOAlWh4bKBrysREKsST0r9GVQIAAySW+fEqRpGHFy7MoX1Xx8iBf40HgVhsVLlEjiNMSAtMJO+sWRyZLCaHBVdTzVdCDUH+NLvdAMuDRYa0dsQ/qGZ4eQ1lgJArDS7RdkIOgpy5SEa7pebrA4tNVdQLssVZvwWwS26pZKzELVaaw3GiCz3ROIfKiGBbLaraitEFRlxIzLQEPj0fPzPxesjykpl1WWmQsPkAQvKEXx2C5hkQkCiDXwWrHWoU0IM7RgFrZKi2gSmZoJyId9u+u1tBMyl3ulLRybWiwM/wP/EvJFcFsVv/hGCEn9x3rV7fHxJvR8Ts8bxDgsVZ+reo4LKMM1xLJcv8NSa8V1iy1na8KwYgPWHXdPL966CSf3Lx2K4QMfLgDFNgDBZ11o46R6AqmHZraJsoYIIPIqA5qqwBvGvLtcztmPJtpdM5iIrkHmjBIcqQF2lGFmLZOfCCMDYv2YmcgCjmoEkwE6Xi6kHXII/dYEkDK8Djki/Ik4hOiD1gHMX3nmGgELd/NDBZO7zcQZSvyoSYnXpy3lsx6NQh7rbpVEQRQ3tiUEXbPKNPySIYHj0N8xYT+3Voyqvt5ut6al+dJMr8H7FmNaNbmEZ2SuPA9E7hx3WukIXtyfHEyUAANYy34hbkmsiQgplm6A/FdduJD8doNisGuUezr2n36EGDrP1Sv0/zhmQo7K9NYb6C5QPx/U+hY9kdpFGUEHLUJKfd0i2H+sD2E1LCDgQWkbeDtAei7qCAiyt27K0q2tKFObowVXFaL+31c36iP1j/u8dxk6lHN1AAW+Yyjyeg+K4/yHY9rfN1KUy4nw7f5w4QufOCakp1TjJ3MrWbNnchG8pK43Fbr39X3BewWo9aiDc0mBFjuy+4Hgs/jEJVaRG74x7z3CQHxYbifERNitJJUmamZpI14aNjR7XwVUDvmkJoDFtIfdQ4K/mUS8Sqs6FQ+XpPtrJyHGMIMzkHQQ1CyyVXJtuTy/8j4Jp9XHIM0TZt7UGxienGpFIBS0vqA3oVaIwtkmQ8fTwS733KynJ5wgg7Jq6N4l0KtJIXK3yCWGMM8WYdthjz69FP0pKcwiwtK3vj9nrL7kkkDzBVEZA8bFXuENsoyTFC+XzG1RZssDoz5LfABqbwKFh2nguMXzplQ4cJ6+jEKtaFgGiUqjfRGs6RO2j2f7DU21MRcbyHFGtAGTt/FEntVw05ZZm1R0XZD1786wlW1x3OGUU8PSmZHV8Ssacs/YMW+ZCv7hVLdG0yMGXPD5UMA5cgGkY6ZQOs5KusKk89bCVQU19sjidjtWJWHP+s7Wjlq3Z6aouuXi6PDwlNpHqlwzi8wg5q7e+xasWUSzkHLNk1Ps5dAU0Ka3EXIswADQl5QSZ0kngwHYrzP/pljWDddCjZpaZp11Uzolu4Va/+B+vbBrsRtgtl/BB9aX/oGd7Abeykgd9dQyZFysftWWIy7s/AhFNYhaQCc7gNrXBoYDmRPflh5AiqgGVGC3IFY+tF9qNCdA6Ow7aD75iJ/VjiyoIl0BfD1S/9dR8TsaMBBQcxicCLaghe/vMhQ4vF8BVl3uGQsYdNUyRtCqBrnNR1quSAK9+yZZW4tLdN6QkWbJIouLSTBYeWApkwsCaTpUt6LMb/qGEs0/mw2bISc9rj45C6itwDQ2QZOjlpeUuFKse/MPbsU9gm6vta3X3+9+ys+5yHSv17Txyk8P84fC75ViuBAsmM051G4qBRkVauU2XwHZGQuIeDVNS6KY5qyuuw/YoeJRG1UyJ+NKKFXdByNPcXXfH6Qrk5cZRCwjWazVfSbNEOxQOq1vODjgSmKlCDyNihLw5PFLSq5G3x+wnG4cC9QJ0FneLuCf7Qe2TlYvz4fSYtr1BskufirUicLYAh3Dz4O4Eag5XagVU4M8d1KFgjN14CLdgm/vGAI2jtsvO8BQq/NQlcdM97/49q2MABCkAJPaTxx75V4YVD3qmKAHZKCM1IBAyvYEqQjLzhBDDHQW9jG8QuyQYqSyx4VerMzep88cA0XNOnQEkZJL2zQp0lmrgdPIE1TGrMhN1d12LNy8gEmta2pFjMLY3f+MxQ3mpEIuCnu7JpngShc0hUz2AZRoIisi3EjR93SG3A8RWn7tDRBd6vCJ7IMF1oQNRO1Rtdyyy7Gg2harEXyp7/zAKP3EqXz2+H51aVA0kq3bhVaMh7tT8K8D+Buran+knRrRY1qrbheWSk2rSYz0cto64TOMFnSScuZFQVkZbKsyyu/1kORuTwG52l9KXSRwKtRT2lkTYZfpjQQNsjKQeZA6HwtWjQPS1YOUvPaTN/fCCi7tPxPqYNXljSvwSrzMvtv2Z5hhovkxmiunwSAU2TR+TDMNh3joRKADbbi640ycJuARDBrPoHPr4Ffe0bRaBp7qYhL2S5ptqlT1FAinVpTGgy3FwAiczujmrOLMFdxkzwL2NZANL7X/N9Y1+b+f1nSKnsCPivYbmenfgsy2f5lcu7iD1+BwoFOZVxy8Vm9kTaQCzcrdhIDp9c6hiG/uSMzPyv5Bsw6/knJpyc+OyqlgkaxixrDUdHEOZkvqiYBKIFTofdTGeYxg6+volzFRxxLNt9qOq/6I6RsARnJsq2gIXQsaAr2uuuxmVJejFSJgTGa/wsT60H5nD4kTTsrNtikqtk38k9ALZDtTPeXzB/09Mxc5AdOuv0+RNIn3xr9UM0b0V0v/a2oUl6AnsZnNLUo0ZxBPW2urLeardLcOiMIwvfZv06mBiS1dFbHt/C1OiC6rxuD+ZG2+cnd7+HCkecxCJOKetUH3f6sNC4P/h8IKksj7DY9Uhv7RjYx2Ns4ADkIP2R+GPXWWEZTerEur/Pet15qDg7DOrs0929ZrtfwTG4ftbrBW1EvQbnsTEH01TWj1BXaAu/pt6FiPofkdK/Wdib32ag1PXBdhh9Btlhbn1KpRMexVJ6BAXiuu1zW09jukozFDLol5KJ0zpvrsCpafsRySUaUVGo2ca1i/puwdZzbwJtN3eQlCGZQQ+dDRFpSAOyh/oi367BPI+14tyA4Q2RQf0x42LbTWZ9b94QipsABV5wfgyWK80iUtgzmWNSyS4qwWDTF2fJAZ2Tlatz07Svumi+05tjKit9EYREhEfNKFCzGUVU3NbSaMlmZtJpXXLcTmFA/72OUb0/X4khW1EUPni6AjOHSDcX6dhh8vO6xAfJzl348atbqkzlT7MAKovr3iUJ2gfv1KzIo3WMaQ9fsSXtCsgijWadFgYB2LX+iARiWv+6OhfyNzXB2YSsXqafJ4jHQKDEEesSOBIwbPOAGkjcAb23EuFEKgCuvSaMel4rmiE+81cmV+jrKOyulss3KT8GVmDUE6XomHGMCHTf72kKroXMLcOU+DBUzHrwgSYHyCPTpKBEc2RnPJI4EoQvPp4J39AXP3nstf3AmCi9U68YgmbbhRx4wp19qLnfmhbK6ETj91cAcnzZVxBIWoB/uSbhIpXCYbfTBDXxLcrgAHG9BTBN2E0hWaJQx/MmQjmmpevLoZhUUdS0P3+pI6h/+r8IWPtF3fU555ylejHE1UTxnHtU80JqvsCGv3Ug+NFykDDq7wel7Zux7Ea+GRKdLjMa15UnIeE7uNnav5fn8g+8bVYh+R//6WQhDp/FtQmOzEYRe/pghBhjyHoRFv5BgCorTd1ns+LuDqUIr9Flc3C4Q5Ek4QAEpm3ouUTWyKOZ4pPEOzv64v15I8aMtQ9YnFkFIWpmLB6uLr4v9rebt09cJ+hvjPd5Juuygdd/4kySPcDjaVdtmbyeHJnHwnzY8oFhBLpHWqZJSCq6orQh6K15AebUtBxA/2hXdEwaPxWwlzVKR9ThzRd7NKpEugNxUBZ5NbhC6bUC8QRnCkvPYh9q3nCjwCGW6WreXywNIZK1pgYEHOqO+/FLTBKowLCnd/sHrRFPw7HArdNLsY9HB52oFukNDUzYbVLCYwDt4Fq4Gz/Gq8xyBqna3xrXieiRAMSLrcvh2Wblh2G10GLfHW6dGBUuTae5umpy6OEu06IEUVSL/1sGNyf1kOQPZpRt7mtp8NewRSKOUGXZ90HbQeL5RmppEYdER69mBfjbQHbtTRksWBPcybLk0LcNhM2V7KCBy7yEgsWqpA5+bFRz9nUQf5Uel+rfvZfea95iUtgrvf73Cmp70K3WgrwMnd3zoEdNEhliAmibAAP8EmLbLUy5eN8xbE/QDsHRbrCPN2mF/LacskxW9H6mm43FMMGIdn2sigoPThh0u9nc9f2Qc+zkRbFBtwrjdQqccnySHu0+NCEWoeH4j4iLs/wvUL9dLTjNK4id3dit0fHeB4HfptJHVRGxNBYn6He5MxZFuOeu1jR1h88ZYFwg/annAEVYtpN2Ilw7v3SW22FJpidE0W8Ys7waHB9HeL0j7UHFxUQFjWsbzvyjpnbTkUK1/vx8PU96Q1oyfYCd1tQMQ/jVd5pPhHnoEdjBJ62rgIsmZsP+OSL4prVj8zHznroGQFW233z9A6t1nx+YpO5su2z9yJFrEYbWB8CxVoP655ZWESu+cT5BNG/zDukss1D948g8lwYe0evv+y0ivHQoF3ap4VSTkNvBKvo1aw/tezbA+t1eQMV3JykeZFPBO/rG165KL955VmhvQQvBdrCn4coPsojnRVsg2tswXDS/WCXCu5Xmf2xH07FNgy7SMCm44Upcd3qvQM/1qea2zFG/oo8Fyn0ufvWfggmdzHlSjro89nbZruO06FtNoMIL9jb1yO0igWPWIwPHeg662F01TgcEk0nCe500zywpr5DkpfADGWmyP6cUdiwnDYDa4OmTAaOP5mG5zrXDh+kMwKiPFUQ1l4AZH793EGBR8/aBepeJH9qaVqtk4gI4TKc/epSDlsiFE+lX84elP0aOxpvbDVNZ9H7B+BhSOe9ovdQafQ58FT0I/O5aV4UbM7LvGTzPme+QrzjNiAZbuH0BFKDiXEJ3fUVKDlZfT+nRbj9Q+Fj2jIEkESXgxXNTbaxQcdzxQTayoY2sTYztxOWPPkdvpQPEjsixTSYDAJTbulw+XstHRxAuzeFjVHgZnfLd55F47QWUfacWPlLJmD2t4HSNXvVPH3lE18XqLA7I7MfXdhZjIqzH64u+gzxHG+uzKNaNeeP+q0r9zINl7sWHmY75mmYMGzAFOiah7pTpSIM1Ui0+1OxTD74I8i2hcKoSVT8Pxzrr33XEI0eyx9JNXFgRZgevQ0zrlSf4h6/4GWqGQ9JvBqqOMVWJ4xlgejNoihFU2wL660TZVKF/IchJVXQy62UkNXKyY44LBnke/+yKDpUzI5H/lgYY7d74VTpHCS3Tkzt/aovCMhRO+AbRsawkWJfYychulf/XrkFHYOCRd+zNkM5DL8iXb6iU/tWCe523xG1ZckA4/kVbPPEOGvPymy3rEZfWCn3h48k/9MJM4DUjWQ3lU1fNJG5AOLdMipQXaGwSSYci/jVeLfCcuty5UZmCDR3F93Hf9PPSgaomgSOuD1wzpVIhBNIH8XgwQYCGzJlJRVhqh0SVZUftfaW+sMaZM78eQMSuUgvpkvBYdGQkoJXGPQHySWaiuiLFQBTi7GXyDH2r9X6/idbJUEziXBeUHzi4Ho7NCsX1W+tomca5ph7fOszjtoTVAhSaTvCuu000hsVh4jxgKB9NR+mXXzFzhg+j2We4MowuHv1U7f0ElQLQg7BNXdxs14LR83yU4TRsIrdvfqfE7tTBbzTLwJtfaymigGoi4XouBO7s4/Csmdf/z5+NBX8aLtjqgeFEc/U1znaaZglD0FX36MuDN1jcgdIwRHI/jlHDALze0wmzjzOCT6E8M+Vudfx5ndW/vwETrJzFzsDj5EDhjEgQMGXdBMnQrb0fe39DP1uR0oRwdGk6HBRSeM0jnVoTgr5QyGM7X9tYbjphN3LeHY9KybzYAGweseyE2mEe6dDBqL1nYIM1l7dGolQ6+uSn+v9LPlxj30jm2FNQvwJsXkZrjObl8hCDGdq8zKfxfhgAepBuw0f1OCtpg5DoZKugoUGVHHJvQcdNafbtdXbchfizrA3jUFUaSwjg3MuM0GcMbzmxpczbgNNXxlj6tNcEPsMEJbCx4PqhDc9bqEiHy3vDArewc+y30BPPDYyof8+ZI4lTXatF+tFGFpB70+uetYP/GN0tlHM+UfKzQeXUaV6lxoPbFkn4LHgrd2cp2ny6Y/HwyM6hLCAhFGta5YWEpgWdPbDtg1O7mX3OlYA1o2Y+tL1o8a2pIWmHVi2V+vODvEKucTjF8+wPbcZqJDJPVPHply6pssa6iMTKXv0AIG+FFksBNUGD/VURMfvXxsM0L+4bNssQVaHII61hTFw3S86bFx1UmrjrgMdcv3qLyTQPDYiKvrlwwiWJMQvSQGDQYZmBOOJXvL9jycY5pEaN3Mlkq4jsxFqCw2DdqazeVgKSTIRdzRKxurgbrGNOgaQl45aZljjWl3XdgViH9TS6P4uYS3DLc46WKuXuw1TQ73cG8EMBFzWQmlPpm60TOmi0NZl0coQty4IlsuSQoFqaakBRL1oktI4D9wmbjADHNySm19jDO6n95qsZymcRmj8ljpqZ+tBnlJHh517EMrujz8j/gquMH9IoU+qF+1PKQfoDKFI/jsenqzyGpW4qBHhQtVWg0dz0w5+bkipyhb2DOi/ng1/L3v3N7eAKpQCTonAgo4afnmapKUjsKmIOIIxVAGKKJxuFTvjsQIynhmAPfRL9zSTCxRDJHoBL25huGkRZEUgQrDWsWkFbnj7GnSiolUuR6BR2X1sZx86cnrRS0vqygf7zQYd14Yktj11BRG4IuOgm7pJ1DX25DrMv/w7GI5G9vhOMOcA75VSvkaBiF2cJ2JHuzGu2mVXp7IYHzFfTLRt6cnG3E6na9u1z92hJbDjjAg+AlsN3JEF5JO5jazK4EHs86JOcoyvgG9JAfSJ1BYlNyVoLLjAG9OC5Epw7i8Mjs0E+2lHFGmyU23K6itmmrq5XolbAqghLWrR/ZT71GQcz/YIDoNz4jXaI2IFRkPA+JdjuyLY0zrWtvmJO6r68zuxGIRixe6udDgUb3Q1PSNNw4yRHdRUQCN+txyhUUt/R6b+pXBBet32WzIyUvWhf4XtkJPaqUpKF3Cl/sDBVfpYBCzPj6JpGHsUy6AoAfpjqgHtktIhXxTSX09F8AQuX2hUSzWphcEp3zwUrmBDcQ8nqZyD1TF7lt06GQpGOuhSG6gVVRj1jSfYNh21aDjxqMZ4MvErt+EX5A7k/ScPQm98ebImTS61y/MGJ7ipsIpjyLpEdYicYwt5zw/go3yez7kuUgWoqS9TbbDWwl3OWaiIaBR5oliNffZTe4TSn4rPymZKn2m6Jx1UtKNYGnfX61z8u76x41QW4GkYpyLlWHVzRDK03ZKV9HA+P5Y52pg5DUBRdYubjNJ70tNpuXtgDL0M36Sw9copbuPsJDorj4LvG1+RGrJIVJNYjgCPwOVP58hOdK9zcN+SLbK8vKPli4trJ/pK0NXPyBEqWAFjq6EZl65ug4EmZIvFwOJpqItsPkTlcYXN+trOIn0Z72YeNsMFXEJaxqt+Fg/O6bS8AW8ehk9gpHI/SoYSOK+bRoTV0WvqDbmOS/lVoN63cmdRI5iUEFTkxjJzDoZvkNRlbeaHJ9YSm73QDxx7CvM8yAfE77q240Z0lgWzD1JQc/nU0CC9TpmspJVCwp5WVorz4SpdMrx5ORY0uILl85RMAluWGeQD4L2rESkcNaGBJhixCUUFItFaYgL4J/1qWtrnMvK5fSF1RQuh9cX10wNprSDefunVPXMnr1Lh6GnVoLFc+3ZpU4e3wtWisthmWHfc3dn1zMKzPui1GBjVTlcqFoYzC2uE5U5uUnFVHHpuWI0DHHApEE3qZdWRD03NS5taiaTpg7Xu3m6EQJQ4txTzPnjG9i52nyDhqYDRrz/hYqZErTFoG1UU+LjHRYYPgan7iGUyDNh3eIYvmLPyCSt4GnxjEoDhGsKu03dT8Urtt4hvRu1uvAwdayhm5V940ECK3FAt0+/7IIT+d/dQi6ETaDbJRxMQ4hEVNvl8blEB5gsL1SJ5KJlNLSIRSubzHDUzW2xVdo8JeOy1g+w3ZnmiVFYT43Rb6QDN64xXmJaO6JVOPgzVhM0Rul0PesZwq0NMBAJgAhXHIEUxzIXtouva8QHZtw4hCpJTQug+H5x/xUlKBTZjA2wHtdbAYws95C9z/CiRH7qrK2dWLYFLfdbsx6MWptNXLmzWjQKxc8fPkdSubTP1FV6c4nj57PBM+sLKwL8cbd/zJcJt91b2T7bdNXjABeGt/W/jTtQlO80J9649OXek3LaDRLX7ZXizwAWBxHSrcW+Lv8isSKHmZ7WMFJhaioMb+wXp9RspDMeLL2e1p91JPr+KPvWkenXie6eZLtVSV8hsAMsr1sEc1A/G0uHK0uQbpzwOLRQ80HU6L2Ru4eX70+OdnnFmvVhEqGSn3N6cB4Nf/vPN88qstgCHlcufnOv4xnsmtUNWufVKxi6CS+QN6OioShh89fENqJuX5sdg802Zq9C0J0aDTq9wF8x4wS3X27ctZcmvNkPk8XKjOWfd6iWRTOIjF/wf55C1MTFei3dLBZhgYOtMCNjsH2qf31zsLf0Hpl7MIKtYegPJ+Z6xTygdpDAFWYULumxytW1IQ/OPT5V1JpOL8eul6lv+4EvRJXVGMHCenCCRB5wnv8/z3UosBOB5Ir4PHJDe+mKVLmkG9An283VUnsWFybS5PQ6ZwlqZFE/jT4QkA9rgWKugC+uOwlYWKBzFptEp1RGEPwfVi+rlKkBFcZyDobzq83CrlIvzmUurN/hfEDoqJs2Wt6Les92ZByDoLf2EDd89BPa1z1hzNi5cnDvpIxBmJQghTCqx7WtNe5EYN+AH+/lvS7/YaU/D9siL2vdZzP3VWhiPLteLhCSKia/XHH6Ofhevz/9RUyEHe+0feHa5sbr6PxaTWMHv8zWwLqoYcqjlc23Mu8jSK3v4a1944qWcOSp5GWySiwrPjrfQqlHU/uo0Zz4ajbLKlyKompxcl3teCN5/3WTi7v3XkhyPzTX9zHyFLJPf3mVj3on/3feuZRmUdO/Cj6wjMln1uszSA9Mgo4sT+slZKq8w5g9dZPJPh1iLyMXaQxZjHwTMm2WBiV6WJsGoZPveaBlEAOSNci10YgSSZCUTSnbFN5R+jLNWdJGifcnUxONXtC2+zJpT8KZnGeZBmwQ3r598W+uHycZeygG3b85sZvNmlMWwN13wcROtaxIYhw+aTEC3RhmrzfX92L5Qt2HXttqpIVgtjRvi3hvD8jMejcvGCbpedD+jJGlL0GxLPdxGkp1GCxvvVQXJkUN753nrWBsjcJLFkybVqGtFXUoBf0tjm66xjaJn88YvY65/faplqj+z9v/vfo/xZQyyrUjo7+WxPBN09y33Pfy7fo2WafsQ6nZSLVkiaUoVcbMMlxM3KLnnmVKTc6vCqLYhpJLlWLdqw1feDKNDvbadtu8H+oFb0lV9YQ2f5CNVP/gvm+0gOnXPRBYm687OnXPxT1h5wdYEzPX09ud26MzreedMLigjQtjpBLUuqIOlSCPSpqSK7xEB7JQzNiP5TbLJFg7404Gs+epciSpwoPlbGHstMdl/FTd4UF0MoJIYWYX0BQ0TYolNSCtoIvj2+kdB6Uub0r1ves5SyvAM00reIgz/9bxRWIxteXCpSIJzk1jS/vtyGNcK0aLF/q10LaVY06lemyNEj0AzEDiJbhlPvHRmeemVdt3lSBZb7QOBoohhSv1fhok+7hnPLBVpbT7cpuptIKvvgWhXy8HtPp/dtg+8tPrqPr16noTvETUVtZTNx5mNroLbp1elaS8e5KodHa5FXcoHjNqEVn1azkNH1R3uwiBj6xPIiokUzXLg+pXAKhyz79TWiF2bj/OEyO8b27zNDUSfBFKRs932rJ/bYwSAwAAbMrjX+urdf4nClN6+lF+loU85yu+c3/duJle8KNLZvu5w/85RigqgT8lncgPtHsXZnU4Rgq3ugIib8O4Qul0quNovI4NmbIEtIIfL67Lexwl4vQjgxoNUBRJpW+dTjM0ZG1z/kDzNBYhm+Ki3Nc3jXcd4fx6w8NYsCqgvYEIOe64eFgY63vHC4XZo1B3/KaKRGrXCwhe1FblNElcqGb6IrYxywxVdfjokTJUlCig00iE3B2sw0Fu5IMyiwP2b2z1BtLDMktPVx3o9PWy2x58SGba1stWXx9lP+OTeSMuM7fkUp6mcYW9dqPPybVHCL7/Er6lGspls/smTwRqVwBNElPZ5LPSqDJuwQZ5h6otkbKqEMpqHTp6lohAZht/lYgqGdEGeCpM7bcBAqq5rj0Rp1OlVTK7F2TByN0yildmN3i7S3et05oWtcYZ+u4o+wwzL17tckZbN7MV/HgLpVRaGc1Kg+QefNbuiMUHJusyKu9cP6oRquPlTO7HidurcXf/5ggrnZRtMtqiBYrnGDZs3cpAcoxQSHCFMmDSSdjjh6DjlvWSvUWYUpC7abJ2HVpOpz2xdcb22xMN3iBA2EeXqnwcYydoSx4VEx/yPX4NZtKMBbt4/sk/Cr/KKMhfOU9lXO+uyyyBFQWupmYwKhYbBVf6Km+UDp29VChHLTa+PjDrhqruuTnRm0xBlwlOiizBQsIVRE3tbx2xMmH+n0C43msABwa1xix1DSbAdsegyiYTQfH2YJRdB8MKhYQOdHg5NlrS6TCmYxjggOBv8ipcYav65e0VO515mSbpGcE5rdDpusenKdxhPNuX7aB4HYs+z2grDb2md6sD5y7fXOok+KbQs9Qsb1aHA+9crN8i6l8TvMN6r+wFuRev2UrQz0BxPr7PGkhcYE4H5tFi+k9gMVGGP+VXgaxZvpceDDxyQPNLypE04baULxrym5EoqNNbduSumrVcZ15lv7qWOYp+Xtxqmb3GsV93hDcBJvR8NqrNVe3RGLctAqWPdts0LbPuuUfMedt5Yv3H5O9l0tiCUoeC5XQWNELapfdGKhg3sYfS8bw+Mx/qOAIDDlJn4eAgc+CNTxXKtuJpup6f2mrkU3TKI4rPpkowK7ijRFGOJ8gnLB8MnzPyp+lnNqqPzy7NWigjvHguPTPVpfux4VM9UHR3JQUVgq7qDG11BNbgNMq3Up6/JmpusfXyJM1j3B0DSZYbl+J2sn1dn6bgvADKyx8NKJJrzeKqJsprvr0KumE8wbCcA+gwURhU3uGNpXmg9SgSizx7KuusAhcm8yzYLFMADlXYLsx4sl0NLy71jmbtaMVdBL+uiCjC/cMOH8/1xcPJlplbev7abQWbmgMtW07IaPBWnmFZVWmEwP3rbp9eQgnn2xdGYJYIwWD9eiVW8Pe8tqWXmh4W/meqfumIneMq+PftUJw/wnZvP5BpA6nql2p9Aq9tT6c8qW6ZPt3XJ+8kJR23gei2vQGpGlOySqDQyYonX4QQJ9oWtk4hdNeWJR650mlA/Tk3ivdq1jbYiOuUVPL4R4+0MzglO93UUxIDwMJa0eygTtkSyou44fJtFx7NCoNEUnIhID/DnvCwByr/Tqh6xDL4GN3vrJlg8fPc519tH3SO+ti6u6XrYcKYLuQ+idbzV3SqRi5EYTSO6zneemJhjjnQNOw/UxadYmHVgfqOmeHZtjOJj1ZVR3bxPRe81ua5DAEuXqG7Z/THufMwlf/yB3wdeKY+Ukg7Jx3aPyySXTprG9BHRNhbNRdEnW/ZFkEusG46xzzNzFdJVsc6b5G7UhNPsdorfG+6h2rsCc2B8bvLRomMWdHd7uE/pLsTuSLKFGRIvjlql0jUIIhLJCbgkjRs3bcUg8KiqhNYXZ4LH8rXhK6nb5TdHbrTsJ+/wDkyqProQswOpkZhRkUFvsllGowChQZubdXG+mgBCJtlj0UJJsND8b+zWdxse6o3WBlGykc56lgXaWpi46cIzOeNx9GlW4sfL781P+6F/AegArbtZzXZJxM67+68Wb98uvGzShEg2qUllFwgKD5JMT4KGMM+xFVkrabhnoNOmHnKVYRCv28WUvvD7HJYztzdYt5dpfmhSQkdlxnJ7NqJVuGT2z0PTnFgnTnQEru52hoCArpacYiacXK/FqSe2Os9K1p5WBpkixZxDm/izqyq1VJUiDVkIJQ9xKTB4YjXiTMWHPpAOZ4FwtCQZWNXU7M1GyCo5+uvoUkON6FX5dEjzFnU4JBXnp1QdJ8u8cHhx1FFZwWnRR8Q7KJqWNlisIEsLsFsb4KmS7osrKkhE/22Sp4BlJ+GelAMQohlCB6gOuM7Z0NtKPTxIOfhQb11sI21X1yOAyedMsgClsRD01XLDTMqmqz/v/9+QY5dYGIj/uq8/mbtt+rpeRELEy8iJeC9fq9eJLk3ero1RD3zU416A5gE0ubfSpYHR3hNBrtULp76Bppp0bsgk/tH/IzcDLCgIRGXArM6CGIZl5rOeL6m5QyrU2Q085Jxlt4+uICzhShnknGA4RIKNqIc7uFOOsxbd6K9QVCuIGlUyotcMhVtylAVFRSf5xP4MpwKKkcQTpI4q6Cu5i+c2PpwGRxQRVQ77eGjTvWamltAjEAZFPJCrSQsQsJPEtYGqwiYKWTYXwQbBrM03gZvNNifCc36kIpsnGBQGMRYc16zCkj7VsWSj0ajsqaMUJpx0r+uGXc6AWEwxqICRvHWF6NB2NePyUYanChHtCTOrZIxsMutupd7tMobhgt6M3AS/0ar/m1OBJltthmMGo7Qi3H5PkW/opwkf6UkOiV22U5cLjfctPBx41dN05S6yRoBTizHPNgJqXtYh7jrVuFK21alLGSB/eR0qnKvochpMftCBhqX/ycAGmNsyo59kK4uikLJBpZ6ESQmkjRPLuzMNPxTFpK2+Hh4vCBDWffpclyoXnjr+vvAYOLBvbmBfT7OMCHTqisQbM5Iq2BCs0y6V/pz1Ou0h/enuOOOigm2cDBfQdKHW7RWNBZ6KdrwG2m+N8f7GhMskkGfQPl20k7YT+0bWYnXC8TtT/YpeBkqRtOMP/gbgL3SwixRD0ptFRSNlbQMdSg7zsOq4UHwRcsGOtnoR6aJTHQXiaXZ2/BmUhP+Z5yQ5SMUugobx2xgTITTx1+8OqbLAP+pR+VQoS68Q6DnbxJFKSxDxP64haQzRW09AJDuAJcaRXz+Hw4wwTuatn0BlXJe80Bu0j53Xj/BfOzX8B1b9mG6tbNELgC2VeDiH39fMwuIANX6Aw7fKjGNmhCA0A4tXca0bfjPb4OqgJCKaukhEKVD907kBqUCDn9vg6olIeTk59zcjRho3Q3XBP8nixURNf7yrrByNla2QNevycYCeSTe4EQTd8ljjxknHhN0u/TmK0JbB1I6CJbgS620A8ttTVWxjKQ2+27FADL5RaL9J48OJWSMIqffv52xjxPZ0HdOmEnv30PmcrRZomx1i9jnMk1cWmwe1mN4bY1X/DlZrMQ3wd6GdsxJT+dl11+uZL/4WJKrBcejxOe7dSLPMBjaIcRieKcQABzw8f6GehukqGe0pH8mVoV+flqn779vYK1iHdjrFMVKiJRDxDiz4o7ywN0S5YU4VbFAMbylVPAhIbaJ+THRjNOIwCk7YDZp2gAG9AZnFKheRLSzEt8r2VMuw9HldC5ONzqLxjlN3+WdMQXMHNfxP9rIV9LD0k8UPV6ryf1U/+xKWNCiaZhDDaQpKiX/Oa9a0x3LcpFdmecqfyFMpGhWTL/QsspzmOlMDZ+FIl/izhdevdOLOKDdjn2Czld7eZ6KgYYFkgVZJzLYl4VLheTQUa3DK21tdRO92VsbpigFJ/oij3d3CQYuVIcz2FVFKRz2IRPZy/RXP1bKDE/LEzOJZUFXLuNcwciuq7Turlne1t6UdD6MCZcazQa94ogMaG4d5ural7Z/w+Tp3COFRwkGKqJ0zh9i1Sy+1IMWLG/axIIkDvxP45dwu03h8rub0OWkNbFZjRhTUvk8L9dMvCUIcsvK1ihKjS15nbRQlIaWG2C5mikShJg2vPI24dg/kmV/F5DK46fl6p4fA2aqRRIM+/KBN2/E32OaZvI/iXt3B//2uULfS9Ai+vYpPf7oWhZNtQ8yl84FJNkFYxZYtyKK+lwXESIpwdFtnVBqtSqeP2ThhO2B4QPdK4mRcZou8WAo66YG4Ixp44LNj7qsaOrBJGdFEDxKbKfyQhdy0L6RUW5JkyVDCqdW7qAc0RYpRYPiu7wUvJ1eMa5GeNFXWeOMt3cMxVwI7WBjdcjDhTthFp23V5LCO2ktT5TG01TfqUUjOVcempfYgb3E6Q7GSHB5yXa0RgHiurcaoLrbW0dB4LIxdGN0qqtsLMz+TpRNNGQSknmLsvFsFqINvSRiu60s2b9fgSiBJpxQ1V2/A49ihP0VYbBQDOjjjizxpe8Ruhe/fjEZ+iUsUM4zYWiKQ5Q3DfP8UArT+cc8YwcsmToeO4GddAevEwYm1Uc/jceqadU7/4hnwdqWgjikvsoKTFcx8nMFsD+eXD6/b71eyVrSP5ZdRUH7aA14CKM4gYw4vFasz/6YGod8+hoUdZ4+AL0+tF4nYQiFiX5N9ODkZDIJXGPRSXdlGTm1RuBjSzxBUK46S0Qiubdrpq5uLaaWAkWTm0k3UtDUBALkd7a8e3i/NJizX1z9zxdcd9THaPOnQX2ETWN3jrCIb5mHOQEGoHkC0NuS2om0ec6eo79kOlkjLB2K2avZ5g5kLWmxN4RXdNWP105k9hiL5iF9XtHWPOUHCeCkku9FAoSZvZkd416LyIoPfIpmORZ/p0Gd7AlThjixvi1vUAmDY77qK/s3vcadUtAAIZ7+VT5xqreX3TDRrwYpk/DO9oVP/OTdYoB8J17C+iuLyXdEZJeu9WSUnEFnvXERa8vOJoawhS6weo4cFxWSXnHeW1JijEWFVWtb2F/0Jf5NlkXagEO8nwNYK+q5y1ThInvjMoJRqMp8Ad1iW33pEh5FfZDjMAhRzEXV7SSsfFx83X8p8vu/3NbWGvq9hjxIyr+1qxyf1aAz8+x2864ikXyipx0mlWyZuhMP5wsKvJ60ohk7LZqlJYTFjKjLvJudax3maZrD3BxpeHYetLWToU5YGTb9Gq8miuGHS+ZQ/g/5pavrQtsFa40mgMhkkX9F12y3Nx10BDPbiXceEyhlUrkiYYkKS0Cd1LuzmOC8AOJQvQPRKKO4oK9ypqkv/Ny7oxjHTgiw9VPY3SwIce00emxTBUEzKdQwMWIH0N54/tNEH4YIuK/b6eURAhSkMAdXJFzlKlqqwS9t2MZ5NgxDJXDYATdOeVZaHctWFbJyXm5PJzjj7e9oLdPCC0u2DplOuhWVfn8MiT8LrRV7sfzHmphFLi6c8vQgBQKK6ZzBJ++QVeIm+qNbN5LwouxWY0FBEUDVC6xlOXrEzMRvaBNz1aFLYu4d43IH8DAOOCUeleABiqeNpS0ZhkSlWiZz1WeUysCRytU1Sg45gkqWSIRlYNjkssR6mtatMg+QKhoOTJEhLPUmJEfRMOOqFaba0mwGYfSD1zxYsJ5s4Q+AH4j+wMUzjFbpO16V4CwlLXZBRQD6m373ODPnsqbSDzv/gZb9dhe+oSWULMZ+6gyVYNmzL5voXDiXN/dcxkqy8kZFgg8nYIOBSD2dHM/mRpkEHEZaBKBOG2ONYUHkKmIzGIVa+5pcCC1CmxQXwr7IcRhCUZbYnEyscOUUfNq8sE3q9N56od9rlEc6HxgTZp2rgc/lEIdDR12wm+vp/P6tWLh+VsUeO6RYa5IIb8zZVuXEahr6mynbUX2jEdklxFaoO73dvAextD1cUxAJTxULT3iYmmldbEfwwsMYKyW50OoIKBI8kDN1MiHVaskM07hbR/GrieYSPFsrGNzcS1zh2e0Zs75QkimSSQ63eoOrLPFKJvf2ULcKhHyaLhfk/WrkTLZi48GpbI/+wdfiex2qAoSMsazCtLfb8gqprP4A79B+24e0TTI5kmlNpGGjWPi3lSGhL97580HX6/HZxW/RCIXkl7AEAwMoTfGgMPiL0VZz78kj9rsYTzHnC9XntKJQq9KgXT59Bclzq1ooidp2e6n61GQ8R80C45JqPjtlAlrg8kqjBdXPDRUWDC3MstrlkcmulWyTw6Moj/IO4mFvUzyuMNfAfrhW2BlZLWnUNzPU9l7lGyw1a9b99aq3a+9ds6Je7bsrr/6rwRxqXE3fGgn8BteehH5/lKTfHYIlFjql+hQ9XfBG+YzMS8t+c69Kq3xbSNM2L4zztZVWZiC+T6Sc0EuV1bhHPLnQfh7kLyOmZZ7ZKr/KrJ7/cJjze7LADtEz4YOybW6lajvXm8TeF8DNbF1S7aL/3NXIh0Q9kBMX+eBF896cmWxc8sJbvig8MfAy9mQxv1Dgsvd0rhECgby96D82DLZdYtp0r5D/hDSpw7xi70tjoXIr+5jq2/hqb66ftkm93Lu7QypLgVom8k8zgZfMNVAIRqxbZVpXShtVHB9bVQK20DihRpUVRudmfa05XOyn7R4oiVEMNluFg25FTZivDstX+nZz2/RQ+JJzGHGo8Tx3JDmMzmApHqF/zSFnWG+td2ZYuQDDuim6cY0mbYyec2X5RBsMj7y/1tceMKAQa6x6isDwgNjY/6pYp0TgQHi4IaqWS/U0LfprsxlM7ve9Nz/3dHwMUOa1IFW5eN1lIq3LN13Nyv9oez/9nOBUy7u4hMOsnE6xSbvDjLl/o7OjqqzeIDiFp+XGZAmfsyw32/Rsa1xUErYa2UZRAvh97VLFjtVUWyp6nExKHzOOd0qMXSwfzwP9LLA4pyPG6ztPMfEDJf587yOHXLw98aEoSCMdAyElp1ckWQYJOrQdA2I6q4T9fphjRp77ZhLgbGYokBY0NacyxFmuGqSM0DmtMsPQYWjjAIMLzRu+8lXD3K19R8J4//NaduiSlCRC6/IzexCKC7C4cpmhmLgY7JN2+SRTaBffl39qSw5x38Kjs9klJ29TRqVA5VlBamgQ7K0BixAORQ1DapPhsKTbRI8TcZwzNWVAonSkvO8xB/+VLpcfOb+T4MroM5MVwXQwmpD26DiibNwppbTJSwlg3oZHPOlChhsXafIE9iiyiZTNtWIpCu+zSyihlqtHwD8/QsqwckMI/7xPeb++CIKHXCNQdzP4/LdNQpjabTEeUz3VUgQOgzxIC2uKGs5VJUBZxio1C7s3TUEzHWEq1H6xzX7ECssUPcvg9UpD7E6OWUqmNu2BU0w0+FuZ+8ZrYlkgaiBm4NSVHAQHTTZNtTmoRF8cBNUi2E3GeHjKQc1TaJWJT4pUHwLZ+f/uBG0QFdpNNXdNModv2KiT/Ei99Dp7JCobTySl6g0U1obf9HJlwTbJukZJ1RydUa4uU8pZevSgjDRIp1p8r1zpEr0QCCbUA8HA5HH2SBydO0BBQtxGKB/su/MuTnDHlIGKhXJSP8wtCpJCwPYZjn4DTMEawrIYsFGGe5J8/qRANpD+adKDickixmLRgm2jddVa+0eTlitl5gGeN45mUybW438BGiCrH59F0VL2xEkn/nUoBRYrI2/P9nNtPstCvIhCmylqJ5Ey8a+5+htFm7ZF1DPzUYot/bpl5ew5G2yfzavrxutLtGB7ltQjjb+7ooyCBFKXiw+ZyvxHjqhRh+GeigwCM2Ks+ndUT3tz+FS31sTdcvkXEyz8V5t5zF75qf9fxFJSN90mVaRdq9UlgCmBygx1P2dh45rVWBif2IhXsbZdw75wqX3wnirM1Dcuieq+iG9fm74lUVmCO6upTmHVwap77ZCXuTpA9/G5AuV+dwWqub1M+HlQc6Xi6Z7MRfj2Q5SqagS76SLEgg8MKu1gqWOpt3naA+vUreCfT3Ppw2L8LDmFpbGs+/BNAlm+DWbQ+LVZ9PZmSiJjFKxv1pC43MH6yl0Z6ORtW1jpvNzoHrsnJkjscLAf5BlS2Rc3W4pI16nQdffuukskZdiMvNy2ZqR4O8cfWq1JVVW93c+gjwGA/BLbsm0EyoXtBrj2VFmPVE4KpbupLC2oEsk9bVus9InOMCPF4q44Tx6NWcdlGTKUoFNqUJr6WUH/YA1tIZO7yWTl4IiuflLArP0bwlqVdW6xbS1bkgeb4W1dfiQWFyb3MZmmxikMN2KJO8oowjmhgFrl45VWT+7J7qhT+mN5cROTzWbSsEowrax7y7GnZGgxfymqR5cvUUCbRDcdNy1UcqmNb8UM3iPR36bywaTW0D2PsPAvsFecvNaU2QRb0Lw20Caa0S41rh313rdrIpRC2UtWEM/5CnasS4EqBcnTGPU4sz5qHLLZRuZkWrO67k4UQJ8KhRFrvWoXEQId6/IEAvrkn//udo84nLirX5pSaHJ/yQc/uEzVOH8rXJ+7AGZ80gOqc5dmVFNJYK3CNs5h/zxf61q9RFz0bnYmvv8MbzXA8C19I1oMSeZ2jFw4+o0FCCEh92AdmgrBr9PpLu22D0oTwO0TcTWeBYR6hjmWvtqQ5w064Zaib9v6QzZGmygftt9AbEj5Sdnm//2pnhxGm4GT1AauX3RzEUV5wYsT5VyWR/GL+jsuqT2b1nEyymCHvgHh4sgpb8/qQzb0T+A6xEvevvYyRfwJd+VD4SI5bln6ouI+VN04KjUwvSZ3eXJ34GmQCIVxdCdSOtyxtvJDv0H4FmHusnDX1NBc7ZzvNOW3nFDysZC+iCLcbu3TKXHHsL/kfd0fwRVVwXcF7t+4/QVlA9Kp6pk6xO65ImIQSwHKEWj8VjYMkWc4ZX+336ttGz2ofTLC/rJ/HLzi+TD1Z8crrOHP/RgyJRmWT2LGiVIMfXj483e3Cehl1N0Aa9rukpN5YE89VrS5SIOWsTE/tcWUqTYNQ5MWQu85tWgpE9VrtwMM20Y0CjwvAV57pJXImAn6so18gsUJ50MfQGVl5jxXwTwB/K5fn1/i50n3zFOdnQbtxmW5JHq5lKvpwE2+2lZssrLoR6i2K8KgY0FWZCLT9Fkx1gCxarvCQ9c9wdG9L1/yMlPYRiYrAb8qOXMtWRVnnDjpSKqZDkY6R82jPU8HVB1br2k5/cUxTrc7qz5mxPDoDkBAA6yGvr0GAE0pqM4O44jx8qHqM4qpaSXAVxQ4n1Q84ZFa3h+UPnuDJTuwVrrdlWQYWUm3D7WWrZp3REZHbqgxrj6ZNWeo5wLfRVLTe1Ah6KwTrzrSZQg+qDgXHI96jjzIVuUZbrqt8CednSzV7nHb0g9mGkUxB94nZ8yOhMfgZJLXIC2ZeGjSnr5cqwWn45ptEkAI+prCX6nQKGGCvtrg1wog8K9IdLI6obeEJ8Hk9haA9pZzbWDBZbI0VSQdeYDbrbWwWSsomL5vnxvJ1EYiQLXhHSRd+6xPmVl45Wp3e+DkrxdX7KdgmXVvUU5Jvi70IlWxOhrPnsloHiM2ijm1cXNJ4ZamAbjx6pcvJCMAn+zBjTTxj7m3yyckINDBSzG6kULhCK/s7am8pBE0x4jsel1C/ss/amMC9PIllGM+GlTDZNBMkkSQCHSk18yxJAKqrk/OlFfaEUB+ICuOpeOmGOxtTkF4ia2+QDEgK77b/WUfPJ2vbtacp6uaaAzaMAdSb6Qcr3ZsxipgWV8pka7f//qhCHrVwWpt8TDSQk+YJfLRDNmrFJBcf+i6xUnAZw4ozlbAnGCKofzVVsukVS1e6tqMoZwXVGWopTpyXO60q2+qFhd/qWx6CDhJ7cgEvJq6EhYGZpI6gnf1WgQEatDswwuy4WECPcd+FujH5tqzrrZiMbOs18pccJVKYOPMgtx7KM/il1Izo2noy7FryS7tr5zHMomEDgSU9KOI3jlmQXDVV+dINHJmqmmcbtjhFAb34PpVbXkheunpyFDA2XK9ytVhLvx2RIos5y+h42J/1W6kfz4hTFdPFLmNjtBL7gjyCgR3tX/2gsB9iXHLg684slsb17ym9V5NtZ3rVjcvE6Kf6/aLPTnvy1uEOL/1WuH/qmrwQW984JmvFS790Hi8u5h8aChBM06Ni9I1Dpkx4vwbcHBslskxZhhcd9/t/mU9o61vrayaM6FamJrfnxebz4Tlg/CrZkQJhAxYB+2fuDnarlt0et7r4A2U7Te8R7tTGde+mQFQq1EwhWTMV53cvUAP0kqFx70DrcSFm0A3yYJafKgt/CU/6zKOntHQ2tTHK2bYDtHNnZDI5k00Pfhlr8fbN/rYz5Fdsne4XIWPX8mQ2OhSPGh16T4MfnCTZrRcS3M3UgGB2A+xc4t/Apd8ayKfuL7lxbuz7krLzg8ihBAyRW7etusP0WGgTs815yMu0ArRJjBqeaOIf8bCDIlvC/tTWWEGs2+lnJUs6iFHoBuZUPrLouV/n/jV9w4JJJmNwxWucBsTdU25ERLQr4FINE2kxMu/DIckbAPkLhNF9wwIXt9bWxxx1u9zhLzm6y2OnM1ixGEzMt/PpBGZKocCicDp1ROh05XY8cSEZZ867ya0GqSWJLiLPWUICVnSd9xZujwGk4mXp8mRWvecFAgHI9+Kw688JxUnxY9NZZ78yFw3t3TbdxRURgvwvCAVsnDQZbIgJdsnk255+4w1L3JAJhdUU6EDtUpZmbaJETs51tSgkAeeJq+zdWV56g1icTahUCfUAYyMFKyzQmHsCabR/0NPR6agOnisJ3FLGayOUHpT9Urk1hImYHL6UMDwvnntLm69zX1aYSOC+5FzvCH0ZDFjpceky/HPa4KU2Q4nN1BL7Ni7I2b0tYT1Nb0uiZGKhBnjHVkB//zUCT90ZlKzvbC8KTjp7uXImHI1uV+j6W35xl1PRibtz6jdO3mgT+bjBfPfGwP5X2Wa/zCKZVzW/CXfYnwq8gKZwb7mlE770XGX6mtwniZ0md4LWUZDTvxqAaE9k0vJwNVjt+FlmxPj3JelsezTBsry4AypdBGHtQ4zEQrYTpdRiCFB2IkWZ75hKclBbktrKwAdyIc03cyHxFKj86dj7TDuVZWqBzPSL9o3kWixa5qabsqljIWu38LaKpSLnhbAzAbhmdqMqsWbjk93z9XavuIRMenKTZiN6tgC9bbidj2TsmDbjg9D3Rgi3Rmilz8SVpbskarhDH2pZnwyYBvvpscZa2kzMgC+zRmU7cWpB1BLMJ2hrGii1yKWpVqDaFMC/5yttuM/4uEWTDII3R7MKIEhDdkY2Il0GA3L8ogjvK/USwcrpcEKMvqLsYNGtSsvrUqgM+vO13IpSxz2ZIidL+fDwT8i5yXFXHpSm7NNFqcuGWmcjgfUAYonaNbPXb3C6by4nDp+jYIXHFUsKEwtKG2/F6WHliyx4BLekgZy7RlBwlRP4z83MB90r6TkbPfYp1Ycp6HNiAhU4TdednWgc0jvHDPkJpocYENo20a6HyhFkc68i/vlPuGGOQdDu9HmLDEYSwp3WrrXFi1SjHqlZHaknDHu4Z0RoD4XGAAsiGZR8+dcs1TBB1ZF7aj3aHm8Qu+rkRiW3EyzUhQW3DpEKrfqWmffBed8CKqGNP4w8I9YbOJWn5Y5Z2etLr3o3oll73E/ph5/P8EkUibvNsrLOtKmHqwlAeJIkfhgOj0viOwkUjj0Ls3lxk0NDVGHV+AY+du3QkLJLMHaiklorewi4oJ8kqWmM3YxLL648d0uS+tsXVSKeoVw5K9k8JgEO+OmVuiazi57OCCLjE6xWbyEZJTR6jwWjiulnaTIsqYu70iw43Ak6pYRSThgUoB3kpa/0dhAohN5eUAYMqewZdwqvgR/H5Jj4VFGjaSf5GtpfAFt7kgpKbYLUF21tsnaGekce64V3evdZ3j4UAkBWPpDRF68O/BNNPBkH3q/io2lv1DmDBDdbF5QA+hyBrK3K+k7nPr8WQ430BqE7EtDwPsNPe8cBa9F2uZkWBX1PGu6R1Sm8mGu6H0+rbuRl/Q40LwkboKSACWv8cuqZzTfY4KrJ3IUeqamwxwNQK2rkR9f3at+7Za8iIJiucFsZEPhkaX3YIei7cbqM+vGSJjdJTtzpIFMJk5MvJ9a1zU+SDA8pQ+6ZiCN36iruK62mcicpRRLQsrvXVGDF6oMTWaZ6mdJIzaS11omYEYwQQRR/iEU10fW7zO3NggSHisbKeikFPTuwSzR6VDSsttcKTyTJVTJPjPF/8dMiGiTa1/OwpeLGGEYPaFyg5lnceZc1EXLheoCIw7gk5TmI3sOmp6SShaTua0Vcra9TpOICNdT9O/po7zFbdcfkbDzeWdyOGQgRY6sgyj7kIXYw/RAEKV1hwUUIxYO1FzBUzDH2m3laGrUaTPM5XLcFM4/CnJL2hFPTw3n1rbrdnYsGqBdv+PLGPI/bPN0eN8f/JpROjvYsDzcgXkrAwt8hUPv7ZiUdnlPUFepgF30Rze6y5IUS8JxfFdPoXYB5eO9kZ4pScJcogLJzdOeLbFAsV+QC9nQYn7BbF5mBfPoHv+663fsbc38puo4+y4saRt6CfrSOKlg+UhqpWJKxFKiehV2T7V6QkmuIel6yuwPMOAbfVk3dPm0D2lsF5s1QvJyXy/lKT+c1o93+8bWWboffmf2tQ5F0/FKXC0/VG7540MCZPymKof9XC9loVCKeCcvBWQV6JzPuOQDq2LibJfcZFfd4ALbUaqphTpMz21WzzpZi2XoZsTdi5BXUic1ioI7uAN2QXBYdNV1iS76ecsDXduJrcPnPdBQlFwl3n/nx0TE6VkNsC9rt7XzWp55F8yZfm5SHmxt66LT64hwYcaeMo3Lg35l2m+YUqRiz4U8SkCC+p9ClIvUjSmt0zpUe9UPd03xynMJ8xQM4iqZur4KMgWgksnBnG57fuAfvjTuV1gmXawdMMRuC1XyyurDE7jsQVrl1mWokGAhYC2xA/fdFFNQOvf9xIS6QaHKFFPKubVoLdUXWDx0SlB/puEc9Z09T9SOMNHg0oCchf6Vjk6PicihnkHsFkVyrqveFJyJHHBJ7U23oc+nQaPWQPnqJjzBLbQ+xhRJbLvJc1z3RuZqUFkdCsU5DGJuBxO2/6nP1mEXaetpGLwNVTtwooYeDjD15UFXdzerJKnJbJ8oS7wFVchuyLmqVzwOsCLr+fQCB1Z4ajR5vmFOElbmRZ2vn0v5F2NQQZmkmGszoW8sF4TRSzKiyyviM3aAkohRG1M4Udkz8yiSIB1z4PI3gmUy64lP9XALFWd4TRNzWHVnE1D0swEVJZA72zevZXulx50um7o4UUK9ojrT80wcRznrqfXUwMLSWIf4ZS3vdoOQy0QYUldWgDyHxmfYvxSLiAGPlyDSSHpmTjQ+Hhoic/V9nLC90U3ft8FksJmthYpWvfYg2F/LI6USPnwIYRXtHdTYDailvua5ygKCzGJQuSqVpNxmf+2uZ3XxerUH1o1dnu8fCDtsw/bUCyJxP553ESitGjJPY1lMvcx6N2WWd8w8xxJnzdnt3OIdmPqyJQgUB8bOB6HFk4dxiWt7Y0rPhY0xKz2mcyrYZpvdtr8k9vYTCmSsaSFplK6FeiCJRnQtjDanTjfKgIt7IXYI7Bhueg/6LrGUMQ9TnQ98A9VvJtGK1H5BSmyICKJhWxNpniKNR1Jc+y5x11ibLj2+4HQb5JKWzxE8KeSB0Oe1e6unWVJkmYpFuhnDXZ38KW2gfcOkURkHpPooXtE0kEbO5hVDYNCWs3R5gJbo2sVCarKLTgtQlqs1mBbplvA+++H9h/4kzT6tGRpa9FHTQTXvCf8XSdBsaGFH3HW1xthiQeydczUZ7KZLZcOICyrvOqu7smMnZEIT9TO9WashH2yw40bYpkDTG2+mulYirBieAkKB5xm6/0rWuXgm0he9eCSLYWsxOBpEwT9rdIlFEj6ATynsoIQDTPah33ualj7YARyL8Ua0QV18pAKL+z/F9PmvCQEjZe1AgSU0QEY4Mqcd9PVrwNKwVZIKuLqDuEx7aImz1zMtm5nmMjO/s+lEBxx0MCvjXGYjJ2Rf+t5gzYhcHtbN9O2ZDA6gbtlnsx2K3y8oAF+uuYZRlpj6rbxlBiH7NGha1nw6kRWsPLtWhn1qIKYBE2JjqnTRp6cb9rKR5NJ7YnNKnSDvAIy52hcaf6URVUIsTB+y4CMhjV2qMURnUh6PicCVaRzNeLD8HgL8YOCNIxZ9NR8MyuEKUREbChk3sDOlJcWMUsJC0UfRGNuPjI3K5rU8FWwi9lFZ9biMltgEWlJKko/ecqHfW7APTj3rGvvfVj4Y5eCuPEuShxPLaEnKS8ufaL2J64bkrMCTAy3skWxSJ8s/daGtrCtHTm83UZazmmCctBTMPMeZ1TFb8GCBIUd+PkoIHjJllnNZLqKtvB2MUuLs65meID2zEsdsUu4XQ8DGC8+mPp7oh3epLix/fgErn7w1imwzjtOx08fToEHxUMBNl6yTPm57hzD10j4o7KZgItr3TnfU6ahNICK3SBDAfVzgWpkcyQ+ZhjixnLmxx6If3sOu5JxBsqvFmF7cJClNo7AGGIPQm4eFttmDBxxcS1LwYE/8h+w3Jd17n96rD935pyds/5tM78zu4SnczLJsg1WTfsCvke/QhytICH6rsfDxE12tYX+W3CelXMBzmRlK+C0XesrRyy46+6AGSD+kFJ+XKZQcy9NOHgsRhNLckW328I32ZP7hhJPgXr9blPhwrh1+bCJ3CliOzDHWwn2KsvNiLRDGlkuQVW0ADPjAUuJ6ISV//ksjEpqekRIi/PzOVUSvN6pIRWH55UQzeIpYGY1utPeYQXWjc+RWxFwRzQQQmZu7lnxrk2ngDFJgM7X/obovvfQ+z61cjlpZ8VAatukyEf27unQ427SEuSYbaPLpSO1ynG9Xaftgqry9lZlORv+b3+eE24EP/VxqVcYrncwtEbCpA5RQOsa9i7xiwCRA1aICquf7tNi9w3qhWLYVMT60TBe+9LAydJCMycQMta334Da1GFPxqIf/l404jCW4m7TT14C1iXXNidNn3JfouKoXI9xtHomxIducWKmAVsv/P7vgzOE6Joc8OLmwghE5aJEYFT6EnqsUpTGF6vbHv2o5tGz6NcfK1d5D3g4XQv5wPmPB3Sz5//BMTxxFO2P22Kg7nnfhRbWNrv8kkrIXIgaY6U9MOXk+QdA+UEIUsgGym25s55D5SSTsK4+vJLafD6uvTG5mP3qgw/3/ef6X7j/yUuJSw++/Zk4CdpVuMepnUIX/vIay7b0yN1lCNPGTlwCjwqJ07J3+xqWLTT3+vt28hfrvvZPlB68JvuWS4MwDeSHgbx+DWrUpIv7xW2Izkp3VwGJna7BeBr7ywCTEvjq4wGAmBIdebVmnX/r/AmhRBrGLEVlJkVJTsM3hpAHsqMTOYcPnSgTbs0dupk+ce4JdeveHz8XJ5PouGhu7ISoZ3Z8T5Zi71ivXWZtgWzL00Jal6s4I8LrUWUVLdqpJOmYIo0n6dMTDtE3QkEdaqpinDYkERlPOqJoYRDuXbPX7CXoOUT4H6zZgQqV9/JPSP/gmQJjwajtTMGOQd69onAY6Gs3Pia521DIVANQpHIQhofcwqdjczBSJM2HkFHhF0NFdorQprukpgQl+jUcdvw4om8Gk+L1KRxF/tKgrWvnhCyDp2sMLwtfRzYCTLqmF2i+qOpfhOqHNj2TSjc4ciB2wmSu2dg/4too5Ees/KW8pZ4BAYe8wiuAMlDs/WoRPfzzTK0dGhl5xnRA7OVdgBpO2QNXQsP77fcZBnA2/IYmr34lGk6lRXiKzJqenffFsn0ViEARnK7lGKD9jpnK3LbgJiW7BM22Wc/xUYWQ/h/onVRkaGghhQQdM4jVH6pEAaJmePn0rsYYUjZkpbAiASLWFKqPE0mlXhzyqBRA2w8jr3lBZVB1cSMUfvlFcZ+36l5CPH9AiLoj3whhEgv6OMNPyUgeLStdGFfC3Lh+YE7d+x1EyTVh5HyLY1p59j0EhJgtz4FJ7Tf42HHZgNNo6jnbiCS4YXc1zPkQOCmVIqyGYpDatiucDV4wKmcRIpOTwZA/Ec6Cn95tQMR9h318KWLxrg0a3hOJl3FuudZPpphlmnxUsTtiyjI4aeRZH7UhmMFQnM50p47iRszAO1a1S0s2xLD7clEk2CHLgyil0TFyixdbx1vkbHLllzigoofcKb7lxVyxRECwI/WEFA00dBZdo2o0mkyNJwNLhukMX0bzYZ4IpklkEJHE5BnGdBrTMrUJFZP/y3mzJ9dPMiqmE0uDMs7uyT3fNwkOT8eSUIu9dYXZorLxy9kX65LGsPGMi+bYgeXFaLhDLKoVAzF7pytIy/3cswQFAsGIX05aWEqtYq3/qoSGsXSQ4gKdWfJLp2DNKWS3RmjGiT8GBOzevWwv3mWdZBtO9P3Opl1Cd5Ga0pO8ZLeTRVoTPzR9t0IYKykPyCNiJf05MNa0UBkqTQS29a9OauhQgx5JOFOxUdfuJxTqsbyqqN5KYiS+VwJSty8lUlIU4MtApGfXF4YnX4Jl0TBrEVEujUhitUK+hzuiusJepyxVf6EXxyO+NrHEgQi/GAMuAC210/XqJYVx31uggJaRmlYbW3kQMNl/ewhmLAczI9hgS+R4TgMmy1+ZjzDpBoJsRVeuqZEpih2tiMqS5R2RGXhiFJiiL0qF53iqQtgO8fDyBQ2v54wChBrVIUT4EWo38TEgJhjHe1Y2CLVuoyjrXxM7nHlPUfr4fT4CTuxyQSGK+sQaqF3ZR1KCaoob/2NVFoxOliISdRpe6mFQIDHG+NEMNmdIcIiGhmnyNQTUohkSIObUpedxrO5hZOBErL4lrynLr3NoX5raXgq+JtH4n5meNg73r5kkWLi9V/p/BRLZiWMdcCRmGsUofXjXqHKuFm9bZ99zyWbwPu6anqUFRIbKfo9Z1Ba1F16pRWu5fLy7bWgkpSfXYlSLGtr704HD0AL/qH5dimJP5N/r/C/LaLTcFdjmsgfLS8qfnvYRH6NK5FiN0iFIXWOrI1wwWaNVn5GhEjsRhq6GnVz69pkPHcoYTZbSVeNrqmI4lRluNp+13TMdK190NjWZ458welzmMdGLlIEYRaTlkNOgQF3pflDG0cnVQFbUEXSOHsiWznyn7ombKm96miqkFRL7k4YDJ6Nr+66Ejljaz95Wr0X12bYQVoolaHIdr4FPjTLVgymfKyXS9TxX2upiE9PpQLZ2whlVPN1nj0Jvl7fBMtUEXW2fvU5JJjjmX/rU07dHhjqRcuXo2HYZuv6zXsOoJvRuBCh12yOGoOngS73uKHWuXTK6zRkSucqrP8IlY/IRdWZqaq5VXR4IHpYPVE6wGvqqB35vd/8IeceHWNGpguCdJsWRqYrz5/Lz6klYubJ8X7qvU6iejvFzkU+vd3Uj7GEM5kt0ORRtc8n2/O5l93x8m22Bvb6cBP68/eexY4GgWS9C98Ak54NLww3W0JMKWDX3BFP4gypsOe2JU+nQHzZlgFBEj3aMpa0GnI9fpZNxyjr2c6iKGF3TSw6TRcNsXeDr8/B0J99AC1SnsnKnON6VnooFbI1kDlqAiX8cXo3Jt05nFdHfbEqtLeOebi4M2mHj5TSybo9mtF5WTa3g43Iw9bbn1spk4nGrexcniFaw89fxaI4Y2Oy4e8QdfMsJR8HA5OwLdy75OsWOqOpCBKGztCl8buLuRrnndrgvbRBk+2hvqXW4OqNpBp3r+YLcYTM1ikTfDw1TC7FCcLPcka0jA8gmuBfC8NFkRFLh5LV0/lRlkj0HNZmTwGG6lgpmKJ7AbJCntUlZcTApHyCVTh0txBWXNXFtgdl+zZDF8i4ajHhkE1TAvFanHFLHSgIcRymBsvcFaRGkn6DYhZdsDXV7P9Q1oHoJqJsdO49zh6fXb2S0l8YbbRe3UkSk06xEGNhKOSp3RhoC/QuZxNstq/C7WabBbzexUPWGGkS/irKGLUJqI4DGDVYO0oHSujoNNTh3C+1mT6kv6msPLzLUx979QY49EzVRo3iBb12E/FUKmv92BkyMjJhJhjrfR0WsM8rCWaKufk5JSXuqwpbZj6RtU6iAQboIUjMzBmbbrYIa8vrkzS5pb6FOXy94o6iMY2DfczIgjcOQRA/0I30tUpzlgeKE2UVWcj+ac5FF9kj+T6dWaxgd+m2d6KUlrB8LkJaHyC76ahn/1RvXWoshPvutu/zSR+prvOiIsWbHC/VrTnGjGwqBqtwV5DjMmLK3Jzmhl2ZCJVn50/o5YIyVwxv4fGSUC4Y08+EMEiRVgRwq80gJabIAQkwL31YCgKRCOAiBhAMgpwD+iwEYbIE8O4DIDMO1AHA3gBzEw1BoQEYBeyYNbOKDOAf6WCDaWwE3nQFiIB5+1AUprgEDkgYLon+iajQGAAAAGAAIABCnDDZYWxo3VyOTvY0N0kLaGMaz1pfuz4+vp+Pv833j82n/9aI8cvS9d1i1fd/HssoHj6Vle24/67//TSHqrxwd2d2w7rroa/Y3Hy5wEucO4ve9avfc//7jWYYY6H7AiKX7BHRnwCo9knhscUBv/MEBWfGJyNMAXQoPGMyMMVM5vgmeh+B9KiIEIojAvAunQmiQQJyitIAsNqIBs2HtRREbn0iAqDkoviB0r0BviyMrLFhtwNNnjgF7pgMtxB/rCNbjzcsINrJOuOM8m6D8uZICuJIKh0pSqxkPSE5XxHvSHamIPPVItwfSQ4MbzrNGByrAhfFENPFu5Ujm/o/ylWvnGxMgDv6w43Ch+WLmzmPhPRAu0wSV8IMvxGvztqdBSowuLHP+T5ZuS8TvdM3WI8GYhD3iHe7KJ+x7V9XCumirj8AWc6jlj4oWdGiZj6IW9Ggpj+IWlGj5j9AWO6jqjyQWH6j4jwwWUGmJj/IWZGjpj5oWTGjFjwIWHGhVjxoWDGgVj5IWJGipj8IW7Gi2jxAWGmjRjy0WGmjJjw0UvQ1PM8NgMQxj881gwYzj82lgJQwz8yRiVciT86RirMgnd4bCjMjmdwhmtAhaMx2kPww7d+TCZMlPN0XCNmjEMwzAMoyYPixZH4pDXNQrq5M5C7lQ2La2PmYU9kVlhqmJfZx7WqvdF5ZIrXHEKUmqxBn0Il8PUEWOynvfz4CLgIDnO+aKforObJ0s4RePsvbg0bC4ZAfhlHkowbPtyW1p8uLaHQHFLhrgEEOk0aYxjN9AF4/ppzqR98oNs4A5MTkEVRcLIuGVX33LZxAy/Iqo6qHJ4W6gDVrjp1kG9jAy0td6W0w+PSVc5+JhIBOLxW/v1udl8Zfir3YIy4fNN7VLad55P1X5h0FFigrJWxEl2bjKGTk7oX92MpjQifg8w3nlXXYyycEojxqSe8kYyEM71tuh7669oZGK3y5HM2h48nSvLonIiFeXB3hzvTdziwBWgtrn4ymSEsFs83Dj1g/V+WY5BrngfZxjA2pgpktTGwvLDzGbqtCNIGZF3GByxSIAcCqJzTybxkM3mSZPQYiT9I9NAyuVrZNybpZmOCynHpos8PaTQIfLCI/YO6NBPuepfLZdw53loJtYmBWHv6Js+GUnS5xe4e/orxOhfj/UcCQvSiEJ7PJYNnRe+u9o3BJ/mRkQjD5rjZQqZkhKoc0l8VnyQ4FpByfzM2me27YsfE/Xflw25zXGUWWAZ/V6ShjeG8Yza+MDCW2HmIN2nGpdki7/nKl57FfGGbjK559T6+H0L+oAnls+dy4I/+iTg4zqYpiH789wtcGp+3dlYGbSLkBXUIbHRKLRCoXoeQvPmRfEqegJYgoV4gT2tJ5+1WTYv+u8hh7mm1OGrLobZ3rkpaVc1bMrUek4pF6oRKvBQpCyE4+Su9RSJmMJPD6kqpAzBEYn2AYy7/S5cCaTlDe+E55wGcKCe73vB+XsvYjghnsTqevhMgYGW2tfQE0vUPxQC35S83RSuqPWEpNOndXNXFaQ7TER4cm4DEa8xkEReBKew78SkQxSpFhLDLyOegCzIjAORdWkxp1vjvfwLEGxqvTEujB9jyhx54WKjdPqXiGGOkdcRLByJfMO4Qdrjbgf8zSBdc0YBOmdyVYj3lPuJ54ehDtOXfwnwFQuywtxqnsw2SFz6gGZD7m1UyEVrxgwTcd4OhKK8YdiG7Ud8YBKZGBNGekODAHAVoST9UkoJ5hztexCWctjpv4Bul5lE8EgLmuJOsNGX4fQloodEoy5ZJPi4KJ3MbjwIataTTjFzsEINVGlCr/ukYxBI70kQ2zmbYlizNeSpmDDs8axAcsdj4ImXzitYRInJmi4yqghaXvawblBGFtGZp2lz147NkAhf+vv+rW9KkOgM2sdQryAZPLKt0Xeyc9exPANp+utmQSoTIJC++exZm1pYV6FOz4hnXNWU/S5hbV9GyTMRCTSE2kwS009NsnjDyNEnzPqK4nSHYRiGZQ33SJtJQYzD9HXvEN7oHdzaReskm6Mxl8dBtDllTz9hIp9T0ggLJD56hrDntc/sNeuNgPsO4eeDKialdIVD1QTOTgPafGi585yKbsOyuvTWn06/js+0KcbF49lwSiRMSTaHyxFwOQ91181tLOO4nmTpPUCaAp3Sq/hxN5fOE8bKCGfsadxdm5O4Wu8tbwlbniHbXlTFrh4k+t5y2/YRLgmcllyuNzKEXsGYRfbpeK2KzrSOOTin0HO/KYTbQNwT+FgYlYrQfUifHTPQR6lvI89DeZc5cmVlgBamcgDyq0VyM1sGx9FtGC0L+GybxinUAjyr3Wr3Fh3/2dCxEX10flwZ74ikOH1Kl2TRz5lkCUeBI/kF4QnOmp5zwO4HFRe+NWj9aHuiiriDiHrXUBnjLTxejt3k7ICJ1AJAREMRIa82PBbNjmwMUcaHiIaQS2Aac7fiJ0P33pKqrQN3WMCI+slVimc0AYcCV7cCnUasYont0IsOmBV8M0yQ0NtZuYNRPEVXSqnOrIeIg0EC0e+rwGIroEmcbKw/swHzZ9sBYdgr0rFJ52xerc51RW23Y/CMeRND29GCFACQFk0rHal86j6hZjBnJ+dcCNZaRaD21/dIy/RE9UGnEDcqGkhs8odfFfjcKFCrsgP7SPNRP8JcNv56Knea2+DWBTzNqsXDO956tnXidBXYA7UzrksQ6JKEKSu3Xenng2mePNYzu7ww7j+mM1niEJ/ckBgnrhOXLpDxySc9IcXT4cZWcfKb3TQnFvMLXpfJalGHntNcXCr/g8IYxRBefU7pq0uZYQCh4ZIrNN6G4JxkI3QotOChzUXahGPaAoVRqzmSjiKkztebqa5NgYoTuSsjfTby20QyHvdve5XCNG8JRjG9WyWsEhB0yhqWCsEE9peQU0cKQud/cCekwq2GtkpI5bY8My0qtV4aKeL2VKM3RPxsO6pAdPmR774lPB3tWmo3U33MFNZq16Oyz0G5gWz6qqS1+K/8CfJpiY9nx04GC0gDpURJqmUCkTFwHDZ+yd5Pjw0gQQQYYDVhzW7us8zzaJ9FRVQnvwR3hHrmKQ+L3QX7Dd7WwSxN0BIfKfgtdIHHXvEwkfVkeOrX79j4dvpJRWZ+t4uxjTbpYQM8XF4f/NJk0mNENPFfW9pYMEb1vTqjh8YV7RQ/SfG7BTqD/YpMVV6uF3SQjJFI2wTiDeXSoLyGoD10gvXLqkGEflvZZ+iz0Rk47hztVx6qrIrWoKN6JMmHzJm1ZaMx/adTm2RC1tmhN8ooADghOdrerE9BWmHamKWpM/ENPoCrJvsAbKxn/inhg0qUIJyf0TmitpvVR4ByoX2VfavQpHRxef/Mr9Ya1AN2s06rqsEwDMOYyM4xERm0jJneQ8KhWqOywM19T/bVCiS0bmqzeesKD2FbtGDDSxTzlXyHzjsA7qIGuJ1wzHLOzUK78KMXmjHJQq3iLFSVhFJrLtzI26Pr75UnFZQ9J7BLdgRn7qxQfeCBeI8KRDIdruT6suGI4kKJnvGArUv0exP5lUuIACv5fh/rCoX3q65a5Ixxv4UiBwfkME+yR4V4+HcMGIWO2LIyJ5qe+QJ56AVmsiExFQ8Mf9IPToOHmG7fOCFW8C0Hj45hxYBVrbGX/Go1+qDJF+BOQY954ZRuqpJGrI1B8Tqo4pYa3ZfdnXhKiwXN7npIloXzQbOfru4K7RHn0hf3oyBZYddzJEtX5OK/ybeLon3GAS12HxaR4hbiUohyOA4xVBkBn0z1+k0UPoba5KCpVfaYKjUqZ+61hXEJsNilimSuW/pkV8ZP9F6wHJgcYMKPdg/3CHjRrFE9I2pgyzZXTgbupKfCPDKn7TvboJDXxPTjdYr7O3KHqzG6dIFXTCqajy4VkRBCL8DqADrxMhU1ULIrnzpUWSC8E16NtUQSP+2yV8huikllesAZtxCGZnAF44DZAm5sh9snL1DKXjn5QOrfUCo4Aw6AWw5jrszQcPkxgGiRW796WOtSgRkC9ygvVqVmKGw0EZaf6Ti9LeEmpirvsWOTWvhmbkRXuQecMcbkZiWhRV035AG82DmNBWAWx+83ZfQM4D91vqxA5ON9sIRlIh+qwS08mjf9SGq3ISu/04He7yx07fpsJ0i4yKr9uVibfmndBVX8GEFiZccY1FkmA9qTQOyTe1USLzO8AIR+ZWwTbCj9U3tEoFgxdm8pcJwZWr5bp+st7OvaBCEQSUQYQ8ICvc7G6upfZlUGgJA/uCgJfSbtGupkGK1C3aR/CS/dMYlkK7znCUl77NGhIau5HcTb1mKKW2HlfuwuA9TyQHwE86j+hLrbs3cYGcmojXCsOeD3hQ+hcRAlhQQrM5tGmx8Oij21SxU1K5Qr6F/syK7x8nmSm9JpM78PwZkDZ8YNcEvwPQcO5zRcSTVr8meemMbtDFK1/ohOC9+Eb0a7l28VtPeYqMbWwGZNxIEVGnIySoQnRKdgI430pKHaygw+UnunrD3srTAHsbLktnvgKxtlz2lI05thELo86N+lU1J14+8HT5ore+SFd5HzY0Pj81vJmoIkICS2kvlYD9uNd7Btiq+OW36NO233eK3aSVXWdXmvsu6vduQENL4bckiK/K4fuBtEioRxNDg+gK6FswIa/3N+W7vdMLXgSHxvulNQHoy/g3TqxOzomfpLNJQ3b/Por5cnzY6HpjeMIv2Qmg4mz9pjI4K9U//ipWLIJ6g7CaoBmOIu1yrawdNUO4BhGIaRwvnWO/1jpo3cAFgYqzhZqI8yMRQV6V3NBwzG0VvTfbEbKKWO/OaOKLZ95PjSwcg70SS7lV9Jg03Ysn2k0rEU8oShxYuoUg4wy9gu6Moj3/We1XIKGUoxB1NOkWYhA+foBongoeRJOOB8Mkn71cvvXbketbqd46XDGOWqaYD9pzUR1VmSHs7WszuMUn2Z3zr689akWneUOIktXo92KcntFEEYv5fRANi/H7UYaCUJlr9haJkEDZqQAbvcsIwtdbNThlePULMZnJr5cFVhd3p7MeBzdizXWcnAbs+AEmxBKgVrZNH3RZCMK9DU3zJLQU1f89M4jub1oOPQQKtsPJyI6pnYRNOfK1MapY0uybj90CTgiV7bLUGuSUJIDEOCZq6J9yKWrTS9tBmyTSr0lXh+TrlpZHzlO1CvkFMpKavjH1R/ke4tvllmJdFY9D6l0/Z2VR6EwBcIpPySfnUWDtB8OdjiMBHyXsCzapbCs092mBdb0+VspSIGdTckI4TPgMVkIZkzLZZif4BLhp2vhW7j6s7Lgo2BEq0p77tNZfmB4jrQ5c3lTkU8wQ5XcPVxQf1TlNjtG8PT2HMeVqWY4F9jIzf+YrYvIg3yxIrdzbNuwuiwj3wbCzwYCtg4WT1SYJ2+t/ltvjnmKIowewVwc05NeCJbiVG603XTUdsT8wZ5jvMZn/IY5iwQCHUoVT8w5wQyaUappfeZ8HWlWQirML2K9LoXCCUnhvOh6Zc34jeeS4AZn7Cf/PRs28Dn2m/waonMXUgSyAS3FgyxN5DwDpqI0muRkBJapWP7xKLp+LH6V7uYvuHKYzAsWGpjOoibLBIRjQ64NgDxuNIldQs97gRpBsFNfdZwf4odDlwIOtJe38ycCUxwdY4SI3WUkv8copfrTqGj5Me2QJl0rIpv045Mt1MnjyOB5kRAe2ioHBtl/qyU4DdbqytJFVlCWFHYv3Jwhq0Ddm6VBHfAFDQbGzmc3rNxmHhtwI20i/VWC2rpqMyNXTxJSGLA9xo14lYU2Qs3y8lSqYIw1cEvCEHGUlHEdXCA5NVkkV2YAhKMpute33v69ZoocohiUewgZ8HX3qOU2+aBqJgDT6kWBTZ26euEh1xOoVdXCbNY9nIRYb5v6X22btCkCUE82Y/RNIlFlqvcYK+NxOJNR9WoTjweUp4gNdMrJD4ZbAehvwewmiiGOTEYxV7O57ullvMvIo9dyOmkjJztXSp5kFv/18TT4tHl+r3Wx8/VHmsyd/mzVDcSA25TgadDqDIHsvDpFbiftb7p1B7qi/TYgU7U4eWzP9ocyzJTiO/dW0GDubzYdbinYp8qr4fjBVA2ggDTNESlKxPT85N3i5e9IMnHiXISEW0YhmFYlP1xEdngra4OapAvcl44aSHtUA+M/epHVapGPX9eijHPxaX5DVwN1UjracdMiM+dwBF/NE42J4tzoJwK5fmyQ7YzDXVbeBF0wj3IlXTuQR2hJW7dEKyHbkNb4vuaxySmQ0b0DBjpeLWs41c9ARO+dvKkB1Ivth1ZJsegsIVgzSe8qyCSYSLIwzKVb9E/PG6KOmu6MtQgIpgF2hkd8Jn1hLNrSW5e5Fdmx22PjHG2BwbFdSzHBdyg9kYLdOTlqaG9LtowxGeWbqODTuIm7Wl7cLjbgkIBxJhO2J0FtsZo2DxSYsf0Em9O3+Hcq8rRd62USSY87hMJ5Uamk+7DCCpIDlOeL7v2nqL/bthltiKXxM7JkNMF6hvwRkLvAwNt5C9TbMYeoLGZlv4SrIltwaxBSE6CaD0Vh1ytpwR+2Aw5XZp9jyTSxNTnE2pSGH96pLGCciYLyabpoacO7Fcsx8OcJWGv10C5gMvaqStpqeSESvSNMz2YDAj9/QDaNdIA+ZKwIc5QthbyYUrTIw1L1VAiZO2yC2HCd18J9eHbJx1kXrPevZD6O1OslZCJwyDBEfTY+DEvOm7NasQ0ZNbG6LCxQKmPym47pgssr/IcJ4VIB6see7e5haeno/4meZhhsgIcbEWKKTlMLlGOOt50Nz1+UKzvjtnkFR3zN3NN30nmHa+oG3iQCX9eilHqsjdde+j+phKaq5s1j0mM7UJc7D55Dm+UHLJl4DPrcSIbtwVnSJvDDRXEIY3RsLl2quqoGXuAPJnTbE9u5C+TBum5STQZy7KRwvl7x8OcxSt78hk8nbxcZl8DGAeZ1yylYe1nTziKANZ9gbhIVoCDcE9/xhG82ctSSn7d98lzuDYKqh6UnzOVZVSIFODp5KWnK4hHN6ZGbzfXnobZmBo9CEI18XVigfwm1XXoi1d/0VKW4/iHSL9ef6fmXcac1ppg6jvzeIwSj0gOKnilUaIrDES1A8Wrv4Bjh3SNu6BoVYsDWYTnrMGVjJ3fTziQlNAjmrjk9ByenT8SUJnKaOtnRj2HZys4J1uJB0NsVJFTLBAZsfDHnNaaS8Oq1iUP77p4PcktVff69R7hHDNr83efz52jnyRBtB5Qpd85U18eYFMji3k1ORb96gxXx/M+5LqV9FIusUaJrhzkkfVJm4T8WoHl4M9OUxIEJO3KInEHaSPKDVpcmL2rzMKELtxiFTOwHOv3bOWsTrKTsDnqRaPs+/hV0tcFRauGlGmGCnzNIQmK8Pez5d8V0AQ5H6F8HDRo6DFI5AhNtT/tOjQtIC3f4DxoITIC4hPxVxbSAPtV+A09ElXggaSEfritt7dlxh6cNlH7qDv63dc8rxBt1MS19EEciUEMwzCM5B6v4ytIsii7Htp8Kv1EVoZRWgijaKskH5Kil+rTrundZz9V4AKX7rIhpLiOM6CMM8MBPyV4PSHkif3Z3qF4QWinystitMz7SUWzQ0dcMBygZ5UEstrB8BPxrZpxEt6m08Otks6cwHmt5nFl+FyWcU0fOfsLHB+sf+FizWskqJpmzG/cr6QqKTqxloj8EpY0Ebbt4JRdNZ+fvbk6xiFybYMrzcB5Z9SzlDNPZ/7wZgTWaON+c0+h6qxSWBJau33+e0dIPi74CWUZypDgub79RxPK++yZKqsiPDBVY7JVfduH1SoIoWZzVfnfR/7aH4XOYHa1yj3IooTCCdotFCWPNluNXT34nP8hMgI7xbs6YddIJr+fzNrZS0NSGFIo2GIEppLfkM9s0YpRfp/mVmw8DBfEsRG0FzBpegmI/rdvZBx6/SI9YadAILxKEb/WFYy3zkt9q1D9WuDUYeC4/GLS41g6cbyFmVCPqygAhPlNLGFsbNEzUpVvH6SHeic9RzC65tpKM3ysdc4LLYhvByaVruXttBlQfiv1tNr+oxMNGrAMgGyav+ZX4/UkUY/pp3qct0OiERL3Cbjd3KVxueg/Gqf7ZPD0ouTcE2JZZTOD079t1fMU5FdFcVVILED+5Bm/bQC8Ue6mY2eIf8ZHMHSDLQiwbi5LXu8tutimlaPlX/wkHN2kDRqXx8TncteHtTUJw7Z7uwc/oalNwdDTEAYFL54DrKzy6Gwu8ywil2yjFggMVZZeJdLqcPCbP3mruK+TLFkmbmQEmSihtlluzqnowbbcPEg9UrP0IYXdMAWaTwnDak3zE/2OwLtB1eCAlkvaCKLXAqEQALkV9xEkzcO9qSgiL4o+6wqjxPfW22/tWPeqQv1C6A5AhPIcECWtwye0z9uaCuRF9JdQMk0KCTpm13+4e63P5jytKs5aCjTq5Yv73tPoCuLwbRvWAS5gfDFbdFFTrmZgrtWcT+wt34I6+wwHH8hiLVTakHzsT0QLqH2w3HUzmoerIePNySyPudaBs7SgS554cDbO4tfAmGfueOJ5e2Yqz1UuMq+0+sl2jtHHQZJZ0iMbbgC+XGPxSzj7eMvVo7cycIgDB2skx8U2fi/KeNPTIvHjt6rc2ihCrTBg2Jvyf2IGI2o3FTge0K2KBVQc2CsQznesp2H3Y3+BniCa8POiC1bqC+hcduNTSMQBCnjltNDOXOjcfA79haMIoc8X5RnkzWmGUFpcGwn2cStxXAEoT4uGwT2nO1k2FdT12+J3SEHax0ar5Jwn8jOC25JoPqsdkMu05keBQ64ChckMVzTrYt1y+JCQEQij1fmOGRmL9bhD5GioJlgqlpxhXEa8i6vVlLKAP97yVRv+GIZhGEbmsr7gW9O9mCEDIqdQN/ORPkrfWQWmjia0xSWwBFjCeFog+weJ2zIxwgpsOXfHU6ZPBtjQ5g7SOPiVbfeZFpQpcWOUZUJF5RZvZG/I9ec6pAtup7fbUUpJszyGhT7+PtZGJ5tyDy+bBNk0BjegotYJwJ7pxb2zqrYkcAHC/CBvrIQ64N+tDgtGcGCH25B/2TwhtcxBPfzq2Y7qpH5aiXCDzjJ8m+XOm72TbI7whiQgGGocHj/dz4DlJzhyqUr3OHDR2hPFTP5kQO3g/PPMzg+ebuFKUrGyVOmEgXqDrdKdRSP3Sv5mKhGSxW7WV4+Fgua+X3kYF110mf6ruj3msr5g38iq0eLF033WCwMf0eELinIUbQ11YipWYTg9xXqZi0qm9XOgad5potqgOyWemFJzMacl/Krxmm++pe+Gj5sjnjzGhRahMODEL2Dl14yMpFxaUVI8FyNUuKw2MDPS7vpp+9wNwMS79nTi1ycUx/Wsg1TyaAxJOoZcZ0yaTM+sdUUYwsUt9eClLW8V4SoAqwR8LZmZdV/c0GFAEjQLpVfdEvfJnx0KGf9OhabzWaeAPldg7Eg2Oa9KNge7DDn030xkQ+NR5xCNKHvMULgZfcDgjKDftgtmKdFS3Xsmw+hScEI8moCm0/RCpEjz5CNE98F3C60++HiixWgETh1BW9O9GMwu3xPQ3h9A9gURp3j//WKrBpDoHi+p+HB5MdmKmry+v3COsUlNq8ILbmhJXnRAH4gKUSDg2s1l37Lwo0HXwij750JHDYzIV4FwIG31kgncj0TkJQdSUnDuttjn+MdYo0IdGl+DnGB7+euOhUszIzvasa4RNtqnMUEPIPgrRyyO+OTqyxi5P5U/DwD7zVVRRxRKWnVHo7BS6oUJ3SOMHAZiZmt6gQFJdwjsIV9Tst3K+O5iYD8ISJ/sVAZpRMX4xpxX/QKVyjNtJmVJYNVnLKOfYYW2fbMQpnUPKy9jcZo70Ws9FdWfMZLvMehCLRsuU0K/JD0dCmSgd7eYfTiHDIgclT1BufI0SLkGYFikNJvs9YtT0dtHT9+o1W8aI6pvo8bmmTh/+IMJeFYC89ROenir6oiyrpUb+alNt+3WCaKaPmd4MCX3DdrGC2h3yKQ1Knp0kI4i2CB4iaa8nQU3+Dp0iprwO8DIOz815S+DEs//iZ4YZGnfvkViLXlYNMiKnVyzcRwxEuvEGsS+SiS+XydWa9QqDNeZE4+3a6ikZvXbuN1kAMe9ymFYbhFqQ1IDcLOw+CtPESYFZlt3r1V5Fu4P0h1JqirE0SrgxHSzy3UTeb4fTwrkEQx2snN6GkYk/KnL1YZKTLY+3WT4kD7vbRLaqUMFplhgNJLZvTYQ6TAMw3DYLZXj1sxK92rwDhB2spaxSZOP0YV7TH8l/OvwN3cWEoUUH1vvu2IH+JFkJtijm+y/7OxLzKRRA257QUwdKaxqQgse4F6c+XW53W5fFL2ZT6rllYDhomn5X4Hf6hqdNcqcgtuENuGhAFYkkIplP6CZl9mynZ2XFO1RqqFWF1677bazPvHQLKSCj6VgII52LGmKSZEy2nB+sB4dR6wc26V2UX9vTgOwfXhFja8Bictx2lFNSsBkyLIxAVECM5vZAU1URhwUok55tEurQogGvQhEXjBQBjpkVhQ+QYNJzBR0/AXqz++qx7YX1W8FF32n3XfgHI+lBNuzh61VCLvKRbGhFaIBI14oBz1Tl7r2RTm3s+2nbQwA1E/dsofZtCLRFKY+yWyF0tqERcETor+f+1yVmMUEg8m3rj8kX0Lt/j2QvczWmxllyxrFiuRd4wvuPdkxBYGAQ06pU495Zr6HdXmleTYho2neQ1JJwStd35TXI/XjDKPUDs2dOyBYTfPHRD8WP63sNHgU2HGTH1kI5EpswNuNbLi4uZnARBUAAa56TQrJdSljML3lTHLlw8zy4+m36nNghYATY0imiMPhbhNcAWG2DBQCkrEl3jX0h4sQ+sG/NtBwK7Rphr66RM0IvZONyASoiFVUBtAfQMWhlnCpYQpDzEnuBiaoX6zzGhlOiAXHIxTiciATDwg8KRwppBL9shZK1I/XVxzlrH5RFjIlg0GU8SPRh3CkiIgXiBWj1OalfvmVmO0hKKe/TXkOM1jmiKCSsyI0rDoBwv6wfMqc/7oVc8e12e+5aUZ6KCvbVz2KVfaO9EBHZrJBnNa6iuL2tbV+xOMUiEYg6KlaNbN3EOmyBBKr7KAEr9E9359msoJ5gwm/XBghTyH9aW+lr41qeRI4s5Uzx5N03ebGke8so+9HZhENgfI+CTlm9OVYtaYttrQaQCsscXmqbktVcZAC2nadWCx2cN2FG8vOTt4phRN5YQVZt/eb1ApqykPCf5WLSsahpnd/Wl1XrH5yapJNblHJ2KOCM/WRjzlVj+vo6DqpUZmiMR3lvk9nBh7gLBHOKS7Jk1IM3i3Bu7K/Lw9yQlB/eT6uWmp62AWOzBTqUzpffQUqb1m4CoS5Kbr5yfVrJc3LDt4GUvHCLFax7GaI0zy2E9+rxhSsxdBe26Npkhbm8dY1Mv23rYBJzDY806wlkbw6wlS5TL/X2C94HEp4AtslFzTqdSpcuJYqEfwPmeMNLaxjn7klfNj6SPBZm4GGc8KpCpCFT/S+fd18SSdxKwBkljldAitd9f0rGFRWkZ8j76cxM0wvPvLDwyqHVgDPPq/IQ1cEzPkgqtz1+J7NpSHewIl0H9vRxET2FjqtJQBv2QHV2AL8Rgrc+hGoxwYACECrNZDDDUB/shIFDxfw388Kk0CwmLRJyI4J+XPKcGe4M7xlHZKnPe7Y4I37K/OsMFj3z4reaPDwWl4FSx5eI/LrJA3A+D+mdriPfRtJm8v6gA8YELtcz69Y85V5POXw9VkxntjhSfG9vPNHzP0l8ddVBw/JZvqW8sq3yaBpv2xH3t6IdIEJNtlouYc6WVoQjWocRmRBkVlQhInIKG2IDUIRJ/PW3wb+0alaAJBQAxAC8BMFggdIKABroRg5SkvGbvAewgVHZWVs4B/x7wFQ6AqDcsD58XB5snFdDD7FBAt1KTQZ0LIbanIxOSkTiFSqTIXybOum2OqHnBNktqWTZ1RurTTFN39VCWhoX0p84/I/b66LW3/EBKW6dOdlYFPeaOTir6syQSKVPjwJ5Rt7NwWNGEMkgbct9WaoXGo1xYebKgEfOous9zA4dh1mdz2GYUWlLj34z4EOcWtVe+451CusVHr2IJRv7dwUjY8hRYLctnTxG5V3XjXFD/9UCf8uKykoJ6duC8wMlVPEHKy0hQ1MF9AU/xTqul9bVSLzgaWo9UOX0lqQE8lw3dlFWTp7dl3cc1Ldu5WYyKNQfPdXXfrr3U0iNDDUpQ5DhlLqWy5epLZ1396UifxCxdEfqfRqqUmkFOrufalK917cFDfM0Ku6J82Qq0R+cPHualv6sXGdSILq9vunCO3zJPRfFkKL7IUrJstR97WXY+3k31YovaJaoTLiIV5O1qjSqVRF1AerM7CNamr3BvlTcpZjMC/Pkypf3FLaEVHSqVsoTCeUPB7ixdkJlRrXqgFZOOuWBQxioyo8FKtc3dIbHD/Ze7l0qs5Fvtm2ke7snTzBesqPFv16VU+7AIIded5oy3X+v0d5fF/5tWLrSfnoXPtVQc1S2ZzVG2Nr7AuO7kEW2K7cwPLToLo6tz/0LTue/CVhG3PCWozKNSzEmu0FvD0FtXmoerlpwKu2NVhrk2ItSylqBQ5c15J6qKrKXXUu14M1pOTvRv6RwUbX3F4Z5RxeMcbjV/cV14vejngGKeV7kL/HtpyugWcN90TXV6WoHh1pUzz2hIIWKXP7OYwAQ5qI9AJ2uTVcdoSSJtjpxzbA3/8h7kHNxHrYt4OY/2w0cqAgeGpQjujZQCG6csXkuF7FIObovfzgM841MrjOgBsAAICBAJkVphQM2zEJOMtbVhraweuIHWBfB8kAe422LWrAsDGeI0SjZKU7Yp4IndPjBWuWor8tYNK1mp7TkIPkIrBEuGOKjVXRkJvpRtyE3YomCPZ6KQ0H3IEGnLGGJpxnC3kSxcMqsZ8xZmP4OdLtwcc2tuAmzTJWSWyWsG/w9tnZ3A/W9qnGMYRuKDcupznEz3sAOgBwBAAvgFA5A5wAgCeANG7agalFDeKjmuawGdVuJe+PXb+CrpduVsCpKQIfWeC1dDWDwFVske95CEdVTQe7UwehsS5hfaGboKF5ESvNxS4h1vXuDqey5rEKOUaT6c+50UOeN51qe6u942GLx0Z+am5LFfsmfpvc/j8Aqwv77k3Uzi8Ioh72EWJ2rZ8chnpb5epGM/DGrWX6Ou8oyP1xfew0Qs1xMjEKyuZslUe1l+vRaL3vOrof+mCaKb/FVaTxL2e9s9FaP0KW49Lc26+T5Ou0EUs30/2tHV39V/fd2+TJ5nqIsgDeym3gcK8Quh5Z2cTA6ugV7FAYQV2axltL3SQAv/tTDaqyGRw7mdn5tpPsscNGx9537tBeslK77WwCX03qh7ij6pzqILAb/yy3HnujRq+9V4E/DapQ9MblthdlxQ+X5z46eLkkTu6zR5NNNe+ztLfe5CVq8re3torzGlDfm319DBBny6WXO6q78xUCBfqb5563zBOvy3/eIO1fM2TPW+aTF/pIIvTTH3OVa/76En0AE95i/FXsKcAfXg2MuwFKAJCeMc0xaACmfQlszF4Clitw0lBp6s/AwW22gf0K0GSUGnpSlgJ6BHhvqXlh71SXCQzJwbo9UKxkq9jP54BV9lnYVrOvYSRfnHJ9UF1attWI+tOMnsNGp17Ued/C1InZ9QZ2HUDJNe76q8L8Y1ISps+FWvoY35q73DBBNswyj8zG5vECH14DpHxi9E+B4lmE0wsSobMLaphtDXk4+RypPBk1z37V0/MS6XMmt3Q2UXXOVJf45LOjs4kKZu+CXIQil3Q2Wc/yez4jeX5PPp9W94l4efZtyvvJ56911glT7nlL1ief17t5Xjd70uWbN2TmZ2944WwvzOLk88ML88S7+m8vmIUIw5GUidd6BE0xWrSkNUqtiaiOqnggjSHoAshimHRUMSp0JCTRKU6irNFeCIIIwEgF0b8Q2jxOFPek3LPVFWiIYc0zvTAqrakhRAJ6Ug4xug+gj7HHjjRAaTVG1MReCaSAGLYgbtlwV6rI0KPYC9S8f2ULXK38U7ZYxxkQsE7x+GQTruHxahVbGzKwJuG/ihgZ10H5LXG9tmW83byuq2eR8m8PrmEe0n0M2s9GVO435tkAshlS3a4glnnKmIBuZ8WiDbsO4nqP8qfXYIum9//2x2Ro3LBIDZvUdgKtJR6kmleW0RmpC7sznx+/t5fz2UeBuLBpx/YvqYkNQxuwPbBPtetjy8c398h/XzJgzRv5V5j6ovi1X1qnqORDAimD3gexoWX3f47ESDlubb7+Nl5eXZnx9Sr/q2WoH7e5d4fJ1cPFlv4xi8YXryjw8OSGc3l4XK1LT57rVxHLbdkclgPun2ya5mU/7JLl3TrgtP8dal/ks56+ZX20nA72acL4eNn51A2Hd/K1eoaUmFTqg8G5kFft3pc4mTI8rNtbFFZ7aLUYvqFm0WzaUjJkfUVETRHDQnyH1A3gpigYopPB72VdywHVsz7t2Udt6VtnX1+WEcudZIPhsxs5beMuGxHVeQwOVFqRh4UAEUNHVNN52sERWryy4ImFFbnSGraZtkK9S3G50qW7m0LfYrBozexvD1fblJJYDpqRLQ7kRhNawFdIplzE4Bw35egh2ArhP52KLsuZFmsYTjAneYYRIZU/Y53KGdSG6vysCEmok0NHDCugw1DMbWCVS7zr/SxN1GIG0jlvhUOEpUxzHqysb3B+DNEhH3ihq2fH+8brRMIj+xdeYN3+RzUCMWQxSyIHqxMepgazg75/QT4zXFasIPSDyFD9JBKwMGklXzmSqL6LKKjTu4lBwa2Q0cCiI2IY5aEnqUeaw/QgWePm2oQOPXTSOUueZDeolj0EbPEwxoPHsR9/uF8dqyULZYZCHn3qK+eMSzWI70XIyCQ9LlzAcnXfa2k1wWIaJeel9Qc6paykK8gfFZ/DtzfTHoLHldGG/wcyyXerOlHv4II2OKkOKnMSD6LmRiZQ+QOFhTRc5rxT5R50P9lN4a4m19e663uYiKMtxZpVi+kAdeLyDuGQClrNaGOEKGDAXBs/pgiVtNQcTu7w/dYcRvioi1w1XBt1/WmL5qaWVlh4N4Cqk7QRAIsXrGJZowtfDatDG8SFzhorKTcmq3teCjN8QAa3zfH/DXWy1Bwm1+GPtn4Rd0JqEbSTq0i3x/8HcarAvgBvqahX4yiwh9Z6XZgU7ZPEnpxHprk1HBFWCnEKvhOThFqmI1INah7jjUcKfipJJbveglM2pPVHGpigA4tmOXdsnOGYrn/KZYLGzmHWxMVuywx4ydQSzA53rbxbkBpxpC6Wi2tRoKWkkdGMHBKMJvlII2+ts1i2IbbnfNbPGUQBdqGn1bM8+BH55kobOWU4ExCwVdoGDl/wJHLtiaauqLoe9qpopMhno+JZWyl9E5rd3VuU2Tkqjktts2dkXr3L0D8Bl4KpHNpoAGolA2gFGdDIOcA3tAlfg0Ud8fZaE94EZR2TgyNJTWURPGeZoLKjcbGo+FKXhMnO+Y0xAhyWuGhlclp+6pfubh52bbctG1ramQ7GIVf2yMTwrDn+PByqjsVKH0omaeu4QV7j/iMWuoX7qT47v2xc6unhJh9HC6eFlwvHtg3rhguMJNUJ/wGqCRdahp05Naa5H1cunkQb8G/4Essn0VuxIjb3kze6K6BUvBIPKVsR5fIcjqWbhlUiC73BMvgKIwPNl61nHmG1JLemDCkw3b2sf+VbUgppjWFG3lfdJnfIhwaktVO+FlymGazzKL+XdJOgOulwpDoVWFlogMvPgNmjSuJEtSDXTWZoOYZG/ZfwavCR7hbIz2pgkuXfVPyoOODZzX4Lqdbtu10lP7VSJ/i+VvjuWF0ZaKrmt3rk0r+t0/zn9knl8oP+HtRZnvOdUUlSrxnLhK7p/6b7L9cGQt438WlrPv78lvr6V04Bi36eP96/3sy+lZXOMTJ/Dpt6+auWTVu+K3j9SY+rMSjO1c+/Lg9rDnD5Pnz/pTt9sl/he3eZFZ8R1v+NPrzWD5Nr2C9FrE7n+n3fIhTb7r2eFGKv5fD1Z560n/T4me03+9+fZfSnpaqmKuaHdL06v+f/2eXg/075pXbk4r9XE9dTFZreNn8DUJ/NYC6EcjTuccBCfxkg/TcPWoTmauyEcIHb+qEjSBb8GkrUIQZOpbAFtHSg/x4OdGnCip6O9zzu7FI4euAAo3kx7zC2N6F5Bk89+4fJDD5OdyRyl8i129Wq9CPDpjilS4j7CpJFADGHKQ4RCPzEWByFytt9nOsZeFA7n56N9tYxOIgjVT44BILhYeclvMIpTJMjR68KkNXHjbEiuYHkDFFKKY20XhOrx8f3VCYTuUfDJdGiPv2TcnkDXPoIRF0qJFuUQmNwAykyOneUbcqdpAmRh0sJK1RxdroK06lKBWDNZe4gJA0O5PCughPvsZwjJke3e03I0DyREsa0hgRI1Cix3JaGq2twws2a4B0s96BdMJvXhg6lKKOHlRLq1wPlsGYhWiEuxQgIsxzTkD49KCI/cWK3xTvAGhHUxaPwrBxt4Q2n8HBymEqJcVkfpAQDsSNKGHKrF/kAJML+hPYLit8RA5MyB80f3nFk5L0BQcCCrvrXeK5Aqxtrlw16bybaLSBTWFjypyf3//yrayBzyyJ+zFlniYe3TZCgcrhrS6kCZs1dbRMSYQ53Pa5iYLEcYK3hgqE2lTlSLc/YOPL1kRI+9TqMZxukRJ7Qzcx4Sf2HSEA+5F6QH2hw+31Q97hF+OCmCqFM1Fgqr7X0qxy/aOP2/NiD3wv8OzHYVNKj1MxK/XCi+C/8jtnp24lVcxKoyAqgC6ekzwcDuERdZoh0ixZ254/uCOiBCaBhhsjsv/XZJbByGSHy/bfTeeMQwNm1nA3UXnF0DIfq8bq6LjYk+0iZccfZ1f2/ExZKTge9glIPAKrstoFxIE/zNt85Ckt5C5xzoS3xjd175e774mUnPnD4zFQKnqaQDPrA1vH5kcJQYRqFv1aYXRfcgCMc2oKIInbe4eF7e1emHZqUosHsua1BCqR/ghJFAWpeWTPtSJ/BlqL5bsA5JflVAPqxaERLVwb0bcOxHySaZvfEMOtbVEL1DxxnRxc1pV0oTUWjDao7zDH8Hr2kZeGOl3DOAXIHk5XY/rH0hyHgRSEqfrjuEg+N8GqOWgwdrnp9r9nNDO+sgoxdlI64ISLAp/VZGkgt6izeVXS+v6CHtNOtTAke9MpbComleqqKAj7Km5Kr3ocqTO/iOARVtFKRit89XkyjWxNZdDSCOsnQ04j0awEwvoHB4CB3GV8R21ySR9sn809G3ciVn1gI2nyrjfnt8dwMmX9HKKUk7ghUacz46fDTzimAkYqD6DmXtp3vKK9pOMOcXUEcVMIvDw4+kBtfHxVejP06GVowLT4Qlabk1CHjKbgeQ7Ovwy7kddxiDp4Vrgup7btP2IjhPhocOWSkRbAAdoiGVrafCBPTbg62H+8OLQiAYpAWzFmvBUK+Q2qHYCY/QbO9Xf8cmCAPRNxN9vxO35JCQujOj46EQldI8teO9bq5LkK9WtuNQRd9yTcpPjEUTP8nU+Xc67RVtXDdmzX4qIshTtHUhbqpMhkFFUhE98FFWC8tWMhQYgtD3lkr+iIULggL7UXVzxnUMdTf/4HguLVw9GL/M8WaYPb3PXF63QXyifSiQFmRkbbcgZvU7jWYtVHaCmV6o+7C5zf2XihibjKAox+5DcId6+rG0nkOjc9QbE4wMmFBkSVRIBvT3MiMBVZxn3PTjq0bQweXRhnzgEXA6PYnq+dOc0cYYPQ5sfT9pfW+bJ12OWgXzX19eaL/SPARKEuXneS5UU0St0iH5bDMq8GxawYfYS8jWvCGHwb7wrLu/06pnGkoF/YyWYWMdnWOxtp1p+bw4ZCtaIA0tAHD7m4rHPYDO3lQIT5IS6S0FwivxVK2w0uiRRyLxIT09gfpOzYKdNelC22hxdKCprj0n4150VhaxafomwZei7eXcziad2ghW+tQWx5BOsKD2ZOmjxNBBjklfe6DXUwUZRURB93BldkWYrCC2hoOiOTHZWiNLVuL9s9uoUAhqD0aHoddezx95eoaFKCFvufK5PHwerH39Z3YkaLjSIOge1hMBM4pnCmQT6+q9vvyfb2IiMtDw8KxbdM0WdT+BOJmOBiVeFPyWjzAlwllAvoEZRI+r+L9z4pMlBQhUOznbA3xoGRiWGImqZFTpNOrj8JkKvGdf/foKdxZGms5QfUMnV5V0cr4fcRjIrCb/AG4FbwhcQKRiQj8E/4noakafh/MnN1N5U0vL3dvYI1b7f2S3Ba4/zO1viS3lZusUaVOdLjMyj+LdGZpTKVGZDIycRvD95VR2cm/w6bVb0BcNBPIyRmJCaZjN+mmqA+NigH38/bSDGKzDDzaX6NCGAQnCuoNvTL4NDqFX0pinZfju56XwOv0sAEfytyI1l2Ad0lgRTAy9WJxlQRlUB/K/jyPRcUa/Hg6HbdpKheW8FeL7b7zWiuJPz+Xl7vRkDLFA9RS/fy4LkYMt846kVAOLsmqtiuJ8OCr0cNW9W4KHNLDqWgslIN3ozHYA6wxV8cZHs8jnrtP5vZ1U/REGHjP3CTbWLrH0dcaDwXbGMTgCmO6Z8yNMoagdZCbDSO7KR42GyWweJOiAdORNHyLgsDiXsfbk8IIHaVeQdT9cj1QgodoG+79z49Be84F86Ksz/8i71g31Fa5HJSU08zLC+OH52caQdBOyn8O2fD8EGxbhmBbg9oOG12jNRHZxn0ZiQgeMomthoZ17lxb20snTNkm7Yb8Apw9JoMfgQw0xUkY375ArMRDWgDE4cZQCZXgq1A0d+Ga9uhyORL5ePHNkL2E6gLV939FEW+QbWQvMac7tPG6qhGG0Dv5iKdDPg6tzWTwND3fFVUCGZWu/jR3Q1khKJ5lKFr+xob2ZbJ0wEugjXr7JArRznuBcGfuLvM5zkCCfHNYl3aW/ypivzytmhyXcn9R0YwATG6pfeL29rT/Z7pvcaNpGRvteNCKEcy2UrDPiCSuWGqbxGgvlZj9pbteIkpuxHAPaJq7BCFXFSYZGDM5RWVs1awliUtSKUJf1BAqQ4wiXZoYk13P2mXteHPtNlWgAHFeLmZdJ0UZnEl3a4O4kPguZmklgqu2mUMNNWgekUI5WBZ+TuwTUP7r4U6KmzkVzhG20Jsor5oe6zbNSZ2W71/jm0ufXl8ltorpFSdkel59xRJijem6iJ4M6sGs6xE1OcPjImqp8HCvpO/4bSc+hvJWp1tXEenN8wmYDdFM5UMUVbcXiNMzgMg+wqRivy9ngUqQSAcp77PiljOmfZTNzi64jxSl8tY0PV17zXGoOZkjXT11vmlZIqyJE5PN3X0qBZ2/DRYlWeQKmC9RrGcuUMnppEkUf2OVHe1WMn8kTPHLL8WznIqXPnW8wqTHxjF+3hCfePIMtr0rqS+hJV7U5Z15yemLuKAJerkZM5G195qLfDuwYZenUenNSUWo6uus3w8wzyQjPM8tK9obg6LIgABcfuggOXldMjr3We9+Y7UmCqxdM6+khtQeA6ycd3iavvry9ysHbNwR0ZXaaG1Z7YxRN5DnlRywy8aaG9Vr6sql6LesjFyD0xoBvzk0hxnuQ+wBzMT2gZz0zYwU9TQn88W7oihNSCTFrZJQ7VYgPsVdTDdbtFtgDKVU9WnAQBc1s0q3/aLbJPh5WT0BfcDVFms4+4KLSeNLd58ZI5W/f4Zuyl5HKzmCovCKXfCxDTYHC4p1PseIDZAvGm95jG57HGHjqiV1roWvuzpFhTepgaiYE1Q+DOcNFJ6v84sOWxQ3RPZpfrnR0HqXrFTsy4hdmEedBqZ/EqePywMo0Ry9tOTUyuUqoqKzqhw+Sr7Ewel/dRHfirQLKX3fisqdR4cm1QtRfFbkV701Wch+CCRUzxBMBdLQxBZcvDnHvL8Og7Cn2VbU6HOG8a3ti1+betf5ULtQR70MwVy0bJLW7TzkbeOO2+TG7WDv0Aokp167YMcNpxMGcUXTgRNXDHji6iUGnXFvb+QAJOq9mBirDXYsFTYuPUM2A4gMCelDx3VkkUiWkCY019u5A9siJOIABkzjLWCyubm3OyCF+IzXrgIcsT4wg4g2HJhShLsmCzCjmgvluBKcVPF7H9gY2zW1SmPwWfY7pXgn5wvYmTSv3OMF47i1ViYprIxBUHT3GDLcyYCWbBd0Jzr7Q3aBAMOD7dmKdcDGddSDoQvd3Xoc7ORK8Q60bppdj1my47bb93gpAcpn+buPLbEpp+l3aKs0BjuTTMWkE4DMOE4hVCApTAiG9gpjMRoat7nRXXaLdHJA6rPmzOKiqMgQQwMWohogrdD1RoKURaTdkLbRY2+vpmHYSvFIByzTQMFExtpJ6dnKkQIOG6JLOduE0zzuh0YiJPVtqM2xQYOeOJbHWdAERS8sSA2Q9b6Dzpe7pTFWSEKSOacNUDe+k8WiUDcEw2OWK3OqvHHSh6h9Uk7uLXQeYOSVsiORqDvNO5YlypYgrUNLx6uO2NsVulFzvIIxDEfbpZJWDnamPsm06QFqVWGqMurYqA19B9uTR+WcDdRDsjh1tVTJY1JBEx1+nzXArEb5kKnTjqQLPYWLaCZZXgzvshGdL+PGObPYUwHOPDhttodkMPZAcdHBBkkciLt5Qv18zqmkLemA00XJQdmhk0+x2EwYxT0t8pH00+NC63WLUqOkgKbgzlhdA69wZDE85zfoMWaPrxvQx6A6llTb6477fLM0mJo6TKGW+EBp4HKSDqExTYnHLii1hF6nFB1z7jrqy7kGwIg7gz0ApmS+Td48oZ7fGKZ5odmABy+RuPpSrjlHWvAbmJ3OYpOTNOISKnHTJNkyTjbuadwbw3BHCp6EgeVAMzvpVmQmqDxkY2vunP93gkDEGPLOglndfiu/39al7BvlwYDKYMJEqNF7+WyAZtfPA9xtvahqXBkvjwnlCLtzoU8+YmtsBx/OX1s8WPoenDtiGJ0SBYEtHIO1fNJ+ROsB/ifgcgBeYzgJQ5+TqFHm65PkzjvAIOc+/ZMLFPCA9XM/KTwkNhCwPsEz8+mJEq1bh1nufZEToQYkzx3jN6dAQrZ/cQcwIAenhyxlb3dhRXVLDawAaC5SSjmkx6jWEF3rFulwf1XiUDjhXb16dJyy6newAnOQpudXO4zqDs0hXS6AjwsraN6O+if4y3rX/qZg8Kz77MP+bD/hWB84HK6KEmDqBESvGXFXNfx8PG63N8XT/vDzyEoxlUKkaG8CIGaWMJhTbu9UMyHyJOWbAHF80kmccAycu/BLXkQgJwGHsHHtcAXd0//MpN2BHxVy3J47FVGuaV0+Vh+ILZ4Hrlmi4efI6xWZNx1BPnWlrqV2NSrPl0g03V3cbULqU8b4+Mc1nOBLJK1+ZIw+ji7h7JAYYsj2rpWsHt9xLPBIhRsYPibhwQs+TyScqyCUbvRHj+HQK8XHJkQr293RE9tYHAug71GxToDNshGK5bgioExv7tGjacXliPR9gejke4QoYBUC6wYwV0HwJj38tiSXbpdQk9QX8cM2Mg+pOUTk4UqRJS+oUBL83fljvSuBO1Q+b13YN4yYAUu7x1t5NH8y6nvhoGscDO48Yr/Kiku5/+RUJQiUk3klzfmET5Bn3ch5XCTfktg4+T2jA4QWkj07bo7Timo54tOvxx5ro2PSowediO5I/31K6X4bFlffebFOZkHnShCxvJwd2dxRRYw7R7tRpX8ROYs/8MUBbk+MCBBL8f6kkThA5hOPG6M/aTe5wHmybQlyYS31YWbyJCUqH1yvmV8aQOiOnrQ8c3Gsj3DvGTt4TL4M8aHeP8Tbh1qZOcmSPEGY1Jbi9WkS9lIylcUXJbvhusWWfBVMowORHtj94kGlKqkinJ1YPuNeibzKG3Z8kt7kiV2Uz2/GIlJNzMSNcGmGUBBtVOinTfYkY5kt1xtJErt8wpHJAPZXA5Y6IR+4L5Su7rh1rPe7PYqeGZEHEncWA08C/P95DMk/JNXsTVzljje5a2UMS1y4/Yu68+dPQ11owublaOr13venv8jXCZtkOXomgUKnBctdpcZMzQll+hajb+mbPGt71YqM42clPGyE/3FKOcLuadTCrv0P+gsLAgO8/8XQ2NEuOrLrQljGEtaIt7vK+ZKwae67GQAb3oLtkMShvObhFC7oro5uhWofQBcqTe82kG1tAcPKdMkk1qsrMFJMN6aOyyTTjZWBj66i/OfYxHq3hNRxz9iq+wcXW2yqPKeifA7rV89JSM1CY/FjC0rNTMgyZmRA4hqJD3kvHLELvDONVZ2Da7hnvkooIbUK/GO6vSV3HS6Z8KhNCBDv0DdmCw/qhK1OU4qBR1HfQwmcQEg8hPcnGNbn34J9jAyGVWsyumeWq1u4oZw/sfNkrzq3fRDCnZ55XBUyklRrUvNf6CS6lWpuVB/CuoVAjJQutdWjh7OmOtCBV0G0JLnT3tZoVKV7QZ02Kvu4hTmyy+7YhRymhkvQ+Rvowb3b+pK7APdOjPk5LBgceV7ZjLVxz92MtY51sja1TzX5JmEkgZLHAGdnntDM84KD7cb8pN2ourkyoSBJ2driJLA6k6SjkYpH2qjo5yeKaEDRaJIZYW8OoemXXiBqplNR1D81GbuMamgPHklKppx56ASACdBsWZNsXJFb7/qoyQanKdqOPVA6Vv1ziS1kMsmddTmKnmI9MTud2m0oL47v7CWC/lsib4pbhS6LRZ3hI9qu3KAC2XlWrBGsf6QV/W1Az/eoXSxv6d/hCDqn8TRDS41bEtPONMllrINS0Yon1ZLpGUu4VXh2MxyMSXcva9cv1WN7e3IU+IDb8qHYpoJ3YcQeix/CLuFIk9i8NC8FZIydTeWfo+zevP5oLJWIoU7S+uj/aDbeV3x7osMZ4kFz/ysApAHBKKXnHNo4JvRWbZY9qVzmKqVY9th1pf+4LU7KW2m1gevF7DQ+e7Xu8lwRZUGm6TKIs83u1+IPXSjUhh/sXP6CesaROVx0nUxZ1VufihnoupeBi6pKiBn5lPA7JQcRjZm9ct/WpHhHjWa8dwg8uJ79zgOC4j7VbBKVZGsUH3TTqEFbPPPd/cbNgDArvEXOw5XfNcNmopTQCIAKO2e4YVSt7gfgplWDwY878b5jvSV/DDE9BoxbWcfKbhwlcfev8Vq417e5HI/ZRFbZ2ajFcdZMUeVc9Y7aORnR8y2AFxzAv4HkaOjiePEHenVvDxbg3mxpWYyh4MeX4sySQnB9IL8Y0ScljqwM08aDkb/YzCdy96YKtOA/o716tnevaJGy7Lvfbcd6PgeAnObVfOzbuGl/1CeJ+r3r0j6InqmYQuz6EGOa7yH+jTG/FkvyNsURkEx4zGFcCFFM89uDuJYy8gE/dpoAR5uwiCxrK+M6ThZ9g57Y32b/1b3RdSXm93KB6S2kLCV5fyDqeHety8RlUnvnSajl+1yRuTYXIJGWjn9ZVMFxpRLkak9RNgKnlMru8lAO83bk34xoQ8NkLOqoVUhnqSk506s3MxktodGwYCui0USI1wR1YwiFlUukUab14uY0NaUpOr3ZonMOHd04Aoslg2Vrp7Q7pt4iKpUhCSRYSd7wIanknQt5TCJ8aCr546BblbS9+4VUPdO51unjr9x5zOlUdLGzEuLPgmUuSrvZqRJP+SsfE7VMAjvSX/hWIiMNhRU7/CkIeyHtC7vtFBxkK5+pp46im4t5M8TM6AAQxgUN5rb5T+4Yat3VykPTGfw4ComWDGyybIWMMOeejIWShKR1UhaGjf3j04d9ejpeBJ5B0Q6OL5i+GBXRfCiozIajzCL139T+OAP3rlGx29nnnWF4UZmdAU/aeBeL+z8h8rR42NrY2euab7sNycnI61gKdgAMqJkLEsS15ynoks4vvAgNfXjRRGKe0Xl2PD8LTpMJ2dgzDovo2/gQL1cPjJ7CsR04FLV7rWJ7lRkpk0mQQ+mkI3Jj4WD9CURx3DvNUPkSCMpkdA/7NU20L7zdGHlz/FkBb11IQZQZF61fBDkGuxmm/3hz0OY7CIaIrBxilNMc2CQnEJF/w4JtkJZV+X78F1Fc+uZT3+X0JWXZ3VXQgxQgKJYG3hrS9zzEyjbn0a1O9dqDbVLF1Z2aHRg0x7m59fMowY59CAnok2zfPNwfejqgRKod92/y+Pyo+Ns0L/Bk75qZD2Pe/ig55jd1shHDrcE5ztJEPr54uMuIfpCgm5yAbo9H7CXcRjF4lQldPua9t56FrDWX9dZ9z0IYPDFonRiEYlImyJLpaibmjwIOIxaF552EHGQxsKGTpSSw7gJuBAX+MhCpIvYly7BkWNThqMvJdWnBusCWXSPrIUxIb07pzN1nqPTkHOy3ATzH2lBD+VwHnc10VJrpud639wN/AMbe3cUYOIDjG00zePLx9bR3XyyJrCmWECkJP0PGxGwekjY5siuZDI/Orpk1O5yXE604sHj65HCgs/nJxV0PQ8qFHjjgdwW/90in6pp+A0mzwKJ13SsnjYgRC793QegfUvXxYMcphXMczTarCatZlCJ2I4H6a2xyND+39omJkpM/QiH6T2CCWWcjkyXFhuKLD1MrMmN428ohBPDYA1BB0i5LVWG5oWaUQjxp48nCnDzAw2JjBVVFU8MusKXbzQE+6H+nmVpi5Ated+ZKL64vqNY16rr3pSGjTGZhkUov0aGUea54QXTidTqf+HcAEdjQkmJ4kgbYZCzH+CqycZf6780csidvZDUeeay+G+4ZLqnN+BAdRvhPI9rexpQJITogl3UMcYjl7I6oU9REprvbV06edVls+bMjQCute070MLppUOB4wxSQYhtq91mV3w+4Us2ZT+ZCIbP/LMXaqGE01HXq6bqhZ9qwpOHdrSiKGJRPk6TT43ItaO2yrlR+1lS2H5Off5FcTPYJFE2j78ZYSozzhRshN7F6prsgz1F3UOpYozZggmG6e2qAXPHsYFZkyEqa5yLEl19E2tdNE8fGqClSCmL3dfnfhZaWnkVTjzPq/AykBJJNKFFiMoQmQbwK2c4H/2i2D7TljEddzJi/yXl+6eHljmEDKZeyj5kNtWpnbWWJrvz1xDQ3ot4oTE57YPAy8Dilg0vmx4i4tALl8ux3IjRaPqmxeaAytgCJidpBfvRK5FePrMagQc7xO3wKLQB0APQQX073/YJzjyk38fSwIrm6NWIhhSoSNtIvQT2QIzkRXGnxzo6PyCkZ83LEsTpZv9Wg+C7M553h/WNE4ksrlEHiXeBGUdPyo9pDuGVkM6WSBt4f+up7DTEBHS35N+WVPMBqqKnYx+uZp1WcrEiaydq2hEcK91RiQRT/dyoaDKR30Gx2HbVY3T1OzaT2ZjVb/xE9q9kyIJzVFETClA7t9kmc/Hueuw89j2rxlGKc/ZCcMJjTt1K5PUxJXk+l4I1lQeb8NgnupnofZWtq1w1k8yrqcMQSeJGzLj1DuvOdQsj2zK/95XXIyR4AB2E44hzDw50ir04uHuYi0X/AWZtRdSVONYLyRCu1LfeGPUVf3KMVxUjRB0crdNDYT+3GzBMvZoFnT4WBkrLo5CcZE0yyLGpEsJy0/Odi5lbnq99Bun7j6Vjz7Pzgh9P0bAtZX/+B3tgW5D685l8H/Y88cFCR0YCgn8wcxyloOLtaMxEvhgtgpZokWWFMA1EMRn9HKzo/5s1epF1M8hbuHsRtaoaFXBxV3VEbO7Xkuk/HiGbFjrQWbv0OfIVwTCfaHPJp/xqVVuIMW6YrtYWTtQtoOMktqhUSzQ7Bb4zCPaRjdbrZC//cJG/hbqK3UPWcELdiql20amhguaM19OwJj9sg+dGfR03g6SWJ6z/aIcDHt3lkAoTnCL8WQ+dbhoZTW8PCMPlWRALllln4vQ9CxeckNZzZkN8c4QTkufiqvpOj4OHxGFDaOj3ZUKmDiglK1WnuXJZLTRt6mLx0X0rnBcBZ1MWo3VE2wWcE0Oi3E4qFGKcKkNWAjO2wXd6P0o4MReBjmHUawXzmK6cO4gzKuUdB+T3zAhCGFMc8SXo8raIgefv0xQ9KuUZ0Ii8Hk7FXmzHUNGpLORfbtX3NBeFITdCR+gOSa+fylOx++viD4t1Y6jLzvJx0IVpasNXK1OGcY2F/M/O54zNYHTqURQXy6hXmBjz4OqPrFmKar5eu8jPeMD0ItDI3GyFVA+uVcJrkuJbh1obmt2k9BlVcln9VVA/qqUzoYc2Gwd9jtNJI6tqnf+LIO5DM+hAHIWxd4ygtWPBtWoZV87qN74UFnmP/HExZh0xc3YejCedxeM0xK1RQcYCY3Ybnrj1GxL+JvlvWc+Wye7xY3rwJlNsj88p7Ui9q9ZRu/edlo4kzWjBlT4z+OsUjQXKY4niKxpFXrfYsFpV2OACjnjhc8eO+gr4jGq4j1MJSRjFbhwPJYhWgsS7Soy1GVvWvTPvEsiOnGTRR/JxCK/6csjHgg0f74g7ejd39z0yW0ZgHE+opuYqGV393sCLdXojvPW4S+df4USmIrMEgHL0dL9w/BCLFvCdl2vYMI9jLMjGbuoRCKlQqOzXQKiUZdGywzB9B6vdY7qoHhRDH+WVF74NSGr0ozz4/muxFjALEEYjNv64ALjA7DU8OyuCCr0tVKzU3c9VAQjMRy8V0ZqBN5mp30Gob1gTDLzxJJLnvlQc4zFNycDwrADBKazzRZ1WICMlNsqv6F3XIQ84cqUliLRr7oWHxX6KK/62RPKTznHyRfwdQ0ueFkPv6Suo9pcLVkxug1OMFNt5y9aRk/tXnsrSyRBPFVXPsqdfOQLPyXgs6CSYormFe69jPgJIxvJZesrmFqC8hN09Kz5Ka7p85zfz6RUqthH7h5SPGNh9x+mh19dnarDR/sG2xxpIdmT/WZiXZr+TusA6ZsOza8MnIdl1nFfhYl7fiUQUR7wBYar8OGlUz78G2k4Uq7TtNbTqfdEXMX5XCsWyTWRUiXkUVD5lvR6Odp9A0v+quvLHT70KSOfO7YcZ+YEK4eJN3beysHbYU19orZsTdeqxqazpG+nw5niHtLfopkTUcZ+PcE2o8k+w0D/n+q5rwiCJVBjQlQAhzAyuVwJhlgf2RJwODWxM0+PZgVPt8woFeym2N5k/RyPfm4PUSzwn0n8GPSzAmsLZ0Lv1UWHy2eHpQFoYw2WXSZo+BFIH24smi7ROp7dLTHs+83nM2yvxcQqNwlT4uk75Mri2KqHgpT6xotGfXeeajVn6IY5ek7+opii9zd5Vz5JxIUXrUC5KGnBbtdmiN+6Xe2XI+v3Hn06QImn15B7n4tnTtfoP6j2/Ggsp+2VsEJCa2E9zJgqAn+xThIg/Hk5h+zUsV1HTq2YI8LymJu20xmbUyC5kyz+ESQ3GyQ0iOP42IpF4PNIjwU1b/ahZMqltKHZHnOGrMMVvHyD2PWBWgTpMKXMslwC7CcaO338FEom+azuZtnwpl4sGNceHds0/6eQnkjS3yRscQZ3nR7QWJ7XpMiIxv/rpgxAWxg4ojfZlrBGDlp55DTE6yr8VZKp6U4tE5Af+4YOxeIRvGXlKbZ+Ma19VHYSwoXT2I4V4SdfqjcPFaN6JG1GVxjmhFgfwMhCuBxQrcHp1fWjGCkQMHNt01lbC59wcka5JatE92OeGcpLzoaOr2MM3cgCbL1NRO6LPH82fvX62kiLMm8E25VlrN/EzbLvVT7MUMPn72XndrR1K8e3Zog6JjcNu2KbK4jG09eiOt231WT3tuQ8hn5W291IvOhBj+T5VSnusgs3stbHObVVwkKKyZSjcizl3BqHLSMWevey0e/BxyUESjaLYnYqzuKl9VvGD5UDJvsJHNFJM3MWzNKVeA5FbMVxK+M7cLdosJASIbWKnhut6lkj8xPQxiAoioZSD9j0K1tSXqbndfJ5MNNAotowQu8Uxi4V9rJnvEHgmjLexEo+H3LXbzk7ZE4KjAFqxZFZVV7wSEAPC4oH/SguPrN12TD6fGczufCrRBlrFmCeoy0ywr6BV1GRPB47vZXYxZj1HXfS2IMnx5teE01WYwat2tXCIczWY8EynnBQMdiybLMRgWzkukhfaS1bVBbsb0AiZ5JKv2FidTVS9006RSjdiNQP5evH16XkIF+rQXTHcvY1kawhUZviQDw+FYeQ5JOsyhINOiQL1FAaQnhvAFBYcaukFAzqZLFNpa79jvu+DlBKxHZP8gyr+HPcCL6gnsMSlTHqehbxLwOTaSaqlsUHhDAWZXANQvsK1/ujwf5HYVUf1vWPEiRUJfdkdPCoI4NpnfkDUiGDinZuP7rD7MVFC4OrktUzF7hAVsbaSW8X7hUO/jLCqV/qY5oNu26DL9vY7gNX9mQlPmLW+k6iHb8tmGqqLqo39lUzU4kNZM80tYuBup3oIGGoZ1rhM+iqpSwEsuMnjS42Fx2eQhOgsrH0MVmIdn3pdZ5oGq0AWpCyZx1oxIbFeck9XnZc0ho7VeRarGpkHMxJD8FI+ATWHtG3cQC/PChRMyFuf9ssZB3cKiiW1oZJq2X3rQNNEnnnayCMNlQ8c2vRcinM+PDtaO/yNM5pjKKDeYA1yo77z/ck4IBnSPnz3JUNDSrahsjkIRMnhO4FnzhKuWHxM018pgwGNwfMqijFka/yDV0ubjzJ3ja7PM4oowr1+Q1Bqnzry20OhptYbh4NQ98OWFrnLuXP/AiRh86L5dt0TnZF0cVNZop7hmUNaknEmm6VXt6+9MYmdK54Jh7VWaLwmDG3ztveC23ZQ2PV+4F4KmnkJncAlxvYNxvOgblP0u8RlzKYsyZTLV96R4CHy4YcqbSNnto3R+wmeb6aQay+Wp26WyZB/x3C6Xp2RrMX+fcjyPxZC1oat0Io4JHizjKcW0tf/HQeUBww3cyXfGxGQRsWsED4ajfhG+I0YIUfH0EbvWSkB0nMXKJv4NnPmAD3YV+C6cgALXBdfqgZNDKy+RMV78XPB9vVRAmUOHdH6X7/ge7BNIuFBwv5g7OB3L4v4WF1RXv+Zx6ASD4BpCzhaX2ly2/eGv5AbrDEW7H+LjCbFd0wszGHOLaJLDN+0Y7R9HRD97lYVozGC7gmZ93blfQmp7udMIOvcWnZaPFrUDke5m9FmMpp00tXuR3byV55CWtSt5JqdFyrlD527BOBCJ31u3UXcJDmjYHbhq+3Vi5beF8nKZ1qrs+rs8dSZsr5U0xce66gbnMEfNXJx9jCtZ8yVwSIKMLAgIBHuWFq7wLEccE1+i/+jMkqvNoSFC65M0sET+IydgROXHLRucp4GyGUmEIrAB+KEVMfdCHv8rPZ9dHNsQ4OwE+hcAm8aX8lhCjJX9LVet5l0Zqo3K+5MzT9Rnmzs1h+bedQmo/KfhqP5+zo+bFNxlKGaEe3pQ7ngYyICsf6GDe6JiOCX84+I9dHv57LFR7qoIU5unqj5e3Pfbm29kr583JtxaGPjLg8H7v0DfcsLNv7b0+xeyeyO2gGs5pn+pYcy29e9eZAd2rMIAHSIulgmyNeivHuSAJ/VWBp3zTxYxdEx5BMpv2XIBRVUMlpjIly8kWCmXyqmlbkQjJK1lE8LEBkQF455Gq0e7HoTnhOfOOSJx4wCJF9qNXj73KAmIzem1kCbmoIXqOeKAKi5yXcFuzjks4YFzjg8vngh7hyqGJQkG/cwd0aJ6/OzZbU1TpIFyiCSjmP378ApDz2OqUmAIpsE7EhqcwWXHAC1ZjRAQOQvWxduC7vfMmcu50TKVdx3/wCi0lazHalfhekEgj12hiElS0vela8Wv1vtXNHx6EogH5DtrG8eJgHtqdglIQDtCcKDB9kRaduGVl4lWb5mCElqN0mNeSM5H2BoXLBl8rieEKInQ24uqEzr7WjHYpM7/z0rizLVi4so+WzvPcbyQUUQm1daYWj/cwNMu2ICXYFQugDrnV11sneEKj1vlN+sJGJDd2L9mvtGJxcSRyIxDCNLykvnk+blhnjodP1mdzDiNxuZ2evmkpyCHCSYFHn2Djl60wQU4NAiHn2Stzc2PxlS6+VBRNHp9+sL+ViH2DxKv07PGX98iHDqtbLYvwQatSTw3mTpEdNFB6EJeh+ZFhCcVPCdeKKQ6MXyHsw6PgwdLZkA1l0QWFJIjipuPphXlPE/S5ahxuxapsDnsVpz5QnB6liY/Y5UZGit+cnj28BtuO3nfztY314vKS5/Bq93n+e0s1uo1ZWUp05dTkWD3vvbvvTqwxh/szyZjUCtnuoMEy2C+KWhiBqLVGkatkfOcAWnAxBYCPcUW7qIoZLkp7MuYwFF+lCa4mnmFSpFjvEcb/hId+Lq1Ahk4SHEtUpbEgdJf1uJyiT+piIdmS/eTi5D068czKcyDkMcC4EyioL1WsbIQDvW2sQkQly7nnrN4DQW+6JjOW+cHGrDFTU8w4N3XqgG+KIHrlKIYVmYN222wzYgQw9ancBHkMXEB25b2aZxRAgt6XZUCnrBJCQZJcnSKruRVjNMjp6iap+cW4VWLlCceJe/AS/91fDqosKuJqs+8lymYRQPap8uT9T2sazVbKkS/mvMvgehZqw0uvCECx2IIdJ2lgWnGgU7MILhcTaxU+L4g+eF7DXafC7XCwOqmxd6zvpz94rQUyb/ZXxJ73yWu3M8xmIaO6bLZW0+i0W1dFTiimEPZZSuO7jj99FczrFUe5my2iOlmB8d7E7Aalp7E03RW8pQWZ7UjNz2hmcw9Is3EWNK3oP8ENd6zJLg2/XTZkxrU8OLF5KceekJaNUqztyl0jLLRCCfkRG6Y2fV61xGHDTUD2vgprl9MkereiJh0Qh9Cur6Wv4/rXFnn6XKc/Rq84E8UYBj7p7FgYcFVHATgnpwnnqfqhRsZ+WwV2c0ahFM0VcOffg37bTBUmNPdeQugeb7KNJ0JZ4biwI6WqjNrG1HN0/ru7IklQjj7XneD2J8gA0YwzpTNQw248odpxk9Pp/zf8E/ttegnbXu5f0CWCKkXhl/q+HdKefO3qDHt1I1/If9Z1ZES0je7GgwjZZoBh5jLZHu7T3t3H/LAawQQWv/yAKLf/3yfvCUXGRkLle4VeV7HsJ4gExa5PVMGOHpVWz2IZuC4AZxlEoIKbnKn4COp08prIJ7mFj9pD47BYsx/ztIEV3YaDWgijlqUiWlFMjjE0KMmuPRR21No6yHbLXVG5cDisxRw3JrNruzO6+tC5+91m/jasA1vRh8eXTGoBLuZN1J6feTGvHHb42rLtEeNZ8kC76qwj69Fd4doFXqPe0ToeUNbMbcgrTF/ijNXktMqqBfw5a5qNsxreKZ4qsraZDfdiB6p2+WNAqatCJ2FXPH9SZvun8bVYu/DTWr+XZFOR2bD52f+3sTXePbP53qhmxr85xTKR35vH3cnOFOerpwTwhpTonwGbznAsAbVv9QKxiKnbLGvHUJY039BQFFPRxawD4xQJeM6D8RWYATSCSZtY92P2kv7Jg0SHfrEnv27gAbf1I2+CBswK57PJ8BunXb9a9XELe62NG+D6uptAND/Ceubm5eJ8HdTSZ9MJS9P3Mutk7FWlScHo3BI/ylMM7uNqnqQcdoDBYmq5KDGxaazpJproj32Omy8Dgz4Td9hU1qDC6cnKDMuPMCJoOkVVk5o2ciGDzVpwoa3kQRomksNtAt0puPmX8P9Pi3qwqgtuVCTKjSt/GtAuyYK8a2bKQVBx4P1aH75OM+qoGxeV1z/t/AUmp0yog31TJG7LCKa471khtHwgi4NDeUWjg0Jst1bI+e8fer/rFMSubbbQjxB2CcFPYGTLxfKCWopl7yBD0cpWvixdrunayOnQh9JTWAiKV9RT40boRCjF6UscN+SPZVJ1qulvqCFe8Oi7NQTJE7MJgxPJ+3R04YAxxZvkUyc2r/Q4ayjRSC2E8roAa+SCvVbJKhPjisp06RgitKXu761Sk5/swHCjZubvX0gfXKKWOlSHrx9gBQ8GTfYIJb4W0nSZZlZ+AjeGwDzpUITz77UC2+/0I/Xr06WlXj2YskLZ7d4Rd/7dieo87g3Op7oCMuLp7j7U61a2peYG25ek+bLaqHmkbhexQhZMqdkvXNzrgb9XUH8xHmXgimwgUGnr6x2/QKYn0Xc6f8IEgpEinbkNhMgghuoKIgVcrULh3H5JN5WW8H22oJcmruIeBxo63PWkWb7c4ujUDk9WzXTbxcj3YSYKxSOydiKN0Cm0TSEVbOecP3t4oNZvhqgvZqMH0jVy7v8xMzTmQf/LGqeM2epVaNn51o1i/zLajq8HvsfXbUMP0nj87uDqRHTBt3W8cMCa8m4NlT/Mu69zsT1YBSXsd8CA2ehwQdmdoKHzTH+p4GgtPuYlNkL2X5veYk/D/qZN9t0uSVw66WszibHU4/PiF5WlbQ2na7bvzGdGTywgcNTOh9DXGMAC24LGieX+ViIsoLtVRHLanPHAgcZf6udVtwHMi1j5iXbnDqekvqWLhef/JSuCZy0Q8M/OcGbVLYEv2XDbxKvWGmunNijqB/UF1wR3s7t6OO5vBWn8sy/WcOvzztAHvgBwaigf4mnsZ5ORulhR6vZG0jHr0++Q/JSRPjbiRB9zbC5Twp49tmV9Qj+gd8JMFAsCbiM47wH/l5dPUti6ZxYLgdZ0/Opm5vMwjfTL+0hvIzTWC5cQhMNDywZWbUkHZacl7BqyZcKAX3RS4t0xJIKAr0OPjEXdvBDjugHhh0xON4CJB2xMFQKFx1xMIiIFx3xTjGsRO0IGLcg70jEMLw0SSKWDJ/hAWkR2kzZzZtu2wf3UIpAALKQri6p5bIBQaqXNTmhIUmu6PfMsMxby5cNhZEikl0yNbQ0xq5Y5iMOOKFdtuZJx0K7nQOg3+I4erMNAzJwrSL405596t9Ff3c7aGNlQD7KxyU7wuVlSOdeyNc1518uQfvLGWRkuBkdrgro0ZjgLcZWm6pUEk8nfjlki9PtKTpy0uA/fWqJkerVf0x23c6UNnUNk/qVfI50nm8pFPu77RKIQ0hwUqnuKbh2uWKXBDvs5JU6BHK6US2WvXbqIBm53NL9Srgtrzqkq9YuFFJKkuwQvf6dZTHoILUOxpAv2kZd5IbWSfyr77TuV5sRztYF8ZnWuhkhHphEF5d3lFnTh6pJ0tGpcuhBWdNnN5xeW/57OnauxqvBbqmOu0GRrHM3H6zpSBAJOs/ilp8n3J3DTqvzXjlRIGGlm8535ahfPyBzP1XPvftL/QLHRt8Z9XKEZVTWL3jSIa+dx6lqG7c6NTGG1x/Z5aeN/TN00HoNDPxMHwF0hmc3KUhqNG7NnyEPDLplWz/LXrXXnQ9unoCcem0X0ObywMI2r25vLpRCLFua20lTD0W9zaam7mH598999V3aoKeR5J/7+qI8eGcd9KWYETHdiljEIpYLJ1Z1iK95vHhcISIQQVGIpZqSSnuQTiTXy0uytRyhyoUlR8+7dMBG1jBmlT7tKjBeOBZ6yOPJD8Vze2Qtkt3VhSAhOfl6dPNmEHMauEVRGNcssL1DL+n6hozdAzBKVB267cfNb2P5r81heDbJML3zVlaiIW5vg9d+NDRLhXeEE15t0weMR27/8fERnzr/RId3EXqJNkjai7vlDbukd2//3YWL5aWbAhm6uJr6qi9wlwjh4mvnlu2VDBzmjmB9N8SDQkWIA869m5yp6F+CjS/bIgf8TDCe+NWxs/zFJ9ykYpqF70ATiXwhiYpFIhf2XTKgKfMHTTcuB4b4dBKa3o+wjRP8jYCHAnKtITRwg00EixXlrhf/7mOV1fr8VM4CJfO3P505aDHBAP7m9PrTZyhOxVTmFSh8AMLnWbNIxBYR0/KmSz+R4OZGOVStXKHEbrxJDGUvflUw3zdfQiPm3gGWrUQQeClvnznaGoFyLCR3nLYRiZqXdhf237myLSq0vGk+yuR4Oyah7E3Jn8XO1oa4hrozyjvBjjdcQNkb28s+bhbpNSNheL7JTpcEZSfXb1KyPi7aqUNmoe9pvV8srxmRbFk/dsX2hrj3BpEEedZqszjQ8HI+wsd6v7hWNRb33W1zgwQXHgmce3xu4xW0YsZ/iEwDF+HUvVT+VHf+sUU6xCPyO8LzTGGL8ppe8iIrecx9mHYGcUSPOrgeXiynHkuYv2RgxLNErzS0vIyBlTzcLE7cIJZHEeDFhU5Kygd+XO8Wj1WNZOmXuLVNqQNlZ8wCUA4vc1lPLCJt2K3ufaiJyPF6YFpy0mJXcF7PQsSPxmCUb1wRxK35w8pb/zFsn8KNyeQvMks86gOIncaQt7+VpgPuYy3ACCxzeXLCp3PggKqpEUDp9XxRA4aEdBdXk5eOwxnlEzwl7DIXh+gc8ULhkuXLiwWkxl3scqCvkBHZ2H308IPjsSzzIOUXHn1RzDn+M8BElxUJZed6e/72pOU7HQnEyx+NE0Y8/mH9JfVIJFX2LI3TigOOJTjUPDnlVNq98ZBX4iOP4JX8GSOZ63IJAkTl+YrZOzFAulwcXlnXdza6sv9aErVwB0ykn3+fOa6yxXWuS8Aljxw0tfPggZWnmWhVS3UF4p0teN2+3z3xSOv3kl7m72Vc9u+V3Fn5bMSFTqEWJKnRxwFRTFtQFLLqfAV07hakNrGhJLa4olXfU48glXGJ4EpU1j7/ydrYjc8UmZ1hx7Wp7tiDO7Rbx5Gplm5BZO7YuIKLIwEjJ+KWAv+URcCyeJ8uUEyFz0IQlXHNZ3SYoFDHpMvLcUY0U9bHU7wjHapcGk9/gCWPZyeYBNzZHxMpm61cccQWL6d6PoSwh4VsGtRI4ORkVDmOTfUCnLYClrNPsBX+Pogub4Xo1YwnyNepQ80QJ8BsLM5wFB3fxVwB4gDpw13iXZDF+GTzaoUf/r/2P8opZ5iP6JKrLyoO7P5YLzjTstot+Xo+F0UHFlbGMzpE4krh2Mw9BzoucWWd473wIOAUC9q7Th1SQ5OtjZ9kc6a3XRexccEyjnMPCZycghcjBfUg6wXvES4mJsOnnAfc6SzBO1rLhzarT0cvNLcxLhiCEt5FXDIfbhDAYrgEHQMcXDC0yyqBwRjn9o2LiB9Qb7hIuvqAHDnclYTLWxAdbjkus/lahuH2iN9gEG2fblCq4Fhz80fMhaCqqILTVvHGh98/GsGScg8li/j9p0Hbk/SGXZjinF3g5kBRGfo/ozI/s/2R3nhQ9uZgCC4fVtY5fkJKxJuF482Fbt4wPB/LWuQDy5Eq5625Vc63B3cWAcPd5z7csVEPhV1gyJfdyk4ecKu+G2EK2LAMYoMXPbhWCMfBq/qgiPkqY6yHani2Ruw/nklO51IA9pTM0U0f/tIHXWVwfEo+vGxVD6pc/y6wXzG8Byv2bToRC1uiAFiy8FZQQhGy8F0hno63DCi9zsK5TI8kNS5yc323PAGf3Qp1g3KIi0si+geTR70vTfgj9GY8XMJCOVl3M+OuGdf6oxQTxq4AgpZR7VlXl8XWtdI9NCzbt25SSLxes0+o/S976/3CnSw2ZUHzVe2hkzLT0K3/FdB7O1tnaRvgMzPVMSUDTDCpyg+QDjshOir0nZO0hBvjPvBRuZ0JY6uD8vTmZ9QFNgvYp9xUrMjxxr9V1xkf+IePc9lYGKCO2VU874x353DTtmAWMOwCVdos4s5QpuNWKQRN1volzKf5WhnYoE8FK18cBjfACOdhprWAcFo8DIBhhKWFjosVRTuo2PxANeqk+1pl9lnM4L5ww9fYUT+p746jV8gY0D36JaKPEhBauyItuuuOLVm6lC7pzhVi7aYD3V/jg34jXwjpIQyPFK730JFCZmypK3B/LFIVv+0BOLc1qqtiwtlvRDr4Kgq1YRBxVq5JII4RIqEQ3bRAHInwXRbKZg7Hpj47BxCJva1BwvHMOXZC4+VrGJTE2OZ8K4YUl4+wMJQ49LdpyAuYFuslEVFiZBDxu7yW3dH/NUhTp29AbvTtdsyD2Pu+ndfTIwvKaYsSa+TJH/fW7tG1AMIL6MD0cPXKWCT7+umExgrZbpdCWN2StkpR3yU4tISIXxICBYQzr2vii1NwBgsiF+SS3EsYPT636BGDcwTMq1ktD2bH2NK8l5Y0TyEcY7dznMNHG89bAEzASlVdsnII4LwIIx3gQp+pDbkaX4CKfJ2OBJOVLDnsrI/Aikc0VhWRexJELCgSCjy+TEwwm99a720yVJ7+JjRVAFANNkixAtbz/NSfNKLWH5jiMe56HudiU0uCAWUhOcF56Bk0ziCTIQ2pjUdjIFJGFCJDEcqRAUs2pLAvIFCOIXAXn4VMQK0htfHYDkToJxZSrb19tuugaH9hJIslbgqq8vR99P35U5KkO+l34DaIqJ+KAnyqXy3QUrmV77uCyW/dYCCcXeLkTQrSH8S+oATLQOZJJ1uc77wgDuDbvQ1kinXVQ0QDR/q6gQ1QQ+2owcnz3GMi7Q9gIIno/T0IhBq1ddPANx9PgcfLlh8wWIh0WHYR7QunpbDde16IgJXJB81jqz4iCZiPaGM+CcY0PkaStO6XbWgvAV4kLGS8+2P56N5uUtdAB0p8Rnzz6HgRKYfjcanSSYXDWU16u72LwUwZ+HMTiTHSiGSqHxtpBbCCjKiNwMITgqCMdwUoLkiXJR/xI5IYqp9TRsPN/0/XkHZNA+v5mZCShh9xholLLcQoV4Nf1g6k04RDgzTMR4CVXOTi7MyjI9Manc+9q+WKPjRVf/Q2QVkFs7IMkFdTdkCv/seJ2yo48b7KhGbOkLv+EqRFwGUqniFFcBOZEhXf7kuOjOC7vJlFXe5D+VNFoh0WcQiJhZT79hlvTu84BR4BQ51OtTQhhD/AIMws7i73E0Xa++zG0Fh0ETqi0YLCv0lE2Qk++wXnCe4iDN/ck+glgxsndH9GSJ117YpOkOtL3MSY7CamT9p+qoaOHhIN7g/8oE0aSGGQSAP8y4M4nPbOKe2zyxD4aY50Ta1ZQzYCkcD2LpL28kGJWUXIxexBBbersyS7qOClcPulmrjY4uvK/z7VFI0EtxZ8xM4PYaOd1alH5+NL8w9PoAZ3NofRO3eOvrq7q31wWP7wQZSX2byW7BoeaPAGHn2vyhL4yr8r+UVsM9CAwvAj+fe4EhOutE2F4uFG/mZDD+eDbm8ujvkiJDaqSGQiLFACR2QsGI+LoAXo83kdK65txqnFLxsKkq9C59S7/sfpbpn/igTulA9ReEFod/iuwtvslwYmQPU3eco6O/7vsfXQwBnqX+5w/YaYnRUYpbv8Nfuslf1fFgpGZERV1tyBucGIIKTnhhtnihiu8mNChrDZLpU/fSiCizAIZF3hnXsrAQE85eMa/Or45wKU7jbogZmcDVqDuc5/dKmGZYyltiTZMc3X72/UaBGDnkvmB70KnTk1B0hn3BrVbX/BzCgP20qHwsl2duyQxq4fU/yVtsa/dpkfzLRt50rsLbXcTVRVqEfeKrpJ+zpVsu6XGhvD7pDkw6BT/OK08zlYS+yDM8GbptFdZt2lC2aVA0H7uVJAZgxgKnXaCDu/avfPGx+MNb3ynrl32gCcO03Kkwi3TouIek2uv83VkbJkd4gJ+sanfX1dDdqSG1OSRpMzR1wxZaTjUV32qGVTDo9tg7sToKkumT2O5RvNDJ7jO2JFWY4xZzXcSgLa2BYz5k/66tKyvDmqIEw4DbYsObRaIIFOIkTPJGoAz78OizLJHTLVlCGbXFr6SItjxR5z7IiK6S9MOMIWQgzG0BHdef+BqmzIaHolmM7KececbVpxzZVFRN9Fk+k0PiWdE3dP/pK/DfTwoS6eS0TxUAqZANqqqQFa0uPHDnGC51sFnGgiD0T3HprCB8F+AWxdelfD1qQF/qsVHKf4b15d0jWyfDfQOdtYdcno00hkBp1k8Ycyqtzt9w1HELFqr832icRlC8xhUIncgoaL5dT5hnD5pqP6WTAl6XnujnOnOsAfq4cW3ABlkgy8kPIbSTUQzysFmZKnUizCGujkdfJ6cVLMKaoksJTmbVVx4t212hrgVYWV967CVZgOp1LOnIx4V+uAt6ZspdJDc5YvccOI2ikS7Tpl6f3OEnJ6KPMoTmNgFcKEktVXvKifDhWPEA5tepXy3OSJAq/2cjNwyNOrBZDVAjSDPQooLJeb8XcIYC/sCeS4TIe8TkgpVD+1GL0rCrF0ILL+sfHvKGw3uTg1D4/3Luqpm1O4o8hXv4+ScckA1Ikx0jaabZI9bs2XSoeTNMDxcw/6aTAavv31v9QUTwoHIvx5Kce1WdQBXS560pLYnxPoBGvZsiNbkDeItTQtoIL3noBjUZ61GcYmACjJOhB/ocn+L4GnIXrP8X6DtNYblN42AxF7u0UEjk8r+RAgS7RZCRYJ5JoZYnNOsO1pFHOOdrpIzSX1y9AeHgBUJJz3SUr/Xi1Mk18AQUu1eoroIUJXVNgRUKV6n/HUkg55dWyNdU9TvVCxzRlI23rqt+HjGe24JDIlSc/8ENE5RAvejEiJkexOtBZHGAq3L8lIHQq99M0CVIlO7GOATWqCeincECl7HXEKHraZkEKebsp7PH7PeRybTqibXExjsk7kYYKXaTqsbigWFymdjCKqzvs8gHfBJrkmwsFL9/70u67BN4YlcRpPBGFXyjp3sg/ulB33p/FWDERqvlhlc+DPpi+SuRJwnaJ4y6afB9LfhoDIU/eVXrfctb7EnaHF7UXuqH3SI2b0Wm92XBvemmO5jqoNayXoZfcggKZEOxTH2H0RxWwcdQd15Tgi4jJoWIpP5A/6Qt4TwgvmHbjSxcGJSJnds7wyJT89BzTUIpIC5VAZm0AjnT1dE3oqQB25eCcFeyMpG+FPjOfq3oGyHKgck2hclMGOc8U56tEMk6sZvQ0r/odlqEdKWG0QxfP2tBG2oxfRspefJJwymDURPXeN1rWnwJTXrGV0yIdkVDwW2jKRlqBYZyXpoCKq4kOq+JAzjAMLpWf2DYbx7CAOqTomLFKPT0FOSDaVWnQdVaQ1QkOwBwn2lohBG7qMQjCi2qluhxZijGBwBapScDak50QgFvjzEvkYdIsKE05UXRjjQnZ4zFegiUK9kpuOI03KpWogrkj0Z3UPXavJ3GjpiH7K+AgyMzcIyCRHhauLSzTMfMJN4uySUTSelLT+hQ7cZCTX/Dcx6tbRb7AMsuXKIVupcaho7OofLiRAL4yGjhKdwx1Eycze3aTcCHhB6R86ru8NcLzybEEVCHlHdbww/PKMkngTwdYecwjOfcgdhMzGiAHPy+LP8CV6hsSRaHeVNtqAFQOWe0+MJ57xOOD2UVu0gKaIFSICiOfZnatjfRRUSHjgdTnF3dQ5mNqtYrtU6MFV69pgF4w3kzZ6cYY9XNwF9PBNH4cFDNVWvP/mTCS4L568sNmCKCeOUR3leJgH20tnd0tWEFIsw6qtXOooKr+EA79iAH8ARdIDxqKlj+Lt2wViRDG025BXOZ6JcAoYO4pLHKm/iQBwFSUSrib928IyjfvBXURsoAQiR5fsKIcccpjMdYv1J1GVxGCrz+LgvEEPwXRSxAakCC3nsWfMJytXVJ+Yoc2+EVeNHKjqFPPyFNjVFJ7qYEECr+1+31V/WD9Yku7pT3w/IBYS2I6NWqORiuhy9plokMGX9zaL33eqoRbGgmABh3YZeg25K6LFw9unB2C6cs1/6qj6QjukF3hwC4KyQcEgF4HJ1hZvzy99fNWq+13tX3xd0Byw2eqhGdrYZXe8RZPXxL5BZwePeo4LjF3wrufcwzXSW52aJ7PD/xgo5ac0Wp+jt/56xFR1AVQ+qnyB9F6ziizquqi8FyzfOHejupHdXVO29i5rkQ+Vt6vZFUrxPXZXWyFEY1UgcX7IvEN+WpuwsKDtzj1Y2das+ELpC+eG5k6Tqex57o4N+ifuHLliMGuTBy2c1DnyTsyUuAKm3D/mnLV21NVPDbuz7409Ul1PRwNhIdYi3ICMZzw5QHzSSrf8wocfZMDOh6lnfYPuOT6h5rVu3EH3xok3btlkHd1uwbZ8mJXd2O+iTyXz/C6JxV79vfCaRxnpSSqBT9j3oM2tTefw+AtObeW3tC2M5Ep8NsEbAzhR7/2Ltt4WZa7/gCXmQKVokegReivZg50M2Y0JHF/QKdtOQg4rb3VORMAtEBXFmHorhYmJMnTQXpMALbLEH90XEO5sGAd+dlwTYJht+368TgSExDttX1dr+Jw4X/w+mpNmQhzQF3tsUjwEJCSn2gRZz1XpynY9oqo74xj2MKAVyCLLz7Vjhi/RJtuYFi3uFolz3GnZdrObbaUMMVb51ZroAabQ0+8+u079j04o9ZCib2nyp+mwyCrXOgiSZGQxsybqaWe10pCYbpQOkzSaocS6U3qRt5mvidXN2cfwSy71M4b0bTXFPFZ4gQKF3yxnC1vKVYibmwxP3OSzqNmb52RNdHXdEuhqpYWxn/3ia+7sqLlU9r3xRiPNE1LEAkU5tWXL1gEQa5fEtDHsKzh2Lzy/cxafNv9QYOfS2utZau31gRRdc0OuMqx9sB7t4Vjxemw9t+bVdV8OBZ9dX2aeptO5nR2JIfsvdP1rh0lcDF22ZrrNYLdfuzRDmJH+3jq8sHBbe4XExtCFa7e16dZSy+72uvFrHn2GyJtSVkJkWO/+AJi8yvstJYlZM+6lM6/kykBf1ko3ebpkreU5fSXRxpfj09ILt7WO5jH66tYUfIriH4BS36K6wmJ9Mf5DmYNTTwm4BZ7+zpmtVyS9IHPvMLkCl7FsyyW8zGj+X6EbmapWhOkQNJn23+LTSXS9h099gixb8a68YMv0OYjKphnRVe8cv9wEkyyt5mYK3i1Lfq0H8qFBVKSQ8t4TODuj5eyhJXyYohNiicSYkx53tVGylg9nWKs6OVbcvYrEyqdsi/mK6MXTnxKKee7ZBrvEQQfemwz9yghvP+VSgMUV2xYxREoEeLU8ZpdOqwpdqJIJYfS3X6NaA5h+u13XiaCjUjk2CMyIGmmPahtiSFSDJBe0ai8UZZEwJyqDnFVIHnjDLQRBmRTM+W3tNGfW8FmFwNYP4pA1vQLf/qABs1KvnNLzl7Dmtf7pa8BD68bDKZLLjA6aeDDD0OFejCqn8vrUg0skZ/dYFqWgjSSECavOTG9BlySS44SFYv61Gy0mOMwOch2ZUX9V1u/oorP3ow+Ij9ySADslKXpYxo9RlmjE/bbJf47Femylr8zFPsr+8HERJuBAwwcVOlhy64fCdNzBng6Qb2LhVxYqCHTEvZJSQuEwGDP1IwFSL0qntp29WLbTxHQ7HZtNzRSwyOPbXIDUVLT3JZS94OSbx+jyGjGHT5GmuMxKZqbwtYQ2I2u2K6f3xIgW+cAxLQxlIYFsEpKWxHZ8YmX9CTVJAPvDbLtjmbzKyNCnr0K3eCRj9dNtsmyyXa8SM8sYrLjTPOMoM94fn1KtDOFEG/Upj8HnciAMLSV4ApbL9Omm0hrk58RMI6RjFnieCMdgPBDJWt+UOrWtHIUIAYbt6jzk+ukGGyb6qZbis8XrJEf+tJySfShiHj/QUu1OijfrsXo6kXUI9tVezMY6416nhaWMTlhM+FzYy7QccP4tyKm0jzTlSjfbAen7reuNGcHQKZkn1NHGcUCfK8alztm1c6iZUX0mEPDtKSEyoQ6cH/vmaGPZazw9VYKuRozbUuabECPJwclytK0sguEsVoRyocqXP4kWmi2kCF+qyKF32bN09QEt4FHWNHwBmGFxVH5FK/2LxQMpittbLa0lXKZr8NdtujMCW8Firws7ZuhYOWmdJ+wVg8OiY+B/1jUl6yoovsyqNKd5CDfUp8y7nbhkTGInMhYpaffpGGUNckIcD2hn5pDvR4eaS595RUa7ZR9MFgbpQ/PZMtaB7zf/asshQEovmstQRZP5r8Dxd9N7QcZBuwSXeFkRvddeUM4jCzGbJzQuYGr4DRjzU6k7sZBGHTtVoYfE+vwc7zQ6ZJ5ksZT6fDzC/gY2nGKCrkBgkTfpPBIt55f/H7EcXOgMgc0a6qhf3qYdmTj5zRhUiYQ7rL2M8IteXtxFrEYT8PN7WdFF2IQMPSWaU3r8cUDa3/P2X0UMQgWt4P8z6pJfK/5g9EwubPCt8wQmILBI+dlV/v/UGHV0GFvKOBtLbk9cu4XVjE/ROGpl5TNhOJvpCqeaT5UUqKGJVaofk5Wd8m5tXf2Ol51XHs0mTBR+I9DN/7nqVR97rB+ueUmq2/xz4QZDfXHDzy65aY2l2gbM+vrqnhvIFLjKFrQW0BiU3rJiAVO+fAvNKRwcV1m6QNBbN7LSAmn/UmBeaa7lOkKx0Mgc5QCZ0QLOv4yy8Kb0Fphv4S1jtncHw+nqC/wbJTPgr2nlO6MLCh9whFUWNOKU0QKifncPfZmbsNLZE9jMNfS+bdg3gj+aL0oEssrE6sPSfNlY8EqP74HC+EJIkDItYEBuo1PFzkTDuh1SDZiqvwJd656fcamuW4cu+NKv/0krgfaxp5aZTgtf57KIGfrlp8972bquXvbdbui3DqQpN8y7v3T5sYqsSw7nYzvLCTHyk6BUSZwa6PUXpinj5xi3IXtUDwwgxsi5jUF4+tGp6PPXQJIfj6arOWjcFdAon8VOCGoVZsQOUefztJbwIXSpbgXFDNM3loQaGdXd8CiDRaaFS1VEKnJIoR6VqgJSqEIqUpHKrZeqDfcQNCoM0GblfbUYlUIXudtppQus6scEsCuqQCwn4HrLJjjJLUgi8gd7PJkSEKMsDWFF4a8mAek2Aou9Bfy/qC3RZSon8azgoxpT9SvEucZnH9kztYSPqn4JVuSXcEXR6ymxzXA7Cf+ERVT6EJfz22ZHNeUbkoRWLxgwYZEOb83TOis2GcuCqRVE3IRcoJ6NfrdALKgI+84RCtqFZORLeGq3Rh1PAbwYdyrOHm3RzA9W+DIa++9TqEV28qerGublFdiriLiSRqh0VQDOeMOkwpcGzpV3rIcaHbSci09X7SHbuauzEZrUxj92nE4NSZtX7KzO+prZ/vh4DbpZJHaqVgpRx1eij+2zJQ1hbm1DKNCGwo33W7X+R+TAjJE+j5bAFiWTwCLVXJoqggNbVYOK3bQZIzLYx+6mJpPvlaU2WCFvQFspj/rPv47YvdRwl62mLw9A0CkKhrj9voqOBwXJu8F36iZSxK1jP3ajQ+PbCtMx9tdkE+Rax31Eo8aDRPA7TJTcLQiM1Oxb7V3ROEjYqdoNv3dmifpy6SkwRsojDx5IwPrHL5BBla7y6izKHq/Db7xzPudtjbDVQOAdPL+L8duNx4Z16OQ3D31apVUOSvIndTDz8tJq4oB/hlo86lO+IM85BjRZLDFRziVIh9sdMp3Fqpj9X0imPU/pV9s8Z8wnx7JtpOeDtPJ+sIbDqEZ0UTf1ou/t2lf6P1t3e9jFBJrYiSQc9vYou9Bx0BZN9FeII48W7R8za7uaCfdA3hHuUQYe/Apg0NVg07xExcY24OY5qHQiHLpXaz3o3BVS0uRsqDRbVFTQiD60yDuwUqTCPZ7FjTVsuS1V092N321/znOgb+gYhTe/wkGDykOmTVRVSTOGphxkMaLOtWrdwYovE+pTvYBUJQigQYomskNWq8bXoWoM1afVWI2+SdFvW/UnC9H3GdsKAYAgtf1Bz+zprbYk3x17fdOrg1MKNnaNMIa1zmVbCuLmp3JGP2Wr7xQVDdlEJUzJspHYxdsKEzLMK1SyMkORDnulXq0Jxl4ekww6wYQieYmQhWIOCWUUl1wp16APS0IyRiW76miQI1UJjQ43IdIPW3LJHHPh+71IVb2OLUGt6Bs3Llcg/OJIGU8Xxm/EA1SwSYFLXV/rB6Gc6A7xan/6u5gTi39b9W8NwIz6E7gaV1Q5lYZs10q59+3lg+cAhUpjPbSguq9jKcLsGPXPmOzu7BbzW4gSdyahfbhmVxxiKbAXaU1iPCJRtA9bprKzgO+470aOk75sQw/vRR4hvyYgcql8DXBo8EhPtgMfMu5hwqYd0eC2Q177veKcMFEW6UFc6NCMGKSRKto6doQtL/LuEKOpaN5ZM5zNyBwVWo9Ey9XK5hHV5CFmL305D5qYtmOMlrh9Tak+USKhwtAPFM6ThtLd/wxs3LpmguVI14O7DmluUmdu7JPyW0lp3GSMMDp0tXBpdoMHt8depN/wrTAHaNnwSymxj+qrq/7RavIka4njLiy6DVNRG/ESE+S0tnUvBaGtbxnSgDxNBAJsSug6d0fLZkO449ZHMPJ+c5Z67kjVKnauJ8QRshj3RJ/WvKCiNDxk4gVKP9MMqBfxeLmoiV3XdpxgOoI6McHvZfkPxtho+XgR0lvzJfNsc8KXznHZWxLc4oeNa+cqkGFbSte1DjmQa2GFM1Hyy+6n+APm0C0BuuSxKa29mkuAdjJCQ1+tq0gFgnSvoMWTX0uL8QPUpKxe1ALtJh16/jELiVWE4ct7QZnCKHGkSrB87sd6vLFmLt1TEMVZqhT4VVMd2IaORSkpTM2K9GFY15JqtOlDOb8rmdPrVYaWgRAXJvpzqdpEChCsI+Cr+PI71RJ1q3WR2VTtPwYCrwKeaDWRpwHAAzebYw7W+JrWwAE433tn6d6dp10PEtoLbY6k2zOr7aNsL835P3fmlVzq6CnuT3lePOnvsn2/VdF7Vf2+1qspT86KREdA/2swq4deK+/tkKVCtGg7BhQXZ9pzhBzNTz6UVuSn1uuC/SkXd/X1TtijZpVx5d7VbvtkRRlNRzX8fhC1lgMNI9uZ+R+n8iaAdhjH6c3OqHAUrVOMfOODPYQNG73a3Hv+cVbKPvwmyf9pp/4BHhbAPNCS91BlA+DUzJPDUFkI6U+G6n/kQAmBvvie+4Kd0ZbEUqt5rIKkvYNPKT1jPhRDmivDneTGfXeGqbyX+iZunhDaoDvuVISVEk+ZbII8R+P4DYZAcZ9DdfxyXQXV3e+BE4H2zZnyK2NS0HUo/LduVPtFZwq65GyMlS/OLh+MBqugKoesmTXnbqjrc8xrcmJWeVSo8/bxymeWLC+Lb/pB7ZERe8BuuIych2nY8W/PZK6ip/tjTO6RGxJXuNdU6gSMjTw7xqY0a+CnleyG42UEvx99QOvNfjwNHf4KvTdKMFVtHA0TzEw6c5YzkrQX6Gt8zw+ZGneR6KtwK+vFQcS7D58divI95w4r4hF1dtUCgy3Qio5qOO1U/whMRPtd3IXa8jb8oA2kvk/Ia2moVn2UX+etC/ZCvus3+n8IAOLJFXyENvo8h0ybJYe2WIwfEYoO/VurbQ/tW/35zSPFxizKU48DiEOke+OLrqfNk93wJ8v2PRHI1SiJNlqAF/oBU6ZiEXJfdf5wEC9x8fX7QXPvjBV50VZYeDKvRJC0BuJ3qDQH6Dzot5R/nCJWN6nQJ+QK6VdD5PQWQ5fy/E3AbeIeRo5OtjHlkjlLf2kLSm91SFO+q62gKyR0/kiIT99lbCMP2UpoFHorcDuKYBNxEMLxcXAqiiqyyTKiQoQfZtKlDupy4E2suaeeMc8PD7D9PKPS5gCmJWtTb9/qN9Ef31jHRSEtUBKTlqk4jbz9i2kNOLXSspDhacXhtpGlLJiWHGYXiOVdc9HSNWEt+2euQa8NVM2Pq4mp8rsJyzGum9wTlvVWEpVlH2hs/uAa02GYYDXjBhfVbruNB1WSPakXqQZ7L8RUoXauZiFx6Qvc62zNzrev7+4FiFvhjxmZUJmOb0SPAZU7I8P8DGnbknLvqzJmiq6khKIzFBiVPazdPP/ug4QS2/zxy1ef6GMvEqMEOqI17aWLV+OKq1uQmGDdgr6NhrrMixQsFVddifStPwgzcFCtEWTCpl+t2yS0eIsI9OSm6P2fO0zH+IlzA97QpTmoUaDsR31oAGFQMfz+eXH3WNjY0kSrGnFl5/8EqjGqtDgbfRKuiGVmmnbr5Ou+Z0MLNbhfkIbzGGqQ6fpbZpboIF6q1eICCIf9kTtLL+I424eU6YcDG5X/b+cx9seoP+Yzm+q011QPwhNMeTvYqQNngwI/K8Ddez4Ym1KR2UhD+B8lCnq+u810/Xr8acDqodU+3Lco9LHPynsITrNyK98IM3M/D9Liyw3vrDzDy4xPujWYVajSidWq/+hVNHl4hnTsSHLVdO4kzbBG64M/MNueyaNwMQT5JKsU4zlU6ythtZGGV1pvmBnwd2vUnldiFMSmj4XZgvxRgi3o2Vj2YBZaCp7R5Ozax1/QdShL6D7mfmE7ww1O6SM0jN4DeuG1mP8Vj7Dv6lGk+x2KMD51fVzVbGdyNsZ10MIZfXV2zxej8EOTst9kx23yWTql6gR5XQfhkDpEfu6LL7vmQyZLu03wX6u+xPlgHxSaGvi6+AK89c7dJqYA+sX6piY3GKnKiwkxFpXSh+hMvxVq+P2723d26kAUXV91JL6Irc82/FtWnjbWPBcY8R2pdoLeTxwJemaIjgnadoqh/g6BvC+o0libHtHuhD98FqsP7rB/AOL1q7dZhR4rozs87kQvQuK91OHiGOPeQIIBfTVRVPRbWyQmuHncY4CpwVyddfZKHIJYZCLmUMUMFaHj9lBCGCO7vbYysp0QDOyVvmrJX5KO3zGo3K5MyASUkx2ktE8PRYMfj5A7B5xLSyxn4HGgNzIaDh3mnA06MzzLrBNBdbNhzIGst6yZ8M6Ck/hUOoKoxBdzSW52RpREfyjHjp3mNyqE3cMJOQi3YTB/0+tBeKvat/I7WSN6X9Fs9p6Syvyol6blKtzPeKAv3WiUC4v2gjlcRBF/BgO5T6eKmmzIEh0f9cczcpUT2dbbcIprYrWTDn8WsZ5sQGTyxbW1r1Z6M7eh2TyCteFDRRK0pfnY49vazuiiOc6hnCkv3rjsYanZAhuiM4duY5c98L3RMiMZa36PKeUymmYnKLryeXMpIC9fQw2y5Puh9dHBGBDoJjn08nsDQSpPjXq/26zb8agI1r0Mab5JmNQAH33Anktlh+35mTa6l568yN/OSyG/O4VD3uAEv1UDwyeuQuWlul8kl7t/9Nu/VA+J5M2kmhywb1FWlmEDHx4dQlCSeRJPNv5YpIMOK6h4e/DnotdPygNg/V2ADFr/K00kF/dPZ2iUr9BCgzpmsSCumvOESJ9jkMM/88a2GO+BceTUupLBFdew4toCL4NA9chRtiqYQZ8xy9z151D9wHe15URxbxTVKkzHZqN7hdaxItX63aHppsxDHysbt5ROq45zAPpHsqtGJFJy76GPlTKFO8ea5GVIQm5HiXXc02IB2111KSDrGnaPZy8atpRGCRktff1gUcEvMmwAk/hu1fKlC0Q5xaqTGrq1cG/OupJd3CXKluFFn8G6qhFMiVmtG5uy5qPeL/RgZTrDpt4i3aIzMh0zJvR4Ke+u02rIb94QnvbfKZ2bn+AoZDVNiwyplInOstoZYm2prH52Qx6AHSw74qP/OhMpnY/OqMSYzE8nfHdw+Rddl/6KcPkm2ZRhanYGm7I2dDK26CR0iVT1X4gnZ7Id9PR7MIbXDvquDSFpQqIMKUNFEhreD1IBqh4Kow4FUj5d92eH3DzFiJ2oV2QxUQseoKHwmE4FI4z5PFkson4h7MSS/YTZpt8CeesrCytSgUvU4EOo0WTwdF3EhIUgP/5xa/BTcIBV45LKJhhnSMy1xYw0tLBaho06uRdJnHas9jQHaLuMKm4oIZdRCy2Wwz7PaUgFsB+IVR8g9mIDPQiHnRPX4BGv29WiyRwRwn5bXWTo3Wv62655r+6Q0MY9T1bWWIlzedz9SiU2rlSsfU2uYO2kCIZuVtRVyssxC7bgVE/+0K+FzUHNsD6qGKBvMp1ygHm2jmE7ntFyYW7DA8N5d2U8JyHN8EgO2FR5KvaKmQubaOM2uvvoDH9HnG/fvs7+DF2Aw26E8hdiEkIqSPaFGAt1xzf4QTyX8BHk9JMzauH6Vjg+sqk/lkez7b/2kBTxI3FWbZL73UmsZP/3XVEs0lY4jxSk+/46fQPD5XOeWxKL2jOAnA3WQQIoC47ZIWIwWWwKf9yKXKgMh+YVr5LFY8ueo2G6WejgR9sZMVYc8yUhw3YF7mkp0tExrSdyPNbhilaS8drNV5tpezwBjJddIImw7cnioVRyUO7hd7A360WNCtuZgk7O/DKB3+W+TxuoSKlDdqfkD/cn8d3fLFIiQZC1W3Tim0krm37BEwSbzLnOM4ByPWD98mUO+BGYI93Ubosu5107Yodi3i6T2+d4uTF3aS+V+fNsuSw9B5h0HN7r2n82mLvlLxfmRlMLiLtZdEpbrl1xSDm05Wy2XGhCuVvZc4vV70n92lfQJE3/g+i6O8pz9f15wYdicX8/2lMB9MrwES13+Ld7/+Suv/yIP2USu/j0jhkH912+PMxfDUyrSD39Fc21Wryd6nf9uf1+8pCfPd7DZmOXn5THXj/5nB320Vzc8xnw451hRPdsscfwX9rEQP3q2v1wEhX2t1ibFPfm2gg2RV3j9CfEKbnIVKJrBBaXvJUpxmmYetyn78FNEqWztUeax7mg97rXWMoxCNyeaozkBP/ZbmvMY/cm4lU63I5gTHEQMRn1a+Lmv7ZeoWEwXDqUER0dEQ3ONLd8+FcEFfDzklhZ5RA6nrOJC2VTAbznNvefryDa7Ek16HabvqSNUEBsavQZC14nloGcoVYcuab0xClArgQ6G7HPR/SzBtBQcWxUuppf8r8QT/c7YitSl/xF9NhBcuYY5d1Gf0coIQSY9PfVl58Smb8hnijKOWNfbv6Yq//e9h/4vq5d3ThNYEcumvTPyeNudkrVQN7DUmrUSVBch/LnkTAnZi5OdOGNPITQx1aVImpD3CziiOYj6cOHIcSQzQ9ZdP9h5xZ8Z5wNOhfYyJuheQD46L6Mdp4aJrLJSgUVnmA8YoZD+eXFUVSkuwvTxI6n7Gu/1FZNk0KPpg9QMabZBKqb9bSzCgXRLQAU89TMOQBStLY6ZPZWiWsdkNe+7zXBj9ZfhYzW1TUZbahr81Xc90VP+plCatmvzyB7Rnmvg0Pb6DSBp4q1QXOjmoRaQtHW4FqTy5tki2FNuIx4K3Q1pm389JRvGyROlriZvWjLjz1BVk7anhyGvvVpzpMXFE4hz7w9oVowaDEgD43U3NMyyyWkilERx+VSuMwKyvr4TfNrNPUl8yKBE6JF6MpWsi561/rKbQeXHI+/8JvEsFMWU3KuRELR22ib/grXWDIhfwj/qbyghn35iSa+hWOMaE0yPfc+XA5E2vu8qgYhu3zGHx8edRwA9y/A10qLlKuda3NXb77oadtu4gpDdlDWjM9aL74Vnk77oOHkAXoHRkGgmNS5OfypYzCSEB5UFttUWwPWrtSaTu/7Vd/boruYfMyskxEjfC6dqIZhcfHSdjge8KIK8t2qDb9xfww/LZ0edYe276hG4fSoRwdLKiurFxyUOnSbHoU3uvLszyYgSbSqJF0fm8JDJIeyUxUQ+LwpirtgHkfy1A/grAuJD5AT2zK9p4z3+okqUGxiJuIyH4/xoHrcYf5/jyYUVhoQalt8HGDagC0lKsnr9GIUY5GcAW+2Ybpkw+h4B34ldRanQV3kHSnzUvQ2yT4r3JwpGRsX+DOaKpzNFHlVUrKBLsBUwiifVsfCHFGoJZMYoHyebckcuLsihAb4wH1nUUQyLWpLLT7C+IlZ2j0zFX8iNLbpNYp89vP7zOrARHpwVXpvVjAeso900PD1REhqZJb+0ORCPlLvLdWzvXGLMMDxaLFuUEkRgGHtfR3A1TCEbmfiPcIPrtTf165BR1+X8O0pqn0xtKDXtIZa+BK+a3z5hEzcx97oQLcom3q7YZxGhOCSKY9E91mdc0hZa5Sw5x6gP7poFwz21EMtFjoaR5/ruvWUKl87zlCcUxetOAOtCgWbKxvM0RgXbj40KjuNdESsz8gJ6jbcyUXWFzd3lo2y8WRzH2+JQLErmDVV8oQT3JVhRGamsrNf/1ME64GYFICOWL1d0upYEnzNX2sC1VKIWlOUJ75xI479XSe3Lw7szYoaP/JEfvaIF491U/apFaNPcKciasFDHPVIMPXdrPHpnb2ILT7zzNztn4Aqz3QrR6uRKH/RgV8HPypULCC6Wkqyf9j1GiadzNsthOlOLMdHuCMUlX4ArmVgkup1Qut2hmLXEdfG+IaGJp05DqWSCaN97PZh2JHcmKgLriewOHTd4gPCedSmgqpFB8tnR0tze/KuI8/yK2BLNO/cIIouP66iSTNtu/Ns/6IybzRBag/7KMlTbnq+9u0Dbm2GX9SFlv/wPG91VFInHbo1ROyR1aVRr51N8ICY2SaMFery2DfyLCyc/mxL2pwQ6KicSXAevoz0HBFBjkEAyeVm4Lc5Ejw02SyXstD+lB0KCAGIGD6Qh45R3FttmGkkN/HK7zN50vY0F8uIzmDn/S8hcnDAS0l1lOfdeLo3DRYuqIbwbvdeSiXSwjzu+dDx9x9X/PLOMgEVqsdHFYZ/odp7v/69C+6HW0GXIwS82+L0v4aihp0RIRIBGTQO111h9oa0FlRVFPyGjFCIGl43CYEIzL6Q/FIwGHFaZG7nQW1iB2aCMhvOuTZCpMJiWt2puGTeQN+oyysnr9YiFYks4YJUNUSXHiMgeiEIpyEkQZkl3sEgosIDKauwTsMlHimRlHv/gYgaIZHQBFHvHX0ACVTVCOdGiFVZxFNbrJGGyqffu9h771os3BDpIF5EV33Rx8LvFOq0sCWu4YytcbZ13Xls8XMtTXBRm/7xg6lVJWHv8euhXeyKd1dla+X/2aPKcbLi9U5Ihy7ZLmNpGp7BFFRND/NUxbGddpe0K/mBzjUgd2iyzS/KDtUFEVifAdmHjcFJmJgfVamd3AcmGi3QSBYgxIndd1cRgpdsmSskMi+Zj2PCzDQvbx3SLqPbvlggnEaJUqvSIt5JSxW4tW7w5efQkT9WQ1b2a4U6lRH2zQ6L0eBEMnLG40yppRFJBRVZME+SV4M3m7ZNVWdEneEYikWQgRVU+ZEdAY+mx+DiY9dg3OoG1b3RPXpkNXA5h4B2j8f5vrcwUZ99RpkT5GVaNt0w5jMEfFThksRM9+ksQFMeivCjxzO6P0o6iRzaMKZcZC8dG8Ep6JAjRjqOPkBnHMFn7I6AJmQZDAMZlNiksHMCQWQRAp2GUw4kd0B3s8nUeCOq+0TVMXU471buLSKI+UEep+Ltg1bd1xFJVkTBZ68nes3LRjPM5hPgMMDrcnC2IQlIaEpXoQmdnXJSGVxKsyOkaIXMocMhvJ3GRi3xFRXQyYW2Ix6buXA3Gu+YQ7LstCasCyQU7YFZSL4odqHCF1f7tQetw9Yafni9cmnvTIWHCS/9jt4Z+reHEB/elL75Tgtz2odKNyRp37QJPGl23EcebesZl6TPifk8mR6WYUVM4OoN41rWWM1ABfvJh8UJZQxqNgxOT+0pxIOiE3hbEHFUwy3xvcctav9zsmKiyRHa/0qa9UJyiJ1XEksuggqnOg9V6m/25CkUfiBxi7bqAw5t1C/bWnxupn0a2iUMvQE4U6Ha4MtTFiXuRktVMHp0QiDx4JMsSYwNRI67/Ex/UC8Z4g3qHHRysZOEBQ1HsG01G1WjO1/MG/yxfB+XaNm0uqDeCv8yKZI+khZkBkUPrOHkiOHe17R52z12UR+D6Y/FJz0HXCouZNIUY2MMJjdr/PQk4O65n3ECTSZJrowWQ8/B8HUPhtliyw7Co0KndfUrKuKaknCXClhKr86M3mOCIWOi8nBUhkuRk+lZYQP8cQI1+U4wwJkdb47iBi0vUrbxPCJF3CY8Ujn9JgNflFRp/gVczrDXiXWJUEwny1g3tBwP1uOkCHY54MbKXadM14Lwp92wmVvD4UeZVKzjJ/OZS7wDvnHQmhESyzT1hhIT8gQ/L2PYPnKPJ/JwK8lg2nEoSVcfU0eerfzBBcUo3c4PkLECDKkE6f8TADEti2FE7iRSA/NAtRrYx5X3RFmE30P9YUFf10Owor0M3YkC1o9VUdq7xpSkUJq0OJxSuJQstFV5Hwl0FjQ3yvRDgy9mEz8uvI5ccfwtkjb5MiUMMlouFIhzLbCZNBsVqS9q65Fq05w+9UJ2ZjvnjaMx9GWiysuD+zpUGQsXSurLEumjyyrUz6aBzwjkutwGpMaCAosndPUN+wvBaHXWF56mo2ldZzdVW1erFEMImIH+5/jsvDfK4RAAVabBcszA2raPQIvu0va8+JAPRlWNCCNSfcCg4TeVrGt/ix4qMmNMUzpGonRoRB4BUet8NQJh2fmHnneciqwrXNOh0Quel+6CvhBx2GHPntCvXtTb1/7v27n5XL/RB5o/Ruf+dI0gWJEFlKUABpfzTLF5MFFXHoKELhbdjT3kbLNtUB4RpvCdIN57U1vEdIqbnHF9mQbg3VLPn7BJX89+09nD21/5h1DLE3GLu17tx7gQhoikvs6FoBwntP8wfpHSqemCFSLUiO8enRsrTxcQgTsLbmabWuUx8HQ7V7xiyPjM2uJtjYEk6kBtXbIEKfkr02YqEhKH7Pu7PRO5mZbtpIs2lXt267b+PxgLDYNvPt7+4bPyKhs0ElUqCtWL73JWS92A5xQMbU6QeMo04ZVgiS6ya7vHMWw7rp446uGEaxQTKtQjmtpV7YxUOVZe8UHWjgdNQOyuAXuDYVy7V+5AuMnHdzvlOGYf72j5kKFYz6QEOOhygtQXGiDif8wt9TLMPvlG+VkStYEJGMxFDL35MPoYkLncXSUVP+0TkCGJ3SJD6Gpeuma4BckNazUWmniW55xmqKwK52/IsiSHwGYmWu1JDcGOF1duK58+jR5BkiSOxND7eErarTNkh+hdcNqLblgcaFJPWfbf5OhBJRqM4v7uU5ROLkknN978A5vfDbF9Db0mF2hB20hDatUww34SaQbWHLOZ+pxgaPrwnZoTPiQMWD5veSbxAxg46lfZDWmS7tSTJygwjntCstAeOo+buixVX9NZJ9c906ge+Ms8OdFQLLxYsSwJXaTk1FjyGpSkg9EpWZfZuxvh0cj1YYDASQV0P0wnkirU4uKVSKDVhgYtRsBj5hGArglAddsI2gCrqbs529T7h2D1b7UNFBylL43WD2/nTTjoRUbwNCXLZscDuwnKgaKhQKOFIMjHUnn8NRWPWDrlHuLjm14H0eP91frj2lB2V686MNANI8MDqAOsmquAnwshHxa82JNqg+Fpo1SlwvQ2nJxGrAFON4eSSOe6xr45RsrMhgj3x+8jqCV8HkJRbJzQYm9Sa1doKN2Trwcv8qEQkMRgKHIqVX1uQ0MXXOvkhGlCM41Hp6dpPAoQ9uQ7gCXz3Tq2qYp2/pP89PjtXbjYBpwG7D/fC/Xa8RLEMKaTWTfqUJPt4UAgnT6qD8mJBfX50PRCZeiDg41agFyNGhu6jNHdlINFBX4XZTIXytsT9qsSs711uZehObvOVzmbvuc0elZVpSUYtDG/fYFuVyc3lQVg0RtffD90fwJFTdS11VG5cS4FDQjhcmUsPzy64idIwANgDmc5nXFVgLYVgzZSE8AdJacZMXGVkcjIV73W+8m+n97vmuTYhcBNLhk8stvDlDNcQz06oMaoqMpsKc42uvo8tz0f+Of8jS0bhOv+XMloWKPdsD2CNbRreFAoAWmpMPN4MPUUZN/hrDFlc8Vm13iLY3CZEMCwPRnAGWIn3tbm3BAnFN3HEralTZCOtqHNfGfq8Nm+osw1Z4Vx+kn6x7GDZIy/s5Ye76/4kTSNGrCtB3PRRz1EWxtVjJkKNcWE2D1KOt+Luf3k3zghDYuiLmTYVRfSZvtijkGRCmA7RGYJYaqSpR9WO0aM4+Q5VLXu+9KuS9TrV7FMP1hWmS6H1D43FDPNfcjfTuko7XEqYigj9LRBZjM6uGl6NGdwCJomsbEoz9liJOupp5c/2I+r2PGoRMLkeGQzrxQqu2Bq8+ZqUTDLdmNQqPo9TuH4f3X3LWMvOTJpN20UIDTGDDYMiQH29HQCAguR9sVe0nOP+uLRG66AuXsLQpPJmoh7l4hsipIAGqyqMAY/U2CQV+AsA2oS34dJUVOsq3mbp5Zi2o6+6U/LO3HmbmFN9S6miMt3ajg5rImj20E8nhoUBVcUYkhPm2Kh8W89zLCPaLbczKCQKzjhFe4+x68TYwweDl9B40pDTXp2lN5pvm5IJRlbO6iIYUu1oD1KSvqUeRYV9K21KfQjTEep51rUCc74wf1L1Dhx91eaS8QfDot8tGGAtkIkLxN8pCaLIRFCtWZMNA6kGYhkZCJSTo8+9LM9a2zZXukbvOtcNo5nnrxHX3wPXwKo2f9ULnuUk9Yu7/PKb7NxlErK4DVr3lQVPahsJlxKL3n2dUNCTzkh/Pa/oilrWRRt4ZM/ewaNjT0qlqTU6BVh7H8ezo1tSLu7Ln2Zr9NUMh+CTQrC9pCKvWiH5KO5g/YTJt7cHpeRTFwpCQmw4z3p4rKzbCbSR5KBhFB/Y2Uo/O04DXm5q+4xp2dz1CzosKeV3nCgQ7GQQjqg+eB2jxFCcINHIy6Co+sIxc0xyFP8DidGtvegOu/+RSSoUvNetLjcCM1emcY40Qn9MBJZQ9NvSn4ItXn0bX4SuFABchKFYoU39hSPnRoS/Q41xmTDfY7U3k+jso8D7nQrNtX0qfGF3tA/gbSYmvhl7FYeTmnNupPaL2QuOTePGZfy5k5M0kmPxXMYB9738bvY5k+uNzQzj/Xe5Nu0ECpL3+MHU8M5YGIZIp9Q7VDtKAxrqzUxkn039+1Ztliu6DsheYx2z37V0B0ACdTFfLxuhP8TOZLKmXFUBm36nPhpe9kjMSE7s1hm9/4y9v0Rw4rTHi9gU3byLIvro3T07anxtOKbTA3x+JomzXMTwIkqGDLhSqMHx+fjswqMrW0VlG6x3GxNPjnATBObfXdUQnUMGrlP+I/m1ry3x4Vg+1J9j4jVkJuLWgQFrYcaIp4RbsDRahOhXDW8u2XrEWVoOLP2teRfpJn5JGGeHYleim6I6Iig54THgGEzMPbIOrw85f/A8m8a7bdYDKYeyIdKnva/LYa/YuGKOJhhblNfzc3w8Qd3d9k7hIsuEfJE5E4/qIJ+g+tzyA7v0jrUruqBf9U/Z+YwWvbQyor9iRd5ycGhXYgxGQhUPhrdDXQSUBHHK500sYbI1sCy98PT5OCT1WIpOIhj5rSLcP48mGpc59GCb8EH/6MkY4aHmbeo/fk4/XvVOLF62fe1OVufmx4r4bfRs1MJWkNvYnEoNEGrXBviLHSpzKFQ4oC6ICPdN+LCPOa2oR/oUlI9WOQKIMmU3h6nwL+CKLSroY+VrKl5nf1ChzENa2PaKoV3CIPBO9R153DVqEdlemDmKpSS53idR1x9SJMk8aqHSIUcMoQHAXyr2Sb90RIii2uv1rzSeo8K9ir40+GHw8tLAUFmRuBIvL4YUoNyyplNSQJlYfoxtaXBkAMZg6bakuLqJzIyggvHwqUeuFfNyTCUXYPoYNfKk4+aADUJukXtK/03Jf++P9uEYJDqUGPNXKOfQuslqfHPpEqexb3AVJkwvOUQ+ePFjVPZs5OomELWL72yGGgZ+RaYRorOgNZQalBFLZZSxsVRP1YJfCc3v8SMgkc7+g+OHAYZ01SbPEcgq5d+LmCTRhXpoDdO8IepbGv/bEIVZKu8iBi2lyi1Cg2NYCQLzVWkfKLqm5nonUUkuLU/S+5X6FgOHPLizrQXObm1i/7zA29vo1peYkFCLxc37zfaGjcWEmp8+09oOULYw4Uw/qVXrXC2fdsgXVZLC99fAFGgenJ7khOXg7tHJO/fQ9+L4aPgKh6KYWM3j2m56CRN0586CyxV07bgOYnZzn5A6B9MJ+++9perrFA/pqfmy00o9DFwdy+bjYx/UfZ99XkytoBzMGfpeimaLw8FTjfCE8nGapxBfh/54h5ozkKCFkxUSD2An0zh3rlqcYXrq4F7VY4rWSug7b/jA7/3PiCqZP7u/TJbkVk+871ZDx6UmiyLj1hTMT33G2LMWnzjyvOsO9tmv7lyUWm7rdj6z+29yXAv+lZEnnejzepbHT+7vCwvspR6QCBjxaMMxYdUChsPlbdfsqZCWCPTw8EtpH2s862XyoIte6dOV98kXIjvduhjLyNwFn9L+hoXGz5PWZO9q8TEwKtWvyBWfz0JYNQITxyQBUocU/bJiSzaGujklRN3VSVbnfje/7aiv9i3S94qJYja1sSdFeLyFpGHOlXhkeOjBjL4gHgPKOzsSEKY4nzapdNGkr5m283tIRDqxcCwKYEdLe8VWXRHrohkRHTp+tOPJ9X78/68t1kfYwpk5fhWsvUjCpHo/ql1vGQ0kD3XfabW4Hq806P98Er6xC2E/LwNLwyiNBUt9RJi+wBFgluYzYmSKB82tZ0tpRKGwqKbfEHKSYVkSuuYQ5gunV2PT7m+X99fkmABenQsOAp20IMbGIRY/hVIciF0AlRUVB7hCXTG0uZCoOGKQAQQYFOxuHQGsVLBFUjkUPvvLIEG6n/CEPbrsidtYPPvnxu38afJb898LJtsDG7r+smqw9+H7yu2JDsSZzo9WyOtH1bCeUaqrYXq4+pGIpRo1O4qC2uBSTEKaZhwIxXfmRKeFNLN9aGUrY5YnippG4o+5sF4/7AoU8/iA9+8/l+10/fai59X/Rus2WeU8TWQ7slEIRTCuoNm6lP1qLvgidmDbbhbxISJmNZQ22CF2j3xFUDOAfTfXwqunp49C87Fq6f6rnsomhiNcl/zNL41CTQD/edBT04VnTyonz4otgWRrU1DLLEh1e0CdErRwZZQ+kDwIZ/P5quXJOrbLz2b/ej152gJC6umYtOag6q5GlRSjIOEjeUcLhvCdF4fLUL+w2w7WztJZFL12xzPsSykBwflBza3i0gNQm6bnVY6pTg9wYZIAFVLM6p6b4vdpyCxqSZcLIUMdu5en7ZfyqAPuWDN09HSPGIYivRtDC3CB11zteTHSb8XmVHdigrAqfAOIslh3e4yYNSY+41+byL7ETU+KLg4Du/tgx3V2UnKAVj3EbsqYR/OEzeE3yOLG5VvL2rUw0bZCuxGIS5GXRb0x4epG5U7zCQP0c1UQ7ztagiijQ0EdvV+Dibygo6rRSBQHP4ZwjgxL1nDH8K3ez8+FytAOCx09BSJ8IDXZ7hLNmsfxYZxr4+mIKb0P8O7Axs9CiJ4vXyvPQCOaKf3XiNLOlYv1SGl2b2BRN85hiL0inw5DJAcdWqdq7AJD59+Q2mrcu2MGg2ICQCAcrUIR4xbgxfhwwkq+DjKKv6vxILXSObRqvRiHlg2qacysEx36hiYy05cMv2RAiZKpOzdKa/dTT6T+qomz+2GXzGt494ege2Z0fX6GhWPXntkyEU1cEIifjhNhhY2nv3Z5kBiYT1p8XQTMgR2lYVdSGTSE7A1hKZiaoE3Zi8a0x5wwjvEeTk+JpweAVaSBhjuIBpoxLFEPEgwBrhCwh8sBBzGi21N0CQlgGECit1AaleaarqTQMMxmbOne9DBxJh0h1MF3HGVwNxSmoQrhBp8/wFdn1bqkb0JrLYM2JD0UpQE4PSbD0BpZw1xo00Ahrg8sIU8wAY6N5Y0FDRY48jjsH9rH+//5MF1/cgoY3Wtwf9Y2tNfmkZSUTSDBieSdC6i5VLuUKCgsbkkZnRnHXLSL8rB4KawVIq3Pn6MI5lYX/D+WHUCP65/OY7X7blVBxw2eWYjBFK78WkMbYFW50+PHAnht2pUGFyiJnosA1+KebWjrTVlD0MU36ZYl/AzBw2pCUh4//AU6IDQPCinAWlKyaQJD3NvulZPsF7lJ/shNeioi3FFeaWlp3+O4mD3XJYTJkmCPGxw5Qky6RW4lhfqEhKf9OYfH//Kx7kVVnWqm1VLuQEnumC9+G6gLLopqnl71qucMim8+UfcfWxK3pAqOB7F93nc8COXiseMdQq3HlLJ6JEgwG+1B1kVJBae5bY8b6UtECRg6sIlG1vpnljsXoSflhEcDLFEOc7Yt7KaM5mkC3I1AA7fKPFI7c7LbcvA6p0R9p38I3yXj7m8wF4nlXXH05Aies2btMcO/JAQKxSLcEv8WFM+78tD5Wbge4zqjCg3C2fMt7tmvS/JkioTQ/7u80U2iCjwmMtW0tRx5+icEZSKOI+evmw8k2mqAYdoBIyUW72hpNv7PIq5YyXEPON4hCOvWpI5BSxZUwpsIRI++I1UweGepIdCcBo13FXuUQl8tkYFwA0gqh+FUa2p6W8culGW3jjD8VUOzQo4i5BfMkci8caShu/q9TON2RlzE2TVxI2C5XLkviMPiZq1D6JSn2HSiSB0sYImtDk34DnWtcJHd+aU3qm3lF5C2Fn8M+pepWqnMZ6qa/j7fzfBZO19vrhvtfayCiveAIa37f5ooq9ywGtoCluIQ+pElOYTtof8KmojlSsv+6kUfOll9fj8gZyP2EdegOk7hxxXBmeUAaBnWd+QRV3wYq5lpSF/8dNALVONs3PzCLLytDhepEV668zFXA4uI5AJeWSfoCP3+tzSF6kTznY/b44SvICn1YT/qAxy11hD5Opj45Jhkx4QK1q5F8QVP/su5+68wQx9e3M7DJDoKbh+A3b/xM1ycTjcwLCT9CSeLQk/Yf1kxDnEqQ0BgvD6VO69BQpxW9YCC3zQio9F/BjIa3+dJD1Eq8uHxkBB0P6JkOqnTh53dL9fPoptLO1vcaCgmQtPJN/gWForgtojZTUa7bRJ6FVV7Wwbwij9nsxdw4DSrfZKUVjaiiplWi/z6cIBWe1lXOSWfDOp1erNt1HBf3RqZWo7mh2lNypsyONx8JUCnL1cjKG93W42EqFGGHT0+OhKC3859wnWTq5tS6xKrWQ14I5RIHTxGcSAMaGt6WKGK7EqkKxSeDxVCBGDuqCVoKnz2u/tfKhUf+CZHSeNM5RNt/ExFZ3YqDunanseRgFSibsx7lvKtZxNUCdq3Mq38rmk+NbCkpunT9xYJ70EQkxRS5TE5brTfr+BMAgDUdgLJ7ml3OI7qbndEkFQ3yg73KwuQCjLnpcXb9fVWxNVqCXp1q01hquOEX9u36SbBTeK7gRDbZVpnBAEtB8x0bVmMlB1SNaa6rBmdejuiOfjNXSRhzvPSAGFtC5m1hFZg0F+onMo8QYOfBhVyI4W5ZOah0DQcAWrzdfAKvDgL5kJW6gN/CDMUzG3XwejY7vzHnAg0uzBgEI5OvqPyHY4evs4+EtEWvk4MBJccEA/MeJTIFR4l4/+S14WVDfpnww4UDow0Hmxqf8WBEt0+v7Z0X6Rgiknl8LveOElwD+dFxGrZ7wn+edCjBJ+0+TLbw8puwd71Mt8sh6halRQtSynWPihwY5qTNENv6eIi3IxYyGK8KlbP9ywxngbuOyOPOvDUufO2C33zL+39MiBO3x+iflplAvUgBr4u0T5lqkAhbpHGYJ/DIqKyu/jTIzRSjNTNqcgH9Yl01nzcnQsWOyJ1HfB9nRUc4RTLKGjgEi8y7cyJfgHBGMaSPvvH/AnTbs7gSjWZOdtkmPUmuHoYqj4x89lXPiQcX9A1iS0ePLpti0apVv6lknzdO1FNqUhLLx6pGJLanDgV0i4M0j/Tzvrb3fIO43jZlAo1iL+DPr75jTb4B2c9UN9Dzz93PVPMHezIvj44nMi8khhRHzYx6fTU5TwimQT2eu0xE+lYI0qAundsG0fyrhrL2hDqx59VREWkXKmFdyiLf7JPgYw4N4+Fk5c7273Yuti9hy5Tc5Fqug9g43SiVXb3RBtVO1DMRxr1BUDv4idz9SQy3xPt4n6TxQltIX1AVGZUZE43L1h1kiJ97dXchtepW14jbY70zfvZSlOnxP5flrshnlHbfbDEv0yvboH38+apvjluLYZ6cyfd+Cdkl9HbFnYecLHmODeCUvvhK1/wsThyq50aOjNkq0GuFJx0O7Vl0rQxEFcodhdfRRWB5zIRK+iqDZldv1iPFVanY4YqhO1ccyaY9oSB1UNHftzRRlqNBqewSHzBZDCtNfwLdPBwnmd67Zr8DLOmasnoPV2tIHZPQnnOSdfMD+J02Meay/xaMc7y0wTkDGd0CBvWrFpkGgAhaaExh72DibB7anbwiBY9s9oOhj6MQPzPKrGJK1cag8G2023122YOzWL0WpsD9sAlTQA5fU0hhF00Zwwpef+GKgDzoPMWMMMI/7SDkAIkPYDKRpUXioPYdFD4x5tSP2m0AqmNQ/OJZJXr2Dc8DXoMdGSnuDV+eMhHRM2si8/SeIwHj+L7SIaLPwfn9w+Jye31a8fk+YH+zaKfH8L9XdqEPKtSG27Rim3kW35fwxg4zOFASNvjmEqEZE/fNVvKIJlxHrAavmQmzogD7rgVF3gnGUC9MYxaSDyTm3+jIppqt1E1dkXesHyTP4iZVwLrI/pCzdXiSW9KILHU+iVfedgsARrRpmYz8jc9tTdfgt33WdAg+p03MImjHHowHs94Iv9Fzc5ADuENOUlxrur3fu9+nSlqAWGUCHNkgycBAk48XwNJXc+datD/sMjfZhB2tVDftOT3ZMOG30OqnGLInvJo/mEt5P3149RvF9Lr3zIQbDKv13sOAv4oTiY+5tddeqtKmcA1s0zHJvcvZC8mjMYgqQGvePuYyY6LQcLBDGmXnicamGSM0q58Ky486TO3Fu0aHKvTuFe4vFRTdGK0yRul8pD/8gFmzT0VV5WeZFlnOfIY8SdhVrOaSLi92nhPdV7W5JzucZr40l0OqsxhZ76xCMpliNALwzZSpI8Q/lhioglNynH7Z7P+OyCUb19UnYn9Mp5n4KNlG0G+2+53pOn7QKi4hKZUZt8Kcf3SHnvf7kh6lIbtO5BEgDGmfDkEmHw8oskT9lcIqJ4n5VClYrpcZfYKXAHmeUaUGIqaoB8Ahy0u8BfHiiPWymr98kZYeWmfEzqoVdLOK4jrIEQI5LdqTUotBtfI9G/X7yFhQUmsQJNwZvO6pB9ECGDU5ncZ1L1QJub1RF1RQxx+apSQVTG9J6jxhZTav2tXfxFdbDTPTwmlqfYc3THM3caEYTjxdr/ftgTal55VuRm2j+pkGr3qKKganBGmGL0FS3z6tARbFxPriaaXsiNN6WioG/tDiOIxRrMFzR8TQkNcJepUzBrbU9+WpFvB75VXF+1SJNRbQpyVWmYI+idFoyjLt0UnCo1h0IlzpZyQQUmo/b+CYiBHvqwSMuSKdfCwID9oAUQahDr5R256am5E07j9eJLRfcSvwXMeR+mn8sQzGwCnDVdLIPR1p8lopsVopfPpkhlPqq9Y2pSu/dHmb/gCUqyZ1BBeujeF/bhYfvqDVgymjwcOOyKsDI93qK7/1DROLU9A4af/UWDYi+RcMvcXO1m4SYrkgs4KUkJjUTWwqsRN+/0mD6JHSG6Rl8OLoc4mvF1BGvFEjIaI4olCw+BcfStHHZLFW+UrIS7iFudOjez8CiYufQ/XP9+kHqF0ip+RTx+88RbhKTzBqcL24S3OX4Gi2v8cIlWo6Ubyu+JjFQhz/wYBi4ziRbb7dpV5MhvqrYX3aT5DDq17wrte5uczFS+s79p7z9+WfBmMmF9+HSYhzra/VY5gu5JImIXWGaNPCn/7dMasN8traX+7pGgW7S4xOnwfpwjoHBKwkUYMCur96FJCbszsMjAy0gK38Qe5No2NFOYsHszb7rulIx/r+0ACC8bRU5ZLV/Xw0WKjd0G5VDVZg6GGUy7hymiPgtQD6aTjwSPo+prXdAoXW5k0ss/zQ01TSOP9Yry4OLisH0+bGmJjmqogEEtN+y9bFNODHU9NF4snLAAJjWOeCHZoxahShwUN3nFl4JRrlMuRkEQvhKHSBThJ/qYd70zO+0lUEbBr0qBwsmhGFzN0r0bcCAfKOU/0UjvfEfJgUU2SzQ8sxLPK95IUiIxmSJTGiSfgWYc/N7ZEojqdaPjBy5LnSvyk5l6X2WlxebFmyDjOSSB6nTT/fFmOHcWk7556mKRC1YcC3bZDBNuAoY1hfN+CX0kVoR0h3oWjVTXO7MXutAlX3t+Oo0kM5dyEJNE0JSC+FLtk5Bzi7QY/PIFzNVUgZ6yhR6lXBys8XVkeXAK4B5CdSI0BAHCNvGRejJelFFfG4IZADtHAflT5FtgJmTFPi6h3ZZszXb7Zwrzh0s+h+g4eFfM8XpOPpdUpoQhvaVn1DzCQOHCAxlL5mBrqRSIHfk8YODuGAkYYDNe/ZI0wswZcDFEXaVuALlymRzx+ndoB2/csq88OBlmMz88fjSVqaifNkgT8y9Eowgjnj4AtoDA2oT8Q0x+ZsdLd1GTtNRBoKTzlyTHGH5SgKNX8uiXlQgPz5oezch0m1x2vxtHX69mTivTYwukkifrZ11l0lvBNFKsFcMKskowpBzfu0qCatYPQ47Yl21CQsLPOIP4jtBvMn32lRRuGQaM6/23868xQc5nRm8eBf3YwTjznGW2ReXLPMm0RE/NOpZoYurMaInak5+ISaOSgQPN8jViSRqBFSrDA7kBRGGr0QxJk+qgk1AHIZNRPwF7qT1tbaG1Noq5YBGGooLpoKTAapl1WhkShtSCuXKpSnZqpHZKBFrSA2XeELlOOgG+9hCWDjFwyXcQ0WmU2ukTqCcHNXQEYdn0HS79Vh6qe004I6GaTDKl7n1GoLfomXaUstb6qQHb4SltywnrqZ8ycHLbcAZ6jy38kakB8+0+VyqBI9oRiQPtbn0yW7AlDdNd1Fw/6O05ilZKlU0oLt0w8JU+izKDKGaAIrJkidRNd00w3ghqzVRVbbi+fY0O9I9AYAD9UA3qQIYBUHmVATDcChL0ih0ZyKr65I/g84NBv9DoL5htgsW2Iz6SH2w3mU9Bg577oXvWFpr/aseFkbvs2DDLcckl3tEiLSacD8ATNwYOJ+2UOcmDJxmExQR7S7mUCooI4HjJXTWUyP/oUAzRcWwKul2GoND9uJ7GRC0NnoiH/o4JWJraj67860UsHYJW9TSmCMZqYA4fNYgI8mmoNUucqel58634FL3B9GMzMKdSjMKX/umtOUSTKsLR/l5Hr58ITxn26FaVEMsjW0FEW/9cSjbHmSRWLL2CwujH9QxtxL5hu0J68aZwdpMBuv3HE+8GzJTdfbocG0Sdf+zTHLPez/3uN/Kc4tgX0Cuwtb/gEbTG3J8G4zrSXzmJRtZ82XQ/BtzcSQGOEmTdc/qCJhXOp/XBXDq2MQ1FOyh/yPxIg1XOXuTi6X5Ew6Ev+FAP3x0X2Y1XyfqOKfYabRshUHXxVrfCHvOzvw8azMauB/MYRQe5wd4RYxD2VroVEhgqQicoOTVIyaYDSN86TZfbIuDceEmuf65/S2SfLnGJB198XwCa4YN6ullm582vRvcZ+v0HOeZ9HuU96exXSr8hMmCTy9R7XIAyLZERoXVKZ1ZHU8CKa60ddJoLg5oH715OF2fR6LFYE8vzedDiwbOV5cBmvP9p/oc9BYoPvN6+6eHb5sx15ZIhfEvbPogTPqDZVX2wxPAjhQD9gG+TDQmc+0s54I19Xra141ieSaktmrXkfRgpSD6rkZbTnpKOu/JOE2VGDU2Gw+piId0YNnvdK3XTJVkD53+Puhi3JjkiJB0w5cg3ZVFE9l/ygrKZnFGh3ovGXtIeV/+HROsgPbxbqEQXPeUWQ6SiYB/WwEvf6K98dMqQ+I7SujrfFXuKP41VCqdes0CCpOkDZ3O/KHez67PKv3PvMU+5v8+Kayjmh8aKsI9w4GdG0rTuqVM70hphJyQ/uF4wYf/ra0oO8wYnbZzNWf2r3JkMbr5kIEzLx+IkYVRsL0RsSI6x63rHa5bYxViieKv3WUOngYGAqoE7ZZxtNw1AJ6/8CiOdSUNQkkZIiV5FxNihPUnhlNIajdzako1ue/wkMTsKT+Rw4DyHE9xVjKzbiuuRHESTAgJgtAHurzk+8ZrvFzdUMm1Cq3al4ZlsCG6KEP9lbt6mpmAAzr7P2+i6D+jNr/Xra5svE7LO3F/3y/hrrbnck5MpIc0eD4oOKCSDqBB7cIDEcLYhtoG3uIlsf00ruSf0eRIWkpOhruVmVJAbeI6DNk9nME4sn0ivz8z0EHH34krFHQxh/LHqfJyPFoLX8+8j6HYItK75TOhm+0MpTv7d0pJCF9JE5FXo9L8vU4vJR3Pd+ta/7fHNbbR3fBJsZIxqhIGJ7RsV18L+ragcpmv1U5jtRffcb8jM/wxhcTIyfAo+4DWZUYRbv9XZQm297415bkvlweTztI8ZrhaWflUFyENGTh58yOcyp/OU7CrtNwiWN81m8C3Y47HIo5A0f3zDm8Z9+OpaMCsHpI8BtinA7iQ3hPngXb1H86/7z6ftSnmVBFRULNldEf6dRVOdOuOEsqmZFuuQWUhS/qQwqHFr/tYWxNOQgnjXH5uliEa+i95YzeGi+6cQj0MMwQh6u++FvvU/vg4XSHMV+DvErZvYe+8+r8RLat7/GnqDnrxH1jl3+tIQunSOdqG7RtI4i1fmODF7hZF1EqnbtqLKrwVy0jXDWQYtyfF6MxpokAqQNYXh1LxgKYcWVA+8QRqdMyt+XtaKUOQ+fdtqGybZOW3wY5PrnWEIjhNoOP2fBLfsxyefNPYkHq/v7z2SouFq878Qmma2+4PJBo2u0HIwJXQRwCSMUmpOxm46cTM64TMFhKSSkXTkQD1aHaJ7ZF1d+tQZZdX9zESjsxhe+CzeQqUIakxHTkXKpjTYLKOGPue+cbv9uQ6ZpTL4BLE61F+LmzsCIGh/NIyEQ9bzdpJLagQc8+DgF7/l9jifPvSsKm3eJjS2z/fe9Npfal+8M/dFk1KY5BwhA5LCMJ+47RPr2LBLb+5xU/b/GLWuPj6ZxcylXP4hnWRIu99TmwIo1xIH6QPTkVef4lxbrahihUSZjU+UoH2LKxdHFkqd1JsbrE+qq22qfY99+obWivES5Cn79xh7SRUOGwGLUZA2Y5ZFZPicPs06u5yYb1iLlio9gPp50P9gjf19Gwu9JAHwqQUwXwu8hCOe9tXYN12z3dqj0od8Vmw+wr6Sfzz2Mw0alpgOTVSraNxnJuu5EGjVV4JbedtXvI9xTKf9bbXUt8KEWrgOhDPfsUBNWfDjEJx1Ky45vt9Ytb6L4hPSkCHtxUF9pmBlfeSEawevTkmzDHZSBrH9d1qHvYgbtUVPzOv2SgHTqbzeK48IlpohHRTmbfATFH05qOblnnEZDaAcB6g3QOcL4mMKjaWwV9X6wT0YW6PGXSu/6nk6hMF60ibh5urZWpulEL8BDj8mOH1neMkiP2ysADkA3MuY4AB6GXx1wQdhgjz3d8rK8/g3zHSoTnLm4XIyOVXhQcIUiLZLl4yKyXa90WJuAc6p9NyGd5B4cJ1vv3s13LgcGC2QXIkbV8tptKF5nvinHJaUVhK7bp5VyVH5Pf9NzAdBS9sUcJtaE9i+PVrQOzq1K8qh2Zetdxlu6xiLsLgpommwyavTQ/KDbaKRThMGKv0hNrY+dBabDUABFkzMOoqCNUyr9Wd5u8nKLtYtisKQ6LStVtA9HepQVwNl2DpkSpujD6OdTtQ1Jqk2HGViqrHAulbJTMifA5Ft9Qusbg2MdpRlXk+KSZISQbLPTlj7n3HTzFEbQR9YDtCy3l97Y64IFDZ0fMj8g+EgTEp+3ytTJDlGeWZMZfUWonzOjxPSYLxvOJGYsDdqkelz+SZsFH40YSmGL9UkO5INPtk2oHh8PHYjb3NKSit7HMhqRsNmeNKp06VotUgVGZesaCS1uqqS6hL96aN66tFzTapRZhqT6US/OgU5qcCosKkuNbUQXY7AJQDi5DnLp2rDrIUya3cUsrkulN8itqGPecKxGQ8BJew/VaiiIiMvE3LrA9q1/aU2MJTOUqF5ta5EvCNG5YCdKDx6ovrWq8bYPS3mX+vBwYp3CZ/qsVpVv/AwbW68hjitwJZ5LwuJqjDOMf+F4g6inPYrG7SU7RjdeHfoviK6u7zRaHsuy0u87X2XNyGT4XkXJFlOIoRcHBCVGbi250PUQ7D/G9GRsCgECo/I/Ky9xBeHt9slpXKRiO7ud/xI5+OIl694dI65fKmy7MDWobe1jKHOjP7aS+TZymjggKWUfoEo4nYbdJH8QCDu/LGGPuLVhSWgE7DxCQFM+eXOgJmw6i6BdcMXgIq91H7J4N2e/o0wLuesopqPs9uFvEMshOXj824vnJ5xZf77N/bS/PuM/R5jGfDA5YSNnAKWExbCAJ93CR97ZLgijfVn+HNFCFsQm3LpKclt/bhhECxgi6H4igRZqQbNIfDFkwi+DBpJl0ZU5pUHenjuzpxBIVJfcrYobAWT4u5KxE4uH7hUS3qiVWtPCwdcFdVz+20GBAHGMNAL+QxRGM3dXQsaBRzK9F9UFKS9Dq0bAg9YSxxcErCAEfFK9LNiK+LfnejflEpR8M1ojtDGURxXv/BpzFVXzt6DQhYhSm/GOeqaWRA0Ehyjr5x27q+hLk2X2+I9ATFgZVxWeNUEzyuOq+KyOmIJMYjTkQlnap31I0a/O+omlkaMebVKy9hXDAWW7lfej+wlpCDTEdyssy5sUoCTVFezJPGiGl/wg3fStp+oKvKysijYDh07k8vb3ITc/5MRQQv4K4KQy4UqzGR8J52gXzlp69S+TgcaOLAXgH6DNsDbVh0NOkBWGjkwEtmcPfNK69zHvhhg5T3SD9n5/GFvFKOjhaQh5fVi2wM7ZORgepacR3SiGYEltZp6pXB6WAXBWVl2jVkyPvMds6/Zul8MAIrru5Z77iUG79+FbvIJeWzsmqT5jU8cXNUu+vyr4qK0G70x/yo863VRLLiqWTAR8z5rf3kUtiCJWkEdTkkejz2VVUm18bPTarCcl8euuLw7QgWhF5LMZ3bUpdgdrby+/xU+Wam0D+nd7KRLhTx9bTRXFh8ebJfijT0qnkWcmFh8pgwlhRlkkZ9H1fHqrZdeTl5sibLFaLh1/yJsNFvjhZiwHr1KQx5kWH6pYfxbxIFQ/p2G7Ue7d8f8FdfCg9UfI/W8fCxGH8J+g7sU2r7a4rOzTFdvEaL21Pivdy3NY+j2fXyuJiHoPujdDbs7zpu8G7+Cxh3kuoP8z+0AwUWKr/xJmiI8VxNZurlzVOZtwS24LnwYHuzWJ4/dQYw2Oc/0OQfbgzoMCOJ6n+2e7SBPlwe+Phr133cwzVS01f20pDC8eHR2sgFoqYI9dQtzx3cu1jn64vvrgX+wBkWT8rg7OJXrVyvWlHfvCtGh9RCypnRj1S389RjF8ZODnerNDNMKw7G8IcWD8T1FcOgVs2o8EfOq55LjOIsERdyXWansmIcRMRF0AYD1EOy+wl7VGkEMv/rOP/XcsuOyw5YoCJC51PbOqgOAGIbN+E/SYMLRaDWoW84iAS0uIZj0ndWkv9Vw1frHsGdPh+qOBSmqwWigRVqNumf4VOumJeGR8zB0Ezm8f2SB6JU5BFStvPa5osUctfAMfd3LI1t9RPn9KhrT6K/efFJGd9aUVs1KTIsWfgcl6G2TmCgLJlRt9b6aNLli+pI0iNwZW+b5ULGOxVpXOR+dD93voEAlfvDm31SrR+25MoC/CNWHwEtHkmUGuuD1Dag7IPY3kp1yguJZml3CRY/Vjo8AJc6F0oFcFPSylhO8A1JZEY4j0QGPnuQhemrbY6j/L2m/2G17I0Ovu8PksYxa9Wswwrd/C81s/iG+7lAI/Hx+X2AQT+3kjNmhjt0CRpD67+Qudt8YN9g+fOTVK3nsMUuR1JvK6Aluy24NJF9YZISXD1tYhzV/LIcAfx+pCMwDsPdSd9bnpOmob3N0fQsmhERf94FHr8NgSKkWZdBmiw1lhjR93mFns6stJp+TWLhrOyaTEIczXeJE1aAJ0LjnV0c1Fz4D/Y9SkBfeBNmMLZ3U0GBR3c8Ln0wFGgQYQ1u8NgbvPbTtdQrHxPTC288Jeq6N2TMAONtTUsT3lAr4bU46cchDxep/IZ+13ghYoDnXrzBOGjeDkPABurttAF9IoWPXJFWy0XLP793Cd7vEEgxtfAqwd/xnVsarh+a3hSteyRYKFtwu19A3v1Crr7YlL7t22AcxkWreUVGR0l3Frc/DzsYrnAmAOTUVDXNc1IaKeJbqVFbkFKyip65UUH2scoskHnVVgiL+nm2VV2JomhNeijL6iEmJl1RctWuJ4myx/ju8nQHk1h9pgWlVLtL3o4ENWQiBGKiBJOi3DWPPKDI3qfZwIae4j8pxQ6Z+0RAKPTJC6qzSXgrtn4OPFUFbLJTpKOp+o6LxUhqmNOUsSWaIhYdfIcUGB18cau9QZ2sCwzSYVjIUqwhuI9poLDaCDaCFDMUm0pzL+HmQ0jyxllJwYHKtzsaMrySbxkR9EBwC2yVKgC0XyqKHKHhkGw/yuYjSZ22f7ha0O4EjgB1GDnmTMAL5Ps8E0Z1H6YYzQnmJf2hhxt79sBuxJKS01fC8ycW95ezvKtKrk8oQos4HWkdaFx9JIQ8BRfoV+W6v8oAtNbayQX1Th1etIARFX433e8w6nsxBcj9R9ZcbpBWjiT76/Kf2F+vjhi6NZbyUhbJNs8lRBH2CFAvDgPBbdNDD1eyCUM2KFLN1DZ5jMvnlpdCbVE3FCsYt6EySm/T0ITSMXomhEWW6g3FtwkF6+I5209qIbuIqyq/CeRDZqdq/PPlaj8pO93vIE4sd1XV6i7AWwAt7CYsH/UzC4Bx6dXvUowbypOvkgo9z3pvoqNqOULpxI+i8+K9vS+nj3WjQxj1K6HDI3Z4qfLNRYHp/dYAiit4UuVP9jwU6ka42SKdy3DzGuZgqPzHo7ti/avvI5dRJNX0Yi+qIHZI7lYBI6erFyQ7VI228Tmc6ZlmFjYgisWBqnpClGClb9v+VUhutDE9kWhCegpLCHeUEQPM8AMbnnyuWnadCGgJ24bQJepz3BmPYhBWCh2UUMsFivOGoVd9rC7Ko0ai9V1wG4KGERyokBuibrPhxw+nfNLzCFCi54Dpxj800bx06jIV0cVsVGJQWJSG4MYl78vVljXMq7ieg+vSsFp1N2VIDOynFC4kZEAsDOtAYv4PrXaEFixEmD9Zi/mypICW+sUEPXq/C4n3OxsgwI0NbKRERMvJUSWA63fKnOqR15fvZD+PXRj13GkjhCCxsVSyhn4YbXmC47OCkfTFB+I/KtbzERA2OaWZuYyq+kfJqq9TO2xHb7JlgXEPOPuF30go5bRBCVZpj8ps32AyAq/ZJQK4OIC5LFQl9TPLIAH4EO90oX4oNro//XOeR5E200Z5D3sYIYkKwg7ZvwTq0BDFUGC7RISjwiuOXOAaJVTQC+fl7WOhNO2ByDSF1+xwlsgDH4xEFcW99fkT0R4QpiofhEyp/hjDdqZ0MdRpfXg17uce6xssGEMzi/cWwVNDM9BSEa5OyPrq+Ki6sReS2uJ6udf0WLJ5sMwqU4VqEUf6KKFFGeUCiCPDY+VADWHhuod8Fxf9q27xcuOXB3P3mT7YxWEun09Ro0L8mAjKDZEhj0GFxL2tiSgaKnX2U5qN2XAO+M2Hhx8i+nw5CQJa+iYzYLjkYRLO5/NiFaFkpFZeLvnPzuvoBIIR99m26v3SWMm33W/7O96qgsZmIxWzdxGJhcK5JZHEWcCt5PaTqe0Xo749EXJzWomKndCEmKTKGTLpfzt7DgI376TzphJwW0tIABACIoz6liNKujRiJA3CNWockM1y7duIbJ+a5ByGTU4HVK7QG0Ti43DpxVSOrT7uJsomtPjx3sLGrTuAuYVyuLS8EpqG3GALBlhnomFFVTqdCdfpSNIRaYWXoYmEGmBSTr1ucxHU818Xh0DqN1gdhTvl0iK5Pj+suGhTDZ3TqiorANhHUR0SEQD/Tz0B0nCFHEAEGMli5D0r7txQPeLIwY4y6EhOCXHqcoiDEMeUBuI+Vy6iXnfZLF60d25+1qLiXVnrLlOW27neZHD7X176aikxKM7EHS+30rGexAxa2c2qFnGPDXzFZlSl7VWmFqfNjZ5VolRjsCTYQokMquC/Y8zDbbUWawie0YipJDqsm9DlCU37DyjCOwEautOnZLRVLVF/HN9T4pItVpuDgUizXlZV2fS0IFChgGfftkRL2AUaHl4hQPX0MAThWFEo87tFAGh2G55NUU1Jm8MmnJ52Y1NJeN/pwqer6dDfFQBBZ21fRza9u+9YR672aTj2FxiYwZvCS94FQvYiDIQI41bH6hnmALbyIZ79fmwXpB6uyCws58Yp3fGt5LlcHvXz+3IvT0JuOiuXvYsaTz56iuQB3uHm2DeBY3DPFt86RMyPpCVtmgKIP/8fij5/xDBV5hO45fCpotpqzzkoFHDVUgftg5SStMI+wPXQSpxTH+15PL8cTiEjo5NhsXWQD/nTc84EL9qZJ57s5FKZe/R5jmUmAnKdeHCk4HwWXY0kztECxq2F2z9YIm+G/JXDfkQ6iTL4YQzrizmuOgl6JrJ44fPcaWs7CNu/yhybZZwUGkxYObUE2mib9lDd32EOj7RemhSqozUI6WqVZzfXSVYMPqqEMy2kUodipTcst8jxzTMPIo6s/DGNDYHlj2I1bhjYlMPqbwiGJtJxgDm8cF0dlVOWy2SzCFSAMx1OAZ6mTNkOSmHsyqxVm7woy1IKN22EfTq6fUCvtvDeW8gX8xkRyRZ7qKGdUHRli1NwcTBG5amZDeb+SlRNl+SYIGp6lnT9CFh4y9L10kRHCgDo248kkhFDrk+uwr7lRi3k6z+VadxQsbETaBbhLQ50FGuSwBz1YqEkQDjuM/7SfoO+6ET/cHFV4G2getiGu6LWn15xeY7rq9LTgwINNHrl6Nmr6UrVqMuKaouQiuVHnJin5FzTAhY2s9CxWI36NxSxNp0BbnDqlr1FXn117uobpNWarzdxvM/EjS+tr51Hz0pbDaAJIG02jNYmLuOJdVD121dTaDOxue+6AIJFAtBDx8qhIXY78KeW4dFKdsvUep302kEIoYweoBIoj5gZAOp3eUEQMmc8vadxHjKry9jaamGvOMqZ8qz0VKnRfrJaogRcvZ7PFG9p0yqlFOvNckfYbLYP5XVrvP6jD3ljpV1qxve+TEzepcefmZrPIxXVOy2ZltaD2ab/ZLKWaGKsbbMAs1AGO4wboQou58eF0pG5HuYvY8O9e0uBKMH2ZkF/9AjT2vbra8OFE4cHG0kEXoAx5ow5BLbqWqVvX7r5MNgGMiTblEn83sFFKjlPTSiaFGK3B6eoST1ocZ4BTdG2xEykPmQJtHZqSqNdyELfrSU27bSOh6DUSDSEwVqIN8vq9s5bMvTrR8rUvA16c9kIDRIxQFYeBStdDBzJ09KKGS+QIPI1+rqoS6W6kdyV64arOQBB226YRE4Re22AkbttFtSJerKOm+y/zy6hAt/KF08y31KTXuJMuMWw+8Ls0cII5kucU65SvdwgWZLFcHJDdJJ9lbrD83p0H0EY+U1QZdXfD5YDY6kO0S5R6i9YQaXRVXHKTx27DhwAJlLaQCsqy1ZJi0WpLyH6AW7NuUurYuXCpE+hqg+6QVClI9euarNmhyhF+WXKnvLsh4Yv3S1rS0vTKNLtTYPFsm9HTvVX81p3pnOVT6fLzqaWlM+z22Q9DYlszY0M3PWcg8qjfIm98Of2SlbXMpWWb5lZ7rWuTBZ8BGdAzaTtHpcSM4iUqROwsd5mz5n8H8eBv0cL8Jo52LlS7eWWmIHp3FvBuY3lc+8ppqqNyTZc8kfN9t01ITW/F03iL2wB1pvHAC3+mwLUz8hzEbwjqUfs7IKGyAhd4GWUtoaDgx5yEVptE2+KloWWAZsFr3Qt4Zbp0v3QPPPG9GZmMmpFNnVT5S2O+aV1dVBNFqiA7FgcUDwJbODGedYq8N3rxaFCbaYZoNtbQWccqtTpMjU8WYHx229z9itSSOQpP1dmAjiCUZi+xC0a0UGLOkpQdJU+T+NMFtYVosZOH0C9F0NXBYmBh0jHU/XgDasHHjgF0B23OmT9Go/IpTjbNsDsiWRfKj3MQO9rqgl12GI6WPR7O82ziy3w6rUXSr4nZUd9X5LVzXgFHmqX8ZyS+um0HAe4XskPwfci8axKKnktBgxGi4YDD/wbfJ5HCgAPsqqMDJglFa+SyOZqcD+t+4yCBOrk9Lxlxo3qCxeC4THxX9inFgyQMu8uRnmuIhzHVITGpbCPUKt4m7dI5upN5pTBHA2gwWgYtXp+QqhJ6PLypu6grWlWcLc1ibn7LNRYXUBOJZzmFAAKPYPWhw9S9ja7OLFYm0pNHOVzRlyVEN8GvMZBxblN2gr+6JytvJXbjm09vI5lKkOISV52OZt6W6565g+UmhM71ZGi39Vu0bnqzojQ7m8m2qZ8R5KHpGbndC62vpevrXQ6FJzMim+ZKm0IZ2iJSl64JivvC2+0D+KDzxMFR1Q/RRK/ejHKL/pwQkrRFx0NxpZPL7s7c7XVbCZQR8mazyhkoUg+WWJwUWVNdc71Ux9VMbd3MuWhFc3BsvtTAC0c/dBx3ObmjyEYKQzlRJIh6DVzBLq3syHH+q06LsPD3OOXARkxeg4FwG8Uxl044RoXM4skBKJtB94dDPOn9qBiPbWKqPoQLGFMH/CsaosOToN9xhXQlvOeEl1JkuxrsmcmiftDntc1rm6/MS3MdlwXQKHhH6MtlYVq9odAxA3hq7XjH5SS3R63Yq2W7hWYUmJAKvZkf99RBWGPjvJ2q1zbey8W2nDvYeyTkO7Hj3Txl4HjyMlYIXTYxKWD8e1UB3ofuFViBl0QgMNMnQhNLbbGvPr3mVJK3HP5TASafqbphk8g7/lhzYxvVrc6lJnE8lMPqyH3fDafSNVKfnXBgRtnjrRcyI45krOa9YLr1RT8hu5/wxCb7taWmYv9EPxgj+53TCHUvNmpllTabX/NbTx5BqrDrEuIQWfemXhtRZV16bs3FJcjkNCz6tfWw0rr142hKrYQDjQgq4AnrMAo3O/3I0604dp4mpcBBbL0F7Y5Qq6O7jm2FkrLj520+WO3HY5wLNVW7VHDGk/1SCkJ1u8elS9XQFXKtK/NYs2CQvyzMUc+VarQd/QreWt56BduA+PETSxNspZVv8zyqZwxnz+duSh4VLtjra5Wfbdcvzh2iy90xZT7S7SmRgKwbaDsiK5LWbNGjDo2GDGo1KJljn7LBMqE3lzKT2aCOHTkc6rXxJb7zJS74ko7g1VWBRvkdfYyiFWMMXq6FpbXvXrrlbgr6EICe3A2/cU54AGCZEDm6CssVcx8I4D1NkocedLHZGbE4Dicg5f4Gc3svkQVf4QvOI0y/r+zI64+/ENjScyoSBlF4CVX714/CbUz8rkD2o6dVvkFrP4HhRqWzh9e3kvhj4/3PJ1lOn9t69ZTrfKRE4+bX6/wr13EsZtCnjrlHh9f2O5SQtB0paDebds2d6iuyF7bMWMexGJfvqP+obxcSfGwLMnDdBJk/EFkzqkFQevFylV9R4asfeimvGqvAPUq8fI72xMs8W0L3fnVqHS2Kcvx3TtePRt1wfOvaqBsiiC0rhj7IvYo5A8oBVlUGlxbl8cr/aA1pVXhGL1qDK0ByolaJuJqeIf0y+Plx49R736817sE+VtEQH8HIwEWihsESSjs81sOKIDji/RBB55GwxdNTOPv8hXjV7PNSShQR8y6A6zhNBWIKRjMT624uoY39Y6yaCZPjguSsAh57YvmhYZwsAk/JiIw3A6Fio2gtkM89XbH6qjHOFKXkLSiy1i1CvFjtTRDQpYJYLZNS4pVcT66wLn5St9/Z3VawV5YdPcgE5NrYbX6lXxlTfFtP6I2P18E/dopsR/4sS+g3fUhZ2DB0VJsfd7SamrM7gQWHrMDK+OgTiepkPu5kuFHK5FwhgGW/caf9kp1d/c9Ur1j8pdiATUDmsqKJsv+97xZuJzIP4+7enJd3Qcl7nA37x39b331bX31bP+0ep8wg5CVDRDv6eMVeu3S9vzf/jdGLpcTdOVrYtj1+/ZwpfmUs/t3mU/6sprrbS3fzOLi+z8z/K8SycmMxL5Ax8jCgStS7X6/5QHQv2rSa0Yq+Xh93Vt4dSUOJXRhipg52XCk8yvNcrINNqSBNsFm3CgVYUbEPdAjAf5B4/RxZk+CRK5yLLsQ1YFl/nWXnMA2LeCvK0k0SeWvgIVvAqJtA2QRq/S9W6MTple/gvEF7pWaBYX4YSUM5Z8fg+uKJt7L3d09qMCFcFxMGL4Su1t2aPWsf4H4/wEk9nwSJpbjmusa8GHlycIBZMNZbV+ish4eRvOFeJ8GsD/YxMlALaDE/oV3EQMHWdM23D8bhSxO6S88UdHF9kQSIdJriNHttfC0kYs3cIsMvUrEPahuyvSOYjFuPbndNzO9jBhP2dQxEhQn9OgmNhuxFDftvcIDbb0MG4LuhlfXX7ImysdSBbT2rD8cH68nhxSloWxU9/hhe8837zwCXx79t1KPx2h3pzgmd3QfR9PZ6fwZQJbqkv9BZtztIirLFdemUhEs5K2DrzxLThwZCCdLwpqalaDpTNZx2seGRxcY4iJncIDlKNAuPEyr3TnCXaPZOYykwOmDSpjb0BHkncYd2FvN+hs0bP/YmHFbYBLHJTEgry6atHrtcOyP2Q0vNWj6gi3PiDw+gWu+/fLeie4pDeOnc88VGDV5A701bOrHip6JVpi7oxjp9ubg0+amEtr306nB3bjqV6lNYVYyoZjtJycX/NlRTHELaCwmbdV8paIsGTB8uzi+fcie+NLB448q/T1cB/MpZtNCvPNZMWxyoCfGf1rFl1sn6UiiZEnX3JyhfTNeKZyff60wVua2YIo5WnEGAX3ypC7rgWZYHPhWniJbL00ZtFz5B7Ed7oALicyBqg+oxb2mK6Lm7VQ/PxxDTmEwuHNMiMRtwu3wPBLGLBdNCGK0Rlsy+X4TThc4PW1zA5Sw3aOIxjk19ramp9bXZvMLsBHSbDxo/2Ra4FHshsy8JKmPpnfh3kXLctQ1w7BUXdukROvlYUKuUmLKffqxO85B6v0CFTxZxk4NlcSPVb0fncf2lbL0C6KLTnrxwYljHYrWeQCpbTk513zxahv0VVqR3tKiyajH5o5R12taaV9Ba9J6D0mF5ilOvrFZdCOcdZ8EaGDculWup2Kk3dYalykUOd/rnFhaq5U4fXH9PAjtVZEv6G4PLis+NqBQsNrUrlcQ295nOqttUCe1wJWEXucOGejeYzu+whUJ82FufJqBcbol4ZaQgoJpVgvotuXhCtInfe47CJNjLB22f/Yp6iBPX9aRo3f/OCxuVKrjBuqO7Fa3Y1WiXJhgMLxQ0A3az+WFQqW3wry6wzC7IOStFOWvrliE4lMefZ0cM/9Atcd60kY7KqmCPsfQ2Y121c3bGwdhTCsqrrH218o+V9CFUXGA0AuV8Q9ymKVxFirZjd8+BCniZJ7IuzIWRMzE+ohqWQ/d1kf4788f4V+1Fdrw8o0lPX7TRWs70B6OgoPC7v+2pw5rkf4eNuPD2ndlmpyuc9oTPR2dFg99mbmx8U83TRtFG+0W1g995W28tPRnERlcXxkdH3vxOHXWfIsRa/BjGuOwFDeT5nuh8drfqrVDsDNb6Ne4gA8/0c1q/BFzi44AXQ4qAOGziN0TnGHzQNQoqiDELivR8oEuGvYvbT767iF2odK13oj0SBpvymwQfr6quDl2APb+jr7X/00XXpXvQSyiWPUE1HM9DNYauFpHY2/eIeZD+38Z8yosRut3JBk+K0tk6ORErpQKSdcnZNP92HlqWR92TDs/bHSI7QH4v+X8iYchvyYXhx2JBYWOUkv3k3toBwmOMVD3hlbs+XN6Dk0KyyMzElDjLAFPu1zdF92Pby3dBtm0fqL+/8ChweynVTCTUSATFLwexRGTJyx7mdPDi3CjY4YSdvPj4UkQHqTdtPOZetndHUdf9pc9XeXgVr2KVMseTWLuVbPCHlrLDHR0SS/mt7ny43wcUvTNVOMV/AA==","base64")).toString()),$F)});var BX=w((eN,wX)=>{(function(r,e){typeof eN=="object"?wX.exports=e():typeof define=="function"&&define.amd?define(e):r.treeify=e()})(eN,function(){function r(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function t(n,s,o,a,l,c,u){var g="",f=0,h,p,C=a.slice(0);if(C.push([s,o])&&a.length>0&&(a.forEach(function(B,v){v>0&&(g+=(B[1]?" ":"\u2502")+" "),!p&&B[0]===s&&(p=!0)}),g+=r(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var y=e(s,c);y.forEach(function(B){h=++f===y.length,t(B,s[B],h,C,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;t(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return t(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var E0=w((Got,FX)=>{var rNe=ws(),iNe=tC(),nNe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,sNe=/^\w*$/;function oNe(r,e){if(rNe(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||iNe(r)?!0:sNe.test(r)||!nNe.test(r)||e!=null&&r in Object(e)}FX.exports=oNe});var I0=w((Yot,NX)=>{var aNe=Ic(),ANe=bn(),lNe="[object AsyncFunction]",cNe="[object Function]",uNe="[object GeneratorFunction]",gNe="[object Proxy]";function fNe(r){if(!ANe(r))return!1;var e=aNe(r);return e==cNe||e==uNe||e==lNe||e==gNe}NX.exports=fNe});var TX=w((jot,LX)=>{var hNe=ds(),pNe=hNe["__core-js_shared__"];LX.exports=pNe});var KX=w((qot,MX)=>{var AN=TX(),OX=function(){var r=/[^.]+$/.exec(AN&&AN.keys&&AN.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function dNe(r){return!!OX&&OX in r}MX.exports=dNe});var lN=w((Jot,UX)=>{var CNe=Function.prototype,mNe=CNe.toString;function ENe(r){if(r!=null){try{return mNe.call(r)}catch{}try{return r+""}catch{}}return""}UX.exports=ENe});var GX=w((Wot,HX)=>{var INe=I0(),yNe=KX(),wNe=bn(),BNe=lN(),QNe=/[\\^$.*+?()[\]{}|]/g,bNe=/^\[object .+?Constructor\]$/,SNe=Function.prototype,vNe=Object.prototype,xNe=SNe.toString,PNe=vNe.hasOwnProperty,DNe=RegExp("^"+xNe.call(PNe).replace(QNe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function kNe(r){if(!wNe(r)||yNe(r))return!1;var e=INe(r)?DNe:bNe;return e.test(BNe(r))}HX.exports=kNe});var jX=w((zot,YX)=>{function RNe(r,e){return r==null?void 0:r[e]}YX.exports=RNe});var nl=w((Vot,qX)=>{var FNe=GX(),NNe=jX();function LNe(r,e){var t=NNe(r,e);return FNe(t)?t:void 0}qX.exports=LNe});var GC=w((Xot,JX)=>{var TNe=nl(),ONe=TNe(Object,"create");JX.exports=ONe});var VX=w((_ot,zX)=>{var WX=GC();function MNe(){this.__data__=WX?WX(null):{},this.size=0}zX.exports=MNe});var _X=w((Zot,XX)=>{function KNe(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}XX.exports=KNe});var $X=w(($ot,ZX)=>{var UNe=GC(),HNe="__lodash_hash_undefined__",GNe=Object.prototype,YNe=GNe.hasOwnProperty;function jNe(r){var e=this.__data__;if(UNe){var t=e[r];return t===HNe?void 0:t}return YNe.call(e,r)?e[r]:void 0}ZX.exports=jNe});var t_=w((eat,e_)=>{var qNe=GC(),JNe=Object.prototype,WNe=JNe.hasOwnProperty;function zNe(r){var e=this.__data__;return qNe?e[r]!==void 0:WNe.call(e,r)}e_.exports=zNe});var i_=w((tat,r_)=>{var VNe=GC(),XNe="__lodash_hash_undefined__";function _Ne(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=VNe&&e===void 0?XNe:e,this}r_.exports=_Ne});var s_=w((rat,n_)=>{var ZNe=VX(),$Ne=_X(),eLe=$X(),tLe=t_(),rLe=i_();function ah(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{function iLe(){this.__data__=[],this.size=0}o_.exports=iLe});var Ah=w((nat,A_)=>{function nLe(r,e){return r===e||r!==r&&e!==e}A_.exports=nLe});var YC=w((sat,l_)=>{var sLe=Ah();function oLe(r,e){for(var t=r.length;t--;)if(sLe(r[t][0],e))return t;return-1}l_.exports=oLe});var u_=w((oat,c_)=>{var aLe=YC(),ALe=Array.prototype,lLe=ALe.splice;function cLe(r){var e=this.__data__,t=aLe(e,r);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():lLe.call(e,t,1),--this.size,!0}c_.exports=cLe});var f_=w((aat,g_)=>{var uLe=YC();function gLe(r){var e=this.__data__,t=uLe(e,r);return t<0?void 0:e[t][1]}g_.exports=gLe});var p_=w((Aat,h_)=>{var fLe=YC();function hLe(r){return fLe(this.__data__,r)>-1}h_.exports=hLe});var C_=w((lat,d_)=>{var pLe=YC();function dLe(r,e){var t=this.__data__,i=pLe(t,r);return i<0?(++this.size,t.push([r,e])):t[i][1]=e,this}d_.exports=dLe});var jC=w((cat,m_)=>{var CLe=a_(),mLe=u_(),ELe=f_(),ILe=p_(),yLe=C_();function lh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{var wLe=nl(),BLe=ds(),QLe=wLe(BLe,"Map");E_.exports=QLe});var w_=w((gat,y_)=>{var I_=s_(),bLe=jC(),SLe=y0();function vLe(){this.size=0,this.__data__={hash:new I_,map:new(SLe||bLe),string:new I_}}y_.exports=vLe});var Q_=w((fat,B_)=>{function xLe(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}B_.exports=xLe});var qC=w((hat,b_)=>{var PLe=Q_();function DLe(r,e){var t=r.__data__;return PLe(e)?t[typeof e=="string"?"string":"hash"]:t.map}b_.exports=DLe});var v_=w((pat,S_)=>{var kLe=qC();function RLe(r){var e=kLe(this,r).delete(r);return this.size-=e?1:0,e}S_.exports=RLe});var P_=w((dat,x_)=>{var FLe=qC();function NLe(r){return FLe(this,r).get(r)}x_.exports=NLe});var k_=w((Cat,D_)=>{var LLe=qC();function TLe(r){return LLe(this,r).has(r)}D_.exports=TLe});var F_=w((mat,R_)=>{var OLe=qC();function MLe(r,e){var t=OLe(this,r),i=t.size;return t.set(r,e),this.size+=t.size==i?0:1,this}R_.exports=MLe});var w0=w((Eat,N_)=>{var KLe=w_(),ULe=v_(),HLe=P_(),GLe=k_(),YLe=F_();function ch(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{var L_=w0(),jLe="Expected a function";function cN(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(jLe);var t=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=t.cache;if(s.has(n))return s.get(n);var o=r.apply(this,i);return t.cache=s.set(n,o)||s,o};return t.cache=new(cN.Cache||L_),t}cN.Cache=L_;T_.exports=cN});var K_=w((yat,M_)=>{var qLe=O_(),JLe=500;function WLe(r){var e=qLe(r,function(i){return t.size===JLe&&t.clear(),i}),t=e.cache;return e}M_.exports=WLe});var H_=w((wat,U_)=>{var zLe=K_(),VLe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,XLe=/\\(\\)?/g,_Le=zLe(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(VLe,function(t,i,n,s){e.push(n?s.replace(XLe,"$1"):i||t)}),e});U_.exports=_Le});var uh=w((Bat,G_)=>{var ZLe=ws(),$Le=E0(),eTe=H_(),tTe=Kf();function rTe(r,e){return ZLe(r)?r:$Le(r,e)?[r]:eTe(tTe(r))}G_.exports=rTe});var Uc=w((Qat,Y_)=>{var iTe=tC(),nTe=1/0;function sTe(r){if(typeof r=="string"||iTe(r))return r;var e=r+"";return e=="0"&&1/r==-nTe?"-0":e}Y_.exports=sTe});var JC=w((bat,j_)=>{var oTe=uh(),aTe=Uc();function ATe(r,e){e=oTe(e,r);for(var t=0,i=e.length;r!=null&&t{var lTe=nl(),cTe=function(){try{var r=lTe(Object,"defineProperty");return r({},"",{}),r}catch{}}();q_.exports=cTe});var gh=w((vat,W_)=>{var J_=uN();function uTe(r,e,t){e=="__proto__"&&J_?J_(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}W_.exports=uTe});var B0=w((xat,z_)=>{var gTe=gh(),fTe=Ah(),hTe=Object.prototype,pTe=hTe.hasOwnProperty;function dTe(r,e,t){var i=r[e];(!(pTe.call(r,e)&&fTe(i,t))||t===void 0&&!(e in r))&&gTe(r,e,t)}z_.exports=dTe});var WC=w((Pat,V_)=>{var CTe=9007199254740991,mTe=/^(?:0|[1-9]\d*)$/;function ETe(r,e){var t=typeof r;return e=e==null?CTe:e,!!e&&(t=="number"||t!="symbol"&&mTe.test(r))&&r>-1&&r%1==0&&r{var ITe=B0(),yTe=uh(),wTe=WC(),X_=bn(),BTe=Uc();function QTe(r,e,t,i){if(!X_(r))return r;e=yTe(e,r);for(var n=-1,s=e.length,o=s-1,a=r;a!=null&&++n{var bTe=JC(),STe=gN(),vTe=uh();function xTe(r,e,t){for(var i=-1,n=e.length,s={};++i{function PTe(r,e){return r!=null&&e in Object(r)}eZ.exports=PTe});var iZ=w((Fat,rZ)=>{var DTe=Ic(),kTe=Go(),RTe="[object Arguments]";function FTe(r){return kTe(r)&&DTe(r)==RTe}rZ.exports=FTe});var zC=w((Nat,oZ)=>{var nZ=iZ(),NTe=Go(),sZ=Object.prototype,LTe=sZ.hasOwnProperty,TTe=sZ.propertyIsEnumerable,OTe=nZ(function(){return arguments}())?nZ:function(r){return NTe(r)&<e.call(r,"callee")&&!TTe.call(r,"callee")};oZ.exports=OTe});var Q0=w((Lat,aZ)=>{var MTe=9007199254740991;function KTe(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=MTe}aZ.exports=KTe});var fN=w((Tat,AZ)=>{var UTe=uh(),HTe=zC(),GTe=ws(),YTe=WC(),jTe=Q0(),qTe=Uc();function JTe(r,e,t){e=UTe(e,r);for(var i=-1,n=e.length,s=!1;++i{var WTe=tZ(),zTe=fN();function VTe(r,e){return r!=null&&zTe(r,e,WTe)}lZ.exports=VTe});var uZ=w((Mat,cZ)=>{var XTe=$_(),_Te=hN();function ZTe(r,e){return XTe(r,e,function(t,i){return _Te(r,i)})}cZ.exports=ZTe});var b0=w((Kat,gZ)=>{function $Te(r,e){for(var t=-1,i=e.length,n=r.length;++t{var fZ=Ec(),eOe=zC(),tOe=ws(),hZ=fZ?fZ.isConcatSpreadable:void 0;function rOe(r){return tOe(r)||eOe(r)||!!(hZ&&r&&r[hZ])}pZ.exports=rOe});var EZ=w((Hat,mZ)=>{var iOe=b0(),nOe=dZ();function CZ(r,e,t,i,n){var s=-1,o=r.length;for(t||(t=nOe),n||(n=[]);++s0&&t(a)?e>1?CZ(a,e-1,t,i,n):iOe(n,a):i||(n[n.length]=a)}return n}mZ.exports=CZ});var yZ=w((Gat,IZ)=>{var sOe=EZ();function oOe(r){var e=r==null?0:r.length;return e?sOe(r,1):[]}IZ.exports=oOe});var BZ=w((Yat,wZ)=>{function aOe(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}wZ.exports=aOe});var pN=w((jat,bZ)=>{var AOe=BZ(),QZ=Math.max;function lOe(r,e,t){return e=QZ(e===void 0?r.length-1:e,0),function(){for(var i=arguments,n=-1,s=QZ(i.length-e,0),o=Array(s);++n{function cOe(r){return function(){return r}}SZ.exports=cOe});var S0=w((Jat,xZ)=>{function uOe(r){return r}xZ.exports=uOe});var kZ=w((Wat,DZ)=>{var gOe=vZ(),PZ=uN(),fOe=S0(),hOe=PZ?function(r,e){return PZ(r,"toString",{configurable:!0,enumerable:!1,value:gOe(e),writable:!0})}:fOe;DZ.exports=hOe});var FZ=w((zat,RZ)=>{var pOe=800,dOe=16,COe=Date.now;function mOe(r){var e=0,t=0;return function(){var i=COe(),n=dOe-(i-t);if(t=i,n>0){if(++e>=pOe)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}RZ.exports=mOe});var dN=w((Vat,NZ)=>{var EOe=kZ(),IOe=FZ(),yOe=IOe(EOe);NZ.exports=yOe});var TZ=w((Xat,LZ)=>{var wOe=yZ(),BOe=pN(),QOe=dN();function bOe(r){return QOe(BOe(r,void 0,wOe),r+"")}LZ.exports=bOe});var MZ=w((_at,OZ)=>{var SOe=uZ(),vOe=TZ(),xOe=vOe(function(r,e){return r==null?{}:SOe(r,e)});OZ.exports=xOe});var XZ=w((Ilt,VZ)=>{"use strict";var BN;try{BN=Map}catch{}var QN;try{QN=Set}catch{}function WZ(r,e,t){if(!r||typeof r!="object"||typeof r=="function")return r;if(r.nodeType&&"cloneNode"in r)return r.cloneNode(!0);if(r instanceof Date)return new Date(r.getTime());if(r instanceof RegExp)return new RegExp(r);if(Array.isArray(r))return r.map(zZ);if(BN&&r instanceof BN)return new Map(Array.from(r.entries()));if(QN&&r instanceof QN)return new Set(Array.from(r.values()));if(r instanceof Object){e.push(r);var i=Object.create(r);t.push(i);for(var n in r){var s=e.findIndex(function(o){return o===r[n]});i[n]=s>-1?t[s]:WZ(r[n],e,t)}return i}return r}function zZ(r){return WZ(r,[],[])}VZ.exports=zZ});var XC=w(bN=>{"use strict";Object.defineProperty(bN,"__esModule",{value:!0});bN.default=YOe;var OOe=Object.prototype.toString,MOe=Error.prototype.toString,KOe=RegExp.prototype.toString,UOe=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",HOe=/^Symbol\((.*)\)(.*)$/;function GOe(r){return r!=+r?"NaN":r===0&&1/r<0?"-0":""+r}function _Z(r,e=!1){if(r==null||r===!0||r===!1)return""+r;let t=typeof r;if(t==="number")return GOe(r);if(t==="string")return e?`"${r}"`:r;if(t==="function")return"[Function "+(r.name||"anonymous")+"]";if(t==="symbol")return UOe.call(r).replace(HOe,"Symbol($1)");let i=OOe.call(r).slice(8,-1);return i==="Date"?isNaN(r.getTime())?""+r:r.toISOString(r):i==="Error"||r instanceof Error?"["+MOe.call(r)+"]":i==="RegExp"?KOe.call(r):null}function YOe(r,e){let t=_Z(r,e);return t!==null?t:JSON.stringify(r,function(i,n){let s=_Z(this[i],e);return s!==null?s:n},2)}});var za=w(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.default=mi.array=mi.object=mi.boolean=mi.date=mi.number=mi.string=mi.mixed=void 0;var ZZ=jOe(XC());function jOe(r){return r&&r.__esModule?r:{default:r}}var $Z={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:r,type:e,value:t,originalValue:i})=>{let n=i!=null&&i!==t,s=`${r} must be a \`${e}\` type, but the final value was: \`${(0,ZZ.default)(t,!0)}\``+(n?` (cast from the value \`${(0,ZZ.default)(i,!0)}\`).`:".");return t===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};mi.mixed=$Z;var e$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};mi.string=e$;var t$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};mi.number=t$;var r$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};mi.date=r$;var i$={isValue:"${path} field must be ${value}"};mi.boolean=i$;var n$={noUnknown:"${path} field has unspecified keys: ${unknown}"};mi.object=n$;var s$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};mi.array=s$;var qOe=Object.assign(Object.create(null),{mixed:$Z,string:e$,number:t$,date:r$,object:n$,array:s$,boolean:i$});mi.default=qOe});var a$=w((Blt,o$)=>{var JOe=Object.prototype,WOe=JOe.hasOwnProperty;function zOe(r,e){return r!=null&&WOe.call(r,e)}o$.exports=zOe});var _C=w((Qlt,A$)=>{var VOe=a$(),XOe=fN();function _Oe(r,e){return r!=null&&XOe(r,e,VOe)}A$.exports=_Oe});var dh=w(F0=>{"use strict";Object.defineProperty(F0,"__esModule",{value:!0});F0.default=void 0;var ZOe=r=>r&&r.__isYupSchema__;F0.default=ZOe});var c$=w(N0=>{"use strict";Object.defineProperty(N0,"__esModule",{value:!0});N0.default=void 0;var $Oe=l$(_C()),eMe=l$(dh());function l$(r){return r&&r.__esModule?r:{default:r}}var SN=class{constructor(e,t){if(this.refs=e,this.refs=e,typeof t=="function"){this.fn=t;return}if(!(0,$Oe.default)(t,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=t,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,t){let i=this.refs.map(s=>s.getValue(t==null?void 0:t.value,t==null?void 0:t.parent,t==null?void 0:t.context)),n=this.fn.apply(e,i.concat(e,t));if(n===void 0||n===e)return e;if(!(0,eMe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(t)}},tMe=SN;N0.default=tMe});var xN=w(vN=>{"use strict";Object.defineProperty(vN,"__esModule",{value:!0});vN.default=rMe;function rMe(r){return r==null?[]:[].concat(r)}});var Hc=w(L0=>{"use strict";Object.defineProperty(L0,"__esModule",{value:!0});L0.default=void 0;var iMe=u$(XC()),nMe=u$(xN());function u$(r){return r&&r.__esModule?r:{default:r}}function PN(){return PN=Object.assign||function(r){for(var e=1;e(0,iMe.default)(t[s])):typeof e=="function"?e(t):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,t,i,n){super(),this.name="ValidationError",this.value=t,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,nMe.default)(e).forEach(s=>{Ch.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Ch)}};L0.default=Ch});var T0=w(kN=>{"use strict";Object.defineProperty(kN,"__esModule",{value:!0});kN.default=AMe;var DN=oMe(Hc());function oMe(r){return r&&r.__esModule?r:{default:r}}var aMe=r=>{let e=!1;return(...t)=>{e||(e=!0,r(...t))}};function AMe(r,e){let{endEarly:t,tests:i,args:n,value:s,errors:o,sort:a,path:l}=r,c=aMe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new DN.default(o,s,l)):c(null,s);for(let f=0;f{function lMe(r){return function(e,t,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[r?a:++n];if(t(s[l],l,s)===!1)break}return e}}g$.exports=lMe});var RN=w((klt,h$)=>{var cMe=f$(),uMe=cMe();h$.exports=uMe});var d$=w((Rlt,p$)=>{function gMe(r,e){for(var t=-1,i=Array(r);++t{function fMe(){return!1}C$.exports=fMe});var $C=w((ZC,mh)=>{var hMe=ds(),pMe=m$(),y$=typeof ZC=="object"&&ZC&&!ZC.nodeType&&ZC,E$=y$&&typeof mh=="object"&&mh&&!mh.nodeType&&mh,dMe=E$&&E$.exports===y$,I$=dMe?hMe.Buffer:void 0,CMe=I$?I$.isBuffer:void 0,mMe=CMe||pMe;mh.exports=mMe});var B$=w((Nlt,w$)=>{var EMe=Ic(),IMe=Q0(),yMe=Go(),wMe="[object Arguments]",BMe="[object Array]",QMe="[object Boolean]",bMe="[object Date]",SMe="[object Error]",vMe="[object Function]",xMe="[object Map]",PMe="[object Number]",DMe="[object Object]",kMe="[object RegExp]",RMe="[object Set]",FMe="[object String]",NMe="[object WeakMap]",LMe="[object ArrayBuffer]",TMe="[object DataView]",OMe="[object Float32Array]",MMe="[object Float64Array]",KMe="[object Int8Array]",UMe="[object Int16Array]",HMe="[object Int32Array]",GMe="[object Uint8Array]",YMe="[object Uint8ClampedArray]",jMe="[object Uint16Array]",qMe="[object Uint32Array]",Ir={};Ir[OMe]=Ir[MMe]=Ir[KMe]=Ir[UMe]=Ir[HMe]=Ir[GMe]=Ir[YMe]=Ir[jMe]=Ir[qMe]=!0;Ir[wMe]=Ir[BMe]=Ir[LMe]=Ir[QMe]=Ir[TMe]=Ir[bMe]=Ir[SMe]=Ir[vMe]=Ir[xMe]=Ir[PMe]=Ir[DMe]=Ir[kMe]=Ir[RMe]=Ir[FMe]=Ir[NMe]=!1;function JMe(r){return yMe(r)&&IMe(r.length)&&!!Ir[EMe(r)]}w$.exports=JMe});var O0=w((Llt,Q$)=>{function WMe(r){return function(e){return r(e)}}Q$.exports=WMe});var M0=w((em,Eh)=>{var zMe=kD(),b$=typeof em=="object"&&em&&!em.nodeType&&em,tm=b$&&typeof Eh=="object"&&Eh&&!Eh.nodeType&&Eh,VMe=tm&&tm.exports===b$,FN=VMe&&zMe.process,XMe=function(){try{var r=tm&&tm.require&&tm.require("util").types;return r||FN&&FN.binding&&FN.binding("util")}catch{}}();Eh.exports=XMe});var K0=w((Tlt,x$)=>{var _Me=B$(),ZMe=O0(),S$=M0(),v$=S$&&S$.isTypedArray,$Me=v$?ZMe(v$):_Me;x$.exports=$Me});var NN=w((Olt,P$)=>{var e1e=d$(),t1e=zC(),r1e=ws(),i1e=$C(),n1e=WC(),s1e=K0(),o1e=Object.prototype,a1e=o1e.hasOwnProperty;function A1e(r,e){var t=r1e(r),i=!t&&t1e(r),n=!t&&!i&&i1e(r),s=!t&&!i&&!n&&s1e(r),o=t||i||n||s,a=o?e1e(r.length,String):[],l=a.length;for(var c in r)(e||a1e.call(r,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||n1e(c,l)))&&a.push(c);return a}P$.exports=A1e});var U0=w((Mlt,D$)=>{var l1e=Object.prototype;function c1e(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||l1e;return r===t}D$.exports=c1e});var LN=w((Klt,k$)=>{function u1e(r,e){return function(t){return r(e(t))}}k$.exports=u1e});var F$=w((Ult,R$)=>{var g1e=LN(),f1e=g1e(Object.keys,Object);R$.exports=f1e});var L$=w((Hlt,N$)=>{var h1e=U0(),p1e=F$(),d1e=Object.prototype,C1e=d1e.hasOwnProperty;function m1e(r){if(!h1e(r))return p1e(r);var e=[];for(var t in Object(r))C1e.call(r,t)&&t!="constructor"&&e.push(t);return e}N$.exports=m1e});var rm=w((Glt,T$)=>{var E1e=I0(),I1e=Q0();function y1e(r){return r!=null&&I1e(r.length)&&!E1e(r)}T$.exports=y1e});var Ih=w((Ylt,O$)=>{var w1e=NN(),B1e=L$(),Q1e=rm();function b1e(r){return Q1e(r)?w1e(r):B1e(r)}O$.exports=b1e});var TN=w((jlt,M$)=>{var S1e=RN(),v1e=Ih();function x1e(r,e){return r&&S1e(r,e,v1e)}M$.exports=x1e});var U$=w((qlt,K$)=>{var P1e=jC();function D1e(){this.__data__=new P1e,this.size=0}K$.exports=D1e});var G$=w((Jlt,H$)=>{function k1e(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}H$.exports=k1e});var j$=w((Wlt,Y$)=>{function R1e(r){return this.__data__.get(r)}Y$.exports=R1e});var J$=w((zlt,q$)=>{function F1e(r){return this.__data__.has(r)}q$.exports=F1e});var z$=w((Vlt,W$)=>{var N1e=jC(),L1e=y0(),T1e=w0(),O1e=200;function M1e(r,e){var t=this.__data__;if(t instanceof N1e){var i=t.__data__;if(!L1e||i.length{var K1e=jC(),U1e=U$(),H1e=G$(),G1e=j$(),Y1e=J$(),j1e=z$();function yh(r){var e=this.__data__=new K1e(r);this.size=e.size}yh.prototype.clear=U1e;yh.prototype.delete=H1e;yh.prototype.get=G1e;yh.prototype.has=Y1e;yh.prototype.set=j1e;V$.exports=yh});var _$=w((_lt,X$)=>{var q1e="__lodash_hash_undefined__";function J1e(r){return this.__data__.set(r,q1e),this}X$.exports=J1e});var $$=w((Zlt,Z$)=>{function W1e(r){return this.__data__.has(r)}Z$.exports=W1e});var tee=w(($lt,eee)=>{var z1e=w0(),V1e=_$(),X1e=$$();function H0(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new z1e;++e{function _1e(r,e){for(var t=-1,i=r==null?0:r.length;++t{function Z1e(r,e){return r.has(e)}nee.exports=Z1e});var ON=w((rct,oee)=>{var $1e=tee(),eKe=iee(),tKe=see(),rKe=1,iKe=2;function nKe(r,e,t,i,n,s){var o=t&rKe,a=r.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(r),u=s.get(e);if(c&&u)return c==e&&u==r;var g=-1,f=!0,h=t&iKe?new $1e:void 0;for(s.set(r,e),s.set(e,r);++g{var sKe=ds(),oKe=sKe.Uint8Array;aee.exports=oKe});var lee=w((nct,Aee)=>{function aKe(r){var e=-1,t=Array(r.size);return r.forEach(function(i,n){t[++e]=[n,i]}),t}Aee.exports=aKe});var uee=w((sct,cee)=>{function AKe(r){var e=-1,t=Array(r.size);return r.forEach(function(i){t[++e]=i}),t}cee.exports=AKe});var dee=w((oct,pee)=>{var gee=Ec(),fee=MN(),lKe=Ah(),cKe=ON(),uKe=lee(),gKe=uee(),fKe=1,hKe=2,pKe="[object Boolean]",dKe="[object Date]",CKe="[object Error]",mKe="[object Map]",EKe="[object Number]",IKe="[object RegExp]",yKe="[object Set]",wKe="[object String]",BKe="[object Symbol]",QKe="[object ArrayBuffer]",bKe="[object DataView]",hee=gee?gee.prototype:void 0,KN=hee?hee.valueOf:void 0;function SKe(r,e,t,i,n,s,o){switch(t){case bKe:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case QKe:return!(r.byteLength!=e.byteLength||!s(new fee(r),new fee(e)));case pKe:case dKe:case EKe:return lKe(+r,+e);case CKe:return r.name==e.name&&r.message==e.message;case IKe:case wKe:return r==e+"";case mKe:var a=uKe;case yKe:var l=i&fKe;if(a||(a=gKe),r.size!=e.size&&!l)return!1;var c=o.get(r);if(c)return c==e;i|=hKe,o.set(r,e);var u=cKe(a(r),a(e),i,n,s,o);return o.delete(r),u;case BKe:if(KN)return KN.call(r)==KN.call(e)}return!1}pee.exports=SKe});var UN=w((act,Cee)=>{var vKe=b0(),xKe=ws();function PKe(r,e,t){var i=e(r);return xKe(r)?i:vKe(i,t(r))}Cee.exports=PKe});var Eee=w((Act,mee)=>{function DKe(r,e){for(var t=-1,i=r==null?0:r.length,n=0,s=[];++t{function kKe(){return[]}Iee.exports=kKe});var G0=w((cct,wee)=>{var RKe=Eee(),FKe=HN(),NKe=Object.prototype,LKe=NKe.propertyIsEnumerable,yee=Object.getOwnPropertySymbols,TKe=yee?function(r){return r==null?[]:(r=Object(r),RKe(yee(r),function(e){return LKe.call(r,e)}))}:FKe;wee.exports=TKe});var GN=w((uct,Bee)=>{var OKe=UN(),MKe=G0(),KKe=Ih();function UKe(r){return OKe(r,KKe,MKe)}Bee.exports=UKe});var See=w((gct,bee)=>{var Qee=GN(),HKe=1,GKe=Object.prototype,YKe=GKe.hasOwnProperty;function jKe(r,e,t,i,n,s){var o=t&HKe,a=Qee(r),l=a.length,c=Qee(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:YKe.call(e,f)))return!1}var h=s.get(r),p=s.get(e);if(h&&p)return h==e&&p==r;var C=!0;s.set(r,e),s.set(e,r);for(var y=o;++g{var qKe=nl(),JKe=ds(),WKe=qKe(JKe,"DataView");vee.exports=WKe});var Dee=w((hct,Pee)=>{var zKe=nl(),VKe=ds(),XKe=zKe(VKe,"Promise");Pee.exports=XKe});var Ree=w((pct,kee)=>{var _Ke=nl(),ZKe=ds(),$Ke=_Ke(ZKe,"Set");kee.exports=$Ke});var Nee=w((dct,Fee)=>{var eUe=nl(),tUe=ds(),rUe=eUe(tUe,"WeakMap");Fee.exports=rUe});var nm=w((Cct,Hee)=>{var YN=xee(),jN=y0(),qN=Dee(),JN=Ree(),WN=Nee(),Uee=Ic(),wh=lN(),Lee="[object Map]",iUe="[object Object]",Tee="[object Promise]",Oee="[object Set]",Mee="[object WeakMap]",Kee="[object DataView]",nUe=wh(YN),sUe=wh(jN),oUe=wh(qN),aUe=wh(JN),AUe=wh(WN),Gc=Uee;(YN&&Gc(new YN(new ArrayBuffer(1)))!=Kee||jN&&Gc(new jN)!=Lee||qN&&Gc(qN.resolve())!=Tee||JN&&Gc(new JN)!=Oee||WN&&Gc(new WN)!=Mee)&&(Gc=function(r){var e=Uee(r),t=e==iUe?r.constructor:void 0,i=t?wh(t):"";if(i)switch(i){case nUe:return Kee;case sUe:return Lee;case oUe:return Tee;case aUe:return Oee;case AUe:return Mee}return e});Hee.exports=Gc});var Vee=w((mct,zee)=>{var zN=im(),lUe=ON(),cUe=dee(),uUe=See(),Gee=nm(),Yee=ws(),jee=$C(),gUe=K0(),fUe=1,qee="[object Arguments]",Jee="[object Array]",Y0="[object Object]",hUe=Object.prototype,Wee=hUe.hasOwnProperty;function pUe(r,e,t,i,n,s){var o=Yee(r),a=Yee(e),l=o?Jee:Gee(r),c=a?Jee:Gee(e);l=l==qee?Y0:l,c=c==qee?Y0:c;var u=l==Y0,g=c==Y0,f=l==c;if(f&&jee(r)){if(!jee(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new zN),o||gUe(r)?lUe(r,e,t,i,n,s):cUe(r,e,l,t,i,n,s);if(!(t&fUe)){var h=u&&Wee.call(r,"__wrapped__"),p=g&&Wee.call(e,"__wrapped__");if(h||p){var C=h?r.value():r,y=p?e.value():e;return s||(s=new zN),n(C,y,t,i,s)}}return f?(s||(s=new zN),uUe(r,e,t,i,n,s)):!1}zee.exports=pUe});var VN=w((Ect,Zee)=>{var dUe=Vee(),Xee=Go();function _ee(r,e,t,i,n){return r===e?!0:r==null||e==null||!Xee(r)&&!Xee(e)?r!==r&&e!==e:dUe(r,e,t,i,_ee,n)}Zee.exports=_ee});var ete=w((Ict,$ee)=>{var CUe=im(),mUe=VN(),EUe=1,IUe=2;function yUe(r,e,t,i){var n=t.length,s=n,o=!i;if(r==null)return!s;for(r=Object(r);n--;){var a=t[n];if(o&&a[2]?a[1]!==r[a[0]]:!(a[0]in r))return!1}for(;++n{var wUe=bn();function BUe(r){return r===r&&!wUe(r)}tte.exports=BUe});var ite=w((wct,rte)=>{var QUe=XN(),bUe=Ih();function SUe(r){for(var e=bUe(r),t=e.length;t--;){var i=e[t],n=r[i];e[t]=[i,n,QUe(n)]}return e}rte.exports=SUe});var _N=w((Bct,nte)=>{function vUe(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}nte.exports=vUe});var ote=w((Qct,ste)=>{var xUe=ete(),PUe=ite(),DUe=_N();function kUe(r){var e=PUe(r);return e.length==1&&e[0][2]?DUe(e[0][0],e[0][1]):function(t){return t===r||xUe(t,r,e)}}ste.exports=kUe});var j0=w((bct,ate)=>{var RUe=JC();function FUe(r,e,t){var i=r==null?void 0:RUe(r,e);return i===void 0?t:i}ate.exports=FUe});var lte=w((Sct,Ate)=>{var NUe=VN(),LUe=j0(),TUe=hN(),OUe=E0(),MUe=XN(),KUe=_N(),UUe=Uc(),HUe=1,GUe=2;function YUe(r,e){return OUe(r)&&MUe(e)?KUe(UUe(r),e):function(t){var i=LUe(t,r);return i===void 0&&i===e?TUe(t,r):NUe(e,i,HUe|GUe)}}Ate.exports=YUe});var ute=w((vct,cte)=>{function jUe(r){return function(e){return e==null?void 0:e[r]}}cte.exports=jUe});var fte=w((xct,gte)=>{var qUe=JC();function JUe(r){return function(e){return qUe(e,r)}}gte.exports=JUe});var pte=w((Pct,hte)=>{var WUe=ute(),zUe=fte(),VUe=E0(),XUe=Uc();function _Ue(r){return VUe(r)?WUe(XUe(r)):zUe(r)}hte.exports=_Ue});var ZN=w((Dct,dte)=>{var ZUe=ote(),$Ue=lte(),e2e=S0(),t2e=ws(),r2e=pte();function i2e(r){return typeof r=="function"?r:r==null?e2e:typeof r=="object"?t2e(r)?$Ue(r[0],r[1]):ZUe(r):r2e(r)}dte.exports=i2e});var $N=w((kct,Cte)=>{var n2e=gh(),s2e=TN(),o2e=ZN();function a2e(r,e){var t={};return e=o2e(e,3),s2e(r,function(i,n,s){n2e(t,n,e(i,n,s))}),t}Cte.exports=a2e});var sm=w((Rct,wte)=>{"use strict";function Yc(r){this._maxSize=r,this.clear()}Yc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Yc.prototype.get=function(r){return this._values[r]};Yc.prototype.set=function(r,e){return this._size>=this._maxSize&&this.clear(),r in this._values||this._size++,this._values[r]=e};var A2e=/[^.^\]^[]+|(?=\[\]|\.\.)/g,yte=/^\d+$/,l2e=/^\d/,c2e=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,u2e=/^\s*(['"]?)(.*?)(\1)\s*$/,rL=512,mte=new Yc(rL),Ete=new Yc(rL),Ite=new Yc(rL);wte.exports={Cache:Yc,split:tL,normalizePath:eL,setter:function(r){var e=eL(r);return Ete.get(r)||Ete.set(r,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(am,"__esModule",{value:!0});am.create=C2e;am.default=void 0;var d2e=sm(),q0={context:"$",value:"."};function C2e(r,e){return new om(r,e)}var om=class{constructor(e,t={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===q0.context,this.isValue=this.key[0]===q0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?q0.context:this.isValue?q0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,d2e.getter)(this.path,!0),this.map=t.map}getValue(e,t,i){let n=this.isContext?i:this.isValue?e:t;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,t){return this.getValue(e,t==null?void 0:t.parent,t==null?void 0:t.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};am.default=om;om.prototype.__isYupRef=!0});var Bte=w(sL=>{"use strict";Object.defineProperty(sL,"__esModule",{value:!0});sL.default=y2e;var m2e=nL($N()),J0=nL(Hc()),E2e=nL(jc());function nL(r){return r&&r.__esModule?r:{default:r}}function W0(){return W0=Object.assign||function(r){for(var e=1;e=0)&&(t[n]=r[n]);return t}function y2e(r){function e(t,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=t,u=I2e(t,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=r,{parent:C,context:y}=a;function B(j){return E2e.default.isRef(j)?j.getValue(n,C,y):j}function v(j={}){let $=(0,m2e.default)(W0({value:n,originalValue:l,label:o,path:j.path||s},h,j.params),B),V=new J0.default(J0.default.formatError(j.message||p,$),n,$.path,j.type||g);return V.params=$,V}let D=W0({path:s,parent:C,type:g,createError:v,resolve:B,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(D,n,D)).then(j=>{J0.default.isError(j)?i(j):j?i(null,j):i(v())})}catch(j){i(j)}return}let L;try{var H;if(L=f.call(D,n,D),typeof((H=L)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${D.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(j){i(j);return}J0.default.isError(L)?i(L):L?i(null,L):i(v())}return e.OPTIONS=r,e}});var oL=w(Am=>{"use strict";Object.defineProperty(Am,"__esModule",{value:!0});Am.getIn=Qte;Am.default=void 0;var w2e=sm(),B2e=r=>r.substr(0,r.length-1).substr(1);function Qte(r,e,t,i=t){let n,s,o;return e?((0,w2e.forEach)(e,(a,l,c)=>{let u=l?B2e(a):a;if(r=r.resolve({context:i,parent:n,value:t}),r.innerType){let g=c?parseInt(u,10):0;if(t&&g>=t.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=t,t=t&&t[g],r=r.innerType}if(!c){if(!r.fields||!r.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${r._type}")`);n=t,t=t&&t[u],r=r.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:r,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:r}}var Q2e=(r,e,t,i)=>Qte(r,e,t,i).schema,b2e=Q2e;Am.default=b2e});var Ste=w(z0=>{"use strict";Object.defineProperty(z0,"__esModule",{value:!0});z0.default=void 0;var bte=S2e(jc());function S2e(r){return r&&r.__esModule?r:{default:r}}var lm=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let t of this.list)e.push(t);for(let[,t]of this.refs)e.push(t.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){bte.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){bte.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,t){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(t(i.value)===e)return!0;return!1}clone(){let e=new lm;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,t){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),t.list.forEach(n=>i.delete(n)),t.refs.forEach(n=>i.delete(n)),i}};z0.default=lm});var Xa=w(X0=>{"use strict";Object.defineProperty(X0,"__esModule",{value:!0});X0.default=void 0;var vte=Va(XZ()),Bh=za(),v2e=Va(c$()),xte=Va(T0()),V0=Va(Bte()),Pte=Va(XC()),x2e=Va(jc()),P2e=oL(),D2e=Va(xN()),Dte=Va(Hc()),kte=Va(Ste());function Va(r){return r&&r.__esModule?r:{default:r}}function Ps(){return Ps=Object.assign||function(r){for(var e=1;e{this.typeError(Bh.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=Ps({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let t=Object.create(Object.getPrototypeOf(this));return t.type=this.type,t._typeError=this._typeError,t._whitelistError=this._whitelistError,t._blacklistError=this._blacklistError,t._whitelist=this._whitelist.clone(),t._blacklist=this._blacklist.clone(),t.exclusiveTests=Ps({},this.exclusiveTests),t.deps=[...this.deps],t.conditions=[...this.conditions],t.tests=[...this.tests],t.transforms=[...this.transforms],t.spec=(0,vte.default)(Ps({},this.spec,e)),t}label(e){var t=this.clone();return t.spec.label=e,t}meta(...e){if(e.length===0)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}withMutation(e){let t=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=t,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let t=this,i=e.clone(),n=Ps({},t.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=t._typeError),i._whitelistError||(i._whitelistError=t._whitelistError),i._blacklistError||(i._blacklistError=t._blacklistError),i._whitelist=t._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=t._blacklist.merge(e._blacklist,e._whitelist),i.tests=t.tests,i.exclusiveTests=t.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let t=this;if(t.conditions.length){let i=t.conditions;t=t.clone(),t.conditions=[],t=i.reduce((n,s)=>s.resolve(n,e),t),t=t.resolve(e)}return t}cast(e,t={}){let i=this.resolve(Ps({value:e},t)),n=i._cast(e,t);if(e!==void 0&&t.assert!==!1&&i.isType(n)!==!0){let s=(0,Pte.default)(e),o=(0,Pte.default)(n);throw new TypeError(`The value of ${t.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". +`));if(!E)return null;d.input=yA(E,!0)}return d.input.shift()},put_char:function(d,E){E===null||E===10?(v(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(v(ke(d.output,0)),d.output=[])}},default_tty1_ops:{put_char:function(d,E){E===null||E===10?(D(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(D(ke(d.output,0)),d.output=[])}}};function ss(d){for(var E=H(d,65536),I=dt(E);d=E)){var k=1024*1024;E=Math.max(E,I*(I>>0),I!=0&&(E=Math.max(E,256));var T=d.contents;d.contents=new Uint8Array(E),d.usedBytes>0&&d.contents.set(T.subarray(0,d.usedBytes),0)}},resizeFileStorage:function(d,E){if(d.usedBytes!=E)if(E==0)d.contents=null,d.usedBytes=0;else{var I=d.contents;d.contents=new Uint8Array(E),I&&d.contents.set(I.subarray(0,Math.min(E,d.usedBytes))),d.usedBytes=E}},node_ops:{getattr:function(d){var E={};return E.dev=S.isChrdev(d.mode)?d.id:1,E.ino=d.id,E.mode=d.mode,E.nlink=1,E.uid=0,E.gid=0,E.rdev=d.rdev,S.isDir(d.mode)?E.size=4096:S.isFile(d.mode)?E.size=d.usedBytes:S.isLink(d.mode)?E.size=d.link.length:E.size=0,E.atime=new Date(d.timestamp),E.mtime=new Date(d.timestamp),E.ctime=new Date(d.timestamp),E.blksize=4096,E.blocks=Math.ceil(E.size/E.blksize),E},setattr:function(d,E){E.mode!==void 0&&(d.mode=E.mode),E.timestamp!==void 0&&(d.timestamp=E.timestamp),E.size!==void 0&>.resizeFileStorage(d,E.size)},lookup:function(d,E){throw S.genericErrors[44]},mknod:function(d,E,I,k){return gt.createNode(d,E,I,k)},rename:function(d,E,I){if(S.isDir(d.mode)){var k;try{k=S.lookupNode(E,I)}catch{}if(k)for(var T in k.contents)throw new S.ErrnoError(55)}delete d.parent.contents[d.name],d.parent.timestamp=Date.now(),d.name=I,E.contents[I]=d,E.timestamp=d.parent.timestamp,d.parent=E},unlink:function(d,E){delete d.contents[E],d.timestamp=Date.now()},rmdir:function(d,E){var I=S.lookupNode(d,E);for(var k in I.contents)throw new S.ErrnoError(55);delete d.contents[E],d.timestamp=Date.now()},readdir:function(d){var E=[".",".."];for(var I in d.contents)!d.contents.hasOwnProperty(I)||E.push(I);return E},symlink:function(d,E,I){var k=gt.createNode(d,E,41471,0);return k.link=I,k},readlink:function(d){if(!S.isLink(d.mode))throw new S.ErrnoError(28);return d.link}},stream_ops:{read:function(d,E,I,k,T){var Z=d.node.contents;if(T>=d.node.usedBytes)return 0;var te=Math.min(d.node.usedBytes-T,k);if(te>8&&Z.subarray)E.set(Z.subarray(T,T+te),I);else for(var we=0;we0||k+I>2)}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}return E.mode},realPath:function(d){for(var E=[];d.parent!==d;)E.push(d.name),d=d.parent;return E.push(d.mount.opts.root),E.reverse(),Qt.join.apply(null,E)},flagsForNode:function(d){d&=-2097153,d&=-2049,d&=-32769,d&=-524289;var E=0;for(var I in At.flagsForNodeMap)d&I&&(E|=At.flagsForNodeMap[I],d^=I);if(d)throw new S.ErrnoError(28);return E},node_ops:{getattr:function(d){var E=At.realPath(d),I;try{I=Te.lstatSync(E)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}return At.isWindows&&!I.blksize&&(I.blksize=4096),At.isWindows&&!I.blocks&&(I.blocks=(I.size+I.blksize-1)/I.blksize|0),{dev:I.dev,ino:I.ino,mode:I.mode,nlink:I.nlink,uid:I.uid,gid:I.gid,rdev:I.rdev,size:I.size,atime:I.atime,mtime:I.mtime,ctime:I.ctime,blksize:I.blksize,blocks:I.blocks}},setattr:function(d,E){var I=At.realPath(d);try{if(E.mode!==void 0&&(Te.chmodSync(I,E.mode),d.mode=E.mode),E.timestamp!==void 0){var k=new Date(E.timestamp);Te.utimesSync(I,k,k)}E.size!==void 0&&Te.truncateSync(I,E.size)}catch(T){throw T.code?new S.ErrnoError(At.convertNodeCode(T)):T}},lookup:function(d,E){var I=Qt.join2(At.realPath(d),E),k=At.getMode(I);return At.createNode(d,E,k)},mknod:function(d,E,I,k){var T=At.createNode(d,E,I,k),Z=At.realPath(T);try{S.isDir(T.mode)?Te.mkdirSync(Z,T.mode):Te.writeFileSync(Z,"",{mode:T.mode})}catch(te){throw te.code?new S.ErrnoError(At.convertNodeCode(te)):te}return T},rename:function(d,E,I){var k=At.realPath(d),T=Qt.join2(At.realPath(E),I);try{Te.renameSync(k,T)}catch(Z){throw Z.code?new S.ErrnoError(At.convertNodeCode(Z)):Z}d.name=I},unlink:function(d,E){var I=Qt.join2(At.realPath(d),E);try{Te.unlinkSync(I)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}},rmdir:function(d,E){var I=Qt.join2(At.realPath(d),E);try{Te.rmdirSync(I)}catch(k){throw k.code?new S.ErrnoError(At.convertNodeCode(k)):k}},readdir:function(d){var E=At.realPath(d);try{return Te.readdirSync(E)}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}},symlink:function(d,E,I){var k=Qt.join2(At.realPath(d),E);try{Te.symlinkSync(I,k)}catch(T){throw T.code?new S.ErrnoError(At.convertNodeCode(T)):T}},readlink:function(d){var E=At.realPath(d);try{return E=Te.readlinkSync(E),E=dg.relative(dg.resolve(d.mount.opts.root),E),E}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}}},stream_ops:{open:function(d){var E=At.realPath(d.node);try{S.isFile(d.node.mode)&&(d.nfd=Te.openSync(E,At.flagsForNode(d.flags)))}catch(I){throw I.code?new S.ErrnoError(At.convertNodeCode(I)):I}},close:function(d){try{S.isFile(d.node.mode)&&d.nfd&&Te.closeSync(d.nfd)}catch(E){throw E.code?new S.ErrnoError(At.convertNodeCode(E)):E}},read:function(d,E,I,k,T){if(k===0)return 0;try{return Te.readSync(d.nfd,At.bufferFrom(E.buffer),I,k,T)}catch(Z){throw new S.ErrnoError(At.convertNodeCode(Z))}},write:function(d,E,I,k,T){try{return Te.writeSync(d.nfd,At.bufferFrom(E.buffer),I,k,T)}catch(Z){throw new S.ErrnoError(At.convertNodeCode(Z))}},llseek:function(d,E,I){var k=E;if(I===1)k+=d.position;else if(I===2&&S.isFile(d.node.mode))try{var T=Te.fstatSync(d.nfd);k+=T.size}catch(Z){throw new S.ErrnoError(At.convertNodeCode(Z))}if(k<0)throw new S.ErrnoError(28);return k},mmap:function(d,E,I,k,T,Z){if(E!==0)throw new S.ErrnoError(28);if(!S.isFile(d.node.mode))throw new S.ErrnoError(43);var te=ss(I);return At.stream_ops.read(d,ne,te,I,k),{ptr:te,allocated:!0}},msync:function(d,E,I,k,T){if(!S.isFile(d.node.mode))throw new S.ErrnoError(43);if(T&2)return 0;var Z=At.stream_ops.write(d,E,0,k,I,!1);return 0}}},An={lookupPath:function(d){return{path:d,node:{mode:At.getMode(d)}}},createStandardStreams:function(){S.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var d=1;d<3;d++)S.streams[d]={fd:d,nfd:d,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(d,E){S.isDir(d)?Te.mkdirSync(d,E):Te.writeFileSync(d,"",{mode:E})},mkdir:function(){Te.mkdirSync.apply(void 0,arguments)},symlink:function(){Te.symlinkSync.apply(void 0,arguments)},rename:function(){Te.renameSync.apply(void 0,arguments)},rmdir:function(){Te.rmdirSync.apply(void 0,arguments)},readdir:function(){Te.readdirSync.apply(void 0,arguments)},unlink:function(){Te.unlinkSync.apply(void 0,arguments)},readlink:function(){return Te.readlinkSync.apply(void 0,arguments)},stat:function(){return Te.statSync.apply(void 0,arguments)},lstat:function(){return Te.lstatSync.apply(void 0,arguments)},chmod:function(){Te.chmodSync.apply(void 0,arguments)},fchmod:function(){Te.fchmodSync.apply(void 0,arguments)},chown:function(){Te.chownSync.apply(void 0,arguments)},fchown:function(){Te.fchownSync.apply(void 0,arguments)},truncate:function(){Te.truncateSync.apply(void 0,arguments)},ftruncate:function(d,E){if(E<0)throw new S.ErrnoError(28);Te.ftruncateSync.apply(void 0,arguments)},utime:function(){Te.utimesSync.apply(void 0,arguments)},open:function(d,E,I,k){typeof E=="string"&&(E=Hs.modeStringToFlags(E));var T=Te.openSync(d,At.flagsForNode(E),I),Z=k!=null?k:S.nextfd(T),te={fd:Z,nfd:T,position:0,path:d,flags:E,seekable:!0};return S.streams[Z]=te,te},close:function(d){d.stream_ops||Te.closeSync(d.nfd),S.closeStream(d.fd)},llseek:function(d,E,I){if(d.stream_ops)return Hs.llseek(d,E,I);var k=E;if(I===1)k+=d.position;else if(I===2)k+=Te.fstatSync(d.nfd).size;else if(I!==0)throw new S.ErrnoError(wo.EINVAL);if(k<0)throw new S.ErrnoError(wo.EINVAL);return d.position=k,k},read:function(d,E,I,k,T){if(d.stream_ops)return Hs.read(d,E,I,k,T);var Z=typeof T<"u";!Z&&d.seekable&&(T=d.position);var te=Te.readSync(d.nfd,At.bufferFrom(E.buffer),I,k,T);return Z||(d.position+=te),te},write:function(d,E,I,k,T){if(d.stream_ops)return Hs.write(d,E,I,k,T);d.flags&+"1024"&&S.llseek(d,0,+"2");var Z=typeof T<"u";!Z&&d.seekable&&(T=d.position);var te=Te.writeSync(d.nfd,At.bufferFrom(E.buffer),I,k,T);return Z||(d.position+=te),te},allocate:function(){throw new S.ErrnoError(wo.EOPNOTSUPP)},mmap:function(d,E,I,k,T,Z){if(d.stream_ops)return Hs.mmap(d,E,I,k,T,Z);if(E!==0)throw new S.ErrnoError(28);var te=ss(I);return S.read(d,ne,te,I,k),{ptr:te,allocated:!0}},msync:function(d,E,I,k,T){return d.stream_ops?Hs.msync(d,E,I,k,T):(T&2||S.write(d,E,0,k,I),0)},munmap:function(){return 0},ioctl:function(){throw new S.ErrnoError(wo.ENOTTY)}},S={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(d,E){if(d=Fn.resolve(S.cwd(),d),E=E||{},!d)return{path:"",node:null};var I={follow_mount:!0,recurse_count:0};for(var k in I)E[k]===void 0&&(E[k]=I[k]);if(E.recurse_count>8)throw new S.ErrnoError(32);for(var T=Qt.normalizeArray(d.split("/").filter(function(lt){return!!lt}),!1),Z=S.root,te="/",we=0;we40)throw new S.ErrnoError(32)}}return{path:te,node:Z}},getPath:function(d){for(var E;;){if(S.isRoot(d)){var I=d.mount.mountpoint;return E?I[I.length-1]!=="/"?I+"/"+E:I+E:I}E=E?d.name+"/"+E:d.name,d=d.parent}},hashName:function(d,E){for(var I=0,k=0;k>>0)%S.nameTable.length},hashAddNode:function(d){var E=S.hashName(d.parent.id,d.name);d.name_next=S.nameTable[E],S.nameTable[E]=d},hashRemoveNode:function(d){var E=S.hashName(d.parent.id,d.name);if(S.nameTable[E]===d)S.nameTable[E]=d.name_next;else for(var I=S.nameTable[E];I;){if(I.name_next===d){I.name_next=d.name_next;break}I=I.name_next}},lookupNode:function(d,E){var I=S.mayLookup(d);if(I)throw new S.ErrnoError(I,d);for(var k=S.hashName(d.id,E),T=S.nameTable[k];T;T=T.name_next){var Z=T.name;if(T.parent.id===d.id&&Z===E)return T}return S.lookup(d,E)},createNode:function(d,E,I,k){var T=new S.FSNode(d,E,I,k);return S.hashAddNode(T),T},destroyNode:function(d){S.hashRemoveNode(d)},isRoot:function(d){return d===d.parent},isMountpoint:function(d){return!!d.mounted},isFile:function(d){return(d&61440)===32768},isDir:function(d){return(d&61440)===16384},isLink:function(d){return(d&61440)===40960},isChrdev:function(d){return(d&61440)===8192},isBlkdev:function(d){return(d&61440)===24576},isFIFO:function(d){return(d&61440)===4096},isSocket:function(d){return(d&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(d){var E=S.flagModes[d];if(typeof E>"u")throw new Error("Unknown file open mode: "+d);return E},flagsToPermissionString:function(d){var E=["r","w","rw"][d&3];return d&512&&(E+="w"),E},nodePermissions:function(d,E){return S.ignorePermissions?0:E.includes("r")&&!(d.mode&292)||E.includes("w")&&!(d.mode&146)||E.includes("x")&&!(d.mode&73)?2:0},mayLookup:function(d){var E=S.nodePermissions(d,"x");return E||(d.node_ops.lookup?0:2)},mayCreate:function(d,E){try{var I=S.lookupNode(d,E);return 20}catch{}return S.nodePermissions(d,"wx")},mayDelete:function(d,E,I){var k;try{k=S.lookupNode(d,E)}catch(Z){return Z.errno}var T=S.nodePermissions(d,"wx");if(T)return T;if(I){if(!S.isDir(k.mode))return 54;if(S.isRoot(k)||S.getPath(k)===S.cwd())return 10}else if(S.isDir(k.mode))return 31;return 0},mayOpen:function(d,E){return d?S.isLink(d.mode)?32:S.isDir(d.mode)&&(S.flagsToPermissionString(E)!=="r"||E&512)?31:S.nodePermissions(d,S.flagsToPermissionString(E)):44},MAX_OPEN_FDS:4096,nextfd:function(d,E){d=d||0,E=E||S.MAX_OPEN_FDS;for(var I=d;I<=E;I++)if(!S.streams[I])return I;throw new S.ErrnoError(33)},getStream:function(d){return S.streams[d]},createStream:function(d,E,I){S.FSStream||(S.FSStream=function(){},S.FSStream.prototype={object:{get:function(){return this.node},set:function(te){this.node=te}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var k=new S.FSStream;for(var T in d)k[T]=d[T];d=k;var Z=S.nextfd(E,I);return d.fd=Z,S.streams[Z]=d,d},closeStream:function(d){S.streams[d]=null},chrdev_stream_ops:{open:function(d){var E=S.getDevice(d.node.rdev);d.stream_ops=E.stream_ops,d.stream_ops.open&&d.stream_ops.open(d)},llseek:function(){throw new S.ErrnoError(70)}},major:function(d){return d>>8},minor:function(d){return d&255},makedev:function(d,E){return d<<8|E},registerDevice:function(d,E){S.devices[d]={stream_ops:E}},getDevice:function(d){return S.devices[d]},getMounts:function(d){for(var E=[],I=[d];I.length;){var k=I.pop();E.push(k),I.push.apply(I,k.mounts)}return E},syncfs:function(d,E){typeof d=="function"&&(E=d,d=!1),S.syncFSRequests++,S.syncFSRequests>1&&D("warning: "+S.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var I=S.getMounts(S.root.mount),k=0;function T(te){return S.syncFSRequests--,E(te)}function Z(te){if(te)return Z.errored?void 0:(Z.errored=!0,T(te));++k>=I.length&&T(null)}I.forEach(function(te){if(!te.type.syncfs)return Z(null);te.type.syncfs(te,d,Z)})},mount:function(d,E,I){var k=I==="/",T=!I,Z;if(k&&S.root)throw new S.ErrnoError(10);if(!k&&!T){var te=S.lookupPath(I,{follow_mount:!1});if(I=te.path,Z=te.node,S.isMountpoint(Z))throw new S.ErrnoError(10);if(!S.isDir(Z.mode))throw new S.ErrnoError(54)}var we={type:d,opts:E,mountpoint:I,mounts:[]},me=d.mount(we);return me.mount=we,we.root=me,k?S.root=me:Z&&(Z.mounted=we,Z.mount&&Z.mount.mounts.push(we)),me},unmount:function(d){var E=S.lookupPath(d,{follow_mount:!1});if(!S.isMountpoint(E.node))throw new S.ErrnoError(28);var I=E.node,k=I.mounted,T=S.getMounts(k);Object.keys(S.nameTable).forEach(function(te){for(var we=S.nameTable[te];we;){var me=we.name_next;T.includes(we.mount)&&S.destroyNode(we),we=me}}),I.mounted=null;var Z=I.mount.mounts.indexOf(k);I.mount.mounts.splice(Z,1)},lookup:function(d,E){return d.node_ops.lookup(d,E)},mknod:function(d,E,I){var k=S.lookupPath(d,{parent:!0}),T=k.node,Z=Qt.basename(d);if(!Z||Z==="."||Z==="..")throw new S.ErrnoError(28);var te=S.mayCreate(T,Z);if(te)throw new S.ErrnoError(te);if(!T.node_ops.mknod)throw new S.ErrnoError(63);return T.node_ops.mknod(T,Z,E,I)},create:function(d,E){return E=E!==void 0?E:438,E&=4095,E|=32768,S.mknod(d,E,0)},mkdir:function(d,E){return E=E!==void 0?E:511,E&=1023,E|=16384,S.mknod(d,E,0)},mkdirTree:function(d,E){for(var I=d.split("/"),k="",T=0;T"u"&&(I=E,E=438),E|=8192,S.mknod(d,E,I)},symlink:function(d,E){if(!Fn.resolve(d))throw new S.ErrnoError(44);var I=S.lookupPath(E,{parent:!0}),k=I.node;if(!k)throw new S.ErrnoError(44);var T=Qt.basename(E),Z=S.mayCreate(k,T);if(Z)throw new S.ErrnoError(Z);if(!k.node_ops.symlink)throw new S.ErrnoError(63);return k.node_ops.symlink(k,T,d)},rename:function(d,E){var I=Qt.dirname(d),k=Qt.dirname(E),T=Qt.basename(d),Z=Qt.basename(E),te,we,me;if(te=S.lookupPath(d,{parent:!0}),we=te.node,te=S.lookupPath(E,{parent:!0}),me=te.node,!we||!me)throw new S.ErrnoError(44);if(we.mount!==me.mount)throw new S.ErrnoError(75);var Je=S.lookupNode(we,T),nt=Fn.relative(d,k);if(nt.charAt(0)!==".")throw new S.ErrnoError(28);if(nt=Fn.relative(E,I),nt.charAt(0)!==".")throw new S.ErrnoError(55);var wt;try{wt=S.lookupNode(me,Z)}catch{}if(Je!==wt){var lt=S.isDir(Je.mode),it=S.mayDelete(we,T,lt);if(it)throw new S.ErrnoError(it);if(it=wt?S.mayDelete(me,Z,lt):S.mayCreate(me,Z),it)throw new S.ErrnoError(it);if(!we.node_ops.rename)throw new S.ErrnoError(63);if(S.isMountpoint(Je)||wt&&S.isMountpoint(wt))throw new S.ErrnoError(10);if(me!==we&&(it=S.nodePermissions(we,"w"),it))throw new S.ErrnoError(it);try{S.trackingDelegate.willMovePath&&S.trackingDelegate.willMovePath(d,E)}catch(Et){D("FS.trackingDelegate['willMovePath']('"+d+"', '"+E+"') threw an exception: "+Et.message)}S.hashRemoveNode(Je);try{we.node_ops.rename(Je,me,Z)}catch(Et){throw Et}finally{S.hashAddNode(Je)}try{S.trackingDelegate.onMovePath&&S.trackingDelegate.onMovePath(d,E)}catch(Et){D("FS.trackingDelegate['onMovePath']('"+d+"', '"+E+"') threw an exception: "+Et.message)}}},rmdir:function(d){var E=S.lookupPath(d,{parent:!0}),I=E.node,k=Qt.basename(d),T=S.lookupNode(I,k),Z=S.mayDelete(I,k,!0);if(Z)throw new S.ErrnoError(Z);if(!I.node_ops.rmdir)throw new S.ErrnoError(63);if(S.isMountpoint(T))throw new S.ErrnoError(10);try{S.trackingDelegate.willDeletePath&&S.trackingDelegate.willDeletePath(d)}catch(te){D("FS.trackingDelegate['willDeletePath']('"+d+"') threw an exception: "+te.message)}I.node_ops.rmdir(I,k),S.destroyNode(T);try{S.trackingDelegate.onDeletePath&&S.trackingDelegate.onDeletePath(d)}catch(te){D("FS.trackingDelegate['onDeletePath']('"+d+"') threw an exception: "+te.message)}},readdir:function(d){var E=S.lookupPath(d,{follow:!0}),I=E.node;if(!I.node_ops.readdir)throw new S.ErrnoError(54);return I.node_ops.readdir(I)},unlink:function(d){var E=S.lookupPath(d,{parent:!0}),I=E.node,k=Qt.basename(d),T=S.lookupNode(I,k),Z=S.mayDelete(I,k,!1);if(Z)throw new S.ErrnoError(Z);if(!I.node_ops.unlink)throw new S.ErrnoError(63);if(S.isMountpoint(T))throw new S.ErrnoError(10);try{S.trackingDelegate.willDeletePath&&S.trackingDelegate.willDeletePath(d)}catch(te){D("FS.trackingDelegate['willDeletePath']('"+d+"') threw an exception: "+te.message)}I.node_ops.unlink(I,k),S.destroyNode(T);try{S.trackingDelegate.onDeletePath&&S.trackingDelegate.onDeletePath(d)}catch(te){D("FS.trackingDelegate['onDeletePath']('"+d+"') threw an exception: "+te.message)}},readlink:function(d){var E=S.lookupPath(d),I=E.node;if(!I)throw new S.ErrnoError(44);if(!I.node_ops.readlink)throw new S.ErrnoError(28);return Fn.resolve(S.getPath(I.parent),I.node_ops.readlink(I))},stat:function(d,E){var I=S.lookupPath(d,{follow:!E}),k=I.node;if(!k)throw new S.ErrnoError(44);if(!k.node_ops.getattr)throw new S.ErrnoError(63);return k.node_ops.getattr(k)},lstat:function(d){return S.stat(d,!0)},chmod:function(d,E,I){var k;if(typeof d=="string"){var T=S.lookupPath(d,{follow:!I});k=T.node}else k=d;if(!k.node_ops.setattr)throw new S.ErrnoError(63);k.node_ops.setattr(k,{mode:E&4095|k.mode&-4096,timestamp:Date.now()})},lchmod:function(d,E){S.chmod(d,E,!0)},fchmod:function(d,E){var I=S.getStream(d);if(!I)throw new S.ErrnoError(8);S.chmod(I.node,E)},chown:function(d,E,I,k){var T;if(typeof d=="string"){var Z=S.lookupPath(d,{follow:!k});T=Z.node}else T=d;if(!T.node_ops.setattr)throw new S.ErrnoError(63);T.node_ops.setattr(T,{timestamp:Date.now()})},lchown:function(d,E,I){S.chown(d,E,I,!0)},fchown:function(d,E,I){var k=S.getStream(d);if(!k)throw new S.ErrnoError(8);S.chown(k.node,E,I)},truncate:function(d,E){if(E<0)throw new S.ErrnoError(28);var I;if(typeof d=="string"){var k=S.lookupPath(d,{follow:!0});I=k.node}else I=d;if(!I.node_ops.setattr)throw new S.ErrnoError(63);if(S.isDir(I.mode))throw new S.ErrnoError(31);if(!S.isFile(I.mode))throw new S.ErrnoError(28);var T=S.nodePermissions(I,"w");if(T)throw new S.ErrnoError(T);I.node_ops.setattr(I,{size:E,timestamp:Date.now()})},ftruncate:function(d,E){var I=S.getStream(d);if(!I)throw new S.ErrnoError(8);if((I.flags&2097155)===0)throw new S.ErrnoError(28);S.truncate(I.node,E)},utime:function(d,E,I){var k=S.lookupPath(d,{follow:!0}),T=k.node;T.node_ops.setattr(T,{timestamp:Math.max(E,I)})},open:function(d,E,I,k,T){if(d==="")throw new S.ErrnoError(44);E=typeof E=="string"?S.modeStringToFlags(E):E,I=typeof I>"u"?438:I,E&64?I=I&4095|32768:I=0;var Z;if(typeof d=="object")Z=d;else{d=Qt.normalize(d);try{var te=S.lookupPath(d,{follow:!(E&131072)});Z=te.node}catch{}}var we=!1;if(E&64)if(Z){if(E&128)throw new S.ErrnoError(20)}else Z=S.mknod(d,I,0),we=!0;if(!Z)throw new S.ErrnoError(44);if(S.isChrdev(Z.mode)&&(E&=-513),E&65536&&!S.isDir(Z.mode))throw new S.ErrnoError(54);if(!we){var me=S.mayOpen(Z,E);if(me)throw new S.ErrnoError(me)}E&512&&S.truncate(Z,0),E&=-131713;var Je=S.createStream({node:Z,path:S.getPath(Z),flags:E,seekable:!0,position:0,stream_ops:Z.stream_ops,ungotten:[],error:!1},k,T);Je.stream_ops.open&&Je.stream_ops.open(Je),t.logReadFiles&&!(E&1)&&(S.readFiles||(S.readFiles={}),d in S.readFiles||(S.readFiles[d]=1,D("FS.trackingDelegate error on read file: "+d)));try{if(S.trackingDelegate.onOpenFile){var nt=0;(E&2097155)!==1&&(nt|=S.tracking.openFlags.READ),(E&2097155)!==0&&(nt|=S.tracking.openFlags.WRITE),S.trackingDelegate.onOpenFile(d,nt)}}catch(wt){D("FS.trackingDelegate['onOpenFile']('"+d+"', flags) threw an exception: "+wt.message)}return Je},close:function(d){if(S.isClosed(d))throw new S.ErrnoError(8);d.getdents&&(d.getdents=null);try{d.stream_ops.close&&d.stream_ops.close(d)}catch(E){throw E}finally{S.closeStream(d.fd)}d.fd=null},isClosed:function(d){return d.fd===null},llseek:function(d,E,I){if(S.isClosed(d))throw new S.ErrnoError(8);if(!d.seekable||!d.stream_ops.llseek)throw new S.ErrnoError(70);if(I!=0&&I!=1&&I!=2)throw new S.ErrnoError(28);return d.position=d.stream_ops.llseek(d,E,I),d.ungotten=[],d.position},read:function(d,E,I,k,T){if(k<0||T<0)throw new S.ErrnoError(28);if(S.isClosed(d))throw new S.ErrnoError(8);if((d.flags&2097155)===1)throw new S.ErrnoError(8);if(S.isDir(d.node.mode))throw new S.ErrnoError(31);if(!d.stream_ops.read)throw new S.ErrnoError(28);var Z=typeof T<"u";if(!Z)T=d.position;else if(!d.seekable)throw new S.ErrnoError(70);var te=d.stream_ops.read(d,E,I,k,T);return Z||(d.position+=te),te},write:function(d,E,I,k,T,Z){if(k<0||T<0)throw new S.ErrnoError(28);if(S.isClosed(d))throw new S.ErrnoError(8);if((d.flags&2097155)===0)throw new S.ErrnoError(8);if(S.isDir(d.node.mode))throw new S.ErrnoError(31);if(!d.stream_ops.write)throw new S.ErrnoError(28);d.seekable&&d.flags&1024&&S.llseek(d,0,2);var te=typeof T<"u";if(!te)T=d.position;else if(!d.seekable)throw new S.ErrnoError(70);var we=d.stream_ops.write(d,E,I,k,T,Z);te||(d.position+=we);try{d.path&&S.trackingDelegate.onWriteToFile&&S.trackingDelegate.onWriteToFile(d.path)}catch(me){D("FS.trackingDelegate['onWriteToFile']('"+d.path+"') threw an exception: "+me.message)}return we},allocate:function(d,E,I){if(S.isClosed(d))throw new S.ErrnoError(8);if(E<0||I<=0)throw new S.ErrnoError(28);if((d.flags&2097155)===0)throw new S.ErrnoError(8);if(!S.isFile(d.node.mode)&&!S.isDir(d.node.mode))throw new S.ErrnoError(43);if(!d.stream_ops.allocate)throw new S.ErrnoError(138);d.stream_ops.allocate(d,E,I)},mmap:function(d,E,I,k,T,Z){if((T&2)!==0&&(Z&2)===0&&(d.flags&2097155)!==2)throw new S.ErrnoError(2);if((d.flags&2097155)===1)throw new S.ErrnoError(2);if(!d.stream_ops.mmap)throw new S.ErrnoError(43);return d.stream_ops.mmap(d,E,I,k,T,Z)},msync:function(d,E,I,k,T){return!d||!d.stream_ops.msync?0:d.stream_ops.msync(d,E,I,k,T)},munmap:function(d){return 0},ioctl:function(d,E,I){if(!d.stream_ops.ioctl)throw new S.ErrnoError(59);return d.stream_ops.ioctl(d,E,I)},readFile:function(d,E){if(E=E||{},E.flags=E.flags||0,E.encoding=E.encoding||"binary",E.encoding!=="utf8"&&E.encoding!=="binary")throw new Error('Invalid encoding type "'+E.encoding+'"');var I,k=S.open(d,E.flags),T=S.stat(d),Z=T.size,te=new Uint8Array(Z);return S.read(k,te,0,Z,0),E.encoding==="utf8"?I=ke(te,0):E.encoding==="binary"&&(I=te),S.close(k),I},writeFile:function(d,E,I){I=I||{},I.flags=I.flags||577;var k=S.open(d,I.flags,I.mode);if(typeof E=="string"){var T=new Uint8Array(le(E)+1),Z=Ne(E,T,0,T.length);S.write(k,T,0,Z,void 0,I.canOwn)}else if(ArrayBuffer.isView(E))S.write(k,E,0,E.byteLength,void 0,I.canOwn);else throw new Error("Unsupported data type");S.close(k)},cwd:function(){return S.currentPath},chdir:function(d){var E=S.lookupPath(d,{follow:!0});if(E.node===null)throw new S.ErrnoError(44);if(!S.isDir(E.node.mode))throw new S.ErrnoError(54);var I=S.nodePermissions(E.node,"x");if(I)throw new S.ErrnoError(I);S.currentPath=E.path},createDefaultDirectories:function(){S.mkdir("/tmp"),S.mkdir("/home"),S.mkdir("/home/web_user")},createDefaultDevices:function(){S.mkdir("/dev"),S.registerDevice(S.makedev(1,3),{read:function(){return 0},write:function(E,I,k,T,Z){return T}}),S.mkdev("/dev/null",S.makedev(1,3)),ns.register(S.makedev(5,0),ns.default_tty_ops),ns.register(S.makedev(6,0),ns.default_tty1_ops),S.mkdev("/dev/tty",S.makedev(5,0)),S.mkdev("/dev/tty1",S.makedev(6,0));var d=Tl();S.createDevice("/dev","random",d),S.createDevice("/dev","urandom",d),S.mkdir("/dev/shm"),S.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){S.mkdir("/proc");var d=S.mkdir("/proc/self");S.mkdir("/proc/self/fd"),S.mount({mount:function(){var E=S.createNode(d,"fd",16895,73);return E.node_ops={lookup:function(I,k){var T=+k,Z=S.getStream(T);if(!Z)throw new S.ErrnoError(8);var te={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return Z.path}}};return te.parent=te,te}},E}},{},"/proc/self/fd")},createStandardStreams:function(){t.stdin?S.createDevice("/dev","stdin",t.stdin):S.symlink("/dev/tty","/dev/stdin"),t.stdout?S.createDevice("/dev","stdout",null,t.stdout):S.symlink("/dev/tty","/dev/stdout"),t.stderr?S.createDevice("/dev","stderr",null,t.stderr):S.symlink("/dev/tty1","/dev/stderr");var d=S.open("/dev/stdin",0),E=S.open("/dev/stdout",1),I=S.open("/dev/stderr",1)},ensureErrnoError:function(){S.ErrnoError||(S.ErrnoError=function(E,I){this.node=I,this.setErrno=function(k){this.errno=k},this.setErrno(E),this.message="FS error"},S.ErrnoError.prototype=new Error,S.ErrnoError.prototype.constructor=S.ErrnoError,[44].forEach(function(d){S.genericErrors[d]=new S.ErrnoError(d),S.genericErrors[d].stack=""}))},staticInit:function(){S.ensureErrnoError(),S.nameTable=new Array(4096),S.mount(gt,{},"/"),S.createDefaultDirectories(),S.createDefaultDevices(),S.createSpecialDirectories(),S.filesystems={MEMFS:gt,NODEFS:At}},init:function(d,E,I){S.init.initialized=!0,S.ensureErrnoError(),t.stdin=d||t.stdin,t.stdout=E||t.stdout,t.stderr=I||t.stderr,S.createStandardStreams()},quit:function(){S.init.initialized=!1;var d=t._fflush;d&&d(0);for(var E=0;Ethis.length-1||lt<0)){var it=lt%this.chunkSize,Et=lt/this.chunkSize|0;return this.getter(Et)[it]}},Z.prototype.setDataGetter=function(lt){this.getter=lt},Z.prototype.cacheLength=function(){var lt=new XMLHttpRequest;if(lt.open("HEAD",I,!1),lt.send(null),!(lt.status>=200&<.status<300||lt.status===304))throw new Error("Couldn't load "+I+". Status: "+lt.status);var it=Number(lt.getResponseHeader("Content-length")),Et,Qe=(Et=lt.getResponseHeader("Accept-Ranges"))&&Et==="bytes",Tn=(Et=lt.getResponseHeader("Content-Encoding"))&&Et==="gzip",Ri=1024*1024;Qe||(Ri=it);var SA=function(os,ma){if(os>ma)throw new Error("invalid range ("+os+", "+ma+") or no bytes requested!");if(ma>it-1)throw new Error("only "+it+" bytes available! programmer error!");var Ur=new XMLHttpRequest;if(Ur.open("GET",I,!1),it!==Ri&&Ur.setRequestHeader("Range","bytes="+os+"-"+ma),typeof Uint8Array<"u"&&(Ur.responseType="arraybuffer"),Ur.overrideMimeType&&Ur.overrideMimeType("text/plain; charset=x-user-defined"),Ur.send(null),!(Ur.status>=200&&Ur.status<300||Ur.status===304))throw new Error("Couldn't load "+I+". Status: "+Ur.status);return Ur.response!==void 0?new Uint8Array(Ur.response||[]):yA(Ur.responseText||"",!0)},Mr=this;Mr.setDataGetter(function(os){var ma=os*Ri,Ur=(os+1)*Ri-1;if(Ur=Math.min(Ur,it-1),typeof Mr.chunks[os]>"u"&&(Mr.chunks[os]=SA(ma,Ur)),typeof Mr.chunks[os]>"u")throw new Error("doXHR failed!");return Mr.chunks[os]}),(Tn||!it)&&(Ri=it=1,it=this.getter(0).length,Ri=it,v("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=it,this._chunkSize=Ri,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var te=new Z;Object.defineProperties(te,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var we={isDevice:!1,contents:te}}else var we={isDevice:!1,url:I};var me=S.createFile(d,E,we,k,T);we.contents?me.contents=we.contents:we.url&&(me.contents=null,me.url=we.url),Object.defineProperties(me,{usedBytes:{get:function(){return this.contents.length}}});var Je={},nt=Object.keys(me.stream_ops);return nt.forEach(function(wt){var lt=me.stream_ops[wt];Je[wt]=function(){return S.forceLoadFile(me),lt.apply(null,arguments)}}),Je.read=function(lt,it,Et,Qe,Tn){S.forceLoadFile(me);var Ri=lt.node.contents;if(Tn>=Ri.length)return 0;var SA=Math.min(Ri.length-Tn,Qe);if(Ri.slice)for(var Mr=0;Mr>2]=k.dev,de[I+4>>2]=0,de[I+8>>2]=k.ino,de[I+12>>2]=k.mode,de[I+16>>2]=k.nlink,de[I+20>>2]=k.uid,de[I+24>>2]=k.gid,de[I+28>>2]=k.rdev,de[I+32>>2]=0,se=[k.size>>>0,(vr=k.size,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[I+40>>2]=se[0],de[I+44>>2]=se[1],de[I+48>>2]=4096,de[I+52>>2]=k.blocks,de[I+56>>2]=k.atime.getTime()/1e3|0,de[I+60>>2]=0,de[I+64>>2]=k.mtime.getTime()/1e3|0,de[I+68>>2]=0,de[I+72>>2]=k.ctime.getTime()/1e3|0,de[I+76>>2]=0,se=[k.ino>>>0,(vr=k.ino,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[I+80>>2]=se[0],de[I+84>>2]=se[1],0},doMsync:function(d,E,I,k,T){var Z=Y.slice(d,d+I);S.msync(E,Z,T,I,k)},doMkdir:function(d,E){return d=Qt.normalize(d),d[d.length-1]==="/"&&(d=d.substr(0,d.length-1)),S.mkdir(d,E,0),0},doMknod:function(d,E,I){switch(E&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return S.mknod(d,E,I),0},doReadlink:function(d,E,I){if(I<=0)return-28;var k=S.readlink(d),T=Math.min(I,le(k)),Z=ne[E+T];return oe(k,E,I+1),ne[E+T]=Z,T},doAccess:function(d,E){if(E&-8)return-28;var I,k=S.lookupPath(d,{follow:!0});if(I=k.node,!I)return-44;var T="";return E&4&&(T+="r"),E&2&&(T+="w"),E&1&&(T+="x"),T&&S.nodePermissions(I,T)?-2:0},doDup:function(d,E,I){var k=S.getStream(I);return k&&S.close(k),S.open(d,E,0,I,I).fd},doReadv:function(d,E,I,k){for(var T=0,Z=0;Z>2],we=de[E+(Z*8+4)>>2],me=S.read(d,ne,te,we,k);if(me<0)return-1;if(T+=me,me>2],we=de[E+(Z*8+4)>>2],me=S.write(d,ne,te,we,k);if(me<0)return-1;T+=me}return T},varargs:void 0,get:function(){Tt.varargs+=4;var d=de[Tt.varargs-4>>2];return d},getStr:function(d){var E=Fe(d);return E},getStreamFromFD:function(d){var E=S.getStream(d);if(!E)throw new S.ErrnoError(8);return E},get64:function(d,E){return d}};function hg(d,E){try{return d=Tt.getStr(d),S.chmod(d,E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function Ol(d){return de[Ft()>>2]=d,d}function bp(d,E,I){Tt.varargs=I;try{var k=Tt.getStreamFromFD(d);switch(E){case 0:{var T=Tt.get();if(T<0)return-28;var Z;return Z=S.open(k.path,k.flags,0,T),Z.fd}case 1:case 2:return 0;case 3:return k.flags;case 4:{var T=Tt.get();return k.flags|=T,0}case 12:{var T=Tt.get(),te=0;return he[T+te>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Ol(28),-1;default:return-28}}catch(we){return(typeof S>"u"||!(we instanceof S.ErrnoError))&&wr(we),-we.errno}}function Sp(d,E){try{var I=Tt.getStreamFromFD(d);return Tt.doStat(S.stat,I.path,E)}catch(k){return(typeof S>"u"||!(k instanceof S.ErrnoError))&&wr(k),-k.errno}}function vp(d,E,I){Tt.varargs=I;try{var k=Tt.getStreamFromFD(d);switch(E){case 21509:case 21505:return k.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return k.tty?0:-59;case 21519:{if(!k.tty)return-59;var T=Tt.get();return de[T>>2]=0,0}case 21520:return k.tty?-28:-59;case 21531:{var T=Tt.get();return S.ioctl(k,E,T)}case 21523:return k.tty?0:-59;case 21524:return k.tty?0:-59;default:wr("bad ioctl syscall "+E)}}catch(Z){return(typeof S>"u"||!(Z instanceof S.ErrnoError))&&wr(Z),-Z.errno}}function xp(d,E,I){Tt.varargs=I;try{var k=Tt.getStr(d),T=I?Tt.get():0,Z=S.open(k,E,T);return Z.fd}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),-te.errno}}function Pp(d,E){try{return d=Tt.getStr(d),E=Tt.getStr(E),S.rename(d,E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function G(d){try{return d=Tt.getStr(d),S.rmdir(d),0}catch(E){return(typeof S>"u"||!(E instanceof S.ErrnoError))&&wr(E),-E.errno}}function yt(d,E){try{return d=Tt.getStr(d),Tt.doStat(S.stat,d,E)}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),-I.errno}}function IA(d){try{return d=Tt.getStr(d),S.unlink(d),0}catch(E){return(typeof S>"u"||!(E instanceof S.ErrnoError))&&wr(E),-E.errno}}function Wi(d,E,I){Y.copyWithin(d,E,E+I)}function Ml(d){try{return A.grow(d-qe.byteLength+65535>>>16),Or(A.buffer),1}catch{}}function Xe(d){var E=Y.length;d=d>>>0;var I=2147483648;if(d>I)return!1;for(var k=1;k<=4;k*=2){var T=E*(1+.2/k);T=Math.min(T,d+100663296);var Z=Math.min(I,ae(Math.max(d,T),65536)),te=Ml(Z);if(te)return!0}return!1}function ha(d){try{var E=Tt.getStreamFromFD(d);return S.close(E),0}catch(I){return(typeof S>"u"||!(I instanceof S.ErrnoError))&&wr(I),I.errno}}function pg(d,E){try{var I=Tt.getStreamFromFD(d),k=I.tty?2:S.isDir(I.mode)?3:S.isLink(I.mode)?7:4;return ne[E>>0]=k,0}catch(T){return(typeof S>"u"||!(T instanceof S.ErrnoError))&&wr(T),T.errno}}function OE(d,E,I,k){try{var T=Tt.getStreamFromFD(d),Z=Tt.doReadv(T,E,I);return de[k>>2]=Z,0}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),te.errno}}function Dp(d,E,I,k,T){try{var Z=Tt.getStreamFromFD(d),te=4294967296,we=I*te+(E>>>0),me=9007199254740992;return we<=-me||we>=me?-61:(S.llseek(Z,we,k),se=[Z.position>>>0,(vr=Z.position,+Math.abs(vr)>=1?vr>0?(Math.min(+Math.floor(vr/4294967296),4294967295)|0)>>>0:~~+Math.ceil((vr-+(~~vr>>>0))/4294967296)>>>0:0)],de[T>>2]=se[0],de[T+4>>2]=se[1],Z.getdents&&we===0&&k===0&&(Z.getdents=null),0)}catch(Je){return(typeof S>"u"||!(Je instanceof S.ErrnoError))&&wr(Je),Je.errno}}function ME(d,E,I,k){try{var T=Tt.getStreamFromFD(d),Z=Tt.doWritev(T,E,I);return de[k>>2]=Z,0}catch(te){return(typeof S>"u"||!(te instanceof S.ErrnoError))&&wr(te),te.errno}}function ar(d){$(d)}function Nn(d){var E=Date.now()/1e3|0;return d&&(de[d>>2]=E),E}function Ul(){if(Ul.called)return;Ul.called=!0;var d=new Date().getFullYear(),E=new Date(d,0,1),I=new Date(d,6,1),k=E.getTimezoneOffset(),T=I.getTimezoneOffset(),Z=Math.max(k,T);de[iS()>>2]=Z*60,de[rS()>>2]=Number(k!=T);function te(wt){var lt=wt.toTimeString().match(/\(([A-Za-z ]+)\)$/);return lt?lt[1]:"GMT"}var we=te(E),me=te(I),Je=Be(we),nt=Be(me);T>2]=Je,de[wg()+4>>2]=nt):(de[wg()>>2]=nt,de[wg()+4>>2]=Je)}function kp(d){Ul();var E=Date.UTC(de[d+20>>2]+1900,de[d+16>>2],de[d+12>>2],de[d+8>>2],de[d+4>>2],de[d>>2],0),I=new Date(E);de[d+24>>2]=I.getUTCDay();var k=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),T=(I.getTime()-k)/(1e3*60*60*24)|0;return de[d+28>>2]=T,I.getTime()/1e3|0}var Ks=function(d,E,I,k){d||(d=this),this.parent=d,this.mount=d.mount,this.mounted=null,this.id=S.nextInode++,this.name=E,this.mode=I,this.node_ops={},this.stream_ops={},this.rdev=k},pa=365,ln=146;if(Object.defineProperties(Ks.prototype,{read:{get:function(){return(this.mode&pa)===pa},set:function(d){d?this.mode|=pa:this.mode&=~pa}},write:{get:function(){return(this.mode&ln)===ln},set:function(d){d?this.mode|=ln:this.mode&=~ln}},isFolder:{get:function(){return S.isDir(this.mode)}},isDevice:{get:function(){return S.isChrdev(this.mode)}}}),S.FSNode=Ks,S.staticInit(),g){var Te=eV,dg=J("path");At.staticInit()}if(g){var Kl=function(d){return function(){try{return d.apply(this,arguments)}catch(E){throw E.code?new S.ErrnoError(wo[E.code]):E}}},Hs=Object.assign({},S);for(var Hl in An)S[Hl]=Kl(An[Hl])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");function yA(d,E,I){var k=I>0?I:le(d)+1,T=new Array(k),Z=Ne(d,T,0,T.length);return E&&(T.length=Z),T}var Cg=typeof atob=="function"?atob:function(d){var E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I="",k,T,Z,te,we,me,Je,nt=0;d=d.replace(/[^A-Za-z0-9\+\/\=]/g,"");do te=E.indexOf(d.charAt(nt++)),we=E.indexOf(d.charAt(nt++)),me=E.indexOf(d.charAt(nt++)),Je=E.indexOf(d.charAt(nt++)),k=te<<2|we>>4,T=(we&15)<<4|me>>2,Z=(me&3)<<6|Je,I=I+String.fromCharCode(k),me!==64&&(I=I+String.fromCharCode(T)),Je!==64&&(I=I+String.fromCharCode(Z));while(nt0||(pr(),is>0))return;function E(){Me||(Me=!0,t.calledRun=!0,!Ae&&(Ii(),i(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),rs()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),E()},1)):E()}if(t.run=bA,t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return bA(),e}}();typeof IB=="object"&&typeof FR=="object"?FR.exports=RR:typeof define=="function"&&define.amd?define([],function(){return RR}):typeof IB=="object"&&(IB.createModule=RR)});var bV=w((Kst,QV)=>{function gke(r,e){for(var t=-1,i=r==null?0:r.length,n=Array(i);++t{var fke=Array.isArray;SV.exports=fke});var RV=w((Gst,kV)=>{var vV=Rc(),hke=bV(),pke=vs(),dke=gC(),Cke=1/0,xV=vV?vV.prototype:void 0,PV=xV?xV.toString:void 0;function DV(r){if(typeof r=="string")return r;if(pke(r))return hke(r,DV)+"";if(dke(r))return PV?PV.call(r):"";var e=r+"";return e=="0"&&1/r==-Cke?"-0":e}kV.exports=DV});var Vf=w((Yst,FV)=>{var mke=RV();function Eke(r){return r==null?"":mke(r)}FV.exports=Eke});var HR=w((jst,NV)=>{function Ike(r,e,t){var i=-1,n=r.length;e<0&&(e=-e>n?0:n+e),t=t>n?n:t,t<0&&(t+=n),n=e>t?0:t-e>>>0,e>>>=0;for(var s=Array(n);++i{var yke=HR();function wke(r,e,t){var i=r.length;return t=t===void 0?i:t,!e&&t>=i?r:yke(r,e,t)}LV.exports=wke});var GR=w((Jst,OV)=>{var Bke="\\ud800-\\udfff",Qke="\\u0300-\\u036f",bke="\\ufe20-\\ufe2f",Ske="\\u20d0-\\u20ff",vke=Qke+bke+Ske,xke="\\ufe0e\\ufe0f",Pke="\\u200d",Dke=RegExp("["+Pke+Bke+vke+xke+"]");function kke(r){return Dke.test(r)}OV.exports=kke});var UV=w((Wst,MV)=>{function Rke(r){return r.split("")}MV.exports=Rke});var WV=w((zst,JV)=>{var KV="\\ud800-\\udfff",Fke="\\u0300-\\u036f",Nke="\\ufe20-\\ufe2f",Lke="\\u20d0-\\u20ff",Tke=Fke+Nke+Lke,Oke="\\ufe0e\\ufe0f",Mke="["+KV+"]",YR="["+Tke+"]",jR="\\ud83c[\\udffb-\\udfff]",Uke="(?:"+YR+"|"+jR+")",HV="[^"+KV+"]",GV="(?:\\ud83c[\\udde6-\\uddff]){2}",YV="[\\ud800-\\udbff][\\udc00-\\udfff]",Kke="\\u200d",jV=Uke+"?",qV="["+Oke+"]?",Hke="(?:"+Kke+"(?:"+[HV,GV,YV].join("|")+")"+qV+jV+")*",Gke=qV+jV+Hke,Yke="(?:"+[HV+YR+"?",YR,GV,YV,Mke].join("|")+")",jke=RegExp(jR+"(?="+jR+")|"+Yke+Gke,"g");function qke(r){return r.match(jke)||[]}JV.exports=qke});var VV=w((Vst,zV)=>{var Jke=UV(),Wke=GR(),zke=WV();function Vke(r){return Wke(r)?zke(r):Jke(r)}zV.exports=Vke});var ZV=w((Xst,XV)=>{var Xke=TV(),Zke=GR(),_ke=VV(),$ke=Vf();function eRe(r){return function(e){e=$ke(e);var t=Zke(e)?_ke(e):void 0,i=t?t[0]:e.charAt(0),n=t?Xke(t,1).join(""):e.slice(1);return i[r]()+n}}XV.exports=eRe});var $V=w((Zst,_V)=>{var tRe=ZV(),rRe=tRe("toUpperCase");_V.exports=rRe});var PB=w((_st,e9)=>{var iRe=Vf(),nRe=$V();function sRe(r){return nRe(iRe(r).toLowerCase())}e9.exports=sRe});var t9=w(($st,DB)=>{function oRe(){var r=0,e=1,t=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,C=15,y=16,B=17,v=0,D=1,L=2,H=3,j=4;function $(A,Ae){return 55296<=A.charCodeAt(Ae)&&A.charCodeAt(Ae)<=56319&&56320<=A.charCodeAt(Ae+1)&&A.charCodeAt(Ae+1)<=57343}function V(A,Ae){Ae===void 0&&(Ae=0);var ge=A.charCodeAt(Ae);if(55296<=ge&&ge<=56319&&Ae=1){var re=A.charCodeAt(Ae-1),O=ge;return 55296<=re&&re<=56319?(re-55296)*1024+(O-56320)+65536:O}return ge}function W(A,Ae,ge){var re=[A].concat(Ae).concat([ge]),O=re[re.length-2],F=ge,ue=re.lastIndexOf(p);if(ue>1&&re.slice(1,ue).every(function(Fe){return Fe==i})&&[i,h,B].indexOf(A)==-1)return L;var pe=re.lastIndexOf(n);if(pe>0&&re.slice(1,pe).every(function(Fe){return Fe==n})&&[f,n].indexOf(O)==-1)return re.filter(function(Fe){return Fe==n}).length%2==1?H:j;if(O==r&&F==e)return v;if(O==t||O==r||O==e)return F==p&&Ae.every(function(Fe){return Fe==i})?L:D;if(F==t||F==r||F==e)return D;if(O==o&&(F==o||F==a||F==c||F==u))return v;if((O==c||O==a)&&(F==a||F==l))return v;if((O==u||O==l)&&F==l)return v;if(F==i||F==C)return v;if(F==s)return v;if(O==f)return v;var ke=re.indexOf(i)!=-1?re.lastIndexOf(i)-1:re.length-2;return[h,B].indexOf(re[ke])!=-1&&re.slice(ke+1,-1).every(function(Fe){return Fe==i})&&F==p||O==C&&[y,B].indexOf(F)!=-1?v:Ae.indexOf(n)!=-1?L:O==n&&F==n?v:D}this.nextBreak=function(A,Ae){if(Ae===void 0&&(Ae=0),Ae<0)return 0;if(Ae>=A.length-1)return A.length;for(var ge=_(V(A,Ae)),re=[],O=Ae+1;O{var aRe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,kB;function ARe(){if(kB)return kB;if(typeof Intl.Segmenter<"u"){let r=new Intl.Segmenter("en",{granularity:"grapheme"});return kB=e=>Array.from(r.segment(e),({segment:t})=>t)}else{let r=t9(),e=new r;return kB=t=>e.splitGraphemes(t)}}r9.exports=(r,e=0,t=r.length)=>{if(e<0||t<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=t-e,n="",s=0,o=0;for(;r.length>0;){let a=r.match(aRe)||[r,r,void 0],l=ARe()(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]<"u"&&(n+=a[2]),r=r.slice(a[0].length)}return n}});var Xf=w((Iot,E9)=>{"use strict";var m9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);E9.exports=r=>r?Object.keys(r).map(e=>[m9.has(e)?m9.get(e):e,r[e]]).reduce((e,t)=>(e[t[0]]=t[1],e),Object.create(null)):{}});var _f=w((yot,x9)=>{"use strict";var I9=typeof process=="object"&&process?process:{stdout:null,stderr:null},yRe=J("events"),y9=J("stream"),w9=J("string_decoder").StringDecoder,Wa=Symbol("EOF"),za=Symbol("maybeEmitEnd"),tl=Symbol("emittedEnd"),OB=Symbol("emittingEnd"),NC=Symbol("emittedError"),MB=Symbol("closed"),B9=Symbol("read"),UB=Symbol("flush"),Q9=Symbol("flushChunk"),vn=Symbol("encoding"),Va=Symbol("decoder"),KB=Symbol("flowing"),LC=Symbol("paused"),Zf=Symbol("resume"),Ci=Symbol("bufferLength"),zR=Symbol("bufferPush"),VR=Symbol("bufferShift"),Hi=Symbol("objectMode"),Gi=Symbol("destroyed"),XR=Symbol("emitData"),b9=Symbol("emitEnd"),ZR=Symbol("emitEnd2"),Xa=Symbol("async"),TC=r=>Promise.resolve().then(r),S9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",wRe=S9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),BRe=S9&&Symbol.iterator||Symbol("iterator not implemented"),QRe=r=>r==="end"||r==="finish"||r==="prefinish",bRe=r=>r instanceof ArrayBuffer||typeof r=="object"&&r.constructor&&r.constructor.name==="ArrayBuffer"&&r.byteLength>=0,SRe=r=>!Buffer.isBuffer(r)&&ArrayBuffer.isView(r),HB=class{constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[Zf](),t.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},_R=class extends HB{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=n=>t.emit("error",n),e.on("error",this.proxyErrors)}};x9.exports=class v9 extends y9{constructor(e){super(),this[KB]=!1,this[LC]=!1,this.pipes=[],this.buffer=[],this[Hi]=e&&e.objectMode||!1,this[Hi]?this[vn]=null:this[vn]=e&&e.encoding||null,this[vn]==="buffer"&&(this[vn]=null),this[Xa]=e&&!!e.async||!1,this[Va]=this[vn]?new w9(this[vn]):null,this[Wa]=!1,this[tl]=!1,this[OB]=!1,this[MB]=!1,this[NC]=null,this.writable=!0,this.readable=!0,this[Ci]=0,this[Gi]=!1}get bufferLength(){return this[Ci]}get encoding(){return this[vn]}set encoding(e){if(this[Hi])throw new Error("cannot set encoding in objectMode");if(this[vn]&&e!==this[vn]&&(this[Va]&&this[Va].lastNeed||this[Ci]))throw new Error("cannot change encoding");this[vn]!==e&&(this[Va]=e?new w9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(t=>this[Va].write(t)))),this[vn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Hi]}set objectMode(e){this[Hi]=this[Hi]||!!e}get async(){return this[Xa]}set async(e){this[Xa]=this[Xa]||!!e}write(e,t,i){if(this[Wa])throw new Error("write after end");if(this[Gi])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let n=this[Xa]?TC:s=>s();return!this[Hi]&&!Buffer.isBuffer(e)&&(SRe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):bRe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Hi]?(this.flowing&&this[Ci]!==0&&this[UB](!0),this.flowing?this.emit("data",e):this[zR](e),this[Ci]!==0&&this.emit("readable"),i&&n(i),this.flowing):e.length?(typeof e=="string"&&!(t===this[vn]&&!this[Va].lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[vn]&&(e=this[Va].write(e)),this.flowing&&this[Ci]!==0&&this[UB](!0),this.flowing?this.emit("data",e):this[zR](e),this[Ci]!==0&&this.emit("readable"),i&&n(i),this.flowing):(this[Ci]!==0&&this.emit("readable"),i&&n(i),this.flowing)}read(e){if(this[Gi])return null;if(this[Ci]===0||e===0||e>this[Ci])return this[za](),null;this[Hi]&&(e=null),this.buffer.length>1&&!this[Hi]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Ci])]);let t=this[B9](e||null,this.buffer[0]);return this[za](),t}[B9](e,t){return e===t.length||e===null?this[VR]():(this.buffer[0]=t.slice(e),t=t.slice(0,e),this[Ci]-=e),this.emit("data",t),!this.buffer.length&&!this[Wa]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=null),typeof t=="function"&&(i=t,t="utf8"),e&&this.write(e,t),i&&this.once("end",i),this[Wa]=!0,this.writable=!1,(this.flowing||!this[LC])&&this[za](),this}[Zf](){this[Gi]||(this[LC]=!1,this[KB]=!0,this.emit("resume"),this.buffer.length?this[UB]():this[Wa]?this[za]():this.emit("drain"))}resume(){return this[Zf]()}pause(){this[KB]=!1,this[LC]=!0}get destroyed(){return this[Gi]}get flowing(){return this[KB]}get paused(){return this[LC]}[zR](e){this[Hi]?this[Ci]+=1:this[Ci]+=e.length,this.buffer.push(e)}[VR](){return this.buffer.length&&(this[Hi]?this[Ci]-=1:this[Ci]-=this.buffer[0].length),this.buffer.shift()}[UB](e){do;while(this[Q9](this[VR]()));!e&&!this.buffer.length&&!this[Wa]&&this.emit("drain")}[Q9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,t){if(this[Gi])return;let i=this[tl];return t=t||{},e===I9.stdout||e===I9.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this.pipes.push(t.proxyErrors?new _R(this,e,t):new HB(this,e,t)),this[Xa]?TC(()=>this[Zf]()):this[Zf]()),e}unpipe(e){let t=this.pipes.find(i=>i.dest===e);t&&(this.pipes.splice(this.pipes.indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);return e==="data"&&!this.pipes.length&&!this.flowing?this[Zf]():e==="readable"&&this[Ci]!==0?super.emit("readable"):QRe(e)&&this[tl]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[NC]&&(this[Xa]?TC(()=>t.call(this,this[NC])):t.call(this,this[NC])),i}get emittedEnd(){return this[tl]}[za](){!this[OB]&&!this[tl]&&!this[Gi]&&this.buffer.length===0&&this[Wa]&&(this[OB]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[MB]&&this.emit("close"),this[OB]=!1)}emit(e,t,...i){if(e!=="error"&&e!=="close"&&e!==Gi&&this[Gi])return;if(e==="data")return t?this[Xa]?TC(()=>this[XR](t)):this[XR](t):!1;if(e==="end")return this[b9]();if(e==="close"){if(this[MB]=!0,!this[tl]&&!this[Gi])return;let s=super.emit("close");return this.removeAllListeners("close"),s}else if(e==="error"){this[NC]=t;let s=super.emit("error",t);return this[za](),s}else if(e==="resume"){let s=super.emit("resume");return this[za](),s}else if(e==="finish"||e==="prefinish"){let s=super.emit(e);return this.removeAllListeners(e),s}let n=super.emit(e,t,...i);return this[za](),n}[XR](e){for(let i of this.pipes)i.dest.write(e)===!1&&this.pause();let t=super.emit("data",e);return this[za](),t}[b9](){this[tl]||(this[tl]=!0,this.readable=!1,this[Xa]?TC(()=>this[ZR]()):this[ZR]())}[ZR](){if(this[Va]){let t=this[Va].end();if(t){for(let i of this.pipes)i.dest.write(t);super.emit("data",t)}}for(let t of this.pipes)t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[Hi]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[Hi]||(e.dataLength+=i.length)}),t.then(()=>e)}concat(){return this[Hi]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Hi]?Promise.reject(new Error("cannot concat in objectMode")):this[vn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,t)=>{this.on(Gi,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[wRe](){return{next:()=>{let t=this.read();if(t!==null)return Promise.resolve({done:!1,value:t});if(this[Wa])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[Wa]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Gi,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[BRe](){return{next:()=>{let t=this.read();return{value:t,done:t===null}}}}destroy(e){return this[Gi]?(e?this.emit("error",e):this.emit(Gi),this):(this[Gi]=!0,this.buffer.length=0,this[Ci]=0,typeof this.close=="function"&&!this[MB]&&this.close(),e?this.emit("error",e):this.emit(Gi),this)}static isStream(e){return!!e&&(e instanceof v9||e instanceof y9||e instanceof yRe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var D9=w((wot,P9)=>{var vRe=J("zlib").constants||{ZLIB_VERNUM:4736};P9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},vRe))});var hF=w(Vn=>{"use strict";var iF=J("assert"),rl=J("buffer").Buffer,F9=J("zlib"),Kc=Vn.constants=D9(),xRe=_f(),k9=rl.concat,Hc=Symbol("_superWrite"),eh=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},PRe=Symbol("opts"),OC=Symbol("flushFlag"),R9=Symbol("finishFlushFlag"),fF=Symbol("fullFlushFlag"),cr=Symbol("handle"),GB=Symbol("onError"),$f=Symbol("sawError"),$R=Symbol("level"),eF=Symbol("strategy"),tF=Symbol("ended"),Bot=Symbol("_defaultFullFlush"),YB=class extends xRe{constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[$f]=!1,this[tF]=!1,this[PRe]=e,this[OC]=e.flush,this[R9]=e.finishFlush;try{this[cr]=new F9[t](e)}catch(i){throw new eh(i)}this[GB]=i=>{this[$f]||(this[$f]=!0,this.close(),this.emit("error",i))},this[cr].on("error",i=>this[GB](new eh(i))),this.once("end",()=>this.close)}close(){this[cr]&&(this[cr].close(),this[cr]=null,this.emit("close"))}reset(){if(!this[$f])return iF(this[cr],"zlib binding closed"),this[cr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[fF]),this.write(Object.assign(rl.alloc(0),{[OC]:e})))}end(e,t,i){return e&&this.write(e,t),this.flush(this[R9]),this[tF]=!0,super.end(null,null,i)}get ended(){return this[tF]}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=rl.from(e,t)),this[$f])return;iF(this[cr],"zlib binding closed");let n=this[cr]._handle,s=n.close;n.close=()=>{};let o=this[cr].close;this[cr].close=()=>{},rl.concat=c=>c;let a;try{let c=typeof e[OC]=="number"?e[OC]:this[OC];a=this[cr]._processChunk(e,c),rl.concat=k9}catch(c){rl.concat=k9,this[GB](new eh(c))}finally{this[cr]&&(this[cr]._handle=n,n.close=s,this[cr].close=o,this[cr].removeAllListeners("error"))}this[cr]&&this[cr].on("error",c=>this[GB](new eh(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[Hc](rl.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[cr].params(e,t)}finally{this[cr].flush=i}this[cr]&&(this[$R]=e,this[eF]=t)}}}},nF=class extends Za{constructor(e){super(e,"Deflate")}},sF=class extends Za{constructor(e){super(e,"Inflate")}},rF=Symbol("_portable"),oF=class extends Za{constructor(e){super(e,"Gzip"),this[rF]=e&&!!e.portable}[Hc](e){return this[rF]?(this[rF]=!1,e[9]=255,super[Hc](e)):super[Hc](e)}},aF=class extends Za{constructor(e){super(e,"Gunzip")}},AF=class extends Za{constructor(e){super(e,"DeflateRaw")}},lF=class extends Za{constructor(e){super(e,"InflateRaw")}},cF=class extends Za{constructor(e){super(e,"Unzip")}},jB=class extends YB{constructor(e,t){e=e||{},e.flush=e.flush||Kc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Kc.BROTLI_OPERATION_FINISH,super(e,t),this[fF]=Kc.BROTLI_OPERATION_FLUSH}},uF=class extends jB{constructor(e){super(e,"BrotliCompress")}},gF=class extends jB{constructor(e){super(e,"BrotliDecompress")}};Vn.Deflate=nF;Vn.Inflate=sF;Vn.Gzip=oF;Vn.Gunzip=aF;Vn.DeflateRaw=AF;Vn.InflateRaw=lF;Vn.Unzip=cF;typeof F9.BrotliCompress=="function"?(Vn.BrotliCompress=uF,Vn.BrotliDecompress=gF):Vn.BrotliCompress=Vn.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var th=w((Sot,N9)=>{var DRe=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;N9.exports=DRe!=="win32"?r=>r:r=>r&&r.replace(/\\/g,"/")});var qB=w((xot,L9)=>{"use strict";var kRe=_f(),pF=th(),dF=Symbol("slurp");L9.exports=class extends kRe{constructor(e,t,i){switch(super(),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=pF(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=pF(e.linkpath),this.uname=e.uname,this.gname=e.gname,t&&this[dF](t),i&&this[dF](i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,n-t),this.ignore?!0:i>=t?super.write(e):super.write(e.slice(0,i))}[dF](e,t){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(t&&i==="path")&&(this[i]=i==="path"||i==="linkpath"?pF(e[i]):e[i])}}});var CF=w(JB=>{"use strict";JB.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);JB.code=new Map(Array.from(JB.name).map(r=>[r[1],r[0]]))});var U9=w((Dot,M9)=>{"use strict";var RRe=(r,e)=>{if(Number.isSafeInteger(r))r<0?NRe(r,e):FRe(r,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},FRe=(r,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=r&255,r=Math.floor(r/256)},NRe=(r,e)=>{e[0]=255;var t=!1;r=r*-1;for(var i=e.length;i>1;i--){var n=r&255;r=Math.floor(r/256),t?e[i-1]=T9(n):n===0?e[i-1]=0:(t=!0,e[i-1]=O9(n))}},LRe=r=>{let e=r[0],t=e===128?ORe(r.slice(1,r.length)):e===255?TRe(r):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t},TRe=r=>{for(var e=r.length,t=0,i=!1,n=e-1;n>-1;n--){var s=r[n],o;i?o=T9(s):s===0?o=s:(i=!0,o=O9(s)),o!==0&&(t-=o*Math.pow(256,e-n-1))}return t},ORe=r=>{for(var e=r.length,t=0,i=e-1;i>-1;i--){var n=r[i];n!==0&&(t+=n*Math.pow(256,e-i-1))}return t},T9=r=>(255^r)&255,O9=r=>(255^r)+1&255;M9.exports={encode:RRe,parse:LRe}});var ih=w((kot,H9)=>{"use strict";var mF=CF(),rh=J("path").posix,K9=U9(),EF=Symbol("slurp"),Xn=Symbol("type"),wF=class{constructor(e,t,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Xn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,t||0,i,n):e&&this.set(e)}decode(e,t,i,n){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");if(this.path=Gc(e,t,100),this.mode=il(e,t+100,8),this.uid=il(e,t+108,8),this.gid=il(e,t+116,8),this.size=il(e,t+124,12),this.mtime=IF(e,t+136,12),this.cksum=il(e,t+148,12),this[EF](i),this[EF](n,!0),this[Xn]=Gc(e,t+156,1),this[Xn]===""&&(this[Xn]="0"),this[Xn]==="0"&&this.path.substr(-1)==="/"&&(this[Xn]="5"),this[Xn]==="5"&&(this.size=0),this.linkpath=Gc(e,t+157,100),e.slice(t+257,t+265).toString()==="ustar\x0000")if(this.uname=Gc(e,t+265,32),this.gname=Gc(e,t+297,32),this.devmaj=il(e,t+329,8),this.devmin=il(e,t+337,8),e[t+475]!==0){let o=Gc(e,t+345,155);this.path=o+"/"+this.path}else{let o=Gc(e,t+345,130);o&&(this.path=o+"/"+this.path),this.atime=IF(e,t+476,12),this.ctime=IF(e,t+488,12)}let s=8*32;for(let o=t;o=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=MRe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=Yc(e,t,100,s)||this.needPax,this.needPax=nl(e,t+100,8,this.mode)||this.needPax,this.needPax=nl(e,t+108,8,this.uid)||this.needPax,this.needPax=nl(e,t+116,8,this.gid)||this.needPax,this.needPax=nl(e,t+124,12,this.size)||this.needPax,this.needPax=yF(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this[Xn].charCodeAt(0),this.needPax=Yc(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Yc(e,t+265,32,this.uname)||this.needPax,this.needPax=Yc(e,t+297,32,this.gname)||this.needPax,this.needPax=nl(e,t+329,8,this.devmaj)||this.needPax,this.needPax=nl(e,t+337,8,this.devmin)||this.needPax,this.needPax=Yc(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Yc(e,t+345,155,o)||this.needPax:(this.needPax=Yc(e,t+345,130,o)||this.needPax,this.needPax=yF(e,t+476,12,this.atime)||this.needPax,this.needPax=yF(e,t+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=t;l{let i=r,n="",s,o=rh.parse(r).root||".";if(Buffer.byteLength(i)<100)s=[i,n,!1];else{n=rh.dirname(i),i=rh.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(n)<=e?s=[i,n,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(n)<=e?s=[i.substr(0,100-1),n,!0]:(i=rh.join(rh.basename(n),i),n=rh.dirname(n));while(n!==o&&!s);s||(s=[r.substr(0,100-1),"",!0])}return s},Gc=(r,e,t)=>r.slice(e,e+t).toString("utf8").replace(/\0.*/,""),IF=(r,e,t)=>URe(il(r,e,t)),URe=r=>r===null?null:new Date(r*1e3),il=(r,e,t)=>r[e]&128?K9.parse(r.slice(e,e+t)):HRe(r,e,t),KRe=r=>isNaN(r)?null:r,HRe=(r,e,t)=>KRe(parseInt(r.slice(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),GRe={12:8589934591,8:2097151},nl=(r,e,t,i)=>i===null?!1:i>GRe[t]||i<0?(K9.encode(i,r.slice(e,e+t)),!0):(YRe(r,e,t,i),!1),YRe=(r,e,t,i)=>r.write(jRe(i,t),e,t,"ascii"),jRe=(r,e)=>qRe(Math.floor(r).toString(8),e),qRe=(r,e)=>(r.length===e-1?r:new Array(e-r.length-1).join("0")+r+" ")+"\0",yF=(r,e,t,i)=>i===null?!1:nl(r,e,t,i.getTime()/1e3),JRe=new Array(156).join("\0"),Yc=(r,e,t,i)=>i===null?!1:(r.write(i+JRe,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t);H9.exports=wF});var WB=w((Rot,G9)=>{"use strict";var WRe=ih(),zRe=J("path"),MC=class{constructor(e,t){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=t||!1}encode(){let e=this.encodeBody();if(e==="")return null;let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new WRe({path:("PaxHeader/"+zRe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:t,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,t,"utf8");for(let s=t+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};MC.parse=(r,e,t)=>new MC(VRe(XRe(r),e),t);var VRe=(r,e)=>e?Object.keys(r).reduce((t,i)=>(t[i]=r[i],t),e):r,XRe=r=>r.replace(/\n$/,"").split(` +`).reduce(ZRe,Object.create(null)),ZRe=(r,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return r;e=e.substr((t+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return r;let s=i.join("=");return r[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,r};G9.exports=MC});var nh=w((Fot,Y9)=>{Y9.exports=r=>{let e=r.length-1,t=-1;for(;e>-1&&r.charAt(e)==="/";)t=e,e--;return t===-1?r:r.slice(0,t)}});var zB=w((Not,j9)=>{"use strict";j9.exports=r=>class extends r{warn(e,t,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),this.emit("warn",i.tarCode,t,i)):t instanceof Error?this.emit("error",Object.assign(t,i)):this.emit("error",Object.assign(new Error(`${e}: ${t}`),i))}}});var QF=w((Tot,q9)=>{"use strict";var VB=["|","<",">","?",":"],BF=VB.map(r=>String.fromCharCode(61440+r.charCodeAt(0))),_Re=new Map(VB.map((r,e)=>[r,BF[e]])),$Re=new Map(BF.map((r,e)=>[r,VB[e]]));q9.exports={encode:r=>VB.reduce((e,t)=>e.split(t).join(_Re.get(t)),r),decode:r=>BF.reduce((e,t)=>e.split(t).join($Re.get(t)),r)}});var bF=w((Oot,W9)=>{var{isAbsolute:eFe,parse:J9}=J("path").win32;W9.exports=r=>{let e="",t=J9(r);for(;eFe(r)||t.root;){let i=r.charAt(0)==="/"&&r.slice(0,4)!=="//?/"?"/":t.root;r=r.substr(i.length),e+=i,t=J9(r)}return[e,r]}});var V9=w((Mot,z9)=>{"use strict";z9.exports=(r,e,t)=>(r&=4095,t&&(r=(r|384)&-19),e&&(r&256&&(r|=64),r&32&&(r|=8),r&4&&(r|=1)),r)});var LF=w((Hot,lX)=>{"use strict";var rX=_f(),iX=WB(),nX=ih(),Zo=J("fs"),X9=J("path"),Xo=th(),tFe=nh(),sX=(r,e)=>e?(r=Xo(r).replace(/^\.(\/|$)/,""),tFe(e)+"/"+r):Xo(r),rFe=16*1024*1024,Z9=Symbol("process"),_9=Symbol("file"),$9=Symbol("directory"),vF=Symbol("symlink"),eX=Symbol("hardlink"),UC=Symbol("header"),XB=Symbol("read"),xF=Symbol("lstat"),ZB=Symbol("onlstat"),PF=Symbol("onread"),DF=Symbol("onreadlink"),kF=Symbol("openfile"),RF=Symbol("onopenfile"),sl=Symbol("close"),_B=Symbol("mode"),FF=Symbol("awaitDrain"),SF=Symbol("ondrain"),_o=Symbol("prefix"),tX=Symbol("hadError"),oX=zB(),iFe=QF(),aX=bF(),AX=V9(),$B=oX(class extends rX{constructor(e,t){if(t=t||{},super(t),typeof e!="string")throw new TypeError("path is required");this.path=Xo(e),this.portable=!!t.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=t.maxReadSize||rFe,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=Xo(t.cwd||process.cwd()),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.prefix=t.prefix?Xo(t.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=!1;if(!this.preservePaths){let[n,s]=aX(this.path);n&&(this.path=s,i=n)}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=iFe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=Xo(t.absolute||X9.resolve(this.cwd,e)),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[ZB](this.statCache.get(this.absolute)):this[xF]()}emit(e,...t){return e==="error"&&(this[tX]=!0),super.emit(e,...t)}[xF](){Zo.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[ZB](t)})}[ZB](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=sFe(e),this.emit("stat",e),this[Z9]()}[Z9](){switch(this.type){case"File":return this[_9]();case"Directory":return this[$9]();case"SymbolicLink":return this[vF]();default:return this.end()}}[_B](e){return AX(e,this.type==="Directory",this.portable)}[_o](e){return sX(e,this.prefix)}[UC](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new nX({path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,mode:this[_B](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new iX({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[$9](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[UC](),this.end()}[vF](){Zo.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[DF](t)})}[DF](e){this.linkpath=Xo(e),this[UC](),this.end()}[eX](e){this.type="Link",this.linkpath=Xo(X9.relative(this.cwd,e)),this.stat.size=0,this[UC](),this.end()}[_9](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let t=this.linkCache.get(e);if(t.indexOf(this.cwd)===0)return this[eX](t)}this.linkCache.set(e,this.absolute)}if(this[UC](),this.stat.size===0)return this.end();this[kF]()}[kF](){Zo.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[RF](t)})}[RF](e){if(this.fd=e,this[tX])return this[sl]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[XB]()}[XB](){let{fd:e,buf:t,offset:i,length:n,pos:s}=this;Zo.read(e,t,i,n,s,(o,a)=>{if(o)return this[sl](()=>this.emit("error",o));this[PF](a)})}[sl](e){Zo.close(this.fd,e)}[PF](e){if(e<=0&&this.remain>0){let n=new Error("encountered unexpected EOF");return n.path=this.absolute,n.syscall="read",n.code="EOF",this[sl](()=>this.emit("error",n))}if(e>this.remain){let n=new Error("did not encounter expected EOF");return n.path=this.absolute,n.syscall="read",n.code="EOF",this[sl](()=>this.emit("error",n))}if(e===this.remain)for(let n=e;nthis[SF]())}[FF](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[XB]()}}),NF=class extends $B{[xF](){this[ZB](Zo.lstatSync(this.absolute))}[vF](){this[DF](Zo.readlinkSync(this.absolute))}[kF](){this[RF](Zo.openSync(this.absolute,"r"))}[XB](){let e=!0;try{let{fd:t,buf:i,offset:n,length:s,pos:o}=this,a=Zo.readSync(t,i,n,s,o);this[PF](a),e=!1}finally{if(e)try{this[sl](()=>{})}catch{}}}[FF](e){e()}[sl](e){Zo.closeSync(this.fd),e()}},nFe=oX(class extends rX{constructor(e,t){t=t||{},super(t),this.preservePaths=!!t.preservePaths,this.portable=!!t.portable,this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=t.prefix||null,this.path=Xo(e.path),this.mode=this[_B](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:t.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=Xo(e.linkpath),typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=!1;if(!this.preservePaths){let[n,s]=aX(this.path);n&&(this.path=s,i=n)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new nX({path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new iX({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[_o](e){return sX(e,this.prefix)}[_B](e){return AX(e,this.type==="Directory",this.portable)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=t,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});$B.Sync=NF;$B.Tar=nFe;var sFe=r=>r.isFile()?"File":r.isDirectory()?"Directory":r.isSymbolicLink()?"SymbolicLink":"Unsupported";lX.exports=$B});var A0=w((Yot,dX)=>{"use strict";var o0=class{constructor(e,t){this.path=e||"./",this.absolute=t,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},oFe=_f(),aFe=hF(),AFe=qB(),jF=LF(),lFe=jF.Sync,cFe=jF.Tar,uFe=WI(),cX=Buffer.alloc(1024),r0=Symbol("onStat"),e0=Symbol("ended"),$o=Symbol("queue"),sh=Symbol("current"),jc=Symbol("process"),t0=Symbol("processing"),uX=Symbol("processJob"),ea=Symbol("jobs"),TF=Symbol("jobDone"),i0=Symbol("addFSEntry"),gX=Symbol("addTarEntry"),KF=Symbol("stat"),HF=Symbol("readdir"),n0=Symbol("onreaddir"),s0=Symbol("pipe"),fX=Symbol("entry"),OF=Symbol("entryOpt"),GF=Symbol("writeEntryClass"),pX=Symbol("write"),MF=Symbol("ondrain"),a0=J("fs"),hX=J("path"),gFe=zB(),UF=th(),qF=gFe(class extends oFe{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=UF(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[GF]=jF,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new aFe.Gzip(e.gzip),this.zip.on("data",t=>super.write(t)),this.zip.on("end",t=>super.end()),this.zip.on("drain",t=>this[MF]()),this.on("resume",t=>this.zip.resume())):this.on("drain",this[MF]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:t=>!0,this[$o]=new uFe,this[ea]=0,this.jobs=+e.jobs||4,this[t0]=!1,this[e0]=!1}[pX](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[e0]=!0,this[jc](),this}write(e){if(this[e0])throw new Error("write after end");return e instanceof AFe?this[gX](e):this[i0](e),this.flowing}[gX](e){let t=UF(hX.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new o0(e.path,t,!1);i.entry=new cFe(e,this[OF](i)),i.entry.on("end",n=>this[TF](i)),this[ea]+=1,this[$o].push(i)}this[jc]()}[i0](e){let t=UF(hX.resolve(this.cwd,e));this[$o].push(new o0(e,t)),this[jc]()}[KF](e){e.pending=!0,this[ea]+=1;let t=this.follow?"stat":"lstat";a0[t](e.absolute,(i,n)=>{e.pending=!1,this[ea]-=1,i?this.emit("error",i):this[r0](e,n)})}[r0](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)||(e.ignore=!0),this[jc]()}[HF](e){e.pending=!0,this[ea]+=1,a0.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[ea]-=1,t)return this.emit("error",t);this[n0](e,i)})}[n0](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[jc]()}[jc](){if(!this[t0]){this[t0]=!0;for(let e=this[$o].head;e!==null&&this[ea]this.warn(t,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[fX](e){this[ea]+=1;try{return new this[GF](e.path,this[OF](e)).on("end",()=>this[TF](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[MF](){this[sh]&&this[sh].entry&&this[sh].entry.resume()}[s0](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[i0](o+n)});let t=e.entry,i=this.zip;i?t.on("data",n=>{i.write(n)||t.pause()}):t.on("data",n=>{super.write(n)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),YF=class extends qF{constructor(e){super(e),this[GF]=lFe}pause(){}resume(){}[KF](e){let t=this.follow?"statSync":"lstatSync";this[r0](e,a0[t](e.absolute))}[HF](e,t){this[n0](e,a0.readdirSync(e.absolute))}[s0](e){let t=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[i0](o+n)}),i?t.on("data",n=>{i.write(n)}):t.on("data",n=>{super[pX](n)})}};qF.Sync=YF;dX.exports=qF});var fh=w(HC=>{"use strict";var fFe=_f(),hFe=J("events").EventEmitter,xn=J("fs"),zF=xn.writev;if(!zF){let r=process.binding("fs"),e=r.FSReqWrap||r.FSReqCallback;zF=(t,i,n,s)=>{let o=(l,c)=>s(l,c,i),a=new e;a.oncomplete=o,r.writeBuffers(t,i,n,a)}}var uh=Symbol("_autoClose"),Ao=Symbol("_close"),KC=Symbol("_ended"),rr=Symbol("_fd"),CX=Symbol("_finished"),al=Symbol("_flags"),JF=Symbol("_flush"),VF=Symbol("_handleChunk"),XF=Symbol("_makeBuf"),f0=Symbol("_mode"),l0=Symbol("_needDrain"),lh=Symbol("_onerror"),gh=Symbol("_onopen"),WF=Symbol("_onread"),ah=Symbol("_onwrite"),Al=Symbol("_open"),_a=Symbol("_path"),qc=Symbol("_pos"),ta=Symbol("_queue"),Ah=Symbol("_read"),mX=Symbol("_readSize"),ol=Symbol("_reading"),c0=Symbol("_remain"),EX=Symbol("_size"),u0=Symbol("_write"),oh=Symbol("_writing"),g0=Symbol("_defaultFlag"),ch=Symbol("_errored"),h0=class extends fFe{constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[ch]=!1,this[rr]=typeof t.fd=="number"?t.fd:null,this[_a]=e,this[mX]=t.readSize||16*1024*1024,this[ol]=!1,this[EX]=typeof t.size=="number"?t.size:1/0,this[c0]=this[EX],this[uh]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[rr]=="number"?this[Ah]():this[Al]()}get fd(){return this[rr]}get path(){return this[_a]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Al](){xn.open(this[_a],"r",(e,t)=>this[gh](e,t))}[gh](e,t){e?this[lh](e):(this[rr]=t,this.emit("open",t),this[Ah]())}[XF](){return Buffer.allocUnsafe(Math.min(this[mX],this[c0]))}[Ah](){if(!this[ol]){this[ol]=!0;let e=this[XF]();if(e.length===0)return process.nextTick(()=>this[WF](null,0,e));xn.read(this[rr],e,0,e.length,null,(t,i,n)=>this[WF](t,i,n))}}[WF](e,t,i){this[ol]=!1,e?this[lh](e):this[VF](t,i)&&this[Ah]()}[Ao](){if(this[uh]&&typeof this[rr]=="number"){let e=this[rr];this[rr]=null,xn.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[lh](e){this[ol]=!0,this[Ao](),this.emit("error",e)}[VF](e,t){let i=!1;return this[c0]-=e,e>0&&(i=super.write(ethis[gh](e,t))}[gh](e,t){this[g0]&&this[al]==="r+"&&e&&e.code==="ENOENT"?(this[al]="w",this[Al]()):e?this[lh](e):(this[rr]=t,this.emit("open",t),this[JF]())}end(e,t){return e&&this.write(e,t),this[KC]=!0,!this[oh]&&!this[ta].length&&typeof this[rr]=="number"&&this[ah](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[KC]?(this.emit("error",new Error("write() after end()")),!1):this[rr]===null||this[oh]||this[ta].length?(this[ta].push(e),this[l0]=!0,!1):(this[oh]=!0,this[u0](e),!0)}[u0](e){xn.write(this[rr],e,0,e.length,this[qc],(t,i)=>this[ah](t,i))}[ah](e,t){e?this[lh](e):(this[qc]!==null&&(this[qc]+=t),this[ta].length?this[JF]():(this[oh]=!1,this[KC]&&!this[CX]?(this[CX]=!0,this[Ao](),this.emit("finish")):this[l0]&&(this[l0]=!1,this.emit("drain"))))}[JF](){if(this[ta].length===0)this[KC]&&this[ah](null,0);else if(this[ta].length===1)this[u0](this[ta].pop());else{let e=this[ta];this[ta]=[],zF(this[rr],e,this[qc],(t,i)=>this[ah](t,i))}}[Ao](){if(this[uh]&&typeof this[rr]=="number"){let e=this[rr];this[rr]=null,xn.close(e,t=>t?this.emit("error",t):this.emit("close"))}}},_F=class extends p0{[Al](){let e;if(this[g0]&&this[al]==="r+")try{e=xn.openSync(this[_a],this[al],this[f0])}catch(t){if(t.code==="ENOENT")return this[al]="w",this[Al]();throw t}else e=xn.openSync(this[_a],this[al],this[f0]);this[gh](null,e)}[Ao](){if(this[uh]&&typeof this[rr]=="number"){let e=this[rr];this[rr]=null,xn.closeSync(e),this.emit("close")}}[u0](e){let t=!0;try{this[ah](null,xn.writeSync(this[rr],e,0,e.length,this[qc])),t=!1}finally{if(t)try{this[Ao]()}catch{}}}};HC.ReadStream=h0;HC.ReadStreamSync=ZF;HC.WriteStream=p0;HC.WriteStreamSync=_F});var w0=w((Jot,SX)=>{"use strict";var pFe=zB(),dFe=ih(),CFe=J("events"),mFe=WI(),EFe=1024*1024,IFe=qB(),IX=WB(),yFe=hF(),$F=Buffer.from([31,139]),xs=Symbol("state"),Jc=Symbol("writeEntry"),$a=Symbol("readEntry"),eN=Symbol("nextEntry"),yX=Symbol("processEntry"),Ps=Symbol("extendedHeader"),GC=Symbol("globalExtendedHeader"),ll=Symbol("meta"),wX=Symbol("emitMeta"),Er=Symbol("buffer"),eA=Symbol("queue"),Wc=Symbol("ended"),BX=Symbol("emittedEnd"),zc=Symbol("emit"),Pn=Symbol("unzip"),d0=Symbol("consumeChunk"),C0=Symbol("consumeChunkSub"),tN=Symbol("consumeBody"),QX=Symbol("consumeMeta"),bX=Symbol("consumeHeader"),m0=Symbol("consuming"),rN=Symbol("bufferConcat"),iN=Symbol("maybeEnd"),YC=Symbol("writing"),cl=Symbol("aborted"),E0=Symbol("onDone"),Vc=Symbol("sawValidEntry"),I0=Symbol("sawNullBlock"),y0=Symbol("sawEOF"),wFe=r=>!0;SX.exports=pFe(class extends CFe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Vc]=null,this.on(E0,t=>{(this[xs]==="begin"||this[Vc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(E0,e.ondone):this.on(E0,t=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||EFe,this.filter=typeof e.filter=="function"?e.filter:wFe,this.writable=!0,this.readable=!1,this[eA]=new mFe,this[Er]=null,this[$a]=null,this[Jc]=null,this[xs]="begin",this[ll]="",this[Ps]=null,this[GC]=null,this[Wc]=!1,this[Pn]=null,this[cl]=!1,this[I0]=!1,this[y0]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[bX](e,t){this[Vc]===null&&(this[Vc]=!1);let i;try{i=new dFe(e,t,this[Ps],this[GC])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[I0]?(this[y0]=!0,this[xs]==="begin"&&(this[xs]="header"),this[zc]("eof")):(this[I0]=!0,this[zc]("nullBlock"));else if(this[I0]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Jc]=new IFe(i,this[Ps],this[GC]);if(!this[Vc])if(s.remain){let o=()=>{s.invalid||(this[Vc]=!0)};s.on("end",o)}else this[Vc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[zc]("ignoredEntry",s),this[xs]="ignore",s.resume()):s.size>0&&(this[ll]="",s.on("data",o=>this[ll]+=o),this[xs]="meta"):(this[Ps]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[zc]("ignoredEntry",s),this[xs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[xs]="body":(this[xs]="header",s.end()),this[$a]?this[eA].push(s):(this[eA].push(s),this[eN]())))}}}[yX](e){let t=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[$a]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[eN]()),t=!1)):(this[$a]=null,t=!1),t}[eN](){do;while(this[yX](this[eA].shift()));if(!this[eA].length){let e=this[$a];!e||e.flowing||e.size===e.remain?this[YC]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[tN](e,t){let i=this[Jc],n=i.blockRemain,s=n>=e.length&&t===0?e:e.slice(t,t+n);return i.write(s),i.blockRemain||(this[xs]="header",this[Jc]=null,i.end()),s.length}[QX](e,t){let i=this[Jc],n=this[tN](e,t);return this[Jc]||this[wX](i),n}[zc](e,t,i){!this[eA].length&&!this[$a]?this.emit(e,t,i):this[eA].push([e,t,i])}[wX](e){switch(this[zc]("meta",this[ll]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Ps]=IX.parse(this[ll],this[Ps],!1);break;case"GlobalExtendedHeader":this[GC]=IX.parse(this[ll],this[GC],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Ps]=this[Ps]||Object.create(null),this[Ps].path=this[ll].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Ps]=this[Ps]||Object.create(null),this[Ps].linkpath=this[ll].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[cl]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[cl])return;if(this[Pn]===null&&e){if(this[Er]&&(e=Buffer.concat([this[Er],e]),this[Er]=null),e.length<$F.length)return this[Er]=e,!0;for(let i=0;this[Pn]===null&&i<$F.length;i++)e[i]!==$F[i]&&(this[Pn]=!1);if(this[Pn]===null){let i=this[Wc];this[Wc]=!1,this[Pn]=new yFe.Unzip,this[Pn].on("data",s=>this[d0](s)),this[Pn].on("error",s=>this.abort(s)),this[Pn].on("end",s=>{this[Wc]=!0,this[d0]()}),this[YC]=!0;let n=this[Pn][i?"end":"write"](e);return this[YC]=!1,n}}this[YC]=!0,this[Pn]?this[Pn].write(e):this[d0](e),this[YC]=!1;let t=this[eA].length?!1:this[$a]?this[$a].flowing:!0;return!t&&!this[eA].length&&this[$a].once("drain",i=>this.emit("drain")),t}[rN](e){e&&!this[cl]&&(this[Er]=this[Er]?Buffer.concat([this[Er],e]):e)}[iN](){if(this[Wc]&&!this[BX]&&!this[cl]&&!this[m0]){this[BX]=!0;let e=this[Jc];if(e&&e.blockRemain){let t=this[Er]?this[Er].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Er]&&e.write(this[Er]),e.end()}this[zc](E0)}}[d0](e){if(this[m0])this[rN](e);else if(!e&&!this[Er])this[iN]();else{if(this[m0]=!0,this[Er]){this[rN](e);let t=this[Er];this[Er]=null,this[C0](t)}else this[C0](e);for(;this[Er]&&this[Er].length>=512&&!this[cl]&&!this[y0];){let t=this[Er];this[Er]=null,this[C0](t)}this[m0]=!1}(!this[Er]||this[Wc])&&this[iN]()}[C0](e){let t=0,i=e.length;for(;t+512<=i&&!this[cl]&&!this[y0];)switch(this[xs]){case"begin":case"header":this[bX](e,t),t+=512;break;case"ignore":case"body":t+=this[tN](e,t);break;case"meta":t+=this[QX](e,t);break;default:throw new Error("invalid state: "+this[xs])}t{"use strict";var BFe=Xf(),xX=w0(),hh=J("fs"),QFe=fh(),vX=J("path"),nN=nh();DX.exports=(r,e,t)=>{typeof r=="function"?(t=r,e=null,r={}):Array.isArray(r)&&(e=r,r={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let i=BFe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&SFe(i,e),i.noResume||bFe(i),i.file&&i.sync?vFe(i):i.file?xFe(i,t):PX(i)};var bFe=r=>{let e=r.onentry;r.onentry=e?t=>{e(t),t.resume()}:t=>t.resume()},SFe=(r,e)=>{let t=new Map(e.map(s=>[nN(s),!0])),i=r.filter,n=(s,o)=>{let a=o||vX.parse(s).root||".",l=s===a?!1:t.has(s)?t.get(s):n(vX.dirname(s),a);return t.set(s,l),l};r.filter=i?(s,o)=>i(s,o)&&n(nN(s)):s=>n(nN(s))},vFe=r=>{let e=PX(r),t=r.file,i=!0,n;try{let s=hh.statSync(t),o=r.maxReadSize||16*1024*1024;if(s.size{let t=new xX(r),i=r.maxReadSize||16*1024*1024,n=r.file,s=new Promise((o,a)=>{t.on("error",a),t.on("end",o),hh.stat(n,(l,c)=>{if(l)a(l);else{let u=new QFe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(t)}})});return e?s.then(e,e):s},PX=r=>new xX(r)});var TX=w((zot,LX)=>{"use strict";var PFe=Xf(),Q0=A0(),kX=fh(),RX=B0(),FX=J("path");LX.exports=(r,e,t)=>{if(typeof e=="function"&&(t=e),Array.isArray(r)&&(e=r,r={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=PFe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?DFe(i,e):i.file?kFe(i,e,t):i.sync?RFe(i,e):FFe(i,e)};var DFe=(r,e)=>{let t=new Q0.Sync(r),i=new kX.WriteStreamSync(r.file,{mode:r.mode||438});t.pipe(i),NX(t,e)},kFe=(r,e,t)=>{let i=new Q0(r),n=new kX.WriteStream(r.file,{mode:r.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return sN(i,e),t?s.then(t,t):s},NX=(r,e)=>{e.forEach(t=>{t.charAt(0)==="@"?RX({file:FX.resolve(r.cwd,t.substr(1)),sync:!0,noResume:!0,onentry:i=>r.add(i)}):r.add(t)}),r.end()},sN=(r,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return RX({file:FX.resolve(r.cwd,t.substr(1)),noResume:!0,onentry:i=>r.add(i)}).then(i=>sN(r,e));r.add(t)}r.end()},RFe=(r,e)=>{let t=new Q0.Sync(r);return NX(t,e),t},FFe=(r,e)=>{let t=new Q0(r);return sN(t,e),t}});var oN=w((Vot,YX)=>{"use strict";var NFe=Xf(),OX=A0(),Zn=J("fs"),MX=fh(),UX=B0(),KX=J("path"),HX=ih();YX.exports=(r,e,t)=>{let i=NFe(r);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?LFe(i,e):OFe(i,e,t)};var LFe=(r,e)=>{let t=new OX.Sync(r),i=!0,n,s;try{try{n=Zn.openSync(r.file,"r+")}catch(l){if(l.code==="ENOENT")n=Zn.openSync(r.file,"w+");else throw l}let o=Zn.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,r.mtimeCache&&r.mtimeCache.set(l.path,l.mtime)}i=!1,TFe(r,t,s,n,e)}finally{if(i)try{Zn.closeSync(n)}catch{}}},TFe=(r,e,t,i,n)=>{let s=new MX.WriteStreamSync(r.file,{fd:i,start:t});e.pipe(s),MFe(e,n)},OFe=(r,e,t)=>{e=Array.from(e);let i=new OX(r),n=(o,a,l)=>{let c=(p,C)=>{p?Zn.close(o,y=>l(p)):l(null,C)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,C)=>{if(p)return c(p);if(g+=C,g<512&&C)return Zn.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let y=new HX(f);if(!y.cksumValid)return c(null,u);let B=512*Math.ceil(y.size/512);if(u+B+512>a||(u+=B+512,u>=a))return c(null,u);r.mtimeCache&&r.mtimeCache.set(y.path,y.mtime),g=0,Zn.read(o,f,0,512,u,h)};Zn.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",Zn.open(r.file,l,c);if(u)return a(u);Zn.fstat(g,(f,h)=>{if(f)return Zn.close(g,()=>a(f));n(g,h.size,(p,C)=>{if(p)return a(p);let y=new MX.WriteStream(r.file,{fd:g,start:C});i.pipe(y),y.on("error",a),y.on("close",o),GX(i,e)})})};Zn.open(r.file,l,c)});return t?s.then(t,t):s},MFe=(r,e)=>{e.forEach(t=>{t.charAt(0)==="@"?UX({file:KX.resolve(r.cwd,t.substr(1)),sync:!0,noResume:!0,onentry:i=>r.add(i)}):r.add(t)}),r.end()},GX=(r,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return UX({file:KX.resolve(r.cwd,t.substr(1)),noResume:!0,onentry:i=>r.add(i)}).then(i=>GX(r,e));r.add(t)}r.end()}});var qX=w((Xot,jX)=>{"use strict";var UFe=Xf(),KFe=oN();jX.exports=(r,e,t)=>{let i=UFe(r);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),HFe(i),KFe(i,e,t)};var HFe=r=>{let e=r.filter;r.mtimeCache||(r.mtimeCache=new Map),r.filter=e?(t,i)=>e(t,i)&&!(r.mtimeCache.get(t)>i.mtime):(t,i)=>!(r.mtimeCache.get(t)>i.mtime)}});var zX=w((Zot,WX)=>{var{promisify:JX}=J("util"),ul=J("fs"),GFe=r=>{if(!r)r={mode:511,fs:ul};else if(typeof r=="object")r={mode:511,fs:ul,...r};else if(typeof r=="number")r={mode:r,fs:ul};else if(typeof r=="string")r={mode:parseInt(r,8),fs:ul};else throw new TypeError("invalid options argument");return r.mkdir=r.mkdir||r.fs.mkdir||ul.mkdir,r.mkdirAsync=JX(r.mkdir),r.stat=r.stat||r.fs.stat||ul.stat,r.statAsync=JX(r.stat),r.statSync=r.statSync||r.fs.statSync||ul.statSync,r.mkdirSync=r.mkdirSync||r.fs.mkdirSync||ul.mkdirSync,r};WX.exports=GFe});var XX=w((_ot,VX)=>{var YFe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:jFe,parse:qFe}=J("path"),JFe=r=>{if(/\0/.test(r))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:r,code:"ERR_INVALID_ARG_VALUE"});if(r=jFe(r),YFe==="win32"){let e=/[*|"<>?:]/,{root:t}=qFe(r);if(e.test(r.substr(t.length)))throw Object.assign(new Error("Illegal characters in path."),{path:r,code:"EINVAL"})}return r};VX.exports=JFe});var t7=w(($ot,e7)=>{var{dirname:ZX}=J("path"),_X=(r,e,t=void 0)=>t===e?Promise.resolve():r.statAsync(e).then(i=>i.isDirectory()?t:void 0,i=>i.code==="ENOENT"?_X(r,ZX(e),e):void 0),$X=(r,e,t=void 0)=>{if(t!==e)try{return r.statSync(e).isDirectory()?t:void 0}catch(i){return i.code==="ENOENT"?$X(r,ZX(e),e):void 0}};e7.exports={findMade:_X,findMadeSync:$X}});var lN=w((eat,i7)=>{var{dirname:r7}=J("path"),aN=(r,e,t)=>{e.recursive=!1;let i=r7(r);return i===r?e.mkdirAsync(r,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(r,e).then(()=>t||r,n=>{if(n.code==="ENOENT")return aN(i,e).then(s=>aN(r,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(r).then(s=>{if(s.isDirectory())return t;throw n},()=>{throw n})})},AN=(r,e,t)=>{let i=r7(r);if(e.recursive=!1,i===r)try{return e.mkdirSync(r,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(r,e),t||r}catch(n){if(n.code==="ENOENT")return AN(r,e,AN(i,e,t));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(r).isDirectory())throw n}catch{throw n}}};i7.exports={mkdirpManual:aN,mkdirpManualSync:AN}});var o7=w((tat,s7)=>{var{dirname:n7}=J("path"),{findMade:WFe,findMadeSync:zFe}=t7(),{mkdirpManual:VFe,mkdirpManualSync:XFe}=lN(),ZFe=(r,e)=>(e.recursive=!0,n7(r)===r?e.mkdirAsync(r,e):WFe(e,r).then(i=>e.mkdirAsync(r,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return VFe(r,e);throw n}))),_Fe=(r,e)=>{if(e.recursive=!0,n7(r)===r)return e.mkdirSync(r,e);let i=zFe(e,r);try{return e.mkdirSync(r,e),i}catch(n){if(n.code==="ENOENT")return XFe(r,e);throw n}};s7.exports={mkdirpNative:ZFe,mkdirpNativeSync:_Fe}});var c7=w((rat,l7)=>{var a7=J("fs"),$Fe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,cN=$Fe.replace(/^v/,"").split("."),A7=+cN[0]>10||+cN[0]==10&&+cN[1]>=12,eNe=A7?r=>r.mkdir===a7.mkdir:()=>!1,tNe=A7?r=>r.mkdirSync===a7.mkdirSync:()=>!1;l7.exports={useNative:eNe,useNativeSync:tNe}});var d7=w((iat,p7)=>{var ph=zX(),dh=XX(),{mkdirpNative:u7,mkdirpNativeSync:g7}=o7(),{mkdirpManual:f7,mkdirpManualSync:h7}=lN(),{useNative:rNe,useNativeSync:iNe}=c7(),Ch=(r,e)=>(r=dh(r),e=ph(e),rNe(e)?u7(r,e):f7(r,e)),nNe=(r,e)=>(r=dh(r),e=ph(e),iNe(e)?g7(r,e):h7(r,e));Ch.sync=nNe;Ch.native=(r,e)=>u7(dh(r),ph(e));Ch.manual=(r,e)=>f7(dh(r),ph(e));Ch.nativeSync=(r,e)=>g7(dh(r),ph(e));Ch.manualSync=(r,e)=>h7(dh(r),ph(e));p7.exports=Ch});var B7=w((nat,w7)=>{"use strict";var Ds=J("fs"),Xc=J("path"),sNe=Ds.lchown?"lchown":"chown",oNe=Ds.lchownSync?"lchownSync":"chownSync",m7=Ds.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),C7=(r,e,t)=>{try{return Ds[oNe](r,e,t)}catch(i){if(i.code!=="ENOENT")throw i}},aNe=(r,e,t)=>{try{return Ds.chownSync(r,e,t)}catch(i){if(i.code!=="ENOENT")throw i}},ANe=m7?(r,e,t,i)=>n=>{!n||n.code!=="EISDIR"?i(n):Ds.chown(r,e,t,i)}:(r,e,t,i)=>i,uN=m7?(r,e,t)=>{try{return C7(r,e,t)}catch(i){if(i.code!=="EISDIR")throw i;aNe(r,e,t)}}:(r,e,t)=>C7(r,e,t),lNe=process.version,E7=(r,e,t)=>Ds.readdir(r,e,t),cNe=(r,e)=>Ds.readdirSync(r,e);/^v4\./.test(lNe)&&(E7=(r,e,t)=>Ds.readdir(r,t));var b0=(r,e,t,i)=>{Ds[sNe](r,e,t,ANe(r,e,t,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},I7=(r,e,t,i,n)=>{if(typeof e=="string")return Ds.lstat(Xc.resolve(r,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,I7(r,o,t,i,n)});if(e.isDirectory())gN(Xc.resolve(r,e.name),t,i,s=>{if(s)return n(s);let o=Xc.resolve(r,e.name);b0(o,t,i,n)});else{let s=Xc.resolve(r,e.name);b0(s,t,i,n)}},gN=(r,e,t,i)=>{E7(r,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return b0(r,e,t,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o===0)return b0(r,e,t,i)}};s.forEach(c=>I7(r,c,e,t,l))})},uNe=(r,e,t,i)=>{if(typeof e=="string")try{let n=Ds.lstatSync(Xc.resolve(r,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&y7(Xc.resolve(r,e.name),t,i),uN(Xc.resolve(r,e.name),t,i)},y7=(r,e,t)=>{let i;try{i=cNe(r,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return uN(r,e,t);throw n}return i&&i.length&&i.forEach(n=>uNe(r,n,e,t)),uN(r,e,t)};w7.exports=gN;gN.sync=y7});var v7=w((sat,fN)=>{"use strict";var Q7=d7(),ks=J("fs"),S0=J("path"),b7=B7(),lo=th(),v0=class extends Error{constructor(e,t){super("Cannot extract through symbolic link"),this.path=t,this.symlink=e}get name(){return"SylinkError"}},x0=class extends Error{constructor(e,t){super(t+": Cannot cd into '"+e+"'"),this.path=e,this.code=t}get name(){return"CwdError"}},P0=(r,e)=>r.get(lo(e)),jC=(r,e,t)=>r.set(lo(e),t),gNe=(r,e)=>{ks.stat(r,(t,i)=>{(t||!i.isDirectory())&&(t=new x0(r,t&&t.code||"ENOTDIR")),e(t)})};fN.exports=(r,e,t)=>{r=lo(r);let i=e.umask,n=e.mode|448,s=(n&i)!==0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=lo(e.cwd),h=(y,B)=>{y?t(y):(jC(g,r,!0),B&&l?b7(B,o,a,v=>h(v)):s?ks.chmod(r,n,t):t())};if(g&&P0(g,r)===!0)return h();if(r===f)return gNe(r,h);if(c)return Q7(r,{mode:n}).then(y=>h(null,y),h);let C=lo(S0.relative(f,r)).split("/");D0(f,C,n,g,u,f,null,h)};var D0=(r,e,t,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=lo(S0.resolve(r+"/"+l));if(P0(i,c))return D0(c,e,t,i,n,s,o,a);ks.mkdir(c,t,S7(c,e,t,i,n,s,o,a))},S7=(r,e,t,i,n,s,o,a)=>l=>{l?ks.lstat(r,(c,u)=>{if(c)c.path=c.path&&lo(c.path),a(c);else if(u.isDirectory())D0(r,e,t,i,n,s,o,a);else if(n)ks.unlink(r,g=>{if(g)return a(g);ks.mkdir(r,t,S7(r,e,t,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new v0(r,r+"/"+e.join("/")));a(l)}}):(o=o||r,D0(r,e,t,i,n,s,o,a))},fNe=r=>{let e=!1,t="ENOTDIR";try{e=ks.statSync(r).isDirectory()}catch(i){t=i.code}finally{if(!e)throw new x0(r,t)}};fN.exports.sync=(r,e)=>{r=lo(r);let t=e.umask,i=e.mode|448,n=(i&t)!==0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=lo(e.cwd),f=y=>{jC(u,r,!0),y&&a&&b7.sync(y,s,o),n&&ks.chmodSync(r,i)};if(u&&P0(u,r)===!0)return f();if(r===g)return fNe(g),f();if(l)return f(Q7.sync(r,i));let p=lo(S0.relative(g,r)).split("/"),C=null;for(let y=p.shift(),B=g;y&&(B+="/"+y);y=p.shift())if(B=lo(S0.resolve(B)),!P0(u,B))try{ks.mkdirSync(B,i),C=C||B,jC(u,B,!0)}catch{let D=ks.lstatSync(B);if(D.isDirectory()){jC(u,B,!0);continue}else if(c){ks.unlinkSync(B),ks.mkdirSync(B,i),C=C||B,jC(u,B,!0);continue}else if(D.isSymbolicLink())return new v0(B,B+"/"+p.join("/"))}return f(C)}});var pN=w((oat,x7)=>{var hN=Object.create(null),{hasOwnProperty:hNe}=Object.prototype;x7.exports=r=>(hNe.call(hN,r)||(hN[r]=r.normalize("NFKD")),hN[r])});var R7=w((aat,k7)=>{var P7=J("assert"),pNe=pN(),dNe=nh(),{join:D7}=J("path"),CNe=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,mNe=CNe==="win32";k7.exports=()=>{let r=new Map,e=new Map,t=c=>c.split("/").slice(0,-1).reduce((g,f)=>(g.length&&(f=D7(g[g.length-1],f)),g.push(f||"/"),g),[]),i=new Set,n=c=>{let u=e.get(c);if(!u)throw new Error("function does not have any path reservations");return{paths:u.paths.map(g=>r.get(g)),dirs:[...u.dirs].map(g=>r.get(g))}},s=c=>{let{paths:u,dirs:g}=n(c);return u.every(f=>f[0]===c)&&g.every(f=>f[0]instanceof Set&&f[0].has(c))},o=c=>i.has(c)||!s(c)?!1:(i.add(c),c(()=>a(c)),!0),a=c=>{if(!i.has(c))return!1;let{paths:u,dirs:g}=e.get(c),f=new Set;return u.forEach(h=>{let p=r.get(h);P7.equal(p[0],c),p.length===1?r.delete(h):(p.shift(),typeof p[0]=="function"?f.add(p[0]):p[0].forEach(C=>f.add(C)))}),g.forEach(h=>{let p=r.get(h);P7(p[0]instanceof Set),p[0].size===1&&p.length===1?r.delete(h):p[0].size===1?(p.shift(),f.add(p[0])):p[0].delete(c)}),i.delete(c),f.forEach(h=>o(h)),!0};return{check:s,reserve:(c,u)=>{c=mNe?["win32 parallelization disabled"]:c.map(f=>pNe(dNe(D7(f))).toLowerCase());let g=new Set(c.map(f=>t(f)).reduce((f,h)=>f.concat(h)));return e.set(u,{dirs:g,paths:c}),c.forEach(f=>{let h=r.get(f);h?h.push(u):r.set(f,[u])}),g.forEach(f=>{let h=r.get(f);h?h[h.length-1]instanceof Set?h[h.length-1].add(u):h.push(new Set([u])):r.set(f,[new Set([u])])}),o(u)}}}});var L7=w((Aat,N7)=>{var ENe=process.env.__FAKE_PLATFORM__||process.platform,INe=ENe==="win32",yNe=global.__FAKE_TESTING_FS__||J("fs"),{O_CREAT:wNe,O_TRUNC:BNe,O_WRONLY:QNe,UV_FS_O_FILEMAP:F7=0}=yNe.constants,bNe=INe&&!!F7,SNe=512*1024,vNe=F7|BNe|wNe|QNe;N7.exports=bNe?r=>r"w"});var QN=w((lat,V7)=>{"use strict";var xNe=J("assert"),PNe=w0(),jt=J("fs"),DNe=fh(),tA=J("path"),J7=v7(),T7=QF(),kNe=R7(),RNe=bF(),_n=th(),FNe=nh(),NNe=pN(),O7=Symbol("onEntry"),mN=Symbol("checkFs"),M7=Symbol("checkFs2"),F0=Symbol("pruneCache"),EN=Symbol("isReusable"),Rs=Symbol("makeFs"),IN=Symbol("file"),yN=Symbol("directory"),N0=Symbol("link"),U7=Symbol("symlink"),K7=Symbol("hardlink"),H7=Symbol("unsupported"),G7=Symbol("checkPath"),gl=Symbol("mkdir"),Yi=Symbol("onError"),k0=Symbol("pending"),Y7=Symbol("pend"),mh=Symbol("unpend"),dN=Symbol("ended"),CN=Symbol("maybeClose"),wN=Symbol("skip"),qC=Symbol("doChown"),JC=Symbol("uid"),WC=Symbol("gid"),zC=Symbol("checkedCwd"),W7=J("crypto"),z7=L7(),LNe=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,VC=LNe==="win32",TNe=(r,e)=>{if(!VC)return jt.unlink(r,e);let t=r+".DELETE."+W7.randomBytes(16).toString("hex");jt.rename(r,t,i=>{if(i)return e(i);jt.unlink(t,e)})},ONe=r=>{if(!VC)return jt.unlinkSync(r);let e=r+".DELETE."+W7.randomBytes(16).toString("hex");jt.renameSync(r,e),jt.unlinkSync(e)},j7=(r,e,t)=>r===r>>>0?r:e===e>>>0?e:t,q7=r=>NNe(FNe(_n(r))).toLowerCase(),MNe=(r,e)=>{e=q7(e);for(let t of r.keys()){let i=q7(t);(i===e||i.indexOf(e+"/")===0)&&r.delete(t)}},UNe=r=>{for(let e of r.keys())r.delete(e)},XC=class extends PNe{constructor(e){if(e||(e={}),e.ondone=t=>{this[dN]=!0,this[CN]()},super(e),this[zC]=!1,this.reservations=kNe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[k0]=0,this[dN]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||VC,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=_n(tA.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[O7](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[CN](){this[dN]&&this[k0]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[G7](e){if(this.strip){let t=_n(e.path).split("/");if(t.length=this.strip)e.linkpath=i.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let t=_n(e.path),i=t.split("/");if(i.includes("..")||VC&&/^[a-z]:\.\.$/i.test(i[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:t}),!1;let[n,s]=RNe(t);n&&(e.path=s,this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:t}))}if(tA.isAbsolute(e.path)?e.absolute=_n(tA.resolve(e.path)):e.absolute=_n(tA.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:_n(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:t}=tA.win32.parse(e.absolute);e.absolute=t+T7.encode(e.absolute.substr(t.length));let{root:i}=tA.win32.parse(e.path);e.path=i+T7.encode(e.path.substr(i.length))}return!0}[O7](e){if(!this[G7](e))return e.resume();switch(xNe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[mN](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[H7](e)}}[Yi](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[mh](),t.resume())}[gl](e,t,i){J7(_n(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t,noChmod:this.noChmod},i)}[qC](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[JC](e){return j7(this.uid,e.uid,this.processUid)}[WC](e){return j7(this.gid,e.gid,this.processGid)}[IN](e,t){let i=e.mode&4095||this.fmode,n=new DNe.WriteStream(e.absolute,{flags:z7(e.size),mode:i,autoClose:!1});n.on("error",l=>{n.fd&&jt.close(n.fd,()=>{}),n.write=()=>!0,this[Yi](l,e),t()});let s=1,o=l=>{if(l){n.fd&&jt.close(n.fd,()=>{}),this[Yi](l,e),t();return}--s===0&&jt.close(n.fd,c=>{c?this[Yi](c,e):this[mh](),t()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;jt.futimes(u,g,f,h=>h?jt.utimes(c,g,f,p=>o(p&&h)):o())}if(this[qC](e)){s++;let g=this[JC](e),f=this[WC](e);jt.fchown(u,g,f,h=>h?jt.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>{this[Yi](l,e),t()}),e.pipe(a)),a.pipe(n)}[yN](e,t){let i=e.mode&4095||this.dmode;this[gl](e.absolute,i,n=>{if(n){this[Yi](n,e),t();return}let s=1,o=a=>{--s===0&&(t(),this[mh](),e.resume())};e.mtime&&!this.noMtime&&(s++,jt.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[qC](e)&&(s++,jt.chown(e.absolute,this[JC](e),this[WC](e),o)),o()})}[H7](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[U7](e,t){this[N0](e,e.linkpath,"symlink",t)}[K7](e,t){let i=_n(tA.resolve(this.cwd,e.linkpath));this[N0](e,i,"link",t)}[Y7](){this[k0]++}[mh](){this[k0]--,this[CN]()}[wN](e){this[mh](),e.resume()}[EN](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!VC}[mN](e){this[Y7]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[M7](e,i))}[F0](e){e.type==="SymbolicLink"?UNe(this.dirCache):e.type!=="Directory"&&MNe(this.dirCache,e.absolute)}[M7](e,t){this[F0](e);let i=a=>{this[F0](e),t(a)},n=()=>{this[gl](this.cwd,this.dmode,a=>{if(a){this[Yi](a,e),i();return}this[zC]=!0,s()})},s=()=>{if(e.absolute!==this.cwd){let a=_n(tA.dirname(e.absolute));if(a!==this.cwd)return this[gl](a,this.dmode,l=>{if(l){this[Yi](l,e),i();return}o()})}o()},o=()=>{jt.lstat(e.absolute,(a,l)=>{if(l&&(this.keep||this.newer&&l.mtime>e.mtime)){this[wN](e),i();return}if(a||this[EN](e,l))return this[Rs](null,e,i);if(l.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(l.mode&4095)!==e.mode,u=g=>this[Rs](g,e,i);return c?jt.chmod(e.absolute,e.mode,u):u()}if(e.absolute!==this.cwd)return jt.rmdir(e.absolute,c=>this[Rs](c,e,i))}if(e.absolute===this.cwd)return this[Rs](null,e,i);TNe(e.absolute,c=>this[Rs](c,e,i))})};this[zC]?s():n()}[Rs](e,t,i){if(e){this[Yi](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[IN](t,i);case"Link":return this[K7](t,i);case"SymbolicLink":return this[U7](t,i);case"Directory":case"GNUDumpDir":return this[yN](t,i)}}[N0](e,t,i,n){jt[i](t,e.absolute,s=>{s?this[Yi](s,e):(this[mh](),e.resume()),n()})}},R0=r=>{try{return[null,r()]}catch(e){return[e,null]}},BN=class extends XC{[Rs](e,t){return super[Rs](e,t,()=>{})}[mN](e){if(this[F0](e),!this[zC]){let s=this[gl](this.cwd,this.dmode);if(s)return this[Yi](s,e);this[zC]=!0}if(e.absolute!==this.cwd){let s=_n(tA.dirname(e.absolute));if(s!==this.cwd){let o=this[gl](s,this.dmode);if(o)return this[Yi](o,e)}}let[t,i]=R0(()=>jt.lstatSync(e.absolute));if(i&&(this.keep||this.newer&&i.mtime>e.mtime))return this[wN](e);if(t||this[EN](e,i))return this[Rs](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=!this.noChmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?R0(()=>{jt.chmodSync(e.absolute,e.mode)}):[];return this[Rs](a,e)}let[s]=R0(()=>jt.rmdirSync(e.absolute));this[Rs](s,e)}let[n]=e.absolute===this.cwd?[]:R0(()=>ONe(e.absolute));this[Rs](n,e)}[IN](e,t){let i=e.mode&4095||this.fmode,n=a=>{let l;try{jt.closeSync(s)}catch(c){l=c}(a||l)&&this[Yi](a||l,e),t()},s;try{s=jt.openSync(e.absolute,z7(e.size),i)}catch(a){return n(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[Yi](a,e)),e.pipe(o)),o.on("data",a=>{try{jt.writeSync(s,a,0,a.length)}catch(l){n(l)}}),o.on("end",a=>{let l=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,u=e.mtime;try{jt.futimesSync(s,c,u)}catch(g){try{jt.utimesSync(e.absolute,c,u)}catch{l=g}}}if(this[qC](e)){let c=this[JC](e),u=this[WC](e);try{jt.fchownSync(s,c,u)}catch(g){try{jt.chownSync(e.absolute,c,u)}catch{l=l||g}}}n(l)})}[yN](e,t){let i=e.mode&4095||this.dmode,n=this[gl](e.absolute,i);if(n){this[Yi](n,e),t();return}if(e.mtime&&!this.noMtime)try{jt.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[qC](e))try{jt.chownSync(e.absolute,this[JC](e),this[WC](e))}catch{}t(),e.resume()}[gl](e,t){try{return J7.sync(_n(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t})}catch(i){return i}}[N0](e,t,i,n){try{jt[i+"Sync"](t,e.absolute),n(),e.resume()}catch(s){return this[Yi](s,e)}}};XC.Sync=BN;V7.exports=XC});var eZ=w((cat,$7)=>{"use strict";var KNe=Xf(),L0=QN(),Z7=J("fs"),_7=fh(),X7=J("path"),bN=nh();$7.exports=(r,e,t)=>{typeof r=="function"?(t=r,e=null,r={}):Array.isArray(r)&&(e=r,r={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let i=KNe(r);if(i.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&HNe(i,e),i.file&&i.sync?GNe(i):i.file?YNe(i,t):i.sync?jNe(i):qNe(i)};var HNe=(r,e)=>{let t=new Map(e.map(s=>[bN(s),!0])),i=r.filter,n=(s,o)=>{let a=o||X7.parse(s).root||".",l=s===a?!1:t.has(s)?t.get(s):n(X7.dirname(s),a);return t.set(s,l),l};r.filter=i?(s,o)=>i(s,o)&&n(bN(s)):s=>n(bN(s))},GNe=r=>{let e=new L0.Sync(r),t=r.file,i=Z7.statSync(t),n=r.maxReadSize||16*1024*1024;new _7.ReadStreamSync(t,{readSize:n,size:i.size}).pipe(e)},YNe=(r,e)=>{let t=new L0(r),i=r.maxReadSize||16*1024*1024,n=r.file,s=new Promise((o,a)=>{t.on("error",a),t.on("close",o),Z7.stat(n,(l,c)=>{if(l)a(l);else{let u=new _7.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(t)}})});return e?s.then(e,e):s},jNe=r=>new L0.Sync(r),qNe=r=>new L0(r)});var tZ=w(ci=>{"use strict";ci.c=ci.create=TX();ci.r=ci.replace=oN();ci.t=ci.list=B0();ci.u=ci.update=qX();ci.x=ci.extract=eZ();ci.Pack=A0();ci.Unpack=QN();ci.Parse=w0();ci.ReadEntry=qB();ci.WriteEntry=LF();ci.Header=ih();ci.Pax=WB();ci.types=CF()});var sZ=w((fat,nZ)=>{var SN;nZ.exports.getContent=()=>(typeof SN>"u"&&(SN=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),SN)});var uZ=w((vN,cZ)=>{(function(r,e){typeof vN=="object"?cZ.exports=e():typeof define=="function"&&define.amd?define(e):r.treeify=e()})(vN,function(){function r(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function t(n,s,o,a,l,c,u){var g="",f=0,h,p,C=a.slice(0);if(C.push([s,o])&&a.length>0&&(a.forEach(function(B,v){v>0&&(g+=(B[1]?" ":"\u2502")+" "),!p&&B[0]===s&&(p=!0)}),g+=r(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var y=e(s,c);y.forEach(function(B){h=++f===y.length,t(B,s[B],h,C,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;t(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return t(".",n,!1,[],s,o,function(l){a+=l+` +`}),a},i})});var U0=w((Tat,yZ)=>{var lLe=vs(),cLe=gC(),uLe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,gLe=/^\w*$/;function fLe(r,e){if(lLe(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||cLe(r)?!0:gLe.test(r)||!uLe.test(r)||e!=null&&r in Object(e)}yZ.exports=fLe});var K0=w((Oat,wZ)=>{var hLe=Fc(),pLe=Sn(),dLe="[object AsyncFunction]",CLe="[object Function]",mLe="[object GeneratorFunction]",ELe="[object Proxy]";function ILe(r){if(!pLe(r))return!1;var e=hLe(r);return e==CLe||e==mLe||e==dLe||e==ELe}wZ.exports=ILe});var QZ=w((Mat,BZ)=>{var yLe=ys(),wLe=yLe["__core-js_shared__"];BZ.exports=wLe});var vZ=w((Uat,SZ)=>{var LN=QZ(),bZ=function(){var r=/[^.]+$/.exec(LN&&LN.keys&&LN.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function BLe(r){return!!bZ&&bZ in r}SZ.exports=BLe});var TN=w((Kat,xZ)=>{var QLe=Function.prototype,bLe=QLe.toString;function SLe(r){if(r!=null){try{return bLe.call(r)}catch{}try{return r+""}catch{}}return""}xZ.exports=SLe});var DZ=w((Hat,PZ)=>{var vLe=K0(),xLe=vZ(),PLe=Sn(),DLe=TN(),kLe=/[\\^$.*+?()[\]{}|]/g,RLe=/^\[object .+?Constructor\]$/,FLe=Function.prototype,NLe=Object.prototype,LLe=FLe.toString,TLe=NLe.hasOwnProperty,OLe=RegExp("^"+LLe.call(TLe).replace(kLe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function MLe(r){if(!PLe(r)||xLe(r))return!1;var e=vLe(r)?OLe:RLe;return e.test(DLe(r))}PZ.exports=MLe});var RZ=w((Gat,kZ)=>{function ULe(r,e){return r==null?void 0:r[e]}kZ.exports=ULe});var hl=w((Yat,FZ)=>{var KLe=DZ(),HLe=RZ();function GLe(r,e){var t=HLe(r,e);return KLe(t)?t:void 0}FZ.exports=GLe});var _C=w((jat,NZ)=>{var YLe=hl(),jLe=YLe(Object,"create");NZ.exports=jLe});var OZ=w((qat,TZ)=>{var LZ=_C();function qLe(){this.__data__=LZ?LZ(null):{},this.size=0}TZ.exports=qLe});var UZ=w((Jat,MZ)=>{function JLe(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}MZ.exports=JLe});var HZ=w((Wat,KZ)=>{var WLe=_C(),zLe="__lodash_hash_undefined__",VLe=Object.prototype,XLe=VLe.hasOwnProperty;function ZLe(r){var e=this.__data__;if(WLe){var t=e[r];return t===zLe?void 0:t}return XLe.call(e,r)?e[r]:void 0}KZ.exports=ZLe});var YZ=w((zat,GZ)=>{var _Le=_C(),$Le=Object.prototype,eTe=$Le.hasOwnProperty;function tTe(r){var e=this.__data__;return _Le?e[r]!==void 0:eTe.call(e,r)}GZ.exports=tTe});var qZ=w((Vat,jZ)=>{var rTe=_C(),iTe="__lodash_hash_undefined__";function nTe(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=rTe&&e===void 0?iTe:e,this}jZ.exports=nTe});var WZ=w((Xat,JZ)=>{var sTe=OZ(),oTe=UZ(),aTe=HZ(),ATe=YZ(),lTe=qZ();function Eh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{function cTe(){this.__data__=[],this.size=0}zZ.exports=cTe});var Ih=w((_at,XZ)=>{function uTe(r,e){return r===e||r!==r&&e!==e}XZ.exports=uTe});var $C=w(($at,ZZ)=>{var gTe=Ih();function fTe(r,e){for(var t=r.length;t--;)if(gTe(r[t][0],e))return t;return-1}ZZ.exports=fTe});var $Z=w((eAt,_Z)=>{var hTe=$C(),pTe=Array.prototype,dTe=pTe.splice;function CTe(r){var e=this.__data__,t=hTe(e,r);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():dTe.call(e,t,1),--this.size,!0}_Z.exports=CTe});var t_=w((tAt,e_)=>{var mTe=$C();function ETe(r){var e=this.__data__,t=mTe(e,r);return t<0?void 0:e[t][1]}e_.exports=ETe});var i_=w((rAt,r_)=>{var ITe=$C();function yTe(r){return ITe(this.__data__,r)>-1}r_.exports=yTe});var s_=w((iAt,n_)=>{var wTe=$C();function BTe(r,e){var t=this.__data__,i=wTe(t,r);return i<0?(++this.size,t.push([r,e])):t[i][1]=e,this}n_.exports=BTe});var em=w((nAt,o_)=>{var QTe=VZ(),bTe=$Z(),STe=t_(),vTe=i_(),xTe=s_();function yh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{var PTe=hl(),DTe=ys(),kTe=PTe(DTe,"Map");a_.exports=kTe});var c_=w((oAt,l_)=>{var A_=WZ(),RTe=em(),FTe=H0();function NTe(){this.size=0,this.__data__={hash:new A_,map:new(FTe||RTe),string:new A_}}l_.exports=NTe});var g_=w((aAt,u_)=>{function LTe(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}u_.exports=LTe});var tm=w((AAt,f_)=>{var TTe=g_();function OTe(r,e){var t=r.__data__;return TTe(e)?t[typeof e=="string"?"string":"hash"]:t.map}f_.exports=OTe});var p_=w((lAt,h_)=>{var MTe=tm();function UTe(r){var e=MTe(this,r).delete(r);return this.size-=e?1:0,e}h_.exports=UTe});var C_=w((cAt,d_)=>{var KTe=tm();function HTe(r){return KTe(this,r).get(r)}d_.exports=HTe});var E_=w((uAt,m_)=>{var GTe=tm();function YTe(r){return GTe(this,r).has(r)}m_.exports=YTe});var y_=w((gAt,I_)=>{var jTe=tm();function qTe(r,e){var t=jTe(this,r),i=t.size;return t.set(r,e),this.size+=t.size==i?0:1,this}I_.exports=qTe});var G0=w((fAt,w_)=>{var JTe=c_(),WTe=p_(),zTe=C_(),VTe=E_(),XTe=y_();function wh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e{var B_=G0(),ZTe="Expected a function";function ON(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(ZTe);var t=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=t.cache;if(s.has(n))return s.get(n);var o=r.apply(this,i);return t.cache=s.set(n,o)||s,o};return t.cache=new(ON.Cache||B_),t}ON.Cache=B_;Q_.exports=ON});var v_=w((pAt,S_)=>{var _Te=b_(),$Te=500;function eOe(r){var e=_Te(r,function(i){return t.size===$Te&&t.clear(),i}),t=e.cache;return e}S_.exports=eOe});var P_=w((dAt,x_)=>{var tOe=v_(),rOe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,iOe=/\\(\\)?/g,nOe=tOe(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(rOe,function(t,i,n,s){e.push(n?s.replace(iOe,"$1"):i||t)}),e});x_.exports=nOe});var Bh=w((CAt,D_)=>{var sOe=vs(),oOe=U0(),aOe=P_(),AOe=Vf();function lOe(r,e){return sOe(r)?r:oOe(r,e)?[r]:aOe(AOe(r))}D_.exports=lOe});var Zc=w((mAt,k_)=>{var cOe=gC(),uOe=1/0;function gOe(r){if(typeof r=="string"||cOe(r))return r;var e=r+"";return e=="0"&&1/r==-uOe?"-0":e}k_.exports=gOe});var rm=w((EAt,R_)=>{var fOe=Bh(),hOe=Zc();function pOe(r,e){e=fOe(e,r);for(var t=0,i=e.length;r!=null&&t{var dOe=hl(),COe=function(){try{var r=dOe(Object,"defineProperty");return r({},"",{}),r}catch{}}();F_.exports=COe});var Qh=w((yAt,L_)=>{var N_=MN();function mOe(r,e,t){e=="__proto__"&&N_?N_(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}L_.exports=mOe});var Y0=w((wAt,T_)=>{var EOe=Qh(),IOe=Ih(),yOe=Object.prototype,wOe=yOe.hasOwnProperty;function BOe(r,e,t){var i=r[e];(!(wOe.call(r,e)&&IOe(i,t))||t===void 0&&!(e in r))&&EOe(r,e,t)}T_.exports=BOe});var im=w((BAt,O_)=>{var QOe=9007199254740991,bOe=/^(?:0|[1-9]\d*)$/;function SOe(r,e){var t=typeof r;return e=e==null?QOe:e,!!e&&(t=="number"||t!="symbol"&&bOe.test(r))&&r>-1&&r%1==0&&r{var vOe=Y0(),xOe=Bh(),POe=im(),M_=Sn(),DOe=Zc();function kOe(r,e,t,i){if(!M_(r))return r;e=xOe(e,r);for(var n=-1,s=e.length,o=s-1,a=r;a!=null&&++n{var ROe=rm(),FOe=UN(),NOe=Bh();function LOe(r,e,t){for(var i=-1,n=e.length,s={};++i{function TOe(r,e){return r!=null&&e in Object(r)}G_.exports=TOe});var q_=w((vAt,j_)=>{var OOe=Fc(),MOe=Jo(),UOe="[object Arguments]";function KOe(r){return MOe(r)&&OOe(r)==UOe}j_.exports=KOe});var nm=w((xAt,z_)=>{var J_=q_(),HOe=Jo(),W_=Object.prototype,GOe=W_.hasOwnProperty,YOe=W_.propertyIsEnumerable,jOe=J_(function(){return arguments}())?J_:function(r){return HOe(r)&&GOe.call(r,"callee")&&!YOe.call(r,"callee")};z_.exports=jOe});var j0=w((PAt,V_)=>{var qOe=9007199254740991;function JOe(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=qOe}V_.exports=JOe});var KN=w((DAt,X_)=>{var WOe=Bh(),zOe=nm(),VOe=vs(),XOe=im(),ZOe=j0(),_Oe=Zc();function $Oe(r,e,t){e=WOe(e,r);for(var i=-1,n=e.length,s=!1;++i{var eMe=Y_(),tMe=KN();function rMe(r,e){return r!=null&&tMe(r,e,eMe)}Z_.exports=rMe});var $_=w((RAt,__)=>{var iMe=H_(),nMe=HN();function sMe(r,e){return iMe(r,e,function(t,i){return nMe(r,i)})}__.exports=sMe});var q0=w((FAt,e$)=>{function oMe(r,e){for(var t=-1,i=e.length,n=r.length;++t{var t$=Rc(),aMe=nm(),AMe=vs(),r$=t$?t$.isConcatSpreadable:void 0;function lMe(r){return AMe(r)||aMe(r)||!!(r$&&r&&r[r$])}i$.exports=lMe});var a$=w((LAt,o$)=>{var cMe=q0(),uMe=n$();function s$(r,e,t,i,n){var s=-1,o=r.length;for(t||(t=uMe),n||(n=[]);++s0&&t(a)?e>1?s$(a,e-1,t,i,n):cMe(n,a):i||(n[n.length]=a)}return n}o$.exports=s$});var l$=w((TAt,A$)=>{var gMe=a$();function fMe(r){var e=r==null?0:r.length;return e?gMe(r,1):[]}A$.exports=fMe});var u$=w((OAt,c$)=>{function hMe(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}c$.exports=hMe});var GN=w((MAt,f$)=>{var pMe=u$(),g$=Math.max;function dMe(r,e,t){return e=g$(e===void 0?r.length-1:e,0),function(){for(var i=arguments,n=-1,s=g$(i.length-e,0),o=Array(s);++n{function CMe(r){return function(){return r}}h$.exports=CMe});var J0=w((KAt,d$)=>{function mMe(r){return r}d$.exports=mMe});var E$=w((HAt,m$)=>{var EMe=p$(),C$=MN(),IMe=J0(),yMe=C$?function(r,e){return C$(r,"toString",{configurable:!0,enumerable:!1,value:EMe(e),writable:!0})}:IMe;m$.exports=yMe});var y$=w((GAt,I$)=>{var wMe=800,BMe=16,QMe=Date.now;function bMe(r){var e=0,t=0;return function(){var i=QMe(),n=BMe-(i-t);if(t=i,n>0){if(++e>=wMe)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}I$.exports=bMe});var YN=w((YAt,w$)=>{var SMe=E$(),vMe=y$(),xMe=vMe(SMe);w$.exports=xMe});var Q$=w((jAt,B$)=>{var PMe=l$(),DMe=GN(),kMe=YN();function RMe(r){return kMe(DMe(r,void 0,PMe),r+"")}B$.exports=RMe});var S$=w((qAt,b$)=>{var FMe=$_(),NMe=Q$(),LMe=NMe(function(r,e){return r==null?{}:FMe(r,e)});b$.exports=LMe});var O$=w((hct,T$)=>{"use strict";var XN;try{XN=Map}catch{}var ZN;try{ZN=Set}catch{}function N$(r,e,t){if(!r||typeof r!="object"||typeof r=="function")return r;if(r.nodeType&&"cloneNode"in r)return r.cloneNode(!0);if(r instanceof Date)return new Date(r.getTime());if(r instanceof RegExp)return new RegExp(r);if(Array.isArray(r))return r.map(L$);if(XN&&r instanceof XN)return new Map(Array.from(r.entries()));if(ZN&&r instanceof ZN)return new Set(Array.from(r.values()));if(r instanceof Object){e.push(r);var i=Object.create(r);t.push(i);for(var n in r){var s=e.findIndex(function(o){return o===r[n]});i[n]=s>-1?t[s]:N$(r[n],e,t)}return i}return r}function L$(r){return N$(r,[],[])}T$.exports=L$});var om=w(_N=>{"use strict";Object.defineProperty(_N,"__esModule",{value:!0});_N.default=XMe;var jMe=Object.prototype.toString,qMe=Error.prototype.toString,JMe=RegExp.prototype.toString,WMe=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",zMe=/^Symbol\((.*)\)(.*)$/;function VMe(r){return r!=+r?"NaN":r===0&&1/r<0?"-0":""+r}function M$(r,e=!1){if(r==null||r===!0||r===!1)return""+r;let t=typeof r;if(t==="number")return VMe(r);if(t==="string")return e?`"${r}"`:r;if(t==="function")return"[Function "+(r.name||"anonymous")+"]";if(t==="symbol")return WMe.call(r).replace(zMe,"Symbol($1)");let i=jMe.call(r).slice(8,-1);return i==="Date"?isNaN(r.getTime())?""+r:r.toISOString(r):i==="Error"||r instanceof Error?"["+qMe.call(r)+"]":i==="RegExp"?JMe.call(r):null}function XMe(r,e){let t=M$(r,e);return t!==null?t:JSON.stringify(r,function(i,n){let s=M$(this[i],e);return s!==null?s:n},2)}});var iA=w(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.default=Ei.array=Ei.object=Ei.boolean=Ei.date=Ei.number=Ei.string=Ei.mixed=void 0;var U$=ZMe(om());function ZMe(r){return r&&r.__esModule?r:{default:r}}var K$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:r,type:e,value:t,originalValue:i})=>{let n=i!=null&&i!==t,s=`${r} must be a \`${e}\` type, but the final value was: \`${(0,U$.default)(t,!0)}\``+(n?` (cast from the value \`${(0,U$.default)(i,!0)}\`).`:".");return t===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};Ei.mixed=K$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};Ei.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};Ei.number=G$;var Y$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};Ei.date=Y$;var j$={isValue:"${path} field must be ${value}"};Ei.boolean=j$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};Ei.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};Ei.array=J$;var _Me=Object.assign(Object.create(null),{mixed:K$,string:H$,number:G$,date:Y$,object:q$,array:J$,boolean:j$});Ei.default=_Me});var z$=w((Cct,W$)=>{var $Me=Object.prototype,e1e=$Me.hasOwnProperty;function t1e(r,e){return r!=null&&e1e.call(r,e)}W$.exports=t1e});var am=w((mct,V$)=>{var r1e=z$(),i1e=KN();function n1e(r,e){return r!=null&&i1e(r,e,r1e)}V$.exports=n1e});var xh=w(eQ=>{"use strict";Object.defineProperty(eQ,"__esModule",{value:!0});eQ.default=void 0;var s1e=r=>r&&r.__isYupSchema__;eQ.default=s1e});var Z$=w(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.default=void 0;var o1e=X$(am()),a1e=X$(xh());function X$(r){return r&&r.__esModule?r:{default:r}}var $N=class{constructor(e,t){if(this.refs=e,this.refs=e,typeof t=="function"){this.fn=t;return}if(!(0,o1e.default)(t,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=t,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,t){let i=this.refs.map(s=>s.getValue(t==null?void 0:t.value,t==null?void 0:t.parent,t==null?void 0:t.context)),n=this.fn.apply(e,i.concat(e,t));if(n===void 0||n===e)return e;if(!(0,a1e.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(t)}},A1e=$N;tQ.default=A1e});var tL=w(eL=>{"use strict";Object.defineProperty(eL,"__esModule",{value:!0});eL.default=l1e;function l1e(r){return r==null?[]:[].concat(r)}});var _c=w(rQ=>{"use strict";Object.defineProperty(rQ,"__esModule",{value:!0});rQ.default=void 0;var c1e=_$(om()),u1e=_$(tL());function _$(r){return r&&r.__esModule?r:{default:r}}function rL(){return rL=Object.assign||function(r){for(var e=1;e(0,c1e.default)(t[s])):typeof e=="function"?e(t):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,t,i,n){super(),this.name="ValidationError",this.value=t,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,u1e.default)(e).forEach(s=>{Ph.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Ph)}};rQ.default=Ph});var iQ=w(nL=>{"use strict";Object.defineProperty(nL,"__esModule",{value:!0});nL.default=p1e;var iL=f1e(_c());function f1e(r){return r&&r.__esModule?r:{default:r}}var h1e=r=>{let e=!1;return(...t)=>{e||(e=!0,r(...t))}};function p1e(r,e){let{endEarly:t,tests:i,args:n,value:s,errors:o,sort:a,path:l}=r,c=h1e(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new iL.default(o,s,l)):c(null,s);for(let f=0;f{function d1e(r){return function(e,t,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[r?a:++n];if(t(s[l],l,s)===!1)break}return e}}$$.exports=d1e});var sL=w((bct,tee)=>{var C1e=eee(),m1e=C1e();tee.exports=m1e});var iee=w((Sct,ree)=>{function E1e(r,e){for(var t=-1,i=Array(r);++t{function I1e(){return!1}nee.exports=I1e});var lm=w((Am,Dh)=>{var y1e=ys(),w1e=see(),Aee=typeof Am=="object"&&Am&&!Am.nodeType&&Am,oee=Aee&&typeof Dh=="object"&&Dh&&!Dh.nodeType&&Dh,B1e=oee&&oee.exports===Aee,aee=B1e?y1e.Buffer:void 0,Q1e=aee?aee.isBuffer:void 0,b1e=Q1e||w1e;Dh.exports=b1e});var cee=w((xct,lee)=>{var S1e=Fc(),v1e=j0(),x1e=Jo(),P1e="[object Arguments]",D1e="[object Array]",k1e="[object Boolean]",R1e="[object Date]",F1e="[object Error]",N1e="[object Function]",L1e="[object Map]",T1e="[object Number]",O1e="[object Object]",M1e="[object RegExp]",U1e="[object Set]",K1e="[object String]",H1e="[object WeakMap]",G1e="[object ArrayBuffer]",Y1e="[object DataView]",j1e="[object Float32Array]",q1e="[object Float64Array]",J1e="[object Int8Array]",W1e="[object Int16Array]",z1e="[object Int32Array]",V1e="[object Uint8Array]",X1e="[object Uint8ClampedArray]",Z1e="[object Uint16Array]",_1e="[object Uint32Array]",Ir={};Ir[j1e]=Ir[q1e]=Ir[J1e]=Ir[W1e]=Ir[z1e]=Ir[V1e]=Ir[X1e]=Ir[Z1e]=Ir[_1e]=!0;Ir[P1e]=Ir[D1e]=Ir[G1e]=Ir[k1e]=Ir[Y1e]=Ir[R1e]=Ir[F1e]=Ir[N1e]=Ir[L1e]=Ir[T1e]=Ir[O1e]=Ir[M1e]=Ir[U1e]=Ir[K1e]=Ir[H1e]=!1;function $1e(r){return x1e(r)&&v1e(r.length)&&!!Ir[S1e(r)]}lee.exports=$1e});var nQ=w((Pct,uee)=>{function eUe(r){return function(e){return r(e)}}uee.exports=eUe});var sQ=w((cm,kh)=>{var tUe=WD(),gee=typeof cm=="object"&&cm&&!cm.nodeType&&cm,um=gee&&typeof kh=="object"&&kh&&!kh.nodeType&&kh,rUe=um&&um.exports===gee,oL=rUe&&tUe.process,iUe=function(){try{var r=um&&um.require&&um.require("util").types;return r||oL&&oL.binding&&oL.binding("util")}catch{}}();kh.exports=iUe});var oQ=w((Dct,pee)=>{var nUe=cee(),sUe=nQ(),fee=sQ(),hee=fee&&fee.isTypedArray,oUe=hee?sUe(hee):nUe;pee.exports=oUe});var aL=w((kct,dee)=>{var aUe=iee(),AUe=nm(),lUe=vs(),cUe=lm(),uUe=im(),gUe=oQ(),fUe=Object.prototype,hUe=fUe.hasOwnProperty;function pUe(r,e){var t=lUe(r),i=!t&&AUe(r),n=!t&&!i&&cUe(r),s=!t&&!i&&!n&&gUe(r),o=t||i||n||s,a=o?aUe(r.length,String):[],l=a.length;for(var c in r)(e||hUe.call(r,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||uUe(c,l)))&&a.push(c);return a}dee.exports=pUe});var aQ=w((Rct,Cee)=>{var dUe=Object.prototype;function CUe(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||dUe;return r===t}Cee.exports=CUe});var AL=w((Fct,mee)=>{function mUe(r,e){return function(t){return r(e(t))}}mee.exports=mUe});var Iee=w((Nct,Eee)=>{var EUe=AL(),IUe=EUe(Object.keys,Object);Eee.exports=IUe});var wee=w((Lct,yee)=>{var yUe=aQ(),wUe=Iee(),BUe=Object.prototype,QUe=BUe.hasOwnProperty;function bUe(r){if(!yUe(r))return wUe(r);var e=[];for(var t in Object(r))QUe.call(r,t)&&t!="constructor"&&e.push(t);return e}yee.exports=bUe});var gm=w((Tct,Bee)=>{var SUe=K0(),vUe=j0();function xUe(r){return r!=null&&vUe(r.length)&&!SUe(r)}Bee.exports=xUe});var Rh=w((Oct,Qee)=>{var PUe=aL(),DUe=wee(),kUe=gm();function RUe(r){return kUe(r)?PUe(r):DUe(r)}Qee.exports=RUe});var lL=w((Mct,bee)=>{var FUe=sL(),NUe=Rh();function LUe(r,e){return r&&FUe(r,e,NUe)}bee.exports=LUe});var vee=w((Uct,See)=>{var TUe=em();function OUe(){this.__data__=new TUe,this.size=0}See.exports=OUe});var Pee=w((Kct,xee)=>{function MUe(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}xee.exports=MUe});var kee=w((Hct,Dee)=>{function UUe(r){return this.__data__.get(r)}Dee.exports=UUe});var Fee=w((Gct,Ree)=>{function KUe(r){return this.__data__.has(r)}Ree.exports=KUe});var Lee=w((Yct,Nee)=>{var HUe=em(),GUe=H0(),YUe=G0(),jUe=200;function qUe(r,e){var t=this.__data__;if(t instanceof HUe){var i=t.__data__;if(!GUe||i.length{var JUe=em(),WUe=vee(),zUe=Pee(),VUe=kee(),XUe=Fee(),ZUe=Lee();function Fh(r){var e=this.__data__=new JUe(r);this.size=e.size}Fh.prototype.clear=WUe;Fh.prototype.delete=zUe;Fh.prototype.get=VUe;Fh.prototype.has=XUe;Fh.prototype.set=ZUe;Tee.exports=Fh});var Mee=w((qct,Oee)=>{var _Ue="__lodash_hash_undefined__";function $Ue(r){return this.__data__.set(r,_Ue),this}Oee.exports=$Ue});var Kee=w((Jct,Uee)=>{function eKe(r){return this.__data__.has(r)}Uee.exports=eKe});var Gee=w((Wct,Hee)=>{var tKe=G0(),rKe=Mee(),iKe=Kee();function AQ(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new tKe;++e{function nKe(r,e){for(var t=-1,i=r==null?0:r.length;++t{function sKe(r,e){return r.has(e)}qee.exports=sKe});var cL=w((Xct,Wee)=>{var oKe=Gee(),aKe=jee(),AKe=Jee(),lKe=1,cKe=2;function uKe(r,e,t,i,n,s){var o=t&lKe,a=r.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(r),u=s.get(e);if(c&&u)return c==e&&u==r;var g=-1,f=!0,h=t&cKe?new oKe:void 0;for(s.set(r,e),s.set(e,r);++g{var gKe=ys(),fKe=gKe.Uint8Array;zee.exports=fKe});var Xee=w((_ct,Vee)=>{function hKe(r){var e=-1,t=Array(r.size);return r.forEach(function(i,n){t[++e]=[n,i]}),t}Vee.exports=hKe});var _ee=w(($ct,Zee)=>{function pKe(r){var e=-1,t=Array(r.size);return r.forEach(function(i){t[++e]=i}),t}Zee.exports=pKe});var ite=w((eut,rte)=>{var $ee=Rc(),ete=uL(),dKe=Ih(),CKe=cL(),mKe=Xee(),EKe=_ee(),IKe=1,yKe=2,wKe="[object Boolean]",BKe="[object Date]",QKe="[object Error]",bKe="[object Map]",SKe="[object Number]",vKe="[object RegExp]",xKe="[object Set]",PKe="[object String]",DKe="[object Symbol]",kKe="[object ArrayBuffer]",RKe="[object DataView]",tte=$ee?$ee.prototype:void 0,gL=tte?tte.valueOf:void 0;function FKe(r,e,t,i,n,s,o){switch(t){case RKe:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case kKe:return!(r.byteLength!=e.byteLength||!s(new ete(r),new ete(e)));case wKe:case BKe:case SKe:return dKe(+r,+e);case QKe:return r.name==e.name&&r.message==e.message;case vKe:case PKe:return r==e+"";case bKe:var a=mKe;case xKe:var l=i&IKe;if(a||(a=EKe),r.size!=e.size&&!l)return!1;var c=o.get(r);if(c)return c==e;i|=yKe,o.set(r,e);var u=CKe(a(r),a(e),i,n,s,o);return o.delete(r),u;case DKe:if(gL)return gL.call(r)==gL.call(e)}return!1}rte.exports=FKe});var fL=w((tut,nte)=>{var NKe=q0(),LKe=vs();function TKe(r,e,t){var i=e(r);return LKe(r)?i:NKe(i,t(r))}nte.exports=TKe});var ote=w((rut,ste)=>{function OKe(r,e){for(var t=-1,i=r==null?0:r.length,n=0,s=[];++t{function MKe(){return[]}ate.exports=MKe});var lQ=w((nut,lte)=>{var UKe=ote(),KKe=hL(),HKe=Object.prototype,GKe=HKe.propertyIsEnumerable,Ate=Object.getOwnPropertySymbols,YKe=Ate?function(r){return r==null?[]:(r=Object(r),UKe(Ate(r),function(e){return GKe.call(r,e)}))}:KKe;lte.exports=YKe});var pL=w((sut,cte)=>{var jKe=fL(),qKe=lQ(),JKe=Rh();function WKe(r){return jKe(r,JKe,qKe)}cte.exports=WKe});var fte=w((out,gte)=>{var ute=pL(),zKe=1,VKe=Object.prototype,XKe=VKe.hasOwnProperty;function ZKe(r,e,t,i,n,s){var o=t&zKe,a=ute(r),l=a.length,c=ute(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:XKe.call(e,f)))return!1}var h=s.get(r),p=s.get(e);if(h&&p)return h==e&&p==r;var C=!0;s.set(r,e),s.set(e,r);for(var y=o;++g{var _Ke=hl(),$Ke=ys(),e2e=_Ke($Ke,"DataView");hte.exports=e2e});var Cte=w((Aut,dte)=>{var t2e=hl(),r2e=ys(),i2e=t2e(r2e,"Promise");dte.exports=i2e});var Ete=w((lut,mte)=>{var n2e=hl(),s2e=ys(),o2e=n2e(s2e,"Set");mte.exports=o2e});var yte=w((cut,Ite)=>{var a2e=hl(),A2e=ys(),l2e=a2e(A2e,"WeakMap");Ite.exports=l2e});var hm=w((uut,xte)=>{var dL=pte(),CL=H0(),mL=Cte(),EL=Ete(),IL=yte(),vte=Fc(),Nh=TN(),wte="[object Map]",c2e="[object Object]",Bte="[object Promise]",Qte="[object Set]",bte="[object WeakMap]",Ste="[object DataView]",u2e=Nh(dL),g2e=Nh(CL),f2e=Nh(mL),h2e=Nh(EL),p2e=Nh(IL),$c=vte;(dL&&$c(new dL(new ArrayBuffer(1)))!=Ste||CL&&$c(new CL)!=wte||mL&&$c(mL.resolve())!=Bte||EL&&$c(new EL)!=Qte||IL&&$c(new IL)!=bte)&&($c=function(r){var e=vte(r),t=e==c2e?r.constructor:void 0,i=t?Nh(t):"";if(i)switch(i){case u2e:return Ste;case g2e:return wte;case f2e:return Bte;case h2e:return Qte;case p2e:return bte}return e});xte.exports=$c});var Tte=w((gut,Lte)=>{var yL=fm(),d2e=cL(),C2e=ite(),m2e=fte(),Pte=hm(),Dte=vs(),kte=lm(),E2e=oQ(),I2e=1,Rte="[object Arguments]",Fte="[object Array]",cQ="[object Object]",y2e=Object.prototype,Nte=y2e.hasOwnProperty;function w2e(r,e,t,i,n,s){var o=Dte(r),a=Dte(e),l=o?Fte:Pte(r),c=a?Fte:Pte(e);l=l==Rte?cQ:l,c=c==Rte?cQ:c;var u=l==cQ,g=c==cQ,f=l==c;if(f&&kte(r)){if(!kte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new yL),o||E2e(r)?d2e(r,e,t,i,n,s):C2e(r,e,l,t,i,n,s);if(!(t&I2e)){var h=u&&Nte.call(r,"__wrapped__"),p=g&&Nte.call(e,"__wrapped__");if(h||p){var C=h?r.value():r,y=p?e.value():e;return s||(s=new yL),n(C,y,t,i,s)}}return f?(s||(s=new yL),m2e(r,e,t,i,n,s)):!1}Lte.exports=w2e});var wL=w((fut,Ute)=>{var B2e=Tte(),Ote=Jo();function Mte(r,e,t,i,n){return r===e?!0:r==null||e==null||!Ote(r)&&!Ote(e)?r!==r&&e!==e:B2e(r,e,t,i,Mte,n)}Ute.exports=Mte});var Hte=w((hut,Kte)=>{var Q2e=fm(),b2e=wL(),S2e=1,v2e=2;function x2e(r,e,t,i){var n=t.length,s=n,o=!i;if(r==null)return!s;for(r=Object(r);n--;){var a=t[n];if(o&&a[2]?a[1]!==r[a[0]]:!(a[0]in r))return!1}for(;++n{var P2e=Sn();function D2e(r){return r===r&&!P2e(r)}Gte.exports=D2e});var jte=w((dut,Yte)=>{var k2e=BL(),R2e=Rh();function F2e(r){for(var e=R2e(r),t=e.length;t--;){var i=e[t],n=r[i];e[t]=[i,n,k2e(n)]}return e}Yte.exports=F2e});var QL=w((Cut,qte)=>{function N2e(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}qte.exports=N2e});var Wte=w((mut,Jte)=>{var L2e=Hte(),T2e=jte(),O2e=QL();function M2e(r){var e=T2e(r);return e.length==1&&e[0][2]?O2e(e[0][0],e[0][1]):function(t){return t===r||L2e(t,r,e)}}Jte.exports=M2e});var uQ=w((Eut,zte)=>{var U2e=rm();function K2e(r,e,t){var i=r==null?void 0:U2e(r,e);return i===void 0?t:i}zte.exports=K2e});var Xte=w((Iut,Vte)=>{var H2e=wL(),G2e=uQ(),Y2e=HN(),j2e=U0(),q2e=BL(),J2e=QL(),W2e=Zc(),z2e=1,V2e=2;function X2e(r,e){return j2e(r)&&q2e(e)?J2e(W2e(r),e):function(t){var i=G2e(t,r);return i===void 0&&i===e?Y2e(t,r):H2e(e,i,z2e|V2e)}}Vte.exports=X2e});var _te=w((yut,Zte)=>{function Z2e(r){return function(e){return e==null?void 0:e[r]}}Zte.exports=Z2e});var ere=w((wut,$te)=>{var _2e=rm();function $2e(r){return function(e){return _2e(e,r)}}$te.exports=$2e});var rre=w((But,tre)=>{var eHe=_te(),tHe=ere(),rHe=U0(),iHe=Zc();function nHe(r){return rHe(r)?eHe(iHe(r)):tHe(r)}tre.exports=nHe});var bL=w((Qut,ire)=>{var sHe=Wte(),oHe=Xte(),aHe=J0(),AHe=vs(),lHe=rre();function cHe(r){return typeof r=="function"?r:r==null?aHe:typeof r=="object"?AHe(r)?oHe(r[0],r[1]):sHe(r):lHe(r)}ire.exports=cHe});var SL=w((but,nre)=>{var uHe=Qh(),gHe=lL(),fHe=bL();function hHe(r,e){var t={};return e=fHe(e,3),gHe(r,function(i,n,s){uHe(t,n,e(i,n,s))}),t}nre.exports=hHe});var pm=w((Sut,lre)=>{"use strict";function eu(r){this._maxSize=r,this.clear()}eu.prototype.clear=function(){this._size=0,this._values=Object.create(null)};eu.prototype.get=function(r){return this._values[r]};eu.prototype.set=function(r,e){return this._size>=this._maxSize&&this.clear(),r in this._values||this._size++,this._values[r]=e};var pHe=/[^.^\]^[]+|(?=\[\]|\.\.)/g,Are=/^\d+$/,dHe=/^\d/,CHe=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,mHe=/^\s*(['"]?)(.*?)(\1)\s*$/,PL=512,sre=new eu(PL),ore=new eu(PL),are=new eu(PL);lre.exports={Cache:eu,split:xL,normalizePath:vL,setter:function(r){var e=vL(r);return ore.get(r)||ore.set(r,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(Cm,"__esModule",{value:!0});Cm.create=QHe;Cm.default=void 0;var BHe=pm(),gQ={context:"$",value:"."};function QHe(r,e){return new dm(r,e)}var dm=class{constructor(e,t={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===gQ.context,this.isValue=this.key[0]===gQ.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?gQ.context:this.isValue?gQ.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,BHe.getter)(this.path,!0),this.map=t.map}getValue(e,t,i){let n=this.isContext?i:this.isValue?e:t;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,t){return this.getValue(e,t==null?void 0:t.parent,t==null?void 0:t.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};Cm.default=dm;dm.prototype.__isYupRef=!0});var cre=w(RL=>{"use strict";Object.defineProperty(RL,"__esModule",{value:!0});RL.default=xHe;var bHe=kL(SL()),fQ=kL(_c()),SHe=kL(tu());function kL(r){return r&&r.__esModule?r:{default:r}}function hQ(){return hQ=Object.assign||function(r){for(var e=1;e=0)&&(t[n]=r[n]);return t}function xHe(r){function e(t,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=t,u=vHe(t,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=r,{parent:C,context:y}=a;function B(j){return SHe.default.isRef(j)?j.getValue(n,C,y):j}function v(j={}){let $=(0,bHe.default)(hQ({value:n,originalValue:l,label:o,path:j.path||s},h,j.params),B),V=new fQ.default(fQ.default.formatError(j.message||p,$),n,$.path,j.type||g);return V.params=$,V}let D=hQ({path:s,parent:C,type:g,createError:v,resolve:B,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(D,n,D)).then(j=>{fQ.default.isError(j)?i(j):j?i(null,j):i(v())})}catch(j){i(j)}return}let L;try{var H;if(L=f.call(D,n,D),typeof((H=L)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${D.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(j){i(j);return}fQ.default.isError(L)?i(L):L?i(null,L):i(v())}return e.OPTIONS=r,e}});var FL=w(mm=>{"use strict";Object.defineProperty(mm,"__esModule",{value:!0});mm.getIn=ure;mm.default=void 0;var PHe=pm(),DHe=r=>r.substr(0,r.length-1).substr(1);function ure(r,e,t,i=t){let n,s,o;return e?((0,PHe.forEach)(e,(a,l,c)=>{let u=l?DHe(a):a;if(r=r.resolve({context:i,parent:n,value:t}),r.innerType){let g=c?parseInt(u,10):0;if(t&&g>=t.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=t,t=t&&t[g],r=r.innerType}if(!c){if(!r.fields||!r.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${r._type}")`);n=t,t=t&&t[u],r=r.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:r,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:r}}var kHe=(r,e,t,i)=>ure(r,e,t,i).schema,RHe=kHe;mm.default=RHe});var fre=w(pQ=>{"use strict";Object.defineProperty(pQ,"__esModule",{value:!0});pQ.default=void 0;var gre=FHe(tu());function FHe(r){return r&&r.__esModule?r:{default:r}}var Em=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let t of this.list)e.push(t);for(let[,t]of this.refs)e.push(t.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){gre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){gre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,t){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(t(i.value)===e)return!0;return!1}clone(){let e=new Em;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,t){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),t.list.forEach(n=>i.delete(n)),t.refs.forEach(n=>i.delete(n)),i}};pQ.default=Em});var sA=w(CQ=>{"use strict";Object.defineProperty(CQ,"__esModule",{value:!0});CQ.default=void 0;var hre=nA(O$()),Lh=iA(),NHe=nA(Z$()),pre=nA(iQ()),dQ=nA(cre()),dre=nA(om()),LHe=nA(tu()),THe=FL(),OHe=nA(tL()),Cre=nA(_c()),mre=nA(fre());function nA(r){return r&&r.__esModule?r:{default:r}}function Fs(){return Fs=Object.assign||function(r){for(var e=1;e{this.typeError(Lh.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=Fs({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let t=Object.create(Object.getPrototypeOf(this));return t.type=this.type,t._typeError=this._typeError,t._whitelistError=this._whitelistError,t._blacklistError=this._blacklistError,t._whitelist=this._whitelist.clone(),t._blacklist=this._blacklist.clone(),t.exclusiveTests=Fs({},this.exclusiveTests),t.deps=[...this.deps],t.conditions=[...this.conditions],t.tests=[...this.tests],t.transforms=[...this.transforms],t.spec=(0,hre.default)(Fs({},this.spec,e)),t}label(e){var t=this.clone();return t.spec.label=e,t}meta(...e){if(e.length===0)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}withMutation(e){let t=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=t,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let t=this,i=e.clone(),n=Fs({},t.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=t._typeError),i._whitelistError||(i._whitelistError=t._whitelistError),i._blacklistError||(i._blacklistError=t._blacklistError),i._whitelist=t._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=t._blacklist.merge(e._blacklist,e._whitelist),i.tests=t.tests,i.exclusiveTests=t.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let t=this;if(t.conditions.length){let i=t.conditions;t=t.clone(),t.conditions=[],t=i.reduce((n,s)=>s.resolve(n,e),t),t=t.resolve(e)}return t}cast(e,t={}){let i=this.resolve(Fs({value:e},t)),n=i._cast(e,t);if(e!==void 0&&t.assert!==!1&&i.isType(n)!==!0){let s=(0,dre.default)(e),o=(0,dre.default)(n);throw new TypeError(`The value of ${t.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,t){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,t={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=t,u=e;l||(u=this._cast(u,Ps({assert:!1},t)));let g={value:u,path:s,options:t,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,xte.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,xte.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,t,i){let n=this.resolve(Ps({},t,{value:e}));return typeof i=="function"?n._validate(e,t,i):new Promise((s,o)=>n._validate(e,t,(a,l)=>{a?o(a):s(l)}))}validateSync(e,t){let i=this.resolve(Ps({},t,{value:e})),n;return i._validate(e,Ps({},t,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,t){return this.validate(e,t).then(()=>!0,i=>{if(Dte.default.isError(i))return!1;throw i})}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(i){if(Dte.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,vte.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var t=this.clone();return t.spec.strict=e,t}_isPresent(e){return e!=null}defined(e=Bh.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(t){return t!==void 0}})}required(e=Bh.mixed.required){return this.clone({presence:"required"}).withMutation(t=>t.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(t=>t.OPTIONS.name!=="required"),e}nullable(e=!0){var t=this.clone({nullable:e!==!1});return t}transform(e){var t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(e.length===1?typeof e[0]=="function"?t={test:e[0]}:t=e[0]:e.length===2?t={name:e[0],test:e[1]}:t={name:e[0],message:e[1],test:e[2]},t.message===void 0&&(t.message=Bh.mixed.default),typeof t.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,V0.default)(t),s=t.exclusive||t.name&&i.exclusiveTests[t.name]===!0;if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(i.exclusiveTests[t.name]=!!t.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===t.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,t){!Array.isArray(e)&&typeof e!="string"&&(t=e,e=".");let i=this.clone(),n=(0,D2e.default)(e).map(s=>new x2e.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new v2e.default(n,t)),i}typeError(e){var t=this.clone();return t._typeError=(0,V0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),t}oneOf(e,t=Bh.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,V0.default)({message:t,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,t=Bh.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,V0.default)({message:t,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(){let e=this.clone(),{label:t,meta:i}=e.spec;return{meta:i,label:t,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};X0.default=no;no.prototype.__isYupSchema__=!0;for(let r of["validate","validateSync"])no.prototype[`${r}At`]=function(e,t,i={}){let{parent:n,parentPath:s,schema:o}=(0,P2e.getIn)(this,e,t,i.context);return o[r](n&&n[s],Ps({},i,{parent:n,path:e}))};for(let r of["equals","is"])no.prototype[r]=no.prototype.oneOf;for(let r of["not","nope"])no.prototype[r]=no.prototype.notOneOf;no.prototype.optional=no.prototype.notRequired});var Fte=w(cm=>{"use strict";Object.defineProperty(cm,"__esModule",{value:!0});cm.create=Rte;cm.default=void 0;var k2e=R2e(Xa());function R2e(r){return r&&r.__esModule?r:{default:r}}var aL=k2e.default,F2e=aL;cm.default=F2e;function Rte(){return new aL}Rte.prototype=aL.prototype});var Qh=w(_0=>{"use strict";Object.defineProperty(_0,"__esModule",{value:!0});_0.default=void 0;var N2e=r=>r==null;_0.default=N2e});var Mte=w(gm=>{"use strict";Object.defineProperty(gm,"__esModule",{value:!0});gm.create=Ote;gm.default=void 0;var L2e=Tte(Xa()),Nte=za(),Lte=Tte(Qh());function Tte(r){return r&&r.__esModule?r:{default:r}}function Ote(){return new um}var um=class extends L2e.default{constructor(){super({type:"boolean"}),this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Nte.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(t){return(0,Lte.default)(t)||t===!0}})}isFalse(e=Nte.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(t){return(0,Lte.default)(t)||t===!1}})}};gm.default=um;Ote.prototype=um.prototype});var Hte=w(hm=>{"use strict";Object.defineProperty(hm,"__esModule",{value:!0});hm.create=Ute;hm.default=void 0;var Zo=za(),_a=Kte(Qh()),T2e=Kte(Xa());function Kte(r){return r&&r.__esModule?r:{default:r}}var O2e=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,M2e=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,K2e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,U2e=r=>(0,_a.default)(r)||r===r.trim(),H2e={}.toString();function Ute(){return new fm}var fm=class extends T2e.default{constructor(){super({type:"string"}),this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let t=e!=null&&e.toString?e.toString():e;return t===H2e?e:t})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,t=Zo.string.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(i){return(0,_a.default)(i)||i.length===this.resolve(e)}})}min(e,t=Zo.string.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,_a.default)(i)||i.length>=this.resolve(e)}})}max(e,t=Zo.string.max){return this.test({name:"max",exclusive:!0,message:t,params:{max:e},test(i){return(0,_a.default)(i)||i.length<=this.resolve(e)}})}matches(e,t){let i=!1,n,s;return t&&(typeof t=="object"?{excludeEmptyString:i=!1,message:n,name:s}=t:n=t),this.test({name:s||"matches",message:n||Zo.string.matches,params:{regex:e},test:o=>(0,_a.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Zo.string.email){return this.matches(O2e,{name:"email",message:e,excludeEmptyString:!0})}url(e=Zo.string.url){return this.matches(M2e,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Zo.string.uuid){return this.matches(K2e,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Zo.string.trim){return this.transform(t=>t!=null?t.trim():t).test({message:e,name:"trim",test:U2e})}lowercase(e=Zo.string.lowercase){return this.transform(t=>(0,_a.default)(t)?t:t.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:t=>(0,_a.default)(t)||t===t.toLowerCase()})}uppercase(e=Zo.string.uppercase){return this.transform(t=>(0,_a.default)(t)?t:t.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:t=>(0,_a.default)(t)||t===t.toUpperCase()})}};hm.default=fm;Ute.prototype=fm.prototype});var jte=w(dm=>{"use strict";Object.defineProperty(dm,"__esModule",{value:!0});dm.create=Yte;dm.default=void 0;var qc=za(),Jc=Gte(Qh()),G2e=Gte(Xa());function Gte(r){return r&&r.__esModule?r:{default:r}}var Y2e=r=>r!=+r;function Yte(){return new pm}var pm=class extends G2e.default{constructor(){super({type:"number"}),this.withMutation(()=>{this.transform(function(e){let t=e;if(typeof t=="string"){if(t=t.replace(/\s/g,""),t==="")return NaN;t=+t}return this.isType(t)?t:parseFloat(t)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!Y2e(e)}min(e,t=qc.number.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Jc.default)(i)||i>=this.resolve(e)}})}max(e,t=qc.number.max){return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Jc.default)(i)||i<=this.resolve(e)}})}lessThan(e,t=qc.number.lessThan){return this.test({message:t,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Jc.default)(i)||ithis.resolve(e)}})}positive(e=qc.number.positive){return this.moreThan(0,e)}negative(e=qc.number.negative){return this.lessThan(0,e)}integer(e=qc.number.integer){return this.test({name:"integer",message:e,test:t=>(0,Jc.default)(t)||Number.isInteger(t)})}truncate(){return this.transform(e=>(0,Jc.default)(e)?e:e|0)}round(e){var t,i=["ceil","floor","round","trunc"];if(e=((t=e)==null?void 0:t.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Jc.default)(n)?n:Math[e](n))}};dm.default=pm;Yte.prototype=pm.prototype});var qte=w(AL=>{"use strict";Object.defineProperty(AL,"__esModule",{value:!0});AL.default=q2e;var j2e=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function q2e(r){var e=[1,4,5,6,7,10,11],t=0,i,n;if(n=j2e.exec(r)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(t=n[10]*60+n[11],n[9]==="+"&&(t=0-t)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+t,n[6],n[7]))}else i=Date.parse?Date.parse(r):NaN;return i}});var zte=w(Cm=>{"use strict";Object.defineProperty(Cm,"__esModule",{value:!0});Cm.create=cL;Cm.default=void 0;var J2e=Z0(qte()),Jte=za(),Wte=Z0(Qh()),W2e=Z0(jc()),z2e=Z0(Xa());function Z0(r){return r&&r.__esModule?r:{default:r}}var lL=new Date(""),V2e=r=>Object.prototype.toString.call(r)==="[object Date]";function cL(){return new bh}var bh=class extends z2e.default{constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,J2e.default)(e),isNaN(e)?lL:new Date(e))})})}_typeCheck(e){return V2e(e)&&!isNaN(e.getTime())}prepareParam(e,t){let i;if(W2e.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${t}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,t=Jte.date.min){let i=this.prepareParam(e,"min");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Wte.default)(n)||n>=this.resolve(i)}})}max(e,t=Jte.date.max){var i=this.prepareParam(e,"max");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Wte.default)(n)||n<=this.resolve(i)}})}};Cm.default=bh;bh.INVALID_DATE=lL;cL.prototype=bh.prototype;cL.INVALID_DATE=lL});var Xte=w((qct,Vte)=>{function X2e(r,e,t,i){var n=-1,s=r==null?0:r.length;for(i&&s&&(t=r[++n]);++n{function _2e(r){return function(e){return r==null?void 0:r[e]}}_te.exports=_2e});var ere=w((Wct,$te)=>{var Z2e=Zte(),$2e={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},eHe=Z2e($2e);$te.exports=eHe});var rre=w((zct,tre)=>{var tHe=ere(),rHe=Kf(),iHe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,nHe="\\u0300-\\u036f",sHe="\\ufe20-\\ufe2f",oHe="\\u20d0-\\u20ff",aHe=nHe+sHe+oHe,AHe="["+aHe+"]",lHe=RegExp(AHe,"g");function cHe(r){return r=rHe(r),r&&r.replace(iHe,tHe).replace(lHe,"")}tre.exports=cHe});var nre=w((Vct,ire)=>{var uHe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function gHe(r){return r.match(uHe)||[]}ire.exports=gHe});var ore=w((Xct,sre)=>{var fHe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function hHe(r){return fHe.test(r)}sre.exports=hHe});var bre=w((_ct,Qre)=>{var ure="\\ud800-\\udfff",pHe="\\u0300-\\u036f",dHe="\\ufe20-\\ufe2f",CHe="\\u20d0-\\u20ff",mHe=pHe+dHe+CHe,gre="\\u2700-\\u27bf",fre="a-z\\xdf-\\xf6\\xf8-\\xff",EHe="\\xac\\xb1\\xd7\\xf7",IHe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",yHe="\\u2000-\\u206f",wHe=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",hre="A-Z\\xc0-\\xd6\\xd8-\\xde",BHe="\\ufe0e\\ufe0f",pre=EHe+IHe+yHe+wHe,dre="['\u2019]",are="["+pre+"]",QHe="["+mHe+"]",Cre="\\d+",bHe="["+gre+"]",mre="["+fre+"]",Ere="[^"+ure+pre+Cre+gre+fre+hre+"]",SHe="\\ud83c[\\udffb-\\udfff]",vHe="(?:"+QHe+"|"+SHe+")",xHe="[^"+ure+"]",Ire="(?:\\ud83c[\\udde6-\\uddff]){2}",yre="[\\ud800-\\udbff][\\udc00-\\udfff]",Sh="["+hre+"]",PHe="\\u200d",Are="(?:"+mre+"|"+Ere+")",DHe="(?:"+Sh+"|"+Ere+")",lre="(?:"+dre+"(?:d|ll|m|re|s|t|ve))?",cre="(?:"+dre+"(?:D|LL|M|RE|S|T|VE))?",wre=vHe+"?",Bre="["+BHe+"]?",kHe="(?:"+PHe+"(?:"+[xHe,Ire,yre].join("|")+")"+Bre+wre+")*",RHe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",FHe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",NHe=Bre+wre+kHe,LHe="(?:"+[bHe,Ire,yre].join("|")+")"+NHe,THe=RegExp([Sh+"?"+mre+"+"+lre+"(?="+[are,Sh,"$"].join("|")+")",DHe+"+"+cre+"(?="+[are,Sh+Are,"$"].join("|")+")",Sh+"?"+Are+"+"+lre,Sh+"+"+cre,FHe,RHe,Cre,LHe].join("|"),"g");function OHe(r){return r.match(THe)||[]}Qre.exports=OHe});var vre=w((Zct,Sre)=>{var MHe=nre(),KHe=ore(),UHe=Kf(),HHe=bre();function GHe(r,e,t){return r=UHe(r),e=t?void 0:e,e===void 0?KHe(r)?HHe(r):MHe(r):r.match(e)||[]}Sre.exports=GHe});var uL=w(($ct,xre)=>{var YHe=Xte(),jHe=rre(),qHe=vre(),JHe="['\u2019]",WHe=RegExp(JHe,"g");function zHe(r){return function(e){return YHe(qHe(jHe(e).replace(WHe,"")),r,"")}}xre.exports=zHe});var Dre=w((eut,Pre)=>{var VHe=uL(),XHe=VHe(function(r,e,t){return r+(t?"_":"")+e.toLowerCase()});Pre.exports=XHe});var Rre=w((tut,kre)=>{var _He=dB(),ZHe=uL(),$He=ZHe(function(r,e,t){return e=e.toLowerCase(),r+(t?_He(e):e)});kre.exports=$He});var Nre=w((rut,Fre)=>{var eGe=gh(),tGe=TN(),rGe=ZN();function iGe(r,e){var t={};return e=rGe(e,3),tGe(r,function(i,n,s){eGe(t,e(i,n,s),i)}),t}Fre.exports=iGe});var Tre=w((iut,gL)=>{gL.exports=function(r){return Lre(nGe(r),r)};gL.exports.array=Lre;function Lre(r,e){var t=r.length,i=new Array(t),n={},s=t,o=sGe(e),a=oGe(r);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(r[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch{f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--t]=c}}}function nGe(r){for(var e=new Set,t=0,i=r.length;t{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});fL.default=gGe;var aGe=$0(_C()),AGe=$0(Tre()),lGe=sm(),cGe=$0(jc()),uGe=$0(dh());function $0(r){return r&&r.__esModule?r:{default:r}}function gGe(r,e=[]){let t=[],i=[];function n(s,o){var a=(0,lGe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||t.push([o,a])}for(let s in r)if((0,aGe.default)(r,s)){let o=r[s];~i.indexOf(s)||i.push(s),cGe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,uGe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return AGe.default.array(i,t).reverse()}});var Kre=w(hL=>{"use strict";Object.defineProperty(hL,"__esModule",{value:!0});hL.default=fGe;function Mre(r,e){let t=1/0;return r.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return t=n,!0}),t}function fGe(r){return(e,t)=>Mre(r,e)-Mre(r,t)}});var Jre=w(Em=>{"use strict";Object.defineProperty(Em,"__esModule",{value:!0});Em.create=qre;Em.default=void 0;var Ure=$o(_C()),Hre=$o(Dre()),hGe=$o(Rre()),pGe=$o(Nre()),dGe=$o($N()),CGe=sm(),Gre=za(),mGe=$o(Ore()),jre=$o(Kre()),EGe=$o(T0()),IGe=$o(Hc()),pL=$o(Xa());function $o(r){return r&&r.__esModule?r:{default:r}}function vh(){return vh=Object.assign||function(r){for(var e=1;eObject.prototype.toString.call(r)==="[object Object]";function yGe(r,e){let t=Object.keys(r.fields);return Object.keys(e).filter(i=>t.indexOf(i)===-1)}var wGe=(0,jre.default)([]),mm=class extends pL.default{constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=wGe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch{i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Yre(e)||typeof e=="function"}_cast(e,t={}){var i;let n=super._cast(e,t);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=t.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=vh({},t,{parent:l,__validating:t.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,Ure.default)(n,g);if(f){let p,C=n[g];c.path=(t.path?`${t.path}.`:"")+g,f=f.resolve({value:C,context:t.context,parent:l});let y="spec"in f?f.spec:void 0,B=y==null?void 0:y.strict;if(y!=null&&y.strip){u=u||g in n;continue}p=!t.__validating||!B?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,t={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=t;o=[{schema:this,value:a},...o],t.__validating=!0,t.originalValue=a,t.from=o,super._validate(e,t,(u,g)=>{if(u){if(!IGe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Yre(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,C)=>{let y=h.indexOf(".")===-1?(t.path?`${t.path}.`:"")+h:`${t.path||""}["${h}"]`,B=this.fields[h];if(B&&"validate"in B){B.validate(g[h],vh({},t,{path:y,from:o,strict:!0,parent:g,originalValue:a[h]}),C);return}C(null)});(0,EGe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:t.path},i)})}clone(e){let t=super.clone(e);return t.fields=vh({},this.fields),t._nodes=this._nodes,t._excludedEdges=this._excludedEdges,t._sortErrors=this._sortErrors,t}concat(e){let t=super.concat(e),i=t.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof pL.default&&s instanceof pL.default&&(i[n]=s.concat(o))}return t.withMutation(()=>t.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(t=>{let i=this.fields[t];e[t]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,t=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,jre.default)(Object.keys(n)),t.length){Array.isArray(t[0])||(t=[t]);let s=t.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,mGe.default)(n,i._excludedEdges),i}pick(e){let t={};for(let i of e)this.fields[i]&&(t[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(t)))}omit(e){let t=this.clone(),i=t.fields;t.fields={};for(let n of e)delete i[n];return t.withMutation(()=>t.shape(i))}from(e,t,i){let n=(0,CGe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,Ure.default)(s,e)&&(o=vh({},s),i||delete o[e],o[t]=n(s)),o})}noUnknown(e=!0,t=Gre.object.noUnknown){typeof e=="string"&&(t=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:t,test(n){if(n==null)return!0;let s=yGe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,t=Gre.object.noUnknown){return this.noUnknown(!e,t)}transformKeys(e){return this.transform(t=>t&&(0,pGe.default)(t,(i,n)=>e(n)))}camelCase(){return this.transformKeys(hGe.default)}snakeCase(){return this.transformKeys(Hre.default)}constantCase(){return this.transformKeys(e=>(0,Hre.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,dGe.default)(this.fields,t=>t.describe()),e}};Em.default=mm;function qre(r){return new mm(r)}qre.prototype=mm.prototype});var zre=w(ym=>{"use strict";Object.defineProperty(ym,"__esModule",{value:!0});ym.create=Wre;ym.default=void 0;var dL=xh(Qh()),BGe=xh(dh()),QGe=xh(XC()),CL=za(),bGe=xh(T0()),SGe=xh(Hc()),vGe=xh(Xa());function xh(r){return r&&r.__esModule?r:{default:r}}function eQ(){return eQ=Object.assign||function(r){for(var e=1;e{this.transform(function(t){if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return this.isType(t)?t:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,t){let i=super._cast(e,t);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,eQ({},t,{path:`${t.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,t={},i){var n,s;let o=[],a=t.sync,l=t.path,c=this.innerType,u=(n=t.abortEarly)!=null?n:this.spec.abortEarly,g=(s=t.recursive)!=null?s:this.spec.recursive,f=t.originalValue!=null?t.originalValue:e;super._validate(e,t,(h,p)=>{if(h){if(!SGe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let C=new Array(p.length);for(let y=0;yc.validate(B,D,H)}(0,bGe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:C},i)})}clone(e){let t=super.clone(e);return t.innerType=this.innerType,t}concat(e){let t=super.concat(e);return t.innerType=this.innerType,e.innerType&&(t.innerType=t.innerType?t.innerType.concat(e.innerType):e.innerType),t}of(e){let t=this.clone();if(!(0,BGe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,QGe.default)(e));return t.innerType=e,t}length(e,t=CL.array.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(i){return(0,dL.default)(i)||i.length===this.resolve(e)}})}min(e,t){return t=t||CL.array.min,this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,dL.default)(i)||i.length>=this.resolve(e)}})}max(e,t){return t=t||CL.array.max,this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(i){return(0,dL.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,t)=>this._typeCheck(e)?e:t==null?[]:[].concat(t))}compact(e){let t=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(t):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};ym.default=Im;Wre.prototype=Im.prototype});var Vre=w(wm=>{"use strict";Object.defineProperty(wm,"__esModule",{value:!0});wm.create=DGe;wm.default=void 0;var xGe=PGe(dh());function PGe(r){return r&&r.__esModule?r:{default:r}}function DGe(r){return new tQ(r)}var tQ=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(t,i={})=>{let n=this.builder(t,i);if(!(0,xGe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,t){return this._resolve(e,t).cast(e,t)}validate(e,t,i){return this._resolve(e,t).validate(e,t,i)}validateSync(e,t){return this._resolve(e,t).validateSync(e,t)}validateAt(e,t,i){return this._resolve(t,i).validateAt(e,t,i)}validateSyncAt(e,t,i){return this._resolve(t,i).validateSyncAt(e,t,i)}describe(){return null}isValid(e,t){return this._resolve(e,t).isValid(e,t)}isValidSync(e,t){return this._resolve(e,t).isValidSync(e,t)}},kGe=tQ;wm.default=kGe});var Xre=w(mL=>{"use strict";Object.defineProperty(mL,"__esModule",{value:!0});mL.default=NGe;var RGe=FGe(za());function FGe(r){return r&&r.__esModule?r:{default:r}}function NGe(r){Object.keys(r).forEach(e=>{Object.keys(r[e]).forEach(t=>{RGe.default[e][t]=r[e][t]})})}});var IL=w(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.addMethod=HGe;Object.defineProperty(yr,"MixedSchema",{enumerable:!0,get:function(){return _re.default}});Object.defineProperty(yr,"mixed",{enumerable:!0,get:function(){return _re.create}});Object.defineProperty(yr,"BooleanSchema",{enumerable:!0,get:function(){return EL.default}});Object.defineProperty(yr,"bool",{enumerable:!0,get:function(){return EL.create}});Object.defineProperty(yr,"boolean",{enumerable:!0,get:function(){return EL.create}});Object.defineProperty(yr,"StringSchema",{enumerable:!0,get:function(){return Zre.default}});Object.defineProperty(yr,"string",{enumerable:!0,get:function(){return Zre.create}});Object.defineProperty(yr,"NumberSchema",{enumerable:!0,get:function(){return $re.default}});Object.defineProperty(yr,"number",{enumerable:!0,get:function(){return $re.create}});Object.defineProperty(yr,"DateSchema",{enumerable:!0,get:function(){return eie.default}});Object.defineProperty(yr,"date",{enumerable:!0,get:function(){return eie.create}});Object.defineProperty(yr,"ObjectSchema",{enumerable:!0,get:function(){return tie.default}});Object.defineProperty(yr,"object",{enumerable:!0,get:function(){return tie.create}});Object.defineProperty(yr,"ArraySchema",{enumerable:!0,get:function(){return rie.default}});Object.defineProperty(yr,"array",{enumerable:!0,get:function(){return rie.create}});Object.defineProperty(yr,"ref",{enumerable:!0,get:function(){return LGe.create}});Object.defineProperty(yr,"lazy",{enumerable:!0,get:function(){return TGe.create}});Object.defineProperty(yr,"ValidationError",{enumerable:!0,get:function(){return OGe.default}});Object.defineProperty(yr,"reach",{enumerable:!0,get:function(){return MGe.default}});Object.defineProperty(yr,"isSchema",{enumerable:!0,get:function(){return iie.default}});Object.defineProperty(yr,"setLocale",{enumerable:!0,get:function(){return KGe.default}});Object.defineProperty(yr,"BaseSchema",{enumerable:!0,get:function(){return UGe.default}});var _re=Wc(Fte()),EL=Wc(Mte()),Zre=Wc(Hte()),$re=Wc(jte()),eie=Wc(zte()),tie=Wc(Jre()),rie=Wc(zre()),LGe=jc(),TGe=Vre(),OGe=Bm(Hc()),MGe=Bm(oL()),iie=Bm(dh()),KGe=Bm(Xre()),UGe=Bm(Xa());function Bm(r){return r&&r.__esModule?r:{default:r}}function nie(){if(typeof WeakMap!="function")return null;var r=new WeakMap;return nie=function(){return r},r}function Wc(r){if(r&&r.__esModule)return r;if(r===null||typeof r!="object"&&typeof r!="function")return{default:r};var e=nie();if(e&&e.has(r))return e.get(r);var t={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)){var s=i?Object.getOwnPropertyDescriptor(r,n):null;s&&(s.get||s.set)?Object.defineProperty(t,n,s):t[n]=r[n]}return t.default=r,e&&e.set(r,t),t}function HGe(r,e,t){if(!r||!(0,iie.default)(r.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof t!="function")throw new TypeError("Method function must be provided");r.prototype[e]=t}});var lie=w((But,bm)=>{"use strict";var jGe=process.env.TERM_PROGRAM==="Hyper",qGe=process.platform==="win32",oie=process.platform==="linux",yL={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},aie=Object.assign({},yL,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Aie=Object.assign({},yL,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:oie?"\u25B8":"\u276F",pointerSmall:oie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});bm.exports=qGe&&!jGe?aie:Aie;Reflect.defineProperty(bm.exports,"common",{enumerable:!1,value:yL});Reflect.defineProperty(bm.exports,"windows",{enumerable:!1,value:aie});Reflect.defineProperty(bm.exports,"other",{enumerable:!1,value:Aie})});var so=w((Qut,wL)=>{"use strict";var JGe=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),WGe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,cie=()=>{let r={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(r.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`\x1B[${s.codes[0]}m`,a=s.close=`\x1B[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},t=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(r.enabled===!1)return s;if(r.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=t(r.styles[o[c]],a,l);return a},n=(s,o,a)=>{r.styles[s]=e({name:s,codes:o}),(r.keys[a]||(r.keys[a]=[])).push(s),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(c){r.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,r),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),r.ansiRegex=WGe,r.hasColor=r.hasAnsi=s=>(r.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&r.ansiRegex.test(s)),r.alias=(s,o)=>{let a=typeof o=="string"?r[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),r.styles[s]=a,a.stack=[s]),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(l){r.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,r),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},r.theme=s=>{if(!JGe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))r.alias(o,s[o]);return r},r.alias("unstyle",s=>typeof s=="string"&&s!==""?(r.ansiRegex.lastIndex=0,s.replace(r.ansiRegex,"")):""),r.alias("noop",s=>s),r.none=r.clear=r.noop,r.stripColor=r.unstyle,r.symbols=lie(),r.define=n,r};wL.exports=cie();wL.exports.create=cie});var Gi=w(Lt=>{"use strict";var zGe=Object.prototype.toString,Ds=so(),uie=!1,BL=[],gie={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};Lt.longest=(r,e)=>r.reduce((t,i)=>Math.max(t,e?i[e].length:i.length),0);Lt.hasColor=r=>!!r&&Ds.hasColor(r);var iQ=Lt.isObject=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);Lt.nativeType=r=>zGe.call(r).slice(8,-1).toLowerCase().replace(/\s/g,"");Lt.isAsyncFn=r=>Lt.nativeType(r)==="asyncfunction";Lt.isPrimitive=r=>r!=null&&typeof r!="object"&&typeof r!="function";Lt.resolve=(r,e,...t)=>typeof e=="function"?e.call(r,...t):e;Lt.scrollDown=(r=[])=>[...r.slice(1),r[0]];Lt.scrollUp=(r=[])=>[r.pop(),...r];Lt.reorder=(r=[])=>{let e=r.slice();return e.sort((t,i)=>t.index>i.index?1:t.index{let i=r.length,n=t===i?0:t<0?i-1:t,s=r[e];r[e]=r[n],r[n]=s};Lt.width=(r,e=80)=>{let t=r&&r.columns?r.columns:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[0]),process.platform==="win32"?t-1:t};Lt.height=(r,e=20)=>{let t=r&&r.rows?r.rows:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[1]),t};Lt.wordWrap=(r,e={})=>{if(!r)return r;typeof e=="number"&&(e={width:e});let{indent:t="",newline:i=` -`+t,width:n=80}=e;n-=((i+t).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=r.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),t+c.join(i)};Lt.unmute=r=>{let e=r.stack.find(i=>Ds.keys.color.includes(i));return e?Ds[e]:r.stack.find(i=>i.slice(2)==="bg")?Ds[e.slice(2)]:i=>i};Lt.pascal=r=>r?r[0].toUpperCase()+r.slice(1):"";Lt.inverse=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ds.keys.color.includes(i));if(e){let i=Ds["bg"+Lt.pascal(e)];return i?i.black:r}let t=r.stack.find(i=>i.slice(0,2)==="bg");return t?Ds[t.slice(2).toLowerCase()]||r:Ds.none};Lt.complement=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ds.keys.color.includes(i)),t=r.stack.find(i=>i.slice(0,2)==="bg");if(e&&!t)return Ds[gie[e]||e];if(t){let i=t.slice(2).toLowerCase(),n=gie[i];return n&&Ds["bg"+Lt.pascal(n)]||r}return Ds.none};Lt.meridiem=r=>{let e=r.getHours(),t=r.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=t<10?"0"+t:t;return n+":"+s+" "+i};Lt.set=(r={},e="",t)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:t;return!Lt.isObject(a)&&s{let i=r[e]==null?e.split(".").reduce((n,s)=>n&&n[s],r):r[e];return i==null?t:i};Lt.mixin=(r,e)=>{if(!iQ(r))return e;if(!iQ(e))return r;for(let t of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,t);if(i.hasOwnProperty("value"))if(r.hasOwnProperty(t)&&iQ(i.value)){let n=Object.getOwnPropertyDescriptor(r,t);iQ(n.value)?r[t]=Lt.merge({},r[t],e[t]):Reflect.defineProperty(r,t,i)}else Reflect.defineProperty(r,t,i);else Reflect.defineProperty(r,t,i)}return r};Lt.merge=(...r)=>{let e={};for(let t of r)Lt.mixin(e,t);return e};Lt.mixinEmitter=(r,e)=>{let t=e.constructor.prototype;for(let i of Object.keys(t)){let n=t[i];typeof n=="function"?Lt.define(r,i,n.bind(e)):Lt.define(r,i,n)}};Lt.onExit=r=>{let e=(t,i)=>{uie||(uie=!0,BL.forEach(n=>n()),t===!0&&process.exit(128+i))};BL.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),BL.push(r)};Lt.define=(r,e,t)=>{Reflect.defineProperty(r,e,{value:t})};Lt.defineExport=(r,e,t)=>{let i;Reflect.defineProperty(r,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():t()}})}});var fie=w(Dh=>{"use strict";Dh.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};Dh.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};Dh.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};Dh.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};Dh.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var die=w((vut,pie)=>{"use strict";var hie=J("readline"),VGe=fie(),XGe=/^(?:\x1b)([a-zA-Z0-9])$/,_Ge=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,ZGe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function $Ge(r){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(r)}function eYe(r){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(r)}var nQ=(r="",e={})=>{let t,i={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:r,raw:r,...e};if(Buffer.isBuffer(r)?r[0]>127&&r[1]===void 0?(r[0]-=128,r="\x1B"+String(r)):r=String(r):r!==void 0&&typeof r!="string"?r=String(r):r||(r=i.sequence||""),i.sequence=i.sequence||r||i.name,r==="\r")i.raw=void 0,i.name="return";else if(r===` -`)i.name="enter";else if(r===" ")i.name="tab";else if(r==="\b"||r==="\x7F"||r==="\x1B\x7F"||r==="\x1B\b")i.name="backspace",i.meta=r.charAt(0)==="\x1B";else if(r==="\x1B"||r==="\x1B\x1B")i.name="escape",i.meta=r.length===2;else if(r===" "||r==="\x1B ")i.name="space",i.meta=r.length===2;else if(r<="")i.name=String.fromCharCode(r.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(r.length===1&&r>="0"&&r<="9")i.name="number";else if(r.length===1&&r>="a"&&r<="z")i.name=r;else if(r.length===1&&r>="A"&&r<="Z")i.name=r.toLowerCase(),i.shift=!0;else if(t=XGe.exec(r))i.meta=!0,i.shift=/^[A-Z]$/.test(t[1]);else if(t=_Ge.exec(r)){let n=[...r];n[0]==="\x1B"&&n[1]==="\x1B"&&(i.option=!0);let s=[t[1],t[2],t[4],t[6]].filter(Boolean).join(""),o=(t[3]||t[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=ZGe[s],i.shift=$Ge(s)||i.shift,i.ctrl=eYe(s)||i.ctrl}return i};nQ.listen=(r={},e)=>{let{stdin:t}=r;if(!t||t!==process.stdin&&!t.isTTY)throw new Error("Invalid stream passed");let i=hie.createInterface({terminal:!0,input:t});hie.emitKeypressEvents(t,i);let n=(a,l)=>e(a,nQ(a,l),i),s=t.isRaw;return t.isTTY&&t.setRawMode(!0),t.on("keypress",n),i.resume(),()=>{t.isTTY&&t.setRawMode(s),t.removeListener("keypress",n),i.pause(),i.close()}};nQ.action=(r,e,t)=>{let i={...VGe,...t};return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};pie.exports=nQ});var mie=w((xut,Cie)=>{"use strict";Cie.exports=r=>{r.timers=r.timers||{};let e=r.options.timers;if(!!e)for(let t of Object.keys(e)){let i=e[t];typeof i=="number"&&(i={interval:i}),tYe(r,t,i)}};function tYe(r,e,t={}){let i=r.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=t.interval||120;i.frames=t.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,r.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),r.once("close",()=>i.stop()),i.stop}});var Iie=w((Put,Eie)=>{"use strict";var{define:rYe,width:iYe}=Gi(),QL=class{constructor(e){let t=e.options;rYe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=iYe(t.stdout||process.stdout),Object.assign(this,t),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let t=this._color||e[this.status];return typeof t=="function"?t:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Eie.exports=QL});var wie=w((Dut,yie)=>{"use strict";var bL=Gi(),Pi=so(),SL={default:Pi.noop,noop:Pi.noop,set inverse(r){this._inverse=r},get inverse(){return this._inverse||bL.inverse(this.primary)},set complement(r){this._complement=r},get complement(){return this._complement||bL.complement(this.primary)},primary:Pi.cyan,success:Pi.green,danger:Pi.magenta,strong:Pi.bold,warning:Pi.yellow,muted:Pi.dim,disabled:Pi.gray,dark:Pi.dim.gray,underline:Pi.underline,set info(r){this._info=r},get info(){return this._info||this.primary},set em(r){this._em=r},get em(){return this._em||this.primary.underline},set heading(r){this._heading=r},get heading(){return this._heading||this.muted.underline},set pending(r){this._pending=r},get pending(){return this._pending||this.primary},set submitted(r){this._submitted=r},get submitted(){return this._submitted||this.success},set cancelled(r){this._cancelled=r},get cancelled(){return this._cancelled||this.danger},set typing(r){this._typing=r},get typing(){return this._typing||this.dim},set placeholder(r){this._placeholder=r},get placeholder(){return this._placeholder||this.primary.dim},set highlight(r){this._highlight=r},get highlight(){return this._highlight||this.inverse}};SL.merge=(r={})=>{r.styles&&typeof r.styles.enabled=="boolean"&&(Pi.enabled=r.styles.enabled),r.styles&&typeof r.styles.visible=="boolean"&&(Pi.visible=r.styles.visible);let e=bL.merge({},SL,r.styles);delete e.merge;for(let t of Object.keys(Pi))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Pi[t]});for(let t of Object.keys(Pi.styles))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Pi[t]});return e};yie.exports=SL});var Qie=w((kut,Bie)=>{"use strict";var vL=process.platform==="win32",Za=so(),nYe=Gi(),xL={...Za.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Za.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Za.symbols.question,submitted:Za.symbols.check,cancelled:Za.symbols.cross},separator:{pending:Za.symbols.pointerSmall,submitted:Za.symbols.middot,cancelled:Za.symbols.middot},radio:{off:vL?"( )":"\u25EF",on:vL?"(*)":"\u25C9",disabled:vL?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};xL.merge=r=>{let e=nYe.merge({},Za.symbols,xL,r.symbols);return delete e.merge,e};Bie.exports=xL});var Sie=w((Rut,bie)=>{"use strict";var sYe=wie(),oYe=Qie(),aYe=Gi();bie.exports=r=>{r.options=aYe.merge({},r.options.theme,r.options),r.symbols=oYe.merge(r.options),r.styles=sYe.merge(r.options)}});var kie=w((Pie,Die)=>{"use strict";var vie=process.env.TERM_PROGRAM==="Apple_Terminal",AYe=so(),PL=Gi(),oo=Die.exports=Pie,Dr="\x1B[",xie="\x07",DL=!1,sl=oo.code={bell:xie,beep:xie,beginning:`${Dr}G`,down:`${Dr}J`,esc:Dr,getPosition:`${Dr}6n`,hide:`${Dr}?25l`,line:`${Dr}2K`,lineEnd:`${Dr}K`,lineStart:`${Dr}1K`,restorePosition:Dr+(vie?"8":"u"),savePosition:Dr+(vie?"7":"s"),screen:`${Dr}2J`,show:`${Dr}?25h`,up:`${Dr}1J`},zc=oo.cursor={get hidden(){return DL},hide(){return DL=!0,sl.hide},show(){return DL=!1,sl.show},forward:(r=1)=>`${Dr}${r}C`,backward:(r=1)=>`${Dr}${r}D`,nextLine:(r=1)=>`${Dr}E`.repeat(r),prevLine:(r=1)=>`${Dr}F`.repeat(r),up:(r=1)=>r?`${Dr}${r}A`:"",down:(r=1)=>r?`${Dr}${r}B`:"",right:(r=1)=>r?`${Dr}${r}C`:"",left:(r=1)=>r?`${Dr}${r}D`:"",to(r,e){return e?`${Dr}${e+1};${r+1}H`:`${Dr}${r+1}G`},move(r=0,e=0){let t="";return t+=r<0?zc.left(-r):r>0?zc.right(r):"",t+=e<0?zc.up(-e):e>0?zc.down(e):"",t},restore(r={}){let{after:e,cursor:t,initial:i,input:n,prompt:s,size:o,value:a}=r;if(i=PL.isPrimitive(i)?String(i):"",n=PL.isPrimitive(n)?String(n):"",a=PL.isPrimitive(a)?String(a):"",o){let l=oo.cursor.up(o)+oo.cursor.to(s.length),c=n.length-t;return c>0&&(l+=oo.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+t;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),oo.cursor.move(l)}}},kL=oo.erase={screen:sl.screen,up:sl.up,down:sl.down,line:sl.line,lineEnd:sl.lineEnd,lineStart:sl.lineStart,lines(r){let e="";for(let t=0;t{if(!e)return kL.line+zc.to(0);let t=s=>[...AYe.unstyle(s)].length,i=r.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(t(s)-1,0)/e);return(kL.line+zc.prevLine()).repeat(n-1)+kL.line+zc.to(0)}});var kh=w((Fut,Fie)=>{"use strict";var lYe=J("events"),Rie=so(),RL=die(),cYe=mie(),uYe=Iie(),gYe=Sie(),xn=Gi(),Vc=kie(),Sm=class extends lYe{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,gYe(this),cYe(this),this.state=new uYe(this),this.initial=[e.initial,e.default].find(t=>t!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=hYe(this.options.margin),this.setMaxListeners(0),fYe(this)}async keypress(e,t={}){this.keypressed=!0;let i=RL.action(e,RL(e,t),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Vc.code.beep)}cursorHide(){this.stdout.write(Vc.cursor.hide()),xn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Vc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let t=this.state.buffer;this.state.buffer="",!(!t&&!e||this.options.show===!1)&&this.stdout.write(Vc.cursor.down(e)+Vc.clear(t,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:t,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:t,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Vc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:t,prompt:i}=this.state;i=Rie.unstyle(i);let n=Rie.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` +`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,t){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,t={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=t,u=e;l||(u=this._cast(u,Fs({assert:!1},t)));let g={value:u,path:s,options:t,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,pre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,pre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,t,i){let n=this.resolve(Fs({},t,{value:e}));return typeof i=="function"?n._validate(e,t,i):new Promise((s,o)=>n._validate(e,t,(a,l)=>{a?o(a):s(l)}))}validateSync(e,t){let i=this.resolve(Fs({},t,{value:e})),n;return i._validate(e,Fs({},t,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,t){return this.validate(e,t).then(()=>!0,i=>{if(Cre.default.isError(i))return!1;throw i})}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(i){if(Cre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,hre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var t=this.clone();return t.spec.strict=e,t}_isPresent(e){return e!=null}defined(e=Lh.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(t){return t!==void 0}})}required(e=Lh.mixed.required){return this.clone({presence:"required"}).withMutation(t=>t.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(t=>t.OPTIONS.name!=="required"),e}nullable(e=!0){var t=this.clone({nullable:e!==!1});return t}transform(e){var t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(e.length===1?typeof e[0]=="function"?t={test:e[0]}:t=e[0]:e.length===2?t={name:e[0],test:e[1]}:t={name:e[0],message:e[1],test:e[2]},t.message===void 0&&(t.message=Lh.mixed.default),typeof t.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,dQ.default)(t),s=t.exclusive||t.name&&i.exclusiveTests[t.name]===!0;if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(i.exclusiveTests[t.name]=!!t.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===t.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,t){!Array.isArray(e)&&typeof e!="string"&&(t=e,e=".");let i=this.clone(),n=(0,OHe.default)(e).map(s=>new LHe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new NHe.default(n,t)),i}typeError(e){var t=this.clone();return t._typeError=(0,dQ.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),t}oneOf(e,t=Lh.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,dQ.default)({message:t,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,t=Lh.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,dQ.default)({message:t,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(){let e=this.clone(),{label:t,meta:i}=e.spec;return{meta:i,label:t,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};CQ.default=co;co.prototype.__isYupSchema__=!0;for(let r of["validate","validateSync"])co.prototype[`${r}At`]=function(e,t,i={}){let{parent:n,parentPath:s,schema:o}=(0,THe.getIn)(this,e,t,i.context);return o[r](n&&n[s],Fs({},i,{parent:n,path:e}))};for(let r of["equals","is"])co.prototype[r]=co.prototype.oneOf;for(let r of["not","nope"])co.prototype[r]=co.prototype.notOneOf;co.prototype.optional=co.prototype.notRequired});var Ire=w(Im=>{"use strict";Object.defineProperty(Im,"__esModule",{value:!0});Im.create=Ere;Im.default=void 0;var MHe=UHe(sA());function UHe(r){return r&&r.__esModule?r:{default:r}}var NL=MHe.default,KHe=NL;Im.default=KHe;function Ere(){return new NL}Ere.prototype=NL.prototype});var Th=w(mQ=>{"use strict";Object.defineProperty(mQ,"__esModule",{value:!0});mQ.default=void 0;var HHe=r=>r==null;mQ.default=HHe});var bre=w(wm=>{"use strict";Object.defineProperty(wm,"__esModule",{value:!0});wm.create=Qre;wm.default=void 0;var GHe=Bre(sA()),yre=iA(),wre=Bre(Th());function Bre(r){return r&&r.__esModule?r:{default:r}}function Qre(){return new ym}var ym=class extends GHe.default{constructor(){super({type:"boolean"}),this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=yre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(t){return(0,wre.default)(t)||t===!0}})}isFalse(e=yre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(t){return(0,wre.default)(t)||t===!1}})}};wm.default=ym;Qre.prototype=ym.prototype});var xre=w(Qm=>{"use strict";Object.defineProperty(Qm,"__esModule",{value:!0});Qm.create=vre;Qm.default=void 0;var ia=iA(),oA=Sre(Th()),YHe=Sre(sA());function Sre(r){return r&&r.__esModule?r:{default:r}}var jHe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,qHe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,JHe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,WHe=r=>(0,oA.default)(r)||r===r.trim(),zHe={}.toString();function vre(){return new Bm}var Bm=class extends YHe.default{constructor(){super({type:"string"}),this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let t=e!=null&&e.toString?e.toString():e;return t===zHe?e:t})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,t=ia.string.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(i){return(0,oA.default)(i)||i.length===this.resolve(e)}})}min(e,t=ia.string.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,oA.default)(i)||i.length>=this.resolve(e)}})}max(e,t=ia.string.max){return this.test({name:"max",exclusive:!0,message:t,params:{max:e},test(i){return(0,oA.default)(i)||i.length<=this.resolve(e)}})}matches(e,t){let i=!1,n,s;return t&&(typeof t=="object"?{excludeEmptyString:i=!1,message:n,name:s}=t:n=t),this.test({name:s||"matches",message:n||ia.string.matches,params:{regex:e},test:o=>(0,oA.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=ia.string.email){return this.matches(jHe,{name:"email",message:e,excludeEmptyString:!0})}url(e=ia.string.url){return this.matches(qHe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=ia.string.uuid){return this.matches(JHe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=ia.string.trim){return this.transform(t=>t!=null?t.trim():t).test({message:e,name:"trim",test:WHe})}lowercase(e=ia.string.lowercase){return this.transform(t=>(0,oA.default)(t)?t:t.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:t=>(0,oA.default)(t)||t===t.toLowerCase()})}uppercase(e=ia.string.uppercase){return this.transform(t=>(0,oA.default)(t)?t:t.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:t=>(0,oA.default)(t)||t===t.toUpperCase()})}};Qm.default=Bm;vre.prototype=Bm.prototype});var kre=w(Sm=>{"use strict";Object.defineProperty(Sm,"__esModule",{value:!0});Sm.create=Dre;Sm.default=void 0;var ru=iA(),iu=Pre(Th()),VHe=Pre(sA());function Pre(r){return r&&r.__esModule?r:{default:r}}var XHe=r=>r!=+r;function Dre(){return new bm}var bm=class extends VHe.default{constructor(){super({type:"number"}),this.withMutation(()=>{this.transform(function(e){let t=e;if(typeof t=="string"){if(t=t.replace(/\s/g,""),t==="")return NaN;t=+t}return this.isType(t)?t:parseFloat(t)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!XHe(e)}min(e,t=ru.number.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,iu.default)(i)||i>=this.resolve(e)}})}max(e,t=ru.number.max){return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(i){return(0,iu.default)(i)||i<=this.resolve(e)}})}lessThan(e,t=ru.number.lessThan){return this.test({message:t,name:"max",exclusive:!0,params:{less:e},test(i){return(0,iu.default)(i)||ithis.resolve(e)}})}positive(e=ru.number.positive){return this.moreThan(0,e)}negative(e=ru.number.negative){return this.lessThan(0,e)}integer(e=ru.number.integer){return this.test({name:"integer",message:e,test:t=>(0,iu.default)(t)||Number.isInteger(t)})}truncate(){return this.transform(e=>(0,iu.default)(e)?e:e|0)}round(e){var t,i=["ceil","floor","round","trunc"];if(e=((t=e)==null?void 0:t.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,iu.default)(n)?n:Math[e](n))}};Sm.default=bm;Dre.prototype=bm.prototype});var Rre=w(LL=>{"use strict";Object.defineProperty(LL,"__esModule",{value:!0});LL.default=_He;var ZHe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function _He(r){var e=[1,4,5,6,7,10,11],t=0,i,n;if(n=ZHe.exec(r)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(t=n[10]*60+n[11],n[9]==="+"&&(t=0-t)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+t,n[6],n[7]))}else i=Date.parse?Date.parse(r):NaN;return i}});var Lre=w(vm=>{"use strict";Object.defineProperty(vm,"__esModule",{value:!0});vm.create=OL;vm.default=void 0;var $He=EQ(Rre()),Fre=iA(),Nre=EQ(Th()),eGe=EQ(tu()),tGe=EQ(sA());function EQ(r){return r&&r.__esModule?r:{default:r}}var TL=new Date(""),rGe=r=>Object.prototype.toString.call(r)==="[object Date]";function OL(){return new Oh}var Oh=class extends tGe.default{constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,$He.default)(e),isNaN(e)?TL:new Date(e))})})}_typeCheck(e){return rGe(e)&&!isNaN(e.getTime())}prepareParam(e,t){let i;if(eGe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${t}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,t=Fre.date.min){let i=this.prepareParam(e,"min");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Nre.default)(n)||n>=this.resolve(i)}})}max(e,t=Fre.date.max){var i=this.prepareParam(e,"max");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Nre.default)(n)||n<=this.resolve(i)}})}};vm.default=Oh;Oh.INVALID_DATE=TL;OL.prototype=Oh.prototype;OL.INVALID_DATE=TL});var Ore=w((Uut,Tre)=>{function iGe(r,e,t,i){var n=-1,s=r==null?0:r.length;for(i&&s&&(t=r[++n]);++n{function nGe(r){return function(e){return r==null?void 0:r[e]}}Mre.exports=nGe});var Hre=w((Hut,Kre)=>{var sGe=Ure(),oGe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},aGe=sGe(oGe);Kre.exports=aGe});var Yre=w((Gut,Gre)=>{var AGe=Hre(),lGe=Vf(),cGe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,uGe="\\u0300-\\u036f",gGe="\\ufe20-\\ufe2f",fGe="\\u20d0-\\u20ff",hGe=uGe+gGe+fGe,pGe="["+hGe+"]",dGe=RegExp(pGe,"g");function CGe(r){return r=lGe(r),r&&r.replace(cGe,AGe).replace(dGe,"")}Gre.exports=CGe});var qre=w((Yut,jre)=>{var mGe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function EGe(r){return r.match(mGe)||[]}jre.exports=EGe});var Wre=w((jut,Jre)=>{var IGe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function yGe(r){return IGe.test(r)}Jre.exports=yGe});var gie=w((qut,uie)=>{var _re="\\ud800-\\udfff",wGe="\\u0300-\\u036f",BGe="\\ufe20-\\ufe2f",QGe="\\u20d0-\\u20ff",bGe=wGe+BGe+QGe,$re="\\u2700-\\u27bf",eie="a-z\\xdf-\\xf6\\xf8-\\xff",SGe="\\xac\\xb1\\xd7\\xf7",vGe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",xGe="\\u2000-\\u206f",PGe=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tie="A-Z\\xc0-\\xd6\\xd8-\\xde",DGe="\\ufe0e\\ufe0f",rie=SGe+vGe+xGe+PGe,iie="['\u2019]",zre="["+rie+"]",kGe="["+bGe+"]",nie="\\d+",RGe="["+$re+"]",sie="["+eie+"]",oie="[^"+_re+rie+nie+$re+eie+tie+"]",FGe="\\ud83c[\\udffb-\\udfff]",NGe="(?:"+kGe+"|"+FGe+")",LGe="[^"+_re+"]",aie="(?:\\ud83c[\\udde6-\\uddff]){2}",Aie="[\\ud800-\\udbff][\\udc00-\\udfff]",Mh="["+tie+"]",TGe="\\u200d",Vre="(?:"+sie+"|"+oie+")",OGe="(?:"+Mh+"|"+oie+")",Xre="(?:"+iie+"(?:d|ll|m|re|s|t|ve))?",Zre="(?:"+iie+"(?:D|LL|M|RE|S|T|VE))?",lie=NGe+"?",cie="["+DGe+"]?",MGe="(?:"+TGe+"(?:"+[LGe,aie,Aie].join("|")+")"+cie+lie+")*",UGe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",KGe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",HGe=cie+lie+MGe,GGe="(?:"+[RGe,aie,Aie].join("|")+")"+HGe,YGe=RegExp([Mh+"?"+sie+"+"+Xre+"(?="+[zre,Mh,"$"].join("|")+")",OGe+"+"+Zre+"(?="+[zre,Mh+Vre,"$"].join("|")+")",Mh+"?"+Vre+"+"+Xre,Mh+"+"+Zre,KGe,UGe,nie,GGe].join("|"),"g");function jGe(r){return r.match(YGe)||[]}uie.exports=jGe});var hie=w((Jut,fie)=>{var qGe=qre(),JGe=Wre(),WGe=Vf(),zGe=gie();function VGe(r,e,t){return r=WGe(r),e=t?void 0:e,e===void 0?JGe(r)?zGe(r):qGe(r):r.match(e)||[]}fie.exports=VGe});var ML=w((Wut,pie)=>{var XGe=Ore(),ZGe=Yre(),_Ge=hie(),$Ge="['\u2019]",eYe=RegExp($Ge,"g");function tYe(r){return function(e){return XGe(_Ge(ZGe(e).replace(eYe,"")),r,"")}}pie.exports=tYe});var Cie=w((zut,die)=>{var rYe=ML(),iYe=rYe(function(r,e,t){return r+(t?"_":"")+e.toLowerCase()});die.exports=iYe});var Eie=w((Vut,mie)=>{var nYe=PB(),sYe=ML(),oYe=sYe(function(r,e,t){return e=e.toLowerCase(),r+(t?nYe(e):e)});mie.exports=oYe});var yie=w((Xut,Iie)=>{var aYe=Qh(),AYe=lL(),lYe=bL();function cYe(r,e){var t={};return e=lYe(e,3),AYe(r,function(i,n,s){aYe(t,e(i,n,s),i)}),t}Iie.exports=cYe});var Bie=w((Zut,UL)=>{UL.exports=function(r){return wie(uYe(r),r)};UL.exports.array=wie;function wie(r,e){var t=r.length,i=new Array(t),n={},s=t,o=gYe(e),a=fYe(r);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(r[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch{f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--t]=c}}}function uYe(r){for(var e=new Set,t=0,i=r.length;t{"use strict";Object.defineProperty(KL,"__esModule",{value:!0});KL.default=EYe;var hYe=IQ(am()),pYe=IQ(Bie()),dYe=pm(),CYe=IQ(tu()),mYe=IQ(xh());function IQ(r){return r&&r.__esModule?r:{default:r}}function EYe(r,e=[]){let t=[],i=[];function n(s,o){var a=(0,dYe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||t.push([o,a])}for(let s in r)if((0,hYe.default)(r,s)){let o=r[s];~i.indexOf(s)||i.push(s),CYe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,mYe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return pYe.default.array(i,t).reverse()}});var Sie=w(HL=>{"use strict";Object.defineProperty(HL,"__esModule",{value:!0});HL.default=IYe;function bie(r,e){let t=1/0;return r.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return t=n,!0}),t}function IYe(r){return(e,t)=>bie(r,e)-bie(r,t)}});var Fie=w(Pm=>{"use strict";Object.defineProperty(Pm,"__esModule",{value:!0});Pm.create=Rie;Pm.default=void 0;var vie=na(am()),xie=na(Cie()),yYe=na(Eie()),wYe=na(yie()),BYe=na(SL()),QYe=pm(),Pie=iA(),bYe=na(Qie()),kie=na(Sie()),SYe=na(iQ()),vYe=na(_c()),GL=na(sA());function na(r){return r&&r.__esModule?r:{default:r}}function Uh(){return Uh=Object.assign||function(r){for(var e=1;eObject.prototype.toString.call(r)==="[object Object]";function xYe(r,e){let t=Object.keys(r.fields);return Object.keys(e).filter(i=>t.indexOf(i)===-1)}var PYe=(0,kie.default)([]),xm=class extends GL.default{constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=PYe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch{i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Die(e)||typeof e=="function"}_cast(e,t={}){var i;let n=super._cast(e,t);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=t.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=Uh({},t,{parent:l,__validating:t.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,vie.default)(n,g);if(f){let p,C=n[g];c.path=(t.path?`${t.path}.`:"")+g,f=f.resolve({value:C,context:t.context,parent:l});let y="spec"in f?f.spec:void 0,B=y==null?void 0:y.strict;if(y!=null&&y.strip){u=u||g in n;continue}p=!t.__validating||!B?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,t={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=t;o=[{schema:this,value:a},...o],t.__validating=!0,t.originalValue=a,t.from=o,super._validate(e,t,(u,g)=>{if(u){if(!vYe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Die(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,C)=>{let y=h.indexOf(".")===-1?(t.path?`${t.path}.`:"")+h:`${t.path||""}["${h}"]`,B=this.fields[h];if(B&&"validate"in B){B.validate(g[h],Uh({},t,{path:y,from:o,strict:!0,parent:g,originalValue:a[h]}),C);return}C(null)});(0,SYe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:t.path},i)})}clone(e){let t=super.clone(e);return t.fields=Uh({},this.fields),t._nodes=this._nodes,t._excludedEdges=this._excludedEdges,t._sortErrors=this._sortErrors,t}concat(e){let t=super.concat(e),i=t.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof GL.default&&s instanceof GL.default&&(i[n]=s.concat(o))}return t.withMutation(()=>t.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(t=>{let i=this.fields[t];e[t]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,t=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,kie.default)(Object.keys(n)),t.length){Array.isArray(t[0])||(t=[t]);let s=t.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,bYe.default)(n,i._excludedEdges),i}pick(e){let t={};for(let i of e)this.fields[i]&&(t[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(t)))}omit(e){let t=this.clone(),i=t.fields;t.fields={};for(let n of e)delete i[n];return t.withMutation(()=>t.shape(i))}from(e,t,i){let n=(0,QYe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,vie.default)(s,e)&&(o=Uh({},s),i||delete o[e],o[t]=n(s)),o})}noUnknown(e=!0,t=Pie.object.noUnknown){typeof e=="string"&&(t=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:t,test(n){if(n==null)return!0;let s=xYe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,t=Pie.object.noUnknown){return this.noUnknown(!e,t)}transformKeys(e){return this.transform(t=>t&&(0,wYe.default)(t,(i,n)=>e(n)))}camelCase(){return this.transformKeys(yYe.default)}snakeCase(){return this.transformKeys(xie.default)}constantCase(){return this.transformKeys(e=>(0,xie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,BYe.default)(this.fields,t=>t.describe()),e}};Pm.default=xm;function Rie(r){return new xm(r)}Rie.prototype=xm.prototype});var Lie=w(km=>{"use strict";Object.defineProperty(km,"__esModule",{value:!0});km.create=Nie;km.default=void 0;var YL=Kh(Th()),DYe=Kh(xh()),kYe=Kh(om()),jL=iA(),RYe=Kh(iQ()),FYe=Kh(_c()),NYe=Kh(sA());function Kh(r){return r&&r.__esModule?r:{default:r}}function yQ(){return yQ=Object.assign||function(r){for(var e=1;e{this.transform(function(t){if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return this.isType(t)?t:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,t){let i=super._cast(e,t);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,yQ({},t,{path:`${t.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,t={},i){var n,s;let o=[],a=t.sync,l=t.path,c=this.innerType,u=(n=t.abortEarly)!=null?n:this.spec.abortEarly,g=(s=t.recursive)!=null?s:this.spec.recursive,f=t.originalValue!=null?t.originalValue:e;super._validate(e,t,(h,p)=>{if(h){if(!FYe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let C=new Array(p.length);for(let y=0;yc.validate(B,D,H)}(0,RYe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:C},i)})}clone(e){let t=super.clone(e);return t.innerType=this.innerType,t}concat(e){let t=super.concat(e);return t.innerType=this.innerType,e.innerType&&(t.innerType=t.innerType?t.innerType.concat(e.innerType):e.innerType),t}of(e){let t=this.clone();if(!(0,DYe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,kYe.default)(e));return t.innerType=e,t}length(e,t=jL.array.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(i){return(0,YL.default)(i)||i.length===this.resolve(e)}})}min(e,t){return t=t||jL.array.min,this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(i){return(0,YL.default)(i)||i.length>=this.resolve(e)}})}max(e,t){return t=t||jL.array.max,this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(i){return(0,YL.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,t)=>this._typeCheck(e)?e:t==null?[]:[].concat(t))}compact(e){let t=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(t):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};km.default=Dm;Nie.prototype=Dm.prototype});var Tie=w(Rm=>{"use strict";Object.defineProperty(Rm,"__esModule",{value:!0});Rm.create=OYe;Rm.default=void 0;var LYe=TYe(xh());function TYe(r){return r&&r.__esModule?r:{default:r}}function OYe(r){return new wQ(r)}var wQ=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(t,i={})=>{let n=this.builder(t,i);if(!(0,LYe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,t){return this._resolve(e,t).cast(e,t)}validate(e,t,i){return this._resolve(e,t).validate(e,t,i)}validateSync(e,t){return this._resolve(e,t).validateSync(e,t)}validateAt(e,t,i){return this._resolve(t,i).validateAt(e,t,i)}validateSyncAt(e,t,i){return this._resolve(t,i).validateSyncAt(e,t,i)}describe(){return null}isValid(e,t){return this._resolve(e,t).isValid(e,t)}isValidSync(e,t){return this._resolve(e,t).isValidSync(e,t)}},MYe=wQ;Rm.default=MYe});var Oie=w(qL=>{"use strict";Object.defineProperty(qL,"__esModule",{value:!0});qL.default=HYe;var UYe=KYe(iA());function KYe(r){return r&&r.__esModule?r:{default:r}}function HYe(r){Object.keys(r).forEach(e=>{Object.keys(r[e]).forEach(t=>{UYe.default[e][t]=r[e][t]})})}});var WL=w(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.addMethod=zYe;Object.defineProperty(yr,"MixedSchema",{enumerable:!0,get:function(){return Mie.default}});Object.defineProperty(yr,"mixed",{enumerable:!0,get:function(){return Mie.create}});Object.defineProperty(yr,"BooleanSchema",{enumerable:!0,get:function(){return JL.default}});Object.defineProperty(yr,"bool",{enumerable:!0,get:function(){return JL.create}});Object.defineProperty(yr,"boolean",{enumerable:!0,get:function(){return JL.create}});Object.defineProperty(yr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(yr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(yr,"NumberSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(yr,"number",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(yr,"DateSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(yr,"date",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(yr,"ObjectSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(yr,"object",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(yr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(yr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(yr,"ref",{enumerable:!0,get:function(){return GYe.create}});Object.defineProperty(yr,"lazy",{enumerable:!0,get:function(){return YYe.create}});Object.defineProperty(yr,"ValidationError",{enumerable:!0,get:function(){return jYe.default}});Object.defineProperty(yr,"reach",{enumerable:!0,get:function(){return qYe.default}});Object.defineProperty(yr,"isSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(yr,"setLocale",{enumerable:!0,get:function(){return JYe.default}});Object.defineProperty(yr,"BaseSchema",{enumerable:!0,get:function(){return WYe.default}});var Mie=nu(Ire()),JL=nu(bre()),Uie=nu(xre()),Kie=nu(kre()),Hie=nu(Lre()),Gie=nu(Fie()),Yie=nu(Lie()),GYe=tu(),YYe=Tie(),jYe=Fm(_c()),qYe=Fm(FL()),jie=Fm(xh()),JYe=Fm(Oie()),WYe=Fm(sA());function Fm(r){return r&&r.__esModule?r:{default:r}}function qie(){if(typeof WeakMap!="function")return null;var r=new WeakMap;return qie=function(){return r},r}function nu(r){if(r&&r.__esModule)return r;if(r===null||typeof r!="object"&&typeof r!="function")return{default:r};var e=qie();if(e&&e.has(r))return e.get(r);var t={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)){var s=i?Object.getOwnPropertyDescriptor(r,n):null;s&&(s.get||s.set)?Object.defineProperty(t,n,s):t[n]=r[n]}return t.default=r,e&&e.set(r,t),t}function zYe(r,e,t){if(!r||!(0,jie.default)(r.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof t!="function")throw new TypeError("Method function must be provided");r.prototype[e]=t}});var Xie=w((Cgt,Lm)=>{"use strict";var ZYe=process.env.TERM_PROGRAM==="Hyper",_Ye=process.platform==="win32",Wie=process.platform==="linux",zL={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},zie=Object.assign({},zL,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Vie=Object.assign({},zL,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:Wie?"\u25B8":"\u276F",pointerSmall:Wie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});Lm.exports=_Ye&&!ZYe?zie:Vie;Reflect.defineProperty(Lm.exports,"common",{enumerable:!1,value:zL});Reflect.defineProperty(Lm.exports,"windows",{enumerable:!1,value:zie});Reflect.defineProperty(Lm.exports,"other",{enumerable:!1,value:Vie})});var uo=w((mgt,VL)=>{"use strict";var $Ye=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),eje=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let r={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(r.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`\x1B[${s.codes[0]}m`,a=s.close=`\x1B[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},t=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(r.enabled===!1)return s;if(r.visible===!1)return"";let a=""+s,l=a.includes(` +`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=t(r.styles[o[c]],a,l);return a},n=(s,o,a)=>{r.styles[s]=e({name:s,codes:o}),(r.keys[a]||(r.keys[a]=[])).push(s),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(c){r.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,r),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),r.ansiRegex=eje,r.hasColor=r.hasAnsi=s=>(r.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&r.ansiRegex.test(s)),r.alias=(s,o)=>{let a=typeof o=="string"?r[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),r.styles[s]=a,a.stack=[s]),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(l){r.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,r),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},r.theme=s=>{if(!$Ye(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))r.alias(o,s[o]);return r},r.alias("unstyle",s=>typeof s=="string"&&s!==""?(r.ansiRegex.lastIndex=0,s.replace(r.ansiRegex,"")):""),r.alias("noop",s=>s),r.none=r.clear=r.noop,r.stripColor=r.unstyle,r.symbols=Xie(),r.define=n,r};VL.exports=Zie();VL.exports.create=Zie});var ji=w(Lt=>{"use strict";var tje=Object.prototype.toString,Ns=uo(),_ie=!1,XL=[],$ie={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};Lt.longest=(r,e)=>r.reduce((t,i)=>Math.max(t,e?i[e].length:i.length),0);Lt.hasColor=r=>!!r&&Ns.hasColor(r);var QQ=Lt.isObject=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);Lt.nativeType=r=>tje.call(r).slice(8,-1).toLowerCase().replace(/\s/g,"");Lt.isAsyncFn=r=>Lt.nativeType(r)==="asyncfunction";Lt.isPrimitive=r=>r!=null&&typeof r!="object"&&typeof r!="function";Lt.resolve=(r,e,...t)=>typeof e=="function"?e.call(r,...t):e;Lt.scrollDown=(r=[])=>[...r.slice(1),r[0]];Lt.scrollUp=(r=[])=>[r.pop(),...r];Lt.reorder=(r=[])=>{let e=r.slice();return e.sort((t,i)=>t.index>i.index?1:t.index{let i=r.length,n=t===i?0:t<0?i-1:t,s=r[e];r[e]=r[n],r[n]=s};Lt.width=(r,e=80)=>{let t=r&&r.columns?r.columns:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[0]),process.platform==="win32"?t-1:t};Lt.height=(r,e=20)=>{let t=r&&r.rows?r.rows:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[1]),t};Lt.wordWrap=(r,e={})=>{if(!r)return r;typeof e=="number"&&(e={width:e});let{indent:t="",newline:i=` +`+t,width:n=80}=e,s=(i+t).match(/[^\S\n]/g)||[];n-=s.length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=r.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),t+c.join(i)};Lt.unmute=r=>{let e=r.stack.find(i=>Ns.keys.color.includes(i));return e?Ns[e]:r.stack.find(i=>i.slice(2)==="bg")?Ns[e.slice(2)]:i=>i};Lt.pascal=r=>r?r[0].toUpperCase()+r.slice(1):"";Lt.inverse=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ns.keys.color.includes(i));if(e){let i=Ns["bg"+Lt.pascal(e)];return i?i.black:r}let t=r.stack.find(i=>i.slice(0,2)==="bg");return t?Ns[t.slice(2).toLowerCase()]||r:Ns.none};Lt.complement=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ns.keys.color.includes(i)),t=r.stack.find(i=>i.slice(0,2)==="bg");if(e&&!t)return Ns[$ie[e]||e];if(t){let i=t.slice(2).toLowerCase(),n=$ie[i];return n&&Ns["bg"+Lt.pascal(n)]||r}return Ns.none};Lt.meridiem=r=>{let e=r.getHours(),t=r.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=t<10?"0"+t:t;return n+":"+s+" "+i};Lt.set=(r={},e="",t)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:t;return!Lt.isObject(a)&&s{let i=r[e]==null?e.split(".").reduce((n,s)=>n&&n[s],r):r[e];return i==null?t:i};Lt.mixin=(r,e)=>{if(!QQ(r))return e;if(!QQ(e))return r;for(let t of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,t);if(i.hasOwnProperty("value"))if(r.hasOwnProperty(t)&&QQ(i.value)){let n=Object.getOwnPropertyDescriptor(r,t);QQ(n.value)?r[t]=Lt.merge({},r[t],e[t]):Reflect.defineProperty(r,t,i)}else Reflect.defineProperty(r,t,i);else Reflect.defineProperty(r,t,i)}return r};Lt.merge=(...r)=>{let e={};for(let t of r)Lt.mixin(e,t);return e};Lt.mixinEmitter=(r,e)=>{let t=e.constructor.prototype;for(let i of Object.keys(t)){let n=t[i];typeof n=="function"?Lt.define(r,i,n.bind(e)):Lt.define(r,i,n)}};Lt.onExit=r=>{let e=(t,i)=>{_ie||(_ie=!0,XL.forEach(n=>n()),t===!0&&process.exit(128+i))};XL.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),XL.push(r)};Lt.define=(r,e,t)=>{Reflect.defineProperty(r,e,{value:t})};Lt.defineExport=(r,e,t)=>{let i;Reflect.defineProperty(r,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():t()}})}});var ene=w(Gh=>{"use strict";Gh.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};Gh.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};Gh.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};Gh.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};Gh.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var ine=w((ygt,rne)=>{"use strict";var tne=J("readline"),rje=ene(),ije=/^(?:\x1b)([a-zA-Z0-9])$/,nje=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,sje={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function oje(r){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(r)}function aje(r){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(r)}var bQ=(r="",e={})=>{let t,i={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:r,raw:r,...e};if(Buffer.isBuffer(r)?r[0]>127&&r[1]===void 0?(r[0]-=128,r="\x1B"+String(r)):r=String(r):r!==void 0&&typeof r!="string"?r=String(r):r||(r=i.sequence||""),i.sequence=i.sequence||r||i.name,r==="\r")i.raw=void 0,i.name="return";else if(r===` +`)i.name="enter";else if(r===" ")i.name="tab";else if(r==="\b"||r==="\x7F"||r==="\x1B\x7F"||r==="\x1B\b")i.name="backspace",i.meta=r.charAt(0)==="\x1B";else if(r==="\x1B"||r==="\x1B\x1B")i.name="escape",i.meta=r.length===2;else if(r===" "||r==="\x1B ")i.name="space",i.meta=r.length===2;else if(r<="")i.name=String.fromCharCode(r.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(r.length===1&&r>="0"&&r<="9")i.name="number";else if(r.length===1&&r>="a"&&r<="z")i.name=r;else if(r.length===1&&r>="A"&&r<="Z")i.name=r.toLowerCase(),i.shift=!0;else if(t=ije.exec(r))i.meta=!0,i.shift=/^[A-Z]$/.test(t[1]);else if(t=nje.exec(r)){let n=[...r];n[0]==="\x1B"&&n[1]==="\x1B"&&(i.option=!0);let s=[t[1],t[2],t[4],t[6]].filter(Boolean).join(""),o=(t[3]||t[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=sje[s],i.shift=oje(s)||i.shift,i.ctrl=aje(s)||i.ctrl}return i};bQ.listen=(r={},e)=>{let{stdin:t}=r;if(!t||t!==process.stdin&&!t.isTTY)throw new Error("Invalid stream passed");let i=tne.createInterface({terminal:!0,input:t});tne.emitKeypressEvents(t,i);let n=(a,l)=>e(a,bQ(a,l),i),s=t.isRaw;return t.isTTY&&t.setRawMode(!0),t.on("keypress",n),i.resume(),()=>{t.isTTY&&t.setRawMode(s),t.removeListener("keypress",n),i.pause(),i.close()}};bQ.action=(r,e,t)=>{let i={...rje,...t};return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=bQ});var sne=w((wgt,nne)=>{"use strict";nne.exports=r=>{r.timers=r.timers||{};let e=r.options.timers;if(!!e)for(let t of Object.keys(e)){let i=e[t];typeof i=="number"&&(i={interval:i}),Aje(r,t,i)}};function Aje(r,e,t={}){let i=r.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=t.interval||120;i.frames=t.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,r.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),r.once("close",()=>i.stop()),i.stop}});var ane=w((Bgt,one)=>{"use strict";var{define:lje,width:cje}=ji(),ZL=class{constructor(e){let t=e.options;lje(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=cje(t.stdout||process.stdout),Object.assign(this,t),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let t=this._color||e[this.status];return typeof t=="function"?t:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};one.exports=ZL});var lne=w((Qgt,Ane)=>{"use strict";var _L=ji(),Di=uo(),$L={default:Di.noop,noop:Di.noop,set inverse(r){this._inverse=r},get inverse(){return this._inverse||_L.inverse(this.primary)},set complement(r){this._complement=r},get complement(){return this._complement||_L.complement(this.primary)},primary:Di.cyan,success:Di.green,danger:Di.magenta,strong:Di.bold,warning:Di.yellow,muted:Di.dim,disabled:Di.gray,dark:Di.dim.gray,underline:Di.underline,set info(r){this._info=r},get info(){return this._info||this.primary},set em(r){this._em=r},get em(){return this._em||this.primary.underline},set heading(r){this._heading=r},get heading(){return this._heading||this.muted.underline},set pending(r){this._pending=r},get pending(){return this._pending||this.primary},set submitted(r){this._submitted=r},get submitted(){return this._submitted||this.success},set cancelled(r){this._cancelled=r},get cancelled(){return this._cancelled||this.danger},set typing(r){this._typing=r},get typing(){return this._typing||this.dim},set placeholder(r){this._placeholder=r},get placeholder(){return this._placeholder||this.primary.dim},set highlight(r){this._highlight=r},get highlight(){return this._highlight||this.inverse}};$L.merge=(r={})=>{r.styles&&typeof r.styles.enabled=="boolean"&&(Di.enabled=r.styles.enabled),r.styles&&typeof r.styles.visible=="boolean"&&(Di.visible=r.styles.visible);let e=_L.merge({},$L,r.styles);delete e.merge;for(let t of Object.keys(Di))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Di[t]});for(let t of Object.keys(Di.styles))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Di[t]});return e};Ane.exports=$L});var une=w((bgt,cne)=>{"use strict";var eT=process.platform==="win32",aA=uo(),uje=ji(),tT={...aA.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:aA.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:aA.symbols.question,submitted:aA.symbols.check,cancelled:aA.symbols.cross},separator:{pending:aA.symbols.pointerSmall,submitted:aA.symbols.middot,cancelled:aA.symbols.middot},radio:{off:eT?"( )":"\u25EF",on:eT?"(*)":"\u25C9",disabled:eT?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};tT.merge=r=>{let e=uje.merge({},aA.symbols,tT,r.symbols);return delete e.merge,e};cne.exports=tT});var fne=w((Sgt,gne)=>{"use strict";var gje=lne(),fje=une(),hje=ji();gne.exports=r=>{r.options=hje.merge({},r.options.theme,r.options),r.symbols=fje.merge(r.options),r.styles=gje.merge(r.options)}});var mne=w((dne,Cne)=>{"use strict";var hne=process.env.TERM_PROGRAM==="Apple_Terminal",pje=uo(),rT=ji(),go=Cne.exports=dne,Dr="\x1B[",pne="\x07",iT=!1,pl=go.code={bell:pne,beep:pne,beginning:`${Dr}G`,down:`${Dr}J`,esc:Dr,getPosition:`${Dr}6n`,hide:`${Dr}?25l`,line:`${Dr}2K`,lineEnd:`${Dr}K`,lineStart:`${Dr}1K`,restorePosition:Dr+(hne?"8":"u"),savePosition:Dr+(hne?"7":"s"),screen:`${Dr}2J`,show:`${Dr}?25h`,up:`${Dr}1J`},su=go.cursor={get hidden(){return iT},hide(){return iT=!0,pl.hide},show(){return iT=!1,pl.show},forward:(r=1)=>`${Dr}${r}C`,backward:(r=1)=>`${Dr}${r}D`,nextLine:(r=1)=>`${Dr}E`.repeat(r),prevLine:(r=1)=>`${Dr}F`.repeat(r),up:(r=1)=>r?`${Dr}${r}A`:"",down:(r=1)=>r?`${Dr}${r}B`:"",right:(r=1)=>r?`${Dr}${r}C`:"",left:(r=1)=>r?`${Dr}${r}D`:"",to(r,e){return e?`${Dr}${e+1};${r+1}H`:`${Dr}${r+1}G`},move(r=0,e=0){let t="";return t+=r<0?su.left(-r):r>0?su.right(r):"",t+=e<0?su.up(-e):e>0?su.down(e):"",t},restore(r={}){let{after:e,cursor:t,initial:i,input:n,prompt:s,size:o,value:a}=r;if(i=rT.isPrimitive(i)?String(i):"",n=rT.isPrimitive(n)?String(n):"",a=rT.isPrimitive(a)?String(a):"",o){let l=go.cursor.up(o)+go.cursor.to(s.length),c=n.length-t;return c>0&&(l+=go.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+t;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),go.cursor.move(l)}}},nT=go.erase={screen:pl.screen,up:pl.up,down:pl.down,line:pl.line,lineEnd:pl.lineEnd,lineStart:pl.lineStart,lines(r){let e="";for(let t=0;t{if(!e)return nT.line+su.to(0);let t=s=>[...pje.unstyle(s)].length,i=r.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(t(s)-1,0)/e);return(nT.line+su.prevLine()).repeat(n-1)+nT.line+su.to(0)}});var Yh=w((vgt,Ine)=>{"use strict";var dje=J("events"),Ene=uo(),sT=ine(),Cje=sne(),mje=ane(),Eje=fne(),Dn=ji(),ou=mne(),Tm=class extends dje{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,Eje(this),Cje(this),this.state=new mje(this),this.initial=[e.initial,e.default].find(t=>t!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=yje(this.options.margin),this.setMaxListeners(0),Ije(this)}async keypress(e,t={}){this.keypressed=!0;let i=sT.action(e,sT(e,t),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(ou.code.beep)}cursorHide(){this.stdout.write(ou.cursor.hide()),Dn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(ou.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let t=this.state.buffer;this.state.buffer="",!(!t&&!e||this.options.show===!1)&&this.stdout.write(ou.cursor.down(e)+ou.clear(t,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:t,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:t,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=ou.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:t,prompt:i}=this.state;i=Ene.unstyle(i);let n=Ene.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` `),c=l[0],u=l[l.length-1],f=(i+(t?" "+t:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof t.initial=="function"&&(this.initial=await t.initial.call(this,this)),typeof t.onRun=="function"&&await t.onRun.call(this,this),typeof t.onSubmit=="function"){let n=t.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,t)=>{if(this.once("submit",e),this.once("cancel",t),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,t,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=t&&t[e]!=null?t[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,t,i);return!g&&t&&t[e]?this.resolve(c,s,t,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,t=this.timers&&this.timers.prefix,i=this.state;return i.timer=t,xn.isObject(e)&&(e=e[i.status]||e.pending),xn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return xn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,t=this.timers&&this.timers.separator,i=this.state;i.timer=t;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return xn.isObject(s)&&(s=s[i.status]||s.pending),xn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,t){let i=await this.element("pointer",e,t);if(typeof i=="string"&&xn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===t,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=xn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,t){let i=await this.element("indicator",e,t);if(typeof i=="string"&&xn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return xn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return xn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...t){return xn.resolve(this,e,...t)}get base(){return Sm.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||xn.height(this.stdout,25)}get width(){return this.options.columns||xn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:t}=this.state,i=[t,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function fYe(r){let e=n=>r[n]===void 0||typeof r[n]=="function",t=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(r.options)){if(t.includes(n)||/^on[A-Z]/.test(n))continue;let s=r.options[n];typeof s=="function"&&e(n)?i.includes(n)||(r[n]=s.bind(r)):typeof r[n]!="function"&&(r[n]=s)}}function hYe(r){typeof r=="number"&&(r=[r,r,r,r]);let e=[].concat(r||[]),t=n=>n%2===0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=t(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}Fie.exports=Sm});var Tie=w((Nut,Lie)=>{"use strict";var pYe=Gi(),Nie={default(r,e){return e},checkbox(r,e){throw new Error("checkbox role is not implemented yet")},editable(r,e){throw new Error("editable role is not implemented yet")},expandable(r,e){throw new Error("expandable role is not implemented yet")},heading(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||"",e},input(r,e){throw new Error("input role is not implemented yet")},option(r,e){return Nie.default(r,e)},radio(r,e){throw new Error("radio role is not implemented yet")},separator(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||r.symbols.line.repeat(5),e},spacer(r,e){return e}};Lie.exports=(r,e={})=>{let t=pYe.merge({},Nie,e.roles);return t[r]||t.default}});var vm=w((Lut,Kie)=>{"use strict";var dYe=so(),CYe=kh(),mYe=Tie(),sQ=Gi(),{reorder:FL,scrollUp:EYe,scrollDown:IYe,isObject:Oie,swap:yYe}=sQ,NL=class extends CYe{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:t,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Oie(t)&&(t=Object.keys(t)),Array.isArray(t)?(i!=null&&(this.index=this.findIndex(i)),t.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(t=i),typeof t=="string"&&(t=this.findIndex(t)),typeof t=="number"&&t>-1&&(this.index=Math.max(0,Math.min(t,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,t){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,t,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=mYe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=t,e.cursor=0,sQ.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,dYe.unstyle(e.message).length));let o={...e};return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,t)),e}async onChoice(e,t){this.emit("choice",e,t,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,t)}async addChoice(e,t,i){let n=await this.toChoice(e,t,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,t,i){let n={name:"New choice name?",editable:!0,newChoice:!0,...e},s=await this.addChoice(n,t,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,t){if(this.multiple&&this[t.name])return this[t.name]();this.alert()}focus(e,t){return typeof t!="boolean"&&(t=e.enabled),t&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=t&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedt.enabled);return this.choices.forEach(t=>t.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(t=>!!t.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,t){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof t!="boolean"&&(t=!e.enabled),e.enabled=t,e.choices&&e.choices.forEach(n=>this.toggle(n,t));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return Mie(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let t=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=FL(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=t(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=FL(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,t=FL(this.choices);return this.choices=t.slice(e).concat(t.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,t=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>t&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,t=this.visible.length,i=this.index;return this.options.scroll===!1&&i===t-1?this.alert():e>t&&i===t-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=EYe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=IYe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){yYe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(t=>this.isEnabled(t));if(e.choices){let t=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&t.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,t){return e.name===t||e.index===Number(t)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(t=>this.isChoice(e,t)):this.isChoice(e,this.initial)}map(e=[],t="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,t),i),{})}filter(e,t){let n=typeof e=="function"?e:(a,l)=>[a.name,l].includes(e),o=(this.options.multiple?this.state._choices:this.choices).filter(n);return t?o.map(a=>a[t]):o}find(e,t){if(Oie(e))return t?e[t]:e;let n=typeof e=="function"?e:(o,a)=>[o.name,a].includes(e),s=this.choices.find(n);if(s)return t?s[t]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:t,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&t!==!1&&i!==!0&&(s=sQ.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let t of e)this.state._choices.some(i=>i.name===t.name)||this.state._choices.push(t);if(!this._initial&&this.options.initial){this._initial=!0;let t=this.initial;if(typeof t=="string"||typeof t=="number"){let i=this.find(t);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return Mie(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:t,choices:i}=this,n=e.limit||this._limit||t.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function Mie(r,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(sQ.isAsyncFn(e))return e;e=e.call(r,r)}for(let t of e){if(Array.isArray(t.choices)){let i=t.choices.filter(n=>!r.isDisabled(n));t.enabled=i.every(n=>n.enabled===!0)}r.isDisabled(t)===!0&&delete t.enabled}return e}Kie.exports=NL});var ol=w((Tut,Uie)=>{"use strict";var wYe=vm(),LL=Gi(),TL=class extends wYe{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,t){if(this.multiple)return this[t.name]?await this[t.name](e,t):await super.dispatch(e,t);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,t){return!this.multiple||this.options.pointer?super.pointer(e,t):""}indicator(e,t){return this.multiple?super.indicator(e,t):""}choiceMessage(e,t){let i=this.resolve(e.message,this.state,e,t);return e.role==="heading"&&!LL.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,t)}choiceSeparator(){return":"}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=await this.pointer(e,t),s=await this.indicator(e,t)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,t);o&&!LL.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,t),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(LL.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),t=await Promise.all(e);t.length||t.push(this.styles.danger("No matching choices"));let i=this.margin[0]+t.join(` +`+this.styles.danger(t),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit("submit",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel=="function"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit("cancel",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),t=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(ou.cursor.down(e.rest.length)),this.write(` +`.repeat(t))}catch{}this.emit("close")}start(){!this.stop&&this.options.show!==!1&&(this.stop=sT.listen(this,this.keypress.bind(this)),this.once("close",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip=="function"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:t,result:i}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>i.call(this,this.value),typeof t.initial=="function"&&(this.initial=await t.initial.call(this,this)),typeof t.onRun=="function"&&await t.onRun.call(this,this),typeof t.onSubmit=="function"){let n=t.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,t)=>{if(this.once("submit",e),this.once("cancel",t),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,t,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=t&&t[e]!=null?t[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,t,i);return!g&&t&&t[e]?this.resolve(c,s,t,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,t=this.timers&&this.timers.prefix,i=this.state;return i.timer=t,Dn.isObject(e)&&(e=e[i.status]||e.pending),Dn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Dn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,t=this.timers&&this.timers.separator,i=this.state;i.timer=t;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return Dn.isObject(s)&&(s=s[i.status]||s.pending),Dn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,t){let i=await this.element("pointer",e,t);if(typeof i=="string"&&Dn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===t,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=Dn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,t){let i=await this.element("indicator",e,t);if(typeof i=="string"&&Dn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return Dn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return Dn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...t){return Dn.resolve(this,e,...t)}get base(){return Tm.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Dn.height(this.stdout,25)}get width(){return this.options.columns||Dn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:t}=this.state,i=[t,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function Ije(r){let e=n=>r[n]===void 0||typeof r[n]=="function",t=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(r.options)){if(t.includes(n)||/^on[A-Z]/.test(n))continue;let s=r.options[n];typeof s=="function"&&e(n)?i.includes(n)||(r[n]=s.bind(r)):typeof r[n]!="function"&&(r[n]=s)}}function yje(r){typeof r=="number"&&(r=[r,r,r,r]);let e=[].concat(r||[]),t=n=>n%2===0?` +`:" ",i=[];for(let n=0;n<4;n++){let s=t(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}Ine.exports=Tm});var Bne=w((xgt,wne)=>{"use strict";var wje=ji(),yne={default(r,e){return e},checkbox(r,e){throw new Error("checkbox role is not implemented yet")},editable(r,e){throw new Error("editable role is not implemented yet")},expandable(r,e){throw new Error("expandable role is not implemented yet")},heading(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||"",e},input(r,e){throw new Error("input role is not implemented yet")},option(r,e){return yne.default(r,e)},radio(r,e){throw new Error("radio role is not implemented yet")},separator(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||r.symbols.line.repeat(5),e},spacer(r,e){return e}};wne.exports=(r,e={})=>{let t=wje.merge({},yne,e.roles);return t[r]||t.default}});var Om=w((Pgt,Sne)=>{"use strict";var Bje=uo(),Qje=Yh(),bje=Bne(),SQ=ji(),{reorder:oT,scrollUp:Sje,scrollDown:vje,isObject:Qne,swap:xje}=SQ,aT=class extends Qje{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:t,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Qne(t)&&(t=Object.keys(t)),Array.isArray(t)?(i!=null&&(this.index=this.findIndex(i)),t.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(t=i),typeof t=="string"&&(t=this.findIndex(t)),typeof t=="number"&&t>-1&&(this.index=Math.max(0,Math.min(t,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,t){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,t,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=bje(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=t,e.cursor=0,SQ.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Bje.unstyle(e.message).length));let o={...e};return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,t)),e}async onChoice(e,t){this.emit("choice",e,t,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,t)}async addChoice(e,t,i){let n=await this.toChoice(e,t,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,t,i){let n={name:"New choice name?",editable:!0,newChoice:!0,...e},s=await this.addChoice(n,t,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,t){if(this.multiple&&this[t.name])return this[t.name]();this.alert()}focus(e,t){return typeof t!="boolean"&&(t=e.enabled),t&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=t&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedt.enabled);return this.choices.forEach(t=>t.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(t=>!!t.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,t){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof t!="boolean"&&(t=!e.enabled),e.enabled=t,e.choices&&e.choices.forEach(n=>this.toggle(n,t));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return bne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let t=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=oT(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=t(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=oT(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,t=oT(this.choices);return this.choices=t.slice(e).concat(t.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,t=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>t&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,t=this.visible.length,i=this.index;return this.options.scroll===!1&&i===t-1?this.alert():e>t&&i===t-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=Sje(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=vje(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){xje(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(t=>this.isEnabled(t));if(e.choices){let t=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&t.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,t){return e.name===t||e.index===Number(t)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(t=>this.isChoice(e,t)):this.isChoice(e,this.initial)}map(e=[],t="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,t),i),{})}filter(e,t){let n=typeof e=="function"?e:(a,l)=>[a.name,l].includes(e),o=(this.options.multiple?this.state._choices:this.choices).filter(n);return t?o.map(a=>a[t]):o}find(e,t){if(Qne(e))return t?e[t]:e;let n=typeof e=="function"?e:(o,a)=>[o.name,a].includes(e),s=this.choices.find(n);if(s)return t?s[t]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:t,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&t!==!1&&i!==!0&&(s=SQ.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let t of e)this.state._choices.some(i=>i.name===t.name)||this.state._choices.push(t);if(!this._initial&&this.options.initial){this._initial=!0;let t=this.initial;if(typeof t=="string"||typeof t=="number"){let i=this.find(t);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return bne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:t,choices:i}=this,n=e.limit||this._limit||t.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function bne(r,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(SQ.isAsyncFn(e))return e;e=e.call(r,r)}for(let t of e){if(Array.isArray(t.choices)){let i=t.choices.filter(n=>!r.isDisabled(n));t.enabled=i.every(n=>n.enabled===!0)}r.isDisabled(t)===!0&&delete t.enabled}return e}Sne.exports=aT});var dl=w((Dgt,vne)=>{"use strict";var Pje=Om(),AT=ji(),lT=class extends Pje{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,t){if(this.multiple)return this[t.name]?await this[t.name](e,t):await super.dispatch(e,t);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,t){return!this.multiple||this.options.pointer?super.pointer(e,t):""}indicator(e,t){return this.multiple?super.indicator(e,t):""}choiceMessage(e,t){let i=this.resolve(e.message,this.state,e,t);return e.role==="heading"&&!AT.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,t)}choiceSeparator(){return":"}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=await this.pointer(e,t),s=await this.indicator(e,t)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,t);o&&!AT.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,t),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(AT.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),t=await Promise.all(e);t.length||t.push(this.styles.danger("No matching choices"));let i=this.margin[0]+t.join(` `),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` `)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:t}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(t),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Uie.exports=TL});var Gie=w((Out,Hie)=>{"use strict";var BYe=ol(),QYe=(r,e)=>{let t=r.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(t),o=e(i.slice(s,s+t.length));return s>=0?i.slice(0,s)+o+i.slice(s+t.length):i}},OL=class extends BYe{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:t,input:i}=this.state;return this.input=i.slice(0,t)+e+i.slice(t),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:t}=this.state;return t?(this.input=t.slice(0,e-1)+t.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:t}=this.state;return t[e]===void 0?this.alert():(this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,t=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,t);let i=e.toLowerCase();return t.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,t=QYe(this.input,e),i=this.choices;this.choices=i.map(n=>({...n,message:t(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Hie.exports=OL});var KL=w((Mut,Yie)=>{"use strict";var ML=Gi();Yie.exports=(r,e={})=>{r.cursorHide();let{input:t="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||r.styles.placeholder,l=ML.inverse(r.styles.primary),c=C=>l(r.styles.black(C)),u=t,g=" ",f=c(g);if(r.blink&&r.blink.off===!0&&(c=C=>C,f=""),s&&n===0&&i===""&&t==="")return c(g);if(s&&n===0&&(t===i||t===""))return c(i[0])+a(i.slice(1));i=ML.isPrimitive(i)?`${i}`:"",t=ML.isPrimitive(t)?`${t}`:"";let h=i&&i.startsWith(t)&&i!==t,p=h?c(i[t.length]):f;if(n!==t.length&&s===!0&&(u=t.slice(0,n)+c(t[n])+t.slice(n+1),p=""),s===!1&&(p=""),h){let C=r.styles.unstyle(u+p);return u+p+a(i.slice(C.length))}return u+p}});var oQ=w((Kut,jie)=>{"use strict";var bYe=so(),SYe=ol(),vYe=KL(),UL=class extends SYe{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(t=>t!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(t=>t.reset&&t.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let t=this.focused;if(!t)return this.alert();let{cursor:i,input:n}=t;return t.value=t.input=n.slice(0,i)+e+n.slice(i),t.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:t,input:i}=e;return e.value=e.input=i.slice(0,t-1)+i.slice(t),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:t,input:i}=e;if(i[t]===void 0)return this.alert();let n=`${i}`.slice(0,t)+`${i}`.slice(t+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,t){return this.dispatch(e,t)}number(e,t){return this.dispatch(e,t)}next(){let e=this.focused;if(!e)return this.alert();let{initial:t,input:i}=e;return t&&t.startsWith(i)&&i!==t?(e.value=e.input=t,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,t){let i=await this.resolve(e.separator,this.state,e,t)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,t){await this.onChoice(e,t);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,C=this.index===t,y=e.validate||(()=>!0),B=await this.choiceSeparator(e,t),v=e.message;this.align==="right"&&(v=v.padStart(this.longest+1," ")),this.align==="left"&&(v=v.padEnd(this.longest+1," "));let D=this.values[a]=c||o,L=c?"success":"dark";await y.call(e,D,this.state)!==!0&&(L="danger");let H=n[L],j=H(await this.indicator(e,t))+(e.pad||""),$=this.indent(e),V=()=>[$,j,v+B,c,p].filter(Boolean).join(" ");if(i.submitted)return v=bYe.unstyle(v),c=g(c),p="",V();if(e.format)c=await e.format.call(this,c,e,t);else{let W=this.styles.muted;c=vYe(this,{input:c,initial:o,pos:s,showCursor:C,color:W})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,D,e,t)),C&&(v=f(v)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),V()}async submit(){return this.value=this.values,super.base.submit.call(this)}};jie.exports=UL});var HL=w((Uut,Jie)=>{"use strict";var xYe=oQ(),PYe=()=>{throw new Error("expected prompt to have a custom authenticate method")},qie=(r=PYe)=>{class e extends xYe{constructor(i){super(i)}async submit(){this.value=await r.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return qie(i)}}return e};Jie.exports=qie()});var Vie=w((Hut,zie)=>{"use strict";var DYe=HL();function kYe(r,e){return r.username===this.options.username&&r.password===this.options.password}var Wie=(r=kYe)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class t extends DYe.create(r){constructor(n){super({...n,choices:e})}static create(n){return Wie(n)}}return t};zie.exports=Wie()});var aQ=w((Gut,Xie)=>{"use strict";var RYe=kh(),{isPrimitive:FYe,hasColor:NYe}=Gi(),GL=class extends RYe{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:t,state:i}=this;return i.submitted?t.success(e):t.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return FYe(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return NYe(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(t),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Xie.exports=GL});var Zie=w((Yut,_ie)=>{"use strict";var LYe=aQ(),YL=class extends LYe{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};_ie.exports=YL});var ene=w((jut,$ie)=>{"use strict";var TYe=ol(),OYe=oQ(),Rh=OYe.prototype,jL=class extends TYe{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(t=>t!=null),this.emptyError="",this.values={}}dispatch(e,t){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():Rh.dispatch.call(this,e,t)}append(e,t){return Rh.append.call(this,e,t)}delete(e,t){return Rh.delete.call(this,e,t)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?Rh.next.call(this):super.next()}prev(){return this.focused.editable?Rh.prev.call(this):super.prev()}async indicator(e,t){let i=e.indicator||"",n=e.editable?i:super.indicator(e,t);return await this.resolve(n,this.state,e,t)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,t){return e.indent="",e.editable?Rh.renderChoice.call(this,e,t):super.renderChoice(e,t)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let t of this.choices){if(typeof t.validate!="function"||t.role==="heading")continue;let i=t.parent?this.value[t.parent.name]:this.value;if(t.editable?i=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(i=t.enabled===!0),e=await t.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let t=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?t[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(t[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};$ie.exports=jL});var Xc=w((qut,tne)=>{"use strict";var MYe=kh(),KYe=KL(),{isPrimitive:UYe}=Gi(),qL=class extends MYe{constructor(e){super(e),this.initial=UYe(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,t={}){let i=this.state.prevKeypress;return this.state.prevKeypress=t,this.options.multiline===!0&&t.name==="return"&&(!i||i.name!=="return")?this.append(` -`,t):super.keypress(e,t)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,t){if(!e||t.ctrl||t.code)return this.alert();this.append(e)}append(e){let{cursor:t,input:i}=this.state;this.input=`${i}`.slice(0,t)+e+`${i}`.slice(t),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:t}=this.state;if(e<=0)return this.alert();this.input=`${t}`.slice(0,e-1)+`${t}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:t}=this.state;if(t[e]===void 0)return this.alert();this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let t=this.input.slice(0,e),i=this.input.slice(e),n=t.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let t=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||t):KYe(this,{input:e,initial:t,pos:this.cursor})}async render(){let e=this.state.size,t=await this.prefix(),i=await this.separator(),n=await this.message(),s=[t,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};tne.exports=qL});var ine=w((Jut,rne)=>{"use strict";var HYe=r=>r.filter((e,t)=>r.lastIndexOf(e)===t),AQ=r=>HYe(r).filter(Boolean);rne.exports=(r,e={},t="")=>{let{past:i=[],present:n=""}=e,s,o;switch(r){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:AQ([t,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:AQ([...s,t]),present:o};case"save":return{past:AQ([...i,t]),present:""};case"remove":return o=AQ(i.filter(a=>a!==t)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${r}"`)}}});var WL=w((Wut,sne)=>{"use strict";var GYe=Xc(),nne=ine(),JL=class extends GYe{constructor(e){super(e);let t=this.options.history;if(t&&t.store){let i=t.values||this.initial;this.autosave=!!t.autosave,this.store=t.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=nne(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=nne("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};sne.exports=JL});var ane=w((zut,one)=>{"use strict";var YYe=Xc(),zL=class extends YYe{format(){return""}};one.exports=zL});var lne=w((Vut,Ane)=>{"use strict";var jYe=Xc(),VL=class extends jYe{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:t=>t;return this.list.map(e).join(", ")}async submit(e){let t=this.state.error||await this.validate(this.list,this.state);return t!==!0?(this.state.error=t,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Ane.exports=VL});var une=w((Xut,cne)=>{"use strict";var qYe=ol(),XL=class extends qYe{constructor(e){super({...e,multiple:!0})}};cne.exports=XL});var ZL=w((_ut,gne)=>{"use strict";var JYe=Xc(),_L=class extends JYe{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let t=e||this.minor,i=this.toNumber(this.input);return i>this.max+t?this.alert():(this.input=`${i+t}`,this.render())}down(e){let t=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(t));return this.value=this.toNumber(e||0),super.submit()}};gne.exports=_L});var hne=w((Zut,fne)=>{fne.exports=ZL()});var dne=w(($ut,pne)=>{"use strict";var WYe=Xc(),$L=class extends WYe{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};pne.exports=$L});var Ene=w((egt,mne)=>{"use strict";var zYe=so(),VYe=vm(),Cne=Gi(),eT=class extends VYe{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let t=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+t})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let t of this.choices){e=Math.max(e,t.message.length),t.scaleIndex=t.initial||2,t.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(t=>this.styles.info(t.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let t=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(t=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-t.join("").length,n=Math.round(i/(t.length-1)),o=t.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,t,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,t,i);let n=e.scaleIndex===t.index;return t.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,t){let i=e.scale.map(s=>this.scaleIndicator(e,s,t)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=await this.pointer(e,t),s=await e.hint;s&&!Cne.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,t),u=await this.renderScale(e,t),g=this.margin[1]+this.margin[3];this.scaleLength=zYe.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=Cne.wordWrap(c,{width:this.widths[0],newline:a}).split(` +`)),this.write(this.margin[2]),this.restore()}};vne.exports=lT});var Pne=w((kgt,xne)=>{"use strict";var Dje=dl(),kje=(r,e)=>{let t=r.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(t),o=e(i.slice(s,s+t.length));return s>=0?i.slice(0,s)+o+i.slice(s+t.length):i}},cT=class extends Dje{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:t,input:i}=this.state;return this.input=i.slice(0,t)+e+i.slice(t),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:t}=this.state;return t?(this.input=t.slice(0,e-1)+t.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:t}=this.state;return t[e]===void 0?this.alert():(this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,t=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,t);let i=e.toLowerCase();return t.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,t=kje(this.input,e),i=this.choices;this.choices=i.map(n=>({...n,message:t(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};xne.exports=cT});var gT=w((Rgt,Dne)=>{"use strict";var uT=ji();Dne.exports=(r,e={})=>{r.cursorHide();let{input:t="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||r.styles.placeholder,l=uT.inverse(r.styles.primary),c=C=>l(r.styles.black(C)),u=t,g=" ",f=c(g);if(r.blink&&r.blink.off===!0&&(c=C=>C,f=""),s&&n===0&&i===""&&t==="")return c(g);if(s&&n===0&&(t===i||t===""))return c(i[0])+a(i.slice(1));i=uT.isPrimitive(i)?`${i}`:"",t=uT.isPrimitive(t)?`${t}`:"";let h=i&&i.startsWith(t)&&i!==t,p=h?c(i[t.length]):f;if(n!==t.length&&s===!0&&(u=t.slice(0,n)+c(t[n])+t.slice(n+1),p=""),s===!1&&(p=""),h){let C=r.styles.unstyle(u+p);return u+p+a(i.slice(C.length))}return u+p}});var vQ=w((Fgt,kne)=>{"use strict";var Rje=uo(),Fje=dl(),Nje=gT(),fT=class extends Fje{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(t=>t!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(t=>t.reset&&t.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let t=this.focused;if(!t)return this.alert();let{cursor:i,input:n}=t;return t.value=t.input=n.slice(0,i)+e+n.slice(i),t.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:t,input:i}=e;return e.value=e.input=i.slice(0,t-1)+i.slice(t),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:t,input:i}=e;if(i[t]===void 0)return this.alert();let n=`${i}`.slice(0,t)+`${i}`.slice(t+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,t){return this.dispatch(e,t)}number(e,t){return this.dispatch(e,t)}next(){let e=this.focused;if(!e)return this.alert();let{initial:t,input:i}=e;return t&&t.startsWith(i)&&i!==t?(e.value=e.input=t,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,t){let i=await this.resolve(e.separator,this.state,e,t)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,t){await this.onChoice(e,t);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,C=this.index===t,y=e.validate||(()=>!0),B=await this.choiceSeparator(e,t),v=e.message;this.align==="right"&&(v=v.padStart(this.longest+1," ")),this.align==="left"&&(v=v.padEnd(this.longest+1," "));let D=this.values[a]=c||o,L=c?"success":"dark";await y.call(e,D,this.state)!==!0&&(L="danger");let H=n[L],j=H(await this.indicator(e,t))+(e.pad||""),$=this.indent(e),V=()=>[$,j,v+B,c,p].filter(Boolean).join(" ");if(i.submitted)return v=Rje.unstyle(v),c=g(c),p="",V();if(e.format)c=await e.format.call(this,c,e,t);else{let W=this.styles.muted;c=Nje(this,{input:c,initial:o,pos:s,showCursor:C,color:W})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,D,e,t)),C&&(v=f(v)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),V()}async submit(){return this.value=this.values,super.base.submit.call(this)}};kne.exports=fT});var hT=w((Ngt,Fne)=>{"use strict";var Lje=vQ(),Tje=()=>{throw new Error("expected prompt to have a custom authenticate method")},Rne=(r=Tje)=>{class e extends Lje{constructor(i){super(i)}async submit(){this.value=await r.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Rne(i)}}return e};Fne.exports=Rne()});var Tne=w((Lgt,Lne)=>{"use strict";var Oje=hT();function Mje(r,e){return r.username===this.options.username&&r.password===this.options.password}var Nne=(r=Mje)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class t extends Oje.create(r){constructor(n){super({...n,choices:e})}static create(n){return Nne(n)}}return t};Lne.exports=Nne()});var xQ=w((Tgt,One)=>{"use strict";var Uje=Yh(),{isPrimitive:Kje,hasColor:Hje}=ji(),pT=class extends Uje{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:t,state:i}=this;return i.submitted?t.success(e):t.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return Kje(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return Hje(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(t),this.write([l,a,f].filter(Boolean).join(` +`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};One.exports=pT});var Une=w((Ogt,Mne)=>{"use strict";var Gje=xQ(),dT=class extends Gje{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};Mne.exports=dT});var Hne=w((Mgt,Kne)=>{"use strict";var Yje=dl(),jje=vQ(),jh=jje.prototype,CT=class extends Yje{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(t=>t!=null),this.emptyError="",this.values={}}dispatch(e,t){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():jh.dispatch.call(this,e,t)}append(e,t){return jh.append.call(this,e,t)}delete(e,t){return jh.delete.call(this,e,t)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?jh.next.call(this):super.next()}prev(){return this.focused.editable?jh.prev.call(this):super.prev()}async indicator(e,t){let i=e.indicator||"",n=e.editable?i:super.indicator(e,t);return await this.resolve(n,this.state,e,t)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,t){return e.indent="",e.editable?jh.renderChoice.call(this,e,t):super.renderChoice(e,t)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let t of this.choices){if(typeof t.validate!="function"||t.role==="heading")continue;let i=t.parent?this.value[t.parent.name]:this.value;if(t.editable?i=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(i=t.enabled===!0),e=await t.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let t=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?t[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(t[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Kne.exports=CT});var au=w((Ugt,Gne)=>{"use strict";var qje=Yh(),Jje=gT(),{isPrimitive:Wje}=ji(),mT=class extends qje{constructor(e){super(e),this.initial=Wje(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,t={}){let i=this.state.prevKeypress;return this.state.prevKeypress=t,this.options.multiline===!0&&t.name==="return"&&(!i||i.name!=="return")?this.append(` +`,t):super.keypress(e,t)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,t){if(!e||t.ctrl||t.code)return this.alert();this.append(e)}append(e){let{cursor:t,input:i}=this.state;this.input=`${i}`.slice(0,t)+e+`${i}`.slice(t),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:t}=this.state;if(e<=0)return this.alert();this.input=`${t}`.slice(0,e-1)+`${t}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:t}=this.state;if(t[e]===void 0)return this.alert();this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let t=this.input.slice(0,e),i=this.input.slice(e),n=t.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let t=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||t):Jje(this,{input:e,initial:t,pos:this.cursor})}async render(){let e=this.state.size,t=await this.prefix(),i=await this.separator(),n=await this.message(),s=[t,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` +`)),this.restore()}};Gne.exports=mT});var jne=w((Kgt,Yne)=>{"use strict";var zje=r=>r.filter((e,t)=>r.lastIndexOf(e)===t),PQ=r=>zje(r).filter(Boolean);Yne.exports=(r,e={},t="")=>{let{past:i=[],present:n=""}=e,s,o;switch(r){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:PQ([t,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:PQ([...s,t]),present:o};case"save":return{past:PQ([...i,t]),present:""};case"remove":return o=PQ(i.filter(a=>a!==t)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${r}"`)}}});var IT=w((Hgt,Jne)=>{"use strict";var Vje=au(),qne=jne(),ET=class extends Vje{constructor(e){super(e);let t=this.options.history;if(t&&t.store){let i=t.values||this.initial;this.autosave=!!t.autosave,this.store=t.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=qne(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=qne("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};Jne.exports=ET});var zne=w((Ggt,Wne)=>{"use strict";var Xje=au(),yT=class extends Xje{format(){return""}};Wne.exports=yT});var Xne=w((Ygt,Vne)=>{"use strict";var Zje=au(),wT=class extends Zje{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:t=>t;return this.list.map(e).join(", ")}async submit(e){let t=this.state.error||await this.validate(this.list,this.state);return t!==!0?(this.state.error=t,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Vne.exports=wT});var _ne=w((jgt,Zne)=>{"use strict";var _je=dl(),BT=class extends _je{constructor(e){super({...e,multiple:!0})}};Zne.exports=BT});var bT=w((qgt,$ne)=>{"use strict";var $je=au(),QT=class extends $je{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let t=e||this.minor,i=this.toNumber(this.input);return i>this.max+t?this.alert():(this.input=`${i+t}`,this.render())}down(e){let t=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(t));return this.value=this.toNumber(e||0),super.submit()}};$ne.exports=QT});var tse=w((Jgt,ese)=>{ese.exports=bT()});var ise=w((Wgt,rse)=>{"use strict";var eqe=au(),ST=class extends eqe{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};rse.exports=ST});var ose=w((zgt,sse)=>{"use strict";var tqe=uo(),rqe=Om(),nse=ji(),vT=class extends rqe{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` + `;let t=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+t})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let t of this.choices){e=Math.max(e,t.message.length),t.scaleIndex=t.initial||2,t.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(t=>this.styles.info(t.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(i=>` ${i.name} - ${i.message}`)].map(i=>this.styles.muted(i)).join(` +`)}renderScaleHeading(e){let t=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(t=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-t.join("").length,n=Math.round(i/(t.length-1)),o=t.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,t,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,t,i);let n=e.scaleIndex===t.index;return t.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,t){let i=e.scale.map(s=>this.scaleIndicator(e,s,t)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=await this.pointer(e,t),s=await e.hint;s&&!nse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,t),u=await this.renderScale(e,t),g=this.margin[1]+this.margin[3];this.scaleLength=tqe.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=nse.wordWrap(c,{width:this.widths[0],newline:a}).split(` `).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` `)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),t=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...t.map(n=>n.join(" "))].join(` `)}async render(){let{submitted:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(t),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};mne.exports=eT});var wne=w((tgt,yne)=>{"use strict";var Ine=so(),XYe=(r="")=>typeof r=="string"?r.replace(/^['"]|['"]$/g,""):"",rT=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=XYe(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},_Ye=async(r={},e={},t=i=>i)=>{let i=new Set,n=r.fields||[],s=r.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uL.name===B.key);B.field=n.find(L=>L.name===B.key),D||(D=new rT(B),a.push(D)),D.lines.push(B.line-1);continue}let C=o[o.length-1];C.type==="text"&&C.line===c?C.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};yne.exports=async r=>{let e=r.options,t=new Set(e.required===!0?[]:e.required||[]),i={...e.values,...e.initial},{tabstops:n,items:s,keys:o}=await _Ye(e,i),a=tT("result",r,e),l=tT("format",r,e),c=tT("validate",r,e,!0),u=r.isValue.bind(r);return async(g={},f=!1)=>{let h=0;g.required=t,g.items=s,g.keys=o,g.output="";let p=async(v,D,L,H)=>{let j=await c(v,D,L,H);return j===!1?"Invalid field "+L.name:j};for(let v of n){let D=v.value,L=v.key;if(v.type!=="template"){D&&(g.output+=D);continue}if(v.type==="template"){let H=s.find(Z=>Z.name===L);e.required===!0&&g.required.add(H.name);let j=[H.input,g.values[H.value],H.value,D].find(u),V=(H.field||{}).message||v.inner;if(f){let Z=await p(g.values[L],g,H,h);if(Z&&typeof Z=="string"||Z===!1){g.invalid.set(L,Z);continue}g.invalid.delete(L);let A=await a(g.values[L],g,H,h);g.output+=Ine.unstyle(A);continue}H.placeholder=!1;let W=D;D=await l(D,g,H,h),j!==D?(g.values[L]=j,D=r.styles.typing(j),g.missing.delete(V)):(g.values[L]=void 0,j=`<${V}>`,D=r.styles.primary(j),H.placeholder=!0,g.required.has(L)&&g.missing.add(V)),g.missing.has(V)&&g.validating&&(D=r.styles.warning(j)),g.invalid.has(L)&&g.validating&&(D=r.styles.danger(j)),h===g.index&&(W!==D?D=r.styles.underline(D):D=r.styles.heading(Ine.unstyle(D))),h++}D&&(g.output+=D)}let C=g.output.split(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};sse.exports=vT});var lse=w((Vgt,Ase)=>{"use strict";var ase=uo(),iqe=(r="")=>typeof r=="string"?r.replace(/^['"]|['"]$/g,""):"",PT=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=iqe(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},nqe=async(r={},e={},t=i=>i)=>{let i=new Set,n=r.fields||[],s=r.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uL.name===B.key);B.field=n.find(L=>L.name===B.key),D||(D=new PT(B),a.push(D)),D.lines.push(B.line-1);continue}let C=o[o.length-1];C.type==="text"&&C.line===c?C.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Ase.exports=async r=>{let e=r.options,t=new Set(e.required===!0?[]:e.required||[]),i={...e.values,...e.initial},{tabstops:n,items:s,keys:o}=await nqe(e,i),a=xT("result",r,e),l=xT("format",r,e),c=xT("validate",r,e,!0),u=r.isValue.bind(r);return async(g={},f=!1)=>{let h=0;g.required=t,g.items=s,g.keys=o,g.output="";let p=async(v,D,L,H)=>{let j=await c(v,D,L,H);return j===!1?"Invalid field "+L.name:j};for(let v of n){let D=v.value,L=v.key;if(v.type!=="template"){D&&(g.output+=D);continue}if(v.type==="template"){let H=s.find(_=>_.name===L);e.required===!0&&g.required.add(H.name);let j=[H.input,g.values[H.value],H.value,D].find(u),V=(H.field||{}).message||v.inner;if(f){let _=await p(g.values[L],g,H,h);if(_&&typeof _=="string"||_===!1){g.invalid.set(L,_);continue}g.invalid.delete(L);let A=await a(g.values[L],g,H,h);g.output+=ase.unstyle(A);continue}H.placeholder=!1;let W=D;D=await l(D,g,H,h),j!==D?(g.values[L]=j,D=r.styles.typing(j),g.missing.delete(V)):(g.values[L]=void 0,j=`<${V}>`,D=r.styles.primary(j),H.placeholder=!0,g.required.has(L)&&g.missing.add(V)),g.missing.has(V)&&g.validating&&(D=r.styles.warning(j)),g.invalid.has(L)&&g.validating&&(D=r.styles.danger(j)),h===g.index&&(W!==D?D=r.styles.underline(D):D=r.styles.heading(ase.unstyle(D))),h++}D&&(g.output+=D)}let C=g.output.split(` `).map(v=>" "+v),y=s.length,B=0;for(let v of s)g.invalid.has(v.name)&&v.lines.forEach(D=>{C[D][0]===" "&&(C[D]=g.styles.danger(g.symbols.bullet)+C[D].slice(1))}),r.isValue(g.values[v.name])&&B++;return g.completed=(B/y*100).toFixed(0),g.output=C.join(` -`),g.output}};function tT(r,e,t,i){return(n,s,o,a)=>typeof o.field[r]=="function"?o.field[r].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Qne=w((rgt,Bne)=>{"use strict";var ZYe=so(),$Ye=wne(),eje=kh(),iT=class extends eje{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await $Ye(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let t=this.getItem();this.cursor+=e,t.cursor+=e}dispatch(e,t){if(!t.code&&!t.ctrl&&e!=null&&this.getItem()){this.append(e,t);return}this.alert()}append(e,t){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let t=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${t}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let t=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(t=this.styles.danger),t(`${this.state.completed}% completed`)}async render(){let{index:e,keys:t=[],submitted:i,size:n}=this.state,s=[this.options.newline,` +`),g.output}};function xT(r,e,t,i){return(n,s,o,a)=>typeof o.field[r]=="function"?o.field[r].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var use=w((Xgt,cse)=>{"use strict";var sqe=uo(),oqe=lse(),aqe=Yh(),DT=class extends aqe{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await oqe(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let t=this.getItem();this.cursor+=e,t.cursor+=e}dispatch(e,t){if(!t.code&&!t.ctrl&&e!=null&&this.getItem()){this.append(e,t);return}this.alert()}append(e,t){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let t=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${t}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let t=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(t=this.styles.danger),t(`${this.state.completed}% completed`)}async render(){let{index:e,keys:t=[],submitted:i,size:n}=this.state,s=[this.options.newline,` `].find(v=>v!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=t[e]||"",C=await this.format(p),y=await this.footer();C&&(c+=" "+C),f&&!C&&this.state.completed===0&&(c+=" "+f),this.clear(n);let B=[u,c,h,y,g.trim()];this.write(B.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:t,keys:i,index:n}=this.state,s=t.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:t,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(t.size)return this.state.error="Required: "+[...t.keys()].join(", "),super.submit();let o=ZYe.unstyle(i).split(` +`;return this.state.error=a,super.submit()}if(t.size)return this.state.error="Required: "+[...t.keys()].join(", "),super.submit();let o=sqe.unstyle(i).split(` `).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};Bne.exports=iT});var Sne=w((igt,bne)=>{"use strict";var tje="(Use + to sort)",rje=ol(),nT=class extends rje{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,tje].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,t){let i=await super.renderChoice(e,t),n=this.symbols.identicalTo+" ",s=this.index===t&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${t+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};bne.exports=nT});var xne=w((ngt,vne)=>{"use strict";var ije=vm(),sT=class extends ije{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let t=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];t=t.map(i=>this.styles.muted(i)),this.state.header=t.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let t=await super.toChoices(...e);for(let i of t)i.scale=nje(5,this.options),i.scaleIdx=2;return t}dispatch(){this.alert()}space(){let e=this.focused,t=e.scale[e.scaleIdx],i=t.selected;return e.scale.forEach(n=>n.selected=!1),t.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=D=>(D?this.styles.success("\u25C9"):"\u25EF")+o,u=t+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,t),h=this.indent(e),p=h+e.scale.map((D,L)=>c(L===e.scaleIdx)).join(a),C=D=>D===e.scaleIdx?g(D):D,y=h+e.scale.map((D,L)=>C(L)).join(l),B=()=>[u,f].filter(Boolean).join(" "),v=()=>[B(),p,y," "].filter(Boolean).join(` +`);return this.value={values:n,result:o},super.submit()}};cse.exports=DT});var fse=w((Zgt,gse)=>{"use strict";var Aqe="(Use + to sort)",lqe=dl(),kT=class extends lqe{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Aqe].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,t){let i=await super.renderChoice(e,t),n=this.symbols.identicalTo+" ",s=this.index===t&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${t+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};gse.exports=kT});var pse=w((_gt,hse)=>{"use strict";var cqe=Om(),RT=class extends cqe{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let t=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];t=t.map(i=>this.styles.muted(i)),this.state.header=t.join(` + `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let t=await super.toChoices(...e);for(let i of t)i.scale=uqe(5,this.options),i.scaleIdx=2;return t}dispatch(){this.alert()}space(){let e=this.focused,t=e.scale[e.scaleIdx],i=t.selected;return e.scale.forEach(n=>n.selected=!1),t.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=D=>(D?this.styles.success("\u25C9"):"\u25EF")+o,u=t+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,t),h=this.indent(e),p=h+e.scale.map((D,L)=>c(L===e.scaleIdx)).join(a),C=D=>D===e.scaleIdx?g(D):D,y=h+e.scale.map((D,L)=>C(L)).join(l),B=()=>[u,f].filter(Boolean).join(" "),v=()=>[B(),p,y," "].filter(Boolean).join(` `);return i&&(p=this.styles.cyan(p),y=this.styles.cyan(y)),v()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),t=await Promise.all(e);return t.length||t.push(this.styles.danger("No matching choices")),t.join(` `)}format(){return this.state.submitted?this.choices.map(t=>this.styles.info(t.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(t),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function nje(r,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>({...i}));let t=[];for(let i=1;i{Pne.exports=WL()});var Rne=w((ogt,kne)=>{"use strict";var sje=aQ(),oT=class extends sje{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",t){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,t=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([t,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};kne.exports=oT});var Nne=w((agt,Fne)=>{"use strict";var oje=ol(),aT=class extends oje{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,t){let i=await super.toChoices(e,t);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Fne.exports=aT});var Tne=w(AT=>{"use strict";var Lne=Gi(),ui=(r,e)=>{Lne.defineExport(AT,r,e),Lne.defineExport(AT,r.toLowerCase(),e)};ui("AutoComplete",()=>Gie());ui("BasicAuth",()=>Vie());ui("Confirm",()=>Zie());ui("Editable",()=>ene());ui("Form",()=>oQ());ui("Input",()=>WL());ui("Invisible",()=>ane());ui("List",()=>lne());ui("MultiSelect",()=>une());ui("Numeral",()=>hne());ui("Password",()=>dne());ui("Scale",()=>Ene());ui("Select",()=>ol());ui("Snippet",()=>Qne());ui("Sort",()=>Sne());ui("Survey",()=>xne());ui("Text",()=>Dne());ui("Toggle",()=>Rne());ui("Quiz",()=>Nne())});var Mne=w((lgt,One)=>{One.exports={ArrayPrompt:vm(),AuthPrompt:HL(),BooleanPrompt:aQ(),NumberPrompt:ZL(),StringPrompt:Xc()}});var Pm=w((cgt,Une)=>{"use strict";var Kne=J("assert"),cT=J("events"),al=Gi(),ao=class extends cT{constructor(e,t){super(),this.options=al.merge({},e),this.answers={...t}}register(e,t){if(al.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}Kne.equal(typeof t,"function","expected a function");let i=e.toLowerCase();return t.prototype instanceof this.Prompt?this.prompts[i]=t:this.prompts[i]=t(this.Prompt,this),this}async prompt(e=[]){for(let t of[].concat(e))try{typeof t=="function"&&(t=await t.call(this)),await this.ask(al.merge({},this.options,t))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let t=al.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=al;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];Kne(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](t),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),t.autofill&&l!=null?(a.value=a.input=l,t.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||kh()}static get prompts(){return Tne()}static get types(){return Mne()}static get prompt(){let e=(t,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(t)};return al.mixinEmitter(e,new cT),e}};al.mixinEmitter(ao,new cT);var lT=ao.prompts;for(let r of Object.keys(lT)){let e=r.toLowerCase(),t=i=>new lT[r](i).run();ao.prompt[e]=t,ao[e]=t,ao[r]||Reflect.defineProperty(ao,r,{get:()=>lT[r]})}var xm=r=>{al.defineExport(ao,r,()=>ao.types[r])};xm("ArrayPrompt");xm("AuthPrompt");xm("BooleanPrompt");xm("NumberPrompt");xm("StringPrompt");Une.exports=ao});var Xne=w((_gt,Vne)=>{function uje(r,e){for(var t=-1,i=r==null?0:r.length;++t{var gje=B0(),fje=gh();function hje(r,e,t,i){var n=!t;t||(t={});for(var s=-1,o=e.length;++s{var pje=Nh(),dje=Ih();function Cje(r,e){return r&&pje(e,dje(e),r)}Zne.exports=Cje});var tse=w((eft,ese)=>{function mje(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}ese.exports=mje});var ise=w((tft,rse)=>{var Eje=bn(),Ije=U0(),yje=tse(),wje=Object.prototype,Bje=wje.hasOwnProperty;function Qje(r){if(!Eje(r))return yje(r);var e=Ije(r),t=[];for(var i in r)i=="constructor"&&(e||!Bje.call(r,i))||t.push(i);return t}rse.exports=Qje});var Lh=w((rft,nse)=>{var bje=NN(),Sje=ise(),vje=rm();function xje(r){return vje(r)?bje(r,!0):Sje(r)}nse.exports=xje});var ose=w((ift,sse)=>{var Pje=Nh(),Dje=Lh();function kje(r,e){return r&&Pje(e,Dje(e),r)}sse.exports=kje});var dT=w((Fm,Th)=>{var Rje=ds(),cse=typeof Fm=="object"&&Fm&&!Fm.nodeType&&Fm,ase=cse&&typeof Th=="object"&&Th&&!Th.nodeType&&Th,Fje=ase&&ase.exports===cse,Ase=Fje?Rje.Buffer:void 0,lse=Ase?Ase.allocUnsafe:void 0;function Nje(r,e){if(e)return r.slice();var t=r.length,i=lse?lse(t):new r.constructor(t);return r.copy(i),i}Th.exports=Nje});var CT=w((nft,use)=>{function Lje(r,e){var t=-1,i=r.length;for(e||(e=Array(i));++t{var Tje=Nh(),Oje=G0();function Mje(r,e){return Tje(r,Oje(r),e)}gse.exports=Mje});var cQ=w((oft,hse)=>{var Kje=LN(),Uje=Kje(Object.getPrototypeOf,Object);hse.exports=Uje});var mT=w((aft,pse)=>{var Hje=b0(),Gje=cQ(),Yje=G0(),jje=HN(),qje=Object.getOwnPropertySymbols,Jje=qje?function(r){for(var e=[];r;)Hje(e,Yje(r)),r=Gje(r);return e}:jje;pse.exports=Jje});var Cse=w((Aft,dse)=>{var Wje=Nh(),zje=mT();function Vje(r,e){return Wje(r,zje(r),e)}dse.exports=Vje});var Ese=w((lft,mse)=>{var Xje=UN(),_je=mT(),Zje=Lh();function $je(r){return Xje(r,Zje,_je)}mse.exports=$je});var yse=w((cft,Ise)=>{var eqe=Object.prototype,tqe=eqe.hasOwnProperty;function rqe(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&tqe.call(r,"index")&&(t.index=r.index,t.input=r.input),t}Ise.exports=rqe});var uQ=w((uft,Bse)=>{var wse=MN();function iqe(r){var e=new r.constructor(r.byteLength);return new wse(e).set(new wse(r)),e}Bse.exports=iqe});var bse=w((gft,Qse)=>{var nqe=uQ();function sqe(r,e){var t=e?nqe(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}Qse.exports=sqe});var vse=w((fft,Sse)=>{var oqe=/\w*$/;function aqe(r){var e=new r.constructor(r.source,oqe.exec(r));return e.lastIndex=r.lastIndex,e}Sse.exports=aqe});var Rse=w((hft,kse)=>{var xse=Ec(),Pse=xse?xse.prototype:void 0,Dse=Pse?Pse.valueOf:void 0;function Aqe(r){return Dse?Object(Dse.call(r)):{}}kse.exports=Aqe});var ET=w((pft,Fse)=>{var lqe=uQ();function cqe(r,e){var t=e?lqe(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}Fse.exports=cqe});var Lse=w((dft,Nse)=>{var uqe=uQ(),gqe=bse(),fqe=vse(),hqe=Rse(),pqe=ET(),dqe="[object Boolean]",Cqe="[object Date]",mqe="[object Map]",Eqe="[object Number]",Iqe="[object RegExp]",yqe="[object Set]",wqe="[object String]",Bqe="[object Symbol]",Qqe="[object ArrayBuffer]",bqe="[object DataView]",Sqe="[object Float32Array]",vqe="[object Float64Array]",xqe="[object Int8Array]",Pqe="[object Int16Array]",Dqe="[object Int32Array]",kqe="[object Uint8Array]",Rqe="[object Uint8ClampedArray]",Fqe="[object Uint16Array]",Nqe="[object Uint32Array]";function Lqe(r,e,t){var i=r.constructor;switch(e){case Qqe:return uqe(r);case dqe:case Cqe:return new i(+r);case bqe:return gqe(r,t);case Sqe:case vqe:case xqe:case Pqe:case Dqe:case kqe:case Rqe:case Fqe:case Nqe:return pqe(r,t);case mqe:return new i;case Eqe:case wqe:return new i(r);case Iqe:return fqe(r);case yqe:return new i;case Bqe:return hqe(r)}}Nse.exports=Lqe});var Mse=w((Cft,Ose)=>{var Tqe=bn(),Tse=Object.create,Oqe=function(){function r(){}return function(e){if(!Tqe(e))return{};if(Tse)return Tse(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}();Ose.exports=Oqe});var IT=w((mft,Kse)=>{var Mqe=Mse(),Kqe=cQ(),Uqe=U0();function Hqe(r){return typeof r.constructor=="function"&&!Uqe(r)?Mqe(Kqe(r)):{}}Kse.exports=Hqe});var Hse=w((Eft,Use)=>{var Gqe=nm(),Yqe=Go(),jqe="[object Map]";function qqe(r){return Yqe(r)&&Gqe(r)==jqe}Use.exports=qqe});var qse=w((Ift,jse)=>{var Jqe=Hse(),Wqe=O0(),Gse=M0(),Yse=Gse&&Gse.isMap,zqe=Yse?Wqe(Yse):Jqe;jse.exports=zqe});var Wse=w((yft,Jse)=>{var Vqe=nm(),Xqe=Go(),_qe="[object Set]";function Zqe(r){return Xqe(r)&&Vqe(r)==_qe}Jse.exports=Zqe});var _se=w((wft,Xse)=>{var $qe=Wse(),eJe=O0(),zse=M0(),Vse=zse&&zse.isSet,tJe=Vse?eJe(Vse):$qe;Xse.exports=tJe});var roe=w((Bft,toe)=>{var rJe=im(),iJe=Xne(),nJe=B0(),sJe=$ne(),oJe=ose(),aJe=dT(),AJe=CT(),lJe=fse(),cJe=Cse(),uJe=GN(),gJe=Ese(),fJe=nm(),hJe=yse(),pJe=Lse(),dJe=IT(),CJe=ws(),mJe=$C(),EJe=qse(),IJe=bn(),yJe=_se(),wJe=Ih(),BJe=Lh(),QJe=1,bJe=2,SJe=4,Zse="[object Arguments]",vJe="[object Array]",xJe="[object Boolean]",PJe="[object Date]",DJe="[object Error]",$se="[object Function]",kJe="[object GeneratorFunction]",RJe="[object Map]",FJe="[object Number]",eoe="[object Object]",NJe="[object RegExp]",LJe="[object Set]",TJe="[object String]",OJe="[object Symbol]",MJe="[object WeakMap]",KJe="[object ArrayBuffer]",UJe="[object DataView]",HJe="[object Float32Array]",GJe="[object Float64Array]",YJe="[object Int8Array]",jJe="[object Int16Array]",qJe="[object Int32Array]",JJe="[object Uint8Array]",WJe="[object Uint8ClampedArray]",zJe="[object Uint16Array]",VJe="[object Uint32Array]",ur={};ur[Zse]=ur[vJe]=ur[KJe]=ur[UJe]=ur[xJe]=ur[PJe]=ur[HJe]=ur[GJe]=ur[YJe]=ur[jJe]=ur[qJe]=ur[RJe]=ur[FJe]=ur[eoe]=ur[NJe]=ur[LJe]=ur[TJe]=ur[OJe]=ur[JJe]=ur[WJe]=ur[zJe]=ur[VJe]=!0;ur[DJe]=ur[$se]=ur[MJe]=!1;function gQ(r,e,t,i,n,s){var o,a=e&QJe,l=e&bJe,c=e&SJe;if(t&&(o=n?t(r,i,n,s):t(r)),o!==void 0)return o;if(!IJe(r))return r;var u=CJe(r);if(u){if(o=hJe(r),!a)return AJe(r,o)}else{var g=fJe(r),f=g==$se||g==kJe;if(mJe(r))return aJe(r,a);if(g==eoe||g==Zse||f&&!n){if(o=l||f?{}:dJe(r),!a)return l?cJe(r,oJe(o,r)):lJe(r,sJe(o,r))}else{if(!ur[g])return n?r:{};o=pJe(r,g,a)}}s||(s=new rJe);var h=s.get(r);if(h)return h;s.set(r,o),yJe(r)?r.forEach(function(y){o.add(gQ(y,e,t,y,r,s))}):EJe(r)&&r.forEach(function(y,B){o.set(B,gQ(y,e,t,B,r,s))});var p=c?l?gJe:uJe:l?BJe:wJe,C=u?void 0:p(r);return iJe(C||r,function(y,B){C&&(B=y,y=r[B]),nJe(o,B,gQ(y,e,t,B,r,s))}),o}toe.exports=gQ});var yT=w((Qft,ioe)=>{var XJe=roe(),_Je=1,ZJe=4;function $Je(r){return XJe(r,_Je|ZJe)}ioe.exports=$Je});var soe=w((bft,noe)=>{var eWe=gN();function tWe(r,e,t){return r==null?r:eWe(r,e,t)}noe.exports=tWe});var coe=w((kft,loe)=>{function rWe(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}loe.exports=rWe});var goe=w((Rft,uoe)=>{var iWe=JC(),nWe=bR();function sWe(r,e){return e.length<2?r:iWe(r,nWe(e,0,-1))}uoe.exports=sWe});var hoe=w((Fft,foe)=>{var oWe=uh(),aWe=coe(),AWe=goe(),lWe=Uc();function cWe(r,e){return e=oWe(e,r),r=AWe(r,e),r==null||delete r[lWe(aWe(e))]}foe.exports=cWe});var doe=w((Nft,poe)=>{var uWe=hoe();function gWe(r,e){return r==null?!0:uWe(r,e)}poe.exports=gWe});var yoe=w((Aht,pWe)=>{pWe.exports={name:"@yarnpkg/cli",version:"3.4.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"3.2.0-rc.4",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var kT=w((FCt,Loe)=>{"use strict";Loe.exports=function(e,t){t===!0&&(t=0);var i="";if(typeof e=="string")try{i=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(i=e.protocol);var n=i.split(/\:|\+/).filter(Boolean);return typeof t=="number"?n[t]:n}});var Ooe=w((NCt,Toe)=>{"use strict";var NWe=kT();function LWe(r){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:r,query:{},parse_failed:!1};try{var t=new URL(r);e.protocols=NWe(t),e.protocol=e.protocols[0],e.port=t.port,e.resource=t.hostname,e.host=t.host,e.user=t.username||"",e.password=t.password||"",e.pathname=t.pathname,e.hash=t.hash.slice(1),e.search=t.search.slice(1),e.href=t.href,e.query=Object.fromEntries(t.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=r,e.query={},e.parse_failed=!0}return e}Toe.exports=LWe});var Uoe=w((LCt,Koe)=>{"use strict";var TWe=Ooe();function OWe(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var MWe=OWe(TWe),KWe="text/plain",UWe="us-ascii",Moe=(r,e)=>e.some(t=>t instanceof RegExp?t.test(r):t===r),HWe=(r,{stripHash:e})=>{let t=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(r);if(!t)throw new Error(`Invalid URL: ${r}`);let{type:i,data:n,hash:s}=t.groups,o=i.split(";");s=e?"":s;let a=!1;o[o.length-1]==="base64"&&(o.pop(),a=!0);let l=(o.shift()||"").toLowerCase(),u=[...o.map(g=>{let[f,h=""]=g.split("=").map(p=>p.trim());return f==="charset"&&(h=h.toLowerCase(),h===UWe)?"":`${f}${h?`=${h}`:""}`}).filter(Boolean)];return a&&u.push("base64"),(u.length>0||l&&l!==KWe)&&u.unshift(l),`data:${u.join(";")},${a?n.trim():n}${s?`#${s}`:""}`};function GWe(r,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},r=r.trim(),/^data:/i.test(r))return HWe(r,e);if(/^view-source:/i.test(r))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let t=r.startsWith("//");!t&&/^\.*\//.test(r)||(r=r.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new URL(r);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash?n.hash="":e.stripTextFragment&&(n.hash=n.hash.replace(/#?:~:text.*?$/i,"")),n.pathname){let o=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,a=0,l="";for(;;){let u=o.exec(n.pathname);if(!u)break;let g=u[0],f=u.index;l+=n.pathname.slice(a,f).replace(/\/{2,}/g,"/"),l+=g,a=f+g.length}l+=n.pathname.slice(a,n.pathname.length).replace(/\/{2,}/g,"/"),n.pathname=l}if(n.pathname)try{n.pathname=decodeURI(n.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let o=n.pathname.split("/"),a=o[o.length-1];Moe(a,e.removeDirectoryIndex)&&(o=o.slice(0,-1),n.pathname=o.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let o of[...n.searchParams.keys()])Moe(o,e.removeQueryParameters)&&n.searchParams.delete(o);if(e.removeQueryParameters===!0&&(n.search=""),e.sortQueryParameters){n.searchParams.sort();try{n.search=decodeURIComponent(n.search)}catch{}}e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,""));let s=r;return r=n.toString(),!e.removeSingleSlash&&n.pathname==="/"&&!s.endsWith("/")&&n.hash===""&&(r=r.replace(/\/$/,"")),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&e.removeSingleSlash&&(r=r.replace(/\/$/,"")),t&&!e.normalizeProtocol&&(r=r.replace(/^http:\/\//,"//")),e.stripProtocol&&(r=r.replace(/^(?:https?:)?\/\//,"")),r}var RT=(r,e=!1)=>{let t=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,i=s=>{let o=new Error(s);throw o.subject_url=r,o};(typeof r!="string"||!r.trim())&&i("Invalid url."),r.length>RT.MAX_INPUT_LENGTH&&i("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),r=GWe(r,e));let n=MWe.default(r);if(n.parse_failed){let s=n.href.match(t);s?(n.protocols=["ssh"],n.protocol="ssh",n.resource=s[2],n.host=s[2],n.user=s[1],n.pathname=`/${s[3]}`,n.parse_failed=!1):i("URL parsing failed.")}return n};RT.MAX_INPUT_LENGTH=2048;Koe.exports=RT});var Yoe=w((TCt,Goe)=>{"use strict";var YWe=kT();function Hoe(r){if(Array.isArray(r))return r.indexOf("ssh")!==-1||r.indexOf("rsync")!==-1;if(typeof r!="string")return!1;var e=YWe(r);if(r=r.substring(r.indexOf("://")+3),Hoe(e))return!0;var t=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!r.match(t)&&r.indexOf("@"){"use strict";var jWe=Uoe(),joe=Yoe();function qWe(r){var e=jWe(r);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),joe(e.protocols)||e.protocols.length===0&&joe(r)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}qoe.exports=qWe});var zoe=w((MCt,Woe)=>{"use strict";var JWe=Joe();function FT(r){if(typeof r!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(r)&&(r="https://github.com/"+r);var t=JWe(r),i=t.resource.split("."),n=null;switch(t.toString=function(y){return FT.stringify(this,y)},t.source=i.length>2?i.slice(1-i.length).join("."):t.source=t.resource,t.git_suffix=/\.git$/.test(t.pathname),t.name=decodeURIComponent((t.pathname||t.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),t.owner=decodeURIComponent(t.user),t.source){case"git.cloudforge.com":t.owner=t.user,t.organization=i[0],t.source="cloudforge.com";break;case"visualstudio.com":if(t.resource==="vs-ssh.visualstudio.com"){n=t.name.split("/"),n.length===4&&(t.organization=n[1],t.owner=n[2],t.name=n[3],t.full_name=n[2]+"/"+n[3]);break}else{n=t.name.split("/"),n.length===2?(t.owner=n[1],t.name=n[1],t.full_name="_git/"+t.name):n.length===3?(t.name=n[2],n[0]==="DefaultCollection"?(t.owner=n[2],t.organization=n[0],t.full_name=t.organization+"/_git/"+t.name):(t.owner=n[0],t.full_name=t.owner+"/_git/"+t.name)):n.length===4&&(t.organization=n[0],t.owner=n[1],t.name=n[3],t.full_name=t.organization+"/"+t.owner+"/_git/"+t.name);break}case"dev.azure.com":case"azure.com":if(t.resource==="ssh.dev.azure.com"){n=t.name.split("/"),n.length===4&&(t.organization=n[1],t.owner=n[2],t.name=n[3]);break}else{n=t.name.split("/"),n.length===5?(t.organization=n[0],t.owner=n[1],t.name=n[4],t.full_name="_git/"+t.name):n.length===3?(t.name=n[2],n[0]==="DefaultCollection"?(t.owner=n[2],t.organization=n[0],t.full_name=t.organization+"/_git/"+t.name):(t.owner=n[0],t.full_name=t.owner+"/_git/"+t.name)):n.length===4&&(t.organization=n[0],t.owner=n[1],t.name=n[3],t.full_name=t.organization+"/"+t.owner+"/_git/"+t.name),t.query&&t.query.path&&(t.filepath=t.query.path.replace(/^\/+/g,"")),t.query&&t.query.version&&(t.ref=t.query.version.replace(/^GB/,""));break}default:n=t.name.split("/");var s=n.length-1;if(n.length>=2){var o=n.indexOf("-",2),a=n.indexOf("blob",2),l=n.indexOf("tree",2),c=n.indexOf("commit",2),u=n.indexOf("src",2),g=n.indexOf("raw",2),f=n.indexOf("edit",2);s=o>0?o-1:a>0?a-1:l>0?l-1:c>0?c-1:u>0?u-1:g>0?g-1:f>0?f-1:s,t.owner=n.slice(0,s).join("/"),t.name=n[s],c&&(t.commit=n[s+2])}t.ref="",t.filepathtype="",t.filepath="";var h=n.length>s&&n[s+1]==="-"?s+1:s;n.length>h+2&&["raw","src","blob","tree","edit"].indexOf(n[h+1])>=0&&(t.filepathtype=n[h+1],t.ref=n[h+2],n.length>h+3&&(t.filepath=n.slice(h+3).join("/"))),t.organization=t.owner;break}t.full_name||(t.full_name=t.owner,t.name&&(t.full_name&&(t.full_name+="/"),t.full_name+=t.name)),t.owner.startsWith("scm/")&&(t.source="bitbucket-server",t.owner=t.owner.replace("scm/",""),t.organization=t.owner,t.full_name=t.owner+"/"+t.name);var p=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,C=p.exec(t.pathname);return C!=null&&(t.source="bitbucket-server",C[1]==="users"?t.owner="~"+C[2]:t.owner=C[2],t.organization=t.owner,t.name=C[3],n=C[4].split("/"),n.length>1&&(["raw","browse"].indexOf(n[1])>=0?(t.filepathtype=n[1],n.length>2&&(t.filepath=n.slice(2).join("/"))):n[1]==="commits"&&n.length>2&&(t.commit=n[2])),t.full_name=t.owner+"/"+t.name,t.query.at?t.ref=t.query.at:t.ref=""),t}FT.stringify=function(r,e){e=e||(r.protocols&&r.protocols.length?r.protocols.join("+"):r.protocol);var t=r.port?":"+r.port:"",i=r.user||"git",n=r.git_suffix?".git":"";switch(e){case"ssh":return t?"ssh://"+i+"@"+r.resource+t+"/"+r.full_name+n:i+"@"+r.resource+":"+r.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+r.resource+t+"/"+r.full_name+n;case"http":case"https":var s=r.token?WWe(r):r.user&&(r.protocols.includes("http")||r.protocols.includes("https"))?r.user+"@":"";return e+"://"+s+r.resource+t+"/"+zWe(r)+n;default:return r.href}};function WWe(r){switch(r.source){case"bitbucket.org":return"x-token-auth:"+r.token+"@";default:return r.token+"@"}}function zWe(r){switch(r.source){case"bitbucket-server":return"scm/"+r.full_name;default:return""+r.full_name}}Woe.exports=FT});var tO=w((xIt,fae)=>{var p3e=gh(),d3e=Ah();function C3e(r,e,t){(t!==void 0&&!d3e(r[e],t)||t===void 0&&!(e in r))&&p3e(r,e,t)}fae.exports=C3e});var pae=w((PIt,hae)=>{var m3e=rm(),E3e=Go();function I3e(r){return E3e(r)&&m3e(r)}hae.exports=I3e});var mae=w((DIt,Cae)=>{var y3e=Ic(),w3e=cQ(),B3e=Go(),Q3e="[object Object]",b3e=Function.prototype,S3e=Object.prototype,dae=b3e.toString,v3e=S3e.hasOwnProperty,x3e=dae.call(Object);function P3e(r){if(!B3e(r)||y3e(r)!=Q3e)return!1;var e=w3e(r);if(e===null)return!0;var t=v3e.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&dae.call(t)==x3e}Cae.exports=P3e});var rO=w((kIt,Eae)=>{function D3e(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}Eae.exports=D3e});var yae=w((RIt,Iae)=>{var k3e=Nh(),R3e=Lh();function F3e(r){return k3e(r,R3e(r))}Iae.exports=F3e});var vae=w((FIt,Sae)=>{var wae=tO(),N3e=dT(),L3e=ET(),T3e=CT(),O3e=IT(),Bae=zC(),Qae=ws(),M3e=pae(),K3e=$C(),U3e=I0(),H3e=bn(),G3e=mae(),Y3e=K0(),bae=rO(),j3e=yae();function q3e(r,e,t,i,n,s,o){var a=bae(r,t),l=bae(e,t),c=o.get(l);if(c){wae(r,t,c);return}var u=s?s(a,l,t+"",r,e,o):void 0,g=u===void 0;if(g){var f=Qae(l),h=!f&&K3e(l),p=!f&&!h&&Y3e(l);u=l,f||h||p?Qae(a)?u=a:M3e(a)?u=T3e(a):h?(g=!1,u=N3e(l,!0)):p?(g=!1,u=L3e(l,!0)):u=[]:G3e(l)||Bae(l)?(u=a,Bae(a)?u=j3e(a):(!H3e(a)||U3e(a))&&(u=O3e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),wae(r,t,u)}Sae.exports=q3e});var Dae=w((NIt,Pae)=>{var J3e=im(),W3e=tO(),z3e=RN(),V3e=vae(),X3e=bn(),_3e=Lh(),Z3e=rO();function xae(r,e,t,i,n){r!==e&&z3e(e,function(s,o){if(n||(n=new J3e),X3e(s))V3e(r,e,o,t,xae,i,n);else{var a=i?i(Z3e(r,o),s,o+"",r,e,n):void 0;a===void 0&&(a=s),W3e(r,o,a)}},_3e)}Pae.exports=xae});var Rae=w((LIt,kae)=>{var $3e=S0(),e4e=pN(),t4e=dN();function r4e(r,e){return t4e(e4e(r,e,$3e),r+"")}kae.exports=r4e});var Nae=w((TIt,Fae)=>{var i4e=Ah(),n4e=rm(),s4e=WC(),o4e=bn();function a4e(r,e,t){if(!o4e(t))return!1;var i=typeof e;return(i=="number"?n4e(t)&&s4e(e,t.length):i=="string"&&e in t)?i4e(t[e],r):!1}Fae.exports=a4e});var Tae=w((OIt,Lae)=>{var A4e=Rae(),l4e=Nae();function c4e(r){return A4e(function(e,t){var i=-1,n=t.length,s=n>1?t[n-1]:void 0,o=n>2?t[2]:void 0;for(s=r.length>3&&typeof s=="function"?(n--,s):void 0,o&&l4e(t[0],t[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var u4e=Dae(),g4e=Tae(),f4e=g4e(function(r,e,t){u4e(r,e,t)});Oae.exports=f4e});var Zae=w((Oyt,_ae)=>{var gO;_ae.exports=()=>(typeof gO>"u"&&(gO=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),gO)});var EAe=w((Awt,mAe)=>{var mO=Symbol("arg flag"),Pn=class extends Error{constructor(e,t){super(e),this.name="ArgError",this.code=t,Object.setPrototypeOf(this,Pn.prototype)}};function $m(r,{argv:e=process.argv.slice(2),permissive:t=!1,stopAtPositional:i=!1}={}){if(!r)throw new Pn("argument specification object is required","ARG_CONFIG_NO_SPEC");let n={_:[]},s={},o={};for(let a of Object.keys(r)){if(!a)throw new Pn("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(a[0]!=="-")throw new Pn(`argument key must start with '-' but found: '${a}'`,"ARG_CONFIG_NONOPT_KEY");if(a.length===1)throw new Pn(`argument key must have a name; singular '-' keys are not allowed: ${a}`,"ARG_CONFIG_NONAME_KEY");if(typeof r[a]=="string"){s[a]=r[a];continue}let l=r[a],c=!1;if(Array.isArray(l)&&l.length===1&&typeof l[0]=="function"){let[u]=l;l=(g,f,h=[])=>(h.push(u(g,f,h[h.length-1])),h),c=u===Boolean||u[mO]===!0}else if(typeof l=="function")c=l===Boolean||l[mO]===!0;else throw new Pn(`type missing or not a function or valid array type: ${a}`,"ARG_CONFIG_VAD_TYPE");if(a[1]!=="-"&&a.length>2)throw new Pn(`short argument keys (with a single hyphen) must have only one character: ${a}`,"ARG_CONFIG_SHORTOPT_TOOLONG");o[a]=[l,c]}for(let a=0,l=e.length;a0){n._=n._.concat(e.slice(a));break}if(c==="--"){n._=n._.concat(e.slice(a+1));break}if(c.length>1&&c[0]==="-"){let u=c[1]==="-"||c.length===2?[c]:c.slice(1).split("").map(g=>`-${g}`);for(let g=0;g1&&e[a+1][0]==="-"&&!(e[a+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(y===Number||typeof BigInt<"u"&&y===BigInt))){let v=h===C?"":` (alias for ${C})`;throw new Pn(`option requires argument: ${h}${v}`,"ARG_MISSING_REQUIRED_LONGARG")}n[C]=y(e[a+1],C,n[C]),++a}else n[C]=y(p,C,n[C])}}else n._.push(c)}return n}$m.flag=r=>(r[mO]=!0,r);$m.COUNT=$m.flag((r,e,t)=>(t||0)+1);$m.ArgError=Pn;mAe.exports=$m});var DAe=w((Mwt,PAe)=>{var wO;PAe.exports=()=>(typeof wO>"u"&&(wO=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),wO)});var OAe=w((xO,PO)=>{(function(r){xO&&typeof xO=="object"&&typeof PO<"u"?PO.exports=r():typeof define=="function"&&define.amd?define([],r):typeof window<"u"?window.isWindows=r():typeof global<"u"?global.isWindows=r():typeof self<"u"?self.isWindows=r():this.isWindows=r()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var HAe=w((OBt,UAe)=>{"use strict";DO.ifExists=u8e;var Wh=J("util"),ks=J("path"),MAe=OAe(),A8e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,l8e={createPwshFile:!0,createCmdFile:MAe(),fs:J("fs")},c8e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function KAe(r){let e={...l8e,...r},t=e.fs;return e.fs_={chmod:t.chmod?Wh.promisify(t.chmod):async()=>{},mkdir:Wh.promisify(t.mkdir),readFile:Wh.promisify(t.readFile),stat:Wh.promisify(t.stat),unlink:Wh.promisify(t.unlink),writeFile:Wh.promisify(t.writeFile)},e}async function DO(r,e,t){let i=KAe(t);await i.fs_.stat(r),await f8e(r,e,i)}function u8e(r,e,t){return DO(r,e,t).catch(()=>{})}function g8e(r,e){return e.fs_.unlink(r).catch(()=>{})}async function f8e(r,e,t){let i=await m8e(r,t);return await h8e(e,t),p8e(r,e,i,t)}function h8e(r,e){return e.fs_.mkdir(ks.dirname(r),{recursive:!0})}function p8e(r,e,t,i){let n=KAe(i),s=[{generator:y8e,extension:""}];return n.createCmdFile&&s.push({generator:I8e,extension:".cmd"}),n.createPwshFile&&s.push({generator:w8e,extension:".ps1"}),Promise.all(s.map(o=>E8e(r,e+o.extension,t,o.generator,n)))}function d8e(r,e){return g8e(r,e)}function C8e(r,e){return B8e(r,e)}async function m8e(r,e){let n=(await e.fs_.readFile(r,"utf8")).trim().split(/\r*\n/)[0].match(A8e);if(!n){let s=ks.extname(r).toLowerCase();return{program:c8e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function E8e(r,e,t,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[t.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:t.program,args:o}),await d8e(e,n),await n.fs_.writeFile(e,i(r,e,n),"utf8"),C8e(e,n)}function I8e(r,e,t){let n=ks.relative(ks.dirname(e),r).split("/").join("\\"),s=ks.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=t.prog,l=t.args||"",c=kO(t.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=t.progArgs?`${t.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r +`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function uqe(r,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>({...i}));let t=[];for(let i=1;i{dse.exports=IT()});var Ese=w((eft,mse)=>{"use strict";var gqe=xQ(),FT=class extends gqe{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",t){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,t=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([t,c,l].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};mse.exports=FT});var yse=w((tft,Ise)=>{"use strict";var fqe=dl(),NT=class extends fqe{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,t){let i=await super.toChoices(e,t);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Ise.exports=NT});var Bse=w(LT=>{"use strict";var wse=ji(),ui=(r,e)=>{wse.defineExport(LT,r,e),wse.defineExport(LT,r.toLowerCase(),e)};ui("AutoComplete",()=>Pne());ui("BasicAuth",()=>Tne());ui("Confirm",()=>Une());ui("Editable",()=>Hne());ui("Form",()=>vQ());ui("Input",()=>IT());ui("Invisible",()=>zne());ui("List",()=>Xne());ui("MultiSelect",()=>_ne());ui("Numeral",()=>tse());ui("Password",()=>ise());ui("Scale",()=>ose());ui("Select",()=>dl());ui("Snippet",()=>use());ui("Sort",()=>fse());ui("Survey",()=>pse());ui("Text",()=>Cse());ui("Toggle",()=>Ese());ui("Quiz",()=>yse())});var bse=w((ift,Qse)=>{Qse.exports={ArrayPrompt:Om(),AuthPrompt:hT(),BooleanPrompt:xQ(),NumberPrompt:bT(),StringPrompt:au()}});var Um=w((nft,vse)=>{"use strict";var Sse=J("assert"),OT=J("events"),Cl=ji(),fo=class extends OT{constructor(e,t){super(),this.options=Cl.merge({},e),this.answers={...t}}register(e,t){if(Cl.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}Sse.equal(typeof t,"function","expected a function");let i=e.toLowerCase();return t.prototype instanceof this.Prompt?this.prompts[i]=t:this.prompts[i]=t(this.Prompt,this),this}async prompt(e=[]){for(let t of[].concat(e))try{typeof t=="function"&&(t=await t.call(this)),await this.ask(Cl.merge({},this.options,t))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let t=Cl.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=Cl;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];Sse(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](t),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),t.autofill&&l!=null?(a.value=a.input=l,t.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||Yh()}static get prompts(){return Bse()}static get types(){return bse()}static get prompt(){let e=(t,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(t)};return Cl.mixinEmitter(e,new OT),e}};Cl.mixinEmitter(fo,new OT);var TT=fo.prompts;for(let r of Object.keys(TT)){let e=r.toLowerCase(),t=i=>new TT[r](i).run();fo.prompt[e]=t,fo[e]=t,fo[r]||Reflect.defineProperty(fo,r,{get:()=>TT[r]})}var Mm=r=>{Cl.defineExport(fo,r,()=>fo.types[r])};Mm("ArrayPrompt");Mm("AuthPrompt");Mm("BooleanPrompt");Mm("NumberPrompt");Mm("StringPrompt");vse.exports=fo});var Ose=w((qft,Tse)=>{function mqe(r,e){for(var t=-1,i=r==null?0:r.length;++t{var Eqe=Y0(),Iqe=Qh();function yqe(r,e,t,i){var n=!t;t||(t={});for(var s=-1,o=e.length;++s{var wqe=Jh(),Bqe=Rh();function Qqe(r,e){return r&&wqe(e,Bqe(e),r)}Use.exports=Qqe});var Gse=w((zft,Hse)=>{function bqe(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}Hse.exports=bqe});var jse=w((Vft,Yse)=>{var Sqe=Sn(),vqe=aQ(),xqe=Gse(),Pqe=Object.prototype,Dqe=Pqe.hasOwnProperty;function kqe(r){if(!Sqe(r))return xqe(r);var e=vqe(r),t=[];for(var i in r)i=="constructor"&&(e||!Dqe.call(r,i))||t.push(i);return t}Yse.exports=kqe});var Wh=w((Xft,qse)=>{var Rqe=aL(),Fqe=jse(),Nqe=gm();function Lqe(r){return Nqe(r)?Rqe(r,!0):Fqe(r)}qse.exports=Lqe});var Wse=w((Zft,Jse)=>{var Tqe=Jh(),Oqe=Wh();function Mqe(r,e){return r&&Tqe(e,Oqe(e),r)}Jse.exports=Mqe});var YT=w((Ym,zh)=>{var Uqe=ys(),Zse=typeof Ym=="object"&&Ym&&!Ym.nodeType&&Ym,zse=Zse&&typeof zh=="object"&&zh&&!zh.nodeType&&zh,Kqe=zse&&zse.exports===Zse,Vse=Kqe?Uqe.Buffer:void 0,Xse=Vse?Vse.allocUnsafe:void 0;function Hqe(r,e){if(e)return r.slice();var t=r.length,i=Xse?Xse(t):new r.constructor(t);return r.copy(i),i}zh.exports=Hqe});var jT=w((_ft,_se)=>{function Gqe(r,e){var t=-1,i=r.length;for(e||(e=Array(i));++t{var Yqe=Jh(),jqe=lQ();function qqe(r,e){return Yqe(r,jqe(r),e)}$se.exports=qqe});var kQ=w((eht,toe)=>{var Jqe=AL(),Wqe=Jqe(Object.getPrototypeOf,Object);toe.exports=Wqe});var qT=w((tht,roe)=>{var zqe=q0(),Vqe=kQ(),Xqe=lQ(),Zqe=hL(),_qe=Object.getOwnPropertySymbols,$qe=_qe?function(r){for(var e=[];r;)zqe(e,Xqe(r)),r=Vqe(r);return e}:Zqe;roe.exports=$qe});var noe=w((rht,ioe)=>{var eJe=Jh(),tJe=qT();function rJe(r,e){return eJe(r,tJe(r),e)}ioe.exports=rJe});var ooe=w((iht,soe)=>{var iJe=fL(),nJe=qT(),sJe=Wh();function oJe(r){return iJe(r,sJe,nJe)}soe.exports=oJe});var Aoe=w((nht,aoe)=>{var aJe=Object.prototype,AJe=aJe.hasOwnProperty;function lJe(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&AJe.call(r,"index")&&(t.index=r.index,t.input=r.input),t}aoe.exports=lJe});var RQ=w((sht,coe)=>{var loe=uL();function cJe(r){var e=new r.constructor(r.byteLength);return new loe(e).set(new loe(r)),e}coe.exports=cJe});var goe=w((oht,uoe)=>{var uJe=RQ();function gJe(r,e){var t=e?uJe(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}uoe.exports=gJe});var hoe=w((aht,foe)=>{var fJe=/\w*$/;function hJe(r){var e=new r.constructor(r.source,fJe.exec(r));return e.lastIndex=r.lastIndex,e}foe.exports=hJe});var Eoe=w((Aht,moe)=>{var poe=Rc(),doe=poe?poe.prototype:void 0,Coe=doe?doe.valueOf:void 0;function pJe(r){return Coe?Object(Coe.call(r)):{}}moe.exports=pJe});var JT=w((lht,Ioe)=>{var dJe=RQ();function CJe(r,e){var t=e?dJe(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}Ioe.exports=CJe});var woe=w((cht,yoe)=>{var mJe=RQ(),EJe=goe(),IJe=hoe(),yJe=Eoe(),wJe=JT(),BJe="[object Boolean]",QJe="[object Date]",bJe="[object Map]",SJe="[object Number]",vJe="[object RegExp]",xJe="[object Set]",PJe="[object String]",DJe="[object Symbol]",kJe="[object ArrayBuffer]",RJe="[object DataView]",FJe="[object Float32Array]",NJe="[object Float64Array]",LJe="[object Int8Array]",TJe="[object Int16Array]",OJe="[object Int32Array]",MJe="[object Uint8Array]",UJe="[object Uint8ClampedArray]",KJe="[object Uint16Array]",HJe="[object Uint32Array]";function GJe(r,e,t){var i=r.constructor;switch(e){case kJe:return mJe(r);case BJe:case QJe:return new i(+r);case RJe:return EJe(r,t);case FJe:case NJe:case LJe:case TJe:case OJe:case MJe:case UJe:case KJe:case HJe:return wJe(r,t);case bJe:return new i;case SJe:case PJe:return new i(r);case vJe:return IJe(r);case xJe:return new i;case DJe:return yJe(r)}}yoe.exports=GJe});var boe=w((uht,Qoe)=>{var YJe=Sn(),Boe=Object.create,jJe=function(){function r(){}return function(e){if(!YJe(e))return{};if(Boe)return Boe(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}();Qoe.exports=jJe});var WT=w((ght,Soe)=>{var qJe=boe(),JJe=kQ(),WJe=aQ();function zJe(r){return typeof r.constructor=="function"&&!WJe(r)?qJe(JJe(r)):{}}Soe.exports=zJe});var xoe=w((fht,voe)=>{var VJe=hm(),XJe=Jo(),ZJe="[object Map]";function _Je(r){return XJe(r)&&VJe(r)==ZJe}voe.exports=_Je});var Roe=w((hht,koe)=>{var $Je=xoe(),e3e=nQ(),Poe=sQ(),Doe=Poe&&Poe.isMap,t3e=Doe?e3e(Doe):$Je;koe.exports=t3e});var Noe=w((pht,Foe)=>{var r3e=hm(),i3e=Jo(),n3e="[object Set]";function s3e(r){return i3e(r)&&r3e(r)==n3e}Foe.exports=s3e});var Moe=w((dht,Ooe)=>{var o3e=Noe(),a3e=nQ(),Loe=sQ(),Toe=Loe&&Loe.isSet,A3e=Toe?a3e(Toe):o3e;Ooe.exports=A3e});var Yoe=w((Cht,Goe)=>{var l3e=fm(),c3e=Ose(),u3e=Y0(),g3e=Kse(),f3e=Wse(),h3e=YT(),p3e=jT(),d3e=eoe(),C3e=noe(),m3e=pL(),E3e=ooe(),I3e=hm(),y3e=Aoe(),w3e=woe(),B3e=WT(),Q3e=vs(),b3e=lm(),S3e=Roe(),v3e=Sn(),x3e=Moe(),P3e=Rh(),D3e=Wh(),k3e=1,R3e=2,F3e=4,Uoe="[object Arguments]",N3e="[object Array]",L3e="[object Boolean]",T3e="[object Date]",O3e="[object Error]",Koe="[object Function]",M3e="[object GeneratorFunction]",U3e="[object Map]",K3e="[object Number]",Hoe="[object Object]",H3e="[object RegExp]",G3e="[object Set]",Y3e="[object String]",j3e="[object Symbol]",q3e="[object WeakMap]",J3e="[object ArrayBuffer]",W3e="[object DataView]",z3e="[object Float32Array]",V3e="[object Float64Array]",X3e="[object Int8Array]",Z3e="[object Int16Array]",_3e="[object Int32Array]",$3e="[object Uint8Array]",e8e="[object Uint8ClampedArray]",t8e="[object Uint16Array]",r8e="[object Uint32Array]",ur={};ur[Uoe]=ur[N3e]=ur[J3e]=ur[W3e]=ur[L3e]=ur[T3e]=ur[z3e]=ur[V3e]=ur[X3e]=ur[Z3e]=ur[_3e]=ur[U3e]=ur[K3e]=ur[Hoe]=ur[H3e]=ur[G3e]=ur[Y3e]=ur[j3e]=ur[$3e]=ur[e8e]=ur[t8e]=ur[r8e]=!0;ur[O3e]=ur[Koe]=ur[q3e]=!1;function FQ(r,e,t,i,n,s){var o,a=e&k3e,l=e&R3e,c=e&F3e;if(t&&(o=n?t(r,i,n,s):t(r)),o!==void 0)return o;if(!v3e(r))return r;var u=Q3e(r);if(u){if(o=y3e(r),!a)return p3e(r,o)}else{var g=I3e(r),f=g==Koe||g==M3e;if(b3e(r))return h3e(r,a);if(g==Hoe||g==Uoe||f&&!n){if(o=l||f?{}:B3e(r),!a)return l?C3e(r,f3e(o,r)):d3e(r,g3e(o,r))}else{if(!ur[g])return n?r:{};o=w3e(r,g,a)}}s||(s=new l3e);var h=s.get(r);if(h)return h;s.set(r,o),x3e(r)?r.forEach(function(y){o.add(FQ(y,e,t,y,r,s))}):S3e(r)&&r.forEach(function(y,B){o.set(B,FQ(y,e,t,B,r,s))});var p=c?l?E3e:m3e:l?D3e:P3e,C=u?void 0:p(r);return c3e(C||r,function(y,B){C&&(B=y,y=r[B]),u3e(o,B,FQ(y,e,t,B,r,s))}),o}Goe.exports=FQ});var zT=w((mht,joe)=>{var i8e=Yoe(),n8e=1,s8e=4;function o8e(r){return i8e(r,n8e|s8e)}joe.exports=o8e});var Joe=w((Eht,qoe)=>{var a8e=UN();function A8e(r,e,t){return r==null?r:a8e(r,e,t)}qoe.exports=A8e});var Zoe=w((bht,Xoe)=>{function l8e(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}Xoe.exports=l8e});var $oe=w((Sht,_oe)=>{var c8e=rm(),u8e=HR();function g8e(r,e){return e.length<2?r:c8e(r,u8e(e,0,-1))}_oe.exports=g8e});var tae=w((vht,eae)=>{var f8e=Bh(),h8e=Zoe(),p8e=$oe(),d8e=Zc();function C8e(r,e){return e=f8e(e,r),r=p8e(r,e),r==null||delete r[d8e(h8e(e))]}eae.exports=C8e});var iae=w((xht,rae)=>{var m8e=tae();function E8e(r,e){return r==null?!0:m8e(r,e)}rae.exports=E8e});var Aae=w((rpt,w8e)=>{w8e.exports={name:"@yarnpkg/cli",version:"3.5.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"3.2.0-rc.4",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var nO=w((vmt,wae)=>{"use strict";wae.exports=function(e,t){t===!0&&(t=0);var i="";if(typeof e=="string")try{i=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(i=e.protocol);var n=i.split(/\:|\+/).filter(Boolean);return typeof t=="number"?n[t]:n}});var Qae=w((xmt,Bae)=>{"use strict";var H8e=nO();function G8e(r){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:r,query:{},parse_failed:!1};try{var t=new URL(r);e.protocols=H8e(t),e.protocol=e.protocols[0],e.port=t.port,e.resource=t.hostname,e.host=t.host,e.user=t.username||"",e.password=t.password||"",e.pathname=t.pathname,e.hash=t.hash.slice(1),e.search=t.search.slice(1),e.href=t.href,e.query=Object.fromEntries(t.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=r,e.query={},e.parse_failed=!0}return e}Bae.exports=G8e});var vae=w((Pmt,Sae)=>{"use strict";var Y8e=Qae();function j8e(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var q8e=j8e(Y8e),J8e="text/plain",W8e="us-ascii",bae=(r,e)=>e.some(t=>t instanceof RegExp?t.test(r):t===r),z8e=(r,{stripHash:e})=>{let t=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(r);if(!t)throw new Error(`Invalid URL: ${r}`);let{type:i,data:n,hash:s}=t.groups,o=i.split(";");s=e?"":s;let a=!1;o[o.length-1]==="base64"&&(o.pop(),a=!0);let l=(o.shift()||"").toLowerCase(),u=[...o.map(g=>{let[f,h=""]=g.split("=").map(p=>p.trim());return f==="charset"&&(h=h.toLowerCase(),h===W8e)?"":`${f}${h?`=${h}`:""}`}).filter(Boolean)];return a&&u.push("base64"),(u.length>0||l&&l!==J8e)&&u.unshift(l),`data:${u.join(";")},${a?n.trim():n}${s?`#${s}`:""}`};function V8e(r,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},r=r.trim(),/^data:/i.test(r))return z8e(r,e);if(/^view-source:/i.test(r))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let t=r.startsWith("//");!t&&/^\.*\//.test(r)||(r=r.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new URL(r);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash?n.hash="":e.stripTextFragment&&(n.hash=n.hash.replace(/#?:~:text.*?$/i,"")),n.pathname){let o=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,a=0,l="";for(;;){let u=o.exec(n.pathname);if(!u)break;let g=u[0],f=u.index,h=n.pathname.slice(a,f);l+=h.replace(/\/{2,}/g,"/"),l+=g,a=f+g.length}let c=n.pathname.slice(a,n.pathname.length);l+=c.replace(/\/{2,}/g,"/"),n.pathname=l}if(n.pathname)try{n.pathname=decodeURI(n.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let o=n.pathname.split("/"),a=o[o.length-1];bae(a,e.removeDirectoryIndex)&&(o=o.slice(0,-1),n.pathname=o.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let o of[...n.searchParams.keys()])bae(o,e.removeQueryParameters)&&n.searchParams.delete(o);if(e.removeQueryParameters===!0&&(n.search=""),e.sortQueryParameters){n.searchParams.sort();try{n.search=decodeURIComponent(n.search)}catch{}}e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,""));let s=r;return r=n.toString(),!e.removeSingleSlash&&n.pathname==="/"&&!s.endsWith("/")&&n.hash===""&&(r=r.replace(/\/$/,"")),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&e.removeSingleSlash&&(r=r.replace(/\/$/,"")),t&&!e.normalizeProtocol&&(r=r.replace(/^http:\/\//,"//")),e.stripProtocol&&(r=r.replace(/^(?:https?:)?\/\//,"")),r}var sO=(r,e=!1)=>{let t=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,i=s=>{let o=new Error(s);throw o.subject_url=r,o};(typeof r!="string"||!r.trim())&&i("Invalid url."),r.length>sO.MAX_INPUT_LENGTH&&i("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),r=V8e(r,e));let n=q8e.default(r);if(n.parse_failed){let s=n.href.match(t);s?(n.protocols=["ssh"],n.protocol="ssh",n.resource=s[2],n.host=s[2],n.user=s[1],n.pathname=`/${s[3]}`,n.parse_failed=!1):i("URL parsing failed.")}return n};sO.MAX_INPUT_LENGTH=2048;Sae.exports=sO});var Dae=w((Dmt,Pae)=>{"use strict";var X8e=nO();function xae(r){if(Array.isArray(r))return r.indexOf("ssh")!==-1||r.indexOf("rsync")!==-1;if(typeof r!="string")return!1;var e=X8e(r);if(r=r.substring(r.indexOf("://")+3),xae(e))return!0;var t=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!r.match(t)&&r.indexOf("@"){"use strict";var Z8e=vae(),kae=Dae();function _8e(r){var e=Z8e(r);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),kae(e.protocols)||e.protocols.length===0&&kae(r)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}Rae.exports=_8e});var Lae=w((Rmt,Nae)=>{"use strict";var $8e=Fae();function oO(r){if(typeof r!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(r)&&(r="https://github.com/"+r);var t=$8e(r),i=t.resource.split("."),n=null;switch(t.toString=function(y){return oO.stringify(this,y)},t.source=i.length>2?i.slice(1-i.length).join("."):t.source=t.resource,t.git_suffix=/\.git$/.test(t.pathname),t.name=decodeURIComponent((t.pathname||t.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),t.owner=decodeURIComponent(t.user),t.source){case"git.cloudforge.com":t.owner=t.user,t.organization=i[0],t.source="cloudforge.com";break;case"visualstudio.com":if(t.resource==="vs-ssh.visualstudio.com"){n=t.name.split("/"),n.length===4&&(t.organization=n[1],t.owner=n[2],t.name=n[3],t.full_name=n[2]+"/"+n[3]);break}else{n=t.name.split("/"),n.length===2?(t.owner=n[1],t.name=n[1],t.full_name="_git/"+t.name):n.length===3?(t.name=n[2],n[0]==="DefaultCollection"?(t.owner=n[2],t.organization=n[0],t.full_name=t.organization+"/_git/"+t.name):(t.owner=n[0],t.full_name=t.owner+"/_git/"+t.name)):n.length===4&&(t.organization=n[0],t.owner=n[1],t.name=n[3],t.full_name=t.organization+"/"+t.owner+"/_git/"+t.name);break}case"dev.azure.com":case"azure.com":if(t.resource==="ssh.dev.azure.com"){n=t.name.split("/"),n.length===4&&(t.organization=n[1],t.owner=n[2],t.name=n[3]);break}else{n=t.name.split("/"),n.length===5?(t.organization=n[0],t.owner=n[1],t.name=n[4],t.full_name="_git/"+t.name):n.length===3?(t.name=n[2],n[0]==="DefaultCollection"?(t.owner=n[2],t.organization=n[0],t.full_name=t.organization+"/_git/"+t.name):(t.owner=n[0],t.full_name=t.owner+"/_git/"+t.name)):n.length===4&&(t.organization=n[0],t.owner=n[1],t.name=n[3],t.full_name=t.organization+"/"+t.owner+"/_git/"+t.name),t.query&&t.query.path&&(t.filepath=t.query.path.replace(/^\/+/g,"")),t.query&&t.query.version&&(t.ref=t.query.version.replace(/^GB/,""));break}default:n=t.name.split("/");var s=n.length-1;if(n.length>=2){var o=n.indexOf("-",2),a=n.indexOf("blob",2),l=n.indexOf("tree",2),c=n.indexOf("commit",2),u=n.indexOf("src",2),g=n.indexOf("raw",2),f=n.indexOf("edit",2);s=o>0?o-1:a>0?a-1:l>0?l-1:c>0?c-1:u>0?u-1:g>0?g-1:f>0?f-1:s,t.owner=n.slice(0,s).join("/"),t.name=n[s],c&&(t.commit=n[s+2])}t.ref="",t.filepathtype="",t.filepath="";var h=n.length>s&&n[s+1]==="-"?s+1:s;n.length>h+2&&["raw","src","blob","tree","edit"].indexOf(n[h+1])>=0&&(t.filepathtype=n[h+1],t.ref=n[h+2],n.length>h+3&&(t.filepath=n.slice(h+3).join("/"))),t.organization=t.owner;break}t.full_name||(t.full_name=t.owner,t.name&&(t.full_name&&(t.full_name+="/"),t.full_name+=t.name)),t.owner.startsWith("scm/")&&(t.source="bitbucket-server",t.owner=t.owner.replace("scm/",""),t.organization=t.owner,t.full_name=t.owner+"/"+t.name);var p=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,C=p.exec(t.pathname);return C!=null&&(t.source="bitbucket-server",C[1]==="users"?t.owner="~"+C[2]:t.owner=C[2],t.organization=t.owner,t.name=C[3],n=C[4].split("/"),n.length>1&&(["raw","browse"].indexOf(n[1])>=0?(t.filepathtype=n[1],n.length>2&&(t.filepath=n.slice(2).join("/"))):n[1]==="commits"&&n.length>2&&(t.commit=n[2])),t.full_name=t.owner+"/"+t.name,t.query.at?t.ref=t.query.at:t.ref=""),t}oO.stringify=function(r,e){e=e||(r.protocols&&r.protocols.length?r.protocols.join("+"):r.protocol);var t=r.port?":"+r.port:"",i=r.user||"git",n=r.git_suffix?".git":"";switch(e){case"ssh":return t?"ssh://"+i+"@"+r.resource+t+"/"+r.full_name+n:i+"@"+r.resource+":"+r.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+r.resource+t+"/"+r.full_name+n;case"http":case"https":var s=r.token?e4e(r):r.user&&(r.protocols.includes("http")||r.protocols.includes("https"))?r.user+"@":"";return e+"://"+s+r.resource+t+"/"+t4e(r)+n;default:return r.href}};function e4e(r){switch(r.source){case"bitbucket.org":return"x-token-auth:"+r.token+"@";default:return r.token+"@"}}function t4e(r){switch(r.source){case"bitbucket-server":return"scm/"+r.full_name;default:return""+r.full_name}}Nae.exports=oO});var xO=w((wyt,tAe)=>{var w4e=Qh(),B4e=Ih();function Q4e(r,e,t){(t!==void 0&&!B4e(r[e],t)||t===void 0&&!(e in r))&&w4e(r,e,t)}tAe.exports=Q4e});var iAe=w((Byt,rAe)=>{var b4e=gm(),S4e=Jo();function v4e(r){return S4e(r)&&b4e(r)}rAe.exports=v4e});var oAe=w((Qyt,sAe)=>{var x4e=Fc(),P4e=kQ(),D4e=Jo(),k4e="[object Object]",R4e=Function.prototype,F4e=Object.prototype,nAe=R4e.toString,N4e=F4e.hasOwnProperty,L4e=nAe.call(Object);function T4e(r){if(!D4e(r)||x4e(r)!=k4e)return!1;var e=P4e(r);if(e===null)return!0;var t=N4e.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&nAe.call(t)==L4e}sAe.exports=T4e});var PO=w((byt,aAe)=>{function O4e(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}aAe.exports=O4e});var lAe=w((Syt,AAe)=>{var M4e=Jh(),U4e=Wh();function K4e(r){return M4e(r,U4e(r))}AAe.exports=K4e});var pAe=w((vyt,hAe)=>{var cAe=xO(),H4e=YT(),G4e=JT(),Y4e=jT(),j4e=WT(),uAe=nm(),gAe=vs(),q4e=iAe(),J4e=lm(),W4e=K0(),z4e=Sn(),V4e=oAe(),X4e=oQ(),fAe=PO(),Z4e=lAe();function _4e(r,e,t,i,n,s,o){var a=fAe(r,t),l=fAe(e,t),c=o.get(l);if(c){cAe(r,t,c);return}var u=s?s(a,l,t+"",r,e,o):void 0,g=u===void 0;if(g){var f=gAe(l),h=!f&&J4e(l),p=!f&&!h&&X4e(l);u=l,f||h||p?gAe(a)?u=a:q4e(a)?u=Y4e(a):h?(g=!1,u=H4e(l,!0)):p?(g=!1,u=G4e(l,!0)):u=[]:V4e(l)||uAe(l)?(u=a,uAe(a)?u=Z4e(a):(!z4e(a)||W4e(a))&&(u=j4e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),cAe(r,t,u)}hAe.exports=_4e});var mAe=w((xyt,CAe)=>{var $4e=fm(),eWe=xO(),tWe=sL(),rWe=pAe(),iWe=Sn(),nWe=Wh(),sWe=PO();function dAe(r,e,t,i,n){r!==e&&tWe(e,function(s,o){if(n||(n=new $4e),iWe(s))rWe(r,e,o,t,dAe,i,n);else{var a=i?i(sWe(r,o),s,o+"",r,e,n):void 0;a===void 0&&(a=s),eWe(r,o,a)}},nWe)}CAe.exports=dAe});var IAe=w((Pyt,EAe)=>{var oWe=J0(),aWe=GN(),AWe=YN();function lWe(r,e){return AWe(aWe(r,e,oWe),r+"")}EAe.exports=lWe});var wAe=w((Dyt,yAe)=>{var cWe=Ih(),uWe=gm(),gWe=im(),fWe=Sn();function hWe(r,e,t){if(!fWe(t))return!1;var i=typeof e;return(i=="number"?uWe(t)&&gWe(e,t.length):i=="string"&&e in t)?cWe(t[e],r):!1}yAe.exports=hWe});var QAe=w((kyt,BAe)=>{var pWe=IAe(),dWe=wAe();function CWe(r){return pWe(function(e,t){var i=-1,n=t.length,s=n>1?t[n-1]:void 0,o=n>2?t[2]:void 0;for(s=r.length>3&&typeof s=="function"?(n--,s):void 0,o&&dWe(t[0],t[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var mWe=mAe(),EWe=QAe(),IWe=EWe(function(r,e,t){mWe(r,e,t)});bAe.exports=IWe});var KAe=w((kwt,UAe)=>{var UO;UAe.exports=()=>(typeof UO>"u"&&(UO=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),UO)});var ale=w((tBt,ole)=>{var zO=Symbol("arg flag"),kn=class extends Error{constructor(e,t){super(e),this.name="ArgError",this.code=t,Object.setPrototypeOf(this,kn.prototype)}};function uE(r,{argv:e=process.argv.slice(2),permissive:t=!1,stopAtPositional:i=!1}={}){if(!r)throw new kn("argument specification object is required","ARG_CONFIG_NO_SPEC");let n={_:[]},s={},o={};for(let a of Object.keys(r)){if(!a)throw new kn("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(a[0]!=="-")throw new kn(`argument key must start with '-' but found: '${a}'`,"ARG_CONFIG_NONOPT_KEY");if(a.length===1)throw new kn(`argument key must have a name; singular '-' keys are not allowed: ${a}`,"ARG_CONFIG_NONAME_KEY");if(typeof r[a]=="string"){s[a]=r[a];continue}let l=r[a],c=!1;if(Array.isArray(l)&&l.length===1&&typeof l[0]=="function"){let[u]=l;l=(g,f,h=[])=>(h.push(u(g,f,h[h.length-1])),h),c=u===Boolean||u[zO]===!0}else if(typeof l=="function")c=l===Boolean||l[zO]===!0;else throw new kn(`type missing or not a function or valid array type: ${a}`,"ARG_CONFIG_VAD_TYPE");if(a[1]!=="-"&&a.length>2)throw new kn(`short argument keys (with a single hyphen) must have only one character: ${a}`,"ARG_CONFIG_SHORTOPT_TOOLONG");o[a]=[l,c]}for(let a=0,l=e.length;a0){n._=n._.concat(e.slice(a));break}if(c==="--"){n._=n._.concat(e.slice(a+1));break}if(c.length>1&&c[0]==="-"){let u=c[1]==="-"||c.length===2?[c]:c.slice(1).split("").map(g=>`-${g}`);for(let g=0;g1&&e[a+1][0]==="-"&&!(e[a+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(y===Number||typeof BigInt<"u"&&y===BigInt))){let v=h===C?"":` (alias for ${C})`;throw new kn(`option requires argument: ${h}${v}`,"ARG_MISSING_REQUIRED_LONGARG")}n[C]=y(e[a+1],C,n[C]),++a}else n[C]=y(p,C,n[C])}}else n._.push(c)}return n}uE.flag=r=>(r[zO]=!0,r);uE.COUNT=uE.flag((r,e,t)=>(t||0)+1);uE.ArgError=kn;ole.exports=uE});var mle=w((kBt,Cle)=>{var _O;Cle.exports=()=>(typeof _O>"u"&&(_O=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),_O)});var ble=w((nM,sM)=>{(function(r){nM&&typeof nM=="object"&&typeof sM<"u"?sM.exports=r():typeof define=="function"&&define.amd?define([],r):typeof window<"u"?window.isWindows=r():typeof global<"u"?global.isWindows=r():typeof self<"u"?self.isWindows=r():this.isWindows=r()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var Ple=w((D0t,xle)=>{"use strict";oM.ifExists=mze;var np=J("util"),Ls=J("path"),Sle=ble(),pze=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,dze={createPwshFile:!0,createCmdFile:Sle(),fs:J("fs")},Cze=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function vle(r){let e={...dze,...r},t=e.fs;return e.fs_={chmod:t.chmod?np.promisify(t.chmod):async()=>{},mkdir:np.promisify(t.mkdir),readFile:np.promisify(t.readFile),stat:np.promisify(t.stat),unlink:np.promisify(t.unlink),writeFile:np.promisify(t.writeFile)},e}async function oM(r,e,t){let i=vle(t);await i.fs_.stat(r),await Ize(r,e,i)}function mze(r,e,t){return oM(r,e,t).catch(()=>{})}function Eze(r,e){return e.fs_.unlink(r).catch(()=>{})}async function Ize(r,e,t){let i=await bze(r,t);return await yze(e,t),wze(r,e,i,t)}function yze(r,e){return e.fs_.mkdir(Ls.dirname(r),{recursive:!0})}function wze(r,e,t,i){let n=vle(i),s=[{generator:xze,extension:""}];return n.createCmdFile&&s.push({generator:vze,extension:".cmd"}),n.createPwshFile&&s.push({generator:Pze,extension:".ps1"}),Promise.all(s.map(o=>Sze(r,e+o.extension,t,o.generator,n)))}function Bze(r,e){return Eze(r,e)}function Qze(r,e){return Dze(r,e)}async function bze(r,e){let n=(await e.fs_.readFile(r,"utf8")).trim().split(/\r*\n/)[0].match(pze);if(!n){let s=Ls.extname(r).toLowerCase();return{program:Cze.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function Sze(r,e,t,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[t.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:t.program,args:o}),await Bze(e,n),await n.fs_.writeFile(e,i(r,e,n),"utf8"),Qze(e,n)}function vze(r,e,t){let n=Ls.relative(Ls.dirname(e),r).split("/").join("\\"),s=Ls.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=t.prog,l=t.args||"",c=aM(t.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=t.progArgs?`${t.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r `:"";return o?g+=`@IF EXIST ${o} (\r ${o} ${l} ${n} ${u}%*\r ) ELSE (\r @@ -242,7 +242,7 @@ attempted value: ${s} ${a} ${l} ${n} ${u}%*\r )\r `:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function y8e(r,e,t){let i=ks.relative(ks.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=ks.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=t.args||"",l=kO(t.nodePath).posix;n?(s=`"$basedir/${t.prog}"`,i=o):(n=o,a="",i="");let c=t.progArgs?`${t.progArgs.join(" ")} `:"",u=`#!/bin/sh +`,g}function xze(r,e,t){let i=Ls.relative(Ls.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Ls.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=t.args||"",l=aM(t.nodePath).posix;n?(s=`"$basedir/${t.prog}"`,i=o):(n=o,a="",i="");let c=t.progArgs?`${t.progArgs.join(" ")} `:"",u=`#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") case \`uname\` in @@ -257,7 +257,7 @@ else fi `:u+=`${g}${n} ${a} ${i} ${c}"$@" exit $? -`,u}function w8e(r,e,t){let i=ks.relative(ks.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=ks.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=t.args||"",c=kO(t.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${t.prog}$exe"`,i=a):(s=a,l="",i="");let f=t.progArgs?`${t.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh +`,u}function Pze(r,e,t){let i=Ls.relative(Ls.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Ls.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=t.args||"",c=aM(t.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${t.prog}$exe"`,i=a):(s=a,l="",i="");let f=t.progArgs?`${t.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" @@ -299,79 +299,79 @@ if ($MyInvocation.ExpectingInput) { } ${t.nodePath?`$env:NODE_PATH=$env_node_path `:""}exit $LASTEXITCODE -`,h}function B8e(r,e){return e.fs_.chmod(r,493)}function kO(r){if(!r)return{win32:"",posix:""};let e=typeof r=="string"?r.split(ks.delimiter):Array.from(r),t={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];t.win32=t.win32?`${t.win32};${n}`:n,t.posix=t.posix?`${t.posix}:${s}`:s,t[i]={win32:n,posix:s}}return t}UAe.exports=DO});var YO=w((tQt,ale)=>{ale.exports=J("stream")});var ule=w((rQt,cle)=>{"use strict";function Ale(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function Y8e(r){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(t){var i={data:t,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=t+i.data;return n}},{key:"concat",value:function(t){if(this.length===0)return $Q.alloc(0);for(var i=$Q.allocUnsafe(t>>>0),n=this.head,s=0;n;)X8e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(t,i){var n;return to.length?o.length:t;if(a===o.length?s+=o:s+=o.slice(0,t),t-=a,t===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(t){var i=$Q.allocUnsafe(t),n=this.head,s=1;for(n.data.copy(i),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(i,i.length-t,0,a),t-=a,t===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:V8e,value:function(t,i){return jO(this,Y8e({},i,{depth:0,customInspect:!1}))}}]),r}()});var JO=w((iQt,fle)=>{"use strict";function _8e(r,e){var t=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(qO,this,r)):process.nextTick(qO,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,function(s){!e&&s?t._writableState?t._writableState.errorEmitted?process.nextTick(eb,t):(t._writableState.errorEmitted=!0,process.nextTick(gle,t,s)):process.nextTick(gle,t,s):e?(process.nextTick(eb,t),e(s)):process.nextTick(eb,t)}),this)}function gle(r,e){qO(r,e),eb(r)}function eb(r){r._writableState&&!r._writableState.emitClose||r._readableState&&!r._readableState.emitClose||r.emit("close")}function Z8e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function qO(r,e){r.emit("error",e)}function $8e(r,e){var t=r._readableState,i=r._writableState;t&&t.autoDestroy||i&&i.autoDestroy?r.destroy(e):r.emit("error",e)}fle.exports={destroy:_8e,undestroy:Z8e,errorOrDestroy:$8e}});var fl=w((nQt,dle)=>{"use strict";var ple={};function Fs(r,e,t){t||(t=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends t{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=t.name,n.prototype.code=r,ple[r]=n}function hle(r,e){if(Array.isArray(r)){let t=r.length;return r=r.map(i=>String(i)),t>2?`one of ${e} ${r.slice(0,t-1).join(", ")}, or `+r[t-1]:t===2?`one of ${e} ${r[0]} or ${r[1]}`:`of ${e} ${r[0]}`}else return`of ${e} ${String(r)}`}function eze(r,e,t){return r.substr(!t||t<0?0:+t,e.length)===e}function tze(r,e,t){return(t===void 0||t>r.length)&&(t=r.length),r.substring(t-e.length,t)===e}function rze(r,e,t){return typeof t!="number"&&(t=0),t+e.length>r.length?!1:r.indexOf(e,t)!==-1}Fs("ERR_INVALID_OPT_VALUE",function(r,e){return'The value "'+e+'" is invalid for option "'+r+'"'},TypeError);Fs("ERR_INVALID_ARG_TYPE",function(r,e,t){let i;typeof e=="string"&&eze(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(tze(r," argument"))n=`The ${r} ${i} ${hle(e,"type")}`;else{let s=rze(r,".")?"property":"argument";n=`The "${r}" ${s} ${i} ${hle(e,"type")}`}return n+=`. Received type ${typeof t}`,n},TypeError);Fs("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Fs("ERR_METHOD_NOT_IMPLEMENTED",function(r){return"The "+r+" method is not implemented"});Fs("ERR_STREAM_PREMATURE_CLOSE","Premature close");Fs("ERR_STREAM_DESTROYED",function(r){return"Cannot call "+r+" after a stream was destroyed"});Fs("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Fs("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Fs("ERR_STREAM_WRITE_AFTER_END","write after end");Fs("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Fs("ERR_UNKNOWN_ENCODING",function(r){return"Unknown encoding: "+r},TypeError);Fs("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");dle.exports.codes=ple});var WO=w((sQt,Cle)=>{"use strict";var ize=fl().codes.ERR_INVALID_OPT_VALUE;function nze(r,e,t){return r.highWaterMark!=null?r.highWaterMark:e?r[t]:null}function sze(r,e,t,i){var n=nze(e,i,t);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?t:"highWaterMark";throw new ize(s,n)}return Math.floor(n)}return r.objectMode?16:16*1024}Cle.exports={getHighWaterMark:sze}});var mle=w((oQt,zO)=>{typeof Object.create=="function"?zO.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:zO.exports=function(e,t){if(t){e.super_=t;var i=function(){};i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e}}});var hl=w((aQt,XO)=>{try{if(VO=J("util"),typeof VO.inherits!="function")throw"";XO.exports=VO.inherits}catch{XO.exports=mle()}var VO});var Ile=w((AQt,Ele)=>{Ele.exports=J("util").deprecate});var $O=w((lQt,Sle)=>{"use strict";Sle.exports=Tr;function wle(r){var e=this;this.next=null,this.entry=null,this.finish=function(){Rze(e,r)}}var Xh;Tr.WritableState=nE;var oze={deprecate:Ile()},Ble=YO(),rb=J("buffer").Buffer,aze=global.Uint8Array||function(){};function Aze(r){return rb.from(r)}function lze(r){return rb.isBuffer(r)||r instanceof aze}var ZO=JO(),cze=WO(),uze=cze.getHighWaterMark,pl=fl().codes,gze=pl.ERR_INVALID_ARG_TYPE,fze=pl.ERR_METHOD_NOT_IMPLEMENTED,hze=pl.ERR_MULTIPLE_CALLBACK,pze=pl.ERR_STREAM_CANNOT_PIPE,dze=pl.ERR_STREAM_DESTROYED,Cze=pl.ERR_STREAM_NULL_VALUES,mze=pl.ERR_STREAM_WRITE_AFTER_END,Eze=pl.ERR_UNKNOWN_ENCODING,_h=ZO.errorOrDestroy;hl()(Tr,Ble);function Ize(){}function nE(r,e,t){Xh=Xh||Lu(),r=r||{},typeof t!="boolean"&&(t=e instanceof Xh),this.objectMode=!!r.objectMode,t&&(this.objectMode=this.objectMode||!!r.writableObjectMode),this.highWaterMark=uze(this,r,"writableHighWaterMark",t),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=r.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=r.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){vze(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=r.emitClose!==!1,this.autoDestroy=!!r.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new wle(this)}nE.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t};(function(){try{Object.defineProperty(nE.prototype,"buffer",{get:oze.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var tb;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(tb=Function.prototype[Symbol.hasInstance],Object.defineProperty(Tr,Symbol.hasInstance,{value:function(e){return tb.call(this,e)?!0:this!==Tr?!1:e&&e._writableState instanceof nE}})):tb=function(e){return e instanceof this};function Tr(r){Xh=Xh||Lu();var e=this instanceof Xh;if(!e&&!tb.call(Tr,this))return new Tr(r);this._writableState=new nE(r,this,e),this.writable=!0,r&&(typeof r.write=="function"&&(this._write=r.write),typeof r.writev=="function"&&(this._writev=r.writev),typeof r.destroy=="function"&&(this._destroy=r.destroy),typeof r.final=="function"&&(this._final=r.final)),Ble.call(this)}Tr.prototype.pipe=function(){_h(this,new pze)};function yze(r,e){var t=new mze;_h(r,t),process.nextTick(e,t)}function wze(r,e,t,i){var n;return t===null?n=new Cze:typeof t!="string"&&!e.objectMode&&(n=new gze("chunk",["string","Buffer"],t)),n?(_h(r,n),process.nextTick(i,n),!1):!0}Tr.prototype.write=function(r,e,t){var i=this._writableState,n=!1,s=!i.objectMode&&lze(r);return s&&!rb.isBuffer(r)&&(r=Aze(r)),typeof e=="function"&&(t=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof t!="function"&&(t=Ize),i.ending?yze(this,t):(s||wze(this,i,r,t))&&(i.pendingcb++,n=Qze(this,i,s,r,e,t)),n};Tr.prototype.cork=function(){this._writableState.corked++};Tr.prototype.uncork=function(){var r=this._writableState;r.corked&&(r.corked--,!r.writing&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&Qle(this,r))};Tr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new Eze(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Tr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Bze(r,e,t){return!r.objectMode&&r.decodeStrings!==!1&&typeof e=="string"&&(e=rb.from(e,t)),e}Object.defineProperty(Tr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Qze(r,e,t,i,n,s){if(!t){var o=Bze(e,i,n);i!==o&&(t=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var Fze=Object.keys||function(r){var e=[];for(var t in r)e.push(t);return e};xle.exports=ta;var vle=rM(),tM=$O();hl()(ta,vle);for(eM=Fze(tM.prototype),ib=0;ib{var sb=J("buffer"),nA=sb.Buffer;function Ple(r,e){for(var t in r)e[t]=r[t]}nA.from&&nA.alloc&&nA.allocUnsafe&&nA.allocUnsafeSlow?Dle.exports=sb:(Ple(sb,iM),iM.Buffer=Zh);function Zh(r,e,t){return nA(r,e,t)}Ple(nA,Zh);Zh.from=function(r,e,t){if(typeof r=="number")throw new TypeError("Argument must not be a number");return nA(r,e,t)};Zh.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError("Argument must be a number");var i=nA(r);return e!==void 0?typeof t=="string"?i.fill(e,t):i.fill(e):i.fill(0),i};Zh.allocUnsafe=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return nA(r)};Zh.allocUnsafeSlow=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return sb.SlowBuffer(r)}});var oM=w(Fle=>{"use strict";var sM=kle().Buffer,Rle=sM.isEncoding||function(r){switch(r=""+r,r&&r.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Tze(r){if(!r)return"utf8";for(var e;;)switch(r){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return r;default:if(e)return;r=(""+r).toLowerCase(),e=!0}}function Oze(r){var e=Tze(r);if(typeof e!="string"&&(sM.isEncoding===Rle||!Rle(r)))throw new Error("Unknown encoding: "+r);return e||r}Fle.StringDecoder=sE;function sE(r){this.encoding=Oze(r);var e;switch(this.encoding){case"utf16le":this.text=Yze,this.end=jze,e=4;break;case"utf8":this.fillLast=Uze,e=4;break;case"base64":this.text=qze,this.end=Jze,e=3;break;default:this.write=Wze,this.end=zze;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=sM.allocUnsafe(e)}sE.prototype.write=function(r){if(r.length===0)return"";var e,t;if(this.lastNeed){if(e=this.fillLast(r),e===void 0)return"";t=this.lastNeed,this.lastNeed=0}else t=0;return t>5===6?2:r>>4===14?3:r>>3===30?4:r>>6===2?-1:-2}function Mze(r,e,t){var i=e.length-1;if(i=0?(n>0&&(r.lastNeed=n-1),n):--i=0?(n>0&&(r.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:r.lastNeed=n-3),n):0))}function Kze(r,e,t){if((e[0]&192)!==128)return r.lastNeed=0,"\uFFFD";if(r.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return r.lastNeed=1,"\uFFFD";if(r.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return r.lastNeed=2,"\uFFFD"}}function Uze(r){var e=this.lastTotal-this.lastNeed,t=Kze(this,r,e);if(t!==void 0)return t;if(this.lastNeed<=r.length)return r.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);r.copy(this.lastChar,e,0,r.length),this.lastNeed-=r.length}function Hze(r,e){var t=Mze(this,r,e);if(!this.lastNeed)return r.toString("utf8",e);this.lastTotal=t;var i=r.length-(t-this.lastNeed);return r.copy(this.lastChar,0,i),r.toString("utf8",e,i)}function Gze(r){var e=r&&r.length?this.write(r):"";return this.lastNeed?e+"\uFFFD":e}function Yze(r,e){if((r.length-e)%2===0){var t=r.toString("utf16le",e);if(t){var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1],t.slice(0,-1)}return t}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=r[r.length-1],r.toString("utf16le",e,r.length-1)}function jze(r){var e=r&&r.length?this.write(r):"";if(this.lastNeed){var t=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,t)}return e}function qze(r,e){var t=(r.length-e)%3;return t===0?r.toString("base64",e):(this.lastNeed=3-t,this.lastTotal=3,t===1?this.lastChar[0]=r[r.length-1]:(this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1]),r.toString("base64",e,r.length-t))}function Jze(r){var e=r&&r.length?this.write(r):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function Wze(r){return r.toString(this.encoding)}function zze(r){return r&&r.length?this.write(r):""}});var ob=w((gQt,Tle)=>{"use strict";var Nle=fl().codes.ERR_STREAM_PREMATURE_CLOSE;function Vze(r){var e=!1;return function(){if(!e){e=!0;for(var t=arguments.length,i=new Array(t),n=0;n{"use strict";var ab;function dl(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var Zze=ob(),Cl=Symbol("lastResolve"),Tu=Symbol("lastReject"),oE=Symbol("error"),Ab=Symbol("ended"),Ou=Symbol("lastPromise"),aM=Symbol("handlePromise"),Mu=Symbol("stream");function ml(r,e){return{value:r,done:e}}function $ze(r){var e=r[Cl];if(e!==null){var t=r[Mu].read();t!==null&&(r[Ou]=null,r[Cl]=null,r[Tu]=null,e(ml(t,!1)))}}function e5e(r){process.nextTick($ze,r)}function t5e(r,e){return function(t,i){r.then(function(){if(e[Ab]){t(ml(void 0,!0));return}e[aM](t,i)},i)}}var r5e=Object.getPrototypeOf(function(){}),i5e=Object.setPrototypeOf((ab={get stream(){return this[Mu]},next:function(){var e=this,t=this[oE];if(t!==null)return Promise.reject(t);if(this[Ab])return Promise.resolve(ml(void 0,!0));if(this[Mu].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[oE]?a(e[oE]):o(ml(void 0,!0))})});var i=this[Ou],n;if(i)n=new Promise(t5e(i,this));else{var s=this[Mu].read();if(s!==null)return Promise.resolve(ml(s,!1));n=new Promise(this[aM])}return this[Ou]=n,n}},dl(ab,Symbol.asyncIterator,function(){return this}),dl(ab,"return",function(){var e=this;return new Promise(function(t,i){e[Mu].destroy(null,function(n){if(n){i(n);return}t(ml(void 0,!0))})})}),ab),r5e),n5e=function(e){var t,i=Object.create(i5e,(t={},dl(t,Mu,{value:e,writable:!0}),dl(t,Cl,{value:null,writable:!0}),dl(t,Tu,{value:null,writable:!0}),dl(t,oE,{value:null,writable:!0}),dl(t,Ab,{value:e._readableState.endEmitted,writable:!0}),dl(t,aM,{value:function(s,o){var a=i[Mu].read();a?(i[Ou]=null,i[Cl]=null,i[Tu]=null,s(ml(a,!1))):(i[Cl]=s,i[Tu]=o)},writable:!0}),t));return i[Ou]=null,Zze(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[Tu];s!==null&&(i[Ou]=null,i[Cl]=null,i[Tu]=null,s(n)),i[oE]=n;return}var o=i[Cl];o!==null&&(i[Ou]=null,i[Cl]=null,i[Tu]=null,o(ml(void 0,!0))),i[Ab]=!0}),e.on("readable",e5e.bind(null,i)),i};Ole.exports=n5e});var Gle=w((hQt,Hle)=>{"use strict";function Kle(r,e,t,i,n,s,o){try{var a=r[s](o),l=a.value}catch(c){t(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function s5e(r){return function(){var e=this,t=arguments;return new Promise(function(i,n){var s=r.apply(e,t);function o(l){Kle(s,i,n,o,a,"next",l)}function a(l){Kle(s,i,n,o,a,"throw",l)}o(void 0)})}}function Ule(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function o5e(r){for(var e=1;e{"use strict";Zle.exports=Ut;var $h;Ut.ReadableState=Jle;var pQt=J("events").EventEmitter,qle=function(e,t){return e.listeners(t).length},AE=YO(),lb=J("buffer").Buffer,c5e=global.Uint8Array||function(){};function u5e(r){return lb.from(r)}function g5e(r){return lb.isBuffer(r)||r instanceof c5e}var AM=J("util"),Dt;AM&&AM.debuglog?Dt=AM.debuglog("stream"):Dt=function(){};var f5e=ule(),pM=JO(),h5e=WO(),p5e=h5e.getHighWaterMark,cb=fl().codes,d5e=cb.ERR_INVALID_ARG_TYPE,C5e=cb.ERR_STREAM_PUSH_AFTER_EOF,m5e=cb.ERR_METHOD_NOT_IMPLEMENTED,E5e=cb.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,ep,lM,cM;hl()(Ut,AE);var aE=pM.errorOrDestroy,uM=["error","close","destroy","pause","resume"];function I5e(r,e,t){if(typeof r.prependListener=="function")return r.prependListener(e,t);!r._events||!r._events[e]?r.on(e,t):Array.isArray(r._events[e])?r._events[e].unshift(t):r._events[e]=[t,r._events[e]]}function Jle(r,e,t){$h=$h||Lu(),r=r||{},typeof t!="boolean"&&(t=e instanceof $h),this.objectMode=!!r.objectMode,t&&(this.objectMode=this.objectMode||!!r.readableObjectMode),this.highWaterMark=p5e(this,r,"readableHighWaterMark",t),this.buffer=new f5e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=r.emitClose!==!1,this.autoDestroy=!!r.autoDestroy,this.destroyed=!1,this.defaultEncoding=r.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,r.encoding&&(ep||(ep=oM().StringDecoder),this.decoder=new ep(r.encoding),this.encoding=r.encoding)}function Ut(r){if($h=$h||Lu(),!(this instanceof Ut))return new Ut(r);var e=this instanceof $h;this._readableState=new Jle(r,this,e),this.readable=!0,r&&(typeof r.read=="function"&&(this._read=r.read),typeof r.destroy=="function"&&(this._destroy=r.destroy)),AE.call(this)}Object.defineProperty(Ut.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Ut.prototype.destroy=pM.destroy;Ut.prototype._undestroy=pM.undestroy;Ut.prototype._destroy=function(r,e){e(r)};Ut.prototype.push=function(r,e){var t=this._readableState,i;return t.objectMode?i=!0:typeof r=="string"&&(e=e||t.defaultEncoding,e!==t.encoding&&(r=lb.from(r,e),e=""),i=!0),Wle(this,r,e,!1,i)};Ut.prototype.unshift=function(r){return Wle(this,r,null,!0,!1)};function Wle(r,e,t,i,n){Dt("readableAddChunk",e);var s=r._readableState;if(e===null)s.reading=!1,B5e(r,s);else{var o;if(n||(o=y5e(s,e)),o)aE(r,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==lb.prototype&&(e=u5e(e)),i)s.endEmitted?aE(r,new E5e):gM(r,s,e,!0);else if(s.ended)aE(r,new C5e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!t?(e=s.decoder.write(e),s.objectMode||e.length!==0?gM(r,s,e,!1):hM(r,s)):gM(r,s,e,!1)}else i||(s.reading=!1,hM(r,s))}return!s.ended&&(s.length=Yle?r=Yle:(r--,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r++),r}function jle(r,e){return r<=0||e.length===0&&e.ended?0:e.objectMode?1:r!==r?e.flowing&&e.length?e.buffer.head.data.length:e.length:(r>e.highWaterMark&&(e.highWaterMark=w5e(r)),r<=e.length?r:e.ended?e.length:(e.needReadable=!0,0))}Ut.prototype.read=function(r){Dt("read",r),r=parseInt(r,10);var e=this._readableState,t=r;if(r!==0&&(e.emittedReadable=!1),r===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Dt("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?fM(this):ub(this),null;if(r=jle(r,e),r===0&&e.ended)return e.length===0&&fM(this),null;var i=e.needReadable;Dt("need readable",i),(e.length===0||e.length-r0?n=Xle(r,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,r=0):(e.length-=r,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),t!==r&&e.ended&&fM(this)),n!==null&&this.emit("data",n),n};function B5e(r,e){if(Dt("onEofChunk"),!e.ended){if(e.decoder){var t=e.decoder.end();t&&t.length&&(e.buffer.push(t),e.length+=e.objectMode?1:t.length)}e.ended=!0,e.sync?ub(r):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,zle(r)))}}function ub(r){var e=r._readableState;Dt("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Dt("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(zle,r))}function zle(r){var e=r._readableState;Dt("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(r.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,dM(r)}function hM(r,e){e.readingMore||(e.readingMore=!0,process.nextTick(Q5e,r,e))}function Q5e(r,e){for(;!e.reading&&!e.ended&&(e.length1&&_le(i.pipes,r)!==-1)&&!c&&(Dt("false write response, pause",i.awaitDrain),i.awaitDrain++),t.pause())}function f(y){Dt("onerror",y),C(),r.removeListener("error",f),qle(r,"error")===0&&aE(r,y)}I5e(r,"error",f);function h(){r.removeListener("finish",p),C()}r.once("close",h);function p(){Dt("onfinish"),r.removeListener("close",h),C()}r.once("finish",p);function C(){Dt("unpipe"),t.unpipe(r)}return r.emit("pipe",t),i.flowing||(Dt("pipe resume"),t.resume()),r};function b5e(r){return function(){var t=r._readableState;Dt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&qle(r,"data")&&(t.flowing=!0,dM(r))}}Ut.prototype.unpipe=function(r){var e=this._readableState,t={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return r&&r!==e.pipes?this:(r||(r=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,r&&r.emit("unpipe",this,t),this);if(!r){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):r==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Dt("on readable",i.length,i.reading),i.length?ub(this):i.reading||process.nextTick(S5e,this)),t};Ut.prototype.addListener=Ut.prototype.on;Ut.prototype.removeListener=function(r,e){var t=AE.prototype.removeListener.call(this,r,e);return r==="readable"&&process.nextTick(Vle,this),t};Ut.prototype.removeAllListeners=function(r){var e=AE.prototype.removeAllListeners.apply(this,arguments);return(r==="readable"||r===void 0)&&process.nextTick(Vle,this),e};function Vle(r){var e=r._readableState;e.readableListening=r.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:r.listenerCount("data")>0&&r.resume()}function S5e(r){Dt("readable nexttick read 0"),r.read(0)}Ut.prototype.resume=function(){var r=this._readableState;return r.flowing||(Dt("resume"),r.flowing=!r.readableListening,v5e(this,r)),r.paused=!1,this};function v5e(r,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(x5e,r,e))}function x5e(r,e){Dt("resume",e.reading),e.reading||r.read(0),e.resumeScheduled=!1,r.emit("resume"),dM(r),e.flowing&&!e.reading&&r.read(0)}Ut.prototype.pause=function(){return Dt("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Dt("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function dM(r){var e=r._readableState;for(Dt("flow",e.flowing);e.flowing&&r.read()!==null;);}Ut.prototype.wrap=function(r){var e=this,t=this._readableState,i=!1;r.on("end",function(){if(Dt("wrapped end"),t.decoder&&!t.ended){var o=t.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),r.on("data",function(o){if(Dt("wrapped data"),t.decoder&&(o=t.decoder.write(o)),!(t.objectMode&&o==null)&&!(!t.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,r.pause())}});for(var n in r)this[n]===void 0&&typeof r[n]=="function"&&(this[n]=function(a){return function(){return r[a].apply(r,arguments)}}(n));for(var s=0;s=e.length?(e.decoder?t=e.buffer.join(""):e.buffer.length===1?t=e.buffer.first():t=e.buffer.concat(e.length),e.buffer.clear()):t=e.buffer.consume(r,e.decoder),t}function fM(r){var e=r._readableState;Dt("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(P5e,e,r))}function P5e(r,e){if(Dt("endReadableNT",r.endEmitted,r.length),!r.endEmitted&&r.length===0&&(r.endEmitted=!0,e.readable=!1,e.emit("end"),r.autoDestroy)){var t=e._writableState;(!t||t.autoDestroy&&t.finished)&&e.destroy()}}typeof Symbol=="function"&&(Ut.from=function(r,e){return cM===void 0&&(cM=Gle()),cM(Ut,r,e)});function _le(r,e){for(var t=0,i=r.length;t{"use strict";ece.exports=sA;var gb=fl().codes,D5e=gb.ERR_METHOD_NOT_IMPLEMENTED,k5e=gb.ERR_MULTIPLE_CALLBACK,R5e=gb.ERR_TRANSFORM_ALREADY_TRANSFORMING,F5e=gb.ERR_TRANSFORM_WITH_LENGTH_0,fb=Lu();hl()(sA,fb);function N5e(r,e){var t=this._transformState;t.transforming=!1;var i=t.writecb;if(i===null)return this.emit("error",new k5e);t.writechunk=null,t.writecb=null,e!=null&&this.push(e),i(r);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";rce.exports=lE;var tce=CM();hl()(lE,tce);function lE(r){if(!(this instanceof lE))return new lE(r);tce.call(this,r)}lE.prototype._transform=function(r,e,t){t(null,r)}});var Ace=w((EQt,ace)=>{"use strict";var mM;function T5e(r){var e=!1;return function(){e||(e=!0,r.apply(void 0,arguments))}}var oce=fl().codes,O5e=oce.ERR_MISSING_ARGS,M5e=oce.ERR_STREAM_DESTROYED;function nce(r){if(r)throw r}function K5e(r){return r.setHeader&&typeof r.abort=="function"}function U5e(r,e,t,i){i=T5e(i);var n=!1;r.on("close",function(){n=!0}),mM===void 0&&(mM=ob()),mM(r,{readable:e,writable:t},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,K5e(r))return r.abort();if(typeof r.destroy=="function")return r.destroy();i(o||new M5e("pipe"))}}}function sce(r){r()}function H5e(r,e){return r.pipe(e)}function G5e(r){return!r.length||typeof r[r.length-1]!="function"?nce:r.pop()}function Y5e(){for(var r=arguments.length,e=new Array(r),t=0;t0;return U5e(o,l,c,function(u){n||(n=u),u&&s.forEach(sce),!l&&(s.forEach(sce),i(n))})});return e.reduce(H5e)}ace.exports=Y5e});var tp=w((Ns,uE)=>{var cE=J("stream");process.env.READABLE_STREAM==="disable"&&cE?(uE.exports=cE.Readable,Object.assign(uE.exports,cE),uE.exports.Stream=cE):(Ns=uE.exports=rM(),Ns.Stream=cE||Ns,Ns.Readable=Ns,Ns.Writable=$O(),Ns.Duplex=Lu(),Ns.Transform=CM(),Ns.PassThrough=ice(),Ns.finished=ob(),Ns.pipeline=Ace())});var uce=w((IQt,cce)=>{"use strict";var{Buffer:ho}=J("buffer"),lce=Symbol.for("BufferList");function fr(r){if(!(this instanceof fr))return new fr(r);fr._init.call(this,r)}fr._init=function(e){Object.defineProperty(this,lce,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};fr.prototype._new=function(e){return new fr(e)};fr.prototype._offset=function(e){if(e===0)return[0,0];let t=0;for(let i=0;ithis.length||e<0)return;let t=this._offset(e);return this._bufs[t[0]][t[1]]};fr.prototype.slice=function(e,t){return typeof e=="number"&&e<0&&(e+=this.length),typeof t=="number"&&t<0&&(t+=this.length),this.copy(null,0,e,t)};fr.prototype.copy=function(e,t,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||ho.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&t||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:ho.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};fr.prototype.shallowSlice=function(e,t){if(e=e||0,t=typeof t!="number"?this.length:t,e<0&&(e+=this.length),t<0&&(t+=this.length),e===t)return this._new();let i=this._offset(e),n=this._offset(t),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};fr.prototype.toString=function(e,t,i){return this.slice(t,i).toString(e)};fr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};fr.prototype.duplicate=function(){let e=this._new();for(let t=0;tthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=r.length){let l=o.indexOf(r,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-r.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,r))return l;s++}s=0}return-1};fr.prototype._match=function(r,e){if(this.length-r{"use strict";var EM=tp().Duplex,j5e=hl(),gE=uce();function Yi(r){if(!(this instanceof Yi))return new Yi(r);if(typeof r=="function"){this._callback=r;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),r=null}gE._init.call(this,r),EM.call(this)}j5e(Yi,EM);Object.assign(Yi.prototype,gE.prototype);Yi.prototype._new=function(e){return new Yi(e)};Yi.prototype._write=function(e,t,i){this._appendBuffer(e),typeof i=="function"&&i()};Yi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Yi.prototype.end=function(e){EM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Yi.prototype._destroy=function(e,t){this._bufs.length=0,this.length=0,t(e)};Yi.prototype._isBufferList=function(e){return e instanceof Yi||e instanceof gE||Yi.isBufferList(e)};Yi.isBufferList=gE.isBufferList;hb.exports=Yi;hb.exports.BufferListStream=Yi;hb.exports.BufferList=gE});var wM=w(ip=>{var q5e=Buffer.alloc,J5e="0000000000000000000",W5e="7777777777777777777",fce="0".charCodeAt(0),hce=Buffer.from("ustar\0","binary"),z5e=Buffer.from("00","binary"),V5e=Buffer.from("ustar ","binary"),X5e=Buffer.from(" \0","binary"),_5e=parseInt("7777",8),fE=257,yM=263,Z5e=function(r,e,t){return typeof r!="number"?t:(r=~~r,r>=e?e:r>=0||(r+=e,r>=0)?r:0)},$5e=function(r){switch(r){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},eVe=function(r){switch(r){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},pce=function(r,e,t,i){for(;te?W5e.slice(0,e)+" ":J5e.slice(0,e-r.length)+r+" "};function tVe(r){var e;if(r[0]===128)e=!0;else if(r[0]===255)e=!1;else return null;for(var t=[],i=r.length-1;i>0;i--){var n=r[i];e?t.push(n):t.push(255-n)}var s=0,o=t.length;for(i=0;i=Math.pow(10,t)&&t++,e+t+r};ip.decodeLongPath=function(r,e){return rp(r,0,r.length,e)};ip.encodePax=function(r){var e="";r.name&&(e+=IM(" path="+r.name+` -`)),r.linkname&&(e+=IM(" linkpath="+r.linkname+` -`));var t=r.pax;if(t)for(var i in t)e+=IM(" "+i+"="+t[i]+` -`);return Buffer.from(e)};ip.decodePax=function(r){for(var e={};r.length;){for(var t=0;t100;){var n=t.indexOf("/");if(n===-1)return null;i+=i?"/"+t.slice(0,n):t.slice(0,n),t=t.slice(n+1)}return Buffer.byteLength(t)>100||Buffer.byteLength(i)>155||r.linkname&&Buffer.byteLength(r.linkname)>100?null:(e.write(t),e.write(El(r.mode&_5e,6),100),e.write(El(r.uid,6),108),e.write(El(r.gid,6),116),e.write(El(r.size,11),124),e.write(El(r.mtime.getTime()/1e3|0,11),136),e[156]=fce+eVe(r.type),r.linkname&&e.write(r.linkname,157),hce.copy(e,fE),z5e.copy(e,yM),r.uname&&e.write(r.uname,265),r.gname&&e.write(r.gname,297),e.write(El(r.devmajor||0,6),329),e.write(El(r.devminor||0,6),337),i&&e.write(i,345),e.write(El(dce(e),6),148),e)};ip.decode=function(r,e,t){var i=r[156]===0?0:r[156]-fce,n=rp(r,0,100,e),s=Il(r,100,8),o=Il(r,108,8),a=Il(r,116,8),l=Il(r,124,12),c=Il(r,136,12),u=$5e(i),g=r[157]===0?null:rp(r,157,100,e),f=rp(r,265,32),h=rp(r,297,32),p=Il(r,329,8),C=Il(r,337,8),y=dce(r);if(y===8*32)return null;if(y!==Il(r,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(hce.compare(r,fE,fE+6)===0)r[345]&&(n=rp(r,345,155,e)+"/"+n);else if(!(V5e.compare(r,fE,fE+6)===0&&X5e.compare(r,yM,yM+2)===0)){if(!t)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:C}}});var Bce=w((BQt,wce)=>{var mce=J("util"),rVe=gce(),hE=wM(),Ece=tp().Writable,Ice=tp().PassThrough,yce=function(){},Cce=function(r){return r&=511,r&&512-r},iVe=function(r,e){var t=new pb(r,e);return t.end(),t},nVe=function(r,e){return e.path&&(r.name=e.path),e.linkpath&&(r.linkname=e.linkpath),e.size&&(r.size=parseInt(e.size,10)),r.pax=e,r},pb=function(r,e){this._parent=r,this.offset=e,Ice.call(this,{autoDestroy:!1})};mce.inherits(pb,Ice);pb.prototype.destroy=function(r){this._parent.destroy(r)};var oA=function(r){if(!(this instanceof oA))return new oA(r);Ece.call(this,r),r=r||{},this._offset=0,this._buffer=rVe(),this._missing=0,this._partial=!1,this._onparse=yce,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,t=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Cce(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Cce(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=hE.decodePax(t.slice(0,f)),t.consume(f),s()},l=function(){var f=e._header.size;e._pax=hE.decodePax(t.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),t.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=hE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=hE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=hE.decode(t.slice(0,512),r.filenameEncoding,r.allowUnknownFormat)}catch(p){e.emit("error",p)}if(t.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=nVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,iVe(e,f),n);return}e._stream=new pb(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};mce.inherits(oA,Ece);oA.prototype.destroy=function(r){this._destroyed||(this._destroyed=!0,r&&this.emit("error",r),this.emit("close"),this._stream&&this._stream.emit("close"))};oA.prototype._parse=function(r,e){this._destroyed||(this._offset+=r,this._missing=r,e===this._onheader&&(this._partial=!1),this._onparse=e)};oA.prototype._continue=function(){if(!this._destroyed){var r=this._cb;this._cb=yce,this._overflow?this._write(this._overflow,void 0,r):r()}};oA.prototype._write=function(r,e,t){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(r.length&&(this._partial=!0),r.lengths&&(o=r.slice(s),r=r.slice(0,s)),i?i.end(r):n.append(r),this._overflow=o,this._onparse()}};oA.prototype._final=function(r){if(this._partial)return this.destroy(new Error("Unexpected end of data"));r()};wce.exports=oA});var bce=w((QQt,Qce)=>{Qce.exports=J("fs").constants||J("constants")});var Dce=w((bQt,Pce)=>{var np=bce(),Sce=fk(),Cb=hl(),sVe=Buffer.alloc,vce=tp().Readable,sp=tp().Writable,oVe=J("string_decoder").StringDecoder,db=wM(),aVe=parseInt("755",8),AVe=parseInt("644",8),xce=sVe(1024),QM=function(){},BM=function(r,e){e&=511,e&&r.push(xce.slice(0,512-e))};function lVe(r){switch(r&np.S_IFMT){case np.S_IFBLK:return"block-device";case np.S_IFCHR:return"character-device";case np.S_IFDIR:return"directory";case np.S_IFIFO:return"fifo";case np.S_IFLNK:return"symlink"}return"file"}var mb=function(r){sp.call(this),this.written=0,this._to=r,this._destroyed=!1};Cb(mb,sp);mb.prototype._write=function(r,e,t){if(this.written+=r.length,this._to.push(r))return t();this._to._drain=t};mb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Eb=function(){sp.call(this),this.linkname="",this._decoder=new oVe("utf-8"),this._destroyed=!1};Cb(Eb,sp);Eb.prototype._write=function(r,e,t){this.linkname+=this._decoder.write(r),t()};Eb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var pE=function(){sp.call(this),this._destroyed=!1};Cb(pE,sp);pE.prototype._write=function(r,e,t){t(new Error("No body allowed for this entry"))};pE.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var ra=function(r){if(!(this instanceof ra))return new ra(r);vce.call(this,r),this._drain=QM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};Cb(ra,vce);ra.prototype.entry=function(r,e,t){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(t=e,e=null),t||(t=QM);var i=this;if((!r.size||r.type==="symlink")&&(r.size=0),r.type||(r.type=lVe(r.mode)),r.mode||(r.mode=r.type==="directory"?aVe:AVe),r.uid||(r.uid=0),r.gid||(r.gid=0),r.mtime||(r.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){r.size=e.length,this._encode(r);var n=this.push(e);return BM(i,r.size),n?process.nextTick(t):this._drain=t,new pE}if(r.type==="symlink"&&!r.linkname){var s=new Eb;return Sce(s,function(a){if(a)return i.destroy(),t(a);r.linkname=s.linkname,i._encode(r),t()}),s}if(this._encode(r),r.type!=="file"&&r.type!=="contiguous-file")return process.nextTick(t),new pE;var o=new mb(this);return this._stream=o,Sce(o,function(a){if(i._stream=null,a)return i.destroy(),t(a);if(o.written!==r.size)return i.destroy(),t(new Error("size mismatch"));BM(i,r.size),i._finalizing&&i.finalize(),t()}),o}};ra.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(xce),this.push(null))};ra.prototype.destroy=function(r){this._destroyed||(this._destroyed=!0,r&&this.emit("error",r),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};ra.prototype._encode=function(r){if(!r.pax){var e=db.encode(r);if(e){this.push(e);return}}this._encodePax(r)};ra.prototype._encodePax=function(r){var e=db.encodePax({name:r.name,linkname:r.linkname,pax:r.pax}),t={name:"PaxHeader",mode:r.mode,uid:r.uid,gid:r.gid,size:e.length,mtime:r.mtime,type:"pax-header",linkname:r.linkname&&"PaxHeader",uname:r.uname,gname:r.gname,devmajor:r.devmajor,devminor:r.devminor};this.push(db.encode(t)),this.push(e),BM(this,e.length),t.size=r.size,t.type=r.type,this.push(db.encode(t))};ra.prototype._read=function(r){var e=this._drain;this._drain=QM,e()};Pce.exports=ra});var kce=w(bM=>{bM.extract=Bce();bM.pack=Dce()});var Yce=w((WQt,Gce)=>{"use strict";var Uu=class{constructor(e,t,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=t||{},this.__providers=Uce(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return kM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,t=this){for(let[i,n]of this.entries())e.call(t,n,i,this)}toJSON(){let e={};return this.forEach((t,i)=>{e[i]=t}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let t=e||this.__opts.other;if(t){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(t):QVe(n);for(let[o,a]of s)t(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,t]of this.entries())yield[e,t]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Uu(this.__specs,this.__opts,Uce(this.__providers).concat(e)),Hce)}};try{let r=J("util");Uu.prototype[r.inspect.custom]=function(e,t){return this[Symbol.toStringTag]+" "+r.inspect(this.toJSON(),t)}}catch{}function wVe(r){throw Object.assign(new Error(`invalid config key requested: ${r}`),{code:"EBADKEY"})}function kM(r,e,t){let i=r.__specs[e];if(t&&!i&&(!r.__opts.other||!r.__opts.other(e)))wVe(e);else{i||(i={});let n;for(let s of r.__providers){if(n=Kce(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=Kce(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(r):i.default:n}}function Kce(r,e){let t;return e.__isFiggyPudding?t=kM(e,r,!1):typeof e.get=="function"?t=e.get(r):t=e[r],t}var Hce={has(r,e){return e in r.__specs&&kM(r,e,!1)!==void 0},ownKeys(r){return Object.keys(r.__specs)},get(r,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Uu.prototype?r[e]:r.get(e)},set(r,e,t){if(typeof e=="symbol"||e.slice(0,2)==="__")return r[e]=t,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};Gce.exports=BVe;function BVe(r,e){function t(...i){return new Proxy(new Uu(r,e,i),Hce)}return t}function Uce(r){let e=[];return r.forEach(t=>e.unshift(t)),e}function QVe(r){return Object.keys(r).map(e=>[e,r[e]])}});var Jce=w((zQt,sa)=>{"use strict";var CE=J("crypto"),bVe=Yce(),SVe=J("stream").Transform,jce=["sha256","sha384","sha512"],vVe=/^[a-z0-9+/]+(?:=?=?)$/i,xVe=/^([^-]+)-([^?]+)([?\S*]*)$/,PVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,DVe=/^[\x21-\x7E]+$/,on=bVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>MVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),yl=class{get isHash(){return!0}constructor(e,t){t=on(t);let i=!!t.strict;this.source=e.trim();let n=this.source.match(i?PVe:xVe);if(!n||i&&!jce.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(jce.some(i=>i===this.algorithm)&&this.digest.match(vVe)&&(this.options||[]).every(i=>i.match(DVe))))return"";let t=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${t}`}},Hu=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let t=e.sep||" ";return e.strict&&(t=t.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>yl.prototype.toString.call(n,e)).filter(n=>n.length).join(t)).filter(i=>i.length).join(t)}concat(e,t){t=on(t);let i=typeof e=="string"?e:dE(e,t);return na(`${this.toString(t)} ${i}`,t)}hexDigest(){return na(this,{single:!0}).hexDigest()}match(e,t){t=on(t);let i=na(e,t),n=i.pickAlgorithm(t);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let t=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>t(n,s)||n)}};sa.exports.parse=na;function na(r,e){if(e=on(e),typeof r=="string")return RM(r,e);if(r.algorithm&&r.digest){let t=new Hu;return t[r.algorithm]=[r],RM(dE(t,e),e)}else return RM(dE(r,e),e)}function RM(r,e){return e.single?new yl(r,e):r.trim().split(/\s+/).reduce((t,i)=>{let n=new yl(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;t[s]||(t[s]=[]),t[s].push(n)}return t},new Hu)}sa.exports.stringify=dE;function dE(r,e){return e=on(e),r.algorithm&&r.digest?yl.prototype.toString.call(r,e):typeof r=="string"?dE(na(r,e),e):Hu.prototype.toString.call(r,e)}sa.exports.fromHex=kVe;function kVe(r,e,t){t=on(t);let i=t.options&&t.options.length?`?${t.options.join("?")}`:"";return na(`${e}-${Buffer.from(r,"hex").toString("base64")}${i}`,t)}sa.exports.fromData=RVe;function RVe(r,e){e=on(e);let t=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return t.reduce((n,s)=>{let o=CE.createHash(s).update(r).digest("base64"),a=new yl(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Hu)}sa.exports.fromStream=FVe;function FVe(r,e){e=on(e);let t=e.Promise||Promise,i=FM(e);return new t((n,s)=>{r.pipe(i),r.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}sa.exports.checkData=NVe;function NVe(r,e,t){if(t=on(t),e=na(e,t),!Object.keys(e).length){if(t.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(t),n=CE.createHash(i).update(r).digest("base64"),s=na({algorithm:i,digest:n}),o=s.match(e,t);if(o||!t.error)return o;if(typeof t.size=="number"&&r.length!==t.size){let a=new Error(`data size mismatch when checking ${e}. +`,h}function Dze(r,e){return e.fs_.chmod(r,493)}function aM(r){if(!r)return{win32:"",posix:""};let e=typeof r=="string"?r.split(Ls.delimiter):Array.from(r),t={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];t.win32=t.win32?`${t.win32};${n}`:n,t.posix=t.posix?`${t.posix}:${s}`:s,t[i]={win32:n,posix:s}}return t}xle.exports=oM});var EM=w((zQt,Vle)=>{Vle.exports=J("stream")});var $le=w((VQt,_le)=>{"use strict";function Xle(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function Xze(r){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(t){var i={data:t,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=t+i.data;return n}},{key:"concat",value:function(t){if(this.length===0)return pb.alloc(0);for(var i=pb.allocUnsafe(t>>>0),n=this.head,s=0;n;)i5e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(t,i){var n;return to.length?o.length:t;if(a===o.length?s+=o:s+=o.slice(0,t),t-=a,t===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(t){var i=pb.allocUnsafe(t),n=this.head,s=1;for(n.data.copy(i),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(i,i.length-t,0,a),t-=a,t===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:r5e,value:function(t,i){return IM(this,Xze({},i,{depth:0,customInspect:!1}))}}]),r}()});var wM=w((XQt,tce)=>{"use strict";function n5e(r,e){var t=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(yM,this,r)):process.nextTick(yM,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,function(s){!e&&s?t._writableState?t._writableState.errorEmitted?process.nextTick(db,t):(t._writableState.errorEmitted=!0,process.nextTick(ece,t,s)):process.nextTick(ece,t,s):e?(process.nextTick(db,t),e(s)):process.nextTick(db,t)}),this)}function ece(r,e){yM(r,e),db(r)}function db(r){r._writableState&&!r._writableState.emitClose||r._readableState&&!r._readableState.emitClose||r.emit("close")}function s5e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function yM(r,e){r.emit("error",e)}function o5e(r,e){var t=r._readableState,i=r._writableState;t&&t.autoDestroy||i&&i.autoDestroy?r.destroy(e):r.emit("error",e)}tce.exports={destroy:n5e,undestroy:s5e,errorOrDestroy:o5e}});var Sl=w((ZQt,nce)=>{"use strict";var ice={};function Os(r,e,t){t||(t=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends t{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=t.name,n.prototype.code=r,ice[r]=n}function rce(r,e){if(Array.isArray(r)){let t=r.length;return r=r.map(i=>String(i)),t>2?`one of ${e} ${r.slice(0,t-1).join(", ")}, or `+r[t-1]:t===2?`one of ${e} ${r[0]} or ${r[1]}`:`of ${e} ${r[0]}`}else return`of ${e} ${String(r)}`}function a5e(r,e,t){return r.substr(!t||t<0?0:+t,e.length)===e}function A5e(r,e,t){return(t===void 0||t>r.length)&&(t=r.length),r.substring(t-e.length,t)===e}function l5e(r,e,t){return typeof t!="number"&&(t=0),t+e.length>r.length?!1:r.indexOf(e,t)!==-1}Os("ERR_INVALID_OPT_VALUE",function(r,e){return'The value "'+e+'" is invalid for option "'+r+'"'},TypeError);Os("ERR_INVALID_ARG_TYPE",function(r,e,t){let i;typeof e=="string"&&a5e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(A5e(r," argument"))n=`The ${r} ${i} ${rce(e,"type")}`;else{let s=l5e(r,".")?"property":"argument";n=`The "${r}" ${s} ${i} ${rce(e,"type")}`}return n+=`. Received type ${typeof t}`,n},TypeError);Os("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Os("ERR_METHOD_NOT_IMPLEMENTED",function(r){return"The "+r+" method is not implemented"});Os("ERR_STREAM_PREMATURE_CLOSE","Premature close");Os("ERR_STREAM_DESTROYED",function(r){return"Cannot call "+r+" after a stream was destroyed"});Os("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Os("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Os("ERR_STREAM_WRITE_AFTER_END","write after end");Os("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Os("ERR_UNKNOWN_ENCODING",function(r){return"Unknown encoding: "+r},TypeError);Os("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");nce.exports.codes=ice});var BM=w((_Qt,sce)=>{"use strict";var c5e=Sl().codes.ERR_INVALID_OPT_VALUE;function u5e(r,e,t){return r.highWaterMark!=null?r.highWaterMark:e?r[t]:null}function g5e(r,e,t,i){var n=u5e(e,i,t);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?t:"highWaterMark";throw new c5e(s,n)}return Math.floor(n)}return r.objectMode?16:16*1024}sce.exports={getHighWaterMark:g5e}});var oce=w(($Qt,QM)=>{typeof Object.create=="function"?QM.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:QM.exports=function(e,t){if(t){e.super_=t;var i=function(){};i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e}}});var vl=w((ebt,SM)=>{try{if(bM=J("util"),typeof bM.inherits!="function")throw"";SM.exports=bM.inherits}catch{SM.exports=oce()}var bM});var Ace=w((tbt,ace)=>{ace.exports=J("util").deprecate});var PM=w((rbt,hce)=>{"use strict";hce.exports=Tr;function cce(r){var e=this;this.next=null,this.entry=null,this.finish=function(){U5e(e,r)}}var ap;Tr.WritableState=dE;var f5e={deprecate:Ace()},uce=EM(),mb=J("buffer").Buffer,h5e=global.Uint8Array||function(){};function p5e(r){return mb.from(r)}function d5e(r){return mb.isBuffer(r)||r instanceof h5e}var xM=wM(),C5e=BM(),m5e=C5e.getHighWaterMark,xl=Sl().codes,E5e=xl.ERR_INVALID_ARG_TYPE,I5e=xl.ERR_METHOD_NOT_IMPLEMENTED,y5e=xl.ERR_MULTIPLE_CALLBACK,w5e=xl.ERR_STREAM_CANNOT_PIPE,B5e=xl.ERR_STREAM_DESTROYED,Q5e=xl.ERR_STREAM_NULL_VALUES,b5e=xl.ERR_STREAM_WRITE_AFTER_END,S5e=xl.ERR_UNKNOWN_ENCODING,Ap=xM.errorOrDestroy;vl()(Tr,uce);function v5e(){}function dE(r,e,t){ap=ap||qu(),r=r||{},typeof t!="boolean"&&(t=e instanceof ap),this.objectMode=!!r.objectMode,t&&(this.objectMode=this.objectMode||!!r.writableObjectMode),this.highWaterMark=m5e(this,r,"writableHighWaterMark",t),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=r.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=r.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){N5e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=r.emitClose!==!1,this.autoDestroy=!!r.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new cce(this)}dE.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t};(function(){try{Object.defineProperty(dE.prototype,"buffer",{get:f5e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Cb;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Cb=Function.prototype[Symbol.hasInstance],Object.defineProperty(Tr,Symbol.hasInstance,{value:function(e){return Cb.call(this,e)?!0:this!==Tr?!1:e&&e._writableState instanceof dE}})):Cb=function(e){return e instanceof this};function Tr(r){ap=ap||qu();var e=this instanceof ap;if(!e&&!Cb.call(Tr,this))return new Tr(r);this._writableState=new dE(r,this,e),this.writable=!0,r&&(typeof r.write=="function"&&(this._write=r.write),typeof r.writev=="function"&&(this._writev=r.writev),typeof r.destroy=="function"&&(this._destroy=r.destroy),typeof r.final=="function"&&(this._final=r.final)),uce.call(this)}Tr.prototype.pipe=function(){Ap(this,new w5e)};function x5e(r,e){var t=new b5e;Ap(r,t),process.nextTick(e,t)}function P5e(r,e,t,i){var n;return t===null?n=new Q5e:typeof t!="string"&&!e.objectMode&&(n=new E5e("chunk",["string","Buffer"],t)),n?(Ap(r,n),process.nextTick(i,n),!1):!0}Tr.prototype.write=function(r,e,t){var i=this._writableState,n=!1,s=!i.objectMode&&d5e(r);return s&&!mb.isBuffer(r)&&(r=p5e(r)),typeof e=="function"&&(t=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof t!="function"&&(t=v5e),i.ending?x5e(this,t):(s||P5e(this,i,r,t))&&(i.pendingcb++,n=k5e(this,i,s,r,e,t)),n};Tr.prototype.cork=function(){this._writableState.corked++};Tr.prototype.uncork=function(){var r=this._writableState;r.corked&&(r.corked--,!r.writing&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&gce(this,r))};Tr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new S5e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Tr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function D5e(r,e,t){return!r.objectMode&&r.decodeStrings!==!1&&typeof e=="string"&&(e=mb.from(e,t)),e}Object.defineProperty(Tr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function k5e(r,e,t,i,n,s){if(!t){var o=D5e(e,i,n);i!==o&&(t=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var K5e=Object.keys||function(r){var e=[];for(var t in r)e.push(t);return e};dce.exports=aa;var pce=RM(),kM=PM();vl()(aa,pce);for(DM=K5e(kM.prototype),Eb=0;Eb{var yb=J("buffer"),fA=yb.Buffer;function Cce(r,e){for(var t in r)e[t]=r[t]}fA.from&&fA.alloc&&fA.allocUnsafe&&fA.allocUnsafeSlow?mce.exports=yb:(Cce(yb,FM),FM.Buffer=lp);function lp(r,e,t){return fA(r,e,t)}Cce(fA,lp);lp.from=function(r,e,t){if(typeof r=="number")throw new TypeError("Argument must not be a number");return fA(r,e,t)};lp.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError("Argument must be a number");var i=fA(r);return e!==void 0?typeof t=="string"?i.fill(e,t):i.fill(e):i.fill(0),i};lp.allocUnsafe=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return fA(r)};lp.allocUnsafeSlow=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return yb.SlowBuffer(r)}});var TM=w(yce=>{"use strict";var LM=Ece().Buffer,Ice=LM.isEncoding||function(r){switch(r=""+r,r&&r.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Y5e(r){if(!r)return"utf8";for(var e;;)switch(r){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return r;default:if(e)return;r=(""+r).toLowerCase(),e=!0}}function j5e(r){var e=Y5e(r);if(typeof e!="string"&&(LM.isEncoding===Ice||!Ice(r)))throw new Error("Unknown encoding: "+r);return e||r}yce.StringDecoder=CE;function CE(r){this.encoding=j5e(r);var e;switch(this.encoding){case"utf16le":this.text=X5e,this.end=Z5e,e=4;break;case"utf8":this.fillLast=W5e,e=4;break;case"base64":this.text=_5e,this.end=$5e,e=3;break;default:this.write=e6e,this.end=t6e;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=LM.allocUnsafe(e)}CE.prototype.write=function(r){if(r.length===0)return"";var e,t;if(this.lastNeed){if(e=this.fillLast(r),e===void 0)return"";t=this.lastNeed,this.lastNeed=0}else t=0;return t>5===6?2:r>>4===14?3:r>>3===30?4:r>>6===2?-1:-2}function q5e(r,e,t){var i=e.length-1;if(i=0?(n>0&&(r.lastNeed=n-1),n):--i=0?(n>0&&(r.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:r.lastNeed=n-3),n):0))}function J5e(r,e,t){if((e[0]&192)!==128)return r.lastNeed=0,"\uFFFD";if(r.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return r.lastNeed=1,"\uFFFD";if(r.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return r.lastNeed=2,"\uFFFD"}}function W5e(r){var e=this.lastTotal-this.lastNeed,t=J5e(this,r,e);if(t!==void 0)return t;if(this.lastNeed<=r.length)return r.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);r.copy(this.lastChar,e,0,r.length),this.lastNeed-=r.length}function z5e(r,e){var t=q5e(this,r,e);if(!this.lastNeed)return r.toString("utf8",e);this.lastTotal=t;var i=r.length-(t-this.lastNeed);return r.copy(this.lastChar,0,i),r.toString("utf8",e,i)}function V5e(r){var e=r&&r.length?this.write(r):"";return this.lastNeed?e+"\uFFFD":e}function X5e(r,e){if((r.length-e)%2===0){var t=r.toString("utf16le",e);if(t){var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1],t.slice(0,-1)}return t}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=r[r.length-1],r.toString("utf16le",e,r.length-1)}function Z5e(r){var e=r&&r.length?this.write(r):"";if(this.lastNeed){var t=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,t)}return e}function _5e(r,e){var t=(r.length-e)%3;return t===0?r.toString("base64",e):(this.lastNeed=3-t,this.lastTotal=3,t===1?this.lastChar[0]=r[r.length-1]:(this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1]),r.toString("base64",e,r.length-t))}function $5e(r){var e=r&&r.length?this.write(r):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function e6e(r){return r.toString(this.encoding)}function t6e(r){return r&&r.length?this.write(r):""}});var wb=w((sbt,Qce)=>{"use strict";var wce=Sl().codes.ERR_STREAM_PREMATURE_CLOSE;function r6e(r){var e=!1;return function(){if(!e){e=!0;for(var t=arguments.length,i=new Array(t),n=0;n{"use strict";var Bb;function Pl(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var s6e=wb(),Dl=Symbol("lastResolve"),Ju=Symbol("lastReject"),mE=Symbol("error"),Qb=Symbol("ended"),Wu=Symbol("lastPromise"),OM=Symbol("handlePromise"),zu=Symbol("stream");function kl(r,e){return{value:r,done:e}}function o6e(r){var e=r[Dl];if(e!==null){var t=r[zu].read();t!==null&&(r[Wu]=null,r[Dl]=null,r[Ju]=null,e(kl(t,!1)))}}function a6e(r){process.nextTick(o6e,r)}function A6e(r,e){return function(t,i){r.then(function(){if(e[Qb]){t(kl(void 0,!0));return}e[OM](t,i)},i)}}var l6e=Object.getPrototypeOf(function(){}),c6e=Object.setPrototypeOf((Bb={get stream(){return this[zu]},next:function(){var e=this,t=this[mE];if(t!==null)return Promise.reject(t);if(this[Qb])return Promise.resolve(kl(void 0,!0));if(this[zu].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[mE]?a(e[mE]):o(kl(void 0,!0))})});var i=this[Wu],n;if(i)n=new Promise(A6e(i,this));else{var s=this[zu].read();if(s!==null)return Promise.resolve(kl(s,!1));n=new Promise(this[OM])}return this[Wu]=n,n}},Pl(Bb,Symbol.asyncIterator,function(){return this}),Pl(Bb,"return",function(){var e=this;return new Promise(function(t,i){e[zu].destroy(null,function(n){if(n){i(n);return}t(kl(void 0,!0))})})}),Bb),l6e),u6e=function(e){var t,i=Object.create(c6e,(t={},Pl(t,zu,{value:e,writable:!0}),Pl(t,Dl,{value:null,writable:!0}),Pl(t,Ju,{value:null,writable:!0}),Pl(t,mE,{value:null,writable:!0}),Pl(t,Qb,{value:e._readableState.endEmitted,writable:!0}),Pl(t,OM,{value:function(s,o){var a=i[zu].read();a?(i[Wu]=null,i[Dl]=null,i[Ju]=null,s(kl(a,!1))):(i[Dl]=s,i[Ju]=o)},writable:!0}),t));return i[Wu]=null,s6e(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[Ju];s!==null&&(i[Wu]=null,i[Dl]=null,i[Ju]=null,s(n)),i[mE]=n;return}var o=i[Dl];o!==null&&(i[Wu]=null,i[Dl]=null,i[Ju]=null,o(kl(void 0,!0))),i[Qb]=!0}),e.on("readable",a6e.bind(null,i)),i};bce.exports=u6e});var Dce=w((abt,Pce)=>{"use strict";function vce(r,e,t,i,n,s,o){try{var a=r[s](o),l=a.value}catch(c){t(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function g6e(r){return function(){var e=this,t=arguments;return new Promise(function(i,n){var s=r.apply(e,t);function o(l){vce(s,i,n,o,a,"next",l)}function a(l){vce(s,i,n,o,a,"throw",l)}o(void 0)})}}function xce(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function f6e(r){for(var e=1;e{"use strict";Kce.exports=Kt;var cp;Kt.ReadableState=Nce;var Abt=J("events").EventEmitter,Fce=function(e,t){return e.listeners(t).length},IE=EM(),bb=J("buffer").Buffer,C6e=global.Uint8Array||function(){};function m6e(r){return bb.from(r)}function E6e(r){return bb.isBuffer(r)||r instanceof C6e}var MM=J("util"),Dt;MM&&MM.debuglog?Dt=MM.debuglog("stream"):Dt=function(){};var I6e=$le(),qM=wM(),y6e=BM(),w6e=y6e.getHighWaterMark,Sb=Sl().codes,B6e=Sb.ERR_INVALID_ARG_TYPE,Q6e=Sb.ERR_STREAM_PUSH_AFTER_EOF,b6e=Sb.ERR_METHOD_NOT_IMPLEMENTED,S6e=Sb.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,up,UM,KM;vl()(Kt,IE);var EE=qM.errorOrDestroy,HM=["error","close","destroy","pause","resume"];function v6e(r,e,t){if(typeof r.prependListener=="function")return r.prependListener(e,t);!r._events||!r._events[e]?r.on(e,t):Array.isArray(r._events[e])?r._events[e].unshift(t):r._events[e]=[t,r._events[e]]}function Nce(r,e,t){cp=cp||qu(),r=r||{},typeof t!="boolean"&&(t=e instanceof cp),this.objectMode=!!r.objectMode,t&&(this.objectMode=this.objectMode||!!r.readableObjectMode),this.highWaterMark=w6e(this,r,"readableHighWaterMark",t),this.buffer=new I6e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=r.emitClose!==!1,this.autoDestroy=!!r.autoDestroy,this.destroyed=!1,this.defaultEncoding=r.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,r.encoding&&(up||(up=TM().StringDecoder),this.decoder=new up(r.encoding),this.encoding=r.encoding)}function Kt(r){if(cp=cp||qu(),!(this instanceof Kt))return new Kt(r);var e=this instanceof cp;this._readableState=new Nce(r,this,e),this.readable=!0,r&&(typeof r.read=="function"&&(this._read=r.read),typeof r.destroy=="function"&&(this._destroy=r.destroy)),IE.call(this)}Object.defineProperty(Kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Kt.prototype.destroy=qM.destroy;Kt.prototype._undestroy=qM.undestroy;Kt.prototype._destroy=function(r,e){e(r)};Kt.prototype.push=function(r,e){var t=this._readableState,i;return t.objectMode?i=!0:typeof r=="string"&&(e=e||t.defaultEncoding,e!==t.encoding&&(r=bb.from(r,e),e=""),i=!0),Lce(this,r,e,!1,i)};Kt.prototype.unshift=function(r){return Lce(this,r,null,!0,!1)};function Lce(r,e,t,i,n){Dt("readableAddChunk",e);var s=r._readableState;if(e===null)s.reading=!1,D6e(r,s);else{var o;if(n||(o=x6e(s,e)),o)EE(r,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==bb.prototype&&(e=m6e(e)),i)s.endEmitted?EE(r,new S6e):GM(r,s,e,!0);else if(s.ended)EE(r,new Q6e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!t?(e=s.decoder.write(e),s.objectMode||e.length!==0?GM(r,s,e,!1):jM(r,s)):GM(r,s,e,!1)}else i||(s.reading=!1,jM(r,s))}return!s.ended&&(s.length=kce?r=kce:(r--,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r++),r}function Rce(r,e){return r<=0||e.length===0&&e.ended?0:e.objectMode?1:r!==r?e.flowing&&e.length?e.buffer.head.data.length:e.length:(r>e.highWaterMark&&(e.highWaterMark=P6e(r)),r<=e.length?r:e.ended?e.length:(e.needReadable=!0,0))}Kt.prototype.read=function(r){Dt("read",r),r=parseInt(r,10);var e=this._readableState,t=r;if(r!==0&&(e.emittedReadable=!1),r===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Dt("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?YM(this):vb(this),null;if(r=Rce(r,e),r===0&&e.ended)return e.length===0&&YM(this),null;var i=e.needReadable;Dt("need readable",i),(e.length===0||e.length-r0?n=Mce(r,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,r=0):(e.length-=r,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),t!==r&&e.ended&&YM(this)),n!==null&&this.emit("data",n),n};function D6e(r,e){if(Dt("onEofChunk"),!e.ended){if(e.decoder){var t=e.decoder.end();t&&t.length&&(e.buffer.push(t),e.length+=e.objectMode?1:t.length)}e.ended=!0,e.sync?vb(r):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Tce(r)))}}function vb(r){var e=r._readableState;Dt("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Dt("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Tce,r))}function Tce(r){var e=r._readableState;Dt("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(r.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,JM(r)}function jM(r,e){e.readingMore||(e.readingMore=!0,process.nextTick(k6e,r,e))}function k6e(r,e){for(;!e.reading&&!e.ended&&(e.length1&&Uce(i.pipes,r)!==-1)&&!c&&(Dt("false write response, pause",i.awaitDrain),i.awaitDrain++),t.pause())}function f(y){Dt("onerror",y),C(),r.removeListener("error",f),Fce(r,"error")===0&&EE(r,y)}v6e(r,"error",f);function h(){r.removeListener("finish",p),C()}r.once("close",h);function p(){Dt("onfinish"),r.removeListener("close",h),C()}r.once("finish",p);function C(){Dt("unpipe"),t.unpipe(r)}return r.emit("pipe",t),i.flowing||(Dt("pipe resume"),t.resume()),r};function R6e(r){return function(){var t=r._readableState;Dt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&Fce(r,"data")&&(t.flowing=!0,JM(r))}}Kt.prototype.unpipe=function(r){var e=this._readableState,t={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return r&&r!==e.pipes?this:(r||(r=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,r&&r.emit("unpipe",this,t),this);if(!r){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):r==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Dt("on readable",i.length,i.reading),i.length?vb(this):i.reading||process.nextTick(F6e,this)),t};Kt.prototype.addListener=Kt.prototype.on;Kt.prototype.removeListener=function(r,e){var t=IE.prototype.removeListener.call(this,r,e);return r==="readable"&&process.nextTick(Oce,this),t};Kt.prototype.removeAllListeners=function(r){var e=IE.prototype.removeAllListeners.apply(this,arguments);return(r==="readable"||r===void 0)&&process.nextTick(Oce,this),e};function Oce(r){var e=r._readableState;e.readableListening=r.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:r.listenerCount("data")>0&&r.resume()}function F6e(r){Dt("readable nexttick read 0"),r.read(0)}Kt.prototype.resume=function(){var r=this._readableState;return r.flowing||(Dt("resume"),r.flowing=!r.readableListening,N6e(this,r)),r.paused=!1,this};function N6e(r,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(L6e,r,e))}function L6e(r,e){Dt("resume",e.reading),e.reading||r.read(0),e.resumeScheduled=!1,r.emit("resume"),JM(r),e.flowing&&!e.reading&&r.read(0)}Kt.prototype.pause=function(){return Dt("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Dt("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function JM(r){var e=r._readableState;for(Dt("flow",e.flowing);e.flowing&&r.read()!==null;);}Kt.prototype.wrap=function(r){var e=this,t=this._readableState,i=!1;r.on("end",function(){if(Dt("wrapped end"),t.decoder&&!t.ended){var o=t.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),r.on("data",function(o){if(Dt("wrapped data"),t.decoder&&(o=t.decoder.write(o)),!(t.objectMode&&o==null)&&!(!t.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,r.pause())}});for(var n in r)this[n]===void 0&&typeof r[n]=="function"&&(this[n]=function(a){return function(){return r[a].apply(r,arguments)}}(n));for(var s=0;s=e.length?(e.decoder?t=e.buffer.join(""):e.buffer.length===1?t=e.buffer.first():t=e.buffer.concat(e.length),e.buffer.clear()):t=e.buffer.consume(r,e.decoder),t}function YM(r){var e=r._readableState;Dt("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(T6e,e,r))}function T6e(r,e){if(Dt("endReadableNT",r.endEmitted,r.length),!r.endEmitted&&r.length===0&&(r.endEmitted=!0,e.readable=!1,e.emit("end"),r.autoDestroy)){var t=e._writableState;(!t||t.autoDestroy&&t.finished)&&e.destroy()}}typeof Symbol=="function"&&(Kt.from=function(r,e){return KM===void 0&&(KM=Dce()),KM(Kt,r,e)});function Uce(r,e){for(var t=0,i=r.length;t{"use strict";Gce.exports=hA;var xb=Sl().codes,O6e=xb.ERR_METHOD_NOT_IMPLEMENTED,M6e=xb.ERR_MULTIPLE_CALLBACK,U6e=xb.ERR_TRANSFORM_ALREADY_TRANSFORMING,K6e=xb.ERR_TRANSFORM_WITH_LENGTH_0,Pb=qu();vl()(hA,Pb);function H6e(r,e){var t=this._transformState;t.transforming=!1;var i=t.writecb;if(i===null)return this.emit("error",new M6e);t.writechunk=null,t.writecb=null,e!=null&&this.push(e),i(r);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";jce.exports=yE;var Yce=WM();vl()(yE,Yce);function yE(r){if(!(this instanceof yE))return new yE(r);Yce.call(this,r)}yE.prototype._transform=function(r,e,t){t(null,r)}});var Xce=w((gbt,Vce)=>{"use strict";var zM;function Y6e(r){var e=!1;return function(){e||(e=!0,r.apply(void 0,arguments))}}var zce=Sl().codes,j6e=zce.ERR_MISSING_ARGS,q6e=zce.ERR_STREAM_DESTROYED;function Jce(r){if(r)throw r}function J6e(r){return r.setHeader&&typeof r.abort=="function"}function W6e(r,e,t,i){i=Y6e(i);var n=!1;r.on("close",function(){n=!0}),zM===void 0&&(zM=wb()),zM(r,{readable:e,writable:t},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,J6e(r))return r.abort();if(typeof r.destroy=="function")return r.destroy();i(o||new q6e("pipe"))}}}function Wce(r){r()}function z6e(r,e){return r.pipe(e)}function V6e(r){return!r.length||typeof r[r.length-1]!="function"?Jce:r.pop()}function X6e(){for(var r=arguments.length,e=new Array(r),t=0;t0;return W6e(o,l,c,function(u){n||(n=u),u&&s.forEach(Wce),!l&&(s.forEach(Wce),i(n))})});return e.reduce(z6e)}Vce.exports=X6e});var gp=w((Ms,BE)=>{var wE=J("stream");process.env.READABLE_STREAM==="disable"&&wE?(BE.exports=wE.Readable,Object.assign(BE.exports,wE),BE.exports.Stream=wE):(Ms=BE.exports=RM(),Ms.Stream=wE||Ms,Ms.Readable=Ms,Ms.Writable=PM(),Ms.Duplex=qu(),Ms.Transform=WM(),Ms.PassThrough=qce(),Ms.finished=wb(),Ms.pipeline=Xce())});var $ce=w((fbt,_ce)=>{"use strict";var{Buffer:Eo}=J("buffer"),Zce=Symbol.for("BufferList");function fr(r){if(!(this instanceof fr))return new fr(r);fr._init.call(this,r)}fr._init=function(e){Object.defineProperty(this,Zce,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};fr.prototype._new=function(e){return new fr(e)};fr.prototype._offset=function(e){if(e===0)return[0,0];let t=0;for(let i=0;ithis.length||e<0)return;let t=this._offset(e);return this._bufs[t[0]][t[1]]};fr.prototype.slice=function(e,t){return typeof e=="number"&&e<0&&(e+=this.length),typeof t=="number"&&t<0&&(t+=this.length),this.copy(null,0,e,t)};fr.prototype.copy=function(e,t,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||Eo.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&t||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:Eo.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};fr.prototype.shallowSlice=function(e,t){if(e=e||0,t=typeof t!="number"?this.length:t,e<0&&(e+=this.length),t<0&&(t+=this.length),e===t)return this._new();let i=this._offset(e),n=this._offset(t),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};fr.prototype.toString=function(e,t,i){return this.slice(t,i).toString(e)};fr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};fr.prototype.duplicate=function(){let e=this._new();for(let t=0;tthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=r.length){let l=o.indexOf(r,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-r.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,r))return l;s++}s=0}return-1};fr.prototype._match=function(r,e){if(this.length-r{"use strict";var VM=gp().Duplex,Z6e=vl(),QE=$ce();function Ji(r){if(!(this instanceof Ji))return new Ji(r);if(typeof r=="function"){this._callback=r;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),r=null}QE._init.call(this,r),VM.call(this)}Z6e(Ji,VM);Object.assign(Ji.prototype,QE.prototype);Ji.prototype._new=function(e){return new Ji(e)};Ji.prototype._write=function(e,t,i){this._appendBuffer(e),typeof i=="function"&&i()};Ji.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Ji.prototype.end=function(e){VM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Ji.prototype._destroy=function(e,t){this._bufs.length=0,this.length=0,t(e)};Ji.prototype._isBufferList=function(e){return e instanceof Ji||e instanceof QE||Ji.isBufferList(e)};Ji.isBufferList=QE.isBufferList;Db.exports=Ji;Db.exports.BufferListStream=Ji;Db.exports.BufferList=QE});var _M=w(hp=>{var _6e=Buffer.alloc,$6e="0000000000000000000",eVe="7777777777777777777",tue="0".charCodeAt(0),rue=Buffer.from("ustar\0","binary"),tVe=Buffer.from("00","binary"),rVe=Buffer.from("ustar ","binary"),iVe=Buffer.from(" \0","binary"),nVe=parseInt("7777",8),bE=257,ZM=263,sVe=function(r,e,t){return typeof r!="number"?t:(r=~~r,r>=e?e:r>=0||(r+=e,r>=0)?r:0)},oVe=function(r){switch(r){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},aVe=function(r){switch(r){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},iue=function(r,e,t,i){for(;te?eVe.slice(0,e)+" ":$6e.slice(0,e-r.length)+r+" "};function AVe(r){var e;if(r[0]===128)e=!0;else if(r[0]===255)e=!1;else return null;for(var t=[],i=r.length-1;i>0;i--){var n=r[i];e?t.push(n):t.push(255-n)}var s=0,o=t.length;for(i=0;i=Math.pow(10,t)&&t++,e+t+r};hp.decodeLongPath=function(r,e){return fp(r,0,r.length,e)};hp.encodePax=function(r){var e="";r.name&&(e+=XM(" path="+r.name+` +`)),r.linkname&&(e+=XM(" linkpath="+r.linkname+` +`));var t=r.pax;if(t)for(var i in t)e+=XM(" "+i+"="+t[i]+` +`);return Buffer.from(e)};hp.decodePax=function(r){for(var e={};r.length;){for(var t=0;t100;){var n=t.indexOf("/");if(n===-1)return null;i+=i?"/"+t.slice(0,n):t.slice(0,n),t=t.slice(n+1)}return Buffer.byteLength(t)>100||Buffer.byteLength(i)>155||r.linkname&&Buffer.byteLength(r.linkname)>100?null:(e.write(t),e.write(Rl(r.mode&nVe,6),100),e.write(Rl(r.uid,6),108),e.write(Rl(r.gid,6),116),e.write(Rl(r.size,11),124),e.write(Rl(r.mtime.getTime()/1e3|0,11),136),e[156]=tue+aVe(r.type),r.linkname&&e.write(r.linkname,157),rue.copy(e,bE),tVe.copy(e,ZM),r.uname&&e.write(r.uname,265),r.gname&&e.write(r.gname,297),e.write(Rl(r.devmajor||0,6),329),e.write(Rl(r.devminor||0,6),337),i&&e.write(i,345),e.write(Rl(nue(e),6),148),e)};hp.decode=function(r,e,t){var i=r[156]===0?0:r[156]-tue,n=fp(r,0,100,e),s=Fl(r,100,8),o=Fl(r,108,8),a=Fl(r,116,8),l=Fl(r,124,12),c=Fl(r,136,12),u=oVe(i),g=r[157]===0?null:fp(r,157,100,e),f=fp(r,265,32),h=fp(r,297,32),p=Fl(r,329,8),C=Fl(r,337,8),y=nue(r);if(y===8*32)return null;if(y!==Fl(r,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(rue.compare(r,bE,bE+6)===0)r[345]&&(n=fp(r,345,155,e)+"/"+n);else if(!(rVe.compare(r,bE,bE+6)===0&&iVe.compare(r,ZM,ZM+2)===0)){if(!t)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:C}}});var uue=w((dbt,cue)=>{var oue=J("util"),lVe=eue(),SE=_M(),aue=gp().Writable,Aue=gp().PassThrough,lue=function(){},sue=function(r){return r&=511,r&&512-r},cVe=function(r,e){var t=new kb(r,e);return t.end(),t},uVe=function(r,e){return e.path&&(r.name=e.path),e.linkpath&&(r.linkname=e.linkpath),e.size&&(r.size=parseInt(e.size,10)),r.pax=e,r},kb=function(r,e){this._parent=r,this.offset=e,Aue.call(this,{autoDestroy:!1})};oue.inherits(kb,Aue);kb.prototype.destroy=function(r){this._parent.destroy(r)};var pA=function(r){if(!(this instanceof pA))return new pA(r);aue.call(this,r),r=r||{},this._offset=0,this._buffer=lVe(),this._missing=0,this._partial=!1,this._onparse=lue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,t=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=sue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(sue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=SE.decodePax(t.slice(0,f)),t.consume(f),s()},l=function(){var f=e._header.size;e._pax=SE.decodePax(t.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),t.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=SE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=SE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=SE.decode(t.slice(0,512),r.filenameEncoding,r.allowUnknownFormat)}catch(p){e.emit("error",p)}if(t.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=uVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,cVe(e,f),n);return}e._stream=new kb(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};oue.inherits(pA,aue);pA.prototype.destroy=function(r){this._destroyed||(this._destroyed=!0,r&&this.emit("error",r),this.emit("close"),this._stream&&this._stream.emit("close"))};pA.prototype._parse=function(r,e){this._destroyed||(this._offset+=r,this._missing=r,e===this._onheader&&(this._partial=!1),this._onparse=e)};pA.prototype._continue=function(){if(!this._destroyed){var r=this._cb;this._cb=lue,this._overflow?this._write(this._overflow,void 0,r):r()}};pA.prototype._write=function(r,e,t){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(r.length&&(this._partial=!0),r.lengths&&(o=r.slice(s),r=r.slice(0,s)),i?i.end(r):n.append(r),this._overflow=o,this._onparse()}};pA.prototype._final=function(r){if(this._partial)return this.destroy(new Error("Unexpected end of data"));r()};cue.exports=pA});var fue=w((Cbt,gue)=>{gue.exports=J("fs").constants||J("constants")});var mue=w((mbt,Cue)=>{var pp=fue(),hue=Pk(),Fb=vl(),gVe=Buffer.alloc,pue=gp().Readable,dp=gp().Writable,fVe=J("string_decoder").StringDecoder,Rb=_M(),hVe=parseInt("755",8),pVe=parseInt("644",8),due=gVe(1024),e1=function(){},$M=function(r,e){e&=511,e&&r.push(due.slice(0,512-e))};function dVe(r){switch(r&pp.S_IFMT){case pp.S_IFBLK:return"block-device";case pp.S_IFCHR:return"character-device";case pp.S_IFDIR:return"directory";case pp.S_IFIFO:return"fifo";case pp.S_IFLNK:return"symlink"}return"file"}var Nb=function(r){dp.call(this),this.written=0,this._to=r,this._destroyed=!1};Fb(Nb,dp);Nb.prototype._write=function(r,e,t){if(this.written+=r.length,this._to.push(r))return t();this._to._drain=t};Nb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Lb=function(){dp.call(this),this.linkname="",this._decoder=new fVe("utf-8"),this._destroyed=!1};Fb(Lb,dp);Lb.prototype._write=function(r,e,t){this.linkname+=this._decoder.write(r),t()};Lb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var vE=function(){dp.call(this),this._destroyed=!1};Fb(vE,dp);vE.prototype._write=function(r,e,t){t(new Error("No body allowed for this entry"))};vE.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Aa=function(r){if(!(this instanceof Aa))return new Aa(r);pue.call(this,r),this._drain=e1,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};Fb(Aa,pue);Aa.prototype.entry=function(r,e,t){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(t=e,e=null),t||(t=e1);var i=this;if((!r.size||r.type==="symlink")&&(r.size=0),r.type||(r.type=dVe(r.mode)),r.mode||(r.mode=r.type==="directory"?hVe:pVe),r.uid||(r.uid=0),r.gid||(r.gid=0),r.mtime||(r.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){r.size=e.length,this._encode(r);var n=this.push(e);return $M(i,r.size),n?process.nextTick(t):this._drain=t,new vE}if(r.type==="symlink"&&!r.linkname){var s=new Lb;return hue(s,function(a){if(a)return i.destroy(),t(a);r.linkname=s.linkname,i._encode(r),t()}),s}if(this._encode(r),r.type!=="file"&&r.type!=="contiguous-file")return process.nextTick(t),new vE;var o=new Nb(this);return this._stream=o,hue(o,function(a){if(i._stream=null,a)return i.destroy(),t(a);if(o.written!==r.size)return i.destroy(),t(new Error("size mismatch"));$M(i,r.size),i._finalizing&&i.finalize(),t()}),o}};Aa.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(due),this.push(null))};Aa.prototype.destroy=function(r){this._destroyed||(this._destroyed=!0,r&&this.emit("error",r),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Aa.prototype._encode=function(r){if(!r.pax){var e=Rb.encode(r);if(e){this.push(e);return}}this._encodePax(r)};Aa.prototype._encodePax=function(r){var e=Rb.encodePax({name:r.name,linkname:r.linkname,pax:r.pax}),t={name:"PaxHeader",mode:r.mode,uid:r.uid,gid:r.gid,size:e.length,mtime:r.mtime,type:"pax-header",linkname:r.linkname&&"PaxHeader",uname:r.uname,gname:r.gname,devmajor:r.devmajor,devminor:r.devminor};this.push(Rb.encode(t)),this.push(e),$M(this,e.length),t.size=r.size,t.type=r.type,this.push(Rb.encode(t))};Aa.prototype._read=function(r){var e=this._drain;this._drain=e1,e()};Cue.exports=Aa});var Eue=w(t1=>{t1.extract=uue();t1.pack=mue()});var kue=w((Kbt,Due)=>{"use strict";var Xu=class{constructor(e,t,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=t||{},this.__providers=xue(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return a1(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,t=this){for(let[i,n]of this.entries())e.call(t,n,i,this)}toJSON(){let e={};return this.forEach((t,i)=>{e[i]=t}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let t=e||this.__opts.other;if(t){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(t):kVe(n);for(let[o,a]of s)t(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,t]of this.entries())yield[e,t]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Xu(this.__specs,this.__opts,xue(this.__providers).concat(e)),Pue)}};try{let r=J("util");Xu.prototype[r.inspect.custom]=function(e,t){return this[Symbol.toStringTag]+" "+r.inspect(this.toJSON(),t)}}catch{}function PVe(r){throw Object.assign(new Error(`invalid config key requested: ${r}`),{code:"EBADKEY"})}function a1(r,e,t){let i=r.__specs[e];if(t&&!i&&(!r.__opts.other||!r.__opts.other(e)))PVe(e);else{i||(i={});let n;for(let s of r.__providers){if(n=vue(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=vue(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(r):i.default:n}}function vue(r,e){let t;return e.__isFiggyPudding?t=a1(e,r,!1):typeof e.get=="function"?t=e.get(r):t=e[r],t}var Pue={has(r,e){return e in r.__specs&&a1(r,e,!1)!==void 0},ownKeys(r){return Object.keys(r.__specs)},get(r,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Xu.prototype?r[e]:r.get(e)},set(r,e,t){if(typeof e=="symbol"||e.slice(0,2)==="__")return r[e]=t,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};Due.exports=DVe;function DVe(r,e){function t(...i){return new Proxy(new Xu(r,e,i),Pue)}return t}function xue(r){let e=[];return r.forEach(t=>e.unshift(t)),e}function kVe(r){return Object.keys(r).map(e=>[e,r[e]])}});var Nue=w((Hbt,ua)=>{"use strict";var PE=J("crypto"),RVe=kue(),FVe=J("stream").Transform,Rue=["sha256","sha384","sha512"],NVe=/^[a-z0-9+/]+(?:=?=?)$/i,LVe=/^([^-]+)-([^?]+)([?\S*]*)$/,TVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,OVe=/^[\x21-\x7E]+$/,an=RVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>qVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),Nl=class{get isHash(){return!0}constructor(e,t){t=an(t);let i=!!t.strict;this.source=e.trim();let n=this.source.match(i?TVe:LVe);if(!n||i&&!Rue.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=an(e),e.strict&&!(Rue.some(i=>i===this.algorithm)&&this.digest.match(NVe)&&(this.options||[]).every(i=>i.match(OVe))))return"";let t=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${t}`}},Zu=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=an(e);let t=e.sep||" ";return e.strict&&(t=t.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>Nl.prototype.toString.call(n,e)).filter(n=>n.length).join(t)).filter(i=>i.length).join(t)}concat(e,t){t=an(t);let i=typeof e=="string"?e:xE(e,t);return ca(`${this.toString(t)} ${i}`,t)}hexDigest(){return ca(this,{single:!0}).hexDigest()}match(e,t){t=an(t);let i=ca(e,t),n=i.pickAlgorithm(t);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=an(e);let t=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>t(n,s)||n)}};ua.exports.parse=ca;function ca(r,e){if(e=an(e),typeof r=="string")return A1(r,e);if(r.algorithm&&r.digest){let t=new Zu;return t[r.algorithm]=[r],A1(xE(t,e),e)}else return A1(xE(r,e),e)}function A1(r,e){return e.single?new Nl(r,e):r.trim().split(/\s+/).reduce((t,i)=>{let n=new Nl(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;t[s]||(t[s]=[]),t[s].push(n)}return t},new Zu)}ua.exports.stringify=xE;function xE(r,e){return e=an(e),r.algorithm&&r.digest?Nl.prototype.toString.call(r,e):typeof r=="string"?xE(ca(r,e),e):Zu.prototype.toString.call(r,e)}ua.exports.fromHex=MVe;function MVe(r,e,t){t=an(t);let i=t.options&&t.options.length?`?${t.options.join("?")}`:"";return ca(`${e}-${Buffer.from(r,"hex").toString("base64")}${i}`,t)}ua.exports.fromData=UVe;function UVe(r,e){e=an(e);let t=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return t.reduce((n,s)=>{let o=PE.createHash(s).update(r).digest("base64"),a=new Nl(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Zu)}ua.exports.fromStream=KVe;function KVe(r,e){e=an(e);let t=e.Promise||Promise,i=l1(e);return new t((n,s)=>{r.pipe(i),r.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}ua.exports.checkData=HVe;function HVe(r,e,t){if(t=an(t),e=ca(e,t),!Object.keys(e).length){if(t.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(t),n=PE.createHash(i).update(r).digest("base64"),s=ca({algorithm:i,digest:n}),o=s.match(e,t);if(o||!t.error)return o;if(typeof t.size=="number"&&r.length!==t.size){let a=new Error(`data size mismatch when checking ${e}. Wanted: ${t.size} - Found: ${r.length}`);throw a.code="EBADSIZE",a.found=r.length,a.expected=t.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${r.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}sa.exports.checkStream=LVe;function LVe(r,e,t){t=on(t);let i=t.Promise||Promise,n=FM(t.concat({integrity:e}));return new i((s,o)=>{r.pipe(n),r.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}sa.exports.integrityStream=FM;function FM(r){r=on(r);let e=r.integrity&&na(r.integrity,r),t=e&&Object.keys(e).length,i=t&&e.pickAlgorithm(r),n=t&&e[i],s=Array.from(new Set(r.algorithms.concat(i?[i]:[]))),o=s.map(CE.createHash),a=0,l=new SVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=r.options&&r.options.length?`?${r.options.join("?")}`:"",u=na(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),r),g=t&&u.match(e,r);if(typeof r.size=="number"&&a!==r.size){let f=new Error(`stream size mismatch when checking ${e}. + Found: ${r.length}`);throw a.code="EBADSIZE",a.found=r.length,a.expected=t.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${r.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}ua.exports.checkStream=GVe;function GVe(r,e,t){t=an(t);let i=t.Promise||Promise,n=l1(t.concat({integrity:e}));return new i((s,o)=>{r.pipe(n),r.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}ua.exports.integrityStream=l1;function l1(r){r=an(r);let e=r.integrity&&ca(r.integrity,r),t=e&&Object.keys(e).length,i=t&&e.pickAlgorithm(r),n=t&&e[i],s=Array.from(new Set(r.algorithms.concat(i?[i]:[]))),o=s.map(PE.createHash),a=0,l=new FVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=r.options&&r.options.length?`?${r.options.join("?")}`:"",u=ca(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),r),g=t&&u.match(e,r);if(typeof r.size=="number"&&a!==r.size){let f=new Error(`stream size mismatch when checking ${e}. Wanted: ${r.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=r.size,f.sri=e,l.emit("error",f)}else if(r.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}sa.exports.create=TVe;function TVe(r){r=on(r);let e=r.algorithms,t=r.options.length?`?${r.options.join("?")}`:"",i=e.map(CE.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new yl(`${a}-${l}${t}`,r);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Hu)}}}var OVe=new Set(CE.getHashes()),qce=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(r=>OVe.has(r));function MVe(r,e){return qce.indexOf(r.toLowerCase())>=qce.indexOf(e.toLowerCase())?r:e}});var VC={};ut(VC,{BuildType:()=>C0,Cache:()=>Rt,Configuration:()=>ye,DEFAULT_LOCK_FILENAME:()=>jD,DEFAULT_RC_FILENAME:()=>YD,FormatType:()=>vi,InstallMode:()=>Xn,LightReport:()=>_o,LinkType:()=>lf,Manifest:()=>ot,MessageName:()=>Ct,MultiFetcher:()=>If,PackageExtensionStatus:()=>Nx,PackageExtensionType:()=>Fx,Project:()=>je,ProjectLookup:()=>zD,Report:()=>Si,ReportError:()=>at,SettingsType:()=>qD,StreamReport:()=>Ge,TAG_REGEXP:()=>wf,TelemetryManager:()=>hh,ThrowReport:()=>ti,VirtualFetcher:()=>Bf,Workspace:()=>fh,WorkspaceFetcher:()=>bf,WorkspaceResolver:()=>jr,YarnVersion:()=>Lr,execUtils:()=>Cr,folderUtils:()=>ww,formatUtils:()=>ee,hashUtils:()=>li,httpUtils:()=>Vt,miscUtils:()=>Ie,nodeUtils:()=>Cs,parseMessageName:()=>QI,scriptUtils:()=>Jt,semverUtils:()=>vt,stringifyMessageName:()=>QA,structUtils:()=>P,tgzUtils:()=>Ci,treeUtils:()=>Vn});var Cr={};ut(Cr,{EndStrategy:()=>ZD,ExecError:()=>Dw,PipeError:()=>sC,execvp:()=>KD,pipevp:()=>Yo});var Lp={};ut(Lp,{AliasFS:()=>yo,CwdFS:()=>jt,DEFAULT_COMPRESSION_LEVEL:()=>Ol,FakeFS:()=>ha,Filename:()=>xt,JailFS:()=>wo,LazyFS:()=>dg,LinkStrategy:()=>tS,NoFS:()=>Rp,NodeFS:()=>$t,PortablePath:()=>Oe,PosixFS:()=>Cg,ProxiedFS:()=>pi,VirtualFS:()=>Br,ZipFS:()=>Wr,ZipOpenFS:()=>Tn,constants:()=>xr,extendFs:()=>XE,normalizeLineEndings:()=>Tl,npath:()=>K,opendir:()=>YE,patchFs:()=>lS,ppath:()=>x,statUtils:()=>Sp,toFilename:()=>Ur,xfs:()=>M});var xr={};ut(xr,{SAFE_TIME:()=>v1,S_IFDIR:()=>Fl,S_IFLNK:()=>Ll,S_IFMT:()=>Hs,S_IFREG:()=>Nl});var Hs=61440,Fl=16384,Nl=32768,Ll=40960,v1=456789e3;var Sp={};ut(Sp,{BigIntStatsEntry:()=>fg,DEFAULT_MODE:()=>Qp,DirEntry:()=>zb,StatEntry:()=>fa,areStatsEqual:()=>Xb,clearStats:()=>LE,convertToBigIntStats:()=>TE,makeDefaultStats:()=>bp,makeEmptyStats:()=>que});var Vb=Pe(J("util"));var Qp=33188,zb=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},fa=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=Qp;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},fg=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(Qp);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}};function bp(){return new fa}function que(){return LE(bp())}function LE(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e)){let t=r[e];typeof t=="number"?r[e]=0:typeof t=="bigint"?r[e]=BigInt(0):Vb.types.isDate(t)&&(r[e]=new Date(0))}return r}function TE(r){let e=new fg;for(let t in r)if(Object.prototype.hasOwnProperty.call(r,t)){let i=r[t];typeof i=="number"?e[t]=BigInt(i):Vb.types.isDate(i)&&(e[t]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function Xb(r,e){if(r.atimeMs!==e.atimeMs||r.birthtimeMs!==e.birthtimeMs||r.blksize!==e.blksize||r.blocks!==e.blocks||r.ctimeMs!==e.ctimeMs||r.dev!==e.dev||r.gid!==e.gid||r.ino!==e.ino||r.isBlockDevice()!==e.isBlockDevice()||r.isCharacterDevice()!==e.isCharacterDevice()||r.isDirectory()!==e.isDirectory()||r.isFIFO()!==e.isFIFO()||r.isFile()!==e.isFile()||r.isSocket()!==e.isSocket()||r.isSymbolicLink()!==e.isSymbolicLink()||r.mode!==e.mode||r.mtimeMs!==e.mtimeMs||r.nlink!==e.nlink||r.rdev!==e.rdev||r.size!==e.size||r.uid!==e.uid)return!1;let t=r,i=e;return!(t.atimeNs!==i.atimeNs||t.mtimeNs!==i.mtimeNs||t.ctimeNs!==i.ctimeNs||t.birthtimeNs!==i.birthtimeNs)}var ME=Pe(J("fs"));var vp=Pe(J("path"));var Oe={root:"/",dot:".",parent:".."},xt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},K=Object.create(vp.default),x=Object.create(vp.default.posix);K.cwd=()=>process.cwd();x.cwd=()=>_b(process.cwd());x.resolve=(...r)=>r.length>0&&x.isAbsolute(r[0])?vp.default.posix.resolve(...r):vp.default.posix.resolve(x.cwd(),...r);var x1=function(r,e,t){return e=r.normalize(e),t=r.normalize(t),e===t?".":(e.endsWith(r.sep)||(e=e+r.sep),t.startsWith(e)?t.slice(e.length):null)};K.fromPortablePath=P1;K.toPortablePath=_b;K.contains=(r,e)=>x1(K,r,e);x.contains=(r,e)=>x1(x,r,e);var Jue=/^([a-zA-Z]:.*)$/,Wue=/^\/\/(\.\/)?(.*)$/,zue=/^\/([a-zA-Z]:.*)$/,Vue=/^\/unc\/(\.dot\/)?(.*)$/;function P1(r){if(process.platform!=="win32")return r;let e,t;if(e=r.match(zue))r=e[1];else if(t=r.match(Vue))r=`\\\\${t[1]?".\\":""}${t[2]}`;else return r;return r.replace(/\//g,"\\")}function _b(r){if(process.platform!=="win32")return r;r=r.replace(/\\/g,"/");let e,t;return(e=r.match(Jue))?r=`/${e[1]}`:(t=r.match(Wue))&&(r=`/unc/${t[1]?".dot/":""}${t[2]}`),r}function OE(r,e){return r===K?P1(e):_b(e)}function Ur(r){if(K.parse(r).dir!==""||x.parse(r).dir!=="")throw new Error(`Invalid filename: "${r}"`);return r}var KE=new Date(456789e3*1e3),tS=(t=>(t.Allow="allow",t.ReadOnly="readOnly",t))(tS||{});async function D1(r,e,t,i,n){let s=r.pathUtils.normalize(e),o=t.pathUtils.normalize(i),a=[],l=[],{atime:c,mtime:u}=n.stableTime?{atime:KE,mtime:KE}:await t.lstatPromise(o);await r.mkdirpPromise(r.pathUtils.dirname(e),{utimes:[c,u]});let g=typeof r.lutimesPromise=="function"?r.lutimesPromise.bind(r):r.utimesPromise.bind(r);await $b(a,l,g,r,s,t,o,{...n,didParentExist:!0});for(let f of a)await f();await Promise.all(l.map(f=>f()))}async function $b(r,e,t,i,n,s,o,a){var h,p;let l=a.didParentExist?await Xue(i,n):null,c=await s.lstatPromise(o),{atime:u,mtime:g}=a.stableTime?{atime:KE,mtime:KE}:c,f;switch(!0){case c.isDirectory():f=await _ue(r,e,t,i,n,l,s,o,c,a);break;case c.isFile():f=await $ue(r,e,t,i,n,l,s,o,c,a);break;case c.isSymbolicLink():f=await ege(r,e,t,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(f||((h=l==null?void 0:l.mtime)==null?void 0:h.getTime())!==g.getTime()||((p=l==null?void 0:l.atime)==null?void 0:p.getTime())!==u.getTime())&&(e.push(()=>t(n,u,g)),f=!0),(l===null||(l.mode&511)!==(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),f=!0),f}async function Xue(r,e){try{return await r.lstatPromise(e)}catch{return null}}async function _ue(r,e,t,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(r.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(h){if(h.code!=="EEXIST")throw h}}),u=!0);let g=await o.readdirPromise(a),f=c.didParentExist&&!s?{...c,didParentExist:!1}:c;if(c.stableSort)for(let h of g.sort())await $b(r,e,t,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),f)&&(u=!0);else(await Promise.all(g.map(async p=>{await $b(r,e,t,i,i.pathUtils.join(n,p),o,o.pathUtils.join(a,p),f)}))).some(p=>p)&&(u=!0);return u}var Zb=new WeakMap;function eS(r,e,t,i,n){return async()=>{await r.linkPromise(t,e),n==="readOnly"&&(i.mode&=-147,await r.chmodPromise(e,i.mode))}}function Zue(r,e,t,i,n){let s=Zb.get(r);return typeof s>"u"?async()=>{try{await r.copyFilePromise(t,e,ME.default.constants.COPYFILE_FICLONE_FORCE),Zb.set(r,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")Zb.set(r,!1),await eS(r,e,t,i,n)();else throw o}}:s?async()=>r.copyFilePromise(t,e,ME.default.constants.COPYFILE_FICLONE_FORCE):eS(r,e,t,i,n)}async function $ue(r,e,t,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?Zue(i,n,a,l,u):async()=>i.copyFilePromise(a,n,ME.default.constants.COPYFILE_FICLONE):u!==null?eS(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return r.push(async()=>g()),!0}async function ege(r,e,t,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;return r.push(async()=>{await i.symlinkPromise(OE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function is(r,e){return Object.assign(new Error(`${r}: ${e}`),{code:r})}function HE(r){return is("EBUSY",r)}function xp(r,e){return is("ENOSYS",`${r}, ${e}`)}function mA(r){return is("EINVAL",`invalid argument, ${r}`)}function Hr(r){return is("EBADF",`bad file descriptor, ${r}`)}function Gs(r){return is("ENOENT",`no such file or directory, ${r}`)}function Io(r){return is("ENOTDIR",`not a directory, ${r}`)}function Pp(r){return is("EISDIR",`illegal operation on a directory, ${r}`)}function GE(r){return is("EEXIST",`file already exists, ${r}`)}function ln(r){return is("EROFS",`read-only filesystem, ${r}`)}function k1(r){return is("ENOTEMPTY",`directory not empty, ${r}`)}function R1(r){return is("EOPNOTSUPP",`operation not supported, ${r}`)}function F1(){return is("ERR_DIR_CLOSED","Directory handle was closed")}var UE=class extends Error{constructor(t,i){super(t);this.name="Libzip Error",this.code=i}};var iS=class{constructor(e,t,i={}){this.path=e;this.nextDirent=t;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw F1()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let t=this.readSync();return typeof e<"u"?e(null,t):Promise.resolve(t)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,t;this.throwIfClosed(),(t=(e=this.opts).onClose)==null||t.call(e),this.closed=!0}};function YE(r,e,t,i){let n=()=>{let s=t.shift();return typeof s>"u"?null:Object.assign(r.statSync(r.pathUtils.join(e,s)),{name:s})};return new iS(e,n,i)}var N1=J("os");var ha=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:t=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(t)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:t=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(t){let s=await this.readdirPromise(e);await Promise.all(s.map(o=>this.removePromise(this.pathUtils.resolve(e,o))))}for(let s=0;s<=i;s++)try{await this.rmdirPromise(e);break}catch(o){if(o.code!=="EBUSY"&&o.code!=="ENOTEMPTY")throw o;ssetTimeout(a,s*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:t=!0}={}){let i;try{i=this.lstatSync(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(i.isDirectory()){if(t)for(let n of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,n));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:t,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep),s;for(let o=2;o<=n.length;++o){let a=n.slice(0,o).join(this.pathUtils.sep);if(!this.existsSync(a)){try{await this.mkdirPromise(a)}catch(l){if(l.code==="EEXIST")continue;throw l}if(s!=null||(s=a),t!=null&&await this.chmodPromise(a,t),i!=null)await this.utimesPromise(a,i[0],i[1]);else{let l=await this.statPromise(this.pathUtils.dirname(a));await this.utimesPromise(a,l.atime,l.mtime)}}}return s}mkdirpSync(e,{chmod:t,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep),s;for(let o=2;o<=n.length;++o){let a=n.slice(0,o).join(this.pathUtils.sep);if(!this.existsSync(a)){try{this.mkdirSync(a)}catch(l){if(l.code==="EEXIST")continue;throw l}if(s!=null||(s=a),t!=null&&this.chmodSync(a,t),i!=null)this.utimesSync(a,i[0],i[1]);else{let l=this.statSync(this.pathUtils.dirname(a));this.utimesSync(a,l.atime,l.mtime)}}}return s}async copyPromise(e,t,{baseFs:i=this,overwrite:n=!0,stableSort:s=!1,stableTime:o=!1,linkStrategy:a=null}={}){return await D1(this,e,i,t,{overwrite:n,stableSort:s,stableTime:o,linkStrategy:a})}copySync(e,t,{baseFs:i=this,overwrite:n=!0}={}){let s=i.lstatSync(t),o=this.existsSync(e);if(s.isDirectory()){this.mkdirpSync(e);let l=i.readdirSync(t);for(let c of l)this.copySync(this.pathUtils.join(e,c),i.pathUtils.join(t,c),{baseFs:i,overwrite:n})}else if(s.isFile()){if(!o||n){o&&this.removeSync(e);let l=i.readFileSync(t);this.writeFileSync(e,l)}}else if(s.isSymbolicLink()){if(!o||n){o&&this.removeSync(e);let l=i.readlinkSync(t);this.symlinkSync(OE(this.pathUtils,l),e)}}else throw new Error(`Unsupported file type (file: ${t}, mode: 0o${s.mode.toString(8).padStart(6,"0")})`);let a=s.mode&511;this.chmodSync(e,a)}async changeFilePromise(e,t,i={}){return Buffer.isBuffer(t)?this.changeFileBufferPromise(e,t,i):this.changeFileTextPromise(e,t,i)}async changeFileBufferPromise(e,t,{mode:i}={}){let n=Buffer.alloc(0);try{n=await this.readFilePromise(e)}catch{}Buffer.compare(n,t)!==0&&await this.writeFilePromise(e,t,{mode:i})}async changeFileTextPromise(e,t,{automaticNewlines:i,mode:n}={}){let s="";try{s=await this.readFilePromise(e,"utf8")}catch{}let o=i?Tl(s,t):t;s!==o&&await this.writeFilePromise(e,o,{mode:n})}changeFileSync(e,t,i={}){return Buffer.isBuffer(t)?this.changeFileBufferSync(e,t,i):this.changeFileTextSync(e,t,i)}changeFileBufferSync(e,t,{mode:i}={}){let n=Buffer.alloc(0);try{n=this.readFileSync(e)}catch{}Buffer.compare(n,t)!==0&&this.writeFileSync(e,t,{mode:i})}changeFileTextSync(e,t,{automaticNewlines:i=!1,mode:n}={}){let s="";try{s=this.readFileSync(e,"utf8")}catch{}let o=i?Tl(s,t):t;s!==o&&this.writeFileSync(e,o,{mode:n})}async movePromise(e,t){try{await this.renamePromise(e,t)}catch(i){if(i.code==="EXDEV")await this.copyPromise(t,e),await this.removePromise(e);else throw i}}moveSync(e,t){try{this.renameSync(e,t)}catch(i){if(i.code==="EXDEV")this.copySync(t,e),this.removeSync(e);else throw i}}async lockPromise(e,t){let i=`${e}.flock`,n=1e3/60,s=Date.now(),o=null,a=async()=>{let l;try{[l]=await this.readJsonPromise(i)}catch{return Date.now()-s<500}try{return process.kill(l,0),!0}catch{return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch{}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await t()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch{}}}async readJsonPromise(e){let t=await this.readFilePromise(e,"utf8");try{return JSON.parse(t)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let t=this.readFileSync(e,"utf8");try{return JSON.parse(t)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,t){return await this.writeFilePromise(e,`${JSON.stringify(t,null,2)} + Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=r.size,f.sri=e,l.emit("error",f)}else if(r.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}ua.exports.create=YVe;function YVe(r){r=an(r);let e=r.algorithms,t=r.options.length?`?${r.options.join("?")}`:"",i=e.map(PE.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new Nl(`${a}-${l}${t}`,r);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Zu)}}}var jVe=new Set(PE.getHashes()),Fue=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(r=>jVe.has(r));function qVe(r,e){return Fue.indexOf(r.toLowerCase())>=Fue.indexOf(e.toLowerCase())?r:e}});var sm={};ut(sm,{BuildType:()=>O0,Cache:()=>Rt,Configuration:()=>ye,DEFAULT_LOCK_FILENAME:()=>ok,DEFAULT_RC_FILENAME:()=>sk,FormatType:()=>xi,InstallMode:()=>es,LightReport:()=>ra,LinkType:()=>Ef,Manifest:()=>ot,MessageName:()=>Ct,MultiFetcher:()=>Df,PackageExtensionStatus:()=>Xx,PackageExtensionType:()=>Vx,Project:()=>je,ProjectLookup:()=>ck,Report:()=>vi,ReportError:()=>at,SettingsType:()=>ak,StreamReport:()=>Ge,TAG_REGEXP:()=>Rf,TelemetryManager:()=>Sh,ThrowReport:()=>ti,VirtualFetcher:()=>Ff,Workspace:()=>bh,WorkspaceFetcher:()=>Lf,WorkspaceResolver:()=>jr,YarnVersion:()=>Lr,execUtils:()=>Cr,folderUtils:()=>Lw,formatUtils:()=>ee,hashUtils:()=>li,httpUtils:()=>Xt,miscUtils:()=>Ie,nodeUtils:()=>ws,parseMessageName:()=>TI,scriptUtils:()=>Wt,semverUtils:()=>vt,stringifyMessageName:()=>FA,structUtils:()=>P,tgzUtils:()=>mi,treeUtils:()=>$n});var Cr={};ut(Cr,{EndStrategy:()=>hk,ExecError:()=>Yw,PipeError:()=>dC,execvp:()=>tk,pipevp:()=>Wo});var Wp={};ut(Wp,{AliasFS:()=>bo,CustomDir:()=>Hp,CwdFS:()=>qt,DEFAULT_COMPRESSION_LEVEL:()=>Xl,FakeFS:()=>Ia,Filename:()=>xt,JailFS:()=>So,LazyFS:()=>Sg,LinkStrategy:()=>CS,NoFS:()=>jp,NodeFS:()=>$t,PortablePath:()=>Oe,PosixFS:()=>vg,ProxiedFS:()=>pi,VirtualFS:()=>Br,ZipFS:()=>Wr,ZipOpenFS:()=>Mn,constants:()=>xr,extendFs:()=>AI,normalizeLineEndings:()=>Vl,npath:()=>U,opendir:()=>tI,patchFs:()=>QS,ppath:()=>x,statUtils:()=>Op,toFilename:()=>Kr,xfs:()=>M});var xr={};ut(xr,{SAFE_TIME:()=>iU,S_IFDIR:()=>Jl,S_IFLNK:()=>zl,S_IFMT:()=>qs,S_IFREG:()=>Wl});var qs=61440,Jl=16384,Wl=32768,zl=40960,iU=456789e3;var Op={};ut(Op,{BigIntStatsEntry:()=>Bg,DEFAULT_MODE:()=>Lp,DirEntry:()=>cS,StatEntry:()=>Ea,areStatsEqual:()=>gS,clearStats:()=>WE,convertToBigIntStats:()=>zE,makeDefaultStats:()=>Tp,makeEmptyStats:()=>Fge});var uS=Pe(J("util"));var Lp=33188,cS=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Ea=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=Lp;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Bg=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(Lp);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}};function Tp(){return new Ea}function Fge(){return WE(Tp())}function WE(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e)){let t=r[e];typeof t=="number"?r[e]=0:typeof t=="bigint"?r[e]=BigInt(0):uS.types.isDate(t)&&(r[e]=new Date(0))}return r}function zE(r){let e=new Bg;for(let t in r)if(Object.prototype.hasOwnProperty.call(r,t)){let i=r[t];typeof i=="number"?e[t]=BigInt(i):uS.types.isDate(i)&&(e[t]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function gS(r,e){if(r.atimeMs!==e.atimeMs||r.birthtimeMs!==e.birthtimeMs||r.blksize!==e.blksize||r.blocks!==e.blocks||r.ctimeMs!==e.ctimeMs||r.dev!==e.dev||r.gid!==e.gid||r.ino!==e.ino||r.isBlockDevice()!==e.isBlockDevice()||r.isCharacterDevice()!==e.isCharacterDevice()||r.isDirectory()!==e.isDirectory()||r.isFIFO()!==e.isFIFO()||r.isFile()!==e.isFile()||r.isSocket()!==e.isSocket()||r.isSymbolicLink()!==e.isSymbolicLink()||r.mode!==e.mode||r.mtimeMs!==e.mtimeMs||r.nlink!==e.nlink||r.rdev!==e.rdev||r.size!==e.size||r.uid!==e.uid)return!1;let t=r,i=e;return!(t.atimeNs!==i.atimeNs||t.mtimeNs!==i.mtimeNs||t.ctimeNs!==i.ctimeNs||t.birthtimeNs!==i.birthtimeNs)}var XE=Pe(J("fs"));var Mp=Pe(J("path"));var Oe={root:"/",dot:".",parent:".."},xt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},U=Object.create(Mp.default),x=Object.create(Mp.default.posix);U.cwd=()=>process.cwd();x.cwd=()=>fS(process.cwd());x.resolve=(...r)=>r.length>0&&x.isAbsolute(r[0])?Mp.default.posix.resolve(...r):Mp.default.posix.resolve(x.cwd(),...r);var nU=function(r,e,t){return e=r.normalize(e),t=r.normalize(t),e===t?".":(e.endsWith(r.sep)||(e=e+r.sep),t.startsWith(e)?t.slice(e.length):null)};U.fromPortablePath=sU;U.toPortablePath=fS;U.contains=(r,e)=>nU(U,r,e);x.contains=(r,e)=>nU(x,r,e);var Nge=/^([a-zA-Z]:.*)$/,Lge=/^\/\/(\.\/)?(.*)$/,Tge=/^\/([a-zA-Z]:.*)$/,Oge=/^\/unc\/(\.dot\/)?(.*)$/;function sU(r){if(process.platform!=="win32")return r;let e,t;if(e=r.match(Tge))r=e[1];else if(t=r.match(Oge))r=`\\\\${t[1]?".\\":""}${t[2]}`;else return r;return r.replace(/\//g,"\\")}function fS(r){if(process.platform!=="win32")return r;r=r.replace(/\\/g,"/");let e,t;return(e=r.match(Nge))?r=`/${e[1]}`:(t=r.match(Lge))&&(r=`/unc/${t[1]?".dot/":""}${t[2]}`),r}function VE(r,e){return r===U?sU(e):fS(e)}function Kr(r){if(U.parse(r).dir!==""||x.parse(r).dir!=="")throw new Error(`Invalid filename: "${r}"`);return r}var ZE=new Date(456789e3*1e3),CS=(t=>(t.Allow="allow",t.ReadOnly="readOnly",t))(CS||{});async function oU(r,e,t,i,n){let s=r.pathUtils.normalize(e),o=t.pathUtils.normalize(i),a=[],l=[],{atime:c,mtime:u}=n.stableTime?{atime:ZE,mtime:ZE}:await t.lstatPromise(o);await r.mkdirpPromise(r.pathUtils.dirname(e),{utimes:[c,u]});let g=typeof r.lutimesPromise=="function"?r.lutimesPromise.bind(r):r.utimesPromise.bind(r);await pS(a,l,g,r,s,t,o,{...n,didParentExist:!0});for(let f of a)await f();await Promise.all(l.map(f=>f()))}async function pS(r,e,t,i,n,s,o,a){var h,p;let l=a.didParentExist?await Mge(i,n):null,c=await s.lstatPromise(o),{atime:u,mtime:g}=a.stableTime?{atime:ZE,mtime:ZE}:c,f;switch(!0){case c.isDirectory():f=await Uge(r,e,t,i,n,l,s,o,c,a);break;case c.isFile():f=await Hge(r,e,t,i,n,l,s,o,c,a);break;case c.isSymbolicLink():f=await Gge(r,e,t,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(f||((h=l==null?void 0:l.mtime)==null?void 0:h.getTime())!==g.getTime()||((p=l==null?void 0:l.atime)==null?void 0:p.getTime())!==u.getTime())&&(e.push(()=>t(n,u,g)),f=!0),(l===null||(l.mode&511)!==(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),f=!0),f}async function Mge(r,e){try{return await r.lstatPromise(e)}catch{return null}}async function Uge(r,e,t,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(r.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(h){if(h.code!=="EEXIST")throw h}}),u=!0);let g=await o.readdirPromise(a),f=c.didParentExist&&!s?{...c,didParentExist:!1}:c;if(c.stableSort)for(let h of g.sort())await pS(r,e,t,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),f)&&(u=!0);else(await Promise.all(g.map(async p=>{await pS(r,e,t,i,i.pathUtils.join(n,p),o,o.pathUtils.join(a,p),f)}))).some(p=>p)&&(u=!0);return u}var hS=new WeakMap;function dS(r,e,t,i,n){return async()=>{await r.linkPromise(t,e),n==="readOnly"&&(i.mode&=-147,await r.chmodPromise(e,i.mode))}}function Kge(r,e,t,i,n){let s=hS.get(r);return typeof s>"u"?async()=>{try{await r.copyFilePromise(t,e,XE.default.constants.COPYFILE_FICLONE_FORCE),hS.set(r,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")hS.set(r,!1),await dS(r,e,t,i,n)();else throw o}}:s?async()=>r.copyFilePromise(t,e,XE.default.constants.COPYFILE_FICLONE_FORCE):dS(r,e,t,i,n)}async function Hge(r,e,t,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?Kge(i,n,a,l,u):async()=>i.copyFilePromise(a,n,XE.default.constants.COPYFILE_FICLONE):u!==null?dS(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return r.push(async()=>g()),!0}async function Gge(r,e,t,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)r.push(async()=>i.removePromise(n)),s=null;else return!1;return r.push(async()=>{await i.symlinkPromise(VE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function As(r,e){return Object.assign(new Error(`${r}: ${e}`),{code:r})}function $E(r){return As("EBUSY",r)}function Up(r,e){return As("ENOSYS",`${r}, ${e}`)}function vA(r){return As("EINVAL",`invalid argument, ${r}`)}function Hr(r){return As("EBADF",`bad file descriptor, ${r}`)}function Js(r){return As("ENOENT",`no such file or directory, ${r}`)}function Qo(r){return As("ENOTDIR",`not a directory, ${r}`)}function Kp(r){return As("EISDIR",`illegal operation on a directory, ${r}`)}function eI(r){return As("EEXIST",`file already exists, ${r}`)}function cn(r){return As("EROFS",`read-only filesystem, ${r}`)}function aU(r){return As("ENOTEMPTY",`directory not empty, ${r}`)}function AU(r){return As("EOPNOTSUPP",`operation not supported, ${r}`)}function lU(){return As("ERR_DIR_CLOSED","Directory handle was closed")}var _E=class extends Error{constructor(t,i){super(t);this.name="Libzip Error",this.code=i}};var Hp=class{constructor(e,t,i={}){this.path=e;this.nextDirent=t;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw lU()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let t=this.readSync();return typeof e<"u"?e(null,t):Promise.resolve(t)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,t;this.throwIfClosed(),(t=(e=this.opts).onClose)==null||t.call(e),this.closed=!0}};function tI(r,e,t,i){let n=()=>{let s=t.shift();return typeof s>"u"?null:Object.assign(r.statSync(r.pathUtils.join(e,s)),{name:s})};return new Hp(e,n,i)}var cU=J("os");var Ia=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:t=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(t)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:t=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(t){let s=await this.readdirPromise(e);await Promise.all(s.map(o=>this.removePromise(this.pathUtils.resolve(e,o))))}for(let s=0;s<=i;s++)try{await this.rmdirPromise(e);break}catch(o){if(o.code!=="EBUSY"&&o.code!=="ENOTEMPTY")throw o;ssetTimeout(a,s*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:t=!0}={}){let i;try{i=this.lstatSync(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(i.isDirectory()){if(t)for(let n of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,n));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:t,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep),s;for(let o=2;o<=n.length;++o){let a=n.slice(0,o).join(this.pathUtils.sep);if(!this.existsSync(a)){try{await this.mkdirPromise(a)}catch(l){if(l.code==="EEXIST")continue;throw l}if(s!=null||(s=a),t!=null&&await this.chmodPromise(a,t),i!=null)await this.utimesPromise(a,i[0],i[1]);else{let l=await this.statPromise(this.pathUtils.dirname(a));await this.utimesPromise(a,l.atime,l.mtime)}}}return s}mkdirpSync(e,{chmod:t,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep),s;for(let o=2;o<=n.length;++o){let a=n.slice(0,o).join(this.pathUtils.sep);if(!this.existsSync(a)){try{this.mkdirSync(a)}catch(l){if(l.code==="EEXIST")continue;throw l}if(s!=null||(s=a),t!=null&&this.chmodSync(a,t),i!=null)this.utimesSync(a,i[0],i[1]);else{let l=this.statSync(this.pathUtils.dirname(a));this.utimesSync(a,l.atime,l.mtime)}}}return s}async copyPromise(e,t,{baseFs:i=this,overwrite:n=!0,stableSort:s=!1,stableTime:o=!1,linkStrategy:a=null}={}){return await oU(this,e,i,t,{overwrite:n,stableSort:s,stableTime:o,linkStrategy:a})}copySync(e,t,{baseFs:i=this,overwrite:n=!0}={}){let s=i.lstatSync(t),o=this.existsSync(e);if(s.isDirectory()){this.mkdirpSync(e);let l=i.readdirSync(t);for(let c of l)this.copySync(this.pathUtils.join(e,c),i.pathUtils.join(t,c),{baseFs:i,overwrite:n})}else if(s.isFile()){if(!o||n){o&&this.removeSync(e);let l=i.readFileSync(t);this.writeFileSync(e,l)}}else if(s.isSymbolicLink()){if(!o||n){o&&this.removeSync(e);let l=i.readlinkSync(t);this.symlinkSync(VE(this.pathUtils,l),e)}}else throw new Error(`Unsupported file type (file: ${t}, mode: 0o${s.mode.toString(8).padStart(6,"0")})`);let a=s.mode&511;this.chmodSync(e,a)}async changeFilePromise(e,t,i={}){return Buffer.isBuffer(t)?this.changeFileBufferPromise(e,t,i):this.changeFileTextPromise(e,t,i)}async changeFileBufferPromise(e,t,{mode:i}={}){let n=Buffer.alloc(0);try{n=await this.readFilePromise(e)}catch{}Buffer.compare(n,t)!==0&&await this.writeFilePromise(e,t,{mode:i})}async changeFileTextPromise(e,t,{automaticNewlines:i,mode:n}={}){let s="";try{s=await this.readFilePromise(e,"utf8")}catch{}let o=i?Vl(s,t):t;s!==o&&await this.writeFilePromise(e,o,{mode:n})}changeFileSync(e,t,i={}){return Buffer.isBuffer(t)?this.changeFileBufferSync(e,t,i):this.changeFileTextSync(e,t,i)}changeFileBufferSync(e,t,{mode:i}={}){let n=Buffer.alloc(0);try{n=this.readFileSync(e)}catch{}Buffer.compare(n,t)!==0&&this.writeFileSync(e,t,{mode:i})}changeFileTextSync(e,t,{automaticNewlines:i=!1,mode:n}={}){let s="";try{s=this.readFileSync(e,"utf8")}catch{}let o=i?Vl(s,t):t;s!==o&&this.writeFileSync(e,o,{mode:n})}async movePromise(e,t){try{await this.renamePromise(e,t)}catch(i){if(i.code==="EXDEV")await this.copyPromise(t,e),await this.removePromise(e);else throw i}}moveSync(e,t){try{this.renameSync(e,t)}catch(i){if(i.code==="EXDEV")this.copySync(t,e),this.removeSync(e);else throw i}}async lockPromise(e,t){let i=`${e}.flock`,n=1e3/60,s=Date.now(),o=null,a=async()=>{let l;try{[l]=await this.readJsonPromise(i)}catch{return Date.now()-s<500}try{return process.kill(l,0),!0}catch{return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch{}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await t()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch{}}}async readJsonPromise(e){let t=await this.readFilePromise(e,"utf8");try{return JSON.parse(t)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let t=this.readFileSync(e,"utf8");try{return JSON.parse(t)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,t){return await this.writeFilePromise(e,`${JSON.stringify(t,null,2)} `)}writeJsonSync(e,t){return this.writeFileSync(e,`${JSON.stringify(t,null,2)} -`)}async preserveTimePromise(e,t){let i=await this.lstatPromise(e),n=await t();typeof n<"u"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,t){let i=this.lstatSync(e),n=t();typeof n<"u"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},EA=class extends ha{constructor(){super(x)}};function tge(r){let e=r.match(/\r?\n/g);if(e===null)return N1.EOL;let t=e.filter(n=>n===`\r +`)}async preserveTimePromise(e,t){let i=await this.lstatPromise(e),n=await t();typeof n<"u"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,t){let i=this.lstatSync(e),n=t();typeof n<"u"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},xA=class extends Ia{constructor(){super(x)}};function Yge(r){let e=r.match(/\r?\n/g);if(e===null)return cU.EOL;let t=e.filter(n=>n===`\r `).length,i=e.length-t;return t>i?`\r `:` -`}function Tl(r,e){return e.replace(/\r?\n/g,tge(r))}var pg=J("fs"),sS=J("stream"),M1=J("util"),oS=Pe(J("zlib"));var L1=Pe(J("fs"));var $t=class extends EA{constructor(t=L1.default){super();this.realFs=t,typeof this.realFs.lutimes<"u"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Oe.root}resolve(t){return x.resolve(t)}async openPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.open(K.fromPortablePath(t),i,n,this.makeCallback(s,o))})}openSync(t,i,n){return this.realFs.openSync(K.fromPortablePath(t),i,n)}async opendirPromise(t,i){return await new Promise((n,s)=>{typeof i<"u"?this.realFs.opendir(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.opendir(K.fromPortablePath(t),this.makeCallback(n,s))}).then(n=>Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0}))}opendirSync(t,i){let n=typeof i<"u"?this.realFs.opendirSync(K.fromPortablePath(t),i):this.realFs.opendirSync(K.fromPortablePath(t));return Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0})}async readPromise(t,i,n=0,s=0,o=-1){return await new Promise((a,l)=>{this.realFs.read(t,i,n,s,o,(c,u)=>{c?l(c):a(u)})})}readSync(t,i,n,s,o){return this.realFs.readSync(t,i,n,s,o)}async writePromise(t,i,n,s,o){return await new Promise((a,l)=>typeof i=="string"?this.realFs.write(t,i,n,this.makeCallback(a,l)):this.realFs.write(t,i,n,s,o,this.makeCallback(a,l)))}writeSync(t,i,n,s,o){return typeof i=="string"?this.realFs.writeSync(t,i,n):this.realFs.writeSync(t,i,n,s,o)}async closePromise(t){await new Promise((i,n)=>{this.realFs.close(t,this.makeCallback(i,n))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,i){let n=t!==null?K.fromPortablePath(t):t;return this.realFs.createReadStream(n,i)}createWriteStream(t,i){let n=t!==null?K.fromPortablePath(t):t;return this.realFs.createWriteStream(n,i)}async realpathPromise(t){return await new Promise((i,n)=>{this.realFs.realpath(K.fromPortablePath(t),{},this.makeCallback(i,n))}).then(i=>K.toPortablePath(i))}realpathSync(t){return K.toPortablePath(this.realFs.realpathSync(K.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(i=>{this.realFs.exists(K.fromPortablePath(t),i)})}accessSync(t,i){return this.realFs.accessSync(K.fromPortablePath(t),i)}async accessPromise(t,i){return await new Promise((n,s)=>{this.realFs.access(K.fromPortablePath(t),i,this.makeCallback(n,s))})}existsSync(t){return this.realFs.existsSync(K.fromPortablePath(t))}async statPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.stat(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.stat(K.fromPortablePath(t),this.makeCallback(n,s))})}statSync(t,i){return i?this.realFs.statSync(K.fromPortablePath(t),i):this.realFs.statSync(K.fromPortablePath(t))}async fstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.fstat(t,i,this.makeCallback(n,s)):this.realFs.fstat(t,this.makeCallback(n,s))})}fstatSync(t,i){return i?this.realFs.fstatSync(t,i):this.realFs.fstatSync(t)}async lstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.lstat(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.lstat(K.fromPortablePath(t),this.makeCallback(n,s))})}lstatSync(t,i){return i?this.realFs.lstatSync(K.fromPortablePath(t),i):this.realFs.lstatSync(K.fromPortablePath(t))}async fchmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.fchmod(t,i,this.makeCallback(n,s))})}fchmodSync(t,i){return this.realFs.fchmodSync(t,i)}async chmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.chmod(K.fromPortablePath(t),i,this.makeCallback(n,s))})}chmodSync(t,i){return this.realFs.chmodSync(K.fromPortablePath(t),i)}async fchownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.fchown(t,i,n,this.makeCallback(s,o))})}fchownSync(t,i,n){return this.realFs.fchownSync(t,i,n)}async chownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.chown(K.fromPortablePath(t),i,n,this.makeCallback(s,o))})}chownSync(t,i,n){return this.realFs.chownSync(K.fromPortablePath(t),i,n)}async renamePromise(t,i){return await new Promise((n,s)=>{this.realFs.rename(K.fromPortablePath(t),K.fromPortablePath(i),this.makeCallback(n,s))})}renameSync(t,i){return this.realFs.renameSync(K.fromPortablePath(t),K.fromPortablePath(i))}async copyFilePromise(t,i,n=0){return await new Promise((s,o)=>{this.realFs.copyFile(K.fromPortablePath(t),K.fromPortablePath(i),n,this.makeCallback(s,o))})}copyFileSync(t,i,n=0){return this.realFs.copyFileSync(K.fromPortablePath(t),K.fromPortablePath(i),n)}async appendFilePromise(t,i,n){return await new Promise((s,o)=>{let a=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.appendFile(a,i,n,this.makeCallback(s,o)):this.realFs.appendFile(a,i,this.makeCallback(s,o))})}appendFileSync(t,i,n){let s=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.appendFileSync(s,i,n):this.realFs.appendFileSync(s,i)}async writeFilePromise(t,i,n){return await new Promise((s,o)=>{let a=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.writeFile(a,i,n,this.makeCallback(s,o)):this.realFs.writeFile(a,i,this.makeCallback(s,o))})}writeFileSync(t,i,n){let s=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.writeFileSync(s,i,n):this.realFs.writeFileSync(s,i)}async unlinkPromise(t){return await new Promise((i,n)=>{this.realFs.unlink(K.fromPortablePath(t),this.makeCallback(i,n))})}unlinkSync(t){return this.realFs.unlinkSync(K.fromPortablePath(t))}async utimesPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.utimes(K.fromPortablePath(t),i,n,this.makeCallback(s,o))})}utimesSync(t,i,n){this.realFs.utimesSync(K.fromPortablePath(t),i,n)}async lutimesPromiseImpl(t,i,n){let s=this.realFs.lutimes;if(typeof s>"u")throw xp("unavailable Node binding",`lutimes '${t}'`);return await new Promise((o,a)=>{s.call(this.realFs,K.fromPortablePath(t),i,n,this.makeCallback(o,a))})}lutimesSyncImpl(t,i,n){let s=this.realFs.lutimesSync;if(typeof s>"u")throw xp("unavailable Node binding",`lutimes '${t}'`);s.call(this.realFs,K.fromPortablePath(t),i,n)}async mkdirPromise(t,i){return await new Promise((n,s)=>{this.realFs.mkdir(K.fromPortablePath(t),i,this.makeCallback(n,s))})}mkdirSync(t,i){return this.realFs.mkdirSync(K.fromPortablePath(t),i)}async rmdirPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.rmdir(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.rmdir(K.fromPortablePath(t),this.makeCallback(n,s))})}rmdirSync(t,i){return this.realFs.rmdirSync(K.fromPortablePath(t),i)}async linkPromise(t,i){return await new Promise((n,s)=>{this.realFs.link(K.fromPortablePath(t),K.fromPortablePath(i),this.makeCallback(n,s))})}linkSync(t,i){return this.realFs.linkSync(K.fromPortablePath(t),K.fromPortablePath(i))}async symlinkPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.symlink(K.fromPortablePath(t.replace(/\/+$/,"")),K.fromPortablePath(i),n,this.makeCallback(s,o))})}symlinkSync(t,i,n){return this.realFs.symlinkSync(K.fromPortablePath(t.replace(/\/+$/,"")),K.fromPortablePath(i),n)}async readFilePromise(t,i){return await new Promise((n,s)=>{let o=typeof t=="string"?K.fromPortablePath(t):t;this.realFs.readFile(o,i,this.makeCallback(n,s))})}readFileSync(t,i){let n=typeof t=="string"?K.fromPortablePath(t):t;return this.realFs.readFileSync(n,i)}async readdirPromise(t,i){return await new Promise((n,s)=>{i!=null&&i.withFileTypes?this.realFs.readdir(K.fromPortablePath(t),{withFileTypes:!0},this.makeCallback(n,s)):this.realFs.readdir(K.fromPortablePath(t),this.makeCallback(o=>n(o),s))})}readdirSync(t,i){return i!=null&&i.withFileTypes?this.realFs.readdirSync(K.fromPortablePath(t),{withFileTypes:!0}):this.realFs.readdirSync(K.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((i,n)=>{this.realFs.readlink(K.fromPortablePath(t),this.makeCallback(i,n))}).then(i=>K.toPortablePath(i))}readlinkSync(t){return K.toPortablePath(this.realFs.readlinkSync(K.fromPortablePath(t)))}async truncatePromise(t,i){return await new Promise((n,s)=>{this.realFs.truncate(K.fromPortablePath(t),i,this.makeCallback(n,s))})}truncateSync(t,i){return this.realFs.truncateSync(K.fromPortablePath(t),i)}async ftruncatePromise(t,i){return await new Promise((n,s)=>{this.realFs.ftruncate(t,i,this.makeCallback(n,s))})}ftruncateSync(t,i){return this.realFs.ftruncateSync(t,i)}watch(t,i,n){return this.realFs.watch(K.fromPortablePath(t),i,n)}watchFile(t,i,n){return this.realFs.watchFile(K.fromPortablePath(t),i,n)}unwatchFile(t,i){return this.realFs.unwatchFile(K.fromPortablePath(t),i)}makeCallback(t,i){return(n,s)=>{n?i(n):t(s)}}};var O1=J("events");function T1(r,e){if(r!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${r}'`)}var hg=class extends O1.EventEmitter{constructor(t,i,{bigint:n=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=t,this.path=i,this.bigint=n,this.lastStats=this.stat()}static create(t,i,n){let s=new hg(t,i,n);return s.start(),s}start(){T1(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){T1(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let i=this.bigint?new fg:new fa;return LE(i)}}makeInterval(t){let i=setInterval(()=>{let n=this.stat(),s=this.lastStats;Xb(n,s)||(this.lastStats=n,this.emit("change",n,s))},t.interval);return t.persistent?i:i.unref()}registerChangeListener(t,i){this.addListener("change",t),this.changeListeners.set(t,this.makeInterval(i))}unregisterChangeListener(t){this.removeListener("change",t);let i=this.changeListeners.get(t);typeof i<"u"&&clearInterval(i),this.changeListeners.delete(t)}unregisterAllChangeListeners(){for(let t of this.changeListeners.keys())this.unregisterChangeListener(t)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let t of this.changeListeners.values())t.ref();return this}unref(){for(let t of this.changeListeners.values())t.unref();return this}};var jE=new WeakMap;function qE(r,e,t,i){let n,s,o,a;switch(typeof t){case"function":n=!1,s=!0,o=5007,a=t;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=t),a=i;break}let l=jE.get(r);typeof l>"u"&&jE.set(r,l=new Map);let c=l.get(e);return typeof c>"u"&&(c=hg.create(r,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function Dp(r,e,t){let i=jE.get(r);if(typeof i>"u")return;let n=i.get(e);typeof n>"u"||(typeof t>"u"?n.unregisterAllChangeListeners():n.unregisterChangeListener(t),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function kp(r){let e=jE.get(r);if(!(typeof e>"u"))for(let t of e.keys())Dp(r,t)}var Ol="mixed";function rge(r){if(typeof r=="string"&&String(+r)===r)return+r;if(Number.isFinite(r))return r<0?Date.now()/1e3:r;if(M1.types.isDate(r))return r.getTime()/1e3;throw new Error("Invalid time")}function nS(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Wr=class extends EA{constructor(t,i){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=i.libzip;let n=i;if(this.level=typeof n.level<"u"?n.level:Ol,t!=null||(t=nS()),typeof t=="string"){let{baseFs:a=new $t}=n;this.baseFs=a,this.path=t}else this.path=null,this.baseFs=null;if(i.stats)this.stats=i.stats;else if(typeof t=="string")try{this.stats=this.baseFs.statSync(t)}catch(a){if(a.code==="ENOENT"&&n.create)this.stats=bp();else throw a}else this.stats=bp();let s=this.libzip.malloc(4);try{let a=0;if(typeof t=="string"&&n.create&&(a|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),i.readOnly&&(a|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof t=="string")this.zip=this.libzip.open(K.fromPortablePath(t),a,s);else{let l=this.allocateUnattachedSource(t);try{this.zip=this.libzip.openFromSource(l,a,s),this.lzSource=l}catch(c){throw this.libzip.source.free(l),c}}if(this.zip===0){let l=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(l,this.libzip.getValue(s,"i32")),this.makeLibzipError(l)}}finally{this.libzip.free(s)}this.listings.set(Oe.root,new Set);let o=this.libzip.getNumEntries(this.zip,0);for(let a=0;at)throw new Error("Overread");let s=this.libzip.HEAPU8.subarray(i,i+t);return Buffer.from(s)}finally{this.libzip.free(i)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw HE("archive closed, close");kp(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let t=this.baseFs.existsSync(this.path)||this.stats.mode===Qp?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,nS(),{mode:t});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof t<"u"&&this.baseFs.chmodSync(this.path,t)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(t){return x.resolve(Oe.root,t)}async openPromise(t,i,n){return this.openSync(t,i,n)}openSync(t,i,n){let s=this.nextFd++;return this.fds.set(s,{cursor:0,p:t}),s}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(t,i){return this.opendirSync(t,i)}opendirSync(t,i={}){let n=this.resolveFilename(`opendir '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Gs(`opendir '${t}'`);let s=this.listings.get(n);if(!s)throw Io(`opendir '${t}'`);let o=[...s],a=this.openSync(n,"r");return YE(this,n,o,{onClose:()=>{this.closeSync(a)}})}async readPromise(t,i,n,s,o){return this.readSync(t,i,n,s,o)}readSync(t,i,n=0,s=i.byteLength,o=-1){let a=this.fds.get(t);if(typeof a>"u")throw Hr("read");let l=o===-1||o===null?a.cursor:o,c=this.readFileSync(a.p);c.copy(i,n,l,l+s);let u=Math.max(0,Math.min(c.length-l,s));return(o===-1||o===null)&&(a.cursor+=u),u}async writePromise(t,i,n,s,o){return typeof i=="string"?this.writeSync(t,i,o):this.writeSync(t,i,n,s,o)}writeSync(t,i,n,s,o){throw typeof this.fds.get(t)>"u"?Hr("read"):new Error("Unimplemented")}async closePromise(t){return this.closeSync(t)}closeSync(t){if(typeof this.fds.get(t)>"u")throw Hr("read");this.fds.delete(t)}createReadStream(t,{encoding:i}={}){if(t===null)throw new Error("Unimplemented");let n=this.openSync(t,"r"),s=Object.assign(new sS.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(a,l)=>{clearImmediate(o),this.closeSync(n),l(a)}}),{close(){s.destroy()},bytesRead:0,path:t}),o=setImmediate(async()=>{try{let a=await this.readFilePromise(t,i);s.bytesRead=a.length,s.end(a)}catch(a){s.destroy(a)}});return s}createWriteStream(t,{encoding:i}={}){if(this.readOnly)throw ln(`open '${t}'`);if(t===null)throw new Error("Unimplemented");let n=[],s=this.openSync(t,"w"),o=Object.assign(new sS.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(a,l)=>{try{a?l(a):(this.writeFileSync(t,Buffer.concat(n),i),l(null))}catch(c){l(c)}finally{this.closeSync(s)}}}),{bytesWritten:0,path:t,close(){o.destroy()}});return o.on("data",a=>{let l=Buffer.from(a);o.bytesWritten+=l.length,n.push(l)}),o}async realpathPromise(t){return this.realpathSync(t)}realpathSync(t){let i=this.resolveFilename(`lstat '${t}'`,t);if(!this.entries.has(i)&&!this.listings.has(i))throw Gs(`lstat '${t}'`);return i}async existsPromise(t){return this.existsSync(t)}existsSync(t){if(!this.ready)throw HE(`archive closed, existsSync '${t}'`);if(this.symlinkCount===0){let n=x.resolve(Oe.root,t);return this.entries.has(n)||this.listings.has(n)}let i;try{i=this.resolveFilename(`stat '${t}'`,t,void 0,!1)}catch{return!1}return i===void 0?!1:this.entries.has(i)||this.listings.has(i)}async accessPromise(t,i){return this.accessSync(t,i)}accessSync(t,i=pg.constants.F_OK){let n=this.resolveFilename(`access '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Gs(`access '${t}'`);if(this.readOnly&&i&pg.constants.W_OK)throw ln(`access '${t}'`)}async statPromise(t,i={bigint:!1}){return i.bigint?this.statSync(t,{bigint:!0}):this.statSync(t)}statSync(t,i={bigint:!1,throwIfNoEntry:!0}){let n=this.resolveFilename(`stat '${t}'`,t,void 0,i.throwIfNoEntry);if(n!==void 0){if(!this.entries.has(n)&&!this.listings.has(n)){if(i.throwIfNoEntry===!1)return;throw Gs(`stat '${t}'`)}if(t[t.length-1]==="/"&&!this.listings.has(n))throw Io(`stat '${t}'`);return this.statImpl(`stat '${t}'`,n,i)}}async fstatPromise(t,i){return this.fstatSync(t,i)}fstatSync(t,i){let n=this.fds.get(t);if(typeof n>"u")throw Hr("fstatSync");let{p:s}=n,o=this.resolveFilename(`stat '${s}'`,s);if(!this.entries.has(o)&&!this.listings.has(o))throw Gs(`stat '${s}'`);if(s[s.length-1]==="/"&&!this.listings.has(o))throw Io(`stat '${s}'`);return this.statImpl(`fstat '${s}'`,o,i)}async lstatPromise(t,i={bigint:!1}){return i.bigint?this.lstatSync(t,{bigint:!0}):this.lstatSync(t)}lstatSync(t,i={bigint:!1,throwIfNoEntry:!0}){let n=this.resolveFilename(`lstat '${t}'`,t,!1,i.throwIfNoEntry);if(n!==void 0){if(!this.entries.has(n)&&!this.listings.has(n)){if(i.throwIfNoEntry===!1)return;throw Gs(`lstat '${t}'`)}if(t[t.length-1]==="/"&&!this.listings.has(n))throw Io(`lstat '${t}'`);return this.statImpl(`lstat '${t}'`,n,i)}}statImpl(t,i,n={}){let s=this.entries.get(i);if(typeof s<"u"){let o=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,s,0,0,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let l=this.stats.uid,c=this.stats.gid,u=this.libzip.struct.statSize(o)>>>0,g=512,f=Math.ceil(u/g),h=(this.libzip.struct.statMtime(o)>>>0)*1e3,p=h,C=h,y=h,B=new Date(p),v=new Date(C),D=new Date(y),L=new Date(h),H=this.listings.has(i)?16384:this.isSymbolicLink(s)?40960:32768,j=H===16384?493:420,$=H|this.getUnixMode(s,j)&511,V=this.libzip.struct.statCrc(o),W=Object.assign(new fa,{uid:l,gid:c,size:u,blksize:g,blocks:f,atime:B,birthtime:v,ctime:D,mtime:L,atimeMs:p,birthtimeMs:C,ctimeMs:y,mtimeMs:h,mode:$,crc:V});return n.bigint===!0?TE(W):W}if(this.listings.has(i)){let o=this.stats.uid,a=this.stats.gid,l=0,c=512,u=0,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=this.stats.mtimeMs,C=new Date(g),y=new Date(f),B=new Date(h),v=new Date(p),D=16877,L=0,H=Object.assign(new fa,{uid:o,gid:a,size:l,blksize:c,blocks:u,atime:C,birthtime:y,ctime:B,mtime:v,atimeMs:g,birthtimeMs:f,ctimeMs:h,mtimeMs:p,mode:D,crc:L});return n.bigint===!0?TE(H):H}throw new Error("Unreachable")}getUnixMode(t,i){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?i:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(t){let i=this.listings.get(t);if(i)return i;this.registerListing(x.dirname(t)).add(x.basename(t));let s=new Set;return this.listings.set(t,s),s}registerEntry(t,i){this.registerListing(x.dirname(t)).add(x.basename(t)),this.entries.set(t,i)}unregisterListing(t){this.listings.delete(t);let i=this.listings.get(x.dirname(t));i==null||i.delete(x.basename(t))}unregisterEntry(t){this.unregisterListing(t);let i=this.entries.get(t);this.entries.delete(t),!(typeof i>"u")&&(this.fileSources.delete(i),this.isSymbolicLink(i)&&this.symlinkCount--)}deleteEntry(t,i){if(this.unregisterEntry(t),this.libzip.delete(this.zip,i)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(t,i,n=!0,s=!0){if(!this.ready)throw HE(`archive closed, ${t}`);let o=x.resolve(Oe.root,i);if(o==="/")return Oe.root;let a=this.entries.get(o);if(n&&a!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(a)){let l=this.getFileSource(a).toString();return this.resolveFilename(t,x.resolve(x.dirname(o),l),!0,s)}else return o;for(;;){let l=this.resolveFilename(t,x.dirname(o),!0,s);if(l===void 0)return l;let c=this.listings.has(l),u=this.entries.has(l);if(!c&&!u){if(s===!1)return;throw Gs(t)}if(!c)throw Io(t);if(o=x.resolve(l,x.basename(o)),!n||this.symlinkCount===0)break;let g=this.libzip.name.locate(this.zip,o.slice(1));if(g===-1)break;if(this.isSymbolicLink(g)){let f=this.getFileSource(g).toString();o=x.resolve(x.dirname(o),f)}else break}return o}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let i=this.libzip.malloc(t.byteLength);if(!i)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,i,t.byteLength).set(t),{buffer:i,byteLength:t.byteLength}}allocateUnattachedSource(t){let i=this.libzip.struct.errorS(),{buffer:n,byteLength:s}=this.allocateBuffer(t),o=this.libzip.source.fromUnattachedBuffer(n,s,0,!0,i);if(o===0)throw this.libzip.free(i),this.makeLibzipError(i);return o}allocateSource(t){let{buffer:i,byteLength:n}=this.allocateBuffer(t),s=this.libzip.source.fromBuffer(this.zip,i,n,0,!0);if(s===0)throw this.libzip.free(i),this.makeLibzipError(this.libzip.getError(this.zip));return s}setFileSource(t,i){let n=Buffer.isBuffer(i)?i:Buffer.from(i),s=x.relative(Oe.root,t),o=this.allocateSource(i);try{let a=this.libzip.file.add(this.zip,s,o,this.libzip.ZIP_FL_OVERWRITE);if(a===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let l=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,a,0,l,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(a,n),a}catch(a){throw this.libzip.source.free(o),a}}isSymbolicLink(t){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&61440)===40960}getFileSource(t,i={asyncDecompress:!1}){let n=this.fileSources.get(t);if(typeof n<"u")return n;let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(s),l=this.libzip.struct.statCompMethod(s),c=this.libzip.malloc(a);try{let u=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(u===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let g=this.libzip.fread(u,c,a,0);if(g===-1)throw this.makeLibzipError(this.libzip.file.getError(u));if(ga)throw new Error("Overread");let f=this.libzip.HEAPU8.subarray(c,c+a),h=Buffer.from(f);if(l===0)return this.fileSources.set(t,h),h;if(i.asyncDecompress)return new Promise((p,C)=>{oS.default.inflateRaw(h,(y,B)=>{y?C(y):(this.fileSources.set(t,B),p(B))})});{let p=oS.default.inflateRawSync(h);return this.fileSources.set(t,p),p}}finally{this.libzip.fclose(u)}}finally{this.libzip.free(c)}}async fchmodPromise(t,i){return this.chmodPromise(this.fdToPath(t,"fchmod"),i)}fchmodSync(t,i){return this.chmodSync(this.fdToPath(t,"fchmodSync"),i)}async chmodPromise(t,i){return this.chmodSync(t,i)}chmodSync(t,i){if(this.readOnly)throw ln(`chmod '${t}'`);i&=493;let n=this.resolveFilename(`chmod '${t}'`,t,!1),s=this.entries.get(n);if(typeof s>"u")throw new Error(`Assertion failed: The entry should have been registered (${n})`);let a=this.getUnixMode(s,32768)&-512|i;if(this.libzip.file.setExternalAttributes(this.zip,s,0,0,this.libzip.ZIP_OPSYS_UNIX,a<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(t,i,n){return this.chownPromise(this.fdToPath(t,"fchown"),i,n)}fchownSync(t,i,n){return this.chownSync(this.fdToPath(t,"fchownSync"),i,n)}async chownPromise(t,i,n){return this.chownSync(t,i,n)}chownSync(t,i,n){throw new Error("Unimplemented")}async renamePromise(t,i){return this.renameSync(t,i)}renameSync(t,i){throw new Error("Unimplemented")}async copyFilePromise(t,i,n){let{indexSource:s,indexDest:o,resolvedDestP:a}=this.prepareCopyFile(t,i,n),l=await this.getFileSource(s,{asyncDecompress:!0}),c=this.setFileSource(a,l);c!==o&&this.registerEntry(a,c)}copyFileSync(t,i,n=0){let{indexSource:s,indexDest:o,resolvedDestP:a}=this.prepareCopyFile(t,i,n),l=this.getFileSource(s),c=this.setFileSource(a,l);c!==o&&this.registerEntry(a,c)}prepareCopyFile(t,i,n=0){if(this.readOnly)throw ln(`copyfile '${t} -> '${i}'`);if((n&pg.constants.COPYFILE_FICLONE_FORCE)!==0)throw xp("unsupported clone operation",`copyfile '${t}' -> ${i}'`);let s=this.resolveFilename(`copyfile '${t} -> ${i}'`,t),o=this.entries.get(s);if(typeof o>"u")throw mA(`copyfile '${t}' -> '${i}'`);let a=this.resolveFilename(`copyfile '${t}' -> ${i}'`,i),l=this.entries.get(a);if((n&(pg.constants.COPYFILE_EXCL|pg.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof l<"u")throw GE(`copyfile '${t}' -> '${i}'`);return{indexSource:o,resolvedDestP:a,indexDest:l}}async appendFilePromise(t,i,n){if(this.readOnly)throw ln(`open '${t}'`);return typeof n>"u"?n={flag:"a"}:typeof n=="string"?n={flag:"a",encoding:n}:typeof n.flag>"u"&&(n={flag:"a",...n}),this.writeFilePromise(t,i,n)}appendFileSync(t,i,n={}){if(this.readOnly)throw ln(`open '${t}'`);return typeof n>"u"?n={flag:"a"}:typeof n=="string"?n={flag:"a",encoding:n}:typeof n.flag>"u"&&(n={flag:"a",...n}),this.writeFileSync(t,i,n)}fdToPath(t,i){var s;let n=(s=this.fds.get(t))==null?void 0:s.p;if(typeof n>"u")throw Hr(i);return n}async writeFilePromise(t,i,n){let{encoding:s,mode:o,index:a,resolvedP:l}=this.prepareWriteFile(t,n);a!==void 0&&typeof n=="object"&&n.flag&&n.flag.includes("a")&&(i=Buffer.concat([await this.getFileSource(a,{asyncDecompress:!0}),Buffer.from(i)])),s!==null&&(i=i.toString(s));let c=this.setFileSource(l,i);c!==a&&this.registerEntry(l,c),o!==null&&await this.chmodPromise(l,o)}writeFileSync(t,i,n){let{encoding:s,mode:o,index:a,resolvedP:l}=this.prepareWriteFile(t,n);a!==void 0&&typeof n=="object"&&n.flag&&n.flag.includes("a")&&(i=Buffer.concat([this.getFileSource(a),Buffer.from(i)])),s!==null&&(i=i.toString(s));let c=this.setFileSource(l,i);c!==a&&this.registerEntry(l,c),o!==null&&this.chmodSync(l,o)}prepareWriteFile(t,i){if(typeof t=="number"&&(t=this.fdToPath(t,"read")),this.readOnly)throw ln(`open '${t}'`);let n=this.resolveFilename(`open '${t}'`,t);if(this.listings.has(n))throw Pp(`open '${t}'`);let s=null,o=null;typeof i=="string"?s=i:typeof i=="object"&&({encoding:s=null,mode:o=null}=i);let a=this.entries.get(n);return{encoding:s,mode:o,resolvedP:n,index:a}}async unlinkPromise(t){return this.unlinkSync(t)}unlinkSync(t){if(this.readOnly)throw ln(`unlink '${t}'`);let i=this.resolveFilename(`unlink '${t}'`,t);if(this.listings.has(i))throw Pp(`unlink '${t}'`);let n=this.entries.get(i);if(typeof n>"u")throw mA(`unlink '${t}'`);this.deleteEntry(i,n)}async utimesPromise(t,i,n){return this.utimesSync(t,i,n)}utimesSync(t,i,n){if(this.readOnly)throw ln(`utimes '${t}'`);let s=this.resolveFilename(`utimes '${t}'`,t);this.utimesImpl(s,n)}async lutimesPromise(t,i,n){return this.lutimesSync(t,i,n)}lutimesSync(t,i,n){if(this.readOnly)throw ln(`lutimes '${t}'`);let s=this.resolveFilename(`utimes '${t}'`,t,!1);this.utimesImpl(s,n)}utimesImpl(t,i){this.listings.has(t)&&(this.entries.has(t)||this.hydrateDirectory(t));let n=this.entries.get(t);if(n===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,n,0,rge(i),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(t,i){return this.mkdirSync(t,i)}mkdirSync(t,{mode:i=493,recursive:n=!1}={}){if(n)return this.mkdirpSync(t,{chmod:i});if(this.readOnly)throw ln(`mkdir '${t}'`);let s=this.resolveFilename(`mkdir '${t}'`,t);if(this.entries.has(s)||this.listings.has(s))throw GE(`mkdir '${t}'`);this.hydrateDirectory(s),this.chmodSync(s,i)}async rmdirPromise(t,i){return this.rmdirSync(t,i)}rmdirSync(t,{recursive:i=!1}={}){if(this.readOnly)throw ln(`rmdir '${t}'`);if(i){this.removeSync(t);return}let n=this.resolveFilename(`rmdir '${t}'`,t),s=this.listings.get(n);if(!s)throw Io(`rmdir '${t}'`);if(s.size>0)throw k1(`rmdir '${t}'`);let o=this.entries.get(n);if(typeof o>"u")throw mA(`rmdir '${t}'`);this.deleteEntry(t,o)}hydrateDirectory(t){let i=this.libzip.dir.add(this.zip,x.relative(Oe.root,t));if(i===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(t),this.registerEntry(t,i),i}async linkPromise(t,i){return this.linkSync(t,i)}linkSync(t,i){throw R1(`link '${t}' -> '${i}'`)}async symlinkPromise(t,i){return this.symlinkSync(t,i)}symlinkSync(t,i){if(this.readOnly)throw ln(`symlink '${t}' -> '${i}'`);let n=this.resolveFilename(`symlink '${t}' -> '${i}'`,i);if(this.listings.has(n))throw Pp(`symlink '${t}' -> '${i}'`);if(this.entries.has(n))throw GE(`symlink '${t}' -> '${i}'`);let s=this.setFileSource(n,t);if(this.registerEntry(n,s),this.libzip.file.setExternalAttributes(this.zip,s,0,0,this.libzip.ZIP_OPSYS_UNIX,41471<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(t,i){typeof i=="object"&&(i=i?i.encoding:void 0);let n=await this.readFileBuffer(t,{asyncDecompress:!0});return i?n.toString(i):n}readFileSync(t,i){typeof i=="object"&&(i=i?i.encoding:void 0);let n=this.readFileBuffer(t);return i?n.toString(i):n}readFileBuffer(t,i={asyncDecompress:!1}){typeof t=="number"&&(t=this.fdToPath(t,"read"));let n=this.resolveFilename(`open '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Gs(`open '${t}'`);if(t[t.length-1]==="/"&&!this.listings.has(n))throw Io(`open '${t}'`);if(this.listings.has(n))throw Pp("read");let s=this.entries.get(n);if(s===void 0)throw new Error("Unreachable");return this.getFileSource(s,i)}async readdirPromise(t,i){return this.readdirSync(t,i)}readdirSync(t,i){let n=this.resolveFilename(`scandir '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Gs(`scandir '${t}'`);let s=this.listings.get(n);if(!s)throw Io(`scandir '${t}'`);let o=[...s];return i!=null&&i.withFileTypes?o.map(a=>Object.assign(this.statImpl("lstat",x.join(t,a)),{name:a})):o}async readlinkPromise(t){let i=this.prepareReadlink(t);return(await this.getFileSource(i,{asyncDecompress:!0})).toString()}readlinkSync(t){let i=this.prepareReadlink(t);return this.getFileSource(i).toString()}prepareReadlink(t){let i=this.resolveFilename(`readlink '${t}'`,t,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw Gs(`readlink '${t}'`);if(t[t.length-1]==="/"&&!this.listings.has(i))throw Io(`open '${t}'`);if(this.listings.has(i))throw mA(`readlink '${t}'`);let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(n))throw mA(`readlink '${t}'`);return n}async truncatePromise(t,i=0){let n=this.resolveFilename(`open '${t}'`,t),s=this.entries.get(n);if(typeof s>"u")throw mA(`open '${t}'`);let o=await this.getFileSource(s,{asyncDecompress:!0}),a=Buffer.alloc(i,0);return o.copy(a),await this.writeFilePromise(t,a)}truncateSync(t,i=0){let n=this.resolveFilename(`open '${t}'`,t),s=this.entries.get(n);if(typeof s>"u")throw mA(`open '${t}'`);let o=this.getFileSource(s),a=Buffer.alloc(i,0);return o.copy(a),this.writeFileSync(t,a)}async ftruncatePromise(t,i){return this.truncatePromise(this.fdToPath(t,"ftruncate"),i)}ftruncateSync(t,i){return this.truncateSync(this.fdToPath(t,"ftruncateSync"),i)}watch(t,i,n){let s;switch(typeof i){case"function":case"string":case"undefined":s=!0;break;default:({persistent:s=!0}=i);break}if(!s)return{on:()=>{},close:()=>{}};let o=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(o)}}}watchFile(t,i,n){let s=x.resolve(Oe.root,t);return qE(this,s,i,n)}unwatchFile(t,i){let n=x.resolve(Oe.root,t);return Dp(this,n,i)}};var pi=class extends ha{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,t,i){return this.baseFs.openPromise(this.mapToBase(e),t,i)}openSync(e,t,i){return this.baseFs.openSync(this.mapToBase(e),t,i)}async opendirPromise(e,t){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),t),{path:e})}opendirSync(e,t){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),t),{path:e})}async readPromise(e,t,i,n,s){return await this.baseFs.readPromise(e,t,i,n,s)}readSync(e,t,i,n,s){return this.baseFs.readSync(e,t,i,n,s)}async writePromise(e,t,i,n,s){return typeof t=="string"?await this.baseFs.writePromise(e,t,i):await this.baseFs.writePromise(e,t,i,n,s)}writeSync(e,t,i,n,s){return typeof t=="string"?this.baseFs.writeSync(e,t,i):this.baseFs.writeSync(e,t,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,t){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,t)}createWriteStream(e,t){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,t)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}async accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}async statPromise(e,t){return this.baseFs.statPromise(this.mapToBase(e),t)}statSync(e,t){return this.baseFs.statSync(this.mapToBase(e),t)}async fstatPromise(e,t){return this.baseFs.fstatPromise(e,t)}fstatSync(e,t){return this.baseFs.fstatSync(e,t)}lstatPromise(e,t){return this.baseFs.lstatPromise(this.mapToBase(e),t)}lstatSync(e,t){return this.baseFs.lstatSync(this.mapToBase(e),t)}async fchmodPromise(e,t){return this.baseFs.fchmodPromise(e,t)}fchmodSync(e,t){return this.baseFs.fchmodSync(e,t)}async chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}async fchownPromise(e,t,i){return this.baseFs.fchownPromise(e,t,i)}fchownSync(e,t,i){return this.baseFs.fchownSync(e,t,i)}async chownPromise(e,t,i){return this.baseFs.chownPromise(this.mapToBase(e),t,i)}chownSync(e,t,i){return this.baseFs.chownSync(this.mapToBase(e),t,i)}async renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(t))}renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(t))}async copyFilePromise(e,t,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(t),i)}copyFileSync(e,t,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(t),i)}async appendFilePromise(e,t,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),t,i)}appendFileSync(e,t,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),t,i)}async writeFilePromise(e,t,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),t,i)}writeFileSync(e,t,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),t,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,t,i){return this.baseFs.utimesPromise(this.mapToBase(e),t,i)}utimesSync(e,t,i){return this.baseFs.utimesSync(this.mapToBase(e),t,i)}async mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}async rmdirPromise(e,t){return this.baseFs.rmdirPromise(this.mapToBase(e),t)}rmdirSync(e,t){return this.baseFs.rmdirSync(this.mapToBase(e),t)}async linkPromise(e,t){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(t))}linkSync(e,t){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(t))}async symlinkPromise(e,t,i){let n=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,t,i){let n=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,t){return t==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),t):this.baseFs.readFilePromise(this.fsMapToBase(e),t)}readFileSync(e,t){return t==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),t):this.baseFs.readFileSync(this.fsMapToBase(e),t)}async readdirPromise(e,t){return this.baseFs.readdirPromise(this.mapToBase(e),t)}readdirSync(e,t){return this.baseFs.readdirSync(this.mapToBase(e),t)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,t){return this.baseFs.truncatePromise(this.mapToBase(e),t)}truncateSync(e,t){return this.baseFs.truncateSync(this.mapToBase(e),t)}async ftruncatePromise(e,t){return this.baseFs.ftruncatePromise(e,t)}ftruncateSync(e,t){return this.baseFs.ftruncateSync(e,t)}watch(e,t,i){return this.baseFs.watch(this.mapToBase(e),t,i)}watchFile(e,t,i){return this.baseFs.watchFile(this.mapToBase(e),t,i)}unwatchFile(e,t){return this.baseFs.unwatchFile(this.mapToBase(e),t)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var yo=class extends pi{constructor(t,{baseFs:i,pathUtils:n}){super(n);this.target=t,this.baseFs=i}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}};var jt=class extends pi{constructor(t,{baseFs:i=new $t}={}){super(x);this.target=this.pathUtils.normalize(t),this.baseFs=i}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?x.normalize(t):this.baseFs.resolve(x.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}};var K1=Oe.root,wo=class extends pi{constructor(t,{baseFs:i=new $t}={}){super(x);this.target=this.pathUtils.resolve(Oe.root,t),this.baseFs=i}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Oe.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let i=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(K1,t));if(i.match(/^\.\.\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(K1,this.pathUtils.relative(this.target,t))}};var dg=class extends pi{constructor(t,i){super(i);this.instance=null;this.factory=t}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(t){this.instance=t}mapFromBase(t){return t}mapToBase(t){return t}};var _e=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),aS=class extends ha{constructor(){super(x)}getExtractHint(){throw _e()}getRealPath(){throw _e()}resolve(){throw _e()}async openPromise(){throw _e()}openSync(){throw _e()}async opendirPromise(){throw _e()}opendirSync(){throw _e()}async readPromise(){throw _e()}readSync(){throw _e()}async writePromise(){throw _e()}writeSync(){throw _e()}async closePromise(){throw _e()}closeSync(){throw _e()}createWriteStream(){throw _e()}createReadStream(){throw _e()}async realpathPromise(){throw _e()}realpathSync(){throw _e()}async readdirPromise(){throw _e()}readdirSync(){throw _e()}async existsPromise(e){throw _e()}existsSync(e){throw _e()}async accessPromise(){throw _e()}accessSync(){throw _e()}async statPromise(){throw _e()}statSync(){throw _e()}async fstatPromise(e){throw _e()}fstatSync(e){throw _e()}async lstatPromise(e){throw _e()}lstatSync(e){throw _e()}async fchmodPromise(){throw _e()}fchmodSync(){throw _e()}async chmodPromise(){throw _e()}chmodSync(){throw _e()}async fchownPromise(){throw _e()}fchownSync(){throw _e()}async chownPromise(){throw _e()}chownSync(){throw _e()}async mkdirPromise(){throw _e()}mkdirSync(){throw _e()}async rmdirPromise(){throw _e()}rmdirSync(){throw _e()}async linkPromise(){throw _e()}linkSync(){throw _e()}async symlinkPromise(){throw _e()}symlinkSync(){throw _e()}async renamePromise(){throw _e()}renameSync(){throw _e()}async copyFilePromise(){throw _e()}copyFileSync(){throw _e()}async appendFilePromise(){throw _e()}appendFileSync(){throw _e()}async writeFilePromise(){throw _e()}writeFileSync(){throw _e()}async unlinkPromise(){throw _e()}unlinkSync(){throw _e()}async utimesPromise(){throw _e()}utimesSync(){throw _e()}async readFilePromise(){throw _e()}readFileSync(){throw _e()}async readlinkPromise(){throw _e()}readlinkSync(){throw _e()}async truncatePromise(){throw _e()}truncateSync(){throw _e()}async ftruncatePromise(e,t){throw _e()}ftruncateSync(e,t){throw _e()}watch(){throw _e()}watchFile(){throw _e()}unwatchFile(){throw _e()}},Rp=aS;Rp.instance=new aS;var Cg=class extends pi{constructor(t){super(K);this.baseFs=t}mapFromBase(t){return K.fromPortablePath(t)}mapToBase(t){return K.toPortablePath(t)}};var ige=/^[0-9]+$/,AS=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,nge=/^([^/]+-)?[a-f0-9]+$/,Br=class extends pi{constructor({baseFs:t=new $t}={}){super(x);this.baseFs=t}static makeVirtualPath(t,i,n){if(x.basename(t)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!x.basename(i).match(nge))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let o=x.relative(x.dirname(t),n).split("/"),a=0;for(;a{let t=r.indexOf(e);if(t<=0)return null;let i=t;for(;t>=0&&(i=t+e.length,r[i]!==x.sep);){if(r[t-1]===x.sep)return null;t=r.indexOf(e,i)}return r.length>i&&r[i]!==x.sep?null:r.slice(0,i)},Tn=class extends EA{constructor({libzip:t,baseFs:i=new $t,filter:n=null,maxOpenFiles:s=1/0,readOnlyArchives:o=!1,useCache:a=!0,maxAge:l=5e3,fileExtensions:c=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof t!="function"?()=>t:t,this.baseFs=i,this.zipInstances=a?new Map:null,this.filter=n,this.maxOpenFiles=s,this.readOnlyArchives=o,this.maxAge=l,this.fileExtensions=c}static async openPromise(t,i){let n=new Tn(i);try{return await t(n)}finally{n.saveAndClose()}}get libzip(){return typeof this.libzipInstance>"u"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(t){return this.baseFs.getExtractHint(t)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(kp(this),this.zipInstances)for(let[t,{zipFs:i}]of this.zipInstances.entries())i.saveAndClose(),this.zipInstances.delete(t)}discardAndClose(){if(kp(this),this.zipInstances)for(let[t,{zipFs:i}]of this.zipInstances.entries())i.discardAndClose(),this.zipInstances.delete(t)}resolve(t){return this.baseFs.resolve(t)}remapFd(t,i){let n=this.nextFd++|qi;return this.fdMap.set(n,[t,i]),n}async openPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.openPromise(t,i,n),async(s,{subPath:o})=>this.remapFd(s,await s.openPromise(o,i,n)))}openSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.openSync(t,i,n),(s,{subPath:o})=>this.remapFd(s,s.openSync(o,i,n)))}async opendirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.opendirPromise(t,i),async(n,{subPath:s})=>await n.opendirPromise(s,i),{requireSubpath:!1})}opendirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.opendirSync(t,i),(n,{subPath:s})=>n.opendirSync(s,i),{requireSubpath:!1})}async readPromise(t,i,n,s,o){if((t&cn)!==qi)return await this.baseFs.readPromise(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("read");let[l,c]=a;return await l.readPromise(c,i,n,s,o)}readSync(t,i,n,s,o){if((t&cn)!==qi)return this.baseFs.readSync(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("readSync");let[l,c]=a;return l.readSync(c,i,n,s,o)}async writePromise(t,i,n,s,o){if((t&cn)!==qi)return typeof i=="string"?await this.baseFs.writePromise(t,i,n):await this.baseFs.writePromise(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("write");let[l,c]=a;return typeof i=="string"?await l.writePromise(c,i,n):await l.writePromise(c,i,n,s,o)}writeSync(t,i,n,s,o){if((t&cn)!==qi)return typeof i=="string"?this.baseFs.writeSync(t,i,n):this.baseFs.writeSync(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("writeSync");let[l,c]=a;return typeof i=="string"?l.writeSync(c,i,n):l.writeSync(c,i,n,s,o)}async closePromise(t){if((t&cn)!==qi)return await this.baseFs.closePromise(t);let i=this.fdMap.get(t);if(typeof i>"u")throw Hr("close");this.fdMap.delete(t);let[n,s]=i;return await n.closePromise(s)}closeSync(t){if((t&cn)!==qi)return this.baseFs.closeSync(t);let i=this.fdMap.get(t);if(typeof i>"u")throw Hr("closeSync");this.fdMap.delete(t);let[n,s]=i;return n.closeSync(s)}createReadStream(t,i){return t===null?this.baseFs.createReadStream(t,i):this.makeCallSync(t,()=>this.baseFs.createReadStream(t,i),(n,{archivePath:s,subPath:o})=>{let a=n.createReadStream(o,i);return a.path=K.fromPortablePath(this.pathUtils.join(s,o)),a})}createWriteStream(t,i){return t===null?this.baseFs.createWriteStream(t,i):this.makeCallSync(t,()=>this.baseFs.createWriteStream(t,i),(n,{subPath:s})=>n.createWriteStream(s,i))}async realpathPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.realpathPromise(t),async(i,{archivePath:n,subPath:s})=>{let o=this.realPaths.get(n);return typeof o>"u"&&(o=await this.baseFs.realpathPromise(n),this.realPaths.set(n,o)),this.pathUtils.join(o,this.pathUtils.relative(Oe.root,await i.realpathPromise(s)))})}realpathSync(t){return this.makeCallSync(t,()=>this.baseFs.realpathSync(t),(i,{archivePath:n,subPath:s})=>{let o=this.realPaths.get(n);return typeof o>"u"&&(o=this.baseFs.realpathSync(n),this.realPaths.set(n,o)),this.pathUtils.join(o,this.pathUtils.relative(Oe.root,i.realpathSync(s)))})}async existsPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.existsPromise(t),async(i,{subPath:n})=>await i.existsPromise(n))}existsSync(t){return this.makeCallSync(t,()=>this.baseFs.existsSync(t),(i,{subPath:n})=>i.existsSync(n))}async accessPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.accessPromise(t,i),async(n,{subPath:s})=>await n.accessPromise(s,i))}accessSync(t,i){return this.makeCallSync(t,()=>this.baseFs.accessSync(t,i),(n,{subPath:s})=>n.accessSync(s,i))}async statPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.statPromise(t,i),async(n,{subPath:s})=>await n.statPromise(s,i))}statSync(t,i){return this.makeCallSync(t,()=>this.baseFs.statSync(t,i),(n,{subPath:s})=>n.statSync(s,i))}async fstatPromise(t,i){if((t&cn)!==qi)return this.baseFs.fstatPromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fstat");let[s,o]=n;return s.fstatPromise(o,i)}fstatSync(t,i){if((t&cn)!==qi)return this.baseFs.fstatSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fstatSync");let[s,o]=n;return s.fstatSync(o,i)}async lstatPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.lstatPromise(t,i),async(n,{subPath:s})=>await n.lstatPromise(s,i))}lstatSync(t,i){return this.makeCallSync(t,()=>this.baseFs.lstatSync(t,i),(n,{subPath:s})=>n.lstatSync(s,i))}async fchmodPromise(t,i){if((t&cn)!==qi)return this.baseFs.fchmodPromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fchmod");let[s,o]=n;return s.fchmodPromise(o,i)}fchmodSync(t,i){if((t&cn)!==qi)return this.baseFs.fchmodSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fchmodSync");let[s,o]=n;return s.fchmodSync(o,i)}async chmodPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.chmodPromise(t,i),async(n,{subPath:s})=>await n.chmodPromise(s,i))}chmodSync(t,i){return this.makeCallSync(t,()=>this.baseFs.chmodSync(t,i),(n,{subPath:s})=>n.chmodSync(s,i))}async fchownPromise(t,i,n){if((t&cn)!==qi)return this.baseFs.fchownPromise(t,i,n);let s=this.fdMap.get(t);if(typeof s>"u")throw Hr("fchown");let[o,a]=s;return o.fchownPromise(a,i,n)}fchownSync(t,i,n){if((t&cn)!==qi)return this.baseFs.fchownSync(t,i,n);let s=this.fdMap.get(t);if(typeof s>"u")throw Hr("fchownSync");let[o,a]=s;return o.fchownSync(a,i,n)}async chownPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.chownPromise(t,i,n),async(s,{subPath:o})=>await s.chownPromise(o,i,n))}chownSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.chownSync(t,i,n),(s,{subPath:o})=>s.chownSync(o,i,n))}async renamePromise(t,i){return await this.makeCallPromise(t,async()=>await this.makeCallPromise(i,async()=>await this.baseFs.renamePromise(t,i),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(n,{subPath:s})=>await this.makeCallPromise(i,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(o,{subPath:a})=>{if(n!==o)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await n.renamePromise(s,a)}))}renameSync(t,i){return this.makeCallSync(t,()=>this.makeCallSync(i,()=>this.baseFs.renameSync(t,i),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(n,{subPath:s})=>this.makeCallSync(i,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(o,{subPath:a})=>{if(n!==o)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return n.renameSync(s,a)}))}async copyFilePromise(t,i,n=0){let s=async(o,a,l,c)=>{if((n&Fp.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${a}' -> ${c}'`),{code:"EXDEV"});if(n&Fp.constants.COPYFILE_EXCL&&await this.existsPromise(a))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${a}' -> '${c}'`),{code:"EEXIST"});let u;try{u=await o.readFilePromise(a)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${a}' -> '${c}'`),{code:"EINVAL"})}await l.writeFilePromise(c,u)};return await this.makeCallPromise(t,async()=>await this.makeCallPromise(i,async()=>await this.baseFs.copyFilePromise(t,i,n),async(o,{subPath:a})=>await s(this.baseFs,t,o,a)),async(o,{subPath:a})=>await this.makeCallPromise(i,async()=>await s(o,a,this.baseFs,i),async(l,{subPath:c})=>o!==l?await s(o,a,l,c):await o.copyFilePromise(a,c,n)))}copyFileSync(t,i,n=0){let s=(o,a,l,c)=>{if((n&Fp.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${a}' -> ${c}'`),{code:"EXDEV"});if(n&Fp.constants.COPYFILE_EXCL&&this.existsSync(a))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${a}' -> '${c}'`),{code:"EEXIST"});let u;try{u=o.readFileSync(a)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${a}' -> '${c}'`),{code:"EINVAL"})}l.writeFileSync(c,u)};return this.makeCallSync(t,()=>this.makeCallSync(i,()=>this.baseFs.copyFileSync(t,i,n),(o,{subPath:a})=>s(this.baseFs,t,o,a)),(o,{subPath:a})=>this.makeCallSync(i,()=>s(o,a,this.baseFs,i),(l,{subPath:c})=>o!==l?s(o,a,l,c):o.copyFileSync(a,c,n)))}async appendFilePromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.appendFilePromise(t,i,n),async(s,{subPath:o})=>await s.appendFilePromise(o,i,n))}appendFileSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.appendFileSync(t,i,n),(s,{subPath:o})=>s.appendFileSync(o,i,n))}async writeFilePromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.writeFilePromise(t,i,n),async(s,{subPath:o})=>await s.writeFilePromise(o,i,n))}writeFileSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.writeFileSync(t,i,n),(s,{subPath:o})=>s.writeFileSync(o,i,n))}async unlinkPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.unlinkPromise(t),async(i,{subPath:n})=>await i.unlinkPromise(n))}unlinkSync(t){return this.makeCallSync(t,()=>this.baseFs.unlinkSync(t),(i,{subPath:n})=>i.unlinkSync(n))}async utimesPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.utimesPromise(t,i,n),async(s,{subPath:o})=>await s.utimesPromise(o,i,n))}utimesSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.utimesSync(t,i,n),(s,{subPath:o})=>s.utimesSync(o,i,n))}async mkdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.mkdirPromise(t,i),async(n,{subPath:s})=>await n.mkdirPromise(s,i))}mkdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.mkdirSync(t,i),(n,{subPath:s})=>n.mkdirSync(s,i))}async rmdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.rmdirPromise(t,i),async(n,{subPath:s})=>await n.rmdirPromise(s,i))}rmdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.rmdirSync(t,i),(n,{subPath:s})=>n.rmdirSync(s,i))}async linkPromise(t,i){return await this.makeCallPromise(i,async()=>await this.baseFs.linkPromise(t,i),async(n,{subPath:s})=>await n.linkPromise(t,s))}linkSync(t,i){return this.makeCallSync(i,()=>this.baseFs.linkSync(t,i),(n,{subPath:s})=>n.linkSync(t,s))}async symlinkPromise(t,i,n){return await this.makeCallPromise(i,async()=>await this.baseFs.symlinkPromise(t,i,n),async(s,{subPath:o})=>await s.symlinkPromise(t,o))}symlinkSync(t,i,n){return this.makeCallSync(i,()=>this.baseFs.symlinkSync(t,i,n),(s,{subPath:o})=>s.symlinkSync(t,o))}async readFilePromise(t,i){return this.makeCallPromise(t,async()=>{switch(i){case"utf8":return await this.baseFs.readFilePromise(t,i);default:return await this.baseFs.readFilePromise(t,i)}},async(n,{subPath:s})=>await n.readFilePromise(s,i))}readFileSync(t,i){return this.makeCallSync(t,()=>{switch(i){case"utf8":return this.baseFs.readFileSync(t,i);default:return this.baseFs.readFileSync(t,i)}},(n,{subPath:s})=>n.readFileSync(s,i))}async readdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.readdirPromise(t,i),async(n,{subPath:s})=>await n.readdirPromise(s,i),{requireSubpath:!1})}readdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.readdirSync(t,i),(n,{subPath:s})=>n.readdirSync(s,i),{requireSubpath:!1})}async readlinkPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.readlinkPromise(t),async(i,{subPath:n})=>await i.readlinkPromise(n))}readlinkSync(t){return this.makeCallSync(t,()=>this.baseFs.readlinkSync(t),(i,{subPath:n})=>i.readlinkSync(n))}async truncatePromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.truncatePromise(t,i),async(n,{subPath:s})=>await n.truncatePromise(s,i))}truncateSync(t,i){return this.makeCallSync(t,()=>this.baseFs.truncateSync(t,i),(n,{subPath:s})=>n.truncateSync(s,i))}async ftruncatePromise(t,i){if((t&cn)!==qi)return this.baseFs.ftruncatePromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("ftruncate");let[s,o]=n;return s.ftruncatePromise(o,i)}ftruncateSync(t,i){if((t&cn)!==qi)return this.baseFs.ftruncateSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("ftruncateSync");let[s,o]=n;return s.ftruncateSync(o,i)}watch(t,i,n){return this.makeCallSync(t,()=>this.baseFs.watch(t,i,n),(s,{subPath:o})=>s.watch(o,i,n))}watchFile(t,i,n){return this.makeCallSync(t,()=>this.baseFs.watchFile(t,i,n),()=>qE(this,t,i,n))}unwatchFile(t,i){return this.makeCallSync(t,()=>this.baseFs.unwatchFile(t,i),()=>Dp(this,t,i))}async makeCallPromise(t,i,n,{requireSubpath:s=!0}={}){if(typeof t!="string")return await i();let o=this.resolve(t),a=this.findZip(o);return a?s&&a.subPath==="/"?await i():await this.getZipPromise(a.archivePath,async l=>await n(l,a)):await i()}makeCallSync(t,i,n,{requireSubpath:s=!0}={}){if(typeof t!="string")return i();let o=this.resolve(t),a=this.findZip(o);return!a||s&&a.subPath==="/"?i():this.getZipSync(a.archivePath,l=>n(l,a))}findZip(t){if(this.filter&&!this.filter.test(t))return null;let i="";for(;;){let n=t.substring(i.length),s;if(!this.fileExtensions)s=U1(n,".zip");else for(let o of this.fileExtensions)if(s=U1(n,o),s)break;if(!s)return null;if(i=this.pathUtils.join(i,s),this.isZip.has(i)===!1){if(this.notZip.has(i))continue;try{if(!this.baseFs.lstatSync(i).isFile()){this.notZip.add(i);continue}}catch{return null}this.isZip.add(i)}return{archivePath:i,subPath:this.pathUtils.join(Oe.root,t.substring(i.length))}}}limitOpenFiles(t){if(this.zipInstances===null)return;let i=Date.now(),n=i+this.maxAge,s=t===null?0:this.zipInstances.size-t;for(let[o,{zipFs:a,expiresAt:l,refCount:c}]of this.zipInstances.entries())if(!(c!==0||a.hasOpenFileHandles())){if(i>=l){a.saveAndClose(),this.zipInstances.delete(o),s-=1;continue}else if(t===null||s<=0){n=l;break}a.saveAndClose(),this.zipInstances.delete(o),s-=1}this.limitOpenFilesTimeout===null&&(t===null&&this.zipInstances.size>0||t!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},n-i).unref())}async getZipPromise(t,i){let n=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(t)});if(this.zipInstances){let s=this.zipInstances.get(t);if(!s){let o=await n();s=this.zipInstances.get(t),s||(s={zipFs:new Wr(t,o),expiresAt:0,refCount:0})}this.zipInstances.delete(t),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(t,s),s.expiresAt=Date.now()+this.maxAge,s.refCount+=1;try{return await i(s.zipFs)}finally{s.refCount-=1}}else{let s=new Wr(t,await n());try{return await i(s)}finally{s.saveAndClose()}}}getZipSync(t,i){let n=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(t)});if(this.zipInstances){let s=this.zipInstances.get(t);return s||(s={zipFs:new Wr(t,n()),expiresAt:0,refCount:0}),this.zipInstances.delete(t),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(t,s),s.expiresAt=Date.now()+this.maxAge,i(s.zipFs)}else{let s=new Wr(t,n());try{return i(s)}finally{s.saveAndClose()}}}};var Eg=J("util");var WE=J("url"),H1=J("util");var JE=class extends pi{constructor(t){super(K);this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t=="string")return t;if(t instanceof WE.URL)return(0,WE.fileURLToPath)(t);if(Buffer.isBuffer(t)){let i=t.toString();if(Buffer.byteLength(i)!==t.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return i}throw new Error(`Unsupported path type: ${(0,H1.inspect)(t)}`)}};var G1=J("readline"),Ri=Symbol("kBaseFs"),pa=Symbol("kFd"),IA=Symbol("kClosePromise"),zE=Symbol("kCloseResolve"),VE=Symbol("kCloseReject"),mg=Symbol("kRefs"),Ys=Symbol("kRef"),js=Symbol("kUnref"),sge,oge,age,Age,Np=class{constructor(e,t){this[sge]=1;this[oge]=void 0;this[age]=void 0;this[Age]=void 0;this[Ri]=t,this[pa]=e}get fd(){return this[pa]}async appendFile(e,t){var i;try{this[Ys](this.appendFile);let n=(i=typeof t=="string"?t:t==null?void 0:t.encoding)!=null?i:void 0;return await this[Ri].appendFilePromise(this.fd,e,n?{encoding:n}:void 0)}finally{this[js]()}}async chown(e,t){try{return this[Ys](this.chown),await this[Ri].fchownPromise(this.fd,e,t)}finally{this[js]()}}async chmod(e){try{return this[Ys](this.chmod),await this[Ri].fchmodPromise(this.fd,e)}finally{this[js]()}}createReadStream(e){return this[Ri].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Ri].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,t,i,n){var s,o,a;try{this[Ys](this.read);let l;return Buffer.isBuffer(e)?l=e:(e!=null||(e={}),l=(s=e.buffer)!=null?s:Buffer.alloc(16384),t=e.offset||0,i=(o=e.length)!=null?o:l.byteLength,n=(a=e.position)!=null?a:null),t!=null||(t=0),i!=null||(i=0),i===0?{bytesRead:i,buffer:l}:{bytesRead:await this[Ri].readPromise(this.fd,l,t,i,n),buffer:l}}finally{this[js]()}}async readFile(e){var t;try{this[Ys](this.readFile);let i=(t=typeof e=="string"?e:e==null?void 0:e.encoding)!=null?t:void 0;return await this[Ri].readFilePromise(this.fd,i)}finally{this[js]()}}readLines(e){return(0,G1.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Ys](this.stat),await this[Ri].fstatPromise(this.fd,e)}finally{this[js]()}}async truncate(e){try{return this[Ys](this.truncate),await this[Ri].ftruncatePromise(this.fd,e)}finally{this[js]()}}utimes(e,t){throw new Error("Method not implemented.")}async writeFile(e,t){var i;try{this[Ys](this.writeFile);let n=(i=typeof t=="string"?t:t==null?void 0:t.encoding)!=null?i:void 0;await this[Ri].writeFilePromise(this.fd,e,n)}finally{this[js]()}}async write(...e){try{if(this[Ys](this.write),ArrayBuffer.isView(e[0])){let[t,i,n,s]=e;return{bytesWritten:await this[Ri].writePromise(this.fd,t,i!=null?i:void 0,n!=null?n:void 0,s!=null?s:void 0),buffer:t}}else{let[t,i,n]=e;return{bytesWritten:await this[Ri].writePromise(this.fd,t,i,n),buffer:t}}}finally{this[js]()}}async writev(e,t){try{this[Ys](this.writev);let i=0;if(typeof t<"u")for(let n of e){let s=await this.write(n,void 0,void 0,t);i+=s.bytesWritten,t+=s.bytesWritten}else for(let n of e)i+=(await this.write(n)).bytesWritten;return{buffers:e,bytesWritten:i}}finally{this[js]()}}readv(e,t){throw new Error("Method not implemented.")}close(){if(this[pa]===-1)return Promise.resolve();if(this[IA])return this[IA];if(this[mg]--,this[mg]===0){let e=this[pa];this[pa]=-1,this[IA]=this[Ri].closePromise(e).finally(()=>{this[IA]=void 0})}else this[IA]=new Promise((e,t)=>{this[zE]=e,this[VE]=t}).finally(()=>{this[IA]=void 0,this[VE]=void 0,this[zE]=void 0});return this[IA]}[(Ri,pa,sge=mg,oge=IA,age=zE,Age=VE,Ys)](e){if(this[pa]===-1){let t=new Error("file closed");throw t.code="EBADF",t.syscall=e.name,t}this[mg]++}[js](){if(this[mg]--,this[mg]===0){let e=this[pa];this[pa]=-1,this[Ri].closePromise(e).then(this[zE],this[VE])}}};var lge=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),Y1=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]);function lS(r,e){e=new JE(e);let t=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[Eg.promisify.custom])<"u"&&(s[Eg.promisify.custom]=o[Eg.promisify.custom])};{t(r,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),t(r,"read",(...i)=>{let[n,s,o,a,l,c]=i;if(i.length<=3){let u={};i.length<3?c=i[1]:(u=i[1],c=i[2]),{buffer:s=Buffer.alloc(16384),offset:o=0,length:a=s.byteLength,position:l}=u}if(o==null&&(o=0),a|=0,a===0){process.nextTick(()=>{c(null,0,s)});return}l==null&&(l=-1),process.nextTick(()=>{e.readPromise(n,s,o,a,l).then(u=>{c(null,u,s)},u=>{c(u,0,s)})})});for(let i of Y1){let n=i.replace(/Promise$/,"");if(typeof r[n]>"u")continue;let s=e[i];if(typeof s>"u")continue;t(r,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}r.realpath.native=r.realpath}{t(r,"existsSync",i=>{try{return e.existsSync(i)}catch{return!1}}),t(r,"readSync",(...i)=>{let[n,s,o,a,l]=i;return i.length<=3&&({offset:o=0,length:a=s.byteLength,position:l}=i[2]||{}),o==null&&(o=0),a|=0,a===0?0:(l==null&&(l=-1),e.readSync(n,s,o,a,l))});for(let i of lge){let n=i;if(typeof r[n]>"u")continue;let s=e[i];typeof s>"u"||t(r,n,s.bind(e))}r.realpathSync.native=r.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=r.promises}finally{process.emitWarning=i}if(typeof n<"u"){for(let s of Y1){let o=s.replace(/Promise$/,"");if(typeof n[o]>"u")continue;let a=e[s];typeof a>"u"||s!=="open"&&t(n,o,(l,...c)=>l instanceof Np?l[o].apply(l,c):a.call(e,l,...c))}t(n,"open",async(...s)=>{let o=await e.openPromise(...s);return new Np(o,e)})}}r.read[Eg.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n}),r.write[Eg.promisify.custom]=async(i,n,...s)=>({bytesWritten:await e.writePromise(i,n,...s),buffer:n})}function XE(r,e){let t=Object.create(r);return lS(t,e),t}var J1=Pe(J("os"));function j1(r){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${r}${e}`}var qs=new Set,cS=null;function q1(){if(cS)return cS;let r=K.toPortablePath(J1.default.tmpdir()),e=M.realpathSync(r);return process.once("exit",()=>{M.rmtempSync()}),cS={tmpdir:r,realTmpdir:e}}var M=Object.assign(new $t,{detachTemp(r){qs.delete(r)},mktempSync(r){let{tmpdir:e,realTmpdir:t}=q1();for(;;){let i=j1("xfs-");try{this.mkdirSync(x.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=x.join(t,i);if(qs.add(n),typeof r>"u")return n;try{return r(n)}finally{if(qs.has(n)){qs.delete(n);try{this.removeSync(n)}catch{}}}}},async mktempPromise(r){let{tmpdir:e,realTmpdir:t}=q1();for(;;){let i=j1("xfs-");try{await this.mkdirPromise(x.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=x.join(t,i);if(qs.add(n),typeof r>"u")return n;try{return await r(n)}finally{if(qs.has(n)){qs.delete(n);try{await this.removePromise(n)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(qs.values()).map(async r=>{try{await M.removePromise(r,{maxRetries:0}),qs.delete(r)}catch{}}))},rmtempSync(){for(let r of qs)try{M.removeSync(r),qs.delete(r)}catch{}}});var _D=Pe(IS());var Yp={};ut(Yp,{parseResolution:()=>rI,parseShell:()=>$E,parseSyml:()=>Ii,stringifyArgument:()=>QS,stringifyArgumentSegment:()=>bS,stringifyArithmeticExpression:()=>tI,stringifyCommand:()=>BS,stringifyCommandChain:()=>Bg,stringifyCommandChainThen:()=>wS,stringifyCommandLine:()=>eI,stringifyCommandLineThen:()=>yS,stringifyEnvSegment:()=>ZE,stringifyRedirectArgument:()=>Tp,stringifyResolution:()=>iI,stringifyShell:()=>wg,stringifyShellLine:()=>wg,stringifySyml:()=>Ca,stringifyValueArgument:()=>Kl});var TK=Pe(LK());function $E(r,e={isGlobPattern:()=>!1}){try{return(0,TK.parse)(r,e)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function wg(r,{endSemicolon:e=!1}={}){return r.map(({command:t,type:i},n)=>`${eI(t)}${i===";"?n!==r.length-1||e?";":"":" &"}`).join(" ")}function eI(r){return`${Bg(r.chain)}${r.then?` ${yS(r.then)}`:""}`}function yS(r){return`${r.type} ${eI(r.line)}`}function Bg(r){return`${BS(r)}${r.then?` ${wS(r.then)}`:""}`}function wS(r){return`${r.type} ${Bg(r.chain)}`}function BS(r){switch(r.type){case"command":return`${r.envs.length>0?`${r.envs.map(e=>ZE(e)).join(" ")} `:""}${r.args.map(e=>QS(e)).join(" ")}`;case"subshell":return`(${wg(r.subshell)})${r.args.length>0?` ${r.args.map(e=>Tp(e)).join(" ")}`:""}`;case"group":return`{ ${wg(r.group,{endSemicolon:!0})} }${r.args.length>0?` ${r.args.map(e=>Tp(e)).join(" ")}`:""}`;case"envs":return r.envs.map(e=>ZE(e)).join(" ");default:throw new Error(`Unsupported command type: "${r.type}"`)}}function ZE(r){return`${r.name}=${r.args[0]?Kl(r.args[0]):""}`}function QS(r){switch(r.type){case"redirection":return Tp(r);case"argument":return Kl(r);default:throw new Error(`Unsupported argument type: "${r.type}"`)}}function Tp(r){return`${r.subtype} ${r.args.map(e=>Kl(e)).join(" ")}`}function Kl(r){return r.segments.map(e=>bS(e)).join("")}function bS(r){let e=(i,n)=>n?`"${i}"`:i,t=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(r.type){case"text":return t(r.text);case"glob":return r.pattern;case"shell":return e(`\${${wg(r.shell)}}`,r.quoted);case"variable":return e(typeof r.defaultValue>"u"?typeof r.alternativeValue>"u"?`\${${r.name}}`:r.alternativeValue.length===0?`\${${r.name}:+}`:`\${${r.name}:+${r.alternativeValue.map(i=>Kl(i)).join(" ")}}`:r.defaultValue.length===0?`\${${r.name}:-}`:`\${${r.name}:-${r.defaultValue.map(i=>Kl(i)).join(" ")}}`,r.quoted);case"arithmetic":return`$(( ${tI(r.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${r.type}"`)}}function tI(r){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},t=(n,s)=>s?`( ${n} )`:n,i=n=>t(tI(n),!["number","variable"].includes(n.type));switch(r.type){case"number":return String(r.value);case"variable":return r.name;default:return`${i(r.left)} ${e(r.type)} ${i(r.right)}`}}var KK=Pe(MK());function rI(r){let e=r.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${r}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,KK.parse)(r)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function iI(r){let e="";return r.from&&(e+=r.from.fullName,r.from.description&&(e+=`@${r.from.description}`),e+="/"),e+=r.descriptor.fullName,r.descriptor.description&&(e+=`@${r.descriptor.description}`),e}var pI=Pe(P2()),N2=Pe(k2()),mpe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,R2=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],hI=class{constructor(e){this.data=e}};function F2(r){return r.match(mpe)?r:JSON.stringify(r)}function L2(r){return typeof r>"u"?!0:typeof r=="object"&&r!==null?Object.keys(r).every(e=>L2(r[e])):!1}function MS(r,e,t){if(r===null)return`null +`}function Vl(r,e){return e.replace(/\r?\n/g,Yge(r))}var bg=J("fs"),IS=J("stream"),hU=J("util"),yS=Pe(J("zlib"));var uU=Pe(J("fs"));var $t=class extends xA{constructor(t=uU.default){super();this.realFs=t,typeof this.realFs.lutimes<"u"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Oe.root}resolve(t){return x.resolve(t)}async openPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.open(U.fromPortablePath(t),i,n,this.makeCallback(s,o))})}openSync(t,i,n){return this.realFs.openSync(U.fromPortablePath(t),i,n)}async opendirPromise(t,i){return await new Promise((n,s)=>{typeof i<"u"?this.realFs.opendir(U.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.opendir(U.fromPortablePath(t),this.makeCallback(n,s))}).then(n=>Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0}))}opendirSync(t,i){let n=typeof i<"u"?this.realFs.opendirSync(U.fromPortablePath(t),i):this.realFs.opendirSync(U.fromPortablePath(t));return Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0})}async readPromise(t,i,n=0,s=0,o=-1){return await new Promise((a,l)=>{this.realFs.read(t,i,n,s,o,(c,u)=>{c?l(c):a(u)})})}readSync(t,i,n,s,o){return this.realFs.readSync(t,i,n,s,o)}async writePromise(t,i,n,s,o){return await new Promise((a,l)=>typeof i=="string"?this.realFs.write(t,i,n,this.makeCallback(a,l)):this.realFs.write(t,i,n,s,o,this.makeCallback(a,l)))}writeSync(t,i,n,s,o){return typeof i=="string"?this.realFs.writeSync(t,i,n):this.realFs.writeSync(t,i,n,s,o)}async closePromise(t){await new Promise((i,n)=>{this.realFs.close(t,this.makeCallback(i,n))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,i){let n=t!==null?U.fromPortablePath(t):t;return this.realFs.createReadStream(n,i)}createWriteStream(t,i){let n=t!==null?U.fromPortablePath(t):t;return this.realFs.createWriteStream(n,i)}async realpathPromise(t){return await new Promise((i,n)=>{this.realFs.realpath(U.fromPortablePath(t),{},this.makeCallback(i,n))}).then(i=>U.toPortablePath(i))}realpathSync(t){return U.toPortablePath(this.realFs.realpathSync(U.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(i=>{this.realFs.exists(U.fromPortablePath(t),i)})}accessSync(t,i){return this.realFs.accessSync(U.fromPortablePath(t),i)}async accessPromise(t,i){return await new Promise((n,s)=>{this.realFs.access(U.fromPortablePath(t),i,this.makeCallback(n,s))})}existsSync(t){return this.realFs.existsSync(U.fromPortablePath(t))}async statPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.stat(U.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.stat(U.fromPortablePath(t),this.makeCallback(n,s))})}statSync(t,i){return i?this.realFs.statSync(U.fromPortablePath(t),i):this.realFs.statSync(U.fromPortablePath(t))}async fstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.fstat(t,i,this.makeCallback(n,s)):this.realFs.fstat(t,this.makeCallback(n,s))})}fstatSync(t,i){return i?this.realFs.fstatSync(t,i):this.realFs.fstatSync(t)}async lstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.lstat(U.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.lstat(U.fromPortablePath(t),this.makeCallback(n,s))})}lstatSync(t,i){return i?this.realFs.lstatSync(U.fromPortablePath(t),i):this.realFs.lstatSync(U.fromPortablePath(t))}async fchmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.fchmod(t,i,this.makeCallback(n,s))})}fchmodSync(t,i){return this.realFs.fchmodSync(t,i)}async chmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.chmod(U.fromPortablePath(t),i,this.makeCallback(n,s))})}chmodSync(t,i){return this.realFs.chmodSync(U.fromPortablePath(t),i)}async fchownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.fchown(t,i,n,this.makeCallback(s,o))})}fchownSync(t,i,n){return this.realFs.fchownSync(t,i,n)}async chownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.chown(U.fromPortablePath(t),i,n,this.makeCallback(s,o))})}chownSync(t,i,n){return this.realFs.chownSync(U.fromPortablePath(t),i,n)}async renamePromise(t,i){return await new Promise((n,s)=>{this.realFs.rename(U.fromPortablePath(t),U.fromPortablePath(i),this.makeCallback(n,s))})}renameSync(t,i){return this.realFs.renameSync(U.fromPortablePath(t),U.fromPortablePath(i))}async copyFilePromise(t,i,n=0){return await new Promise((s,o)=>{this.realFs.copyFile(U.fromPortablePath(t),U.fromPortablePath(i),n,this.makeCallback(s,o))})}copyFileSync(t,i,n=0){return this.realFs.copyFileSync(U.fromPortablePath(t),U.fromPortablePath(i),n)}async appendFilePromise(t,i,n){return await new Promise((s,o)=>{let a=typeof t=="string"?U.fromPortablePath(t):t;n?this.realFs.appendFile(a,i,n,this.makeCallback(s,o)):this.realFs.appendFile(a,i,this.makeCallback(s,o))})}appendFileSync(t,i,n){let s=typeof t=="string"?U.fromPortablePath(t):t;n?this.realFs.appendFileSync(s,i,n):this.realFs.appendFileSync(s,i)}async writeFilePromise(t,i,n){return await new Promise((s,o)=>{let a=typeof t=="string"?U.fromPortablePath(t):t;n?this.realFs.writeFile(a,i,n,this.makeCallback(s,o)):this.realFs.writeFile(a,i,this.makeCallback(s,o))})}writeFileSync(t,i,n){let s=typeof t=="string"?U.fromPortablePath(t):t;n?this.realFs.writeFileSync(s,i,n):this.realFs.writeFileSync(s,i)}async unlinkPromise(t){return await new Promise((i,n)=>{this.realFs.unlink(U.fromPortablePath(t),this.makeCallback(i,n))})}unlinkSync(t){return this.realFs.unlinkSync(U.fromPortablePath(t))}async utimesPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.utimes(U.fromPortablePath(t),i,n,this.makeCallback(s,o))})}utimesSync(t,i,n){this.realFs.utimesSync(U.fromPortablePath(t),i,n)}async lutimesPromiseImpl(t,i,n){let s=this.realFs.lutimes;if(typeof s>"u")throw Up("unavailable Node binding",`lutimes '${t}'`);return await new Promise((o,a)=>{s.call(this.realFs,U.fromPortablePath(t),i,n,this.makeCallback(o,a))})}lutimesSyncImpl(t,i,n){let s=this.realFs.lutimesSync;if(typeof s>"u")throw Up("unavailable Node binding",`lutimes '${t}'`);s.call(this.realFs,U.fromPortablePath(t),i,n)}async mkdirPromise(t,i){return await new Promise((n,s)=>{this.realFs.mkdir(U.fromPortablePath(t),i,this.makeCallback(n,s))})}mkdirSync(t,i){return this.realFs.mkdirSync(U.fromPortablePath(t),i)}async rmdirPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.rmdir(U.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.rmdir(U.fromPortablePath(t),this.makeCallback(n,s))})}rmdirSync(t,i){return this.realFs.rmdirSync(U.fromPortablePath(t),i)}async linkPromise(t,i){return await new Promise((n,s)=>{this.realFs.link(U.fromPortablePath(t),U.fromPortablePath(i),this.makeCallback(n,s))})}linkSync(t,i){return this.realFs.linkSync(U.fromPortablePath(t),U.fromPortablePath(i))}async symlinkPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.symlink(U.fromPortablePath(t.replace(/\/+$/,"")),U.fromPortablePath(i),n,this.makeCallback(s,o))})}symlinkSync(t,i,n){return this.realFs.symlinkSync(U.fromPortablePath(t.replace(/\/+$/,"")),U.fromPortablePath(i),n)}async readFilePromise(t,i){return await new Promise((n,s)=>{let o=typeof t=="string"?U.fromPortablePath(t):t;this.realFs.readFile(o,i,this.makeCallback(n,s))})}readFileSync(t,i){let n=typeof t=="string"?U.fromPortablePath(t):t;return this.realFs.readFileSync(n,i)}async readdirPromise(t,i){return await new Promise((n,s)=>{i!=null&&i.withFileTypes?this.realFs.readdir(U.fromPortablePath(t),{withFileTypes:!0},this.makeCallback(n,s)):this.realFs.readdir(U.fromPortablePath(t),this.makeCallback(o=>n(o),s))})}readdirSync(t,i){return i!=null&&i.withFileTypes?this.realFs.readdirSync(U.fromPortablePath(t),{withFileTypes:!0}):this.realFs.readdirSync(U.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((i,n)=>{this.realFs.readlink(U.fromPortablePath(t),this.makeCallback(i,n))}).then(i=>U.toPortablePath(i))}readlinkSync(t){return U.toPortablePath(this.realFs.readlinkSync(U.fromPortablePath(t)))}async truncatePromise(t,i){return await new Promise((n,s)=>{this.realFs.truncate(U.fromPortablePath(t),i,this.makeCallback(n,s))})}truncateSync(t,i){return this.realFs.truncateSync(U.fromPortablePath(t),i)}async ftruncatePromise(t,i){return await new Promise((n,s)=>{this.realFs.ftruncate(t,i,this.makeCallback(n,s))})}ftruncateSync(t,i){return this.realFs.ftruncateSync(t,i)}watch(t,i,n){return this.realFs.watch(U.fromPortablePath(t),i,n)}watchFile(t,i,n){return this.realFs.watchFile(U.fromPortablePath(t),i,n)}unwatchFile(t,i){return this.realFs.unwatchFile(U.fromPortablePath(t),i)}makeCallback(t,i){return(n,s)=>{n?i(n):t(s)}}};var fU=J("events");function gU(r,e){if(r!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${r}'`)}var Qg=class extends fU.EventEmitter{constructor(t,i,{bigint:n=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=t,this.path=i,this.bigint=n,this.lastStats=this.stat()}static create(t,i,n){let s=new Qg(t,i,n);return s.start(),s}start(){gU(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){gU(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let i=this.bigint?new Bg:new Ea;return WE(i)}}makeInterval(t){let i=setInterval(()=>{let n=this.stat(),s=this.lastStats;gS(n,s)||(this.lastStats=n,this.emit("change",n,s))},t.interval);return t.persistent?i:i.unref()}registerChangeListener(t,i){this.addListener("change",t),this.changeListeners.set(t,this.makeInterval(i))}unregisterChangeListener(t){this.removeListener("change",t);let i=this.changeListeners.get(t);typeof i<"u"&&clearInterval(i),this.changeListeners.delete(t)}unregisterAllChangeListeners(){for(let t of this.changeListeners.keys())this.unregisterChangeListener(t)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let t of this.changeListeners.values())t.ref();return this}unref(){for(let t of this.changeListeners.values())t.unref();return this}};var rI=new WeakMap;function iI(r,e,t,i){let n,s,o,a;switch(typeof t){case"function":n=!1,s=!0,o=5007,a=t;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=t),a=i;break}let l=rI.get(r);typeof l>"u"&&rI.set(r,l=new Map);let c=l.get(e);return typeof c>"u"&&(c=Qg.create(r,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function Gp(r,e,t){let i=rI.get(r);if(typeof i>"u")return;let n=i.get(e);typeof n>"u"||(typeof t>"u"?n.unregisterAllChangeListeners():n.unregisterChangeListener(t),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function Yp(r){let e=rI.get(r);if(!(typeof e>"u"))for(let t of e.keys())Gp(r,t)}var Xl="mixed";function jge(r){if(typeof r=="string"&&String(+r)===r)return+r;if(typeof r=="number"&&Number.isFinite(r))return r<0?Date.now()/1e3:r;if(hU.types.isDate(r))return r.getTime()/1e3;throw new Error("Invalid time")}function ES(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Wr=class extends xA{constructor(t,i){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=i.libzip;let n=i;if(this.level=typeof n.level<"u"?n.level:Xl,t!=null||(t=ES()),typeof t=="string"){let{baseFs:a=new $t}=n;this.baseFs=a,this.path=t}else this.path=null,this.baseFs=null;if(i.stats)this.stats=i.stats;else if(typeof t=="string")try{this.stats=this.baseFs.statSync(t)}catch(a){if(a.code==="ENOENT"&&n.create)this.stats=Tp();else throw a}else this.stats=Tp();let s=this.libzip.malloc(4);try{let a=0;if(typeof t=="string"&&n.create&&(a|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),i.readOnly&&(a|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof t=="string")this.zip=this.libzip.open(U.fromPortablePath(t),a,s);else{let l=this.allocateUnattachedSource(t);try{this.zip=this.libzip.openFromSource(l,a,s),this.lzSource=l}catch(c){throw this.libzip.source.free(l),c}}if(this.zip===0){let l=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(l,this.libzip.getValue(s,"i32")),this.makeLibzipError(l)}}finally{this.libzip.free(s)}this.listings.set(Oe.root,new Set);let o=this.libzip.getNumEntries(this.zip,0);for(let a=0;at)throw new Error("Overread");let s=this.libzip.HEAPU8.subarray(i,i+t);return Buffer.from(s)}finally{this.libzip.free(i)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw $E("archive closed, close");Yp(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let t=this.baseFs.existsSync(this.path)||this.stats.mode===Lp?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,ES(),{mode:t});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof t<"u"&&this.baseFs.chmodSync(this.path,t)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(t){return x.resolve(Oe.root,t)}async openPromise(t,i,n){return this.openSync(t,i,n)}openSync(t,i,n){let s=this.nextFd++;return this.fds.set(s,{cursor:0,p:t}),s}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(t,i){return this.opendirSync(t,i)}opendirSync(t,i={}){let n=this.resolveFilename(`opendir '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Js(`opendir '${t}'`);let s=this.listings.get(n);if(!s)throw Qo(`opendir '${t}'`);let o=[...s],a=this.openSync(n,"r");return tI(this,n,o,{onClose:()=>{this.closeSync(a)}})}async readPromise(t,i,n,s,o){return this.readSync(t,i,n,s,o)}readSync(t,i,n=0,s=i.byteLength,o=-1){let a=this.fds.get(t);if(typeof a>"u")throw Hr("read");let l=o===-1||o===null?a.cursor:o,c=this.readFileSync(a.p);c.copy(i,n,l,l+s);let u=Math.max(0,Math.min(c.length-l,s));return(o===-1||o===null)&&(a.cursor+=u),u}async writePromise(t,i,n,s,o){return typeof i=="string"?this.writeSync(t,i,o):this.writeSync(t,i,n,s,o)}writeSync(t,i,n,s,o){throw typeof this.fds.get(t)>"u"?Hr("read"):new Error("Unimplemented")}async closePromise(t){return this.closeSync(t)}closeSync(t){if(typeof this.fds.get(t)>"u")throw Hr("read");this.fds.delete(t)}createReadStream(t,{encoding:i}={}){if(t===null)throw new Error("Unimplemented");let n=this.openSync(t,"r"),s=Object.assign(new IS.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(a,l)=>{clearImmediate(o),this.closeSync(n),l(a)}}),{close(){s.destroy()},bytesRead:0,path:t}),o=setImmediate(async()=>{try{let a=await this.readFilePromise(t,i);s.bytesRead=a.length,s.end(a)}catch(a){s.destroy(a)}});return s}createWriteStream(t,{encoding:i}={}){if(this.readOnly)throw cn(`open '${t}'`);if(t===null)throw new Error("Unimplemented");let n=[],s=this.openSync(t,"w"),o=Object.assign(new IS.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(a,l)=>{try{a?l(a):(this.writeFileSync(t,Buffer.concat(n),i),l(null))}catch(c){l(c)}finally{this.closeSync(s)}}}),{bytesWritten:0,path:t,close(){o.destroy()}});return o.on("data",a=>{let l=Buffer.from(a);o.bytesWritten+=l.length,n.push(l)}),o}async realpathPromise(t){return this.realpathSync(t)}realpathSync(t){let i=this.resolveFilename(`lstat '${t}'`,t);if(!this.entries.has(i)&&!this.listings.has(i))throw Js(`lstat '${t}'`);return i}async existsPromise(t){return this.existsSync(t)}existsSync(t){if(!this.ready)throw $E(`archive closed, existsSync '${t}'`);if(this.symlinkCount===0){let n=x.resolve(Oe.root,t);return this.entries.has(n)||this.listings.has(n)}let i;try{i=this.resolveFilename(`stat '${t}'`,t,void 0,!1)}catch{return!1}return i===void 0?!1:this.entries.has(i)||this.listings.has(i)}async accessPromise(t,i){return this.accessSync(t,i)}accessSync(t,i=bg.constants.F_OK){let n=this.resolveFilename(`access '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Js(`access '${t}'`);if(this.readOnly&&i&bg.constants.W_OK)throw cn(`access '${t}'`)}async statPromise(t,i={bigint:!1}){return i.bigint?this.statSync(t,{bigint:!0}):this.statSync(t)}statSync(t,i={bigint:!1,throwIfNoEntry:!0}){let n=this.resolveFilename(`stat '${t}'`,t,void 0,i.throwIfNoEntry);if(n!==void 0){if(!this.entries.has(n)&&!this.listings.has(n)){if(i.throwIfNoEntry===!1)return;throw Js(`stat '${t}'`)}if(t[t.length-1]==="/"&&!this.listings.has(n))throw Qo(`stat '${t}'`);return this.statImpl(`stat '${t}'`,n,i)}}async fstatPromise(t,i){return this.fstatSync(t,i)}fstatSync(t,i){let n=this.fds.get(t);if(typeof n>"u")throw Hr("fstatSync");let{p:s}=n,o=this.resolveFilename(`stat '${s}'`,s);if(!this.entries.has(o)&&!this.listings.has(o))throw Js(`stat '${s}'`);if(s[s.length-1]==="/"&&!this.listings.has(o))throw Qo(`stat '${s}'`);return this.statImpl(`fstat '${s}'`,o,i)}async lstatPromise(t,i={bigint:!1}){return i.bigint?this.lstatSync(t,{bigint:!0}):this.lstatSync(t)}lstatSync(t,i={bigint:!1,throwIfNoEntry:!0}){let n=this.resolveFilename(`lstat '${t}'`,t,!1,i.throwIfNoEntry);if(n!==void 0){if(!this.entries.has(n)&&!this.listings.has(n)){if(i.throwIfNoEntry===!1)return;throw Js(`lstat '${t}'`)}if(t[t.length-1]==="/"&&!this.listings.has(n))throw Qo(`lstat '${t}'`);return this.statImpl(`lstat '${t}'`,n,i)}}statImpl(t,i,n={}){let s=this.entries.get(i);if(typeof s<"u"){let o=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,s,0,0,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let l=this.stats.uid,c=this.stats.gid,u=this.libzip.struct.statSize(o)>>>0,g=512,f=Math.ceil(u/g),h=(this.libzip.struct.statMtime(o)>>>0)*1e3,p=h,C=h,y=h,B=new Date(p),v=new Date(C),D=new Date(y),L=new Date(h),H=this.listings.has(i)?16384:this.isSymbolicLink(s)?40960:32768,j=H===16384?493:420,$=H|this.getUnixMode(s,j)&511,V=this.libzip.struct.statCrc(o),W=Object.assign(new Ea,{uid:l,gid:c,size:u,blksize:g,blocks:f,atime:B,birthtime:v,ctime:D,mtime:L,atimeMs:p,birthtimeMs:C,ctimeMs:y,mtimeMs:h,mode:$,crc:V});return n.bigint===!0?zE(W):W}if(this.listings.has(i)){let o=this.stats.uid,a=this.stats.gid,l=0,c=512,u=0,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=this.stats.mtimeMs,C=new Date(g),y=new Date(f),B=new Date(h),v=new Date(p),D=16877,L=0,H=Object.assign(new Ea,{uid:o,gid:a,size:l,blksize:c,blocks:u,atime:C,birthtime:y,ctime:B,mtime:v,atimeMs:g,birthtimeMs:f,ctimeMs:h,mtimeMs:p,mode:D,crc:L});return n.bigint===!0?zE(H):H}throw new Error("Unreachable")}getUnixMode(t,i){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?i:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(t){let i=this.listings.get(t);if(i)return i;this.registerListing(x.dirname(t)).add(x.basename(t));let s=new Set;return this.listings.set(t,s),s}registerEntry(t,i){this.registerListing(x.dirname(t)).add(x.basename(t)),this.entries.set(t,i)}unregisterListing(t){this.listings.delete(t);let i=this.listings.get(x.dirname(t));i==null||i.delete(x.basename(t))}unregisterEntry(t){this.unregisterListing(t);let i=this.entries.get(t);this.entries.delete(t),!(typeof i>"u")&&(this.fileSources.delete(i),this.isSymbolicLink(i)&&this.symlinkCount--)}deleteEntry(t,i){if(this.unregisterEntry(t),this.libzip.delete(this.zip,i)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(t,i,n=!0,s=!0){if(!this.ready)throw $E(`archive closed, ${t}`);let o=x.resolve(Oe.root,i);if(o==="/")return Oe.root;let a=this.entries.get(o);if(n&&a!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(a)){let l=this.getFileSource(a).toString();return this.resolveFilename(t,x.resolve(x.dirname(o),l),!0,s)}else return o;for(;;){let l=this.resolveFilename(t,x.dirname(o),!0,s);if(l===void 0)return l;let c=this.listings.has(l),u=this.entries.has(l);if(!c&&!u){if(s===!1)return;throw Js(t)}if(!c)throw Qo(t);if(o=x.resolve(l,x.basename(o)),!n||this.symlinkCount===0)break;let g=this.libzip.name.locate(this.zip,o.slice(1),0);if(g===-1)break;if(this.isSymbolicLink(g)){let f=this.getFileSource(g).toString();o=x.resolve(x.dirname(o),f)}else break}return o}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let i=this.libzip.malloc(t.byteLength);if(!i)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,i,t.byteLength).set(t),{buffer:i,byteLength:t.byteLength}}allocateUnattachedSource(t){let i=this.libzip.struct.errorS(),{buffer:n,byteLength:s}=this.allocateBuffer(t),o=this.libzip.source.fromUnattachedBuffer(n,s,0,1,i);if(o===0)throw this.libzip.free(i),this.makeLibzipError(i);return o}allocateSource(t){let{buffer:i,byteLength:n}=this.allocateBuffer(t),s=this.libzip.source.fromBuffer(this.zip,i,n,0,1);if(s===0)throw this.libzip.free(i),this.makeLibzipError(this.libzip.getError(this.zip));return s}setFileSource(t,i){let n=Buffer.isBuffer(i)?i:Buffer.from(i),s=x.relative(Oe.root,t),o=this.allocateSource(i);try{let a=this.libzip.file.add(this.zip,s,o,this.libzip.ZIP_FL_OVERWRITE);if(a===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let l=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,a,0,l,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(a,n),a}catch(a){throw this.libzip.source.free(o),a}}isSymbolicLink(t){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&61440)===40960}getFileSource(t,i={asyncDecompress:!1}){let n=this.fileSources.get(t);if(typeof n<"u")return n;let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(s),l=this.libzip.struct.statCompMethod(s),c=this.libzip.malloc(a);try{let u=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(u===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let g=this.libzip.fread(u,c,a,0);if(g===-1)throw this.makeLibzipError(this.libzip.file.getError(u));if(ga)throw new Error("Overread");let f=this.libzip.HEAPU8.subarray(c,c+a),h=Buffer.from(f);if(l===0)return this.fileSources.set(t,h),h;if(i.asyncDecompress)return new Promise((p,C)=>{yS.default.inflateRaw(h,(y,B)=>{y?C(y):(this.fileSources.set(t,B),p(B))})});{let p=yS.default.inflateRawSync(h);return this.fileSources.set(t,p),p}}finally{this.libzip.fclose(u)}}finally{this.libzip.free(c)}}async fchmodPromise(t,i){return this.chmodPromise(this.fdToPath(t,"fchmod"),i)}fchmodSync(t,i){return this.chmodSync(this.fdToPath(t,"fchmodSync"),i)}async chmodPromise(t,i){return this.chmodSync(t,i)}chmodSync(t,i){if(this.readOnly)throw cn(`chmod '${t}'`);i&=493;let n=this.resolveFilename(`chmod '${t}'`,t,!1),s=this.entries.get(n);if(typeof s>"u")throw new Error(`Assertion failed: The entry should have been registered (${n})`);let a=this.getUnixMode(s,32768)&-512|i;if(this.libzip.file.setExternalAttributes(this.zip,s,0,0,this.libzip.ZIP_OPSYS_UNIX,a<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(t,i,n){return this.chownPromise(this.fdToPath(t,"fchown"),i,n)}fchownSync(t,i,n){return this.chownSync(this.fdToPath(t,"fchownSync"),i,n)}async chownPromise(t,i,n){return this.chownSync(t,i,n)}chownSync(t,i,n){throw new Error("Unimplemented")}async renamePromise(t,i){return this.renameSync(t,i)}renameSync(t,i){throw new Error("Unimplemented")}async copyFilePromise(t,i,n){let{indexSource:s,indexDest:o,resolvedDestP:a}=this.prepareCopyFile(t,i,n),l=await this.getFileSource(s,{asyncDecompress:!0}),c=this.setFileSource(a,l);c!==o&&this.registerEntry(a,c)}copyFileSync(t,i,n=0){let{indexSource:s,indexDest:o,resolvedDestP:a}=this.prepareCopyFile(t,i,n),l=this.getFileSource(s),c=this.setFileSource(a,l);c!==o&&this.registerEntry(a,c)}prepareCopyFile(t,i,n=0){if(this.readOnly)throw cn(`copyfile '${t} -> '${i}'`);if((n&bg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Up("unsupported clone operation",`copyfile '${t}' -> ${i}'`);let s=this.resolveFilename(`copyfile '${t} -> ${i}'`,t),o=this.entries.get(s);if(typeof o>"u")throw vA(`copyfile '${t}' -> '${i}'`);let a=this.resolveFilename(`copyfile '${t}' -> ${i}'`,i),l=this.entries.get(a);if((n&(bg.constants.COPYFILE_EXCL|bg.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof l<"u")throw eI(`copyfile '${t}' -> '${i}'`);return{indexSource:o,resolvedDestP:a,indexDest:l}}async appendFilePromise(t,i,n){if(this.readOnly)throw cn(`open '${t}'`);return typeof n>"u"?n={flag:"a"}:typeof n=="string"?n={flag:"a",encoding:n}:typeof n.flag>"u"&&(n={flag:"a",...n}),this.writeFilePromise(t,i,n)}appendFileSync(t,i,n={}){if(this.readOnly)throw cn(`open '${t}'`);return typeof n>"u"?n={flag:"a"}:typeof n=="string"?n={flag:"a",encoding:n}:typeof n.flag>"u"&&(n={flag:"a",...n}),this.writeFileSync(t,i,n)}fdToPath(t,i){var s;let n=(s=this.fds.get(t))==null?void 0:s.p;if(typeof n>"u")throw Hr(i);return n}async writeFilePromise(t,i,n){let{encoding:s,mode:o,index:a,resolvedP:l}=this.prepareWriteFile(t,n);a!==void 0&&typeof n=="object"&&n.flag&&n.flag.includes("a")&&(i=Buffer.concat([await this.getFileSource(a,{asyncDecompress:!0}),Buffer.from(i)])),s!==null&&(i=i.toString(s));let c=this.setFileSource(l,i);c!==a&&this.registerEntry(l,c),o!==null&&await this.chmodPromise(l,o)}writeFileSync(t,i,n){let{encoding:s,mode:o,index:a,resolvedP:l}=this.prepareWriteFile(t,n);a!==void 0&&typeof n=="object"&&n.flag&&n.flag.includes("a")&&(i=Buffer.concat([this.getFileSource(a),Buffer.from(i)])),s!==null&&(i=i.toString(s));let c=this.setFileSource(l,i);c!==a&&this.registerEntry(l,c),o!==null&&this.chmodSync(l,o)}prepareWriteFile(t,i){if(typeof t=="number"&&(t=this.fdToPath(t,"read")),this.readOnly)throw cn(`open '${t}'`);let n=this.resolveFilename(`open '${t}'`,t);if(this.listings.has(n))throw Kp(`open '${t}'`);let s=null,o=null;typeof i=="string"?s=i:typeof i=="object"&&({encoding:s=null,mode:o=null}=i);let a=this.entries.get(n);return{encoding:s,mode:o,resolvedP:n,index:a}}async unlinkPromise(t){return this.unlinkSync(t)}unlinkSync(t){if(this.readOnly)throw cn(`unlink '${t}'`);let i=this.resolveFilename(`unlink '${t}'`,t);if(this.listings.has(i))throw Kp(`unlink '${t}'`);let n=this.entries.get(i);if(typeof n>"u")throw vA(`unlink '${t}'`);this.deleteEntry(i,n)}async utimesPromise(t,i,n){return this.utimesSync(t,i,n)}utimesSync(t,i,n){if(this.readOnly)throw cn(`utimes '${t}'`);let s=this.resolveFilename(`utimes '${t}'`,t);this.utimesImpl(s,n)}async lutimesPromise(t,i,n){return this.lutimesSync(t,i,n)}lutimesSync(t,i,n){if(this.readOnly)throw cn(`lutimes '${t}'`);let s=this.resolveFilename(`utimes '${t}'`,t,!1);this.utimesImpl(s,n)}utimesImpl(t,i){this.listings.has(t)&&(this.entries.has(t)||this.hydrateDirectory(t));let n=this.entries.get(t);if(n===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,n,0,jge(i),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(t,i){return this.mkdirSync(t,i)}mkdirSync(t,{mode:i=493,recursive:n=!1}={}){if(n)return this.mkdirpSync(t,{chmod:i});if(this.readOnly)throw cn(`mkdir '${t}'`);let s=this.resolveFilename(`mkdir '${t}'`,t);if(this.entries.has(s)||this.listings.has(s))throw eI(`mkdir '${t}'`);this.hydrateDirectory(s),this.chmodSync(s,i)}async rmdirPromise(t,i){return this.rmdirSync(t,i)}rmdirSync(t,{recursive:i=!1}={}){if(this.readOnly)throw cn(`rmdir '${t}'`);if(i){this.removeSync(t);return}let n=this.resolveFilename(`rmdir '${t}'`,t),s=this.listings.get(n);if(!s)throw Qo(`rmdir '${t}'`);if(s.size>0)throw aU(`rmdir '${t}'`);let o=this.entries.get(n);if(typeof o>"u")throw vA(`rmdir '${t}'`);this.deleteEntry(t,o)}hydrateDirectory(t){let i=this.libzip.dir.add(this.zip,x.relative(Oe.root,t));if(i===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(t),this.registerEntry(t,i),i}async linkPromise(t,i){return this.linkSync(t,i)}linkSync(t,i){throw AU(`link '${t}' -> '${i}'`)}async symlinkPromise(t,i){return this.symlinkSync(t,i)}symlinkSync(t,i){if(this.readOnly)throw cn(`symlink '${t}' -> '${i}'`);let n=this.resolveFilename(`symlink '${t}' -> '${i}'`,i);if(this.listings.has(n))throw Kp(`symlink '${t}' -> '${i}'`);if(this.entries.has(n))throw eI(`symlink '${t}' -> '${i}'`);let s=this.setFileSource(n,t);if(this.registerEntry(n,s),this.libzip.file.setExternalAttributes(this.zip,s,0,0,this.libzip.ZIP_OPSYS_UNIX,41471<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(t,i){typeof i=="object"&&(i=i?i.encoding:void 0);let n=await this.readFileBuffer(t,{asyncDecompress:!0});return i?n.toString(i):n}readFileSync(t,i){typeof i=="object"&&(i=i?i.encoding:void 0);let n=this.readFileBuffer(t);return i?n.toString(i):n}readFileBuffer(t,i={asyncDecompress:!1}){typeof t=="number"&&(t=this.fdToPath(t,"read"));let n=this.resolveFilename(`open '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Js(`open '${t}'`);if(t[t.length-1]==="/"&&!this.listings.has(n))throw Qo(`open '${t}'`);if(this.listings.has(n))throw Kp("read");let s=this.entries.get(n);if(s===void 0)throw new Error("Unreachable");return this.getFileSource(s,i)}async readdirPromise(t,i){return this.readdirSync(t,i)}readdirSync(t,i){let n=this.resolveFilename(`scandir '${t}'`,t);if(!this.entries.has(n)&&!this.listings.has(n))throw Js(`scandir '${t}'`);let s=this.listings.get(n);if(!s)throw Qo(`scandir '${t}'`);let o=[...s];return i!=null&&i.withFileTypes?o.map(a=>Object.assign(this.statImpl("lstat",x.join(t,a)),{name:a})):o}async readlinkPromise(t){let i=this.prepareReadlink(t);return(await this.getFileSource(i,{asyncDecompress:!0})).toString()}readlinkSync(t){let i=this.prepareReadlink(t);return this.getFileSource(i).toString()}prepareReadlink(t){let i=this.resolveFilename(`readlink '${t}'`,t,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw Js(`readlink '${t}'`);if(t[t.length-1]==="/"&&!this.listings.has(i))throw Qo(`open '${t}'`);if(this.listings.has(i))throw vA(`readlink '${t}'`);let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(n))throw vA(`readlink '${t}'`);return n}async truncatePromise(t,i=0){let n=this.resolveFilename(`open '${t}'`,t),s=this.entries.get(n);if(typeof s>"u")throw vA(`open '${t}'`);let o=await this.getFileSource(s,{asyncDecompress:!0}),a=Buffer.alloc(i,0);return o.copy(a),await this.writeFilePromise(t,a)}truncateSync(t,i=0){let n=this.resolveFilename(`open '${t}'`,t),s=this.entries.get(n);if(typeof s>"u")throw vA(`open '${t}'`);let o=this.getFileSource(s),a=Buffer.alloc(i,0);return o.copy(a),this.writeFileSync(t,a)}async ftruncatePromise(t,i){return this.truncatePromise(this.fdToPath(t,"ftruncate"),i)}ftruncateSync(t,i){return this.truncateSync(this.fdToPath(t,"ftruncateSync"),i)}watch(t,i,n){let s;switch(typeof i){case"function":case"string":case"undefined":s=!0;break;default:({persistent:s=!0}=i);break}if(!s)return{on:()=>{},close:()=>{}};let o=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(o)}}}watchFile(t,i,n){let s=x.resolve(Oe.root,t);return iI(this,s,i,n)}unwatchFile(t,i){let n=x.resolve(Oe.root,t);return Gp(this,n,i)}};var pi=class extends Ia{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,t,i){return this.baseFs.openPromise(this.mapToBase(e),t,i)}openSync(e,t,i){return this.baseFs.openSync(this.mapToBase(e),t,i)}async opendirPromise(e,t){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),t),{path:e})}opendirSync(e,t){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),t),{path:e})}async readPromise(e,t,i,n,s){return await this.baseFs.readPromise(e,t,i,n,s)}readSync(e,t,i,n,s){return this.baseFs.readSync(e,t,i,n,s)}async writePromise(e,t,i,n,s){return typeof t=="string"?await this.baseFs.writePromise(e,t,i):await this.baseFs.writePromise(e,t,i,n,s)}writeSync(e,t,i,n,s){return typeof t=="string"?this.baseFs.writeSync(e,t,i):this.baseFs.writeSync(e,t,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,t){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,t)}createWriteStream(e,t){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,t)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}async accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}async statPromise(e,t){return this.baseFs.statPromise(this.mapToBase(e),t)}statSync(e,t){return this.baseFs.statSync(this.mapToBase(e),t)}async fstatPromise(e,t){return this.baseFs.fstatPromise(e,t)}fstatSync(e,t){return this.baseFs.fstatSync(e,t)}lstatPromise(e,t){return this.baseFs.lstatPromise(this.mapToBase(e),t)}lstatSync(e,t){return this.baseFs.lstatSync(this.mapToBase(e),t)}async fchmodPromise(e,t){return this.baseFs.fchmodPromise(e,t)}fchmodSync(e,t){return this.baseFs.fchmodSync(e,t)}async chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}async fchownPromise(e,t,i){return this.baseFs.fchownPromise(e,t,i)}fchownSync(e,t,i){return this.baseFs.fchownSync(e,t,i)}async chownPromise(e,t,i){return this.baseFs.chownPromise(this.mapToBase(e),t,i)}chownSync(e,t,i){return this.baseFs.chownSync(this.mapToBase(e),t,i)}async renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(t))}renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(t))}async copyFilePromise(e,t,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(t),i)}copyFileSync(e,t,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(t),i)}async appendFilePromise(e,t,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),t,i)}appendFileSync(e,t,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),t,i)}async writeFilePromise(e,t,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),t,i)}writeFileSync(e,t,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),t,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,t,i){return this.baseFs.utimesPromise(this.mapToBase(e),t,i)}utimesSync(e,t,i){return this.baseFs.utimesSync(this.mapToBase(e),t,i)}async mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}async rmdirPromise(e,t){return this.baseFs.rmdirPromise(this.mapToBase(e),t)}rmdirSync(e,t){return this.baseFs.rmdirSync(this.mapToBase(e),t)}async linkPromise(e,t){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(t))}linkSync(e,t){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(t))}async symlinkPromise(e,t,i){let n=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,t,i){let n=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,t){return t==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),t):this.baseFs.readFilePromise(this.fsMapToBase(e),t)}readFileSync(e,t){return t==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),t):this.baseFs.readFileSync(this.fsMapToBase(e),t)}async readdirPromise(e,t){return this.baseFs.readdirPromise(this.mapToBase(e),t)}readdirSync(e,t){return this.baseFs.readdirSync(this.mapToBase(e),t)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,t){return this.baseFs.truncatePromise(this.mapToBase(e),t)}truncateSync(e,t){return this.baseFs.truncateSync(this.mapToBase(e),t)}async ftruncatePromise(e,t){return this.baseFs.ftruncatePromise(e,t)}ftruncateSync(e,t){return this.baseFs.ftruncateSync(e,t)}watch(e,t,i){return this.baseFs.watch(this.mapToBase(e),t,i)}watchFile(e,t,i){return this.baseFs.watchFile(this.mapToBase(e),t,i)}unwatchFile(e,t){return this.baseFs.unwatchFile(this.mapToBase(e),t)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var bo=class extends pi{constructor(t,{baseFs:i,pathUtils:n}){super(n);this.target=t,this.baseFs=i}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}};var qt=class extends pi{constructor(t,{baseFs:i=new $t}={}){super(x);this.target=this.pathUtils.normalize(t),this.baseFs=i}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?x.normalize(t):this.baseFs.resolve(x.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}};var pU=Oe.root,So=class extends pi{constructor(t,{baseFs:i=new $t}={}){super(x);this.target=this.pathUtils.resolve(Oe.root,t),this.baseFs=i}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Oe.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let i=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(pU,t));if(i.match(/^\.\.\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(pU,this.pathUtils.relative(this.target,t))}};var Sg=class extends pi{constructor(t,i){super(i);this.instance=null;this.factory=t}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(t){this.instance=t}mapFromBase(t){return t}mapToBase(t){return t}};var Ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),wS=class extends Ia{constructor(){super(x)}getExtractHint(){throw Ze()}getRealPath(){throw Ze()}resolve(){throw Ze()}async openPromise(){throw Ze()}openSync(){throw Ze()}async opendirPromise(){throw Ze()}opendirSync(){throw Ze()}async readPromise(){throw Ze()}readSync(){throw Ze()}async writePromise(){throw Ze()}writeSync(){throw Ze()}async closePromise(){throw Ze()}closeSync(){throw Ze()}createWriteStream(){throw Ze()}createReadStream(){throw Ze()}async realpathPromise(){throw Ze()}realpathSync(){throw Ze()}async readdirPromise(){throw Ze()}readdirSync(){throw Ze()}async existsPromise(e){throw Ze()}existsSync(e){throw Ze()}async accessPromise(){throw Ze()}accessSync(){throw Ze()}async statPromise(){throw Ze()}statSync(){throw Ze()}async fstatPromise(e){throw Ze()}fstatSync(e){throw Ze()}async lstatPromise(e){throw Ze()}lstatSync(e){throw Ze()}async fchmodPromise(){throw Ze()}fchmodSync(){throw Ze()}async chmodPromise(){throw Ze()}chmodSync(){throw Ze()}async fchownPromise(){throw Ze()}fchownSync(){throw Ze()}async chownPromise(){throw Ze()}chownSync(){throw Ze()}async mkdirPromise(){throw Ze()}mkdirSync(){throw Ze()}async rmdirPromise(){throw Ze()}rmdirSync(){throw Ze()}async linkPromise(){throw Ze()}linkSync(){throw Ze()}async symlinkPromise(){throw Ze()}symlinkSync(){throw Ze()}async renamePromise(){throw Ze()}renameSync(){throw Ze()}async copyFilePromise(){throw Ze()}copyFileSync(){throw Ze()}async appendFilePromise(){throw Ze()}appendFileSync(){throw Ze()}async writeFilePromise(){throw Ze()}writeFileSync(){throw Ze()}async unlinkPromise(){throw Ze()}unlinkSync(){throw Ze()}async utimesPromise(){throw Ze()}utimesSync(){throw Ze()}async readFilePromise(){throw Ze()}readFileSync(){throw Ze()}async readlinkPromise(){throw Ze()}readlinkSync(){throw Ze()}async truncatePromise(){throw Ze()}truncateSync(){throw Ze()}async ftruncatePromise(e,t){throw Ze()}ftruncateSync(e,t){throw Ze()}watch(){throw Ze()}watchFile(){throw Ze()}unwatchFile(){throw Ze()}},jp=wS;jp.instance=new wS;var vg=class extends pi{constructor(t){super(U);this.baseFs=t}mapFromBase(t){return U.fromPortablePath(t)}mapToBase(t){return U.toPortablePath(t)}};var qge=/^[0-9]+$/,BS=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,Jge=/^([^/]+-)?[a-f0-9]+$/,Br=class extends pi{constructor({baseFs:t=new $t}={}){super(x);this.baseFs=t}static makeVirtualPath(t,i,n){if(x.basename(t)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!x.basename(i).match(Jge))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let o=x.relative(x.dirname(t),n).split("/"),a=0;for(;a{let t=r.indexOf(e);if(t<=0)return null;let i=t;for(;t>=0&&(i=t+e.length,r[i]!==x.sep);){if(r[t-1]===x.sep)return null;t=r.indexOf(e,i)}return r.length>i&&r[i]!==x.sep?null:r.slice(0,i)},Mn=class extends xA{constructor({libzip:t,baseFs:i=new $t,filter:n=null,maxOpenFiles:s=1/0,readOnlyArchives:o=!1,useCache:a=!0,maxAge:l=5e3,fileExtensions:c=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof t!="function"?()=>t:t,this.baseFs=i,this.zipInstances=a?new Map:null,this.filter=n,this.maxOpenFiles=s,this.readOnlyArchives=o,this.maxAge=l,this.fileExtensions=c}static async openPromise(t,i){let n=new Mn(i);try{return await t(n)}finally{n.saveAndClose()}}get libzip(){return typeof this.libzipInstance>"u"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(t){return this.baseFs.getExtractHint(t)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Yp(this),this.zipInstances)for(let[t,{zipFs:i}]of this.zipInstances.entries())i.saveAndClose(),this.zipInstances.delete(t)}discardAndClose(){if(Yp(this),this.zipInstances)for(let[t,{zipFs:i}]of this.zipInstances.entries())i.discardAndClose(),this.zipInstances.delete(t)}resolve(t){return this.baseFs.resolve(t)}remapFd(t,i){let n=this.nextFd++|zi;return this.fdMap.set(n,[t,i]),n}async openPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.openPromise(t,i,n),async(s,{subPath:o})=>this.remapFd(s,await s.openPromise(o,i,n)))}openSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.openSync(t,i,n),(s,{subPath:o})=>this.remapFd(s,s.openSync(o,i,n)))}async opendirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.opendirPromise(t,i),async(n,{subPath:s})=>await n.opendirPromise(s,i),{requireSubpath:!1})}opendirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.opendirSync(t,i),(n,{subPath:s})=>n.opendirSync(s,i),{requireSubpath:!1})}async readPromise(t,i,n,s,o){if((t&un)!==zi)return await this.baseFs.readPromise(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("read");let[l,c]=a;return await l.readPromise(c,i,n,s,o)}readSync(t,i,n,s,o){if((t&un)!==zi)return this.baseFs.readSync(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("readSync");let[l,c]=a;return l.readSync(c,i,n,s,o)}async writePromise(t,i,n,s,o){if((t&un)!==zi)return typeof i=="string"?await this.baseFs.writePromise(t,i,n):await this.baseFs.writePromise(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("write");let[l,c]=a;return typeof i=="string"?await l.writePromise(c,i,n):await l.writePromise(c,i,n,s,o)}writeSync(t,i,n,s,o){if((t&un)!==zi)return typeof i=="string"?this.baseFs.writeSync(t,i,n):this.baseFs.writeSync(t,i,n,s,o);let a=this.fdMap.get(t);if(typeof a>"u")throw Hr("writeSync");let[l,c]=a;return typeof i=="string"?l.writeSync(c,i,n):l.writeSync(c,i,n,s,o)}async closePromise(t){if((t&un)!==zi)return await this.baseFs.closePromise(t);let i=this.fdMap.get(t);if(typeof i>"u")throw Hr("close");this.fdMap.delete(t);let[n,s]=i;return await n.closePromise(s)}closeSync(t){if((t&un)!==zi)return this.baseFs.closeSync(t);let i=this.fdMap.get(t);if(typeof i>"u")throw Hr("closeSync");this.fdMap.delete(t);let[n,s]=i;return n.closeSync(s)}createReadStream(t,i){return t===null?this.baseFs.createReadStream(t,i):this.makeCallSync(t,()=>this.baseFs.createReadStream(t,i),(n,{archivePath:s,subPath:o})=>{let a=n.createReadStream(o,i);return a.path=U.fromPortablePath(this.pathUtils.join(s,o)),a})}createWriteStream(t,i){return t===null?this.baseFs.createWriteStream(t,i):this.makeCallSync(t,()=>this.baseFs.createWriteStream(t,i),(n,{subPath:s})=>n.createWriteStream(s,i))}async realpathPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.realpathPromise(t),async(i,{archivePath:n,subPath:s})=>{let o=this.realPaths.get(n);return typeof o>"u"&&(o=await this.baseFs.realpathPromise(n),this.realPaths.set(n,o)),this.pathUtils.join(o,this.pathUtils.relative(Oe.root,await i.realpathPromise(s)))})}realpathSync(t){return this.makeCallSync(t,()=>this.baseFs.realpathSync(t),(i,{archivePath:n,subPath:s})=>{let o=this.realPaths.get(n);return typeof o>"u"&&(o=this.baseFs.realpathSync(n),this.realPaths.set(n,o)),this.pathUtils.join(o,this.pathUtils.relative(Oe.root,i.realpathSync(s)))})}async existsPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.existsPromise(t),async(i,{subPath:n})=>await i.existsPromise(n))}existsSync(t){return this.makeCallSync(t,()=>this.baseFs.existsSync(t),(i,{subPath:n})=>i.existsSync(n))}async accessPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.accessPromise(t,i),async(n,{subPath:s})=>await n.accessPromise(s,i))}accessSync(t,i){return this.makeCallSync(t,()=>this.baseFs.accessSync(t,i),(n,{subPath:s})=>n.accessSync(s,i))}async statPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.statPromise(t,i),async(n,{subPath:s})=>await n.statPromise(s,i))}statSync(t,i){return this.makeCallSync(t,()=>this.baseFs.statSync(t,i),(n,{subPath:s})=>n.statSync(s,i))}async fstatPromise(t,i){if((t&un)!==zi)return this.baseFs.fstatPromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fstat");let[s,o]=n;return s.fstatPromise(o,i)}fstatSync(t,i){if((t&un)!==zi)return this.baseFs.fstatSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fstatSync");let[s,o]=n;return s.fstatSync(o,i)}async lstatPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.lstatPromise(t,i),async(n,{subPath:s})=>await n.lstatPromise(s,i))}lstatSync(t,i){return this.makeCallSync(t,()=>this.baseFs.lstatSync(t,i),(n,{subPath:s})=>n.lstatSync(s,i))}async fchmodPromise(t,i){if((t&un)!==zi)return this.baseFs.fchmodPromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fchmod");let[s,o]=n;return s.fchmodPromise(o,i)}fchmodSync(t,i){if((t&un)!==zi)return this.baseFs.fchmodSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("fchmodSync");let[s,o]=n;return s.fchmodSync(o,i)}async chmodPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.chmodPromise(t,i),async(n,{subPath:s})=>await n.chmodPromise(s,i))}chmodSync(t,i){return this.makeCallSync(t,()=>this.baseFs.chmodSync(t,i),(n,{subPath:s})=>n.chmodSync(s,i))}async fchownPromise(t,i,n){if((t&un)!==zi)return this.baseFs.fchownPromise(t,i,n);let s=this.fdMap.get(t);if(typeof s>"u")throw Hr("fchown");let[o,a]=s;return o.fchownPromise(a,i,n)}fchownSync(t,i,n){if((t&un)!==zi)return this.baseFs.fchownSync(t,i,n);let s=this.fdMap.get(t);if(typeof s>"u")throw Hr("fchownSync");let[o,a]=s;return o.fchownSync(a,i,n)}async chownPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.chownPromise(t,i,n),async(s,{subPath:o})=>await s.chownPromise(o,i,n))}chownSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.chownSync(t,i,n),(s,{subPath:o})=>s.chownSync(o,i,n))}async renamePromise(t,i){return await this.makeCallPromise(t,async()=>await this.makeCallPromise(i,async()=>await this.baseFs.renamePromise(t,i),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(n,{subPath:s})=>await this.makeCallPromise(i,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(o,{subPath:a})=>{if(n!==o)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await n.renamePromise(s,a)}))}renameSync(t,i){return this.makeCallSync(t,()=>this.makeCallSync(i,()=>this.baseFs.renameSync(t,i),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(n,{subPath:s})=>this.makeCallSync(i,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(o,{subPath:a})=>{if(n!==o)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return n.renameSync(s,a)}))}async copyFilePromise(t,i,n=0){let s=async(o,a,l,c)=>{if((n&qp.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${a}' -> ${c}'`),{code:"EXDEV"});if(n&qp.constants.COPYFILE_EXCL&&await this.existsPromise(a))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${a}' -> '${c}'`),{code:"EEXIST"});let u;try{u=await o.readFilePromise(a)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${a}' -> '${c}'`),{code:"EINVAL"})}await l.writeFilePromise(c,u)};return await this.makeCallPromise(t,async()=>await this.makeCallPromise(i,async()=>await this.baseFs.copyFilePromise(t,i,n),async(o,{subPath:a})=>await s(this.baseFs,t,o,a)),async(o,{subPath:a})=>await this.makeCallPromise(i,async()=>await s(o,a,this.baseFs,i),async(l,{subPath:c})=>o!==l?await s(o,a,l,c):await o.copyFilePromise(a,c,n)))}copyFileSync(t,i,n=0){let s=(o,a,l,c)=>{if((n&qp.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${a}' -> ${c}'`),{code:"EXDEV"});if(n&qp.constants.COPYFILE_EXCL&&this.existsSync(a))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${a}' -> '${c}'`),{code:"EEXIST"});let u;try{u=o.readFileSync(a)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${a}' -> '${c}'`),{code:"EINVAL"})}l.writeFileSync(c,u)};return this.makeCallSync(t,()=>this.makeCallSync(i,()=>this.baseFs.copyFileSync(t,i,n),(o,{subPath:a})=>s(this.baseFs,t,o,a)),(o,{subPath:a})=>this.makeCallSync(i,()=>s(o,a,this.baseFs,i),(l,{subPath:c})=>o!==l?s(o,a,l,c):o.copyFileSync(a,c,n)))}async appendFilePromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.appendFilePromise(t,i,n),async(s,{subPath:o})=>await s.appendFilePromise(o,i,n))}appendFileSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.appendFileSync(t,i,n),(s,{subPath:o})=>s.appendFileSync(o,i,n))}async writeFilePromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.writeFilePromise(t,i,n),async(s,{subPath:o})=>await s.writeFilePromise(o,i,n))}writeFileSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.writeFileSync(t,i,n),(s,{subPath:o})=>s.writeFileSync(o,i,n))}async unlinkPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.unlinkPromise(t),async(i,{subPath:n})=>await i.unlinkPromise(n))}unlinkSync(t){return this.makeCallSync(t,()=>this.baseFs.unlinkSync(t),(i,{subPath:n})=>i.unlinkSync(n))}async utimesPromise(t,i,n){return await this.makeCallPromise(t,async()=>await this.baseFs.utimesPromise(t,i,n),async(s,{subPath:o})=>await s.utimesPromise(o,i,n))}utimesSync(t,i,n){return this.makeCallSync(t,()=>this.baseFs.utimesSync(t,i,n),(s,{subPath:o})=>s.utimesSync(o,i,n))}async mkdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.mkdirPromise(t,i),async(n,{subPath:s})=>await n.mkdirPromise(s,i))}mkdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.mkdirSync(t,i),(n,{subPath:s})=>n.mkdirSync(s,i))}async rmdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.rmdirPromise(t,i),async(n,{subPath:s})=>await n.rmdirPromise(s,i))}rmdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.rmdirSync(t,i),(n,{subPath:s})=>n.rmdirSync(s,i))}async linkPromise(t,i){return await this.makeCallPromise(i,async()=>await this.baseFs.linkPromise(t,i),async(n,{subPath:s})=>await n.linkPromise(t,s))}linkSync(t,i){return this.makeCallSync(i,()=>this.baseFs.linkSync(t,i),(n,{subPath:s})=>n.linkSync(t,s))}async symlinkPromise(t,i,n){return await this.makeCallPromise(i,async()=>await this.baseFs.symlinkPromise(t,i,n),async(s,{subPath:o})=>await s.symlinkPromise(t,o))}symlinkSync(t,i,n){return this.makeCallSync(i,()=>this.baseFs.symlinkSync(t,i,n),(s,{subPath:o})=>s.symlinkSync(t,o))}async readFilePromise(t,i){return this.makeCallPromise(t,async()=>{switch(i){case"utf8":return await this.baseFs.readFilePromise(t,i);default:return await this.baseFs.readFilePromise(t,i)}},async(n,{subPath:s})=>await n.readFilePromise(s,i))}readFileSync(t,i){return this.makeCallSync(t,()=>{switch(i){case"utf8":return this.baseFs.readFileSync(t,i);default:return this.baseFs.readFileSync(t,i)}},(n,{subPath:s})=>n.readFileSync(s,i))}async readdirPromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.readdirPromise(t,i),async(n,{subPath:s})=>await n.readdirPromise(s,i),{requireSubpath:!1})}readdirSync(t,i){return this.makeCallSync(t,()=>this.baseFs.readdirSync(t,i),(n,{subPath:s})=>n.readdirSync(s,i),{requireSubpath:!1})}async readlinkPromise(t){return await this.makeCallPromise(t,async()=>await this.baseFs.readlinkPromise(t),async(i,{subPath:n})=>await i.readlinkPromise(n))}readlinkSync(t){return this.makeCallSync(t,()=>this.baseFs.readlinkSync(t),(i,{subPath:n})=>i.readlinkSync(n))}async truncatePromise(t,i){return await this.makeCallPromise(t,async()=>await this.baseFs.truncatePromise(t,i),async(n,{subPath:s})=>await n.truncatePromise(s,i))}truncateSync(t,i){return this.makeCallSync(t,()=>this.baseFs.truncateSync(t,i),(n,{subPath:s})=>n.truncateSync(s,i))}async ftruncatePromise(t,i){if((t&un)!==zi)return this.baseFs.ftruncatePromise(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("ftruncate");let[s,o]=n;return s.ftruncatePromise(o,i)}ftruncateSync(t,i){if((t&un)!==zi)return this.baseFs.ftruncateSync(t,i);let n=this.fdMap.get(t);if(typeof n>"u")throw Hr("ftruncateSync");let[s,o]=n;return s.ftruncateSync(o,i)}watch(t,i,n){return this.makeCallSync(t,()=>this.baseFs.watch(t,i,n),(s,{subPath:o})=>s.watch(o,i,n))}watchFile(t,i,n){return this.makeCallSync(t,()=>this.baseFs.watchFile(t,i,n),()=>iI(this,t,i,n))}unwatchFile(t,i){return this.makeCallSync(t,()=>this.baseFs.unwatchFile(t,i),()=>Gp(this,t,i))}async makeCallPromise(t,i,n,{requireSubpath:s=!0}={}){if(typeof t!="string")return await i();let o=this.resolve(t),a=this.findZip(o);return a?s&&a.subPath==="/"?await i():await this.getZipPromise(a.archivePath,async l=>await n(l,a)):await i()}makeCallSync(t,i,n,{requireSubpath:s=!0}={}){if(typeof t!="string")return i();let o=this.resolve(t),a=this.findZip(o);return!a||s&&a.subPath==="/"?i():this.getZipSync(a.archivePath,l=>n(l,a))}findZip(t){if(this.filter&&!this.filter.test(t))return null;let i="";for(;;){let n=t.substring(i.length),s;if(!this.fileExtensions)s=dU(n,".zip");else for(let o of this.fileExtensions)if(s=dU(n,o),s)break;if(!s)return null;if(i=this.pathUtils.join(i,s),this.isZip.has(i)===!1){if(this.notZip.has(i))continue;try{if(!this.baseFs.lstatSync(i).isFile()){this.notZip.add(i);continue}}catch{return null}this.isZip.add(i)}return{archivePath:i,subPath:this.pathUtils.join(Oe.root,t.substring(i.length))}}}limitOpenFiles(t){if(this.zipInstances===null)return;let i=Date.now(),n=i+this.maxAge,s=t===null?0:this.zipInstances.size-t;for(let[o,{zipFs:a,expiresAt:l,refCount:c}]of this.zipInstances.entries())if(!(c!==0||a.hasOpenFileHandles())){if(i>=l){a.saveAndClose(),this.zipInstances.delete(o),s-=1;continue}else if(t===null||s<=0){n=l;break}a.saveAndClose(),this.zipInstances.delete(o),s-=1}this.limitOpenFilesTimeout===null&&(t===null&&this.zipInstances.size>0||t!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},n-i).unref())}async getZipPromise(t,i){let n=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(t)});if(this.zipInstances){let s=this.zipInstances.get(t);if(!s){let o=await n();s=this.zipInstances.get(t),s||(s={zipFs:new Wr(t,o),expiresAt:0,refCount:0})}this.zipInstances.delete(t),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(t,s),s.expiresAt=Date.now()+this.maxAge,s.refCount+=1;try{return await i(s.zipFs)}finally{s.refCount-=1}}else{let s=new Wr(t,await n());try{return await i(s)}finally{s.saveAndClose()}}}getZipSync(t,i){let n=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(t)});if(this.zipInstances){let s=this.zipInstances.get(t);return s||(s={zipFs:new Wr(t,n()),expiresAt:0,refCount:0}),this.zipInstances.delete(t),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(t,s),s.expiresAt=Date.now()+this.maxAge,i(s.zipFs)}else{let s=new Wr(t,n());try{return i(s)}finally{s.saveAndClose()}}}};var Pg=J("util");var sI=J("url"),CU=J("util");var nI=class extends pi{constructor(t){super(U);this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t=="string")return t;if(t instanceof sI.URL)return(0,sI.fileURLToPath)(t);if(Buffer.isBuffer(t)){let i=t.toString();if(Buffer.byteLength(i)!==t.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return i}throw new Error(`Unsupported path type: ${(0,CU.inspect)(t)}`)}};var mU=J("readline"),Fi=Symbol("kBaseFs"),ya=Symbol("kFd"),PA=Symbol("kClosePromise"),oI=Symbol("kCloseResolve"),aI=Symbol("kCloseReject"),xg=Symbol("kRefs"),Ws=Symbol("kRef"),zs=Symbol("kUnref"),Wge,zge,Vge,Xge,Jp=class{constructor(e,t){this[Wge]=1;this[zge]=void 0;this[Vge]=void 0;this[Xge]=void 0;this[Fi]=t,this[ya]=e}get fd(){return this[ya]}async appendFile(e,t){var i;try{this[Ws](this.appendFile);let n=(i=typeof t=="string"?t:t==null?void 0:t.encoding)!=null?i:void 0;return await this[Fi].appendFilePromise(this.fd,e,n?{encoding:n}:void 0)}finally{this[zs]()}}async chown(e,t){try{return this[Ws](this.chown),await this[Fi].fchownPromise(this.fd,e,t)}finally{this[zs]()}}async chmod(e){try{return this[Ws](this.chmod),await this[Fi].fchmodPromise(this.fd,e)}finally{this[zs]()}}createReadStream(e){return this[Fi].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Fi].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,t,i,n){var s,o,a;try{this[Ws](this.read);let l;return Buffer.isBuffer(e)?l=e:(e!=null||(e={}),l=(s=e.buffer)!=null?s:Buffer.alloc(16384),t=e.offset||0,i=(o=e.length)!=null?o:l.byteLength,n=(a=e.position)!=null?a:null),t!=null||(t=0),i!=null||(i=0),i===0?{bytesRead:i,buffer:l}:{bytesRead:await this[Fi].readPromise(this.fd,l,t,i,n),buffer:l}}finally{this[zs]()}}async readFile(e){var t;try{this[Ws](this.readFile);let i=(t=typeof e=="string"?e:e==null?void 0:e.encoding)!=null?t:void 0;return await this[Fi].readFilePromise(this.fd,i)}finally{this[zs]()}}readLines(e){return(0,mU.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Ws](this.stat),await this[Fi].fstatPromise(this.fd,e)}finally{this[zs]()}}async truncate(e){try{return this[Ws](this.truncate),await this[Fi].ftruncatePromise(this.fd,e)}finally{this[zs]()}}utimes(e,t){throw new Error("Method not implemented.")}async writeFile(e,t){var i;try{this[Ws](this.writeFile);let n=(i=typeof t=="string"?t:t==null?void 0:t.encoding)!=null?i:void 0;await this[Fi].writeFilePromise(this.fd,e,n)}finally{this[zs]()}}async write(...e){try{if(this[Ws](this.write),ArrayBuffer.isView(e[0])){let[t,i,n,s]=e;return{bytesWritten:await this[Fi].writePromise(this.fd,t,i!=null?i:void 0,n!=null?n:void 0,s!=null?s:void 0),buffer:t}}else{let[t,i,n]=e;return{bytesWritten:await this[Fi].writePromise(this.fd,t,i,n),buffer:t}}}finally{this[zs]()}}async writev(e,t){try{this[Ws](this.writev);let i=0;if(typeof t<"u")for(let n of e){let s=await this.write(n,void 0,void 0,t);i+=s.bytesWritten,t+=s.bytesWritten}else for(let n of e){let s=await this.write(n);i+=s.bytesWritten}return{buffers:e,bytesWritten:i}}finally{this[zs]()}}readv(e,t){throw new Error("Method not implemented.")}close(){if(this[ya]===-1)return Promise.resolve();if(this[PA])return this[PA];if(this[xg]--,this[xg]===0){let e=this[ya];this[ya]=-1,this[PA]=this[Fi].closePromise(e).finally(()=>{this[PA]=void 0})}else this[PA]=new Promise((e,t)=>{this[oI]=e,this[aI]=t}).finally(()=>{this[PA]=void 0,this[aI]=void 0,this[oI]=void 0});return this[PA]}[(Fi,ya,Wge=xg,zge=PA,Vge=oI,Xge=aI,Ws)](e){if(this[ya]===-1){let t=new Error("file closed");throw t.code="EBADF",t.syscall=e.name,t}this[xg]++}[zs](){if(this[xg]--,this[xg]===0){let e=this[ya];this[ya]=-1,this[Fi].closePromise(e).then(this[oI],this[aI])}}};var Zge=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),EU=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]);function QS(r,e){e=new nI(e);let t=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[Pg.promisify.custom])<"u"&&(s[Pg.promisify.custom]=o[Pg.promisify.custom])};{t(r,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),t(r,"read",(...i)=>{let[n,s,o,a,l,c]=i;if(i.length<=3){let u={};i.length<3?c=i[1]:(u=i[1],c=i[2]),{buffer:s=Buffer.alloc(16384),offset:o=0,length:a=s.byteLength,position:l}=u}if(o==null&&(o=0),a|=0,a===0){process.nextTick(()=>{c(null,0,s)});return}l==null&&(l=-1),process.nextTick(()=>{e.readPromise(n,s,o,a,l).then(u=>{c(null,u,s)},u=>{c(u,0,s)})})});for(let i of EU){let n=i.replace(/Promise$/,"");if(typeof r[n]>"u")continue;let s=e[i];if(typeof s>"u")continue;t(r,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}r.realpath.native=r.realpath}{t(r,"existsSync",i=>{try{return e.existsSync(i)}catch{return!1}}),t(r,"readSync",(...i)=>{let[n,s,o,a,l]=i;return i.length<=3&&({offset:o=0,length:a=s.byteLength,position:l}=i[2]||{}),o==null&&(o=0),a|=0,a===0?0:(l==null&&(l=-1),e.readSync(n,s,o,a,l))});for(let i of Zge){let n=i;if(typeof r[n]>"u")continue;let s=e[i];typeof s>"u"||t(r,n,s.bind(e))}r.realpathSync.native=r.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=r.promises}finally{process.emitWarning=i}if(typeof n<"u"){for(let s of EU){let o=s.replace(/Promise$/,"");if(typeof n[o]>"u")continue;let a=e[s];typeof a>"u"||s!=="open"&&t(n,o,(l,...c)=>l instanceof Jp?l[o].apply(l,c):a.call(e,l,...c))}t(n,"open",async(...s)=>{let o=await e.openPromise(...s);return new Jp(o,e)})}}r.read[Pg.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n}),r.write[Pg.promisify.custom]=async(i,n,...s)=>({bytesWritten:await e.writePromise(i,n,...s),buffer:n})}function AI(r,e){let t=Object.create(r);return QS(t,e),t}var wU=Pe(J("os"));function IU(r){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${r}${e}`}var Vs=new Set,bS=null;function yU(){if(bS)return bS;let r=U.toPortablePath(wU.default.tmpdir()),e=M.realpathSync(r);return process.once("exit",()=>{M.rmtempSync()}),bS={tmpdir:r,realTmpdir:e}}var M=Object.assign(new $t,{detachTemp(r){Vs.delete(r)},mktempSync(r){let{tmpdir:e,realTmpdir:t}=yU();for(;;){let i=IU("xfs-");try{this.mkdirSync(x.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=x.join(t,i);if(Vs.add(n),typeof r>"u")return n;try{return r(n)}finally{if(Vs.has(n)){Vs.delete(n);try{this.removeSync(n)}catch{}}}}},async mktempPromise(r){let{tmpdir:e,realTmpdir:t}=yU();for(;;){let i=IU("xfs-");try{await this.mkdirPromise(x.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=x.join(t,i);if(Vs.add(n),typeof r>"u")return n;try{return await r(n)}finally{if(Vs.has(n)){Vs.delete(n);try{await this.removePromise(n)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Vs.values()).map(async r=>{try{await M.removePromise(r,{maxRetries:0}),Vs.delete(r)}catch{}}))},rmtempSync(){for(let r of Vs)try{M.removeSync(r),Vs.delete(r)}catch{}}});var fk=Pe(LS());var td={};ut(td,{parseResolution:()=>hI,parseShell:()=>uI,parseSyml:()=>yi,stringifyArgument:()=>US,stringifyArgumentSegment:()=>KS,stringifyArithmeticExpression:()=>fI,stringifyCommand:()=>MS,stringifyCommandChain:()=>Fg,stringifyCommandChainThen:()=>OS,stringifyCommandLine:()=>gI,stringifyCommandLineThen:()=>TS,stringifyEnvSegment:()=>cI,stringifyRedirectArgument:()=>zp,stringifyResolution:()=>pI,stringifyShell:()=>Rg,stringifyShellLine:()=>Rg,stringifySyml:()=>Ba,stringifyValueArgument:()=>_l});var gK=Pe(uK());function uI(r,e={isGlobPattern:()=>!1}){try{return(0,gK.parse)(r,e)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function Rg(r,{endSemicolon:e=!1}={}){return r.map(({command:t,type:i},n)=>`${gI(t)}${i===";"?n!==r.length-1||e?";":"":" &"}`).join(" ")}function gI(r){return`${Fg(r.chain)}${r.then?` ${TS(r.then)}`:""}`}function TS(r){return`${r.type} ${gI(r.line)}`}function Fg(r){return`${MS(r)}${r.then?` ${OS(r.then)}`:""}`}function OS(r){return`${r.type} ${Fg(r.chain)}`}function MS(r){switch(r.type){case"command":return`${r.envs.length>0?`${r.envs.map(e=>cI(e)).join(" ")} `:""}${r.args.map(e=>US(e)).join(" ")}`;case"subshell":return`(${Rg(r.subshell)})${r.args.length>0?` ${r.args.map(e=>zp(e)).join(" ")}`:""}`;case"group":return`{ ${Rg(r.group,{endSemicolon:!0})} }${r.args.length>0?` ${r.args.map(e=>zp(e)).join(" ")}`:""}`;case"envs":return r.envs.map(e=>cI(e)).join(" ");default:throw new Error(`Unsupported command type: "${r.type}"`)}}function cI(r){return`${r.name}=${r.args[0]?_l(r.args[0]):""}`}function US(r){switch(r.type){case"redirection":return zp(r);case"argument":return _l(r);default:throw new Error(`Unsupported argument type: "${r.type}"`)}}function zp(r){return`${r.subtype} ${r.args.map(e=>_l(e)).join(" ")}`}function _l(r){return r.segments.map(e=>KS(e)).join("")}function KS(r){let e=(i,n)=>n?`"${i}"`:i,t=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(r.type){case"text":return t(r.text);case"glob":return r.pattern;case"shell":return e(`\${${Rg(r.shell)}}`,r.quoted);case"variable":return e(typeof r.defaultValue>"u"?typeof r.alternativeValue>"u"?`\${${r.name}}`:r.alternativeValue.length===0?`\${${r.name}:+}`:`\${${r.name}:+${r.alternativeValue.map(i=>_l(i)).join(" ")}}`:r.defaultValue.length===0?`\${${r.name}:-}`:`\${${r.name}:-${r.defaultValue.map(i=>_l(i)).join(" ")}}`,r.quoted);case"arithmetic":return`$(( ${fI(r.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${r.type}"`)}}function fI(r){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},t=(n,s)=>s?`( ${n} )`:n,i=n=>t(fI(n),!["number","variable"].includes(n.type));switch(r.type){case"number":return String(r.value);case"variable":return r.name;default:return`${i(r.left)} ${e(r.type)} ${i(r.right)}`}}var pK=Pe(hK());function hI(r){let e=r.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${r}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,pK.parse)(r)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function pI(r){let e="";return r.from&&(e+=r.from.fullName,r.from.description&&(e+=`@${r.from.description}`),e+="/"),e+=r.descriptor.fullName,r.descriptor.description&&(e+=`@${r.descriptor.description}`),e}var vI=Pe(sH()),cH=Pe(aH()),ode=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,AH=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],SI=class{constructor(e){this.data=e}};function lH(r){return r.match(ode)?r:JSON.stringify(r)}function uH(r){return typeof r>"u"?!0:typeof r=="object"&&r!==null?Object.keys(r).every(e=>uH(r[e])):!1}function $S(r,e,t){if(r===null)return`null `;if(typeof r=="number"||typeof r=="boolean")return`${r.toString()} -`;if(typeof r=="string")return`${F2(r)} +`;if(typeof r=="string")return`${lH(r)} `;if(Array.isArray(r)){if(r.length===0)return`[] `;let i=" ".repeat(e);return` -${r.map(s=>`${i}- ${MS(s,e+1,!1)}`).join("")}`}if(typeof r=="object"&&r){let i,n;r instanceof hI?(i=r.data,n=!1):(i=r,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=R2.indexOf(l),g=R2.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!L2(i[l])).map((l,c)=>{let u=i[l],g=F2(l),f=MS(u,e+1,!0),h=c>0||t?s:"",p=g.length>1024?`? ${g} +${r.map(s=>`${i}- ${$S(s,e+1,!1)}`).join("")}`}if(typeof r=="object"&&r){let i,n;r instanceof SI?(i=r.data,n=!1):(i=r,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=AH.indexOf(l),g=AH.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!uH(i[l])).map((l,c)=>{let u=i[l],g=lH(l),f=$S(u,e+1,!0),h=c>0||t?s:"",p=g.length>1024?`? ${g} ${h}:`:`${g}:`,C=f.startsWith(` `)?f:` ${f}`;return`${h}${p}${C}`}).join(e===0?` `:"")||` `;return t?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${r})`)}function Ca(r){try{let e=MS(r,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Ca.PreserveOrdering=hI;function Epe(r){return r.endsWith(` +${a}`:`${a}`}throw new Error(`Unsupported value type (${r})`)}function Ba(r){try{let e=$S(r,0,!1);return e!==` +`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Ba.PreserveOrdering=SI;function ade(r){return r.endsWith(` `)||(r+=` -`),(0,N2.parse)(r)}var Ipe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function ype(r){if(Ipe.test(r))return Epe(r);let e=(0,pI.safeLoad)(r,{schema:pI.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ii(r){return ype(r)}var H8=Pe(O2()),Sw=Pe(Vl());var $p={};ut($p,{Builtins:()=>$S,Cli:()=>Kn,Command:()=>ve,Option:()=>z,UsageError:()=>be,formatMarkdownish:()=>Ni});var US="",yi="\0";var HS=/^(-h|--help)(?:=([0-9]+))?$/,dI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,H2=/^-[a-zA-Z]{2,}$/,GS=/^([^=]+)=([\s\S]*)$/,YS=process.env.DEBUG_CLI==="1";var be=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},kg=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} +`),(0,cH.parse)(r)}var Ade=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function lde(r){if(Ade.test(r))return ade(r);let e=(0,vI.safeLoad)(r,{schema:vI.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function yi(r){return lde(r)}var dz=Pe(fH()),Uw=Pe(Ac());var ud={};ut(ud,{Builtins:()=>hv,Cli:()=>Hn,Command:()=>ve,Option:()=>z,UsageError:()=>be,formatMarkdownish:()=>Li});var tv="",wi="\0";var rv=/^(-h|--help)(?:=([0-9]+))?$/,xI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,CH=/^-[a-zA-Z]{2,}$/,iv=/^([^=]+)=([\s\S]*)$/,nv=process.env.DEBUG_CLI==="1";var be=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Hg=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} ${this.candidates.map(({usage:n})=>`$ ${n}`).join(` `)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: $ ${i} -${jS(e)}`}else this.message=`Command not found; did you mean one of: +${sv(e)}`}else this.message=`Command not found; did you mean one of: ${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` `)} -${jS(e)}`}},CI=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: +${sv(e)}`}},PI=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: ${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` `)} -${jS(e)}`}},jS=r=>`While running ${r.filter(e=>e!==yi).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;var jp=Symbol("clipanion/isOption");function Ji(r){return{...r,[jp]:!0}}function bo(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function mI(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function qp(r,e){return e.length===1?new be(`${r}: ${mI(e[0],!0)}`):new be(`${r}: +${sv(e)}`}},sv=r=>`While running ${r.filter(e=>e!==wi).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;var rd=Symbol("clipanion/isOption");function Vi(r){return{...r,[rd]:!0}}function Po(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function DI(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function id(r,e){return e.length===1?new be(`${r}: ${DI(e[0],!0)}`):new be(`${r}: ${e.map(t=>` -- ${mI(t)}`).join("")}`)}function Jp(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw qp(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}var ve=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(ns(),gn)),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw qp("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};ve.isOption=jp;ve.Default=[];var WS=Array(80).fill("\u2501");for(let r=0;r<=24;++r)WS[WS.length-r]=`\x1B[38;5;${232+r}m\u2501`;var zS={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length<80-5?` ${WS.slice(r.length+5).join("")}`:":"}\x1B[0m`,bold:r=>`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},_2={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function nde(r){let e=r.split(` +- ${DI(t)}`).join("")}`)}function nd(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw id(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}var ve=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(ls(),fn)),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw id("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};ve.isOption=rd;ve.Default=[];var Av=Array(80).fill("\u2501");for(let r=0;r<=24;++r)Av[Av.length-r]=`\x1B[38;5;${232+r}m\u2501`;var lv={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length<80-5?` ${Av.slice(r.length+5).join("")}`:":"}\x1B[0m`,bold:r=>`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},vH={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function Jde(r){let e=r.split(` `),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Ni(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` -`),r=nde(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 +`)}function Li(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` +`),r=Jde(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 `),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` `);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` `)}).join(` `)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r} -`:""}var ZS=Pe(J("tty"),1);function fn(r){YS&&console.log(r)}var Z2={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};function $2(){return{nodes:[zi(),zi(),zi()]}}function sde(r){let e=$2(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(0)}function ade(r,{prefix:e=""}={}){if(YS){fn(`${e}Nodes are:`);for(let t=0;tl!==2).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===2))throw new kg(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=ude(a)}if(i.length>0){fn(" Results:");for(let s of i)fn(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else fn(" No results");return i}function Ade(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,yi)){for(let{to:t}of r.statics[yi])if(t===1)return!0}return!1}function lde(r,e,t){let i=t&&e.length>0?[""]:[],n=eH(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],y=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=y[0];for(let{to:D,reducer:L}of C.statics[v])L==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=Ade(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==yi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===2)continue;let p=pde(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function cde(r,e){let t=eH(r,[...e,yi]);return gde(e,t.map(({state:i})=>i))}function ude(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function gde(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new kg(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fde(c);if(u.length>1)throw new CI(r,u.map(g=>g.candidateUsage));return u[0]}function fde(r){let e=[],t=[];for(let i of r)i.selectedIndex===-1?t.push(i):e.push(i);return t.length>0&&e.push({...Z2,path:tH(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function tH(r,e,...t){return e===void 0?Array.from(r):tH(r.filter((i,n)=>i===e[n]),...t)}function zi(){return{dynamics:[],shortcuts:[],statics:{}}}function rH(r){return r===1||r===2}function VS(r,e=0){return{to:rH(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function hde(r,e=0){let t=zi();for(let[i,n]of r.dynamics)t.dynamics.push([i,VS(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(VS(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>VS(s,e));return t}function wi(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Rg(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function ma(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function II(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function pde(r,e){let t=Array.isArray(r)?wI[r[0]]:wI[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var wI={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&&H2.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(GS);return!r.ignoreOptions&&!!n&&dI.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&&HS.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&&dI.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!dI.test(e)};wI.isOption.suggest=(r,e,t=!0)=>t?null:[e];var XS={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(GS);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Mn})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(HS);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===yi?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Mn=Symbol(),_S=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Mn)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Mn?this.arity.extra.push(e):this.arity.extra!==Mn&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Mn)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Mn?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=$2(),t=0,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=Js(e,zi()),ma(e,0,US,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=Js(e,zi());Rg(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=Js(e,zi());wi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ma(e,f,yi,1,["setSelectedIndex",-1]),this.registerOptions(e,l)}this.arity.leading.length>0&&ma(e,l,yi,2,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ma(e,h,yi,2,["setError","Not enough positional arguments"]),wi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Mn||this.arity.extra.length>0){let f=Js(e,zi());if(Rg(e,c,f),this.arity.extra===Mn){let h=Js(e,zi());this.arity.proxy||this.registerOptions(e,h),wi(e,c,s,h,"pushExtraNoLimits"),wi(e,h,s,h,"pushExtraNoLimits"),Rg(e,h,f)}else for(let h=0;h0&&ma(e,u,yi,2,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)wi(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&wi(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=Js(e,zi());for(let o of i.names)wi(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&ecde(i,n),suggest:(n,s)=>lde(i,n,s)}}};var Lg=class extends ve{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new Lg(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`:""}var fv=Pe(J("tty"),1);function hn(r){nv&&console.log(r)}var xH={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};function PH(){return{nodes:[Zi(),Zi(),Zi()]}}function Wde(r){let e=PH(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(0)}function Vde(r,{prefix:e=""}={}){if(nv){hn(`${e}Nodes are:`);for(let t=0;tl!==2).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===2))throw new Hg(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=$de(a)}if(i.length>0){hn(" Results:");for(let s of i)hn(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else hn(" No results");return i}function Xde(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,wi)){for(let{to:t}of r.statics[wi])if(t===1)return!0}return!1}function Zde(r,e,t){let i=t&&e.length>0?[""]:[],n=DH(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],y=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=y[0];for(let{to:D,reducer:L}of C.statics[v])L==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=Xde(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==wi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===2)continue;let p=iCe(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function _de(r,e){let t=DH(r,[...e,wi]);return eCe(e,t.map(({state:i})=>i))}function $de(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function eCe(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Hg(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=tCe(c);if(u.length>1)throw new PI(r,u.map(g=>g.candidateUsage));return u[0]}function tCe(r){let e=[],t=[];for(let i of r)i.selectedIndex===-1?t.push(i):e.push(i);return t.length>0&&e.push({...xH,path:kH(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function kH(r,e,...t){return e===void 0?Array.from(r):kH(r.filter((i,n)=>i===e[n]),...t)}function Zi(){return{dynamics:[],shortcuts:[],statics:{}}}function RH(r){return r===1||r===2}function cv(r,e=0){return{to:RH(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function rCe(r,e=0){let t=Zi();for(let[i,n]of r.dynamics)t.dynamics.push([i,cv(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(cv(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>cv(s,e));return t}function Bi(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Gg(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function Qa(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function RI(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function iCe(r,e){let t=Array.isArray(r)?NI[r[0]]:NI[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var NI={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&&CH.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(iv);return!r.ignoreOptions&&!!n&&xI.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&&rv.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&&xI.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!xI.test(e)};NI.isOption.suggest=(r,e,t=!0)=>t?null:[e];var uv={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(iv);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Kn})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(rv);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===wi?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Kn=Symbol(),gv=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Kn)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Kn?this.arity.extra.push(e):this.arity.extra!==Kn&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Kn)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Kn?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=PH(),t=0,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=Xs(e,Zi()),Qa(e,0,tv,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=Xs(e,Zi());Gg(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=Xs(e,Zi());Bi(e,l,"isHelp",f,["useHelp",this.cliIndex]),Qa(e,f,wi,1,["setSelectedIndex",-1]),this.registerOptions(e,l)}this.arity.leading.length>0&&Qa(e,l,wi,2,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&Qa(e,h,wi,2,["setError","Not enough positional arguments"]),Bi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Kn||this.arity.extra.length>0){let f=Xs(e,Zi());if(Gg(e,c,f),this.arity.extra===Kn){let h=Xs(e,Zi());this.arity.proxy||this.registerOptions(e,h),Bi(e,c,s,h,"pushExtraNoLimits"),Bi(e,h,s,h,"pushExtraNoLimits"),Gg(e,h,f)}else for(let h=0;h0&&Qa(e,u,wi,2,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Bi(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Bi(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=Xs(e,Zi());for(let o of i.names)Bi(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&e_de(i,n),suggest:(n,s)=>Zde(i,n,s)}}};var qg=class extends ve{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new qg(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: `),this.context.stdout.write(` `);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` `),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var iH=Symbol("clipanion/errorCommand");function dde(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var Kn=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new Ng({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new Kn(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ve.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case-1:return Lg.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[iH]=a,l}}break}}async run(e,t){var i;let n,s={...Kn.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?Cde(s):sH,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?Ni(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?Ni(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?Ni(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[Ni(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ve?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Ni(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`)}}};var FH=Symbol("clipanion/errorCommand");function nCe(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var Hn=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new jg({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new Hn(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ve.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case-1:return qg.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[FH]=a,l}}break}}async run(e,t){var i;let n,s={...Hn.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?sCe(s):LH,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?Li(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?Li(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?Li(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[Li(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ve?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Li(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` `),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")} `,a+=` `);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g} `,f.length>0){a+=` -`,a+=`${zS.header("Options")} +`,a+=`${lv.header("Options")} `;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=` -`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${Ni(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` +`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${Li(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` `,a+=`${this.format(t).header("Details")} `,a+=` -`,a+=Ni(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` +`,a+=Li(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` `,a+=`${this.format(t).header("Examples")} `;for(let[h,p]of u)a+=` -`,a+=Ni(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} +`,a+=Li(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} `}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?Ni(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:y}=this.getUsageByIndex(h);C.push({commandClass:f,usage:y})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?Li(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:y}=this.getUsageByIndex(h);C.push({commandClass:f,usage:y})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} `:u?a+=`${this.format(t).header(`${this.binaryLabel}`)} `:a+=`${this.format(t).header(`${this.binaryVersion}`)} @@ -381,100 +381,100 @@ ${e.map(t=>` `,a+=`${this.format(t).header(`${p}`)} `;for(let{commandClass:C,usage:y}of h){let B=C.usage.description||"undocumented";a+=` `,a+=` ${this.format(t).bold(y)} -`,a+=` ${Ni(B,{format:this.format(t),paragraphs:!1})}`}}a+=` -`,a+=Ni("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[iH])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`,a+=` ${Li(B,{format:this.format(t),paragraphs:!1})}`}}a+=` +`,a+=Li("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[FH])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} `;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=` `,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:Kn.defaultContext.colorDepth>1)?zS:_2}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};Kn.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in ZS.default.WriteStream.prototype?ZS.default.WriteStream.prototype.getColorDepth():dde()};var nH;function Cde(r){let e=nH;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return sH;let{AsyncLocalStorage:t}=J("async_hooks");e=nH=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function sH(r){return r()}var $S={};ut($S,{DefinitionsCommand:()=>Xp,HelpCommand:()=>_p,VersionCommand:()=>Zp});var Xp=class extends ve{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};Xp.paths=[["--clipanion=definitions"]];var _p=class extends ve{async execute(){this.context.stdout.write(this.cli.usage())}};_p.paths=[["-h"],["--help"]];var Zp=class extends ve{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};Zp.paths=[["-v"],["--version"]];var z={};ut(z,{Array:()=>oH,Boolean:()=>aH,Counter:()=>AH,Proxy:()=>lH,Rest:()=>cH,String:()=>uH,applyValidator:()=>Jp,cleanValidationError:()=>mI,formatError:()=>qp,isOptionSymbol:()=>jp,makeCommandOption:()=>Ji,rerouteArguments:()=>bo});function oH(r,e,t){let[i,n]=bo(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function aH(r,e,t){let[i,n]=bo(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function AH(r,e,t){let[i,n]=bo(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function lH(r={}){return Ji({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}function cH(r={}){return Ji({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Mn||a.extra===!1&&oo)}})}function mde(r,e,t){let[i,n]=bo(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Jp(g!=null?g:c,f,n.validator):f}})}function Ede(r={}){let{required:e=!0}=r;return Ji({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o(se[se.UNNAMED=0]="UNNAMED",se[se.EXCEPTION=1]="EXCEPTION",se[se.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",se[se.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",se[se.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",se[se.BUILD_DISABLED=5]="BUILD_DISABLED",se[se.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",se[se.MUST_BUILD=7]="MUST_BUILD",se[se.MUST_REBUILD=8]="MUST_REBUILD",se[se.BUILD_FAILED=9]="BUILD_FAILED",se[se.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",se[se.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",se[se.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",se[se.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",se[se.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",se[se.REMOTE_INVALID=15]="REMOTE_INVALID",se[se.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",se[se.RESOLUTION_PACK=17]="RESOLUTION_PACK",se[se.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",se[se.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",se[se.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",se[se.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",se[se.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",se[se.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",se[se.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",se[se.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",se[se.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",se[se.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",se[se.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",se[se.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",se[se.FETCH_FAILED=30]="FETCH_FAILED",se[se.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",se[se.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",se[se.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",se[se.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",se[se.NETWORK_ERROR=35]="NETWORK_ERROR",se[se.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",se[se.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",se[se.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",se[se.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",se[se.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",se[se.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",se[se.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",se[se.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",se[se.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",se[se.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",se[se.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",se[se.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",se[se.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",se[se.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",se[se.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",se[se.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",se[se.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",se[se.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",se[se.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",se[se.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",se[se.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",se[se.INVALID_MANIFEST=57]="INVALID_MANIFEST",se[se.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",se[se.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",se[se.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",se[se.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",se[se.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",se[se.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",se[se.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",se[se.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",se[se.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",se[se.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",se[se.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",se[se.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",se[se.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",se[se.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",se[se.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",se[se.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",se[se.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",se[se.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",se[se.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",se[se.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",se[se.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",se))(Ct||{});function QA(r){return`YN${r.toString(10).padStart(4,"0")}`}function QI(r){let e=Number(r.slice(2));if(typeof Ct[e]>"u")throw new Error(`Unknown message name: "${r}"`);return e}var P={};ut(P,{areDescriptorsEqual:()=>V4,areIdentsEqual:()=>zd,areLocatorsEqual:()=>Vd,areVirtualPackagesEquivalent:()=>jbe,bindDescriptor:()=>Gbe,bindLocator:()=>Ybe,convertDescriptorToLocator:()=>fw,convertLocatorToDescriptor:()=>bD,convertPackageToLocator:()=>Hbe,convertToIdent:()=>Ube,convertToManifestRange:()=>Wbe,copyPackage:()=>qd,devirtualizeDescriptor:()=>Jd,devirtualizeLocator:()=>Wd,getIdentVendorPath:()=>PD,isPackageCompatible:()=>mw,isVirtualDescriptor:()=>OA,isVirtualLocator:()=>Uo,makeDescriptor:()=>Zt,makeIdent:()=>Ho,makeLocator:()=>$i,makeRange:()=>pw,parseDescriptor:()=>MA,parseFileStyleRange:()=>qbe,parseIdent:()=>_i,parseLocator:()=>Cc,parseRange:()=>Cf,prettyDependent:()=>Gx,prettyDescriptor:()=>tr,prettyIdent:()=>Ai,prettyLocator:()=>mt,prettyLocatorNoColors:()=>xD,prettyRange:()=>Cw,prettyReference:()=>_d,prettyResolution:()=>Hx,prettyWorkspace:()=>Zd,renamePackage:()=>jd,slugifyIdent:()=>QD,slugifyLocator:()=>mf,sortDescriptors:()=>Ef,stringifyDescriptor:()=>Qn,stringifyIdent:()=>Ot,stringifyLocator:()=>hs,tryParseDescriptor:()=>Xd,tryParseIdent:()=>X4,tryParseLocator:()=>hw,virtualizeDescriptor:()=>SD,virtualizePackage:()=>vD});var df=Pe(J("querystring")),J4=Pe(Xr()),W4=Pe(Uq());var ee={};ut(ee,{LogLevel:()=>Oy,Style:()=>Tx,Type:()=>Ue,addLogFilterSupport:()=>Kd,applyColor:()=>Bn,applyHyperlink:()=>cf,applyStyle:()=>Ty,json:()=>cc,jsonOrPretty:()=>wBe,mark:()=>Ux,pretty:()=>Ze,prettyField:()=>Oo,prettyList:()=>Kx,supportsColor:()=>Ly,supportsHyperlinks:()=>Mx,tuple:()=>eo});var Md=Pe(ax()),Od=Pe(Vl());var MW=Pe(yn()),KW=Pe(vW());var Ie={};ut(Ie,{AsyncActions:()=>Sx,BufferStream:()=>bx,CachingStrategy:()=>TW,DefaultStream:()=>vx,allSettledSafe:()=>$s,assertNever:()=>Px,bufferStream:()=>af,buildIgnorePattern:()=>mBe,convertMapsToIndexableObjects:()=>Fy,dynamicRequire:()=>Af,escapeRegExp:()=>gBe,getArrayWithDefault:()=>nf,getFactoryWithDefault:()=>xa,getMapWithDefault:()=>sf,getSetWithDefault:()=>lc,isIndexableObject:()=>Qx,isPathLike:()=>EBe,isTaggedYarnVersion:()=>uBe,mapAndFilter:()=>To,mapAndFind:()=>Ld,overrideType:()=>fBe,parseBoolean:()=>Td,parseOptionalBoolean:()=>OW,prettifyAsyncErrors:()=>of,prettifySyncErrors:()=>Dx,releaseAfterUseAsync:()=>pBe,replaceEnvVariables:()=>kx,sortMap:()=>wn,tryParseOptionalBoolean:()=>Rx,validateEnum:()=>hBe});var PW=Pe(yn()),DW=Pe(Tg()),kW=Pe(Xr()),xx=J("stream");function uBe(r){return!!(kW.default.valid(r)&&r.match(/^[^-]+(-rc\.[0-9]+)?$/))}function gBe(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fBe(r){}function Px(r){throw new Error(`Assertion failed: Unexpected object '${r}'`)}function hBe(r,e){let t=Object.values(r);if(!t.includes(e))throw new be(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${t.map(i=>JSON.stringify(i)).join(", ")})`);return e}function To(r,e){let t=[];for(let i of r){let n=e(i);n!==RW&&t.push(n)}return t}var RW=Symbol();To.skip=RW;function Ld(r,e){for(let t of r){let i=e(t);if(i!==FW)return i}}var FW=Symbol();Ld.skip=FW;function Qx(r){return typeof r=="object"&&r!==null}async function $s(r){let e=await Promise.allSettled(r),t=[];for(let i of e){if(i.status==="rejected")throw i.reason;t.push(i.value)}return t}function Fy(r){if(r instanceof Map&&(r=Object.fromEntries(r)),Qx(r))for(let e of Object.keys(r)){let t=r[e];Qx(t)&&(r[e]=Fy(t))}return r}function xa(r,e,t){let i=r.get(e);return typeof i>"u"&&r.set(e,i=t()),i}function nf(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=[]),t}function lc(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=new Set),t}function sf(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=new Map),t}async function pBe(r,e){if(e==null)return await r();try{return await r()}finally{await e()}}async function of(r,e){try{return await r()}catch(t){throw t.message=e(t.message),t}}function Dx(r,e){try{return r()}catch(t){throw t.message=e(t.message),t}}async function af(r){return await new Promise((e,t)=>{let i=[];r.on("error",n=>{t(n)}),r.on("data",n=>{i.push(n)}),r.on("end",()=>{e(Buffer.concat(i))})})}var bx=class extends xx.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(t,i,n){if(i!=="buffer"||!Buffer.isBuffer(t))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(t),n(null,null)}_flush(t){t(null,Buffer.concat(this.chunks))}};function dBe(){let r,e;return{promise:new Promise((i,n)=>{r=i,e=n}),resolve:r,reject:e}}var Sx=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,DW.default)(e)}set(e,t){let i=this.deferred.get(e);typeof i>"u"&&this.deferred.set(e,i=dBe());let n=this.limit(()=>t());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,t){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>t(i))}async wait(){await Promise.all(this.promises.values())}},vx=class extends xx.Transform{constructor(t=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=t}_transform(t,i,n){if(i!=="buffer"||!Buffer.isBuffer(t))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,n(null,t)}_flush(t){this.active&&this.ifEmpty.length>0?t(null,this.ifEmpty):t(null)}},Nd=eval("require");function NW(r){return Nd(K.fromPortablePath(r))}function LW(path){let physicalPath=K.fromPortablePath(path),currentCacheEntry=Nd.cache[physicalPath];delete Nd.cache[physicalPath];let result;try{result=NW(physicalPath);let freshCacheEntry=Nd.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Nd.cache[physicalPath]=currentCacheEntry}return result}var xW=new Map;function CBe(r){let e=xW.get(r),t=M.statSync(r);if((e==null?void 0:e.mtime)===t.mtimeMs)return e.instance;let i=LW(r);return xW.set(r,{mtime:t.mtimeMs,instance:i}),i}var TW=(i=>(i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node",i))(TW||{});function Af(r,{cachingStrategy:e=2}={}){switch(e){case 0:return LW(r);case 1:return CBe(r);case 2:return NW(r);default:throw new Error("Unsupported caching strategy")}}function wn(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(t.map(o=>s(o)));let n=t.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>t[s])}function mBe(r){return r.length===0?null:r.map(e=>`(${PW.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function kx(r,{env:e}){let t=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return r.replace(t,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new be(`Environment variable not found (${n})`)})}function Td(r){switch(r){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${r}" as a boolean`)}}function OW(r){return typeof r>"u"?r:Td(r)}function Rx(r){try{return OW(r)}catch{return null}}function EBe(r){return!!(K.isAbsolute(r)||r.match(/^(\.{1,2}|~)\//))}var lf=(t=>(t.HARD="HARD",t.SOFT="SOFT",t))(lf||{}),Fx=(i=>(i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta",i))(Fx||{}),Nx=(i=>(i.Inactive="inactive",i.Redundant="redundant",i.Active="active",i))(Nx||{});var Ue={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},Tx=(e=>(e[e.BOLD=2]="BOLD",e))(Tx||{}),Ox=Od.default.GITHUB_ACTIONS?{level:2}:Md.default.supportsColor?{level:Md.default.supportsColor.level}:{level:0},Ly=Ox.level!==0,Mx=Ly&&!Od.default.GITHUB_ACTIONS&&!Od.default.CIRCLE&&!Od.default.GITLAB,Lx=new Md.default.Instance(Ox),IBe=new Map([[Ue.NO_HINT,null],[Ue.NULL,["#a853b5",129]],[Ue.SCOPE,["#d75f00",166]],[Ue.NAME,["#d7875f",173]],[Ue.RANGE,["#00afaf",37]],[Ue.REFERENCE,["#87afff",111]],[Ue.NUMBER,["#ffd700",220]],[Ue.PATH,["#d75fd7",170]],[Ue.URL,["#d75fd7",170]],[Ue.ADDED,["#5faf00",70]],[Ue.REMOVED,["#d70000",160]],[Ue.CODE,["#87afff",111]],[Ue.SIZE,["#ffd700",220]]]),fs=r=>r,Ny={[Ue.NUMBER]:fs({pretty:(r,e)=>Bn(r,`${e}`,Ue.NUMBER),json:r=>r}),[Ue.IDENT]:fs({pretty:(r,e)=>Ai(r,e),json:r=>Ot(r)}),[Ue.LOCATOR]:fs({pretty:(r,e)=>mt(r,e),json:r=>hs(r)}),[Ue.DESCRIPTOR]:fs({pretty:(r,e)=>tr(r,e),json:r=>Qn(r)}),[Ue.RESOLUTION]:fs({pretty:(r,{descriptor:e,locator:t})=>Hx(r,e,t),json:({descriptor:r,locator:e})=>({descriptor:Qn(r),locator:e!==null?hs(e):null})}),[Ue.DEPENDENT]:fs({pretty:(r,{locator:e,descriptor:t})=>Gx(r,e,t),json:({locator:r,descriptor:e})=>({locator:hs(r),descriptor:Qn(e)})}),[Ue.PACKAGE_EXTENSION]:fs({pretty:(r,e)=>{switch(e.type){case"Dependency":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Bn(r,"dependencies",Ue.CODE)} \u27A4 ${Ai(r,e.descriptor)}`;case"PeerDependency":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Bn(r,"peerDependencies",Ue.CODE)} \u27A4 ${Ai(r,e.descriptor)}`;case"PeerDependencyMeta":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Bn(r,"peerDependenciesMeta",Ue.CODE)} \u27A4 ${Ai(r,_i(e.selector))} \u27A4 ${Bn(r,e.key,Ue.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:r=>{switch(r.type){case"Dependency":return`${Ot(r.parentDescriptor)} > ${Ot(r.descriptor)}`;case"PeerDependency":return`${Ot(r.parentDescriptor)} >> ${Ot(r.descriptor)}`;case"PeerDependencyMeta":return`${Ot(r.parentDescriptor)} >> ${r.selector} / ${r.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${r.type}`)}}}),[Ue.SETTING]:fs({pretty:(r,e)=>(r.get(e),cf(r,Bn(r,e,Ue.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:r=>r}),[Ue.DURATION]:fs({pretty:(r,e)=>{if(e>1e3*60){let t=Math.floor(e/1e3/60),i=Math.ceil((e-t*60*1e3)/1e3);return i===0?`${t}m`:`${t}m ${i}s`}else{let t=Math.floor(e/1e3),i=e-t*1e3;return i===0?`${t}s`:`${t}s ${i}ms`}},json:r=>r}),[Ue.SIZE]:fs({pretty:(r,e)=>{let t=["KB","MB","GB","TB"],i=t.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return Bn(r,`${s} ${t[i-1]}`,Ue.NUMBER)},json:r=>r}),[Ue.PATH]:fs({pretty:(r,e)=>Bn(r,K.fromPortablePath(e),Ue.PATH),json:r=>K.fromPortablePath(r)}),[Ue.MARKDOWN]:fs({pretty:(r,{text:e,format:t,paragraphs:i})=>Ni(e,{format:t,paragraphs:i}),json:({text:r})=>r})};function eo(r,e){return[e,r]}function Ty(r,e,t){return r.get("enableColors")&&t&2&&(e=Md.default.bold(e)),e}function Bn(r,e,t){if(!r.get("enableColors"))return e;let i=IBe.get(t);if(i===null)return e;let n=typeof i>"u"?t:Ox.level>=3?i[0]:i[1],s=typeof n=="number"?Lx.ansi256(n):n.startsWith("#")?Lx.hex(n):Lx[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var yBe=!!process.env.KONSOLE_VERSION;function cf(r,e,t){return r.get("enableHyperlinks")?yBe?`\x1B]8;;${t}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${t}\x07${e}\x1B]8;;\x07`:e}function Ze(r,e,t){if(e===null)return Bn(r,"null",Ue.NULL);if(Object.prototype.hasOwnProperty.call(Ny,t))return Ny[t].pretty(r,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Bn(r,e,t)}function Kx(r,e,t,{separator:i=", "}={}){return[...e].map(n=>Ze(r,n,t)).join(i)}function cc(r,e){if(r===null)return null;if(Object.prototype.hasOwnProperty.call(Ny,e))return Ny[e].json(r);if(typeof r!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof r}`);return r}function wBe(r,e,[t,i]){return r?cc(t,i):Ze(e,t,i)}function Ux(r){return{Check:Bn(r,"\u2713","green"),Cross:Bn(r,"\u2718","red"),Question:Bn(r,"?","cyan")}}function Oo(r,{label:e,value:[t,i]}){return`${Ze(r,e,Ue.CODE)}: ${Ze(r,t,i)}`}var Oy=(n=>(n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard",n))(Oy||{});function Kd(r,{configuration:e}){let t=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of t){let f=g.get("level");if(typeof f>"u")continue;let h=g.get("code");typeof h<"u"&&i.set(h,f);let p=g.get("text");typeof p<"u"&&n.set(p,f);let C=g.get("pattern");typeof C<"u"&&s.push([MW.default.matcher(C,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===0)return h;let p=n.size>0||s.length>0?(0,KW.default)(f):f;if(n.size>0){let C=n.get(p);if(typeof C<"u")return C!=null?C:h}if(s.length>0){for(let[C,y]of s)if(C(p))return y!=null?y:h}if(i.size>0){let C=i.get(QA(g));if(typeof C<"u")return C!=null?C:h}return h},a=r.reportInfo,l=r.reportWarning,c=r.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case"info":a.call(g,f,h);break;case"warning":l.call(g,f!=null?f:0,h);break;case"error":c.call(g,f!=null?f:0,h);break}};r.reportInfo=function(...g){return u(this,...g,"info")},r.reportWarning=function(...g){return u(this,...g,"warning")},r.reportError=function(...g){return u(this,...g,"error")}}var li={};ut(li,{checksumFile:()=>uw,checksumPattern:()=>gw,makeHash:()=>Zi});var cw=J("crypto"),BD=Pe(wD());function Zi(...r){let e=(0,cw.createHash)("sha512"),t="";for(let i of r)typeof i=="string"?t+=i:i&&(t&&(e.update(t),t=""),e.update(i));return t&&e.update(t),e.digest("hex")}async function uw(r,{baseFs:e,algorithm:t}={baseFs:M,algorithm:"sha512"}){let i=await e.openPromise(r,"r");try{let s=Buffer.allocUnsafeSlow(65536),o=(0,cw.createHash)(t),a=0;for(;(a=await e.readPromise(i,s,0,65536))!==0;)o.update(a===65536?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function gw(r,{cwd:e}){let i=(await(0,BD.default)(r,{cwd:K.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,BD.default)([r,...i],{cwd:K.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=K.toPortablePath(a),u=await M.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await M.readlinkPromise(c))):u.isFile()&&l.push(await M.readFilePromise(c)),l.join("\0")})),o=(0,cw.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var Yd="virtual:",Mbe=5,z4=/(os|cpu|libc)=([a-z0-9_-]+)/,Kbe=(0,W4.makeParser)(z4);function Ho(r,e){if(r!=null&&r.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:Zi(r,e),scope:r,name:e}}function Zt(r,e){return{identHash:r.identHash,scope:r.scope,name:r.name,descriptorHash:Zi(r.identHash,e),range:e}}function $i(r,e){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:Zi(r.identHash,e),reference:e}}function Ube(r){return{identHash:r.identHash,scope:r.scope,name:r.name}}function fw(r){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:r.descriptorHash,reference:r.range}}function bD(r){return{identHash:r.identHash,scope:r.scope,name:r.name,descriptorHash:r.locatorHash,range:r.reference}}function Hbe(r){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:r.locatorHash,reference:r.reference}}function jd(r,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:r.version,languageName:r.languageName,linkType:r.linkType,conditions:r.conditions,dependencies:new Map(r.dependencies),peerDependencies:new Map(r.peerDependencies),dependenciesMeta:new Map(r.dependenciesMeta),peerDependenciesMeta:new Map(r.peerDependenciesMeta),bin:new Map(r.bin)}}function qd(r){return jd(r,r)}function SD(r,e){if(e.includes("#"))throw new Error("Invalid entropy");return Zt(r,`virtual:${e}#${r.range}`)}function vD(r,e){if(e.includes("#"))throw new Error("Invalid entropy");return jd(r,$i(r,`virtual:${e}#${r.reference}`))}function OA(r){return r.range.startsWith(Yd)}function Uo(r){return r.reference.startsWith(Yd)}function Jd(r){if(!OA(r))throw new Error("Not a virtual descriptor");return Zt(r,r.range.replace(/^[^#]*#/,""))}function Wd(r){if(!Uo(r))throw new Error("Not a virtual descriptor");return $i(r,r.reference.replace(/^[^#]*#/,""))}function Gbe(r,e){return r.range.includes("::")?r:Zt(r,`${r.range}::${df.default.stringify(e)}`)}function Ybe(r,e){return r.reference.includes("::")?r:$i(r,`${r.reference}::${df.default.stringify(e)}`)}function zd(r,e){return r.identHash===e.identHash}function V4(r,e){return r.descriptorHash===e.descriptorHash}function Vd(r,e){return r.locatorHash===e.locatorHash}function jbe(r,e){if(!Uo(r))throw new Error("Invalid package type");if(!Uo(e))throw new Error("Invalid package type");if(!zd(r,e)||r.dependencies.size!==e.dependencies.size)return!1;for(let t of r.dependencies.values()){let i=e.dependencies.get(t.identHash);if(!i||!V4(t,i))return!1}return!0}function _i(r){let e=X4(r);if(!e)throw new Error(`Invalid ident (${r})`);return e}function X4(r){let e=r.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,t,i]=e;return Ho(typeof t<"u"?t:null,i)}function MA(r,e=!1){let t=Xd(r,e);if(!t)throw new Error(`Invalid descriptor (${r})`);return t}function Xd(r,e=!1){let t=e?r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,i,n,s]=t;if(s==="unknown")throw new Error(`Invalid range (${r})`);let o=typeof i<"u"?i:null,a=typeof s<"u"?s:"unknown";return Zt(Ho(o,n),a)}function Cc(r,e=!1){let t=hw(r,e);if(!t)throw new Error(`Invalid locator (${r})`);return t}function hw(r,e=!1){let t=e?r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,i,n,s]=t;if(s==="unknown")throw new Error(`Invalid reference (${r})`);let o=typeof i<"u"?i:null,a=typeof s<"u"?s:"unknown";return $i(Ho(o,n),a)}function Cf(r,e){let t=r.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(t===null)throw new Error(`Invalid range (${r})`);let i=typeof t[1]<"u"?t[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof t[3]<"u"?decodeURIComponent(t[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${r})`);let s=typeof t[3]<"u"?decodeURIComponent(t[3]):decodeURIComponent(t[2]),o=e!=null&&e.parseSelector?df.default.parse(s):s,a=typeof t[4]<"u"?df.default.parse(t[4]):null;return{protocol:i,source:n,selector:o,params:a}}function qbe(r,{protocol:e}){let{selector:t,params:i}=Cf(r,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${r}`);return{parentLocator:Cc(i.locator,!0),path:t}}function q4(r){return r=r.replace(/%/g,"%25"),r=r.replace(/:/g,"%3A"),r=r.replace(/#/g,"%23"),r}function Jbe(r){return r===null?!1:Object.entries(r).length>0}function pw({protocol:r,source:e,selector:t,params:i}){let n="";return r!==null&&(n+=`${r}`),e!==null&&(n+=`${q4(e)}#`),n+=q4(t),Jbe(i)&&(n+=`::${df.default.stringify(i)}`),n}function Wbe(r){let{params:e,protocol:t,source:i,selector:n}=Cf(r);for(let s in e)s.startsWith("__")&&delete e[s];return pw({protocol:t,source:i,params:e,selector:n})}function Ot(r){return r.scope?`@${r.scope}/${r.name}`:`${r.name}`}function Qn(r){return r.scope?`@${r.scope}/${r.name}@${r.range}`:`${r.name}@${r.range}`}function hs(r){return r.scope?`@${r.scope}/${r.name}@${r.reference}`:`${r.name}@${r.reference}`}function QD(r){return r.scope!==null?`@${r.scope}-${r.name}`:r.name}function mf(r){let{protocol:e,selector:t}=Cf(r.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=J4.default.valid(t),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=r.scope?`${QD(r)}-${s}-${r.locatorHash.slice(0,o)}`:`${QD(r)}-${s}-${r.locatorHash.slice(0,o)}`;return Ur(a)}function Ai(r,e){return e.scope?`${Ze(r,`@${e.scope}/`,Ue.SCOPE)}${Ze(r,e.name,Ue.NAME)}`:`${Ze(r,e.name,Ue.NAME)}`}function dw(r){if(r.startsWith(Yd)){let e=dw(r.substring(r.indexOf("#")+1)),t=r.substring(Yd.length,Yd.length+Mbe);return`${e} [${t}]`}else return r.replace(/\?.*/,"?[...]")}function Cw(r,e){return`${Ze(r,dw(e),Ue.RANGE)}`}function tr(r,e){return`${Ai(r,e)}${Ze(r,"@",Ue.RANGE)}${Cw(r,e.range)}`}function _d(r,e){return`${Ze(r,dw(e),Ue.REFERENCE)}`}function mt(r,e){return`${Ai(r,e)}${Ze(r,"@",Ue.REFERENCE)}${_d(r,e.reference)}`}function xD(r){return`${Ot(r)}@${dw(r.reference)}`}function Ef(r){return wn(r,[e=>Ot(e),e=>e.range])}function Zd(r,e){return Ai(r,e.locator)}function Hx(r,e,t){let i=OA(e)?Jd(e):e;return t===null?`${tr(r,i)} \u2192 ${Ux(r).Cross}`:i.identHash===t.identHash?`${tr(r,i)} \u2192 ${_d(r,t.reference)}`:`${tr(r,i)} \u2192 ${mt(r,t)}`}function Gx(r,e,t){return t===null?`${mt(r,e)}`:`${mt(r,e)} (via ${Cw(r,t.range)})`}function PD(r){return`node_modules/${Ot(r)}`}function mw(r,e){return r.conditions?Kbe(r.conditions,t=>{let[,i,n]=t.match(z4),s=e[i];return s?s.includes(n):!0}):!0}var _4={hooks:{reduceDependency:(r,e,t,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==Ot(t)||o.from&&o.from.description&&o.from.description!==t.reference||o.descriptor.fullName!==Ot(r)||o.descriptor.description&&o.descriptor.description!==r.range)continue;return n.bindDescriptor(Zt(r,a),e.topLevelWorkspace.anchoredLocator,s)}return r},validateProject:async(r,e)=>{for(let t of r.workspaces){let i=Zd(r.configuration,t);await r.configuration.triggerHook(n=>n.validateWorkspace,t,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(r,e)=>{let{manifest:t}=r;t.resolutions.length&&r.cwd!==r.project.cwd&&t.errors.push(new Error("Resolutions field will be ignored"));for(let i of t.errors)e.reportWarning(57,i.message)}}};var n8=Pe(Xr());var $d=class{supportsDescriptor(e,t){return!!(e.range.startsWith($d.protocol)||t.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,t){return!!e.reference.startsWith($d.protocol)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,t,i){return null}async resolve(e,t){let i=t.project.getWorkspaceByCwd(e.reference.slice($d.protocol.length));return{...e,version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin}}},jr=$d;jr.protocol="workspace:";var vt={};ut(vt,{SemVer:()=>e8.SemVer,clean:()=>Vbe,satisfiesWithPrereleases:()=>mc,validRange:()=>to});var Ew=Pe(Xr()),e8=Pe(Xr()),Z4=new Map;function mc(r,e,t=!1){if(!r)return!1;let i=`${e}${t}`,n=Z4.get(i);if(typeof n>"u")try{n=new Ew.default.Range(e,{includePrerelease:!0,loose:t})}catch{return!1}finally{Z4.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Ew.default.SemVer(r,n)}catch{return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var $4=new Map;function to(r){if(r.indexOf(":")!==-1)return null;let e=$4.get(r);if(typeof e<"u")return e;try{e=new Ew.default.Range(r)}catch{e=null}return $4.set(r,e),e}var zbe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/;function Vbe(r){let e=zbe.exec(r);return e?e[1]:null}var KA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:t=new $t}={}){let i=x.join(e,"package.json");try{return await KA.fromFile(i,{baseFs:t})}catch(n){if(n.code==="ENOENT")return null;throw n}}static async find(e,{baseFs:t}={}){let i=await KA.tryFind(e,{baseFs:t});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:t=new $t}={}){let i=new KA;return await i.loadFile(e,{baseFs:t}),i}static fromText(e){let t=new KA;return t.loadFromText(e),t}static isManifestFieldCompatible(e,t){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,t===s.slice(1))return!1}else if(i=!1,s===t)return!0;return n&&i}loadFromText(e){let t;try{t=JSON.parse(r8(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(t),this.indent=t8(e)}async loadFile(e,{baseFs:t=new $t}){let i=await t.readFilePromise(e,"utf8"),n;try{n=JSON.parse(r8(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=t8(i)}load(e,{yamlCompatibilityMode:t=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=_i(e.name)}catch{i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(Array.isArray(e.libc)){let s=[];this.libc=s;for(let o of e.libc)typeof o!="string"?i.push(new Error("Parsing failed for the 'libc' field")):s.push(o)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}let a=_i(s);this.bin.set(a.name,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=_i(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Zt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=_i(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Zt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=_i(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(jr.protocol)&&!to(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Zt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=MA(s),l=this.ensureDependencyMeta(a),c=Iw(o.built,{yamlCompatibilityMode:t});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Iw(o.optional,{yamlCompatibilityMode:t});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Iw(o.unplugged,{yamlCompatibilityMode:t});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=MA(s),l=this.ensurePeerDependencyMeta(a),c=Iw(o.optional,{yamlCompatibilityMode:t});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:rI(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=_i(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Zt(a,o);this.dependencies.set(l.identHash,l);let c=Zt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(DD("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(DD("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(DD("libc",this.libc)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return KA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return KA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!n8.default.valid(e.range))throw new Error(`Invalid meta field range for '${Qn(e)}'`);let t=Ot(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(t);n||this.dependenciesMeta.set(t,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${Qn(e)}'`);let t=Ot(e),i=this.peerDependenciesMeta.get(t);return i||this.peerDependenciesMeta.set(t,i={}),i}setRawField(e,t,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=t;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=t,a=!0))}}exportTo(e,{compatibilityMode:t=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=Ot(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:o})=>o)}:e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(Ot(o)),l=!1;if(t&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ef(i).map(o=>({[Ot(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ef(n).map(o=>({[Ot(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ef(this.devDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ef(this.peerDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of wn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of wn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?Qn(Zt(_i(o),l)):o,g={...c};t&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...wn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[iI(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},ot=KA;ot.fileName="package.json",ot.allDependencies=["dependencies","devDependencies","peerDependencies"],ot.hardDependencies=["dependencies","devDependencies"];function t8(r){let e=r.match(/^[ \t]+/m);return e?e[0]:" "}function r8(r){return r.charCodeAt(0)===65279?r.slice(1):r}function en(r){return r.replace(/\\/g,"/")}function Iw(r,{yamlCompatibilityMode:e}){return e?Rx(r):typeof r>"u"||typeof r=="boolean"?r:null}function i8(r,e){let t=e.search(/[^!]/);if(t===-1)return"invalid";let i=t%2===0?"":"!",n=e.slice(t);return`${i}${r}=${n}`}function DD(r,e){return e.length===1?i8(r,e[0]):`(${e.map(t=>i8(r,t)).join(" | ")})`}var L8=Pe(N8()),T8=J("stream"),O8=J("string_decoder");var GSe=15,at=class extends Error{constructor(t,i,n){super(i);this.reportExtra=n;this.reportCode=t}};function YSe(r){return typeof r.reportCode<"u"}var Si=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let t=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),t=l,c()},o=(l=0)=>{s(t+1)},a=async function*(){for(;t{t=o}),n=(0,L8.default)(o=>{let a=t;i=new Promise(l=>{t=l}),e=o,a()},1e3/GSe),s=async function*(){for(;;)await i,yield{title:e}}();return{[Symbol.asyncIterator](){return s},hasProgress:!1,hasTitle:!0,setTitle:n}}async startProgressPromise(e,t){let i=this.reportProgress(e);try{return await t(e)}finally{i.stop()}}startProgressSync(e,t){let i=this.reportProgress(e);try{return t(e)}finally{i.stop()}}reportInfoOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedInfos.has(n)||(this.reportedInfos.add(n),this.reportInfo(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportWarningOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedWarnings.has(n)||(this.reportedWarnings.add(n),this.reportWarning(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportErrorOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedErrors.has(n)||(this.reportedErrors.add(n),this.reportError(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportExceptionOnce(e){YSe(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let t=new T8.PassThrough,i=new O8.StringDecoder,n="";return t.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),t}};var If=class{constructor(e){this.fetchers=e}supports(e,t){return!!this.tryFetcher(e,t)}getLocalPath(e,t){return this.getFetcher(e,t).getLocalPath(e,t)}async fetch(e,t){return await this.getFetcher(e,t).fetch(e,t)}tryFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));return i||null}getFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));if(!i)throw new at(11,`${mt(t.project.configuration,e)} isn't supported by any available fetcher`);return i}};var yf=class{constructor(e){this.resolvers=e.filter(t=>t)}supportsDescriptor(e,t){return!!this.tryResolverByDescriptor(e,t)}supportsLocator(e,t){return!!this.tryResolverByLocator(e,t)}shouldPersistResolution(e,t){return this.getResolverByLocator(e,t).shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,t,i)}getResolutionDependencies(e,t){return this.getResolverByDescriptor(e,t).getResolutionDependencies(e,t)}async getCandidates(e,t,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,t,i)}async getSatisfying(e,t,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,t,i)}async resolve(e,t){return await this.getResolverByLocator(e,t).resolve(e,t)}tryResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));return i||null}getResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));if(!i)throw new Error(`${tr(t.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));return i||null}getResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));if(!i)throw new Error(`${mt(t.project.configuration,e)} isn't supported by any available resolver`);return i}};var M8=Pe(Xr());var wf=/^(?!v)[a-z0-9._-]+$/i,yw=class{supportsDescriptor(e,t){return!!(to(e.range)||wf.test(e.range))}supportsLocator(e,t){return!!(M8.default.valid(e.reference)||wf.test(e.reference))}shouldPersistResolution(e,t){return t.resolver.shouldPersistResolution(this.forwardLocator(e,t),t)}bindDescriptor(e,t,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),t,i)}getResolutionDependencies(e,t){return t.resolver.getResolutionDependencies(this.forwardDescriptor(e,t),t)}async getCandidates(e,t,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),t,i)}async getSatisfying(e,t,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),t,i)}async resolve(e,t){let i=await t.resolver.resolve(this.forwardLocator(e,t),t);return jd(i,e)}forwardDescriptor(e,t){return Zt(e,`${t.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,t){return $i(e,`${t.project.configuration.get("defaultProtocol")}${e.reference}`)}};var Bf=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=$i(e,n);return t.fetcher.getLocalPath(s,t)}async fetch(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=$i(e,n),o=await t.fetcher.fetch(s,t);return await this.ensureVirtualLink(e,o,t)}getLocatorFilename(e){return mf(e)}async ensureVirtualLink(e,t,i){let n=t.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Br.makeVirtualPath(s,o,n),l=new yo(a,{baseFs:t.packageFs,pathUtils:x});return{...t,packageFs:l}}};var Qf=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Qf.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Qf.protocol)}supportsDescriptor(e,t){return Qf.isVirtualDescriptor(e)}supportsLocator(e,t){return Qf.isVirtualLocator(e)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,t){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,t,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,t,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,t){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},rC=Qf;rC.protocol="virtual:";var bf=class{supports(e){return!!e.reference.startsWith(jr.protocol)}getLocalPath(e,t){return this.getWorkspace(e,t).cwd}async fetch(e,t){let i=this.getWorkspace(e,t).cwd;return{packageFs:new jt(i),prefixPath:Oe.dot,localPath:i}}getWorkspace(e,t){return t.project.getWorkspaceByCwd(e.reference.slice(jr.protocol.length))}};var ww={};ut(ww,{getDefaultGlobalFolder:()=>ND,getHomeFolder:()=>iC,isFolderInside:()=>LD});var FD=J("os");function ND(){if(process.platform==="win32"){let r=K.toPortablePath(process.env.LOCALAPPDATA||K.join((0,FD.homedir)(),"AppData","Local"));return x.resolve(r,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let r=K.toPortablePath(process.env.XDG_DATA_HOME);return x.resolve(r,"yarn/berry")}return x.resolve(iC(),".yarn/berry")}function iC(){return K.toPortablePath((0,FD.homedir)()||"/usr/local/share")}function LD(r,e){let t=x.relative(e,r);return t&&!t.startsWith("..")&&!x.isAbsolute(t)}var Cs={};ut(Cs,{availableParallelism:()=>MD,builtinModules:()=>TD,getArchitecture:()=>nC,getArchitectureName:()=>JSe,getArchitectureSet:()=>OD,openUrl:()=>jSe});var U8=Pe(J("module")),bw=Pe(J("os"));var K8=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),jSe=typeof K8<"u"?async r=>{try{return await KD(K8,[r],{cwd:x.cwd()}),!0}catch{return!1}}:void 0;function TD(){return new Set(U8.default.builtinModules||Object.keys(process.binding("natives")))}function qSe(){var i,n,s,o;if(process.platform==="win32")return null;let e=(s=((n=(i=process.report)==null?void 0:i.getReport())!=null?n:{}).sharedObjects)!=null?s:[],t=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return(o=Ld(e,a=>{let l=a.match(t);if(!l)return Ld.skip;if(l[1])return"glibc";if(l[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")}))!=null?o:null}var Bw,Qw;function nC(){return Bw=Bw!=null?Bw:{os:process.platform,cpu:process.arch,libc:qSe()}}function JSe(r=nC()){return r.libc?`${r.os}-${r.cpu}-${r.libc}`:`${r.os}-${r.cpu}`}function OD(){let r=nC();return Qw=Qw!=null?Qw:{os:[r.os],cpu:[r.cpu],libc:r.libc?[r.libc]:[]}}function MD(){return"availableParallelism"in bw.default?bw.default.availableParallelism():Math.max(1,bw.default.cpus().length)}var WSe=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),Pw="yarn_",YD=".yarnrc.yml",jD="yarn.lock",zSe="********",qD=(u=>(u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP",u))(qD||{}),vi=Ue,UD={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:"BOOLEAN",default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:"STRING",default:null},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:ND()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:Ol},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:"STRING",default:jD},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:xw()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Ly,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Sw.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Sw.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:"BOOLEAN",default:Sw.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(Oy),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};function JD(r,e,t,i,n){if(i.isArray||i.type==="ANY"&&Array.isArray(t))return Array.isArray(t)?t.map((s,o)=>HD(r,`${e}[${o}]`,s,i,n)):String(t).split(/,/).map(s=>HD(r,e,s,i,n));if(Array.isArray(t))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return HD(r,e,t,i,n)}function HD(r,e,t,i,n){var a;switch(i.type){case"ANY":return t;case"SHAPE":return VSe(r,e,t,i,n);case"MAP":return XSe(r,e,t,i,n)}if(t===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)!=null&&a.includes(t))return t;let o=(()=>{if(i.type==="BOOLEAN"&&typeof t!="string")return Td(t);if(typeof t!="string")throw new Error(`Expected value (${t}) to be a string`);let l=kx(t,{env:process.env});switch(i.type){case"ABSOLUTE_PATH":return x.resolve(n,K.toPortablePath(l));case"LOCATOR_LOOSE":return Cc(l,!1);case"NUMBER":return parseInt(l);case"LOCATOR":return Cc(l);case"BOOLEAN":return Td(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function VSe(r,e,t,i,n){if(typeof t!="object"||Array.isArray(t))throw new be(`Object configuration settings "${e}" must be an object`);let s=WD(r,i,{ignoreArrays:!0});if(t===null)return s;for(let[o,a]of Object.entries(t)){let l=`${e}.${o}`;if(!i.properties[o])throw new be(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,JD(r,l,a,i.properties[o],n))}return s}function XSe(r,e,t,i,n){let s=new Map;if(typeof t!="object"||Array.isArray(t))throw new be(`Map configuration settings "${e}" must be an object`);if(t===null)return s;for(let[o,a]of Object.entries(t)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,JD(r,c,a,u,n))}return s}function WD(r,e,{ignoreArrays:t=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!t)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,WD(r,s));return i}break;case"MAP":return e.isArray&&!t?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:r.projectCwd===null?x.isAbsolute(e.default)?x.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>x.resolve(r.projectCwd,i)):x.resolve(r.projectCwd,e.default);default:return e.default}}function vw(r,e,t){if(e.type==="SECRET"&&typeof r=="string"&&t.hideSecrets)return zSe;if(e.type==="ABSOLUTE_PATH"&&typeof r=="string"&&t.getNativePaths)return K.fromPortablePath(r);if(e.isArray&&Array.isArray(r)){let i=[];for(let n of r)i.push(vw(n,e,t));return i}if(e.type==="MAP"&&r instanceof Map){let i=new Map;for(let[n,s]of r.entries())i.set(n,vw(s,e.valueDefinition,t));return i}if(e.type==="SHAPE"&&r instanceof Map){let i=new Map;for(let[n,s]of r.entries()){let o=e.properties[n];i.set(n,vw(s,o,t))}return i}return r}function _Se(){let r={};for(let[e,t]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(Pw)&&(e=(0,H8.default)(e.slice(Pw.length)),r[e]=t);return r}function xw(){let r=`${Pw}rc_filename`;for(let[e,t]of Object.entries(process.env))if(e.toLowerCase()===r&&typeof t=="string")return t;return YD}var zD=(i=>(i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE",i))(zD||{}),Na=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,t,i){let n=new Na(e);typeof t<"u"&&!(t instanceof Map)&&(n.projectCwd=t),n.importSettings(UD);let s=typeof i<"u"?i:t instanceof Map?t:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,t,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=_Se();delete a.rcFilename;let l=await Na.findRcFiles(e),c=await Na.findHomeRcFile();if(c){let B=l.find(v=>v.path===c.path);B?B.strict=!1:l.push({...c,strict:!1})}let u=({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L})=>({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L}),g=({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L,...H})=>H,f=new Na(e);f.importSettings(u(UD)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:B,cwd:v,data:D}of l)f.useWithSource(B,u(D),v,{strict:!1});if(s){let B=f.get("yarnPath"),v=f.get("ignorePath");if(B!==null&&!v)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Na.findProjectCwd(e,h);break;case 1:p=await Na.findProjectCwd(e,null);break;case 2:M.existsSync(x.join(e,"package.json"))?p=x.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(UD));let C=new Map([["@@core",_4]]),y=B=>"default"in B?B.default:B;if(t!==null){for(let L of t.plugins.keys())C.set(L,y(t.modules.get(L)));let B=new Map;for(let L of TD())B.set(L,()=>Af(L));for(let[L,H]of t.modules)B.set(L,()=>H);let v=new Set,D=async(L,H)=>{let{factory:j,name:$}=Af(L);if(v.has($))return;let V=new Map(B),W=A=>{if(V.has(A))return V.get(A)();throw new be(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},Z=await of(async()=>y(await j(W)),A=>`${A} (when initializing ${$}, defined in ${H})`);B.set($,()=>Z),v.add($),C.set($,Z)};if(a.plugins)for(let L of a.plugins.split(";")){let H=x.resolve(e,K.toPortablePath(L));await D(H,"")}for(let{path:L,cwd:H,data:j}of l)if(!!o&&!!Array.isArray(j.plugins))for(let $ of j.plugins){let V=typeof $!="string"?$.path:$,W=x.resolve(H,K.toPortablePath(V));await D(W,L)}}for(let[B,v]of C)f.activatePlugin(B,v);f.useWithSource("",g(a),e,{strict:n});for(let{path:B,cwd:v,data:D,strict:L}of l)f.useWithSource(B,g(D),v,{strict:L!=null?L:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let t=xw(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=x.join(s,t);if(M.existsSync(o)){let a=await M.readFilePromise(o,"utf8"),l;try{l=Ii(a)}catch{let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new be(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=x.dirname(s)}return i}static async findHomeRcFile(){let e=xw(),t=iC(),i=x.join(t,e);if(M.existsSync(i)){let n=await M.readFilePromise(i,"utf8"),s=Ii(n);return{path:i,cwd:t,data:s}}return null}static async findProjectCwd(e,t){let i=null,n=e,s=null;for(;n!==s;){if(s=n,M.existsSync(x.join(s,"package.json"))&&(i=s),t!==null){if(M.existsSync(x.join(s,t))){i=s;break}}else if(i!==null)break;n=x.dirname(s)}return i}static async updateConfiguration(e,t){let i=xw(),n=x.join(e,i),s=M.existsSync(n)?Ii(await M.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof t=="function"){try{a=t(s)}catch{a=t({})}if(a===s)return}else{a=s;for(let l of Object.keys(t)){let c=s[l],u=t[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await M.changeFilePromise(n,Ca(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let t=iC();return await Na.updateConfiguration(t,e)}activatePlugin(e,t){this.plugins.set(e,t),typeof t.configuration<"u"&&this.importSettings(t.configuration)}importSettings(e){for(let[t,i]of Object.entries(e))if(i!=null){if(this.settings.has(t))throw new Error(`Cannot redefine settings "${t}"`);this.settings.set(t,i),this.values.set(t,WD(this,i))}}useWithSource(e,t,i,n){try{this.use(e,t,i,n)}catch(s){throw s.message+=` (in ${Ze(this,e,Ue.PATH)})`,s}}use(e,t,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(t)]){if(typeof t[o]>"u"||o==="plugins"||e===""&&WSe.has(o))continue;if(o==="rcFilename")throw new be(`The rcFilename settings can only be set via ${`${Pw}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new be(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type==="MAP"||l.isArray&&l.concatenateValues))continue;let c;try{c=JD(this,o,t[o],l,i)}catch(u){throw u.message+=` in ${Ze(this,e,Ue.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type==="MAP"){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:t=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s>"u")throw new be(`Couldn't find a configuration settings named "${e}"`);return vw(n,s,{hideSecrets:t,getNativePaths:i})}getSubprocessStreams(e,{header:t,prefix:i,report:n}){let s,o,a=M.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ze(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ze(this,"STDERR","red")}`);s=new GD.PassThrough,s.pipe(l),s.pipe(a),o=new GD.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof t<"u"&&s.write(`${t} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let t of this.plugins.values())for(let i of t.resolvers||[])e.push(new i);return new yf([new rC,new jr,new yw,...e])}makeFetcher(){let e=[];for(let t of this.plugins.values())for(let i of t.fetchers||[])e.push(new i);return new If([new Bf,new bf,...e])}getLinkers(){let e=[];for(let t of this.plugins.values())for(let i of t.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=nC(),t=this.get("supportedArchitectures"),i=t.get("os");i!==null&&(i=i.map(o=>o==="current"?e.os:o));let n=t.get("cpu");n!==null&&(n=n.map(o=>o==="current"?e.cpu:o));let s=t.get("libc");return s!==null&&(s=To(s,o=>{var a;return o==="current"?(a=e.libc)!=null?a:To.skip:o})),{os:i,cpu:n,libc:s}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,t=(i,n,{userProvided:s=!1}={})=>{if(!to(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new ot;o.load(n,{yamlCompatibilityMode:!0});let a=nf(e,i.identHash),l=[];a.push([i.range,l]);let c={status:"inactive",userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push({...c,type:"Dependency",descriptor:u});for(let u of o.peerDependencies.values())l.push({...c,type:"PeerDependency",descriptor:u});for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push({...c,type:"PeerDependencyMeta",selector:u,key:f,value:h})};await this.triggerHook(i=>i.registerPackageExtensions,this,t);for(let[i,n]of this.get("packageExtensions"))t(MA(i,!0),Fy(n),{userProvided:!0})}normalizePackage(e){let t=qd(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i<"u"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!mc(s,o))for(let l of a)switch(l.status==="inactive"&&(l.status="redundant"),l.type){case"Dependency":typeof t.dependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.dependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependency":typeof t.peerDependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependencyMeta":{let c=t.peerDependenciesMeta.get(l.selector);(typeof c>"u"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status="active",xa(t.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Px(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of t.peerDependenciesMeta.keys()){let o=_i(s);t.peerDependencies.has(o.identHash)||t.peerDependencies.set(o.identHash,Zt(o,"*"))}for(let s of t.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Ho("types",o),l=Ot(a);t.peerDependencies.has(a.identHash)||t.peerDependenciesMeta.has(l)||(t.peerDependencies.set(a.identHash,Zt(a,"*")),t.peerDependenciesMeta.set(l,{optional:!0}))}return t.dependencies=new Map(wn(t.dependencies,([,s])=>Qn(s))),t.peerDependencies=new Map(wn(t.peerDependencies,([,s])=>Qn(s))),t}getLimit(e){return xa(this.limits,e,()=>(0,G8.default)(this.get(e)))}async triggerHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...t)}}async triggerMultipleHooks(e,t){for(let i of t)await this.triggerHook(e,...i)}async reduceHook(e,t,...i){let n=t;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...t);if(typeof o<"u")return o}return null}},ye=Na;ye.telemetry=null;var ZD=(i=>(i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always",i))(ZD||{}),sC=class extends at{constructor({fileName:t,code:i,signal:n}){let s=ye.create(x.cwd()),o=Ze(s,t,Ue.PATH);super(1,`Child ${o} reported an error`,a=>{$Se(i,n,{configuration:s,report:a})});this.code=$D(i,n)}},Dw=class extends sC{constructor({fileName:t,code:i,signal:n,stdout:s,stderr:o}){super({fileName:t,code:i,signal:n});this.stdout=s,this.stderr=o}};function yc(r){return r!==null&&typeof r.fd=="number"}var wc=new Set;function VD(){}function XD(){for(let r of wc)r.kill()}async function Yo(r,e,{cwd:t,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":yc(s)&&(c[0]=s),yc(o)&&(c[1]=o),yc(a)&&(c[2]=a);let u=(0,_D.default)(r,e,{cwd:K.fromPortablePath(t),env:{...i,PWD:K.fromPortablePath(t)},stdio:c});wc.add(u),wc.size===1&&(process.on("SIGINT",VD),process.on("SIGTERM",XD)),!yc(s)&&s!==null&&s.pipe(u.stdin),yc(o)||u.stdout.pipe(o,{end:!1}),yc(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))yc(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{wc.delete(u),wc.size===0&&(process.off("SIGINT",VD),process.off("SIGTERM",XD)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,C)=>{wc.delete(u),wc.size===0&&(process.off("SIGINT",VD),process.off("SIGTERM",XD)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:$D(p,C)}):h(new sC({fileName:r,code:p,signal:C}))})})}async function KD(r,e,{cwd:t,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=K.fromPortablePath(t);typeof i.PWD<"u"&&(i={...i,PWD:c});let u=(0,_D.default)(r,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",h=>{let p=ye.create(t),C=Ze(p,r,Ue.PATH);f(new at(1,`Process ${C} failed to spawn`,y=>{y.reportError(1,` ${Oo(p,{label:"Thrown Error",value:eo(Ue.NO_HINT,h.message)})}`)}))}),u.on("close",(h,p)=>{let C=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),y=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:$D(h,p),stdout:C,stderr:y}):f(new Dw({fileName:r,code:h,signal:p,stdout:C,stderr:y}))})})}var ZSe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function $D(r,e){let t=ZSe.get(e);return typeof t<"u"?128+t:r!=null?r:1}function $Se(r,e,{configuration:t,report:i}){i.reportError(1,` ${Oo(t,r!==null?{label:"Exit Code",value:eo(Ue.NUMBER,r)}:{label:"Exit Signal",value:eo(Ue.CODE,e)})}`)}var Vt={};ut(Vt,{Method:()=>BV,RequestError:()=>QV.RequestError,del:()=>cDe,get:()=>ADe,getNetworkSettings:()=>wV,post:()=>pR,put:()=>lDe,request:()=>dC});var EV=Pe(nB()),IV=J("https"),yV=J("http"),hR=Pe(yn()),fR=Pe(pV()),sB=J("url");var QV=Pe(nB()),dV=new Map,CV=new Map,sDe=new yV.Agent({keepAlive:!0}),oDe=new IV.Agent({keepAlive:!0});function mV(r){let e=new sB.URL(r),t={host:e.hostname,headers:{}};return e.port&&(t.port=Number(e.port)),{proxy:t}}async function gR(r){return xa(CV,r,()=>M.readFilePromise(r).then(e=>(CV.set(r,e),e)))}function aDe({statusCode:r,statusMessage:e},t){let i=Ze(t,r,Ue.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${r}`;return cf(t,`${i}${e?` (${e})`:""}`,n)}async function oB(r,{configuration:e,customErrorMessage:t}){var i,n;try{return await r}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=t==null?void 0:t(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof EV.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ze(e,"httpTimeout",Ue.SETTING)})`);let a=new at(35,o,l=>{s.response&&l.reportError(35,` ${Oo(e,{label:"Response Code",value:eo(Ue.NO_HINT,aDe(s.response,e))})}`),s.request&&(l.reportError(35,` ${Oo(e,{label:"Request Method",value:eo(Ue.NO_HINT,s.request.options.method)})}`),l.reportError(35,` ${Oo(e,{label:"Request URL",value:eo(Ue.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(35,` ${Oo(e,{label:"Request Redirects",value:eo(Ue.NO_HINT,Kx(e,s.request.redirects,Ue.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(35,` ${Oo(e,{label:"Request Retry Count",value:eo(Ue.NO_HINT,`${Ze(e,s.request.retryCount,Ue.NUMBER)} (can be increased via ${Ze(e,"httpRetry",Ue.SETTING)})`)})}`)});throw a.originalError=s,a}}function wV(r,e){let t=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},n=Object.keys(i),s=typeof r=="string"?new sB.URL(r):r;for(let[o,a]of t)if(hR.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]>"u"&&(i[l]=c)}for(let o of n)typeof i[o]>"u"&&(i[o]=e.configuration.get(o));return i}var BV=(n=>(n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE",n))(BV||{});async function dC(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o="GET"}){let a=async()=>await uDe(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o});return await(await t.reduceHook(c=>c.wrapNetworkRequest,a,{target:r,body:e,configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o}))()}async function ADe(r,{configuration:e,jsonResponse:t,...i}){let n=xa(dV,r,()=>oB(dC(r,null,{configuration:e,...i}),{configuration:e}).then(s=>(dV.set(r,s.body),s.body)));return Buffer.isBuffer(n)===!1&&(n=await n),t?JSON.parse(n.toString()):n}async function lDe(r,e,{customErrorMessage:t,...i}){return(await oB(dC(r,e,{...i,method:"PUT"}),i)).body}async function pR(r,e,{customErrorMessage:t,...i}){return(await oB(dC(r,e,{...i,method:"POST"}),i)).body}async function cDe(r,{customErrorMessage:e,...t}){return(await oB(dC(r,null,{...t,method:"DELETE"}),t)).body}async function uDe(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o="GET"}){let a=typeof r=="string"?new sB.URL(r):r,l=wV(a,{configuration:t});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!hR.default.isMatch(a.hostname,t.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?fR.default.httpOverHttp(mV(l.httpProxy)):sDe,https:l.httpsProxy?fR.default.httpsOverHttp(mV(l.httpsProxy)):oDe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=t.get("httpTimeout"),f=t.get("httpRetry"),h=t.get("enableStrictSsl"),p=l.caFilePath,C=l.httpsCertFilePath,y=l.httpsKeyFilePath,{default:B}=await Promise.resolve().then(()=>Pe(nB())),v=p?await gR(p):void 0,D=C?await gR(C):void 0,L=y?await gR(y):void 0,H=B.extend({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:v,certificate:D,key:L},...u});return t.getLimit("networkConcurrency")(()=>H(a))}var Jt={};ut(Jt,{PackageManager:()=>T6,detectPackageManager:()=>O6,executePackageAccessibleBinary:()=>G6,executePackageScript:()=>wB,executePackageShellcode:()=>DR,executeWorkspaceAccessibleBinary:()=>Dke,executeWorkspaceLifecycleScript:()=>U6,executeWorkspaceScript:()=>K6,getPackageAccessibleBinaries:()=>BB,getWorkspaceAccessibleBinaries:()=>H6,hasPackageScript:()=>vke,hasWorkspaceScript:()=>kR,makeScriptEnv:()=>wC,maybeExecuteWorkspaceLifecycleScript:()=>Pke,prepareExternalProject:()=>Ske});var CC={};ut(CC,{getLibzipPromise:()=>rn,getLibzipSync:()=>DV});var PV=Pe(SV());var qA=["number","number"],vV=(F=>(F[F.ZIP_ER_OK=0]="ZIP_ER_OK",F[F.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",F[F.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",F[F.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",F[F.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",F[F.ZIP_ER_READ=5]="ZIP_ER_READ",F[F.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",F[F.ZIP_ER_CRC=7]="ZIP_ER_CRC",F[F.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",F[F.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",F[F.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",F[F.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",F[F.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",F[F.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",F[F.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",F[F.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",F[F.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",F[F.ZIP_ER_EOF=17]="ZIP_ER_EOF",F[F.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",F[F.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",F[F.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",F[F.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",F[F.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",F[F.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",F[F.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",F[F.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",F[F.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",F[F.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",F[F.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",F[F.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",F[F.ZIP_ER_TELL=30]="ZIP_ER_TELL",F[F.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",F))(vV||{}),xV=r=>({get HEAP8(){return r.HEAP8},get HEAPU8(){return r.HEAPU8},errors:vV,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:r._malloc(1),uint16S:r._malloc(2),uint32S:r._malloc(4),uint64S:r._malloc(8),malloc:r._malloc,free:r._free,getValue:r.getValue,open:r.cwrap("zip_open","number",["string","number","number"]),openFromSource:r.cwrap("zip_open_from_source","number",["number","number","number"]),close:r.cwrap("zip_close","number",["number"]),discard:r.cwrap("zip_discard",null,["number"]),getError:r.cwrap("zip_get_error","number",["number"]),getName:r.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:r.cwrap("zip_get_num_entries","number",["number","number"]),delete:r.cwrap("zip_delete","number",["number","number"]),stat:r.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:r.cwrap("zip_stat_index","number",["number",...qA,"number","number"]),fopen:r.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:r.cwrap("zip_fopen_index","number",["number",...qA,"number"]),fread:r.cwrap("zip_fread","number",["number","number","number","number"]),fclose:r.cwrap("zip_fclose","number",["number"]),dir:{add:r.cwrap("zip_dir_add","number",["number","string"])},file:{add:r.cwrap("zip_file_add","number",["number","string","number","number"]),getError:r.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:r.cwrap("zip_file_get_external_attributes","number",["number",...qA,"number","number","number"]),setExternalAttributes:r.cwrap("zip_file_set_external_attributes","number",["number",...qA,"number","number","number"]),setMtime:r.cwrap("zip_file_set_mtime","number",["number",...qA,"number","number"]),setCompression:r.cwrap("zip_set_file_compression","number",["number",...qA,"number","number"])},ext:{countSymlinks:r.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:r.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:r.cwrap("zip_error_strerror","string",["number"])},name:{locate:r.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:r.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:r.cwrap("zip_source_buffer","number",["number","number",...qA,"number"]),free:r.cwrap("zip_source_free",null,["number"]),keep:r.cwrap("zip_source_keep",null,["number"]),open:r.cwrap("zip_source_open","number",["number"]),close:r.cwrap("zip_source_close","number",["number"]),seek:r.cwrap("zip_source_seek","number",["number",...qA,"number"]),tell:r.cwrap("zip_source_tell","number",["number"]),read:r.cwrap("zip_source_read","number",["number","number","number"]),error:r.cwrap("zip_source_error","number",["number"]),setMtime:r.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:r.cwrap("zipstruct_stat","number",[]),statS:r.cwrap("zipstruct_statS","number",[]),statName:r.cwrap("zipstruct_stat_name","string",["number"]),statIndex:r.cwrap("zipstruct_stat_index","number",["number"]),statSize:r.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:r.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:r.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:r.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:r.cwrap("zipstruct_stat_crc","number",["number"]),error:r.cwrap("zipstruct_error","number",[]),errorS:r.cwrap("zipstruct_errorS","number",[]),errorCodeZip:r.cwrap("zipstruct_error_code_zip","number",["number"])}});var mR=null;function DV(){return mR===null&&(mR=xV((0,PV.default)())),mR}async function rn(){return DV()}var yC={};ut(yC,{ShellError:()=>qn,execute:()=>pB,globUtils:()=>cB});var jV=Pe(ax()),qV=J("os"),Jn=J("stream"),JV=J("util");var qn=class extends Error{constructor(e){super(e),this.name="ShellError"}};var cB={};ut(cB,{fastGlobOptions:()=>FV,isBraceExpansion:()=>ER,isGlobPattern:()=>gDe,match:()=>fDe,micromatchOptions:()=>lB});var kV=Pe(iw()),RV=Pe(J("fs")),AB=Pe(yn()),lB={strictBrackets:!0},FV={onlyDirectories:!1,onlyFiles:!1};function gDe(r){if(!AB.default.scan(r,lB).isGlob)return!1;try{AB.default.parse(r,lB)}catch{return!1}return!0}function fDe(r,{cwd:e,baseFs:t}){return(0,kV.default)(r,{...FV,cwd:K.fromPortablePath(e),fs:XE(RV.default,new Cg(t))})}function ER(r){return AB.default.scan(r,lB).isBrace}var LV=Pe(IS()),qo=J("stream"),TV=J("string_decoder");var Qc=new Set;function IR(){}function yR(){for(let r of Qc)r.kill()}function OV(r,e,t,i){return n=>{let s=n[0]instanceof qo.Transform?"pipe":n[0],o=n[1]instanceof qo.Transform?"pipe":n[1],a=n[2]instanceof qo.Transform?"pipe":n[2],l=(0,LV.default)(r,e,{...i,stdio:[s,o,a]});return Qc.add(l),Qc.size===1&&(process.on("SIGINT",IR),process.on("SIGTERM",yR)),n[0]instanceof qo.Transform&&n[0].pipe(l.stdin),n[1]instanceof qo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof qo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(Qc.delete(l),Qc.size===0&&(process.off("SIGINT",IR),process.off("SIGTERM",yR)),u.code){case"ENOENT":n[2].write(`command not found: ${r} +`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:Hn.defaultContext.colorDepth>1)?lv:vH}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};Hn.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in fv.default.WriteStream.prototype?fv.default.WriteStream.prototype.getColorDepth():nCe()};var NH;function sCe(r){let e=NH;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return LH;let{AsyncLocalStorage:t}=J("async_hooks");e=NH=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function LH(r){return r()}var hv={};ut(hv,{DefinitionsCommand:()=>Ad,HelpCommand:()=>ld,VersionCommand:()=>cd});var Ad=class extends ve{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};Ad.paths=[["--clipanion=definitions"]];var ld=class extends ve{async execute(){this.context.stdout.write(this.cli.usage())}};ld.paths=[["-h"],["--help"]];var cd=class extends ve{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};cd.paths=[["-v"],["--version"]];var z={};ut(z,{Array:()=>TH,Boolean:()=>OH,Counter:()=>MH,Proxy:()=>UH,Rest:()=>KH,String:()=>HH,applyValidator:()=>nd,cleanValidationError:()=>DI,formatError:()=>id,isOptionSymbol:()=>rd,makeCommandOption:()=>Vi,rerouteArguments:()=>Po});function TH(r,e,t){let[i,n]=Po(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Vi({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function OH(r,e,t){let[i,n]=Po(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Vi({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function MH(r,e,t){let[i,n]=Po(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Vi({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function UH(r={}){return Vi({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}function KH(r={}){return Vi({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Kn||a.extra===!1&&oo)}})}function oCe(r,e,t){let[i,n]=Po(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Vi({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?nd(g!=null?g:c,f,n.validator):f}})}function aCe(r={}){let{required:e=!0}=r;return Vi({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o(se[se.UNNAMED=0]="UNNAMED",se[se.EXCEPTION=1]="EXCEPTION",se[se.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",se[se.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",se[se.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",se[se.BUILD_DISABLED=5]="BUILD_DISABLED",se[se.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",se[se.MUST_BUILD=7]="MUST_BUILD",se[se.MUST_REBUILD=8]="MUST_REBUILD",se[se.BUILD_FAILED=9]="BUILD_FAILED",se[se.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",se[se.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",se[se.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",se[se.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",se[se.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",se[se.REMOTE_INVALID=15]="REMOTE_INVALID",se[se.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",se[se.RESOLUTION_PACK=17]="RESOLUTION_PACK",se[se.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",se[se.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",se[se.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",se[se.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",se[se.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",se[se.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",se[se.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",se[se.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",se[se.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",se[se.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",se[se.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",se[se.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",se[se.FETCH_FAILED=30]="FETCH_FAILED",se[se.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",se[se.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",se[se.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",se[se.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",se[se.NETWORK_ERROR=35]="NETWORK_ERROR",se[se.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",se[se.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",se[se.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",se[se.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",se[se.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",se[se.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",se[se.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",se[se.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",se[se.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",se[se.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",se[se.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",se[se.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",se[se.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",se[se.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",se[se.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",se[se.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",se[se.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",se[se.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",se[se.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",se[se.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",se[se.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",se[se.INVALID_MANIFEST=57]="INVALID_MANIFEST",se[se.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",se[se.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",se[se.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",se[se.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",se[se.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",se[se.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",se[se.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",se[se.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",se[se.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",se[se.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",se[se.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",se[se.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",se[se.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",se[se.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",se[se.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",se[se.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",se[se.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",se[se.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",se[se.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",se[se.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",se[se.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",se))(Ct||{});function FA(r){return`YN${r.toString(10).padStart(4,"0")}`}function TI(r){let e=Number(r.slice(2));if(typeof Ct[e]>"u")throw new Error(`Unknown message name: "${r}"`);return e}var P={};ut(P,{areDescriptorsEqual:()=>QW,areIdentsEqual:()=>sC,areLocatorsEqual:()=>oC,areVirtualPackagesEquivalent:()=>RSe,bindDescriptor:()=>DSe,bindLocator:()=>kSe,convertDescriptorToLocator:()=>Sw,convertLocatorToDescriptor:()=>HD,convertPackageToLocator:()=>PSe,convertToIdent:()=>xSe,convertToManifestRange:()=>LSe,copyPackage:()=>rC,devirtualizeDescriptor:()=>iC,devirtualizeLocator:()=>nC,getIdentVendorPath:()=>qD,isPackageCompatible:()=>kw,isVirtualDescriptor:()=>JA,isVirtualLocator:()=>jo,makeDescriptor:()=>_t,makeIdent:()=>qo,makeLocator:()=>rn,makeRange:()=>xw,parseDescriptor:()=>WA,parseFileStyleRange:()=>FSe,parseIdent:()=>en,parseLocator:()=>Dc,parseRange:()=>vf,prettyDependent:()=>nP,prettyDescriptor:()=>tr,prettyIdent:()=>Ai,prettyLocator:()=>mt,prettyLocatorNoColors:()=>jD,prettyRange:()=>Dw,prettyReference:()=>AC,prettyResolution:()=>iP,prettyWorkspace:()=>lC,renamePackage:()=>tC,slugifyIdent:()=>KD,slugifyLocator:()=>xf,sortDescriptors:()=>Pf,stringifyDescriptor:()=>bn,stringifyIdent:()=>Ot,stringifyLocator:()=>Es,tryParseDescriptor:()=>aC,tryParseIdent:()=>bW,tryParseLocator:()=>vw,virtualizeDescriptor:()=>GD,virtualizePackage:()=>YD});var Sf=Pe(J("querystring")),yW=Pe(Xr()),wW=Pe(dJ());var ee={};ut(ee,{LogLevel:()=>Xy,Style:()=>_x,Type:()=>Ke,addLogFilterSupport:()=>Xd,applyColor:()=>Qn,applyHyperlink:()=>If,applyStyle:()=>Vy,json:()=>Bc,jsonOrPretty:()=>c0e,mark:()=>rP,pretty:()=>$e,prettyField:()=>Ho,prettyList:()=>tP,supportsColor:()=>zy,supportsHyperlinks:()=>eP,tuple:()=>no});var Vd=Pe(wx()),zd=Pe(Ac());var f8=Pe(wn()),h8=Pe(r8());var Ie={};ut(Ie,{AsyncActions:()=>Gx,BufferStream:()=>Hx,CachingStrategy:()=>u8,DefaultStream:()=>Yx,allSettledSafe:()=>io,assertNever:()=>qx,bufferStream:()=>Cf,buildIgnorePattern:()=>o0e,convertMapsToIndexableObjects:()=>Jy,dynamicRequire:()=>mf,escapeRegExp:()=>e0e,getArrayWithDefault:()=>hf,getFactoryWithDefault:()=>Na,getMapWithDefault:()=>pf,getSetWithDefault:()=>wc,isIndexableObject:()=>Kx,isPathLike:()=>a0e,isTaggedYarnVersion:()=>$Be,mapAndFilter:()=>Ko,mapAndFind:()=>Jd,overrideType:()=>t0e,parseBoolean:()=>Wd,parseOptionalBoolean:()=>g8,prettifyAsyncErrors:()=>df,prettifySyncErrors:()=>Jx,releaseAfterUseAsync:()=>i0e,replaceEnvVariables:()=>Wx,sortMap:()=>Bn,tryParseOptionalBoolean:()=>zx,validateEnum:()=>r0e});var n8=Pe(wn()),s8=Pe(Jg()),o8=Pe(Xr()),jx=J("stream");function $Be(r){return!!(o8.default.valid(r)&&r.match(/^[^-]+(-rc\.[0-9]+)?$/))}function e0e(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function t0e(r){}function qx(r){throw new Error(`Assertion failed: Unexpected object '${r}'`)}function r0e(r,e){let t=Object.values(r);if(!t.includes(e))throw new be(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${t.map(i=>JSON.stringify(i)).join(", ")})`);return e}function Ko(r,e){let t=[];for(let i of r){let n=e(i);n!==a8&&t.push(n)}return t}var a8=Symbol();Ko.skip=a8;function Jd(r,e){for(let t of r){let i=e(t);if(i!==A8)return i}}var A8=Symbol();Jd.skip=A8;function Kx(r){return typeof r=="object"&&r!==null}async function io(r){let e=await Promise.allSettled(r),t=[];for(let i of e){if(i.status==="rejected")throw i.reason;t.push(i.value)}return t}function Jy(r){if(r instanceof Map&&(r=Object.fromEntries(r)),Kx(r))for(let e of Object.keys(r)){let t=r[e];Kx(t)&&(r[e]=Jy(t))}return r}function Na(r,e,t){let i=r.get(e);return typeof i>"u"&&r.set(e,i=t()),i}function hf(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=[]),t}function wc(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=new Set),t}function pf(r,e){let t=r.get(e);return typeof t>"u"&&r.set(e,t=new Map),t}async function i0e(r,e){if(e==null)return await r();try{return await r()}finally{await e()}}async function df(r,e){try{return await r()}catch(t){throw t.message=e(t.message),t}}function Jx(r,e){try{return r()}catch(t){throw t.message=e(t.message),t}}async function Cf(r){return await new Promise((e,t)=>{let i=[];r.on("error",n=>{t(n)}),r.on("data",n=>{i.push(n)}),r.on("end",()=>{e(Buffer.concat(i))})})}var Hx=class extends jx.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(t,i,n){if(i!=="buffer"||!Buffer.isBuffer(t))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(t),n(null,null)}_flush(t){t(null,Buffer.concat(this.chunks))}};function n0e(){let r,e;return{promise:new Promise((i,n)=>{r=i,e=n}),resolve:r,reject:e}}var Gx=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,s8.default)(e)}set(e,t){let i=this.deferred.get(e);typeof i>"u"&&this.deferred.set(e,i=n0e());let n=this.limit(()=>t());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,t){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>t(i))}async wait(){await Promise.all(this.promises.values())}},Yx=class extends jx.Transform{constructor(t=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=t}_transform(t,i,n){if(i!=="buffer"||!Buffer.isBuffer(t))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,n(null,t)}_flush(t){this.active&&this.ifEmpty.length>0?t(null,this.ifEmpty):t(null)}},qd=eval("require");function l8(r){return qd(U.fromPortablePath(r))}function c8(path){let physicalPath=U.fromPortablePath(path),currentCacheEntry=qd.cache[physicalPath];delete qd.cache[physicalPath];let result;try{result=l8(physicalPath);let freshCacheEntry=qd.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{qd.cache[physicalPath]=currentCacheEntry}return result}var i8=new Map;function s0e(r){let e=i8.get(r),t=M.statSync(r);if((e==null?void 0:e.mtime)===t.mtimeMs)return e.instance;let i=c8(r);return i8.set(r,{mtime:t.mtimeMs,instance:i}),i}var u8=(i=>(i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node",i))(u8||{});function mf(r,{cachingStrategy:e=2}={}){switch(e){case 0:return c8(r);case 1:return s0e(r);case 2:return l8(r);default:throw new Error("Unsupported caching strategy")}}function Bn(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(t.map(o=>s(o)));let n=t.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>t[s])}function o0e(r){return r.length===0?null:r.map(e=>`(${n8.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Wx(r,{env:e}){let t=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return r.replace(t,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new be(`Environment variable not found (${n})`)})}function Wd(r){switch(r){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${r}" as a boolean`)}}function g8(r){return typeof r>"u"?r:Wd(r)}function zx(r){try{return g8(r)}catch{return null}}function a0e(r){return!!(U.isAbsolute(r)||r.match(/^(\.{1,2}|~)\//))}var Ef=(t=>(t.HARD="HARD",t.SOFT="SOFT",t))(Ef||{}),Vx=(i=>(i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta",i))(Vx||{}),Xx=(i=>(i.Inactive="inactive",i.Redundant="redundant",i.Active="active",i))(Xx||{});var Ke={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},_x=(e=>(e[e.BOLD=2]="BOLD",e))(_x||{}),$x=zd.default.GITHUB_ACTIONS?{level:2}:Vd.default.supportsColor?{level:Vd.default.supportsColor.level}:{level:0},zy=$x.level!==0,eP=zy&&!zd.default.GITHUB_ACTIONS&&!zd.default.CIRCLE&&!zd.default.GITLAB,Zx=new Vd.default.Instance($x),A0e=new Map([[Ke.NO_HINT,null],[Ke.NULL,["#a853b5",129]],[Ke.SCOPE,["#d75f00",166]],[Ke.NAME,["#d7875f",173]],[Ke.RANGE,["#00afaf",37]],[Ke.REFERENCE,["#87afff",111]],[Ke.NUMBER,["#ffd700",220]],[Ke.PATH,["#d75fd7",170]],[Ke.URL,["#d75fd7",170]],[Ke.ADDED,["#5faf00",70]],[Ke.REMOVED,["#d70000",160]],[Ke.CODE,["#87afff",111]],[Ke.SIZE,["#ffd700",220]]]),ms=r=>r,Wy={[Ke.NUMBER]:ms({pretty:(r,e)=>Qn(r,`${e}`,Ke.NUMBER),json:r=>r}),[Ke.IDENT]:ms({pretty:(r,e)=>Ai(r,e),json:r=>Ot(r)}),[Ke.LOCATOR]:ms({pretty:(r,e)=>mt(r,e),json:r=>Es(r)}),[Ke.DESCRIPTOR]:ms({pretty:(r,e)=>tr(r,e),json:r=>bn(r)}),[Ke.RESOLUTION]:ms({pretty:(r,{descriptor:e,locator:t})=>iP(r,e,t),json:({descriptor:r,locator:e})=>({descriptor:bn(r),locator:e!==null?Es(e):null})}),[Ke.DEPENDENT]:ms({pretty:(r,{locator:e,descriptor:t})=>nP(r,e,t),json:({locator:r,descriptor:e})=>({locator:Es(r),descriptor:bn(e)})}),[Ke.PACKAGE_EXTENSION]:ms({pretty:(r,e)=>{switch(e.type){case"Dependency":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Qn(r,"dependencies",Ke.CODE)} \u27A4 ${Ai(r,e.descriptor)}`;case"PeerDependency":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Qn(r,"peerDependencies",Ke.CODE)} \u27A4 ${Ai(r,e.descriptor)}`;case"PeerDependencyMeta":return`${Ai(r,e.parentDescriptor)} \u27A4 ${Qn(r,"peerDependenciesMeta",Ke.CODE)} \u27A4 ${Ai(r,en(e.selector))} \u27A4 ${Qn(r,e.key,Ke.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:r=>{switch(r.type){case"Dependency":return`${Ot(r.parentDescriptor)} > ${Ot(r.descriptor)}`;case"PeerDependency":return`${Ot(r.parentDescriptor)} >> ${Ot(r.descriptor)}`;case"PeerDependencyMeta":return`${Ot(r.parentDescriptor)} >> ${r.selector} / ${r.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${r.type}`)}}}),[Ke.SETTING]:ms({pretty:(r,e)=>(r.get(e),If(r,Qn(r,e,Ke.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:r=>r}),[Ke.DURATION]:ms({pretty:(r,e)=>{if(e>1e3*60){let t=Math.floor(e/1e3/60),i=Math.ceil((e-t*60*1e3)/1e3);return i===0?`${t}m`:`${t}m ${i}s`}else{let t=Math.floor(e/1e3),i=e-t*1e3;return i===0?`${t}s`:`${t}s ${i}ms`}},json:r=>r}),[Ke.SIZE]:ms({pretty:(r,e)=>{let t=["KB","MB","GB","TB"],i=t.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return Qn(r,`${s} ${t[i-1]}`,Ke.NUMBER)},json:r=>r}),[Ke.PATH]:ms({pretty:(r,e)=>Qn(r,U.fromPortablePath(e),Ke.PATH),json:r=>U.fromPortablePath(r)}),[Ke.MARKDOWN]:ms({pretty:(r,{text:e,format:t,paragraphs:i})=>Li(e,{format:t,paragraphs:i}),json:({text:r})=>r})};function no(r,e){return[e,r]}function Vy(r,e,t){return r.get("enableColors")&&t&2&&(e=Vd.default.bold(e)),e}function Qn(r,e,t){if(!r.get("enableColors"))return e;let i=A0e.get(t);if(i===null)return e;let n=typeof i>"u"?t:$x.level>=3?i[0]:i[1],s=typeof n=="number"?Zx.ansi256(n):n.startsWith("#")?Zx.hex(n):Zx[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var l0e=!!process.env.KONSOLE_VERSION;function If(r,e,t){return r.get("enableHyperlinks")?l0e?`\x1B]8;;${t}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${t}\x07${e}\x1B]8;;\x07`:e}function $e(r,e,t){if(e===null)return Qn(r,"null",Ke.NULL);if(Object.prototype.hasOwnProperty.call(Wy,t))return Wy[t].pretty(r,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Qn(r,e,t)}function tP(r,e,t,{separator:i=", "}={}){return[...e].map(n=>$e(r,n,t)).join(i)}function Bc(r,e){if(r===null)return null;if(Object.prototype.hasOwnProperty.call(Wy,e))return Wy[e].json(r);if(typeof r!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof r}`);return r}function c0e(r,e,[t,i]){return r?Bc(t,i):$e(e,t,i)}function rP(r){return{Check:Qn(r,"\u2713","green"),Cross:Qn(r,"\u2718","red"),Question:Qn(r,"?","cyan")}}function Ho(r,{label:e,value:[t,i]}){return`${$e(r,e,Ke.CODE)}: ${$e(r,t,i)}`}var Xy=(n=>(n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard",n))(Xy||{});function Xd(r,{configuration:e}){let t=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of t){let f=g.get("level");if(typeof f>"u")continue;let h=g.get("code");typeof h<"u"&&i.set(h,f);let p=g.get("text");typeof p<"u"&&n.set(p,f);let C=g.get("pattern");typeof C<"u"&&s.push([f8.default.matcher(C,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===0)return h;let p=n.size>0||s.length>0?(0,h8.default)(f):f;if(n.size>0){let C=n.get(p);if(typeof C<"u")return C!=null?C:h}if(s.length>0){for(let[C,y]of s)if(C(p))return y!=null?y:h}if(i.size>0){let C=i.get(FA(g));if(typeof C<"u")return C!=null?C:h}return h},a=r.reportInfo,l=r.reportWarning,c=r.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case"info":a.call(g,f,h);break;case"warning":l.call(g,f!=null?f:0,h);break;case"error":c.call(g,f!=null?f:0,h);break}};r.reportInfo=function(...g){return u(this,...g,"info")},r.reportWarning=function(...g){return u(this,...g,"warning")},r.reportError=function(...g){return u(this,...g,"error")}}var li={};ut(li,{checksumFile:()=>Qw,checksumPattern:()=>bw,makeHash:()=>tn});var Bw=J("crypto"),UD=Pe(MD());function tn(...r){let e=(0,Bw.createHash)("sha512"),t="";for(let i of r)typeof i=="string"?t+=i:i&&(t&&(e.update(t),t=""),e.update(i));return t&&e.update(t),e.digest("hex")}async function Qw(r,{baseFs:e,algorithm:t}={baseFs:M,algorithm:"sha512"}){let i=await e.openPromise(r,"r");try{let s=Buffer.allocUnsafeSlow(65536),o=(0,Bw.createHash)(t),a=0;for(;(a=await e.readPromise(i,s,0,65536))!==0;)o.update(a===65536?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function bw(r,{cwd:e}){let i=(await(0,UD.default)(r,{cwd:U.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,UD.default)([r,...i],{cwd:U.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=U.toPortablePath(a),u=await M.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await M.readlinkPromise(c))):u.isFile()&&l.push(await M.readFilePromise(c)),l.join("\0")})),o=(0,Bw.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var eC="virtual:",SSe=5,BW=/(os|cpu|libc)=([a-z0-9_-]+)/,vSe=(0,wW.makeParser)(BW);function qo(r,e){if(r!=null&&r.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:tn(r,e),scope:r,name:e}}function _t(r,e){return{identHash:r.identHash,scope:r.scope,name:r.name,descriptorHash:tn(r.identHash,e),range:e}}function rn(r,e){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:tn(r.identHash,e),reference:e}}function xSe(r){return{identHash:r.identHash,scope:r.scope,name:r.name}}function Sw(r){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:r.descriptorHash,reference:r.range}}function HD(r){return{identHash:r.identHash,scope:r.scope,name:r.name,descriptorHash:r.locatorHash,range:r.reference}}function PSe(r){return{identHash:r.identHash,scope:r.scope,name:r.name,locatorHash:r.locatorHash,reference:r.reference}}function tC(r,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:r.version,languageName:r.languageName,linkType:r.linkType,conditions:r.conditions,dependencies:new Map(r.dependencies),peerDependencies:new Map(r.peerDependencies),dependenciesMeta:new Map(r.dependenciesMeta),peerDependenciesMeta:new Map(r.peerDependenciesMeta),bin:new Map(r.bin)}}function rC(r){return tC(r,r)}function GD(r,e){if(e.includes("#"))throw new Error("Invalid entropy");return _t(r,`virtual:${e}#${r.range}`)}function YD(r,e){if(e.includes("#"))throw new Error("Invalid entropy");return tC(r,rn(r,`virtual:${e}#${r.reference}`))}function JA(r){return r.range.startsWith(eC)}function jo(r){return r.reference.startsWith(eC)}function iC(r){if(!JA(r))throw new Error("Not a virtual descriptor");return _t(r,r.range.replace(/^[^#]*#/,""))}function nC(r){if(!jo(r))throw new Error("Not a virtual descriptor");return rn(r,r.reference.replace(/^[^#]*#/,""))}function DSe(r,e){return r.range.includes("::")?r:_t(r,`${r.range}::${Sf.default.stringify(e)}`)}function kSe(r,e){return r.reference.includes("::")?r:rn(r,`${r.reference}::${Sf.default.stringify(e)}`)}function sC(r,e){return r.identHash===e.identHash}function QW(r,e){return r.descriptorHash===e.descriptorHash}function oC(r,e){return r.locatorHash===e.locatorHash}function RSe(r,e){if(!jo(r))throw new Error("Invalid package type");if(!jo(e))throw new Error("Invalid package type");if(!sC(r,e)||r.dependencies.size!==e.dependencies.size)return!1;for(let t of r.dependencies.values()){let i=e.dependencies.get(t.identHash);if(!i||!QW(t,i))return!1}return!0}function en(r){let e=bW(r);if(!e)throw new Error(`Invalid ident (${r})`);return e}function bW(r){let e=r.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,t,i]=e;return qo(typeof t<"u"?t:null,i)}function WA(r,e=!1){let t=aC(r,e);if(!t)throw new Error(`Invalid descriptor (${r})`);return t}function aC(r,e=!1){let t=e?r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,i,n,s]=t;if(s==="unknown")throw new Error(`Invalid range (${r})`);let o=typeof i<"u"?i:null,a=typeof s<"u"?s:"unknown";return _t(qo(o,n),a)}function Dc(r,e=!1){let t=vw(r,e);if(!t)throw new Error(`Invalid locator (${r})`);return t}function vw(r,e=!1){let t=e?r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):r.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,i,n,s]=t;if(s==="unknown")throw new Error(`Invalid reference (${r})`);let o=typeof i<"u"?i:null,a=typeof s<"u"?s:"unknown";return rn(qo(o,n),a)}function vf(r,e){let t=r.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(t===null)throw new Error(`Invalid range (${r})`);let i=typeof t[1]<"u"?t[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof t[3]<"u"?decodeURIComponent(t[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${r})`);let s=typeof t[3]<"u"?decodeURIComponent(t[3]):decodeURIComponent(t[2]),o=e!=null&&e.parseSelector?Sf.default.parse(s):s,a=typeof t[4]<"u"?Sf.default.parse(t[4]):null;return{protocol:i,source:n,selector:o,params:a}}function FSe(r,{protocol:e}){let{selector:t,params:i}=vf(r,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${r}`);return{parentLocator:Dc(i.locator,!0),path:t}}function IW(r){return r=r.replace(/%/g,"%25"),r=r.replace(/:/g,"%3A"),r=r.replace(/#/g,"%23"),r}function NSe(r){return r===null?!1:Object.entries(r).length>0}function xw({protocol:r,source:e,selector:t,params:i}){let n="";return r!==null&&(n+=`${r}`),e!==null&&(n+=`${IW(e)}#`),n+=IW(t),NSe(i)&&(n+=`::${Sf.default.stringify(i)}`),n}function LSe(r){let{params:e,protocol:t,source:i,selector:n}=vf(r);for(let s in e)s.startsWith("__")&&delete e[s];return xw({protocol:t,source:i,params:e,selector:n})}function Ot(r){return r.scope?`@${r.scope}/${r.name}`:`${r.name}`}function bn(r){return r.scope?`@${r.scope}/${r.name}@${r.range}`:`${r.name}@${r.range}`}function Es(r){return r.scope?`@${r.scope}/${r.name}@${r.reference}`:`${r.name}@${r.reference}`}function KD(r){return r.scope!==null?`@${r.scope}-${r.name}`:r.name}function xf(r){let{protocol:e,selector:t}=vf(r.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=yW.default.valid(t),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=r.scope?`${KD(r)}-${s}-${r.locatorHash.slice(0,o)}`:`${KD(r)}-${s}-${r.locatorHash.slice(0,o)}`;return Kr(a)}function Ai(r,e){return e.scope?`${$e(r,`@${e.scope}/`,Ke.SCOPE)}${$e(r,e.name,Ke.NAME)}`:`${$e(r,e.name,Ke.NAME)}`}function Pw(r){if(r.startsWith(eC)){let e=Pw(r.substring(r.indexOf("#")+1)),t=r.substring(eC.length,eC.length+SSe);return`${e} [${t}]`}else return r.replace(/\?.*/,"?[...]")}function Dw(r,e){return`${$e(r,Pw(e),Ke.RANGE)}`}function tr(r,e){return`${Ai(r,e)}${$e(r,"@",Ke.RANGE)}${Dw(r,e.range)}`}function AC(r,e){return`${$e(r,Pw(e),Ke.REFERENCE)}`}function mt(r,e){return`${Ai(r,e)}${$e(r,"@",Ke.REFERENCE)}${AC(r,e.reference)}`}function jD(r){return`${Ot(r)}@${Pw(r.reference)}`}function Pf(r){return Bn(r,[e=>Ot(e),e=>e.range])}function lC(r,e){return Ai(r,e.locator)}function iP(r,e,t){let i=JA(e)?iC(e):e;return t===null?`${tr(r,i)} \u2192 ${rP(r).Cross}`:i.identHash===t.identHash?`${tr(r,i)} \u2192 ${AC(r,t.reference)}`:`${tr(r,i)} \u2192 ${mt(r,t)}`}function nP(r,e,t){return t===null?`${mt(r,e)}`:`${mt(r,e)} (via ${Dw(r,t.range)})`}function qD(r){return`node_modules/${Ot(r)}`}function kw(r,e){return r.conditions?vSe(r.conditions,t=>{let[,i,n]=t.match(BW),s=e[i];return s?s.includes(n):!0}):!0}var SW={hooks:{reduceDependency:(r,e,t,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==Ot(t)||o.from&&o.from.description&&o.from.description!==t.reference||o.descriptor.fullName!==Ot(r)||o.descriptor.description&&o.descriptor.description!==r.range)continue;return n.bindDescriptor(_t(r,a),e.topLevelWorkspace.anchoredLocator,s)}return r},validateProject:async(r,e)=>{for(let t of r.workspaces){let i=lC(r.configuration,t);await r.configuration.triggerHook(n=>n.validateWorkspace,t,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(r,e)=>{let{manifest:t}=r;t.resolutions.length&&r.cwd!==r.project.cwd&&t.errors.push(new Error("Resolutions field will be ignored"));for(let i of t.errors)e.reportWarning(57,i.message)}}};var FW=Pe(Xr());var cC=class{supportsDescriptor(e,t){return!!(e.range.startsWith(cC.protocol)||t.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,t){return!!e.reference.startsWith(cC.protocol)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,t,i){return null}async resolve(e,t){let i=t.project.getWorkspaceByCwd(e.reference.slice(cC.protocol.length));return{...e,version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin}}},jr=cC;jr.protocol="workspace:";var vt={};ut(vt,{SemVer:()=>PW.SemVer,clean:()=>OSe,satisfiesWithPrereleases:()=>kc,validRange:()=>so});var Rw=Pe(Xr()),PW=Pe(Xr()),vW=new Map;function kc(r,e,t=!1){if(!r)return!1;let i=`${e}${t}`,n=vW.get(i);if(typeof n>"u")try{n=new Rw.default.Range(e,{includePrerelease:!0,loose:t})}catch{return!1}finally{vW.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Rw.default.SemVer(r,n)}catch{return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var xW=new Map;function so(r){if(r.indexOf(":")!==-1)return null;let e=xW.get(r);if(typeof e<"u")return e;try{e=new Rw.default.Range(r)}catch{e=null}return xW.set(r,e),e}var TSe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/;function OSe(r){let e=TSe.exec(r);return e?e[1]:null}var zA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:t=new $t}={}){let i=x.join(e,"package.json");try{return await zA.fromFile(i,{baseFs:t})}catch(n){if(n.code==="ENOENT")return null;throw n}}static async find(e,{baseFs:t}={}){let i=await zA.tryFind(e,{baseFs:t});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:t=new $t}={}){let i=new zA;return await i.loadFile(e,{baseFs:t}),i}static fromText(e){let t=new zA;return t.loadFromText(e),t}static isManifestFieldCompatible(e,t){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,t===s.slice(1))return!1}else if(i=!1,s===t)return!0;return n&&i}loadFromText(e){let t;try{t=JSON.parse(kW(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(t),this.indent=DW(e)}async loadFile(e,{baseFs:t=new $t}){let i=await t.readFilePromise(e,"utf8"),n;try{n=JSON.parse(kW(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=DW(i)}load(e,{yamlCompatibilityMode:t=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=en(e.name)}catch{i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(Array.isArray(e.libc)){let s=[];this.libc=s;for(let o of e.libc)typeof o!="string"?i.push(new Error("Parsing failed for the 'libc' field")):s.push(o)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=nn(e.main):this.main=null,typeof e.module=="string"?this.module=nn(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=nn(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(nn(s),typeof o=="string"?nn(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,nn(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}let a=en(s);this.bin.set(a.name,nn(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=en(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=_t(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=en(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=_t(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=en(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(jr.protocol)&&!so(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=_t(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=WA(s),l=this.ensureDependencyMeta(a),c=Fw(o.built,{yamlCompatibilityMode:t});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Fw(o.optional,{yamlCompatibilityMode:t});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Fw(o.unplugged,{yamlCompatibilityMode:t});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=WA(s),l=this.ensurePeerDependencyMeta(a),c=Fw(o.optional,{yamlCompatibilityMode:t});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:hI(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=nn(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=nn(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=nn(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(nn(s),typeof o=="string"?nn(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,nn(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,nn(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(nn(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=en(s)}catch{i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=_t(a,o);this.dependencies.set(l.identHash,l);let c=_t(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(JD("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(JD("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(JD("libc",this.libc)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return zA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return zA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!FW.default.valid(e.range))throw new Error(`Invalid meta field range for '${bn(e)}'`);let t=Ot(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(t);n||this.dependenciesMeta.set(t,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${bn(e)}'`);let t=Ot(e),i=this.peerDependenciesMeta.get(t);return i||this.peerDependenciesMeta.set(t,i={}),i}setRawField(e,t,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=t;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=t,a=!0))}}exportTo(e,{compatibilityMode:t=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=Ot(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:o})=>o)}:e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(Ot(o)),l=!1;if(t&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Pf(i).map(o=>({[Ot(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Pf(n).map(o=>({[Ot(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Pf(this.devDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Pf(this.peerDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of Bn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of Bn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?bn(_t(en(o),l)):o,g={...c};t&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...Bn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[pI(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},ot=zA;ot.fileName="package.json",ot.allDependencies=["dependencies","devDependencies","peerDependencies"],ot.hardDependencies=["dependencies","devDependencies"];function DW(r){let e=r.match(/^[ \t]+/m);return e?e[0]:" "}function kW(r){return r.charCodeAt(0)===65279?r.slice(1):r}function nn(r){return r.replace(/\\/g,"/")}function Fw(r,{yamlCompatibilityMode:e}){return e?zx(r):typeof r>"u"||typeof r=="boolean"?r:null}function RW(r,e){let t=e.search(/[^!]/);if(t===-1)return"invalid";let i=t%2===0?"":"!",n=e.slice(t);return`${i}${r}=${n}`}function JD(r,e){return e.length===1?RW(r,e[0]):`(${e.map(t=>RW(r,t)).join(" | ")})`}var cz=Pe(lz()),uz=J("stream"),gz=J("string_decoder");var Dve=15,at=class extends Error{constructor(t,i,n){super(i);this.reportExtra=n;this.reportCode=t}};function kve(r){return typeof r.reportCode<"u"}var vi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let t=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),t=l,c()},o=(l=0)=>{s(t+1)},a=async function*(){for(;t{t=o}),n=(0,cz.default)(o=>{let a=t;i=new Promise(l=>{t=l}),e=o,a()},1e3/Dve),s=async function*(){for(;;)await i,yield{title:e}}();return{[Symbol.asyncIterator](){return s},hasProgress:!1,hasTitle:!0,setTitle:n}}async startProgressPromise(e,t){let i=this.reportProgress(e);try{return await t(e)}finally{i.stop()}}startProgressSync(e,t){let i=this.reportProgress(e);try{return t(e)}finally{i.stop()}}reportInfoOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedInfos.has(n)||(this.reportedInfos.add(n),this.reportInfo(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportWarningOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedWarnings.has(n)||(this.reportedWarnings.add(n),this.reportWarning(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportErrorOnce(e,t,i){var s;let n=i&&i.key?i.key:t;this.reportedErrors.has(n)||(this.reportedErrors.add(n),this.reportError(e,t),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportExceptionOnce(e){kve(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let t=new uz.PassThrough,i=new gz.StringDecoder,n="";return t.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),t}};var Df=class{constructor(e){this.fetchers=e}supports(e,t){return!!this.tryFetcher(e,t)}getLocalPath(e,t){return this.getFetcher(e,t).getLocalPath(e,t)}async fetch(e,t){return await this.getFetcher(e,t).fetch(e,t)}tryFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));return i||null}getFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));if(!i)throw new at(11,`${mt(t.project.configuration,e)} isn't supported by any available fetcher`);return i}};var kf=class{constructor(e){this.resolvers=e.filter(t=>t)}supportsDescriptor(e,t){return!!this.tryResolverByDescriptor(e,t)}supportsLocator(e,t){return!!this.tryResolverByLocator(e,t)}shouldPersistResolution(e,t){return this.getResolverByLocator(e,t).shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,t,i)}getResolutionDependencies(e,t){return this.getResolverByDescriptor(e,t).getResolutionDependencies(e,t)}async getCandidates(e,t,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,t,i)}async getSatisfying(e,t,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,t,i)}async resolve(e,t){return await this.getResolverByLocator(e,t).resolve(e,t)}tryResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));return i||null}getResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));if(!i)throw new Error(`${tr(t.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));return i||null}getResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));if(!i)throw new Error(`${mt(t.project.configuration,e)} isn't supported by any available resolver`);return i}};var fz=Pe(Xr());var Rf=/^(?!v)[a-z0-9._-]+$/i,Nw=class{supportsDescriptor(e,t){return!!(so(e.range)||Rf.test(e.range))}supportsLocator(e,t){return!!(fz.default.valid(e.reference)||Rf.test(e.reference))}shouldPersistResolution(e,t){return t.resolver.shouldPersistResolution(this.forwardLocator(e,t),t)}bindDescriptor(e,t,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),t,i)}getResolutionDependencies(e,t){return t.resolver.getResolutionDependencies(this.forwardDescriptor(e,t),t)}async getCandidates(e,t,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),t,i)}async getSatisfying(e,t,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),t,i)}async resolve(e,t){let i=await t.resolver.resolve(this.forwardLocator(e,t),t);return tC(i,e)}forwardDescriptor(e,t){return _t(e,`${t.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,t){return rn(e,`${t.project.configuration.get("defaultProtocol")}${e.reference}`)}};var Ff=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=rn(e,n);return t.fetcher.getLocalPath(s,t)}async fetch(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=rn(e,n),o=await t.fetcher.fetch(s,t);return await this.ensureVirtualLink(e,o,t)}getLocatorFilename(e){return xf(e)}async ensureVirtualLink(e,t,i){let n=t.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Br.makeVirtualPath(s,o,n),l=new bo(a,{baseFs:t.packageFs,pathUtils:x});return{...t,packageFs:l}}};var Nf=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Nf.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Nf.protocol)}supportsDescriptor(e,t){return Nf.isVirtualDescriptor(e)}supportsLocator(e,t){return Nf.isVirtualLocator(e)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,t){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,t,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,t,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,t){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},fC=Nf;fC.protocol="virtual:";var Lf=class{supports(e){return!!e.reference.startsWith(jr.protocol)}getLocalPath(e,t){return this.getWorkspace(e,t).cwd}async fetch(e,t){let i=this.getWorkspace(e,t).cwd;return{packageFs:new qt(i),prefixPath:Oe.dot,localPath:i}}getWorkspace(e,t){return t.project.getWorkspaceByCwd(e.reference.slice(jr.protocol.length))}};var Lw={};ut(Lw,{getDefaultGlobalFolder:()=>XD,getHomeFolder:()=>hC,isFolderInside:()=>ZD});var VD=J("os");function XD(){if(process.platform==="win32"){let r=U.toPortablePath(process.env.LOCALAPPDATA||U.join((0,VD.homedir)(),"AppData","Local"));return x.resolve(r,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let r=U.toPortablePath(process.env.XDG_DATA_HOME);return x.resolve(r,"yarn/berry")}return x.resolve(hC(),".yarn/berry")}function hC(){return U.toPortablePath((0,VD.homedir)()||"/usr/local/share")}function ZD(r,e){let t=x.relative(e,r);return t&&!t.startsWith("..")&&!x.isAbsolute(t)}var ws={};ut(ws,{availableParallelism:()=>ek,builtinModules:()=>_D,getArchitecture:()=>pC,getArchitectureName:()=>Nve,getArchitectureSet:()=>$D,openUrl:()=>Rve});var pz=Pe(J("module")),Mw=Pe(J("os"));var hz=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Rve=typeof hz<"u"?async r=>{try{return await tk(hz,[r],{cwd:x.cwd()}),!0}catch{return!1}}:void 0;function _D(){return new Set(pz.default.builtinModules||Object.keys(process.binding("natives")))}function Fve(){var i,n,s,o;if(process.platform==="win32")return null;let e=(s=((n=(i=process.report)==null?void 0:i.getReport())!=null?n:{}).sharedObjects)!=null?s:[],t=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return(o=Jd(e,a=>{let l=a.match(t);if(!l)return Jd.skip;if(l[1])return"glibc";if(l[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")}))!=null?o:null}var Tw,Ow;function pC(){return Tw=Tw!=null?Tw:{os:process.platform,cpu:process.arch,libc:Fve()}}function Nve(r=pC()){return r.libc?`${r.os}-${r.cpu}-${r.libc}`:`${r.os}-${r.cpu}`}function $D(){let r=pC();return Ow=Ow!=null?Ow:{os:[r.os],cpu:[r.cpu],libc:r.libc?[r.libc]:[]}}function ek(){return"availableParallelism"in Mw.default?Mw.default.availableParallelism():Math.max(1,Mw.default.cpus().length)}var Lve=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry"]),Gw="yarn_",sk=".yarnrc.yml",ok="yarn.lock",Tve="********",ak=(u=>(u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP",u))(ak||{}),xi=Ke,rk={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:"BOOLEAN",default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:"STRING",default:null},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:XD()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:Xl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:"STRING",default:ok},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:Hw()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:zy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:eP,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Uw.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Uw.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:"BOOLEAN",default:Uw.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(Xy),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};function Ak(r,e,t,i,n){if(i.isArray||i.type==="ANY"&&Array.isArray(t))return Array.isArray(t)?t.map((s,o)=>ik(r,`${e}[${o}]`,s,i,n)):String(t).split(/,/).map(s=>ik(r,e,s,i,n));if(Array.isArray(t))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return ik(r,e,t,i,n)}function ik(r,e,t,i,n){var a;switch(i.type){case"ANY":return t;case"SHAPE":return Ove(r,e,t,i,n);case"MAP":return Mve(r,e,t,i,n)}if(t===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)!=null&&a.includes(t))return t;let o=(()=>{if(i.type==="BOOLEAN"&&typeof t!="string")return Wd(t);if(typeof t!="string")throw new Error(`Expected value (${t}) to be a string`);let l=Wx(t,{env:process.env});switch(i.type){case"ABSOLUTE_PATH":return x.resolve(n,U.toPortablePath(l));case"LOCATOR_LOOSE":return Dc(l,!1);case"NUMBER":return parseInt(l);case"LOCATOR":return Dc(l);case"BOOLEAN":return Wd(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function Ove(r,e,t,i,n){if(typeof t!="object"||Array.isArray(t))throw new be(`Object configuration settings "${e}" must be an object`);let s=lk(r,i,{ignoreArrays:!0});if(t===null)return s;for(let[o,a]of Object.entries(t)){let l=`${e}.${o}`;if(!i.properties[o])throw new be(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,Ak(r,l,a,i.properties[o],n))}return s}function Mve(r,e,t,i,n){let s=new Map;if(typeof t!="object"||Array.isArray(t))throw new be(`Map configuration settings "${e}" must be an object`);if(t===null)return s;for(let[o,a]of Object.entries(t)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,Ak(r,c,a,u,n))}return s}function lk(r,e,{ignoreArrays:t=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!t)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,lk(r,s));return i}break;case"MAP":return e.isArray&&!t?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:r.projectCwd===null?x.isAbsolute(e.default)?x.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>x.resolve(r.projectCwd,i)):x.resolve(r.projectCwd,e.default);default:return e.default}}function Kw(r,e,t){if(e.type==="SECRET"&&typeof r=="string"&&t.hideSecrets)return Tve;if(e.type==="ABSOLUTE_PATH"&&typeof r=="string"&&t.getNativePaths)return U.fromPortablePath(r);if(e.isArray&&Array.isArray(r)){let i=[];for(let n of r)i.push(Kw(n,e,t));return i}if(e.type==="MAP"&&r instanceof Map){let i=new Map;for(let[n,s]of r.entries())i.set(n,Kw(s,e.valueDefinition,t));return i}if(e.type==="SHAPE"&&r instanceof Map){let i=new Map;for(let[n,s]of r.entries()){let o=e.properties[n];i.set(n,Kw(s,o,t))}return i}return r}function Uve(){let r={};for(let[e,t]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(Gw)&&(e=(0,dz.default)(e.slice(Gw.length)),r[e]=t);return r}function Hw(){let r=`${Gw}rc_filename`;for(let[e,t]of Object.entries(process.env))if(e.toLowerCase()===r&&typeof t=="string")return t;return sk}var ck=(i=>(i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE",i))(ck||{}),Ka=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,t,i){let n=new Ka(e);typeof t<"u"&&!(t instanceof Map)&&(n.projectCwd=t),n.importSettings(rk);let s=typeof i<"u"?i:t instanceof Map?t:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,t,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=Uve();delete a.rcFilename;let l=await Ka.findRcFiles(e),c=await Ka.findHomeRcFile();if(c){let B=l.find(v=>v.path===c.path);B?B.strict=!1:l.push({...c,strict:!1})}let u=({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L})=>({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L}),g=({ignoreCwd:B,yarnPath:v,ignorePath:D,lockfileFilename:L,...H})=>H,f=new Ka(e);f.importSettings(u(rk)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:B,cwd:v,data:D}of l)f.useWithSource(B,u(D),v,{strict:!1});if(s){let B=f.get("yarnPath"),v=f.get("ignorePath");if(B!==null&&!v)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ka.findProjectCwd(e,h);break;case 1:p=await Ka.findProjectCwd(e,null);break;case 2:M.existsSync(x.join(e,"package.json"))?p=x.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(rk));let C=new Map([["@@core",SW]]),y=B=>"default"in B?B.default:B;if(t!==null){for(let L of t.plugins.keys())C.set(L,y(t.modules.get(L)));let B=new Map;for(let L of _D())B.set(L,()=>mf(L));for(let[L,H]of t.modules)B.set(L,()=>H);let v=new Set,D=async(L,H)=>{let{factory:j,name:$}=mf(L);if(v.has($))return;let V=new Map(B),W=A=>{if(V.has(A))return V.get(A)();throw new be(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},_=await df(async()=>y(await j(W)),A=>`${A} (when initializing ${$}, defined in ${H})`);B.set($,()=>_),v.add($),C.set($,_)};if(a.plugins)for(let L of a.plugins.split(";")){let H=x.resolve(e,U.toPortablePath(L));await D(H,"")}for(let{path:L,cwd:H,data:j}of l)if(!!o&&!!Array.isArray(j.plugins))for(let $ of j.plugins){let V=typeof $!="string"?$.path:$,W=x.resolve(H,U.toPortablePath(V));await D(W,L)}}for(let[B,v]of C)f.activatePlugin(B,v);f.useWithSource("",g(a),e,{strict:n});for(let{path:B,cwd:v,data:D,strict:L}of l)f.useWithSource(B,g(D),v,{strict:L!=null?L:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let t=Hw(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=x.join(s,t);if(M.existsSync(o)){let a=await M.readFilePromise(o,"utf8"),l;try{l=yi(a)}catch{let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new be(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=x.dirname(s)}return i}static async findHomeRcFile(){let e=Hw(),t=hC(),i=x.join(t,e);if(M.existsSync(i)){let n=await M.readFilePromise(i,"utf8"),s=yi(n);return{path:i,cwd:t,data:s}}return null}static async findProjectCwd(e,t){let i=null,n=e,s=null;for(;n!==s;){if(s=n,M.existsSync(x.join(s,"package.json"))&&(i=s),t!==null){if(M.existsSync(x.join(s,t))){i=s;break}}else if(i!==null)break;n=x.dirname(s)}return i}static async updateConfiguration(e,t){let i=Hw(),n=x.join(e,i),s=M.existsSync(n)?yi(await M.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof t=="function"){try{a=t(s)}catch{a=t({})}if(a===s)return}else{a=s;for(let l of Object.keys(t)){let c=s[l],u=t[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await M.changeFilePromise(n,Ba(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let t=hC();return await Ka.updateConfiguration(t,e)}activatePlugin(e,t){this.plugins.set(e,t),typeof t.configuration<"u"&&this.importSettings(t.configuration)}importSettings(e){for(let[t,i]of Object.entries(e))if(i!=null){if(this.settings.has(t))throw new Error(`Cannot redefine settings "${t}"`);this.settings.set(t,i),this.values.set(t,lk(this,i))}}useWithSource(e,t,i,n){try{this.use(e,t,i,n)}catch(s){throw s.message+=` (in ${$e(this,e,Ke.PATH)})`,s}}use(e,t,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(t)]){if(typeof t[o]>"u"||o==="plugins"||e===""&&Lve.has(o))continue;if(o==="rcFilename")throw new be(`The rcFilename settings can only be set via ${`${Gw}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new be(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type==="MAP"||l.isArray&&l.concatenateValues))continue;let c;try{c=Ak(this,o,t[o],l,i)}catch(u){throw u.message+=` in ${$e(this,e,Ke.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type==="MAP"){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:t=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s>"u")throw new be(`Couldn't find a configuration settings named "${e}"`);return Kw(n,s,{hideSecrets:t,getNativePaths:i})}getSubprocessStreams(e,{header:t,prefix:i,report:n}){let s,o,a=M.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${$e(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${$e(this,"STDERR","red")}`);s=new nk.PassThrough,s.pipe(l),s.pipe(a),o=new nk.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof t<"u"&&s.write(`${t} +`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let t of this.plugins.values())for(let i of t.resolvers||[])e.push(new i);return new kf([new fC,new jr,new Nw,...e])}makeFetcher(){let e=[];for(let t of this.plugins.values())for(let i of t.fetchers||[])e.push(new i);return new Df([new Ff,new Lf,...e])}getLinkers(){let e=[];for(let t of this.plugins.values())for(let i of t.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=pC(),t=this.get("supportedArchitectures"),i=t.get("os");i!==null&&(i=i.map(o=>o==="current"?e.os:o));let n=t.get("cpu");n!==null&&(n=n.map(o=>o==="current"?e.cpu:o));let s=t.get("libc");return s!==null&&(s=Ko(s,o=>{var a;return o==="current"?(a=e.libc)!=null?a:Ko.skip:o})),{os:i,cpu:n,libc:s}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,t=(i,n,{userProvided:s=!1}={})=>{if(!so(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new ot;o.load(n,{yamlCompatibilityMode:!0});let a=hf(e,i.identHash),l=[];a.push([i.range,l]);let c={status:"inactive",userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push({...c,type:"Dependency",descriptor:u});for(let u of o.peerDependencies.values())l.push({...c,type:"PeerDependency",descriptor:u});for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push({...c,type:"PeerDependencyMeta",selector:u,key:f,value:h})};await this.triggerHook(i=>i.registerPackageExtensions,this,t);for(let[i,n]of this.get("packageExtensions"))t(WA(i,!0),Jy(n),{userProvided:!0})}normalizePackage(e){let t=rC(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i<"u"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!kc(s,o))for(let l of a)switch(l.status==="inactive"&&(l.status="redundant"),l.type){case"Dependency":typeof t.dependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.dependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependency":typeof t.peerDependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependencyMeta":{let c=t.peerDependenciesMeta.get(l.selector);(typeof c>"u"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status="active",Na(t.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:qx(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of t.peerDependenciesMeta.keys()){let o=en(s);t.peerDependencies.has(o.identHash)||t.peerDependencies.set(o.identHash,_t(o,"*"))}for(let s of t.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=qo("types",o),l=Ot(a);t.peerDependencies.has(a.identHash)||t.peerDependenciesMeta.has(l)||(t.peerDependencies.set(a.identHash,_t(a,"*")),t.peerDependenciesMeta.set(l,{optional:!0}))}return t.dependencies=new Map(Bn(t.dependencies,([,s])=>bn(s))),t.peerDependencies=new Map(Bn(t.peerDependencies,([,s])=>bn(s))),t}getLimit(e){return Na(this.limits,e,()=>(0,Cz.default)(this.get(e)))}async triggerHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...t)}}async triggerMultipleHooks(e,t){for(let i of t)await this.triggerHook(e,...i)}async reduceHook(e,t,...i){let n=t;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...t);if(typeof o<"u")return o}return null}},ye=Ka;ye.telemetry=null;var hk=(i=>(i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always",i))(hk||{}),dC=class extends at{constructor({fileName:t,code:i,signal:n}){let s=ye.create(x.cwd()),o=$e(s,t,Ke.PATH);super(1,`Child ${o} reported an error`,a=>{Hve(i,n,{configuration:s,report:a})});this.code=pk(i,n)}},Yw=class extends dC{constructor({fileName:t,code:i,signal:n,stdout:s,stderr:o}){super({fileName:t,code:i,signal:n});this.stdout=s,this.stderr=o}};function Nc(r){return r!==null&&typeof r.fd=="number"}var Lc=new Set;function uk(){}function gk(){for(let r of Lc)r.kill()}async function Wo(r,e,{cwd:t,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":Nc(s)&&(c[0]=s),Nc(o)&&(c[1]=o),Nc(a)&&(c[2]=a);let u=(0,fk.default)(r,e,{cwd:U.fromPortablePath(t),env:{...i,PWD:U.fromPortablePath(t)},stdio:c});Lc.add(u),Lc.size===1&&(process.on("SIGINT",uk),process.on("SIGTERM",gk)),!Nc(s)&&s!==null&&s.pipe(u.stdin),Nc(o)||u.stdout.pipe(o,{end:!1}),Nc(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))Nc(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Lc.delete(u),Lc.size===0&&(process.off("SIGINT",uk),process.off("SIGTERM",gk)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,C)=>{Lc.delete(u),Lc.size===0&&(process.off("SIGINT",uk),process.off("SIGTERM",gk)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:pk(p,C)}):h(new dC({fileName:r,code:p,signal:C}))})})}async function tk(r,e,{cwd:t,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=U.fromPortablePath(t);typeof i.PWD<"u"&&(i={...i,PWD:c});let u=(0,fk.default)(r,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",h=>{let p=ye.create(t),C=$e(p,r,Ke.PATH);f(new at(1,`Process ${C} failed to spawn`,y=>{y.reportError(1,` ${Ho(p,{label:"Thrown Error",value:no(Ke.NO_HINT,h.message)})}`)}))}),u.on("close",(h,p)=>{let C=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),y=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:pk(h,p),stdout:C,stderr:y}):f(new Yw({fileName:r,code:h,signal:p,stdout:C,stderr:y}))})})}var Kve=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function pk(r,e){let t=Kve.get(e);return typeof t<"u"?128+t:r!=null?r:1}function Hve(r,e,{configuration:t,report:i}){i.reportError(1,` ${Ho(t,r!==null?{label:"Exit Code",value:no(Ke.NUMBER,r)}:{label:"Exit Signal",value:no(Ke.CODE,e)})}`)}var Xt={};ut(Xt,{Method:()=>_6,RequestError:()=>$6.RequestError,del:()=>eke,get:()=>_De,getNetworkSettings:()=>Z6,post:()=>kR,put:()=>$De,request:()=>vC});var z6=Pe(CB()),V6=J("https"),X6=J("http"),DR=Pe(wn()),PR=Pe(j6()),mB=J("url");var $6=Pe(CB()),q6=new Map,J6=new Map,VDe=new X6.Agent({keepAlive:!0}),XDe=new V6.Agent({keepAlive:!0});function W6(r){let e=new mB.URL(r),t={host:e.hostname,headers:{}};return e.port&&(t.port=Number(e.port)),{proxy:t}}async function xR(r){return Na(J6,r,()=>M.readFilePromise(r).then(e=>(J6.set(r,e),e)))}function ZDe({statusCode:r,statusMessage:e},t){let i=$e(t,r,Ke.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${r}`;return If(t,`${i}${e?` (${e})`:""}`,n)}async function EB(r,{configuration:e,customErrorMessage:t}){var i,n;try{return await r}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=t==null?void 0:t(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof z6.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${$e(e,"httpTimeout",Ke.SETTING)})`);let a=new at(35,o,l=>{s.response&&l.reportError(35,` ${Ho(e,{label:"Response Code",value:no(Ke.NO_HINT,ZDe(s.response,e))})}`),s.request&&(l.reportError(35,` ${Ho(e,{label:"Request Method",value:no(Ke.NO_HINT,s.request.options.method)})}`),l.reportError(35,` ${Ho(e,{label:"Request URL",value:no(Ke.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(35,` ${Ho(e,{label:"Request Redirects",value:no(Ke.NO_HINT,tP(e,s.request.redirects,Ke.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(35,` ${Ho(e,{label:"Request Retry Count",value:no(Ke.NO_HINT,`${$e(e,s.request.retryCount,Ke.NUMBER)} (can be increased via ${$e(e,"httpRetry",Ke.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z6(r,e){let t=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},n=Object.keys(i),s=typeof r=="string"?new mB.URL(r):r;for(let[o,a]of t)if(DR.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]>"u"&&(i[l]=c)}for(let o of n)typeof i[o]>"u"&&(i[o]=e.configuration.get(o));return i}var _6=(n=>(n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE",n))(_6||{});async function vC(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o="GET"}){let a=async()=>await tke(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o});return await(await t.reduceHook(c=>c.wrapNetworkRequest,a,{target:r,body:e,configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o}))()}async function _De(r,{configuration:e,jsonResponse:t,...i}){let n=Na(q6,r,()=>EB(vC(r,null,{configuration:e,...i}),{configuration:e}).then(s=>(q6.set(r,s.body),s.body)));return Buffer.isBuffer(n)===!1&&(n=await n),t?JSON.parse(n.toString()):n}async function $De(r,e,{customErrorMessage:t,...i}){return(await EB(vC(r,e,{...i,method:"PUT"}),i)).body}async function kR(r,e,{customErrorMessage:t,...i}){return(await EB(vC(r,e,{...i,method:"POST"}),i)).body}async function eke(r,{customErrorMessage:e,...t}){return(await EB(vC(r,null,{...t,method:"DELETE"}),t)).body}async function tke(r,e,{configuration:t,headers:i,jsonRequest:n,jsonResponse:s,method:o="GET"}){let a=typeof r=="string"?new mB.URL(r):r,l=Z6(a,{configuration:t});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!DR.default.isMatch(a.hostname,t.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?PR.default.httpOverHttp(W6(l.httpProxy)):VDe,https:l.httpsProxy?PR.default.httpsOverHttp(W6(l.httpsProxy)):XDe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=t.get("httpTimeout"),f=t.get("httpRetry"),h=t.get("enableStrictSsl"),p=l.caFilePath,C=l.httpsCertFilePath,y=l.httpsKeyFilePath,{default:B}=await Promise.resolve().then(()=>Pe(CB())),v=p?await xR(p):void 0,D=C?await xR(C):void 0,L=y?await xR(y):void 0,H=B.extend({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:v,certificate:D,key:L},...u});return t.getLimit("networkConcurrency")(()=>H(a))}var Wt={};ut(Wt,{PackageManager:()=>u9,detectPackageManager:()=>g9,executePackageAccessibleBinary:()=>C9,executePackageScript:()=>LB,executePackageShellcode:()=>JR,executeWorkspaceAccessibleBinary:()=>IRe,executeWorkspaceLifecycleScript:()=>p9,executeWorkspaceScript:()=>h9,getPackageAccessibleBinaries:()=>TB,getWorkspaceAccessibleBinaries:()=>d9,hasPackageScript:()=>CRe,hasWorkspaceScript:()=>WR,makeScriptEnv:()=>FC,maybeExecuteWorkspaceLifecycleScript:()=>ERe,prepareExternalProject:()=>dRe});var xC={};ut(xC,{getLibzipPromise:()=>on,getLibzipSync:()=>sV});var nV=Pe(tV());var qa=["number","number"],rV=(F=>(F[F.ZIP_ER_OK=0]="ZIP_ER_OK",F[F.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",F[F.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",F[F.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",F[F.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",F[F.ZIP_ER_READ=5]="ZIP_ER_READ",F[F.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",F[F.ZIP_ER_CRC=7]="ZIP_ER_CRC",F[F.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",F[F.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",F[F.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",F[F.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",F[F.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",F[F.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",F[F.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",F[F.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",F[F.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",F[F.ZIP_ER_EOF=17]="ZIP_ER_EOF",F[F.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",F[F.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",F[F.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",F[F.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",F[F.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",F[F.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",F[F.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",F[F.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",F[F.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",F[F.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",F[F.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",F[F.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",F[F.ZIP_ER_TELL=30]="ZIP_ER_TELL",F[F.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",F))(rV||{}),iV=r=>({get HEAP8(){return r.HEAP8},get HEAPU8(){return r.HEAPU8},errors:rV,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:r._malloc(1),uint16S:r._malloc(2),uint32S:r._malloc(4),uint64S:r._malloc(8),malloc:r._malloc,free:r._free,getValue:r.getValue,open:r.cwrap("zip_open","number",["string","number","number"]),openFromSource:r.cwrap("zip_open_from_source","number",["number","number","number"]),close:r.cwrap("zip_close","number",["number"]),discard:r.cwrap("zip_discard",null,["number"]),getError:r.cwrap("zip_get_error","number",["number"]),getName:r.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:r.cwrap("zip_get_num_entries","number",["number","number"]),delete:r.cwrap("zip_delete","number",["number","number"]),stat:r.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:r.cwrap("zip_stat_index","number",["number",...qa,"number","number"]),fopen:r.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:r.cwrap("zip_fopen_index","number",["number",...qa,"number"]),fread:r.cwrap("zip_fread","number",["number","number","number","number"]),fclose:r.cwrap("zip_fclose","number",["number"]),dir:{add:r.cwrap("zip_dir_add","number",["number","string"])},file:{add:r.cwrap("zip_file_add","number",["number","string","number","number"]),getError:r.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:r.cwrap("zip_file_get_external_attributes","number",["number",...qa,"number","number","number"]),setExternalAttributes:r.cwrap("zip_file_set_external_attributes","number",["number",...qa,"number","number","number"]),setMtime:r.cwrap("zip_file_set_mtime","number",["number",...qa,"number","number"]),setCompression:r.cwrap("zip_set_file_compression","number",["number",...qa,"number","number"])},ext:{countSymlinks:r.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:r.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:r.cwrap("zip_error_strerror","string",["number"])},name:{locate:r.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:r.cwrap("zip_source_buffer_create","number",["number",...qa,"number","number"]),fromBuffer:r.cwrap("zip_source_buffer","number",["number","number",...qa,"number"]),free:r.cwrap("zip_source_free",null,["number"]),keep:r.cwrap("zip_source_keep",null,["number"]),open:r.cwrap("zip_source_open","number",["number"]),close:r.cwrap("zip_source_close","number",["number"]),seek:r.cwrap("zip_source_seek","number",["number",...qa,"number"]),tell:r.cwrap("zip_source_tell","number",["number"]),read:r.cwrap("zip_source_read","number",["number","number","number"]),error:r.cwrap("zip_source_error","number",["number"]),setMtime:r.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:r.cwrap("zipstruct_stat","number",[]),statS:r.cwrap("zipstruct_statS","number",[]),statName:r.cwrap("zipstruct_stat_name","string",["number"]),statIndex:r.cwrap("zipstruct_stat_index","number",["number"]),statSize:r.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:r.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:r.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:r.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:r.cwrap("zipstruct_stat_crc","number",["number"]),error:r.cwrap("zipstruct_error","number",[]),errorS:r.cwrap("zipstruct_errorS","number",[]),errorCodeZip:r.cwrap("zipstruct_error_code_zip","number",["number"])}});var NR=null;function sV(){return NR===null&&(NR=iV((0,nV.default)())),NR}async function on(){return sV()}var RC={};ut(RC,{ShellError:()=>Wn,execute:()=>xB,globUtils:()=>BB});var EV=Pe(wx()),IV=J("os"),zn=J("stream"),yV=J("util");var Wn=class extends Error{constructor(e){super(e),this.name="ShellError"}};var BB={};ut(BB,{fastGlobOptions:()=>AV,isBraceExpansion:()=>LR,isGlobPattern:()=>rke,match:()=>ike,micromatchOptions:()=>wB});var oV=Pe(dw()),aV=Pe(J("fs")),yB=Pe(wn()),wB={strictBrackets:!0},AV={onlyDirectories:!1,onlyFiles:!1};function rke(r){if(!yB.default.scan(r,wB).isGlob)return!1;try{yB.default.parse(r,wB)}catch{return!1}return!0}function ike(r,{cwd:e,baseFs:t}){return(0,oV.default)(r,{...AV,cwd:U.fromPortablePath(e),fs:AI(aV.default,new vg(t))})}function LR(r){return yB.default.scan(r,wB).isBrace}var cV=Pe(LS()),Vo=J("stream"),uV=J("string_decoder");var Mc=new Set;function TR(){}function OR(){for(let r of Mc)r.kill()}function gV(r,e,t,i){return n=>{let s=n[0]instanceof Vo.Transform?"pipe":n[0],o=n[1]instanceof Vo.Transform?"pipe":n[1],a=n[2]instanceof Vo.Transform?"pipe":n[2],l=(0,cV.default)(r,e,{...i,stdio:[s,o,a]});return Mc.add(l),Mc.size===1&&(process.on("SIGINT",TR),process.on("SIGTERM",OR)),n[0]instanceof Vo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Vo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Vo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(Mc.delete(l),Mc.size===0&&(process.off("SIGINT",TR),process.off("SIGTERM",OR)),u.code){case"ENOENT":n[2].write(`command not found: ${r} `),c(127);break;case"EACCES":n[2].write(`permission denied: ${r} `),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("close",u=>{Qc.delete(l),Qc.size===0&&(process.off("SIGINT",IR),process.off("SIGTERM",yR)),c(u!==null?u:129)})})}}}function MV(r){return e=>{let t=e[0]==="pipe"?new qo.PassThrough:e[0];return{stdin:t,promise:Promise.resolve().then(()=>r({stdin:t,stdout:e[1],stderr:e[2]}))}}}var ys=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},wR=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Mf=class{constructor(e,t){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=t}static start(e,{stdin:t,stdout:i,stderr:n}){let s=new Mf(null,e);return s.stdin=t,s.stdout=i,s.stderr=n,s}pipeTo(e,t=1){let i=new Mf(this,e),n=new wR;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(t&1)===1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(t&2)===2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let t;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");t=this.stdout,e[1]=t.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(t.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function uB(r,e){return Mf.start(r,e)}function NV(r,e=null){let t=new qo.PassThrough,i=new TV.StringDecoder,n="";return t.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",r(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&r(e!==null?`${e} ${s}`:s)}),t}function KV(r,{prefix:e}){return{stdout:NV(t=>r.stdout.write(`${t} -`),r.stdout.isTTY?e:null),stderr:NV(t=>r.stderr.write(`${t} -`),r.stderr.isTTY?e:null)}}var hDe=(0,JV.promisify)(setTimeout);function UV(r,e,t){let i=new Jn.PassThrough({autoDestroy:!0});switch(r){case 0:(e&1)===1&&t.stdin.pipe(i,{end:!1}),(e&2)===2&&t.stdin instanceof Jn.Writable&&i.pipe(t.stdin,{end:!1});break;case 1:(e&1)===1&&t.stdout.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stdout,{end:!1});break;case 2:(e&1)===1&&t.stderr.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stderr,{end:!1});break;default:throw new qn(`Bad file descriptor: "${r}"`)}return i}function fB(r,e={}){let t={...r,...e};return t.environment={...r.environment,...e.environment},t.variables={...r.variables,...e.variables},t}var pDe=new Map([["cd",async([r=(0,qV.homedir)(),...e],t,i)=>{let n=x.resolve(i.cwd,K.toPortablePath(r));if(!(await t.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new qn(`cd: no such file or directory: ${r}`):o})).isDirectory())throw new qn(`cd: not a directory: ${r}`);return i.cwd=n,0}],["pwd",async(r,e,t)=>(t.stdout.write(`${K.fromPortablePath(t.cwd)} +`),c(1);break}}),l.on("close",u=>{Mc.delete(l),Mc.size===0&&(process.off("SIGINT",TR),process.off("SIGTERM",OR)),c(u!==null?u:129)})})}}}function fV(r){return e=>{let t=e[0]==="pipe"?new Vo.PassThrough:e[0];return{stdin:t,promise:Promise.resolve().then(()=>r({stdin:t,stdout:e[1],stderr:e[2]}))}}}var Ss=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},MR=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},zf=class{constructor(e,t){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=t}static start(e,{stdin:t,stdout:i,stderr:n}){let s=new zf(null,e);return s.stdin=t,s.stdout=i,s.stderr=n,s}pipeTo(e,t=1){let i=new zf(this,e),n=new MR;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(t&1)===1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(t&2)===2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let t;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");t=this.stdout,e[1]=t.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(t.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function QB(r,e){return zf.start(r,e)}function lV(r,e=null){let t=new Vo.PassThrough,i=new uV.StringDecoder,n="";return t.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",r(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&r(e!==null?`${e} ${s}`:s)}),t}function hV(r,{prefix:e}){return{stdout:lV(t=>r.stdout.write(`${t} +`),r.stdout.isTTY?e:null),stderr:lV(t=>r.stderr.write(`${t} +`),r.stderr.isTTY?e:null)}}var nke=(0,yV.promisify)(setTimeout);function pV(r,e,t){let i=new zn.PassThrough({autoDestroy:!0});switch(r){case 0:(e&1)===1&&t.stdin.pipe(i,{end:!1}),(e&2)===2&&t.stdin instanceof zn.Writable&&i.pipe(t.stdin,{end:!1});break;case 1:(e&1)===1&&t.stdout.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stdout,{end:!1});break;case 2:(e&1)===1&&t.stderr.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stderr,{end:!1});break;default:throw new Wn(`Bad file descriptor: "${r}"`)}return i}function SB(r,e={}){let t={...r,...e};return t.environment={...r.environment,...e.environment},t.variables={...r.variables,...e.variables},t}var ske=new Map([["cd",async([r=(0,IV.homedir)(),...e],t,i)=>{let n=x.resolve(i.cwd,U.toPortablePath(r));if(!(await t.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new Wn(`cd: no such file or directory: ${r}`):o})).isDirectory())throw new Wn(`cd: not a directory: ${r}`);return i.cwd=n,0}],["pwd",async(r,e,t)=>(t.stdout.write(`${U.fromPortablePath(t.cwd)} `),0)],[":",async(r,e,t)=>0],["true",async(r,e,t)=>0],["false",async(r,e,t)=>1],["exit",async([r,...e],t,i)=>i.exitCode=parseInt(r!=null?r:i.variables["?"],10)],["echo",async(r,e,t)=>(t.stdout.write(`${r.join(" ")} -`),0)],["sleep",async([r],e,t)=>{if(typeof r>"u")throw new qn("sleep: missing operand");let i=Number(r);if(Number.isNaN(i))throw new qn(`sleep: invalid time interval '${r}'`);return await hDe(1e3*i,0)}],["__ysh_run_procedure",async(r,e,t)=>{let i=t.procedures[r[0]];return await uB(i,{stdin:new ys(t.stdin),stdout:new ys(t.stdout),stderr:new ys(t.stderr)}).run()}],["__ysh_set_redirects",async(r,e,t)=>{let i=t.stdin,n=t.stdout,s=t.stderr,o=[],a=[],l=[],c=0;for(;r[c]!=="--";){let g=r[c++],{type:f,fd:h}=JSON.parse(g),p=v=>{switch(h){case null:case 0:o.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},C=v=>{switch(h){case null:case 1:a.push(v);break;case 2:l.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},y=Number(r[c++]),B=c+y;for(let v=c;ve.baseFs.createReadStream(x.resolve(t.cwd,K.toPortablePath(r[v]))));break;case"<<<":p(()=>{let D=new Jn.PassThrough;return process.nextTick(()=>{D.write(`${r[v]} -`),D.end()}),D});break;case"<&":p(()=>UV(Number(r[v]),1,t));break;case">":case">>":{let D=x.resolve(t.cwd,K.toPortablePath(r[v]));C(D==="/dev/null"?new Jn.Writable({autoDestroy:!0,emitClose:!0,write(L,H,j){setImmediate(j)}}):e.baseFs.createWriteStream(D,f===">>"?{flags:"a"}:void 0))}break;case">&":C(UV(Number(r[v]),2,t));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Jn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Jn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Jn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await uB(EC(r.slice(c+1),e,t),{stdin:new ys(i),stdout:new ys(n),stderr:new ys(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function dDe(r,e,t){let i=[],n=new Jn.PassThrough;return n.on("data",s=>i.push(s)),await hB(r,e,fB(t,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function HV(r,e,t){let i=r.map(async s=>{let o=await bc(s.args,e,t);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function gB(r){return r.match(/[^ \r\n\t]+/g)||[]}async function WV(r,e,t,i,n=i){switch(r.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(r.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=gB(s);for(let a=0;a=0&&s"u"&&(r.defaultValue?o=(await bc(r.defaultValue,e,t)).join(" "):r.alternativeValue&&(o="")),typeof o>"u")throw a?new qn(`Unbound argument #${s}`):new qn(`Unbound variable "${r.name}"`);if(r.quoted)i(o);else{let l=gB(o);for(let u=0;ur+e,subtraction:(r,e)=>r-e,multiplication:(r,e)=>r*e,division:(r,e)=>Math.trunc(r/e)};async function mC(r,e,t){if(r.type==="number"){if(Number.isInteger(r.value))return r.value;throw new Error(`Invalid number: "${r.value}", only integers are allowed`)}else if(r.type==="variable"){let i=[];await WV({...r,quoted:!0},e,t,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?mC({type:"variable",name:i.join(" ")},e,t):mC({type:"number",value:n},e,t)}else return CDe[r.type](await mC(r.left,e,t),await mC(r.right,e,t))}async function bc(r,e,t){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p>"u"&&i.set(h,p=[]),p.push(f)};for(let u of r){let g=!1;switch(u.type){case"redirection":{let f=await bc(u.args,e,t);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await dDe(f.shell,e,t);if(f.quoted)o(h);else{let p=gB(h);for(let C=0;C"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let h=await e.glob.match(f,{cwd:t.cwd,baseFs:e.baseFs});if(h.length===0){let p=ER(f)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new qn(`No matches found: "${f}"${p}`)}for(let p of h.sort())l(p)}}if(i.size>0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function EC(r,e,t){e.builtins.has(r[0])||(r=["command",...r]);let i=K.fromPortablePath(t.cwd),n=t.environment;typeof n.PWD<"u"&&(n={...n,PWD:i});let[s,...o]=r;if(s==="command")return OV(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a>"u")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return MV(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=t;t.stdin=l,t.stdout=c,t.stderr=u;try{return await a(o,e,t)}finally{t.stdin=g,t.stdout=f,t.stderr=h}})}function mDe(r,e,t){return i=>{let n=new Jn.PassThrough,s=hB(r,e,fB(t,{stdin:n}));return{stdin:n,promise:s}}}function EDe(r,e,t){return i=>{let n=new Jn.PassThrough,s=hB(r,e,t);return{stdin:n,promise:s}}}function GV(r,e,t,i){if(e.length===0)return r;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures={...i.procedures},i.procedures[n]=r,EC([...e,"__ysh_run_procedure",n],t,i)}}async function YV(r,e,t){let i=r,n=null,s=null;for(;i;){let o=i.then?{...t}:t,a;switch(i.type){case"command":{let l=await bc(i.args,e,t),c=await HV(i.envs,e,t);a=i.envs.length?EC(l,e,fB(o,{environment:c})):EC(l,e,o)}break;case"subshell":{let l=await bc(i.args,e,t),c=mDe(i.subshell,e,o);a=GV(c,l,e,o)}break;case"group":{let l=await bc(i.args,e,t),c=EDe(i.group,e,o);a=GV(c,l,e,o)}break;case"envs":{let l=await HV(i.envs,e,t);o.environment={...o.environment,...l},a=EC(["true"],e,o)}break}if(typeof a>"u")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=uB(a,{stdin:new ys(o.stdin),stdout:new ys(o.stdout),stderr:new ys(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,1);break;case"|&":s=s.pipeTo(a,3);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function IDe(r,e,t,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return jV.default.hex(a)}if(i){let s=t.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=KV(t,{prefix:l});return t.backgroundJobs.push(YV(r,e,fB(t,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{t.stdout.isTTY&&t.stdout.write(`Job ${l}, '${o(Bg(r))}' has ended -`)})),0}return await YV(r,e,t)}async function yDe(r,e,t,{background:i=!1}={}){let n,s=a=>{n=a,t.variables["?"]=String(a)},o=async a=>{try{return await IDe(a.chain,e,t,{background:i&&typeof a.then>"u"})}catch(l){if(!(l instanceof qn))throw l;return t.stderr.write(`${l.message} -`),1}};for(s(await o(r));r.then;){if(t.exitCode!==null)return t.exitCode;switch(r.then.type){case"&&":n===0&&s(await o(r.then.line));break;case"||":n!==0&&s(await o(r.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${r.then.type}"`)}r=r.then.line}return n}async function hB(r,e,t){let i=t.backgroundJobs;t.backgroundJobs=[];let n=0;for(let{command:s,type:o}of r){if(n=await yDe(s,e,t,{background:o==="&"}),t.exitCode!==null)return t.exitCode;t.variables["?"]=String(n)}return await Promise.all(t.backgroundJobs),t.backgroundJobs=i,n}function zV(r){switch(r.type){case"variable":return r.name==="@"||r.name==="#"||r.name==="*"||Number.isFinite(parseInt(r.name,10))||"defaultValue"in r&&!!r.defaultValue&&r.defaultValue.some(e=>IC(e))||"alternativeValue"in r&&!!r.alternativeValue&&r.alternativeValue.some(e=>IC(e));case"arithmetic":return BR(r.arithmetic);case"shell":return QR(r.shell);default:return!1}}function IC(r){switch(r.type){case"redirection":return r.args.some(e=>IC(e));case"argument":return r.segments.some(e=>zV(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${r.type}"`)}}function BR(r){switch(r.type){case"variable":return zV(r);case"number":return!1;default:return BR(r.left)||BR(r.right)}}function QR(r){return r.some(({command:e})=>{for(;e;){let t=e.chain;for(;t;){let i;switch(t.type){case"subshell":i=QR(t.subshell);break;case"command":i=t.envs.some(n=>n.args.some(s=>IC(s)))||t.args.some(n=>IC(n));break}if(i)return!0;if(!t.then)break;t=t.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function pB(r,e=[],{baseFs:t=new $t,builtins:i={},cwd:n=K.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=cB}={}){let g={};for(let[p,C]of Object.entries(s))typeof C<"u"&&(g[p]=C);let f=new Map(pDe);for(let[p,C]of Object.entries(i))f.set(p,C);o===null&&(o=new Jn.PassThrough,o.end());let h=$E(r,u);if(!QR(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let C=p.chain;for(;C.then;)C=C.then.chain;C.type==="command"&&(C.args=C.args.concat(e.map(y=>({type:"argument",segments:[{type:"text",text:y}]}))))}return await hB(h,{args:e,baseFs:t,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var N6=Pe(dB()),L6=Pe(Tg()),JA=J("stream");var R6=Pe(x6()),IB=Pe(Vl());var P6=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],D6=80,Eke=new Set([13,19]),Ike=5,EB=IB.default.GITHUB_ACTIONS?{start:r=>`::group::${r} +`),0)],["sleep",async([r],e,t)=>{if(typeof r>"u")throw new Wn("sleep: missing operand");let i=Number(r);if(Number.isNaN(i))throw new Wn(`sleep: invalid time interval '${r}'`);return await nke(1e3*i,0)}],["__ysh_run_procedure",async(r,e,t)=>{let i=t.procedures[r[0]];return await QB(i,{stdin:new Ss(t.stdin),stdout:new Ss(t.stdout),stderr:new Ss(t.stderr)}).run()}],["__ysh_set_redirects",async(r,e,t)=>{let i=t.stdin,n=t.stdout,s=t.stderr,o=[],a=[],l=[],c=0;for(;r[c]!=="--";){let g=r[c++],{type:f,fd:h}=JSON.parse(g),p=v=>{switch(h){case null:case 0:o.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},C=v=>{switch(h){case null:case 1:a.push(v);break;case 2:l.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},y=Number(r[c++]),B=c+y;for(let v=c;ve.baseFs.createReadStream(x.resolve(t.cwd,U.toPortablePath(r[v]))));break;case"<<<":p(()=>{let D=new zn.PassThrough;return process.nextTick(()=>{D.write(`${r[v]} +`),D.end()}),D});break;case"<&":p(()=>pV(Number(r[v]),1,t));break;case">":case">>":{let D=x.resolve(t.cwd,U.toPortablePath(r[v]));C(D==="/dev/null"?new zn.Writable({autoDestroy:!0,emitClose:!0,write(L,H,j){setImmediate(j)}}):e.baseFs.createWriteStream(D,f===">>"?{flags:"a"}:void 0))}break;case">&":C(pV(Number(r[v]),2,t));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new zn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new zn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new zn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await QB(DC(r.slice(c+1),e,t),{stdin:new Ss(i),stdout:new Ss(n),stderr:new Ss(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function oke(r,e,t){let i=[],n=new zn.PassThrough;return n.on("data",s=>i.push(s)),await vB(r,e,SB(t,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function dV(r,e,t){let i=r.map(async s=>{let o=await Uc(s.args,e,t);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function bB(r){return r.match(/[^ \r\n\t]+/g)||[]}async function wV(r,e,t,i,n=i){switch(r.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(r.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=bB(s);for(let a=0;a=0&&s"u"&&(r.defaultValue?o=(await Uc(r.defaultValue,e,t)).join(" "):r.alternativeValue&&(o="")),typeof o>"u")throw a?new Wn(`Unbound argument #${s}`):new Wn(`Unbound variable "${r.name}"`);if(r.quoted)i(o);else{let l=bB(o);for(let u=0;ur+e,subtraction:(r,e)=>r-e,multiplication:(r,e)=>r*e,division:(r,e)=>Math.trunc(r/e)};async function PC(r,e,t){if(r.type==="number"){if(Number.isInteger(r.value))return r.value;throw new Error(`Invalid number: "${r.value}", only integers are allowed`)}else if(r.type==="variable"){let i=[];await wV({...r,quoted:!0},e,t,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?PC({type:"variable",name:i.join(" ")},e,t):PC({type:"number",value:n},e,t)}else return ake[r.type](await PC(r.left,e,t),await PC(r.right,e,t))}async function Uc(r,e,t){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p>"u"&&i.set(h,p=[]),p.push(f)};for(let u of r){let g=!1;switch(u.type){case"redirection":{let f=await Uc(u.args,e,t);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await oke(f.shell,e,t);if(f.quoted)o(h);else{let p=bB(h);for(let C=0;C"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let h=await e.glob.match(f,{cwd:t.cwd,baseFs:e.baseFs});if(h.length===0){let p=LR(f)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new Wn(`No matches found: "${f}"${p}`)}for(let p of h.sort())l(p)}}if(i.size>0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function DC(r,e,t){e.builtins.has(r[0])||(r=["command",...r]);let i=U.fromPortablePath(t.cwd),n=t.environment;typeof n.PWD<"u"&&(n={...n,PWD:i});let[s,...o]=r;if(s==="command")return gV(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a>"u")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return fV(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=t;t.stdin=l,t.stdout=c,t.stderr=u;try{return await a(o,e,t)}finally{t.stdin=g,t.stdout=f,t.stderr=h}})}function Ake(r,e,t){return i=>{let n=new zn.PassThrough,s=vB(r,e,SB(t,{stdin:n}));return{stdin:n,promise:s}}}function lke(r,e,t){return i=>{let n=new zn.PassThrough,s=vB(r,e,t);return{stdin:n,promise:s}}}function CV(r,e,t,i){if(e.length===0)return r;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures={...i.procedures},i.procedures[n]=r,DC([...e,"__ysh_run_procedure",n],t,i)}}async function mV(r,e,t){let i=r,n=null,s=null;for(;i;){let o=i.then?{...t}:t,a;switch(i.type){case"command":{let l=await Uc(i.args,e,t),c=await dV(i.envs,e,t);a=i.envs.length?DC(l,e,SB(o,{environment:c})):DC(l,e,o)}break;case"subshell":{let l=await Uc(i.args,e,t),c=Ake(i.subshell,e,o);a=CV(c,l,e,o)}break;case"group":{let l=await Uc(i.args,e,t),c=lke(i.group,e,o);a=CV(c,l,e,o)}break;case"envs":{let l=await dV(i.envs,e,t);o.environment={...o.environment,...l},a=DC(["true"],e,o)}break}if(typeof a>"u")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=QB(a,{stdin:new Ss(o.stdin),stdout:new Ss(o.stdout),stderr:new Ss(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,1);break;case"|&":s=s.pipeTo(a,3);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function cke(r,e,t,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return EV.default.hex(a)}if(i){let s=t.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=hV(t,{prefix:l});return t.backgroundJobs.push(mV(r,e,SB(t,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} +`)).finally(()=>{t.stdout.isTTY&&t.stdout.write(`Job ${l}, '${o(Fg(r))}' has ended +`)})),0}return await mV(r,e,t)}async function uke(r,e,t,{background:i=!1}={}){let n,s=a=>{n=a,t.variables["?"]=String(a)},o=async a=>{try{return await cke(a.chain,e,t,{background:i&&typeof a.then>"u"})}catch(l){if(!(l instanceof Wn))throw l;return t.stderr.write(`${l.message} +`),1}};for(s(await o(r));r.then;){if(t.exitCode!==null)return t.exitCode;switch(r.then.type){case"&&":n===0&&s(await o(r.then.line));break;case"||":n!==0&&s(await o(r.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${r.then.type}"`)}r=r.then.line}return n}async function vB(r,e,t){let i=t.backgroundJobs;t.backgroundJobs=[];let n=0;for(let{command:s,type:o}of r){if(n=await uke(s,e,t,{background:o==="&"}),t.exitCode!==null)return t.exitCode;t.variables["?"]=String(n)}return await Promise.all(t.backgroundJobs),t.backgroundJobs=i,n}function BV(r){switch(r.type){case"variable":return r.name==="@"||r.name==="#"||r.name==="*"||Number.isFinite(parseInt(r.name,10))||"defaultValue"in r&&!!r.defaultValue&&r.defaultValue.some(e=>kC(e))||"alternativeValue"in r&&!!r.alternativeValue&&r.alternativeValue.some(e=>kC(e));case"arithmetic":return UR(r.arithmetic);case"shell":return KR(r.shell);default:return!1}}function kC(r){switch(r.type){case"redirection":return r.args.some(e=>kC(e));case"argument":return r.segments.some(e=>BV(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${r.type}"`)}}function UR(r){switch(r.type){case"variable":return BV(r);case"number":return!1;default:return UR(r.left)||UR(r.right)}}function KR(r){return r.some(({command:e})=>{for(;e;){let t=e.chain;for(;t;){let i;switch(t.type){case"subshell":i=KR(t.subshell);break;case"command":i=t.envs.some(n=>n.args.some(s=>kC(s)))||t.args.some(n=>kC(n));break}if(i)return!0;if(!t.then)break;t=t.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function xB(r,e=[],{baseFs:t=new $t,builtins:i={},cwd:n=U.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=BB}={}){let g={};for(let[p,C]of Object.entries(s))typeof C<"u"&&(g[p]=C);let f=new Map(ske);for(let[p,C]of Object.entries(i))f.set(p,C);o===null&&(o=new zn.PassThrough,o.end());let h=uI(r,u);if(!KR(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let C=p.chain;for(;C.then;)C=C.then.chain;C.type==="command"&&(C.args=C.args.concat(e.map(y=>({type:"argument",segments:[{type:"text",text:y}]}))))}return await vB(h,{args:e,baseFs:t,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var l9=Pe(PB()),c9=Pe(Jg()),el=J("stream");var a9=Pe(i9()),FB=Pe(Ac());var n9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],s9=80,lRe=new Set([13,19]),cRe=5,RB=FB.default.GITHUB_ACTIONS?{start:r=>`::group::${r} `,end:r=>`::endgroup:: -`}:IB.default.TRAVIS?{start:r=>`travis_fold:start:${r} +`}:FB.default.TRAVIS?{start:r=>`travis_fold:start:${r} `,end:r=>`travis_fold:end:${r} -`}:IB.default.GITLAB?{start:r=>`section_start:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${r} -`,end:r=>`section_end:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,k6=new Date,yke=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,wke=r=>r,yB=wke({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),Bke=yke&&Object.keys(yB).find(r=>{let e=yB[r];return!(e.date&&(e.date[0]!==k6.getDate()||e.date[1]!==k6.getMonth()+1))})||"default";function F6(r,{configuration:e,json:t}){if(!e.get("enableMessageNames"))return"";let n=QA(r===null?0:r);return!t&&r===null?Ze(e,n,"grey"):n}function PR(r,{configuration:e,json:t}){let i=F6(r,{configuration:e,json:t});if(!i||r===null||r===0)return i;let n=Ct[r],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return cf(e,i,s)}var Ge=class extends Si{constructor({configuration:t,stdout:i,json:n=!1,includePrefix:s=!0,includeFooter:o=!0,includeLogs:a=!n,includeInfos:l=a,includeWarnings:c=a,forgettableBufferSize:u=Ike,forgettableNames:g=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(Kd(this,{configuration:t}),this.configuration=t,this.forgettableBufferSize=u,this.forgettableNames=new Set([...g,...Eke]),this.includePrefix=s,this.includeFooter=o,this.includeInfos=l,this.includeWarnings=c,this.json=n,this.stdout=i,t.get("enableProgressBars")&&!n&&i.isTTY&&i.columns>22){let f=t.get("progressBarStyle")||Bke;if(!Object.prototype.hasOwnProperty.call(yB,f))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=yB[f];let h=12,p=Math.max(0,Math.min(i.columns-h,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*p/80)}}static async start(t,i){let n=new this(t),s=process.emitWarning;process.emitWarning=(o,a)=>{if(typeof o!="string"){let c=o;o=c.message,a=a!=null?a:c.name}let l=typeof a<"u"?`${a}: ${o}`:o;n.reportWarning(0,l)};try{await i(n)}catch(o){n.reportExceptionOnce(o)}finally{await n.finalize(),process.emitWarning=s}return n}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){this.cacheHitCount+=1}reportCacheMiss(t,i){this.lastCacheMiss=t,this.cacheMissCount+=1,typeof i<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,i)}startSectionSync({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}async startSectionPromise({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}startTimerImpl(t,i,n){return{cb:typeof i=="function"?i:n,reportHeader:()=>{this.reportInfo(null,`\u250C ${t}`),this.indent+=1,EB!==null&&!this.json&&this.includeInfos&&this.stdout.write(EB.start(t))},reportFooter:a=>{this.indent-=1,EB!==null&&!this.json&&this.includeInfos&&this.stdout.write(EB.end(t)),this.configuration.get("enableTimers")&&a>200?this.reportInfo(null,`\u2514 Completed in ${Ze(this.configuration,a,Ue.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof i=="function"?{}:i).skipIfEmpty}}startTimerSync(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionSync(o,s)}async startTimerPromise(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionPromise(o,s)}async startCacheReport(t){let i=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await t()}catch(n){throw this.reportExceptionOnce(n),n}finally{i!==null&&this.reportCacheChanges(i)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(t,i){if(!this.includeInfos)return;this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"",o=`${this.formatPrefix(s,"blueBright")}${i}`;if(this.json)this.reportJson({type:"info",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i});else if(this.forgettableNames.has(t))if(this.forgettableLines.push(o),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(o,{truncate:!0});else this.writeLineWithForgettableReset(o)}reportWarning(t,i){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"";this.json?this.reportJson({type:"warning",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i}):this.writeLineWithForgettableReset(`${this.formatPrefix(s,"yellowBright")}${i}`)}reportError(t,i){this.errorCount+=1,this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"";this.json?this.reportJson({type:"error",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i}):this.writeLineWithForgettableReset(`${this.formatPrefix(s,"redBright")}${i}`,{truncate:!1})}reportProgress(t){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(t.hasProgress&&t.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let i=!1,n=Promise.resolve().then(async()=>{let o={progress:t.hasProgress?0:void 0,title:t.hasTitle?"":void 0};this.progress.set(t,{definition:o,lastScaledSize:t.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:a,title:l}of t)i||o.progress===a&&o.title===l||(o.progress=a,o.title=l,this.refreshProgress());s()}),s=()=>{i||(i=!0,this.progress.delete(t),this.refreshProgress({delta:1}))};return{...n,stop:s}}reportJson(t){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(t)}`)}async finalize(){if(!this.includeFooter)return;let t="";this.errorCount>0?t="Failed with errors":this.warningCount>0?t="Done with warnings":t="Done";let i=Ze(this.configuration,Date.now()-this.startTime,Ue.DURATION),n=this.configuration.get("enableTimers")?`${t} in ${i}`:t;this.errorCount>0?this.reportError(0,n):this.warningCount>0?this.reportWarning(0,n):this.reportInfo(0,n)}writeLine(t,{truncate:i}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(t,{truncate:i})} +`}:FB.default.GITLAB?{start:r=>`section_start:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${r} +`,end:r=>`section_end:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,o9=new Date,uRe=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,gRe=r=>r,NB=gRe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),fRe=uRe&&Object.keys(NB).find(r=>{let e=NB[r];return!(e.date&&(e.date[0]!==o9.getDate()||e.date[1]!==o9.getMonth()+1))})||"default";function A9(r,{configuration:e,json:t}){if(!e.get("enableMessageNames"))return"";let n=FA(r===null?0:r);return!t&&r===null?$e(e,n,"grey"):n}function qR(r,{configuration:e,json:t}){let i=A9(r,{configuration:e,json:t});if(!i||r===null||r===0)return i;let n=Ct[r],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return If(e,i,s)}var Ge=class extends vi{constructor({configuration:t,stdout:i,json:n=!1,includePrefix:s=!0,includeFooter:o=!0,includeLogs:a=!n,includeInfos:l=a,includeWarnings:c=a,forgettableBufferSize:u=cRe,forgettableNames:g=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(Xd(this,{configuration:t}),this.configuration=t,this.forgettableBufferSize=u,this.forgettableNames=new Set([...g,...lRe]),this.includePrefix=s,this.includeFooter=o,this.includeInfos=l,this.includeWarnings=c,this.json=n,this.stdout=i,t.get("enableProgressBars")&&!n&&i.isTTY&&i.columns>22){let f=t.get("progressBarStyle")||fRe;if(!Object.prototype.hasOwnProperty.call(NB,f))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=NB[f];let h=12,p=Math.max(0,Math.min(i.columns-h,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*p/80)}}static async start(t,i){let n=new this(t),s=process.emitWarning;process.emitWarning=(o,a)=>{if(typeof o!="string"){let c=o;o=c.message,a=a!=null?a:c.name}let l=typeof a<"u"?`${a}: ${o}`:o;n.reportWarning(0,l)};try{await i(n)}catch(o){n.reportExceptionOnce(o)}finally{await n.finalize(),process.emitWarning=s}return n}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){this.cacheHitCount+=1}reportCacheMiss(t,i){this.lastCacheMiss=t,this.cacheMissCount+=1,typeof i<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,i)}startSectionSync({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}async startSectionPromise({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}startTimerImpl(t,i,n){return{cb:typeof i=="function"?i:n,reportHeader:()=>{this.reportInfo(null,`\u250C ${t}`),this.indent+=1,RB!==null&&!this.json&&this.includeInfos&&this.stdout.write(RB.start(t))},reportFooter:a=>{this.indent-=1,RB!==null&&!this.json&&this.includeInfos&&this.stdout.write(RB.end(t)),this.configuration.get("enableTimers")&&a>200?this.reportInfo(null,`\u2514 Completed in ${$e(this.configuration,a,Ke.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof i=="function"?{}:i).skipIfEmpty}}startTimerSync(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionSync(o,s)}async startTimerPromise(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionPromise(o,s)}async startCacheReport(t){let i=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await t()}catch(n){throw this.reportExceptionOnce(n),n}finally{i!==null&&this.reportCacheChanges(i)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(t,i){if(!this.includeInfos)return;this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"",o=`${this.formatPrefix(s,"blueBright")}${i}`;if(this.json)this.reportJson({type:"info",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i});else if(this.forgettableNames.has(t))if(this.forgettableLines.push(o),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(o,{truncate:!0});else this.writeLineWithForgettableReset(o)}reportWarning(t,i){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"";this.json?this.reportJson({type:"warning",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i}):this.writeLineWithForgettableReset(`${this.formatPrefix(s,"yellowBright")}${i}`)}reportError(t,i){this.errorCount+=1,this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"";this.json?this.reportJson({type:"error",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i}):this.writeLineWithForgettableReset(`${this.formatPrefix(s,"redBright")}${i}`,{truncate:!1})}reportProgress(t){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(t.hasProgress&&t.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let i=!1,n=Promise.resolve().then(async()=>{let o={progress:t.hasProgress?0:void 0,title:t.hasTitle?"":void 0};this.progress.set(t,{definition:o,lastScaledSize:t.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:a,title:l}of t)i||o.progress===a&&o.title===l||(o.progress=a,o.title=l,this.refreshProgress());s()}),s=()=>{i||(i=!0,this.progress.delete(t),this.refreshProgress({delta:1}))};return{...n,stop:s}}reportJson(t){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(t)}`)}async finalize(){if(!this.includeFooter)return;let t="";this.errorCount>0?t="Failed with errors":this.warningCount>0?t="Done with warnings":t="Done";let i=$e(this.configuration,Date.now()-this.startTime,Ke.DURATION),n=this.configuration.get("enableTimers")?`${t} in ${i}`:t;this.errorCount>0?this.reportError(0,n):this.warningCount>0?this.reportWarning(0,n):this.reportInfo(0,n)}writeLine(t,{truncate:i}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(t,{truncate:i})} `),this.writeProgress()}writeLineWithForgettableReset(t,{truncate:i}={}){this.forgettableLines=[],this.writeLine(t,{truncate:i})}writeLines(t,{truncate:i}={}){this.clearProgress({delta:t.length});for(let n of t)this.stdout.write(`${this.truncate(n,{truncate:i})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:t,cacheMissCount:i}){let n=this.cacheHitCount-t,s=this.cacheMissCount-i;if(n===0&&s===0)return;let o="";this.cacheHitCount>1?o+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?o+=" - one package was already cached":o+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?o+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(o+=`, one had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?o+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(o+=` - one package had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,o)}commit(){let t=this.uncommitted;this.uncommitted=new Set;for(let i of t)i.committed=!0,i.action()}clearProgress({delta:t=0,clear:i=!1}){this.progressStyle!==null&&this.progress.size+t>0&&(this.stdout.write(`\x1B[${this.progress.size+t}A`),(t>0||i)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let t=Date.now();t-this.progressTime>D6&&(this.progressFrame=(this.progressFrame+1)%P6.length,this.progressTime=t);let i=P6[this.progressFrame];for(let n of this.progress.values()){let s="";if(typeof n.lastScaledSize<"u"){let c=this.progressStyle.chars[0].repeat(n.lastScaledSize),u=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-n.lastScaledSize);s=` ${c}${u}`}let o=this.formatName(null),a=o?`${o}: `:"",l=n.definition.title?` ${n.definition.title}`:"";this.stdout.write(`${Ze(this.configuration,"\u27A4","blueBright")} ${a}${i}${s}${l} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},D6)}refreshProgress({delta:t=0,force:i=!1}={}){let n=!1,s=!1;if(i||this.progress.size===0)n=!0;else for(let o of this.progress.values()){let a=typeof o.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*o.definition.progress):void 0,l=o.lastScaledSize;o.lastScaledSize=a;let c=o.lastTitle;if(o.lastTitle=o.definition.title,a!==l||(s=c!==o.definition.title)){n=!0;break}}n&&(this.clearProgress({delta:t,clear:s}),this.writeProgress())}truncate(t,{truncate:i}={}){return this.progressStyle===null&&(i=!1),typeof i>"u"&&(i=this.configuration.get("preferTruncatedLines")),i&&(t=(0,R6.default)(t,0,this.stdout.columns-1)),t}formatName(t){return F6(t,{configuration:this.configuration,json:this.json})}formatPrefix(t,i){return this.includePrefix?`${Ze(this.configuration,"\u27A4",i)} ${t}${this.formatIndent()}`:""}formatNameWithHyperlink(t){return PR(t,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Lr="3.4.1";var T6=(n=>(n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm",n))(T6||{});async function Ka(r,e,t,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${t}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await M.writeFilePromise(x.format({dir:r,name:e,ext:".cmd"}),n)}await M.writeFilePromise(x.join(r,e),`#!/bin/sh +`);this.writeProgress()}reportCacheChanges({cacheHitCount:t,cacheMissCount:i}){let n=this.cacheHitCount-t,s=this.cacheMissCount-i;if(n===0&&s===0)return;let o="";this.cacheHitCount>1?o+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?o+=" - one package was already cached":o+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?o+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(o+=`, one had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?o+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(o+=` - one package had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,o)}commit(){let t=this.uncommitted;this.uncommitted=new Set;for(let i of t)i.committed=!0,i.action()}clearProgress({delta:t=0,clear:i=!1}){this.progressStyle!==null&&this.progress.size+t>0&&(this.stdout.write(`\x1B[${this.progress.size+t}A`),(t>0||i)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let t=Date.now();t-this.progressTime>s9&&(this.progressFrame=(this.progressFrame+1)%n9.length,this.progressTime=t);let i=n9[this.progressFrame];for(let n of this.progress.values()){let s="";if(typeof n.lastScaledSize<"u"){let c=this.progressStyle.chars[0].repeat(n.lastScaledSize),u=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-n.lastScaledSize);s=` ${c}${u}`}let o=this.formatName(null),a=o?`${o}: `:"",l=n.definition.title?` ${n.definition.title}`:"";this.stdout.write(`${$e(this.configuration,"\u27A4","blueBright")} ${a}${i}${s}${l} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},s9)}refreshProgress({delta:t=0,force:i=!1}={}){let n=!1,s=!1;if(i||this.progress.size===0)n=!0;else for(let o of this.progress.values()){let a=typeof o.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*o.definition.progress):void 0,l=o.lastScaledSize;o.lastScaledSize=a;let c=o.lastTitle;if(o.lastTitle=o.definition.title,a!==l||(s=c!==o.definition.title)){n=!0;break}}n&&(this.clearProgress({delta:t,clear:s}),this.writeProgress())}truncate(t,{truncate:i}={}){return this.progressStyle===null&&(i=!1),typeof i>"u"&&(i=this.configuration.get("preferTruncatedLines")),i&&(t=(0,a9.default)(t,0,this.stdout.columns-1)),t}formatName(t){return A9(t,{configuration:this.configuration,json:this.json})}formatPrefix(t,i){return this.includePrefix?`${$e(this.configuration,"\u27A4",i)} ${t}${this.formatIndent()}`:""}formatNameWithHyperlink(t){return qR(t,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Lr="3.5.1";var u9=(n=>(n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm",n))(u9||{});async function Ja(r,e,t,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${t}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await M.writeFilePromise(x.format({dir:r,name:e,ext:".cmd"}),n)}await M.writeFilePromise(x.join(r,e),`#!/bin/sh exec "${t}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function O6(r){let e=await ot.tryFind(r);if(e!=null&&e.packageManager){let i=hw(e.packageManager);if(i!=null&&i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":{let o=Number(s)===1?"Yarn Classic":"Yarn";return{packageManagerField:!0,packageManager:o,reason:n}}break;case"npm":return{packageManagerField:!0,packageManager:"npm",reason:n};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:n}}}}let t;try{t=await M.readFilePromise(x.join(r,xt.lockfile),"utf8")}catch{}return t!==void 0?t.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:M.existsSync(x.join(r,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:M.existsSync(x.join(r,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function wC({project:r,locator:e,binFolder:t,ignoreCorepack:i,lifecycleScript:n}){var c,u;let s={};for(let[g,f]of Object.entries(process.env))typeof f<"u"&&(s[g.toLowerCase()!=="path"?g:"PATH"]=f);let o=K.fromPortablePath(t);s.BERRY_BIN_FOLDER=K.fromPortablePath(o);let a=process.env.COREPACK_ROOT&&!i?K.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([Ka(t,"node",process.execPath),...Lr!==null?[Ka(t,"run",process.execPath,[a,"run"]),Ka(t,"yarn",process.execPath,[a]),Ka(t,"yarnpkg",process.execPath,[a]),Ka(t,"node-gyp",process.execPath,[a,"run","--top-level","node-gyp"])]:[]]),r&&(s.INIT_CWD=K.fromPortablePath(r.configuration.startingCwd),s.PROJECT_CWD=K.fromPortablePath(r.cwd)),s.PATH=s.PATH?`${o}${K.delimiter}${s.PATH}`:`${o}`,s.npm_execpath=`${o}${K.sep}yarn`,s.npm_node_execpath=`${o}${K.sep}node`,e){if(!r)throw new Error("Assertion failed: Missing project");let g=r.tryWorkspaceByLocator(e),f=g?(c=g.manifest.version)!=null?c:"":(u=r.storedPackages.get(e.locatorHash).version)!=null?u:"";s.npm_package_name=Ot(e),s.npm_package_version=f;let h;if(g)h=g.cwd;else{let p=r.storedPackages.get(e.locatorHash);if(!p)throw new Error(`Package for ${mt(r.configuration,e)} not found in the project`);let C=r.configuration.getLinkers(),y={project:r,report:new Ge({stdout:new JA.PassThrough,configuration:r.configuration})},B=C.find(v=>v.supportsPackage(p,y));if(!B)throw new Error(`The package ${mt(r.configuration,p)} isn't supported by any of the available linkers`);h=await B.findPackageLocation(p,y)}s.npm_package_json=K.fromPortablePath(x.join(h,xt.manifest))}let l=Lr!==null?`yarn/${Lr}`:`yarn/${Af("@yarnpkg/core").version}-core`;return s.npm_config_user_agent=`${l} npm/? node/${process.version} ${process.platform} ${process.arch}`,n&&(s.npm_lifecycle_event=n),r&&await r.configuration.triggerHook(g=>g.setupScriptEnvironment,r,s,async(g,f,h)=>await Ka(t,Ur(g),f,h)),s}var Qke=2,bke=(0,L6.default)(Qke);async function Ske(r,e,{configuration:t,report:i,workspace:n=null,locator:s=null}){await bke(async()=>{await M.mktempPromise(async o=>{let a=x.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=t.getSubprocessStreams(a,{prefix:K.fromPortablePath(r),report:i}),g=s&&Uo(s)?Wd(s):s,f=g?hs(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await O6(r),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} +`,{mode:493})}async function g9(r){let e=await ot.tryFind(r);if(e!=null&&e.packageManager){let i=vw(e.packageManager);if(i!=null&&i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManagerField:!0,packageManager:Number(s)===1?"Yarn Classic":"Yarn",reason:n};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:n};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:n}}}}let t;try{t=await M.readFilePromise(x.join(r,xt.lockfile),"utf8")}catch{}return t!==void 0?t.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:M.existsSync(x.join(r,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:M.existsSync(x.join(r,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function FC({project:r,locator:e,binFolder:t,ignoreCorepack:i,lifecycleScript:n}){var c,u;let s={};for(let[g,f]of Object.entries(process.env))typeof f<"u"&&(s[g.toLowerCase()!=="path"?g:"PATH"]=f);let o=U.fromPortablePath(t);s.BERRY_BIN_FOLDER=U.fromPortablePath(o);let a=process.env.COREPACK_ROOT&&!i?U.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([Ja(t,"node",process.execPath),...Lr!==null?[Ja(t,"run",process.execPath,[a,"run"]),Ja(t,"yarn",process.execPath,[a]),Ja(t,"yarnpkg",process.execPath,[a]),Ja(t,"node-gyp",process.execPath,[a,"run","--top-level","node-gyp"])]:[]]),r&&(s.INIT_CWD=U.fromPortablePath(r.configuration.startingCwd),s.PROJECT_CWD=U.fromPortablePath(r.cwd)),s.PATH=s.PATH?`${o}${U.delimiter}${s.PATH}`:`${o}`,s.npm_execpath=`${o}${U.sep}yarn`,s.npm_node_execpath=`${o}${U.sep}node`,e){if(!r)throw new Error("Assertion failed: Missing project");let g=r.tryWorkspaceByLocator(e),f=g?(c=g.manifest.version)!=null?c:"":(u=r.storedPackages.get(e.locatorHash).version)!=null?u:"";s.npm_package_name=Ot(e),s.npm_package_version=f;let h;if(g)h=g.cwd;else{let p=r.storedPackages.get(e.locatorHash);if(!p)throw new Error(`Package for ${mt(r.configuration,e)} not found in the project`);let C=r.configuration.getLinkers(),y={project:r,report:new Ge({stdout:new el.PassThrough,configuration:r.configuration})},B=C.find(v=>v.supportsPackage(p,y));if(!B)throw new Error(`The package ${mt(r.configuration,p)} isn't supported by any of the available linkers`);h=await B.findPackageLocation(p,y)}s.npm_package_json=U.fromPortablePath(x.join(h,xt.manifest))}let l=Lr!==null?`yarn/${Lr}`:`yarn/${mf("@yarnpkg/core").version}-core`;return s.npm_config_user_agent=`${l} npm/? node/${process.version} ${process.platform} ${process.arch}`,n&&(s.npm_lifecycle_event=n),r&&await r.configuration.triggerHook(g=>g.setupScriptEnvironment,r,s,async(g,f,h)=>await Ja(t,Kr(g),f,h)),s}var hRe=2,pRe=(0,c9.default)(hRe);async function dRe(r,e,{configuration:t,report:i,workspace:n=null,locator:s=null}){await pRe(async()=>{await M.mktempPromise(async o=>{let a=x.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=t.getSubprocessStreams(a,{prefix:U.fromPortablePath(r),report:i}),g=s&&jo(s)?nC(s):s,f=g?Es(g):"an external project";c.write(`Packing ${f} from sources +`);let h=await g9(r),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} `),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn -`),p="Yarn");let C=p==="Yarn"&&!(h!=null&&h.packageManagerField);await M.mktempPromise(async y=>{let B=await wC({binFolder:y,ignoreCorepack:C}),D=new Map([["Yarn Classic",async()=>{let H=n!==null?["workspace",n]:[],j=x.join(r,xt.manifest),$=await M.readFilePromise(j),V=await Yo(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(V.code!==0)return V.code;await M.writeFilePromise(j,$),await M.appendFilePromise(x.join(r,".npmignore"),`/.yarn +`),p="Yarn");let C=p==="Yarn"&&!(h!=null&&h.packageManagerField);await M.mktempPromise(async y=>{let B=await FC({binFolder:y,ignoreCorepack:C}),D=new Map([["Yarn Classic",async()=>{let H=n!==null?["workspace",n]:[],j=x.join(r,xt.manifest),$=await M.readFilePromise(j),V=await Wo(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(V.code!==0)return V.code;await M.writeFilePromise(j,$),await M.appendFilePromise(x.join(r,".npmignore"),`/.yarn `),c.write(` -`),delete B.NODE_ENV;let W=await Yo("yarn",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(W.code!==0)return W.code;c.write(` -`);let Z=await Yo("yarn",[...H,"pack","--filename",K.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return Z.code!==0?Z.code:0}],["Yarn",async()=>{let H=n!==null?["workspace",n]:[];B.YARN_ENABLE_INLINE_BUILDS="1";let j=x.join(r,xt.lockfile);await M.existsPromise(j)||await M.writeFilePromise(j,"");let $=await Yo("yarn",[...H,"pack","--install-if-needed","--filename",K.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return $.code!==0?$.code:0}],["npm",async()=>{if(n!==null){let ae=new JA.PassThrough,ge=af(ae);ae.pipe(c,{end:!1});let re=await Yo("npm",["--version"],{cwd:r,env:B,stdin:l,stdout:ae,stderr:u,end:0});if(ae.end(),re.code!==0)return c.end(),u.end(),re.code;let O=(await ge).toString().trim();if(!mc(O,">=7.x")){let F=Ho(null,"npm"),ue=Zt(F,O),he=Zt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${tr(t,ue)}; please upgrade to ${tr(t,he)} (npm has been detected as the primary package manager for ${Ze(t,r,Ue.PATH)})`)}}let H=n!==null?["--workspace",n]:[];delete B.npm_config_user_agent,delete B.npm_config_production,delete B.NPM_CONFIG_PRODUCTION,delete B.NODE_ENV;let j=await Yo("npm",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(j.code!==0)return j.code;let $=new JA.PassThrough,V=af($);$.pipe(c);let W=await Yo("npm",["pack","--silent",...H],{cwd:r,env:B,stdin:l,stdout:$,stderr:u});if(W.code!==0)return W.code;let Z=(await V).toString().trim().replace(/^.*\n/s,""),A=x.resolve(r,K.toPortablePath(Z));return await M.renamePromise(A,e),0}]]).get(p);if(typeof D>"u")throw new Error("Assertion failed: Unsupported workflow");let L=await D();if(!(L===0||typeof L>"u"))throw M.detachTemp(o),new at(58,`Packing the package failed (exit code ${L}, logs can be found here: ${Ze(t,a,Ue.PATH)})`)})})})}async function vke(r,e,{project:t}){let i=t.tryWorkspaceByLocator(r);if(i!==null)return kR(i,e);let n=t.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t.configuration,r)} not found in the project`);return await Tn.openPromise(async s=>{let o=t.configuration,a=t.configuration.getLinkers(),l={project:t,report:new Ge({stdout:new JA.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${mt(t.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new jt(u,{baseFs:s});return(await ot.find(Oe.dot,{baseFs:g})).scripts.has(e)},{libzip:await rn()})}async function wB(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await M.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await M6(r,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f>"u")return 1;let h=async()=>await pB(f,t,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(C=>C.wrapScriptExecution,h,n,r,e,{script:f,args:t,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function DR(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await M.mktempPromise(async l=>{let{env:c,cwd:u}=await M6(r,{project:n,binFolder:l,cwd:i});return await pB(e,t,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function xke(r,{binFolder:e,cwd:t,lifecycleScript:i}){let n=await wC({project:r.project,locator:r.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await H6(r),([s,[,o]])=>Ka(e,Ur(s),process.execPath,[o]))),typeof t>"u"&&(t=x.dirname(await M.realpathPromise(x.join(r.cwd,"package.json")))),{manifest:r.manifest,binFolder:e,env:n,cwd:t}}async function M6(r,{project:e,binFolder:t,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(r);if(s!==null)return xke(s,{binFolder:t,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(r.locatorHash);if(!o)throw new Error(`Package for ${mt(e.configuration,r)} not found in the project`);return await Tn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Ge({stdout:new JA.PassThrough,configuration:l})},g=c.find(y=>y.supportsPackage(o,u));if(!g)throw new Error(`The package ${mt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await wC({project:e,locator:r,binFolder:t,lifecycleScript:n});await Promise.all(Array.from(await BB(r,{project:e}),([y,[,B]])=>Ka(t,Ur(y),process.execPath,[B])));let h=await g.findPackageLocation(o,u),p=new jt(h,{baseFs:a}),C=await ot.find(Oe.dot,{baseFs:p});return typeof i>"u"&&(i=h),{manifest:C,binFolder:t,env:f,cwd:i}},{libzip:await rn()})}async function K6(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o}){return await wB(r.anchoredLocator,e,t,{cwd:i,project:r.project,stdin:n,stdout:s,stderr:o})}function kR(r,e){return r.manifest.scripts.has(e)}async function U6(r,e,{cwd:t,report:i}){let{configuration:n}=r.project,s=null;await M.mktempPromise(async o=>{let a=x.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${K.fromPortablePath(r.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:mt(n,r.anchoredLocator),header:l});i.reportInfo(36,`Calling the "${e}" lifecycle script`);let g=await K6(r,e,[],{cwd:t,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw M.detachTemp(o),new at(36,`${(0,N6.default)(e)} script failed (exit code ${Ze(n,g,Ue.NUMBER)}, logs can be found here: ${Ze(n,a,Ue.PATH)}); run ${Ze(n,`yarn ${e}`,Ue.CODE)} to investigate`)})}async function Pke(r,e,t){kR(r,e)&&await U6(r,e,t)}async function BB(r,{project:e}){let t=e.configuration,i=new Map,n=e.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t,r)} not found in the project`);let s=new JA.Writable,o=t.getLinkers(),a={project:e,report:new Ge({configuration:t,stdout:s})},l=new Set([r.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${tr(t,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return To.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return To.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return To.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===To.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,K.fromPortablePath(x.resolve(f,p))])}return i}async function H6(r){return await BB(r.anchoredLocator,{project:r.project})}async function G6(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await BB(r,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${mt(n.configuration,r)}`);return await M.mktempPromise(async g=>{let[,f]=u,h=await wC({project:n,locator:r,binFolder:g});await Promise.all(Array.from(c,([C,[,y]])=>Ka(h.BERRY_BIN_FOLDER,Ur(C),process.execPath,[y])));let p;try{p=await Yo(process.execPath,[...l,f,...t],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await M.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function Dke(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await G6(r.anchoredLocator,e,t,{project:r.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ci={};ut(Ci,{convertToZip:()=>UFe,extractArchiveTo:()=>GFe,makeArchiveFromDirectory:()=>KFe});var EX=J("stream"),IX=Pe(fX());var hX=Pe(Tg()),pX=J("worker_threads");var il=Symbol("kTaskInfo"),d0=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,hX.default)(MD());this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let t=this.workers.pop();t?t.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new pX.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",t=>{if(!e[il])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[il].resolve(t),e[il]=null,e.unref(),this.workers.push(e)}),e.on("error",t=>{var i;(i=e[il])==null||i.reject(t),e[il]=null}),e.on("exit",t=>{var i;t!==0&&((i=e[il])==null||i.reject(new Error(`Worker exited with code ${t}`))),e[il]=null}),e}run(e){return this.limit(()=>{var i;let t=(i=this.workers.pop())!=null?i:this.createWorker();return t.ref(),new Promise((n,s)=>{t[il]={resolve:n,reject:s},t.postMessage(e)})})}};var yX=Pe(CX());async function KFe(r,{baseFs:e=new $t,prefixPath:t=Oe.root,compressionLevel:i,inMemory:n=!1}={}){let s=await rn(),o;if(n)o=new Wr(null,{libzip:s,level:i});else{let l=await M.mktempPromise(),c=x.join(l,"archive.zip");o=new Wr(c,{create:!0,libzip:s,level:i})}let a=x.resolve(Oe.root,t);return await o.copyPromise(a,r,{baseFs:e,stableTime:!0,stableSort:!0}),o}var mX;async function UFe(r,e){let t=await M.mktempPromise(),i=x.join(t,"archive.zip");return mX||(mX=new d0((0,yX.getContent)())),await mX.run({tmpFile:i,tgz:r,opts:e}),new Wr(i,{libzip:await rn(),level:e.compressionLevel})}async function*HFe(r){let e=new IX.default.Parse,t=new EX.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{t.write(i)}),e.on("error",i=>{t.destroy(i)}),e.on("close",()=>{t.destroyed||t.end()}),e.end(r);for await(let i of t){let n=i;yield n,n.resume()}}async function GFe(r,e,{stripComponents:t=0,prefixPath:i=Oe.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=t)}for await(let a of HFe(r)){if(n(a))continue;let l=x.normalize(K.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=t)continue;let c=l.slice(t).join("/"),u=x.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!==0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,xr.SAFE_TIME,xr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.writeFileSync(u,await af(a),{mode:g}),e.utimesSync(u,xr.SAFE_TIME,xr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,xr.SAFE_TIME,xr.SAFE_TIME);break}}return e}var Vn={};ut(Vn,{emitList:()=>YFe,emitTree:()=>vX,treeNodeToJson:()=>SX,treeNodeToTreeify:()=>bX});var QX=Pe(BX());function bX(r,{configuration:e}){let t={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l<"u"&&g.push(Ty(e,l,2)),typeof c<"u"&&g.push(Ze(e,c[0],c[1])),g.length===0&&g.push(Ty(e,`${a}`,2));let f=g.join(": "),h=s[f]={};typeof u<"u"&&i(u,h)}};if(typeof r.children>"u")throw new Error("The root node must only contain children");return i(r.children,t),t}function SX(r){let e=t=>{var s;if(typeof t.children>"u"){if(typeof t.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return cc(t.value[0],t.value[1])}let i=Array.isArray(t.children)?t.children.entries():Object.entries((s=t.children)!=null?s:{}),n=Array.isArray(t.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof t.value>"u"?n:{value:cc(t.value[0],t.value[1]),children:n}};return e(r)}function YFe(r,{configuration:e,stdout:t,json:i}){let n=r.map(s=>({value:s}));vX({children:n},{configuration:e,stdout:t,json:i})}function vX(r,{configuration:e,stdout:t,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(r.children)?r.children.values():Object.values((o=r.children)!=null?o:{});for(let l of a)t.write(`${JSON.stringify(SX(l))} -`);return}let s=(0,QX.asTree)(bX(r,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 +`),delete B.NODE_ENV;let W=await Wo("yarn",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(W.code!==0)return W.code;c.write(` +`);let _=await Wo("yarn",[...H,"pack","--filename",U.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return _.code!==0?_.code:0}],["Yarn",async()=>{let H=n!==null?["workspace",n]:[];B.YARN_ENABLE_INLINE_BUILDS="1";let j=x.join(r,xt.lockfile);await M.existsPromise(j)||await M.writeFilePromise(j,"");let $=await Wo("yarn",[...H,"pack","--install-if-needed","--filename",U.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return $.code!==0?$.code:0}],["npm",async()=>{if(n!==null){let Ae=new el.PassThrough,ge=Cf(Ae);Ae.pipe(c,{end:!1});let re=await Wo("npm",["--version"],{cwd:r,env:B,stdin:l,stdout:Ae,stderr:u,end:0});if(Ae.end(),re.code!==0)return c.end(),u.end(),re.code;let O=(await ge).toString().trim();if(!kc(O,">=7.x")){let F=qo(null,"npm"),ue=_t(F,O),pe=_t(F,">=7.x");throw new Error(`Workspaces aren't supported by ${tr(t,ue)}; please upgrade to ${tr(t,pe)} (npm has been detected as the primary package manager for ${$e(t,r,Ke.PATH)})`)}}let H=n!==null?["--workspace",n]:[];delete B.npm_config_user_agent,delete B.npm_config_production,delete B.NPM_CONFIG_PRODUCTION,delete B.NODE_ENV;let j=await Wo("npm",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(j.code!==0)return j.code;let $=new el.PassThrough,V=Cf($);$.pipe(c);let W=await Wo("npm",["pack","--silent",...H],{cwd:r,env:B,stdin:l,stdout:$,stderr:u});if(W.code!==0)return W.code;let _=(await V).toString().trim().replace(/^.*\n/s,""),A=x.resolve(r,U.toPortablePath(_));return await M.renamePromise(A,e),0}]]).get(p);if(typeof D>"u")throw new Error("Assertion failed: Unsupported workflow");let L=await D();if(!(L===0||typeof L>"u"))throw M.detachTemp(o),new at(58,`Packing the package failed (exit code ${L}, logs can be found here: ${$e(t,a,Ke.PATH)})`)})})})}async function CRe(r,e,{project:t}){let i=t.tryWorkspaceByLocator(r);if(i!==null)return WR(i,e);let n=t.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t.configuration,r)} not found in the project`);return await Mn.openPromise(async s=>{let o=t.configuration,a=t.configuration.getLinkers(),l={project:t,report:new Ge({stdout:new el.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${mt(t.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new qt(u,{baseFs:s});return(await ot.find(Oe.dot,{baseFs:g})).scripts.has(e)},{libzip:await on()})}async function LB(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await M.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await f9(r,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f>"u")return 1;let h=async()=>await xB(f,t,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(C=>C.wrapScriptExecution,h,n,r,e,{script:f,args:t,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function JR(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await M.mktempPromise(async l=>{let{env:c,cwd:u}=await f9(r,{project:n,binFolder:l,cwd:i});return await xB(e,t,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function mRe(r,{binFolder:e,cwd:t,lifecycleScript:i}){let n=await FC({project:r.project,locator:r.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await d9(r),([s,[,o]])=>Ja(e,Kr(s),process.execPath,[o]))),typeof t>"u"&&(t=x.dirname(await M.realpathPromise(x.join(r.cwd,"package.json")))),{manifest:r.manifest,binFolder:e,env:n,cwd:t}}async function f9(r,{project:e,binFolder:t,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(r);if(s!==null)return mRe(s,{binFolder:t,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(r.locatorHash);if(!o)throw new Error(`Package for ${mt(e.configuration,r)} not found in the project`);return await Mn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Ge({stdout:new el.PassThrough,configuration:l})},g=c.find(y=>y.supportsPackage(o,u));if(!g)throw new Error(`The package ${mt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await FC({project:e,locator:r,binFolder:t,lifecycleScript:n});await Promise.all(Array.from(await TB(r,{project:e}),([y,[,B]])=>Ja(t,Kr(y),process.execPath,[B])));let h=await g.findPackageLocation(o,u),p=new qt(h,{baseFs:a}),C=await ot.find(Oe.dot,{baseFs:p});return typeof i>"u"&&(i=h),{manifest:C,binFolder:t,env:f,cwd:i}},{libzip:await on()})}async function h9(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o}){return await LB(r.anchoredLocator,e,t,{cwd:i,project:r.project,stdin:n,stdout:s,stderr:o})}function WR(r,e){return r.manifest.scripts.has(e)}async function p9(r,e,{cwd:t,report:i}){let{configuration:n}=r.project,s=null;await M.mktempPromise(async o=>{let a=x.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${U.fromPortablePath(r.cwd)}") +`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:mt(n,r.anchoredLocator),header:l});i.reportInfo(36,`Calling the "${e}" lifecycle script`);let g=await h9(r,e,[],{cwd:t,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw M.detachTemp(o),new at(36,`${(0,l9.default)(e)} script failed (exit code ${$e(n,g,Ke.NUMBER)}, logs can be found here: ${$e(n,a,Ke.PATH)}); run ${$e(n,`yarn ${e}`,Ke.CODE)} to investigate`)})}async function ERe(r,e,t){WR(r,e)&&await p9(r,e,t)}async function TB(r,{project:e}){let t=e.configuration,i=new Map,n=e.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t,r)} not found in the project`);let s=new el.Writable,o=t.getLinkers(),a={project:e,report:new Ge({configuration:t,stdout:s})},l=new Set([r.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${tr(t,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return Ko.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return Ko.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return Ko.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===Ko.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,U.fromPortablePath(x.resolve(f,p))])}return i}async function d9(r){return await TB(r.anchoredLocator,{project:r.project})}async function C9(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await TB(r,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${mt(n.configuration,r)}`);return await M.mktempPromise(async g=>{let[,f]=u,h=await FC({project:n,locator:r,binFolder:g});await Promise.all(Array.from(c,([C,[,y]])=>Ja(h.BERRY_BIN_FOLDER,Kr(C),process.execPath,[y])));let p;try{p=await Wo(process.execPath,[...l,f,...t],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await M.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function IRe(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await C9(r.anchoredLocator,e,t,{project:r.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var mi={};ut(mi,{convertToZip:()=>WNe,extractArchiveTo:()=>VNe,makeArchiveFromDirectory:()=>JNe});var aZ=J("stream"),AZ=Pe(tZ());var rZ=Pe(Jg()),iZ=J("worker_threads");var fl=Symbol("kTaskInfo"),T0=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,rZ.default)(ek());this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let t=this.workers.pop();t?t.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new iZ.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",t=>{if(!e[fl])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[fl].resolve(t),e[fl]=null,e.unref(),this.workers.push(e)}),e.on("error",t=>{var i;(i=e[fl])==null||i.reject(t),e[fl]=null}),e.on("exit",t=>{var i;t!==0&&((i=e[fl])==null||i.reject(new Error(`Worker exited with code ${t}`))),e[fl]=null}),e}run(e){return this.limit(()=>{var i;let t=(i=this.workers.pop())!=null?i:this.createWorker();return t.ref(),new Promise((n,s)=>{t[fl]={resolve:n,reject:s},t.postMessage(e)})})}};var lZ=Pe(sZ());async function JNe(r,{baseFs:e=new $t,prefixPath:t=Oe.root,compressionLevel:i,inMemory:n=!1}={}){let s=await on(),o;if(n)o=new Wr(null,{libzip:s,level:i});else{let l=await M.mktempPromise(),c=x.join(l,"archive.zip");o=new Wr(c,{create:!0,libzip:s,level:i})}let a=x.resolve(Oe.root,t);return await o.copyPromise(a,r,{baseFs:e,stableTime:!0,stableSort:!0}),o}var oZ;async function WNe(r,e){let t=await M.mktempPromise(),i=x.join(t,"archive.zip");return oZ||(oZ=new T0((0,lZ.getContent)())),await oZ.run({tmpFile:i,tgz:r,opts:e}),new Wr(i,{libzip:await on(),level:e.compressionLevel})}async function*zNe(r){let e=new AZ.default.Parse,t=new aZ.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{t.write(i)}),e.on("error",i=>{t.destroy(i)}),e.on("close",()=>{t.destroyed||t.end()}),e.end(r);for await(let i of t){let n=i;yield n,n.resume()}}async function VNe(r,e,{stripComponents:t=0,prefixPath:i=Oe.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=t)}for await(let a of zNe(r)){if(n(a))continue;let l=x.normalize(U.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=t)continue;let c=l.slice(t).join("/"),u=x.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!==0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,xr.SAFE_TIME,xr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.writeFileSync(u,await Cf(a),{mode:g}),e.utimesSync(u,xr.SAFE_TIME,xr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(x.dirname(u),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,xr.SAFE_TIME,xr.SAFE_TIME);break}}return e}var $n={};ut($n,{emitList:()=>XNe,emitTree:()=>pZ,treeNodeToJson:()=>hZ,treeNodeToTreeify:()=>fZ});var gZ=Pe(uZ());function fZ(r,{configuration:e}){let t={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l<"u"&&g.push(Vy(e,l,2)),typeof c<"u"&&g.push($e(e,c[0],c[1])),g.length===0&&g.push(Vy(e,`${a}`,2));let f=g.join(": "),h=s[f]={};typeof u<"u"&&i(u,h)}};if(typeof r.children>"u")throw new Error("The root node must only contain children");return i(r.children,t),t}function hZ(r){let e=t=>{var s;if(typeof t.children>"u"){if(typeof t.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Bc(t.value[0],t.value[1])}let i=Array.isArray(t.children)?t.children.entries():Object.entries((s=t.children)!=null?s:{}),n=Array.isArray(t.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof t.value>"u"?n:{value:Bc(t.value[0],t.value[1]),children:n}};return e(r)}function XNe(r,{configuration:e,stdout:t,json:i}){let n=r.map(s=>({value:s}));pZ({children:n},{configuration:e,stdout:t,json:i})}function pZ(r,{configuration:e,stdout:t,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(r.children)?r.children.values():Object.values((o=r.children)!=null?o:{});for(let l of a)t.write(`${JSON.stringify(hZ(l))} +`);return}let s=(0,gZ.asTree)(fZ(r,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 $1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");t.write(s)}var xX=J("crypto"),rN=Pe(J("fs"));var jFe=8,Rt=class{constructor(e,{configuration:t,immutable:i=t.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,xX.randomBytes)(8).toString("hex")}.tmp`;this.configuration=t,this.cwd=e,this.immutable=i,this.check=n;let s=t.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=t.get("compressionLevel"),a=o!==Ol?`c${o}`:"";this.cacheKey=[jFe,a].join("")}}static async find(e,{immutable:t,check:i}={}){let n=new Rt(e.get("cacheFolder"),{configuration:e,immutable:t,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${mf(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,t){let n=qFe(t).slice(0,10);return`${mf(e)}-${n}.zip`}getLocatorPath(e,t,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?x.resolve(this.cwd,this.getVersionFilename(e)):t===null||tN(t)!==this.cacheKey?null:x.resolve(this.cwd,this.getChecksumFilename(e,t))}getLocatorMirrorPath(e){let t=this.mirrorCwd;return t!==null?x.resolve(t,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await M.existsPromise(this.cwd))throw new at(56,"Cache path does not exist.")}else{await M.mkdirPromise(this.cwd,{recursive:!0});let e=x.resolve(this.cwd,".gitignore");await M.changeFilePromise(e,`/.gitignore +$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");t.write(s)}var dZ=J("crypto"),PN=Pe(J("fs"));var ZNe=8,Rt=class{constructor(e,{configuration:t,immutable:i=t.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,dZ.randomBytes)(8).toString("hex")}.tmp`;this.configuration=t,this.cwd=e,this.immutable=i,this.check=n;let s=t.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=t.get("compressionLevel"),a=o!==Xl?`c${o}`:"";this.cacheKey=[ZNe,a].join("")}}static async find(e,{immutable:t,check:i}={}){let n=new Rt(e.get("cacheFolder"),{configuration:e,immutable:t,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${xf(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,t){let n=_Ne(t).slice(0,10);return`${xf(e)}-${n}.zip`}getLocatorPath(e,t,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?x.resolve(this.cwd,this.getVersionFilename(e)):t===null||xN(t)!==this.cacheKey?null:x.resolve(this.cwd,this.getChecksumFilename(e,t))}getLocatorMirrorPath(e){let t=this.mirrorCwd;return t!==null?x.resolve(t,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await M.existsPromise(this.cwd))throw new at(56,"Cache path does not exist.")}else{await M.mkdirPromise(this.cwd,{recursive:!0});let e=x.resolve(this.cwd,".gitignore");await M.changeFilePromise(e,`/.gitignore *.flock *.tmp -`)}(this.mirrorCwd||!this.immutable)&&await M.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,t,{onHit:i,onMiss:n,loader:s,...o}){var W;let a=this.getLocatorMirrorPath(e),l=new $t,c=()=>{let Z=new Wr(null,{libzip:D}),A=x.join(Oe.root,PD(e));return Z.mkdirSync(A,{recursive:!0}),Z.writeJsonSync(x.join(A,xt.manifest),{name:Ot(e),mocked:!0}),Z},u=async(Z,A=null)=>{var ge;if(A===null&&((ge=o.unstablePackages)==null?void 0:ge.has(e.locatorHash)))return null;let ae=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await uw(Z)}`:t;if(A!==null){let re=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await uw(A)}`:t;if(ae!==re)throw new at(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(t!==null&&ae!==t){let re;switch(this.check?re="throw":tN(t)!==tN(ae)?re="update":re=this.configuration.get("checksumBehavior"),re){case"ignore":return t;case"update":return ae;default:case"throw":throw new at(18,"The remote archive doesn't match the expected checksum")}}return ae},g=async Z=>{if(!s)throw new Error(`Cache check required but no loader configured for ${mt(this.configuration,e)}`);let A=await s(),ae=A.getRealPath();return A.saveAndClose(),await M.chmodPromise(ae,420),await u(Z,ae)},f=async()=>{if(a===null||!await M.existsPromise(a)){let Z=await s(),A=Z.getRealPath();return Z.saveAndClose(),{source:"loader",path:A}}return{source:"mirror",path:a}},h=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${mt(this.configuration,e)}`);if(this.immutable)throw new at(56,`Cache entry required but missing for ${mt(this.configuration,e)}`);let{path:Z,source:A}=await f(),ae=await u(Z),ge=this.getLocatorPath(e,ae,o);if(!ge)throw new Error("Assertion failed: Expected the cache path to be available");let re=[];A!=="mirror"&&a!==null&&re.push(async()=>{let F=`${a}${this.cacheId}`;await M.copyFilePromise(Z,F,rN.default.constants.COPYFILE_FICLONE),await M.chmodPromise(F,420),await M.renamePromise(F,a)}),(!o.mirrorWriteOnly||a===null)&&re.push(async()=>{let F=`${ge}${this.cacheId}`;await M.copyFilePromise(Z,F,rN.default.constants.COPYFILE_FICLONE),await M.chmodPromise(F,420),await M.renamePromise(F,ge)});let O=o.mirrorWriteOnly&&a!=null?a:ge;return await Promise.all(re.map(F=>F())),[!1,O,ae]},p=async()=>{let A=(async()=>{var ue;let ae=this.getLocatorPath(e,t,o),ge=ae!==null?await l.existsPromise(ae):!1,re=!!((ue=o.mockedPackages)!=null&&ue.has(e.locatorHash))&&(!this.check||!ge),O=re||ge,F=O?i:n;if(F&&F(),O){let he=null,ke=ae;return re||(he=this.check?await g(ke):await u(ke)),[re,ke,he]}else return h()})();this.mutexes.set(e.locatorHash,A);try{return await A}finally{this.mutexes.delete(e.locatorHash)}};for(let Z;Z=this.mutexes.get(e.locatorHash);)await Z;let[C,y,B]=await p();this.markedFiles.add(y);let v,D=await rn(),L=C?()=>c():()=>new Wr(y,{baseFs:l,libzip:D,readOnly:!0}),H=new dg(()=>Dx(()=>v=L(),Z=>`Failed to open the cache entry for ${mt(this.configuration,e)}: ${Z}`),x),j=new yo(y,{baseFs:H,pathUtils:x}),$=()=>{v==null||v.discardAndClose()},V=(W=o.unstablePackages)!=null&&W.has(e.locatorHash)?null:B;return[j,$,V]}};function tN(r){let e=r.indexOf("/");return e!==-1?r.slice(0,e):null}function qFe(r){let e=r.indexOf("/");return e!==-1?r.slice(e+1):r}var C0=(t=>(t[t.SCRIPT=0]="SCRIPT",t[t.SHELLCODE=1]="SHELLCODE",t))(C0||{});var _o=class extends Si{constructor({configuration:t,stdout:i,suggestInstall:n=!0}){super();this.errorCount=0;Kd(this,{configuration:t}),this.configuration=t,this.stdout=i,this.suggestInstall=n}static async start(t,i){let n=new this(t);try{await i(n)}catch(s){n.reportExceptionOnce(s)}finally{await n.finalize()}return n}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,i){return i()}async startSectionPromise(t,i){return await i()}startTimerSync(t,i,n){return(typeof i=="function"?i:n)()}async startTimerPromise(t,i,n){return await(typeof i=="function"?i:n)()}async startCacheReport(t){return await t()}reportSeparator(){}reportInfo(t,i){}reportWarning(t,i){}reportError(t,i){this.errorCount+=1,this.stdout.write(`${Ze(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(t)}: ${i} +`)}(this.mirrorCwd||!this.immutable)&&await M.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,t,{onHit:i,onMiss:n,loader:s,...o}){var W;let a=this.getLocatorMirrorPath(e),l=new $t,c=()=>{let _=new Wr(null,{libzip:D}),A=x.join(Oe.root,qD(e));return _.mkdirSync(A,{recursive:!0}),_.writeJsonSync(x.join(A,xt.manifest),{name:Ot(e),mocked:!0}),_},u=async(_,A=null)=>{var ge;if(A===null&&((ge=o.unstablePackages)==null?void 0:ge.has(e.locatorHash)))return{isValid:!0,hash:null};let Ae=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await Qw(_)}`:t;if(A!==null){let re=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await Qw(A)}`:t;if(Ae!==re)throw new at(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(t!==null&&Ae!==t){let re;switch(this.check?re="throw":xN(t)!==xN(Ae)?re="update":re=this.configuration.get("checksumBehavior"),re){case"ignore":return{isValid:!0,hash:t};case"update":return{isValid:!0,hash:Ae};case"reset":return{isValid:!1,hash:t};default:case"throw":throw new at(18,"The remote archive doesn't match the expected checksum")}}return{isValid:!0,hash:Ae}},g=async _=>{if(!s)throw new Error(`Cache check required but no loader configured for ${mt(this.configuration,e)}`);let A=await s(),Ae=A.getRealPath();A.saveAndClose(),await M.chmodPromise(Ae,420);let ge=await u(_,Ae);if(!ge.isValid)throw new Error("Assertion failed: Expected a valid checksum");return ge.hash},f=async()=>{if(a===null||!await M.existsPromise(a)){let _=await s(),A=_.getRealPath();return _.saveAndClose(),{source:"loader",path:A}}return{source:"mirror",path:a}},h=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${mt(this.configuration,e)}`);if(this.immutable)throw new at(56,`Cache entry required but missing for ${mt(this.configuration,e)}`);let{path:_,source:A}=await f(),Ae=(await u(_)).hash,ge=this.getLocatorPath(e,Ae,o);if(!ge)throw new Error("Assertion failed: Expected the cache path to be available");let re=[];A!=="mirror"&&a!==null&&re.push(async()=>{let F=`${a}${this.cacheId}`;await M.copyFilePromise(_,F,PN.default.constants.COPYFILE_FICLONE),await M.chmodPromise(F,420),await M.renamePromise(F,a)}),(!o.mirrorWriteOnly||a===null)&&re.push(async()=>{let F=`${ge}${this.cacheId}`;await M.copyFilePromise(_,F,PN.default.constants.COPYFILE_FICLONE),await M.chmodPromise(F,420),await M.renamePromise(F,ge)});let O=o.mirrorWriteOnly&&a!=null?a:ge;return await Promise.all(re.map(F=>F())),[!1,O,Ae]},p=async()=>{let A=(async()=>{var ue;let Ae=this.getLocatorPath(e,t,o),ge=Ae!==null?await l.existsPromise(Ae):!1,re=!!((ue=o.mockedPackages)!=null&&ue.has(e.locatorHash))&&(!this.check||!ge),O=re||ge,F=O?i:n;if(F&&F(),O){let pe=null,ke=Ae;if(!re)if(this.check)pe=await g(ke);else{let Fe=await u(ke);if(Fe.isValid)pe=Fe.hash;else return h()}return[re,ke,pe]}else return h()})();this.mutexes.set(e.locatorHash,A);try{return await A}finally{this.mutexes.delete(e.locatorHash)}};for(let _;_=this.mutexes.get(e.locatorHash);)await _;let[C,y,B]=await p();this.markedFiles.add(y);let v,D=await on(),L=C?()=>c():()=>new Wr(y,{baseFs:l,libzip:D,readOnly:!0}),H=new Sg(()=>Jx(()=>v=L(),_=>`Failed to open the cache entry for ${mt(this.configuration,e)}: ${_}`),x),j=new bo(y,{baseFs:H,pathUtils:x}),$=()=>{v==null||v.discardAndClose()},V=(W=o.unstablePackages)!=null&&W.has(e.locatorHash)?null:B;return[j,$,V]}};function xN(r){let e=r.indexOf("/");return e!==-1?r.slice(0,e):null}function _Ne(r){let e=r.indexOf("/");return e!==-1?r.slice(e+1):r}var O0=(t=>(t[t.SCRIPT=0]="SCRIPT",t[t.SHELLCODE=1]="SHELLCODE",t))(O0||{});var ra=class extends vi{constructor({configuration:t,stdout:i,suggestInstall:n=!0}){super();this.errorCount=0;Xd(this,{configuration:t}),this.configuration=t,this.stdout=i,this.suggestInstall=n}static async start(t,i){let n=new this(t);try{await i(n)}catch(s){n.reportExceptionOnce(s)}finally{await n.finalize()}return n}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,i){return i()}async startSectionPromise(t,i){return await i()}startTimerSync(t,i,n){return(typeof i=="function"?i:n)()}async startTimerPromise(t,i,n){return await(typeof i=="function"?i:n)()}async startCacheReport(t){return await t()}reportSeparator(){}reportInfo(t,i){}reportWarning(t,i){}reportError(t,i){this.errorCount+=1,this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(t)}: ${i} `)}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ze(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ze(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(t){return PR(t,{configuration:this.configuration,json:!1})}};var D0=J("crypto");function Wa(){}Wa.prototype={diff:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(C){return n?(setTimeout(function(){n(void 0,C)},0),!0):C}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e)),t=this.removeEmpty(this.tokenize(t));var a=t.length,l=e.length,c=1,u=a+l;i.maxEditLength&&(u=Math.min(u,i.maxEditLength));var g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],t,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(t),count:t.length}]);function h(){for(var C=-1*c;C<=c;C+=2){var y=void 0,B=g[C-1],v=g[C+1],D=(v?v.newPos:0)-C;B&&(g[C-1]=void 0);var L=B&&B.newPos+1=a&&D+1>=l)return o(JFe(s,y.components,t,e,s.useLongestToken));g[C]=y}c++}if(n)(function C(){setTimeout(function(){if(c>u)return n();h()||C()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,t,i){var n=e[e.length-1];n&&n.added===t&&n.removed===i?e[e.length-1]={count:n.count+1,added:t,removed:i}:e.push({count:1,added:t,removed:i})},extractCommon:function(e,t,i,n){for(var s=t.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?C:h}),c.value=r.join(u)}else c.value=r.join(t.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&r.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function WFe(r){return{newPos:r.newPos,components:r.components.slice(0)}}var Uot=new Wa;var PX=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,DX=/\S/,kX=new Wa;kX.equals=function(r,e){return this.options.ignoreCase&&(r=r.toLowerCase(),e=e.toLowerCase()),r===e||this.options.ignoreWhitespace&&!DX.test(r)&&!DX.test(e)};kX.tokenize=function(r){for(var e=r.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;tr.length)&&(e=r.length);for(var t=0,i=new Array(e);t"u"?t:o}:i;return typeof r=="string"?r:JSON.stringify(sN(r,null,null,n),n," ")};HC.equals=function(r,e){return Wa.prototype.equals.call(HC,r.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function sN(r,e,t,i,n){e=e||[],t=t||[],i&&(r=i(n,r));var s;for(s=0;s"u"&&(o.context=4);var a=zFe(t,i,o);if(!a)return;a.push({value:"",lines:[]});function l(B){return B.map(function(v){return" "+v})}for(var c=[],u=0,g=0,f=[],h=1,p=1,C=function(v){var D=a[v],L=D.lines||D.value.replace(/\n$/,"").split(` -`);if(D.lines=L,D.added||D.removed){var H;if(!u){var j=a[v-1];u=h,g=p,j&&(f=o.context>0?l(j.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,iN(L.map(function(re){return(D.added?"+":"-")+re}))),D.added?p+=L.length:h+=L.length}else{if(u)if(L.length<=o.context*2&&v=a.length-2&&L.length<=o.context){var A=/\n$/.test(t),ae=/\n$/.test(i),ge=L.length==0&&f.length>Z.oldLines;!A&&ge&&t.length>0&&f.splice(Z.oldLines,0,"\\ No newline at end of file"),(!A&&!ge||!ae)&&f.push("\\ No newline at end of file")}c.push(Z),u=0,g=0,f=[]}h+=L.length,p+=L.length}},y=0;y`${t}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,r=>`npm:${r}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(r,e)=>pw({protocol:"npm:",source:null,selector:r,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,r=>`npm:${r}`]],v0=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:t}){let i=x.join(e.cwd,e.configuration.get("lockfileFilename"));if(!M.existsSync(i))return;let n=await M.readFilePromise(i,"utf8"),s=Ii(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=Xd(a);if(!l){t.reportWarning(14,`Failed to parse the string "${a}" into a proper descriptor`);continue}let c=to(l.range)?Zt(l,`npm:${l.range}`):l,{version:u,resolved:g}=s[a];if(!g)continue;let f;for(let[p,C]of POe){let y=g.match(p);if(y){f=C(u,...y);break}}if(!f){t.reportWarning(14,`${tr(e.configuration,c)}: Only some patterns can be imported from legacy lockfiles (not "${g}")`);continue}let h=c;try{let p=Cf(c.range),C=Xd(p.selector,!0);C&&(h=C)}catch{}o.set(c.descriptorHash,$i(h,f))}}supportsDescriptor(e,t){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return await this.resolver.getCandidates(bD(n),t,i)}async getSatisfying(e,t,i){return null}async resolve(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var x0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return!!(t.project.storedResolutions.get(e.descriptorHash)||t.project.originalPackages.has(fw(e).locatorHash))}supportsLocator(e,t){return!!(t.project.originalPackages.has(e.locatorHash)&&!t.project.lockfileNeedsRefresh)}shouldPersistResolution(e,t){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,i){let n=i.project.originalPackages.get(fw(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,t,i){return null}async resolve(e,t){let i=t.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var P0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return this.resolver.supportsDescriptor(e,t)}supportsLocator(e,t){return this.resolver.supportsLocator(e,t)}shouldPersistResolution(e,t){return this.resolver.shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.resolver.bindDescriptor(e,t,i)}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,i){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,t,i){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,t){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ti=class extends Si{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,t){return t()}async startSectionPromise(e,t){return await t()}startTimerSync(e,t,i){return(typeof t=="function"?t:i)()}async startTimerPromise(e,t,i){return await(typeof t=="function"?t:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}};var KZ=Pe(wD());var fh=class{constructor(e,{project:t}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=t,this.cwd=e}async setup(){var s;this.manifest=(s=await ot.tryFind(this.cwd))!=null?s:new ot,this.relativeCwd=x.relative(this.project.cwd,this.cwd)||Oe.dot;let e=this.manifest.name?this.manifest.name:Ho(null,`${this.computeCandidateName()}-${Zi(this.relativeCwd).substring(0,6)}`),t=this.manifest.version?this.manifest.version:"0.0.0";this.locator=$i(e,t),this.anchoredDescriptor=Zt(this.locator,`${jr.protocol}${this.relativeCwd}`),this.anchoredLocator=$i(this.locator,`${jr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:o})=>o),n=await(0,KZ.default)(i,{cwd:K.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let o of n){let a=x.resolve(this.cwd,K.toPortablePath(o));M.existsSync(x.join(a,"package.json"))&&this.workspacesCwds.add(a)}}accepts(e){var o;let t=e.indexOf(":"),i=t!==-1?e.slice(0,t+1):null,n=t!==-1?e.slice(t+1):e;if(i===jr.protocol&&x.normalize(n)===this.relativeCwd||i===jr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=to(n);return s?i===jr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${x.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=ot.hardDependencies}={}){let t=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||t.has(a)||(t.add(a),i(a))}};return i(this),t}getRecursiveWorkspaceDependents({dependencies:e=ot.hardDependencies}={}){let t=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&Vd(c.anchoredLocator,n.anchoredLocator)}))&&!t.has(s)&&(t.add(s),i(s))};return i(this),t}getRecursiveWorkspaceChildren(){let e=[];for(let t of this.workspacesCwds){let i=this.project.workspacesByCwd.get(t);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let t=x.join(this.cwd,ot.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await M.changeFilePromise(t,i,{automaticNewlines:!0}),this.manifest.raw=e}};var UZ=6,DOe=1,kOe=/ *, */g,HZ=/\/$/,ROe=32,FOe=(0,EN.promisify)(IN.default.gzip),NOe=(0,EN.promisify)(IN.default.gunzip),Xn=(t=>(t.UpdateLockfile="update-lockfile",t.SkipBuild="skip-build",t))(Xn||{}),CN={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},GZ=r=>Zi(`${DOe}`,r),je=class{constructor(e,{configuration:t}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=t,this.cwd=e}static async find(e,t){var p,C,y;if(!e.projectCwd)throw new be(`No project found in ${t}`);let i=e.projectCwd,n=t,s=null;for(;s!==e.projectCwd;){if(s=n,M.existsSync(x.join(s,xt.manifest))){i=s;break}n=x.dirname(s)}let o=new je(e.projectCwd,{configuration:e});(p=ye.telemetry)==null||p.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(C=ye.telemetry)==null||C.reportWorkspaceCount(o.workspaces.length),(y=ye.telemetry)==null||y.reportDependencyCount(o.workspaces.reduce((B,v)=>B+v.manifest.dependencies.size+v.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};let c=Ze(e,o.cwd,Ue.PATH),u=Ze(e,x.relative(o.cwd,i),Ue.PATH),g=`- If ${c} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,f=`- If ${c} is intended to be a project, it might be that you forgot to list ${u} in its workspace configuration.`,h=`- Finally, if ${c} is fine and you intend ${u} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new be(`The nearest package directory (${Ze(e,i,Ue.PATH)}) doesn't seem to be part of the project declared in ${Ze(e,o.cwd,Ue.PATH)}. +`),this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(t){return qR(t,{configuration:this.configuration,json:!1})}};var X0=J("crypto");function rA(){}rA.prototype={diff:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(C){return n?(setTimeout(function(){n(void 0,C)},0),!0):C}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e)),t=this.removeEmpty(this.tokenize(t));var a=t.length,l=e.length,c=1,u=a+l;i.maxEditLength&&(u=Math.min(u,i.maxEditLength));var g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],t,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(t),count:t.length}]);function h(){for(var C=-1*c;C<=c;C+=2){var y=void 0,B=g[C-1],v=g[C+1],D=(v?v.newPos:0)-C;B&&(g[C-1]=void 0);var L=B&&B.newPos+1=a&&D+1>=l)return o($Ne(s,y.components,t,e,s.useLongestToken));g[C]=y}c++}if(n)(function C(){setTimeout(function(){if(c>u)return n();h()||C()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,t,i){var n=e[e.length-1];n&&n.added===t&&n.removed===i?e[e.length-1]={count:n.count+1,added:t,removed:i}:e.push({count:1,added:t,removed:i})},extractCommon:function(e,t,i,n){for(var s=t.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?C:h}),c.value=r.join(u)}else c.value=r.join(t.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&r.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function eLe(r){return{newPos:r.newPos,components:r.components.slice(0)}}var Nat=new rA;var CZ=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,mZ=/\S/,EZ=new rA;EZ.equals=function(r,e){return this.options.ignoreCase&&(r=r.toLowerCase(),e=e.toLowerCase()),r===e||this.options.ignoreWhitespace&&!mZ.test(r)&&!mZ.test(e)};EZ.tokenize=function(r){for(var e=r.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;tr.length)&&(e=r.length);for(var t=0,i=new Array(e);t"u"?t:o}:i;return typeof r=="string"?r:JSON.stringify(RN(r,null,null,n),n," ")};ZC.equals=function(r,e){return rA.prototype.equals.call(ZC,r.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function RN(r,e,t,i,n){e=e||[],t=t||[],i&&(r=i(n,r));var s;for(s=0;s"u"&&(o.context=4);var a=tLe(t,i,o);if(!a)return;a.push({value:"",lines:[]});function l(B){return B.map(function(v){return" "+v})}for(var c=[],u=0,g=0,f=[],h=1,p=1,C=function(v){var D=a[v],L=D.lines||D.value.replace(/\n$/,"").split(` +`);if(D.lines=L,D.added||D.removed){var H;if(!u){var j=a[v-1];u=h,g=p,j&&(f=o.context>0?l(j.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,DN(L.map(function(re){return(D.added?"+":"-")+re}))),D.added?p+=L.length:h+=L.length}else{if(u)if(L.length<=o.context*2&&v=a.length-2&&L.length<=o.context){var A=/\n$/.test(t),Ae=/\n$/.test(i),ge=L.length==0&&f.length>_.oldLines;!A&&ge&&t.length>0&&f.splice(_.oldLines,0,"\\ No newline at end of file"),(!A&&!ge||!Ae)&&f.push("\\ No newline at end of file")}c.push(_),u=0,g=0,f=[]}h+=L.length,p+=L.length}},y=0;y`${t}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,r=>`npm:${r}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(r,e)=>xw({protocol:"npm:",source:null,selector:r,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,r=>`npm:${r}`]],W0=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:t}){let i=x.join(e.cwd,e.configuration.get("lockfileFilename"));if(!M.existsSync(i))return;let n=await M.readFilePromise(i,"utf8"),s=yi(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=aC(a);if(!l){t.reportWarning(14,`Failed to parse the string "${a}" into a proper descriptor`);continue}let c=so(l.range)?_t(l,`npm:${l.range}`):l,{version:u,resolved:g}=s[a];if(!g)continue;let f;for(let[p,C]of TMe){let y=g.match(p);if(y){f=C(u,...y);break}}if(!f){t.reportWarning(14,`${tr(e.configuration,c)}: Only some patterns can be imported from legacy lockfiles (not "${g}")`);continue}let h=c;try{let p=vf(c.range),C=aC(p.selector,!0);C&&(h=C)}catch{}o.set(c.descriptorHash,rn(h,f))}}supportsDescriptor(e,t){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return await this.resolver.getCandidates(HD(n),t,i)}async getSatisfying(e,t,i){return null}async resolve(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var z0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return!!(t.project.storedResolutions.get(e.descriptorHash)||t.project.originalPackages.has(Sw(e).locatorHash))}supportsLocator(e,t){return!!(t.project.originalPackages.has(e.locatorHash)&&!t.project.lockfileNeedsRefresh)}shouldPersistResolution(e,t){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,i){let n=i.project.originalPackages.get(Sw(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,t,i){return null}async resolve(e,t){let i=t.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var V0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return this.resolver.supportsDescriptor(e,t)}supportsLocator(e,t){return this.resolver.supportsLocator(e,t)}shouldPersistResolution(e,t){return this.resolver.shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.resolver.bindDescriptor(e,t,i)}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,i){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,t,i){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,t){throw new at(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ti=class extends vi{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,t){return t()}async startSectionPromise(e,t){return await t()}startTimerSync(e,t,i){return(typeof t=="function"?t:i)()}async startTimerPromise(e,t,i){return await(typeof t=="function"?t:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}};var v$=Pe(MD());var bh=class{constructor(e,{project:t}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=t,this.cwd=e}async setup(){var s;this.manifest=(s=await ot.tryFind(this.cwd))!=null?s:new ot,this.relativeCwd=x.relative(this.project.cwd,this.cwd)||Oe.dot;let e=this.manifest.name?this.manifest.name:qo(null,`${this.computeCandidateName()}-${tn(this.relativeCwd).substring(0,6)}`),t=this.manifest.version?this.manifest.version:"0.0.0";this.locator=rn(e,t),this.anchoredDescriptor=_t(this.locator,`${jr.protocol}${this.relativeCwd}`),this.anchoredLocator=rn(this.locator,`${jr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:o})=>o);if(i.length===0)return;let n=await(0,v$.default)(i,{cwd:U.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort(),await n.reduce(async(o,a)=>{let l=x.resolve(this.cwd,U.toPortablePath(a)),c=await M.existsPromise(x.join(l,"package.json"));await o,c&&this.workspacesCwds.add(l)},Promise.resolve())}accepts(e){var o;let t=e.indexOf(":"),i=t!==-1?e.slice(0,t+1):null,n=t!==-1?e.slice(t+1):e;if(i===jr.protocol&&x.normalize(n)===this.relativeCwd||i===jr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=so(n);return s?i===jr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${x.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=ot.hardDependencies}={}){let t=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||t.has(a)||(t.add(a),i(a))}};return i(this),t}getRecursiveWorkspaceDependents({dependencies:e=ot.hardDependencies}={}){let t=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&oC(c.anchoredLocator,n.anchoredLocator)}))&&!t.has(s)&&(t.add(s),i(s))};return i(this),t}getRecursiveWorkspaceChildren(){let e=[];for(let t of this.workspacesCwds){let i=this.project.workspacesByCwd.get(t);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let t=x.join(this.cwd,ot.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} +`;await M.changeFilePromise(t,i,{automaticNewlines:!0}),this.manifest.raw=e}};var x$=6,OMe=1,MMe=/ *, */g,P$=/\/$/,UMe=32,KMe=(0,JN.promisify)(WN.default.gzip),HMe=(0,JN.promisify)(WN.default.gunzip),es=(t=>(t.UpdateLockfile="update-lockfile",t.SkipBuild="skip-build",t))(es||{}),jN={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=r=>tn(`${OMe}`,r),je=class{constructor(e,{configuration:t}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=t,this.cwd=e}static async find(e,t){var p,C,y;if(!e.projectCwd)throw new be(`No project found in ${t}`);let i=e.projectCwd,n=t,s=null;for(;s!==e.projectCwd;){if(s=n,M.existsSync(x.join(s,xt.manifest))){i=s;break}n=x.dirname(s)}let o=new je(e.projectCwd,{configuration:e});(p=ye.telemetry)==null||p.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(C=ye.telemetry)==null||C.reportWorkspaceCount(o.workspaces.length),(y=ye.telemetry)==null||y.reportDependencyCount(o.workspaces.reduce((B,v)=>B+v.manifest.dependencies.size+v.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};let c=$e(e,o.cwd,Ke.PATH),u=$e(e,x.relative(o.cwd,i),Ke.PATH),g=`- If ${c} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,f=`- If ${c} is intended to be a project, it might be that you forgot to list ${u} in its workspace configuration.`,h=`- Finally, if ${c} is fine and you intend ${u} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new be(`The nearest package directory (${$e(e,i,Ke.PATH)}) doesn't seem to be part of the project declared in ${$e(e,o.cwd,Ke.PATH)}. ${[g,f,h].join(` -`)}`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t=this.configuration.get("defaultLanguageName");if(M.existsSync(e)){let n=await M.readFilePromise(e,"utf8");this.lockFileChecksum=GZ(n);let s=Ii(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${l})`);let u=Cc(c.resolution,!0),g=new ot;g.load(c,{yamlCompatibilityMode:!0});let f=g.version,h=g.languageName||t,p=c.linkType.toUpperCase(),C=(i=c.conditions)!=null?i:null,y=g.dependencies,B=g.peerDependencies,v=g.dependenciesMeta,D=g.peerDependenciesMeta,L=g.bin;if(c.checksum!=null){let j=typeof a<"u"&&!c.checksum.includes("/")?`${a}/${c.checksum}`:c.checksum;this.storedChecksums.set(u.locatorHash,j)}let H={...u,version:f,languageName:h,linkType:p,conditions:C,dependencies:y,peerDependencies:B,dependenciesMeta:v,peerDependenciesMeta:D,bin:L};this.originalPackages.set(H.locatorHash,H);for(let j of l.split(kOe)){let $=MA(j);this.storedDescriptors.set($.descriptorHash,$),this.storedResolutions.set($.descriptorHash,u.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=[this.cwd];for(;e.length>0;){let t=e;e=[];for(let i of t){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let t=new fh(e,{project:this});await t.setup();let i=this.workspacesByIdent.get(t.locator.identHash);if(typeof i<"u")throw new Error(`Duplicate workspace name ${Ai(this.configuration,t.locator)}: ${K.fromPortablePath(e)} conflicts with ${K.fromPortablePath(i.cwd)}`);return this.workspaces.push(t),this.workspacesByCwd.set(e,t),this.workspacesByIdent.set(t.locator.identHash,t),t}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){x.isAbsolute(e)||(e=x.resolve(this.cwd,e)),e=x.normalize(e).replace(/\/+$/,"");let t=this.workspacesByCwd.get(e);return t||null}getWorkspaceByCwd(e){let t=this.tryWorkspaceByCwd(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByFilePath(e){let t=null;for(let i of this.workspaces)x.relative(i.cwd,e).startsWith("../")||t&&t.cwd.length>=i.cwd.length||(t=i);return t||null}getWorkspaceByFilePath(e){let t=this.tryWorkspaceByFilePath(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByIdent(e){let t=this.workspacesByIdent.get(e.identHash);return typeof t>"u"?null:t}getWorkspaceByIdent(e){let t=this.tryWorkspaceByIdent(e);if(!t)throw new Error(`Workspace not found (${Ai(this.configuration,e)})`);return t}tryWorkspaceByDescriptor(e){let t=this.tryWorkspaceByIdent(e);return t===null||(OA(e)&&(e=Jd(e)),!t.accepts(e.range))?null:t}getWorkspaceByDescriptor(e){let t=this.tryWorkspaceByDescriptor(e);if(t===null)throw new Error(`Workspace not found (${tr(this.configuration,e)})`);return t}tryWorkspaceByLocator(e){let t=this.tryWorkspaceByIdent(e);return t===null||(Uo(e)&&(e=Wd(e)),t.locator.locatorHash!==e.locatorHash&&t.anchoredLocator.locatorHash!==e.locatorHash)?null:t}getWorkspaceByLocator(e){let t=this.tryWorkspaceByLocator(e);if(!t)throw new Error(`Workspace not found (${mt(this.configuration,e)})`);return t}refreshWorkspaceDependencies(){for(let e of this.workspaces){let t=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${Zd(this.configuration,e)} (${Ze(this.configuration,x.join(e.cwd,xt.manifest),Ue.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(t.dependencies)}}forgetResolution(e){let t=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);t(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n<"u"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&t(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let t of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(t,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(t)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[t,i]of e.dependencies)OA(i)&&e.dependencies.set(t,Jd(i))}getDependencyMeta(e,t){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(Ot(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),t===null||!jZ.default.valid(t))return i;for(let[a,l]of s)a!==null&&a===t&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:t=!1}={}){let i=new ti,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(t&&(await o.findPackageLocation(a,s)).replace(HZ,"")!==e.replace(HZ,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let t=e.resolver||this.configuration.makeResolver(),i=new v0(t);await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new P0(t)]:[i,t],s=new yf([new x0(t),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,C=new Set,y=[],B=OD(),v=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Si.progressViaTitle(),async W=>{let Z=async O=>{let F=await of(async()=>await s.resolve(O,a),ke=>`${mt(this.configuration,O)}: ${ke}`);if(!Vd(O,F))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${mt(this.configuration,O)} to ${mt(this.configuration,F)})`);g.set(F.locatorHash,F);let ue=this.configuration.normalizePackage(F);for(let[ke,Fe]of ue.dependencies){let Ne=await this.configuration.reduceHook(le=>le.reduceDependency,Fe,this,ue,Fe,{resolver:s,resolveOptions:a});if(!zd(Fe,Ne))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let oe=s.bindDescriptor(Ne,O,a);ue.dependencies.set(ke,oe)}let he=$s([...ue.dependencies.values()].map(ke=>re(ke)));return y.push(he),he.catch(()=>{}),c.set(ue.locatorHash,ue),ue},A=async O=>{let F=f.get(O.locatorHash);if(typeof F<"u")return F;let ue=Promise.resolve().then(()=>Z(O));return f.set(O.locatorHash,ue),ue},ae=async(O,F)=>{let ue=await re(F);return l.set(O.descriptorHash,O),u.set(O.descriptorHash,ue.locatorHash),ue},ge=async O=>{W.setTitle(tr(this.configuration,O));let F=this.resolutionAliases.get(O.descriptorHash);if(typeof F<"u")return ae(O,this.storedDescriptors.get(F));let ue=s.getResolutionDependencies(O,a),he=new Map(await $s(ue.map(async Ne=>{let oe=s.bindDescriptor(Ne,p,a),le=await re(oe);return C.add(le.locatorHash),[Ne.descriptorHash,le]}))),Fe=(await of(async()=>await s.getCandidates(O,he,a),Ne=>`${tr(this.configuration,O)}: ${Ne}`))[0];if(typeof Fe>"u")throw new Error(`${tr(this.configuration,O)}: No candidates found`);return l.set(O.descriptorHash,O),u.set(O.descriptorHash,Fe.locatorHash),A(Fe)},re=O=>{let F=h.get(O.descriptorHash);if(typeof F<"u")return F;l.set(O.descriptorHash,O);let ue=Promise.resolve().then(()=>ge(O));return h.set(O.descriptorHash,ue),ue};for(let O of this.workspaces){let F=O.anchoredDescriptor;y.push(re(F))}for(;y.length>0;){let O=[...y];y.length=0,await $s(O)}});let D=new Set(this.resolutionAliases.values()),L=new Set(c.keys()),H=new Set,j=new Map;LOe({project:this,report:e.report,accessibleLocators:H,volatileDescriptors:D,optionalBuilds:L,peerRequirements:j,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of C)L.delete(W);for(let W of D)l.delete(W),u.delete(W);let $=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!L.has(W.locatorHash)||(mw(W,v)||(mw(W,B)&&e.report.reportWarningOnce(77,`${mt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ze(this.configuration,"supportedArchitectures",vi.SETTING)} setting`),V.add(W.locatorHash)),$.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=H,this.conditionalLocators=$,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=L,this.peerRequirements=j,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:t,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:t,cacheOptions:s},l=Array.from(new Set(wn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return hs(h)}])));n==="update-lockfile"&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Si.progressViaCounter(l.length);await t.reportProgress(u);let g=(0,YZ.default)(ROe);if(await t.startCacheReport(async()=>{await $s(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Uo(h))return;let p;try{p=await o.fetch(h,a)}catch(C){C.message=`${mt(this.configuration,h)}: ${C.message}`,t.reportExceptionOnce(C),c=C;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:t,fetcher:i,mode:n}){var ae,ge,re;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:t,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:t},u=new Map(l.map(O=>{let F=O.makeInstaller(c),ue=F.getCustomDataKey(),he=this.installersCustomData.get(ue);return typeof he<"u"&&F.attachCustomData(he),[O,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await $s([...this.accessibleLocators].map(async O=>{let F=this.storedPackages.get(O);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[O,await o.fetch(F,a)]}))),C=[];for(let O of this.accessibleLocators){let F=this.storedPackages.get(O);if(typeof F>"u")throw new Error("Assertion failed: The locator should have been registered");let ue=p.get(F.locatorHash);if(typeof ue>"u")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],ke=Ne=>{he.push(Ne)},Fe=this.tryWorkspaceByLocator(F);if(Fe!==null){let Ne=[],{scripts:oe}=Fe.manifest;for(let we of["preinstall","install","postinstall"])oe.has(we)&&Ne.push([0,we]);try{for(let[we,fe]of u)if(we.supportsPackage(F,c)&&(await fe.installPackage(F,ue,{holdFetchResult:ke})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(ae=ue.releaseFs)==null||ae.call(ue):C.push($s(he).catch(()=>{}).then(()=>{var we;(we=ue.releaseFs)==null||we.call(ue)}))}let le=x.join(ue.packageFs.getRealPath(),ue.prefixPath);f.set(F.locatorHash,le),!Uo(F)&&Ne.length>0&&h.set(F.locatorHash,{directives:Ne,buildLocations:[le]})}else{let Ne=l.find(we=>we.supportsPackage(F,c));if(!Ne)throw new at(12,`${mt(this.configuration,F)} isn't supported by any available linker`);let oe=u.get(Ne);if(!oe)throw new Error("Assertion failed: The installer should have been registered");let le;try{le=await oe.installPackage(F,ue,{holdFetchResult:ke})}finally{he.length===0?(ge=ue.releaseFs)==null||ge.call(ue):C.push($s(he).then(()=>{}).then(()=>{var we;(we=ue.releaseFs)==null||we.call(ue)}))}g.set(F.locatorHash,Ne),f.set(F.locatorHash,le.packageLocation),le.buildDirective&&le.buildDirective.length>0&&le.packageLocation&&h.set(F.locatorHash,{directives:le.buildDirective,buildLocations:[le.packageLocation]})}}let y=new Map;for(let O of this.accessibleLocators){let F=this.storedPackages.get(O);if(!F)throw new Error("Assertion failed: The locator should have been registered");let ue=this.tryWorkspaceByLocator(F)!==null,he=async(ke,Fe)=>{let Ne=f.get(F.locatorHash);if(typeof Ne>"u")throw new Error(`Assertion failed: The package (${mt(this.configuration,F)}) should have been registered`);let oe=[];for(let le of F.dependencies.values()){let we=this.storedResolutions.get(le.descriptorHash);if(typeof we>"u")throw new Error(`Assertion failed: The resolution (${tr(this.configuration,le)}, from ${mt(this.configuration,F)})should have been registered`);let fe=this.storedPackages.get(we);if(typeof fe>"u")throw new Error(`Assertion failed: The package (${we}, resolved from ${tr(this.configuration,le)}) should have been registered`);let Ae=this.tryWorkspaceByLocator(fe)===null?g.get(we):null;if(typeof Ae>"u")throw new Error(`Assertion failed: The package (${we}, resolved from ${tr(this.configuration,le)}) should have been registered`);Ae===ke||Ae===null?f.get(fe.locatorHash)!==null&&oe.push([le,fe]):!ue&&Ne!==null&&nf(y,we).push(Ne)}Ne!==null&&await Fe.attachInternalDependencies(F,oe)};if(ue)for(let[ke,Fe]of u)ke.supportsPackage(F,c)&&await he(ke,Fe);else{let ke=g.get(F.locatorHash);if(!ke)throw new Error("Assertion failed: The linker should have been found");let Fe=u.get(ke);if(!Fe)throw new Error("Assertion failed: The installer should have been registered");await he(ke,Fe)}}for(let[O,F]of y){let ue=this.storedPackages.get(O);if(!ue)throw new Error("Assertion failed: The package should have been registered");let he=g.get(ue.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let ke=u.get(he);if(!ke)throw new Error("Assertion failed: The installer should have been registered");await ke.attachExternalDependents(ue,F)}let B=new Map;for(let O of u.values()){let F=await O.finalizeInstall();for(let ue of(re=F==null?void 0:F.records)!=null?re:[])h.set(ue.locatorHash,{directives:ue.buildDirective,buildLocations:ue.buildLocations});typeof(F==null?void 0:F.customData)<"u"&&B.set(O.getCustomDataKey(),F.customData)}if(this.installersCustomData=B,await $s(C),n==="skip-build")return;let v=new Set(this.storedPackages.keys()),D=new Set(h.keys());for(let O of D)v.delete(O);let L=(0,D0.createHash)("sha512");L.update(process.versions.node),await this.configuration.triggerHook(O=>O.globalHashGeneration,this,O=>{L.update("\0"),L.update(O)});let H=L.digest("hex"),j=new Map,$=O=>{let F=j.get(O.locatorHash);if(typeof F<"u")return F;let ue=this.storedPackages.get(O.locatorHash);if(typeof ue>"u")throw new Error("Assertion failed: The package should have been registered");let he=(0,D0.createHash)("sha512");he.update(O.locatorHash),j.set(O.locatorHash,"");for(let ke of ue.dependencies.values()){let Fe=this.storedResolutions.get(ke.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${tr(this.configuration,ke)}) should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>"u")throw new Error("Assertion failed: The package should have been registered");he.update($(Ne))}return F=he.digest("hex"),j.set(O.locatorHash,F),F},V=(O,F)=>{let ue=(0,D0.createHash)("sha512");ue.update(H),ue.update($(O));for(let he of F)ue.update(he);return ue.digest("hex")},W=new Map,Z=!1,A=O=>{let F=new Set([O.locatorHash]);for(let ue of F){let he=this.storedPackages.get(ue);if(!he)throw new Error("Assertion failed: The package should have been registered");for(let ke of he.dependencies.values()){let Fe=this.storedResolutions.get(ke.descriptorHash);if(!Fe)throw new Error(`Assertion failed: The resolution (${tr(this.configuration,ke)}) should have been registered`);if(Fe!==O.locatorHash&&D.has(Fe))return!1;let Ne=this.storedPackages.get(Fe);if(!Ne)throw new Error("Assertion failed: The package should have been registered");let oe=this.tryWorkspaceByLocator(Ne);if(oe){if(oe.anchoredLocator.locatorHash!==O.locatorHash&&D.has(oe.anchoredLocator.locatorHash))return!1;F.add(oe.anchoredLocator.locatorHash)}F.add(Fe)}}return!0};for(;D.size>0;){let O=D.size,F=[];for(let ue of D){let he=this.storedPackages.get(ue);if(!he)throw new Error("Assertion failed: The package should have been registered");if(!A(he))continue;let ke=h.get(he.locatorHash);if(!ke)throw new Error("Assertion failed: The build directive should have been registered");let Fe=V(he,ke.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Fe){W.set(he.locatorHash,Fe),D.delete(ue);continue}Z||(await this.persistInstallStateFile(),Z=!0),this.storedBuildState.has(he.locatorHash)?t.reportInfo(8,`${mt(this.configuration,he)} must be rebuilt because its dependency tree changed`):t.reportInfo(7,`${mt(this.configuration,he)} must be built because it never has been before or the last one failed`);let Ne=ke.buildLocations.map(async oe=>{if(!x.isAbsolute(oe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${oe})`);for(let[le,we]of ke.directives){let fe=`# This file contains the result of Yarn building a package (${hs(he)}) -`;switch(le){case 0:fe+=`# Script name: ${we} -`;break;case 1:fe+=`# Script code: ${we} -`;break}let Ae=null;if(!await M.mktempPromise(async ne=>{let Y=x.join(ne,"build.log"),{stdout:pe,stderr:ie}=this.configuration.getSubprocessStreams(Y,{header:fe,prefix:mt(this.configuration,he),report:t}),de;try{switch(le){case 0:de=await wB(he,we,[],{cwd:oe,project:this,stdin:Ae,stdout:pe,stderr:ie});break;case 1:de=await DR(he,we,[],{cwd:oe,project:this,stdin:Ae,stdout:pe,stderr:ie});break}}catch(Pt){ie.write(Pt.stack),de=1}if(pe.end(),ie.end(),de===0)return!0;M.detachTemp(ne);let tt=`${mt(this.configuration,he)} couldn't be built successfully (exit code ${Ze(this.configuration,de,Ue.NUMBER)}, logs can be found here: ${Ze(this.configuration,Y,Ue.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(t.reportInfo(9,tt),!0):(t.reportError(9,tt),!1)}))return!1}return!0});F.push(...Ne,Promise.allSettled(Ne).then(oe=>{D.delete(ue),oe.every(le=>le.status==="fulfilled"&&le.value===!0)&&W.set(he.locatorHash,Fe)}))}if(await $s(F),O===D.size){let ue=Array.from(D).map(he=>{let ke=this.storedPackages.get(he);if(!ke)throw new Error("Assertion failed: The package should have been registered");return mt(this.configuration,ke)}).join(", ");t.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ue})`);break}}this.storedBuildState=W}async install(e){var a,l;let t=this.configuration.get("nodeLinker");(a=ye.telemetry)==null||a.reportInstall(t),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status="inactive";let i=x.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await M.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new at(28,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ze(this.configuration,g,Ue.PACKAGE_EXTENSION);switch(g.status){case"inactive":e.report.reportWarning(68,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=Tl(n,this.generateLockfile());if(c!==n){let u=RX(i,i,n,c,void 0,void 0,{maxEditLength:100});if(u){e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(28,Ze(this.configuration,f,Ue.ADDED)):f.startsWith("-")?e.report.reportError(28,Ze(this.configuration,f,Ue.REMOVED)):e.report.reportInfo(null,Ze(this.configuration,f,"grey"))}e.report.reportSeparator()}throw new at(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status==="active"&&((l=ye.telemetry)==null||l.reportPackageExtension(cc(g,Ue.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>gw(c,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Ze(this.configuration,"mode=update-lockfile",Ue.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>gw(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let t={};t.__metadata={version:UZ,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>Qn(f)).sort().join(", "),c=new ot;c.version=o.linkType==="HARD"?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g<"u"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof t.__metadata.cacheKey>"u"&&(t.__metadata.cacheKey=h),h===t.__metadata.cacheKey?u=p:u=g}t[l]={...c.exportTo({},{compatibilityMode:!1}),linkType:o.linkType.toLowerCase(),resolution:hs(o),checksum:u,conditions:o.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`)}`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t=this.configuration.get("defaultLanguageName");if(M.existsSync(e)){let n=await M.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=yi(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${l})`);let u=Dc(c.resolution,!0),g=new ot;g.load(c,{yamlCompatibilityMode:!0});let f=g.version,h=g.languageName||t,p=c.linkType.toUpperCase(),C=(i=c.conditions)!=null?i:null,y=g.dependencies,B=g.peerDependencies,v=g.dependenciesMeta,D=g.peerDependenciesMeta,L=g.bin;if(c.checksum!=null){let j=typeof a<"u"&&!c.checksum.includes("/")?`${a}/${c.checksum}`:c.checksum;this.storedChecksums.set(u.locatorHash,j)}let H={...u,version:f,languageName:h,linkType:p,conditions:C,dependencies:y,peerDependencies:B,dependenciesMeta:v,peerDependenciesMeta:D,bin:L};this.originalPackages.set(H.locatorHash,H);for(let j of l.split(MMe)){let $=WA(j);this.storedDescriptors.set($.descriptorHash,$),this.storedResolutions.set($.descriptorHash,u.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,t=(0,_0.default)(4),i=async(n,s)=>{if(e.has(s))return n;e.add(s);let o=new bh(s,{project:this});await t(()=>o.setup());let a=n.then(()=>{this.addWorkspace(o);let l=this.storedPackages.get(o.anchoredLocator.locatorHash);l&&(o.dependencies=l.dependencies)});return Array.from(o.workspacesCwds).reduce(i,a)};await i(Promise.resolve(),this.cwd)}addWorkspace(e){let t=this.workspacesByIdent.get(e.locator.identHash);if(typeof t<"u")throw new Error(`Duplicate workspace name ${Ai(this.configuration,e.locator)}: ${U.fromPortablePath(e.cwd)} conflicts with ${U.fromPortablePath(t.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.locator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){x.isAbsolute(e)||(e=x.resolve(this.cwd,e)),e=x.normalize(e).replace(/\/+$/,"");let t=this.workspacesByCwd.get(e);return t||null}getWorkspaceByCwd(e){let t=this.tryWorkspaceByCwd(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByFilePath(e){let t=null;for(let i of this.workspaces)x.relative(i.cwd,e).startsWith("../")||t&&t.cwd.length>=i.cwd.length||(t=i);return t||null}getWorkspaceByFilePath(e){let t=this.tryWorkspaceByFilePath(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByIdent(e){let t=this.workspacesByIdent.get(e.identHash);return typeof t>"u"?null:t}getWorkspaceByIdent(e){let t=this.tryWorkspaceByIdent(e);if(!t)throw new Error(`Workspace not found (${Ai(this.configuration,e)})`);return t}tryWorkspaceByDescriptor(e){let t=this.tryWorkspaceByIdent(e);return t===null||(JA(e)&&(e=iC(e)),!t.accepts(e.range))?null:t}getWorkspaceByDescriptor(e){let t=this.tryWorkspaceByDescriptor(e);if(t===null)throw new Error(`Workspace not found (${tr(this.configuration,e)})`);return t}tryWorkspaceByLocator(e){let t=this.tryWorkspaceByIdent(e);return t===null||(jo(e)&&(e=nC(e)),t.locator.locatorHash!==e.locatorHash&&t.anchoredLocator.locatorHash!==e.locatorHash)?null:t}getWorkspaceByLocator(e){let t=this.tryWorkspaceByLocator(e);if(!t)throw new Error(`Workspace not found (${mt(this.configuration,e)})`);return t}refreshWorkspaceDependencies(){for(let e of this.workspaces){let t=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${lC(this.configuration,e)} (${$e(this.configuration,x.join(e.cwd,xt.manifest),Ke.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(t.dependencies)}}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let t=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let i=new Set(this.storedResolutions.values());typeof t<"u"&&!i.has(t)&&this.deleteLocator(t)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[t,i]of this.storedResolutions)i===e.locatorHash&&this.deleteDescriptor(t)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),t=new Map;for(let[i,n]of this.storedResolutions.entries()){let s=t.get(n);s||t.set(n,s=new Set),s.add(i)}for(let i of this.originalPackages.values()){let n;try{n=e.shouldPersistResolution(i,{project:this,resolver:e})}catch{n=!1}if(!n){this.deleteLocator(i.locatorHash);let s=t.get(i.locatorHash);if(s){t.delete(i.locatorHash);for(let o of s)this.deleteDescriptor(o)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[t,i]of e.dependencies)JA(i)&&e.dependencies.set(t,iC(i))}getDependencyMeta(e,t){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(Ot(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),t===null||!k$.default.valid(t))return i;for(let[a,l]of s)a!==null&&a===t&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:t=!1}={}){let i=new ti,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(t&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let t=e.resolver||this.configuration.makeResolver(),i=new W0(t);await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new V0(t)]:[i,t],s=new kf([new z0(t),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,C=new Set,y=[],B=$D(),v=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(vi.progressViaTitle(),async W=>{let _=async O=>{let F=await df(async()=>await s.resolve(O,a),ke=>`${mt(this.configuration,O)}: ${ke}`);if(!oC(O,F))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${mt(this.configuration,O)} to ${mt(this.configuration,F)})`);g.set(F.locatorHash,F);let ue=this.configuration.normalizePackage(F);for(let[ke,Fe]of ue.dependencies){let Ne=await this.configuration.reduceHook(le=>le.reduceDependency,Fe,this,ue,Fe,{resolver:s,resolveOptions:a});if(!sC(Fe,Ne))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let oe=s.bindDescriptor(Ne,O,a);ue.dependencies.set(ke,oe)}let pe=io([...ue.dependencies.values()].map(ke=>re(ke)));return y.push(pe),pe.catch(()=>{}),c.set(ue.locatorHash,ue),ue},A=async O=>{let F=f.get(O.locatorHash);if(typeof F<"u")return F;let ue=Promise.resolve().then(()=>_(O));return f.set(O.locatorHash,ue),ue},Ae=async(O,F)=>{let ue=await re(F);return l.set(O.descriptorHash,O),u.set(O.descriptorHash,ue.locatorHash),ue},ge=async O=>{W.setTitle(tr(this.configuration,O));let F=this.resolutionAliases.get(O.descriptorHash);if(typeof F<"u")return Ae(O,this.storedDescriptors.get(F));let ue=s.getResolutionDependencies(O,a),pe=new Map(await io(ue.map(async Ne=>{let oe=s.bindDescriptor(Ne,p,a),le=await re(oe);return C.add(le.locatorHash),[Ne.descriptorHash,le]}))),Fe=(await df(async()=>await s.getCandidates(O,pe,a),Ne=>`${tr(this.configuration,O)}: ${Ne}`))[0];if(typeof Fe>"u")throw new Error(`${tr(this.configuration,O)}: No candidates found`);return l.set(O.descriptorHash,O),u.set(O.descriptorHash,Fe.locatorHash),A(Fe)},re=O=>{let F=h.get(O.descriptorHash);if(typeof F<"u")return F;l.set(O.descriptorHash,O);let ue=Promise.resolve().then(()=>ge(O));return h.set(O.descriptorHash,ue),ue};for(let O of this.workspaces){let F=O.anchoredDescriptor;y.push(re(F))}for(;y.length>0;){let O=[...y];y.length=0,await io(O)}});let D=new Set(this.resolutionAliases.values()),L=new Set(c.keys()),H=new Set,j=new Map;GMe({project:this,report:e.report,accessibleLocators:H,volatileDescriptors:D,optionalBuilds:L,peerRequirements:j,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of C)L.delete(W);for(let W of D)l.delete(W),u.delete(W);let $=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!L.has(W.locatorHash)||(kw(W,v)||(kw(W,B)&&e.report.reportWarningOnce(77,`${mt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${$e(this.configuration,"supportedArchitectures",xi.SETTING)} setting`),V.add(W.locatorHash)),$.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=H,this.conditionalLocators=$,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=L,this.peerRequirements=j,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:t,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:t,cacheOptions:s},l=Array.from(new Set(Bn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return Es(h)}])));n==="update-lockfile"&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=vi.progressViaCounter(l.length);await t.reportProgress(u);let g=(0,_0.default)(UMe);if(await t.startCacheReport(async()=>{await io(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(jo(h))return;let p;try{p=await o.fetch(h,a)}catch(C){C.message=`${mt(this.configuration,h)}: ${C.message}`,t.reportExceptionOnce(C),c=C;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:t,fetcher:i,mode:n}){var Ae,ge,re;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:t,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:t},u=new Map(l.map(O=>{let F=O.makeInstaller(c),ue=F.getCustomDataKey(),pe=this.installersCustomData.get(ue);return typeof pe<"u"&&F.attachCustomData(pe),[O,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await io([...this.accessibleLocators].map(async O=>{let F=this.storedPackages.get(O);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[O,await o.fetch(F,a)]}))),C=[];for(let O of this.accessibleLocators){let F=this.storedPackages.get(O);if(typeof F>"u")throw new Error("Assertion failed: The locator should have been registered");let ue=p.get(F.locatorHash);if(typeof ue>"u")throw new Error("Assertion failed: The fetch result should have been registered");let pe=[],ke=Ne=>{pe.push(Ne)},Fe=this.tryWorkspaceByLocator(F);if(Fe!==null){let Ne=[],{scripts:oe}=Fe.manifest;for(let Be of["preinstall","install","postinstall"])oe.has(Be)&&Ne.push([0,Be]);try{for(let[Be,fe]of u)if(Be.supportsPackage(F,c)&&(await fe.installPackage(F,ue,{holdFetchResult:ke})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{pe.length===0?(Ae=ue.releaseFs)==null||Ae.call(ue):C.push(io(pe).catch(()=>{}).then(()=>{var Be;(Be=ue.releaseFs)==null||Be.call(ue)}))}let le=x.join(ue.packageFs.getRealPath(),ue.prefixPath);f.set(F.locatorHash,le),!jo(F)&&Ne.length>0&&h.set(F.locatorHash,{directives:Ne,buildLocations:[le]})}else{let Ne=l.find(Be=>Be.supportsPackage(F,c));if(!Ne)throw new at(12,`${mt(this.configuration,F)} isn't supported by any available linker`);let oe=u.get(Ne);if(!oe)throw new Error("Assertion failed: The installer should have been registered");let le;try{le=await oe.installPackage(F,ue,{holdFetchResult:ke})}finally{pe.length===0?(ge=ue.releaseFs)==null||ge.call(ue):C.push(io(pe).then(()=>{}).then(()=>{var Be;(Be=ue.releaseFs)==null||Be.call(ue)}))}g.set(F.locatorHash,Ne),f.set(F.locatorHash,le.packageLocation),le.buildDirective&&le.buildDirective.length>0&&le.packageLocation&&h.set(F.locatorHash,{directives:le.buildDirective,buildLocations:[le.packageLocation]})}}let y=new Map;for(let O of this.accessibleLocators){let F=this.storedPackages.get(O);if(!F)throw new Error("Assertion failed: The locator should have been registered");let ue=this.tryWorkspaceByLocator(F)!==null,pe=async(ke,Fe)=>{let Ne=f.get(F.locatorHash);if(typeof Ne>"u")throw new Error(`Assertion failed: The package (${mt(this.configuration,F)}) should have been registered`);let oe=[];for(let le of F.dependencies.values()){let Be=this.storedResolutions.get(le.descriptorHash);if(typeof Be>"u")throw new Error(`Assertion failed: The resolution (${tr(this.configuration,le)}, from ${mt(this.configuration,F)})should have been registered`);let fe=this.storedPackages.get(Be);if(typeof fe>"u")throw new Error(`Assertion failed: The package (${Be}, resolved from ${tr(this.configuration,le)}) should have been registered`);let ae=this.tryWorkspaceByLocator(fe)===null?g.get(Be):null;if(typeof ae>"u")throw new Error(`Assertion failed: The package (${Be}, resolved from ${tr(this.configuration,le)}) should have been registered`);ae===ke||ae===null?f.get(fe.locatorHash)!==null&&oe.push([le,fe]):!ue&&Ne!==null&&hf(y,Be).push(Ne)}Ne!==null&&await Fe.attachInternalDependencies(F,oe)};if(ue)for(let[ke,Fe]of u)ke.supportsPackage(F,c)&&await pe(ke,Fe);else{let ke=g.get(F.locatorHash);if(!ke)throw new Error("Assertion failed: The linker should have been found");let Fe=u.get(ke);if(!Fe)throw new Error("Assertion failed: The installer should have been registered");await pe(ke,Fe)}}for(let[O,F]of y){let ue=this.storedPackages.get(O);if(!ue)throw new Error("Assertion failed: The package should have been registered");let pe=g.get(ue.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let ke=u.get(pe);if(!ke)throw new Error("Assertion failed: The installer should have been registered");await ke.attachExternalDependents(ue,F)}let B=new Map;for(let O of u.values()){let F=await O.finalizeInstall();for(let ue of(re=F==null?void 0:F.records)!=null?re:[])h.set(ue.locatorHash,{directives:ue.buildDirective,buildLocations:ue.buildLocations});typeof(F==null?void 0:F.customData)<"u"&&B.set(O.getCustomDataKey(),F.customData)}if(this.installersCustomData=B,await io(C),n==="skip-build")return;let v=new Set(this.storedPackages.keys()),D=new Set(h.keys());for(let O of D)v.delete(O);let L=(0,X0.createHash)("sha512");L.update(process.versions.node),await this.configuration.triggerHook(O=>O.globalHashGeneration,this,O=>{L.update("\0"),L.update(O)});let H=L.digest("hex"),j=new Map,$=O=>{let F=j.get(O.locatorHash);if(typeof F<"u")return F;let ue=this.storedPackages.get(O.locatorHash);if(typeof ue>"u")throw new Error("Assertion failed: The package should have been registered");let pe=(0,X0.createHash)("sha512");pe.update(O.locatorHash),j.set(O.locatorHash,"");for(let ke of ue.dependencies.values()){let Fe=this.storedResolutions.get(ke.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${tr(this.configuration,ke)}) should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>"u")throw new Error("Assertion failed: The package should have been registered");pe.update($(Ne))}return F=pe.digest("hex"),j.set(O.locatorHash,F),F},V=(O,F)=>{let ue=(0,X0.createHash)("sha512");ue.update(H),ue.update($(O));for(let pe of F)ue.update(pe);return ue.digest("hex")},W=new Map,_=!1,A=O=>{let F=new Set([O.locatorHash]);for(let ue of F){let pe=this.storedPackages.get(ue);if(!pe)throw new Error("Assertion failed: The package should have been registered");for(let ke of pe.dependencies.values()){let Fe=this.storedResolutions.get(ke.descriptorHash);if(!Fe)throw new Error(`Assertion failed: The resolution (${tr(this.configuration,ke)}) should have been registered`);if(Fe!==O.locatorHash&&D.has(Fe))return!1;let Ne=this.storedPackages.get(Fe);if(!Ne)throw new Error("Assertion failed: The package should have been registered");let oe=this.tryWorkspaceByLocator(Ne);if(oe){if(oe.anchoredLocator.locatorHash!==O.locatorHash&&D.has(oe.anchoredLocator.locatorHash))return!1;F.add(oe.anchoredLocator.locatorHash)}F.add(Fe)}}return!0};for(;D.size>0;){let O=D.size,F=[];for(let ue of D){let pe=this.storedPackages.get(ue);if(!pe)throw new Error("Assertion failed: The package should have been registered");if(!A(pe))continue;let ke=h.get(pe.locatorHash);if(!ke)throw new Error("Assertion failed: The build directive should have been registered");let Fe=V(pe,ke.buildLocations);if(this.storedBuildState.get(pe.locatorHash)===Fe){W.set(pe.locatorHash,Fe),D.delete(ue);continue}_||(await this.persistInstallStateFile(),_=!0),this.storedBuildState.has(pe.locatorHash)?t.reportInfo(8,`${mt(this.configuration,pe)} must be rebuilt because its dependency tree changed`):t.reportInfo(7,`${mt(this.configuration,pe)} must be built because it never has been before or the last one failed`);let Ne=ke.buildLocations.map(async oe=>{if(!x.isAbsolute(oe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${oe})`);for(let[le,Be]of ke.directives){let fe=`# This file contains the result of Yarn building a package (${Es(pe)}) +`;switch(le){case 0:fe+=`# Script name: ${Be} +`;break;case 1:fe+=`# Script code: ${Be} +`;break}let ae=null;if(!await M.mktempPromise(async ne=>{let Y=x.join(ne,"build.log"),{stdout:he,stderr:ie}=this.configuration.getSubprocessStreams(Y,{header:fe,prefix:mt(this.configuration,pe),report:t}),de;try{switch(le){case 0:de=await LB(pe,Be,[],{cwd:oe,project:this,stdin:ae,stdout:he,stderr:ie});break;case 1:de=await JR(pe,Be,[],{cwd:oe,project:this,stdin:ae,stdout:he,stderr:ie});break}}catch(Pt){ie.write(Pt.stack),de=1}if(he.end(),ie.end(),de===0)return!0;M.detachTemp(ne);let _e=`${mt(this.configuration,pe)} couldn't be built successfully (exit code ${$e(this.configuration,de,Ke.NUMBER)}, logs can be found here: ${$e(this.configuration,Y,Ke.PATH)})`;return this.optionalBuilds.has(pe.locatorHash)?(t.reportInfo(9,_e),!0):(t.reportError(9,_e),!1)}))return!1}return!0});F.push(...Ne,Promise.allSettled(Ne).then(oe=>{D.delete(ue),oe.every(le=>le.status==="fulfilled"&&le.value===!0)&&W.set(pe.locatorHash,Fe)}))}if(await io(F),O===D.size){let ue=Array.from(D).map(pe=>{let ke=this.storedPackages.get(pe);if(!ke)throw new Error("Assertion failed: The package should have been registered");return mt(this.configuration,ke)}).join(", ");t.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ue})`);break}}this.storedBuildState=W}async install(e){var a,l;let t=this.configuration.get("nodeLinker");(a=ye.telemetry)==null||a.reportInstall(t),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status="inactive";let i=x.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await M.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new at(28,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=$e(this.configuration,g,Ke.PACKAGE_EXTENSION);switch(g.status){case"inactive":e.report.reportWarning(68,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=Vl(n,this.generateLockfile());if(c!==n){let u=IZ(i,i,n,c,void 0,void 0,{maxEditLength:100});if(u){e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(28,$e(this.configuration,f,Ke.ADDED)):f.startsWith("-")?e.report.reportError(28,$e(this.configuration,f,Ke.REMOVED)):e.report.reportInfo(null,$e(this.configuration,f,"grey"))}e.report.reportSeparator()}throw new at(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status==="active"&&((l=ye.telemetry)==null||l.reportPackageExtension(Bc(g,Ke.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>bw(c,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${$e(this.configuration,"mode=update-lockfile",Ke.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>bw(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let t={};t.__metadata={version:x$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>bn(f)).sort().join(", "),c=new ot;c.version=o.linkType==="HARD"?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g<"u"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof t.__metadata.cacheKey>"u"&&(t.__metadata.cacheKey=h),h===t.__metadata.cacheKey?u=p:u=g}t[l]={...c.exportTo({},{compatibilityMode:!1}),linkType:o.linkType.toLowerCase(),resolution:Es(o),checksum:u,conditions:o.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. `,`# Manual changes might be lost - proceed with caution! `].join("")} -`+Ca(t)}async persistLockfile(){let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t="";try{t=await M.readFilePromise(e,"utf8")}catch{}let i=this.generateLockfile(),n=Tl(t,i);n!==t&&(await M.writeFilePromise(e,n),this.lockFileChecksum=GZ(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(CN))e.push(...o);let t=(0,k0.default)(this,e),i=mN.default.serialize(t),n=Zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await M.mkdirPromise(x.dirname(s),{recursive:!0}),await M.writeFilePromise(s,await FOe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:t=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath"),s;try{let o=await NOe(await M.readFilePromise(n));s=mN.default.deserialize(o),this.installStateChecksum=Zi(o)}catch{t&&await this.applyLightResolution();return}e&&typeof s.installersCustomData<"u"&&(this.installersCustomData=s.installersCustomData),i&&Object.assign(this,(0,k0.default)(s,CN.restoreBuildState)),t&&(s.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,k0.default)(s,CN.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ti}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:t}){if(this.configuration.get("enableGlobalCache"))return;let i=new Set([".gitignore"]);if(!LD(e.cwd,this.cwd)||!await M.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await M.readdirPromise(e.cwd)){if(i.has(a))continue;let l=x.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?t.reportError(56,`${Ze(this.configuration,x.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:t.reportInfo(19,`${Ze(this.configuration,x.basename(l),"magenta")} appears to be unused - removing`),await M.removePromise(l)))}n&&s!==0&&t.reportInfo(19,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function LOe({project:r,allDescriptors:e,allResolutions:t,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,peerRequirements:o=new Map,volatileDescriptors:a=new Set,report:l}){var V;let c=new Map,u=[],g=new Map,f=new Map,h=new Map,p=new Map,C=new Map,y=new Map(r.workspaces.map(W=>{let Z=W.anchoredLocator.locatorHash,A=i.get(Z);if(typeof A>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[Z,qd(A)]})),B=()=>{let W=M.mktempSync(),Z=x.join(W,"stacktrace.log"),A=String(u.length+1).length,ae=u.map((ge,re)=>`${`${re+1}.`.padStart(A," ")} ${hs(ge)} -`).join("");throw M.writeFileSync(Z,ae),M.detachTemp(W),new at(45,`Encountered a stack overflow when resolving peer dependencies; cf ${K.fromPortablePath(Z)}`)},v=W=>{let Z=t.get(W.descriptorHash);if(typeof Z>"u")throw new Error("Assertion failed: The resolution should have been registered");let A=i.get(Z);if(!A)throw new Error("Assertion failed: The package could not be found");return A},D=(W,Z,A,{top:ae,optional:ge})=>{u.length>1e3&&B(),u.push(Z);let re=L(W,Z,A,{top:ae,optional:ge});return u.pop(),re},L=(W,Z,A,{top:ae,optional:ge})=>{if(n.has(Z.locatorHash))return;n.add(Z.locatorHash),ge||s.delete(Z.locatorHash);let re=i.get(Z.locatorHash);if(!re)throw new Error(`Assertion failed: The package (${mt(r.configuration,Z)}) should have been registered`);let O=[],F=[],ue=[],he=[],ke=[];for(let Ne of Array.from(re.dependencies.values())){if(re.peerDependencies.has(Ne.identHash)&&re.locatorHash!==ae)continue;if(OA(Ne))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(Ne.descriptorHash);let oe=ge;if(!oe){let Y=re.dependenciesMeta.get(Ot(Ne));if(typeof Y<"u"){let pe=Y.get(null);typeof pe<"u"&&pe.optional&&(oe=!0)}}let le=t.get(Ne.descriptorHash);if(!le)throw new Error(`Assertion failed: The resolution (${tr(r.configuration,Ne)}) should have been registered`);let we=y.get(le)||i.get(le);if(!we)throw new Error(`Assertion failed: The package (${le}, resolved from ${tr(r.configuration,Ne)}) should have been registered`);if(we.peerDependencies.size===0){D(Ne,we,new Map,{top:ae,optional:oe});continue}let fe,Ae,qe=new Set,ne;F.push(()=>{fe=SD(Ne,Z.locatorHash),Ae=vD(we,Z.locatorHash),re.dependencies.delete(Ne.identHash),re.dependencies.set(fe.identHash,fe),t.set(fe.descriptorHash,Ae.locatorHash),e.set(fe.descriptorHash,fe),i.set(Ae.locatorHash,Ae),O.push([we,fe,Ae])}),ue.push(()=>{var Y;ne=new Map;for(let pe of Ae.peerDependencies.values()){let ie=re.dependencies.get(pe.identHash);if(!ie&&zd(Z,pe)&&(W.identHash===Z.identHash?ie=W:(ie=Zt(Z,W.range),e.set(ie.descriptorHash,ie),t.set(ie.descriptorHash,Z.locatorHash),a.delete(ie.descriptorHash))),(!ie||ie.range==="missing:")&&Ae.dependencies.has(pe.identHash)){Ae.peerDependencies.delete(pe.identHash);continue}ie||(ie=Zt(pe,"missing:")),Ae.dependencies.set(ie.identHash,ie),OA(ie)&&lc(h,ie.descriptorHash).add(Ae.locatorHash),g.set(ie.identHash,ie),ie.range==="missing:"&&qe.add(ie.identHash),ne.set(pe.identHash,(Y=A.get(pe.identHash))!=null?Y:Ae.locatorHash)}Ae.dependencies=new Map(wn(Ae.dependencies,([pe,ie])=>Ot(ie)))}),he.push(()=>{if(!i.has(Ae.locatorHash))return;let Y=c.get(we.locatorHash);typeof Y=="number"&&Y>=2&&B();let pe=c.get(we.locatorHash),ie=typeof pe<"u"?pe+1:1;c.set(we.locatorHash,ie),D(fe,Ae,ne,{top:ae,optional:oe}),c.set(we.locatorHash,ie-1)}),ke.push(()=>{let Y=re.dependencies.get(Ne.identHash);if(typeof Y>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let pe=t.get(Y.descriptorHash);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(lc(C,pe).add(Z.locatorHash),!!i.has(Ae.locatorHash)){for(let ie of Ae.peerDependencies.values()){let de=ne.get(ie.identHash);if(typeof de>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");nf(sf(p,de),Ot(ie)).push(Ae.locatorHash)}for(let ie of qe)Ae.dependencies.delete(ie)}})}for(let Ne of[...F,...ue])Ne();let Fe;do{Fe=!0;for(let[Ne,oe,le]of O){let we=sf(f,Ne.locatorHash),fe=Zi(...[...le.dependencies.values()].map(Y=>{let pe=Y.range!=="missing:"?t.get(Y.descriptorHash):"missing:";if(typeof pe>"u")throw new Error(`Assertion failed: Expected the resolution for ${tr(r.configuration,Y)} to have been registered`);return pe===ae?`${pe} (top)`:pe}),oe.identHash),Ae=we.get(fe);if(typeof Ae>"u"){we.set(fe,oe);continue}if(Ae===oe)continue;i.delete(le.locatorHash),e.delete(oe.descriptorHash),t.delete(oe.descriptorHash),n.delete(le.locatorHash);let qe=h.get(oe.descriptorHash)||[],ne=[re.locatorHash,...qe];h.delete(oe.descriptorHash);for(let Y of ne){let pe=i.get(Y);typeof pe>"u"||(pe.dependencies.get(oe.identHash).descriptorHash!==Ae.descriptorHash&&(Fe=!1),pe.dependencies.set(oe.identHash,Ae))}}}while(!Fe);for(let Ne of[...he,...ke])Ne()};for(let W of r.workspaces){let Z=W.anchoredLocator;a.delete(W.anchoredDescriptor.descriptorHash),D(W.anchoredDescriptor,Z,new Map,{top:Z.locatorHash,optional:!1})}let H;(A=>(A[A.NotProvided=0]="NotProvided",A[A.NotCompatible=1]="NotCompatible"))(H||(H={}));let j=[];for(let[W,Z]of C){let A=i.get(W);if(typeof A>"u")throw new Error("Assertion failed: Expected the root to be registered");let ae=p.get(W);if(!(typeof ae>"u"))for(let ge of Z){let re=i.get(ge);if(!(typeof re>"u"))for(let[O,F]of ae){let ue=_i(O);if(re.peerDependencies.has(ue.identHash))continue;let he=`p${Zi(ge,O,W).slice(0,5)}`;o.set(he,{subject:ge,requested:ue,rootRequester:W,allRequesters:F});let ke=A.dependencies.get(ue.identHash);if(typeof ke<"u"){let Fe=v(ke),Ne=(V=Fe.version)!=null?V:"0.0.0",oe=new Set;for(let we of F){let fe=i.get(we);if(typeof fe>"u")throw new Error("Assertion failed: Expected the link to be registered");let Ae=fe.peerDependencies.get(ue.identHash);if(typeof Ae>"u")throw new Error("Assertion failed: Expected the ident to be registered");oe.add(Ae.range)}[...oe].every(we=>{if(we.startsWith(jr.protocol)){if(!r.tryWorkspaceByLocator(Fe))return!1;we=we.slice(jr.protocol.length),(we==="^"||we==="~")&&(we="*")}return mc(Ne,we)})||j.push({type:1,subject:re,requested:ue,requester:A,version:Ne,hash:he,requirementCount:F.length})}else{let Fe=A.peerDependenciesMeta.get(O);Fe!=null&&Fe.optional||j.push({type:0,subject:re,requested:ue,requester:A,hash:he})}}}}let $=[W=>xD(W.subject),W=>Ot(W.requested),W=>`${W.type}`];l==null||l.startSectionSync({reportFooter:()=>{l.reportWarning(0,`Some peer dependencies are incorrectly met; run ${Ze(r.configuration,"yarn explain peer-requirements ",Ue.CODE)} for details, where ${Ze(r.configuration,"",Ue.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let W of wn(j,$))switch(W.type){case 0:l.reportWarning(2,`${mt(r.configuration,W.subject)} doesn't provide ${Ai(r.configuration,W.requested)} (${Ze(r.configuration,W.hash,Ue.CODE)}), requested by ${Ai(r.configuration,W.requester)}`);break;case 1:{let Z=W.requirementCount>1?"and some of its descendants request":"requests";l.reportWarning(60,`${mt(r.configuration,W.subject)} provides ${Ai(r.configuration,W.requested)} (${Ze(r.configuration,W.hash,Ue.CODE)}) with version ${_d(r.configuration,W.version)}, which doesn't satisfy what ${Ai(r.configuration,W.requester)} ${Z}`)}break}})}var hh=class{constructor(e,t){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!M.existsSync(i),this.sendReport(t),this.startBuffer()}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,t){lc(this.values,e).add(t)}reportEnumerator(e,t){lc(this.enumerators,e).add(Zi(t))}reportHit(e,t="*"){let i=sf(this.hits,e),n=xa(i,t,()=>0);i.set(t,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return x.join(e,"telemetry.json")}sendReport(e){var u,g,f;let t=this.getRegistryPath(),i;try{i=M.readJsonSync(t)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{M.mkdirSync(x.dirname(t),{recursive:!0}),M.writeJsonSync(t,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>pR(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let C=p;C.userId=h,C.reportType="primary";for(let v of Object.keys((f=C.enumerators)!=null?f:{}))C.enumerators[v]=C.enumerators[v].length;c(C);let y=new Map,B=20;for(let[v,D]of Object.entries(C.values))D.length>0&&y.set(v,D.slice(0,B));for(;y.size>0;){let v={};v.userId=h,v.reportType="secondary",v.metrics={};for(let[D,L]of y)v.metrics[D]=L.shift(),L.length===0&&y.delete(D);c(v)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),t;try{t=M.readJsonSync(e)}catch{t={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=t.blocks=(a=t.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let C of this.hits.keys()){let y=s.hits=(c=s.hits)!=null?c:{},B=y[C]=(u=y[C])!=null?u:{};for(let[v,D]of this.hits.get(C))B[v]=((g=B[v])!=null?g:0)+D}for(let C of["values","enumerators"])for(let y of this[C].keys()){let B=s[C]=(f=s[C])!=null?f:{};B[y]=[...new Set([...(h=B[y])!=null?h:[],...(p=this[C].get(y))!=null?p:[]])]}M.mkdirSync(x.dirname(e),{recursive:!0}),M.writeJsonSync(e,t)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var yN=J("child_process"),qZ=Pe(Vl());var wN=J("fs");var ph=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function TOe(r){let e=K.fromPortablePath(r);process.on("SIGINT",()=>{}),e?(0,yN.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,yN.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}async function R0({binaryVersion:r,pluginConfiguration:e}){async function t(){let n=new Kn({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:r});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var C,y,B,v,D;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(!Ie.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!vt.satisfiesWithPrereleases(s,o))throw new be(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let l=await ye.find(K.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),c=l.get("yarnPath"),u=l.get("ignorePath"),g=l.get("ignoreCwd"),f=K.toPortablePath(K.resolve(process.argv[1])),h=L=>M.readFilePromise(L).catch(()=>Buffer.of());if(!u&&!g&&await(async()=>c===f||Buffer.compare(...await Promise.all([h(c),h(f)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(c!==null&&!u)if(!M.existsSync(c))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${l.sources.get("yarnPath")}), but the specified location doesn't exist (${c}).`))),process.exitCode=1;else try{TOe(c)}catch(L){process.exitCode=L.code||1}else{u&&delete process.env.YARN_IGNORE_PATH,l.get("enableTelemetry")&&!qZ.isCI&&process.stdout.isTTY&&(ye.telemetry=new hh(l,"puba9cdc10ec5790a2cf4969dd413a47270")),(C=ye.telemetry)==null||C.reportVersion(r);for(let[$,V]of l.plugins.entries()){ph.has((B=(y=$.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:y[1])!=null?B:"")&&((v=ye.telemetry)==null||v.reportPluginName($));for(let W of V.commands||[])n.register(W)}let H=n.process(process.argv.slice(2));H.help||(D=ye.telemetry)==null||D.reportCommandName(H.path.join(" "));let j=H.cwd;if(typeof j<"u"&&!g){let $=(0,wN.realpathSync)(process.cwd()),V=(0,wN.realpathSync)(j);if($!==V){process.chdir(j),await t();return}}await n.runExit(H,{cwd:K.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return t().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>M.rmtempPromise())}function JZ(r){r.Command.Path=(...e)=>t=>{t.paths=t.paths||[],t.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])r.Command[e]=(...t)=>(i,n)=>{let s=r.Option[e](...t);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return r}var Qm={};ut(Qm,{BaseCommand:()=>De,WorkspaceRequiredError:()=>ct,getDynamicLibs:()=>sie,getPluginConfiguration:()=>rQ,main:()=>R0,openWorkspace:()=>Ph,pluginCommands:()=>ph});var De=class extends ve{constructor(){super(...arguments);this.cwd=z.String("--cwd",{hidden:!0})}};var ct=class extends be{constructor(e,t){let i=x.relative(e,t),n=x.join(e,ot.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var GGe=Pe(Xr());ns();var YGe=Pe(IL()),sie=()=>new Map([["@yarnpkg/cli",Qm],["@yarnpkg/core",VC],["@yarnpkg/fslib",Lp],["@yarnpkg/libzip",CC],["@yarnpkg/parsers",Yp],["@yarnpkg/shell",yC],["clipanion",$p],["semver",GGe],["typanion",gn],["yup",YGe]]);async function Ph(r,e){let{project:t,workspace:i}=await je.find(r,e);if(!i)throw new ct(t.cwd,e);return i}var m6e=Pe(Xr());ns();var E6e=Pe(IL());var GT={};ut(GT,{dedupeUtils:()=>fQ,default:()=>t3e,suggestUtils:()=>Fh});var iae=Pe(Vl());var Wne=Pe(Pm());ns();var Fh={};ut(Fh,{Modifier:()=>gT,Strategy:()=>lQ,Target:()=>Dm,WorkspaceModifier:()=>Hne,applyModifier:()=>Yne,extractDescriptorFromPath:()=>fT,extractRangeModifier:()=>Gne,fetchDescriptorFrom:()=>hT,findProjectDescriptors:()=>Jne,getModifier:()=>km,getSuggestedDescriptors:()=>Rm,makeWorkspaceDescriptor:()=>qne,toWorkspaceModifier:()=>jne});var uT=Pe(Xr()),aje="workspace:",Dm=(i=>(i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies",i))(Dm||{}),gT=(i=>(i.CARET="^",i.TILDE="~",i.EXACT="",i))(gT||{}),Hne=(i=>(i.CARET="^",i.TILDE="~",i.EXACT="*",i))(Hne||{}),lQ=(s=>(s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache",s))(lQ||{});function km(r,e){return r.exact?"":r.caret?"^":r.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Aje=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Gne(r,{project:e}){let t=r.match(Aje);return t?t[1]:e.configuration.get("defaultSemverRangePrefix")}function Yne(r,e){let{protocol:t,source:i,params:n,selector:s}=P.parseRange(r.range);return uT.default.valid(s)&&(s=`${e}${r.range}`),P.makeDescriptor(r,P.makeRange({protocol:t,source:i,params:n,selector:s}))}function jne(r){switch(r){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${r}"`)}}function qne(r,e){return P.makeDescriptor(r.anchoredDescriptor,`${aje}${jne(e)}`)}async function Jne(r,{project:e,target:t}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(t==="peerDependencies"){let o=s.manifest.peerDependencies.get(r.identHash);o!==void 0&&n(o).locators.push(s.anchoredLocator)}else{let o=s.manifest.dependencies.get(r.identHash),a=s.manifest.devDependencies.get(r.identHash);t==="devDependencies"?a!==void 0?n(a).locators.push(s.anchoredLocator):o!==void 0&&n(o).locators.push(s.anchoredLocator):o!==void 0?n(o).locators.push(s.anchoredLocator):a!==void 0&&n(a).locators.push(s.anchoredLocator)}return i}async function fT(r,{cwd:e,workspace:t}){return await lje(async i=>{x.isAbsolute(r)||(r=x.relative(t.cwd,x.resolve(e,r)),r.match(/^\.{0,2}\//)||(r=`./${r}`));let{project:n}=t,s=await hT(P.makeIdent(null,"archive"),r,{project:t.project,cache:i,workspace:t});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ti,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,t.anchoredLocator,c),g=P.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await ot.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return P.makeDescriptor(h.name,r)})}async function Rm(r,{project:e,workspace:t,cache:i,target:n,modifier:s,strategies:o,maxResults:a=1/0}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(r.range!=="unknown")return{suggestions:[{descriptor:r,name:`Use ${P.prettyDescriptor(e.configuration,r)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof t<"u"&&t!==null&&t.manifest[n].get(r.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case"keep":await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${P.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case"reuse":await g(async()=>{for(let{descriptor:h,locators:p}of(await Jne(r,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===t.anchoredLocator.locatorHash&&o.includes("keep"))continue;let C=`(originally used by ${P.prettyLocator(e.configuration,p[0])}`;C+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:C})}});break;case"cache":await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===r.identHash&&c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await g(async()=>{if(t.manifest.name!==null&&r.identHash===t.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(r);if(h===null)return;let p=qne(h,s);c.push({descriptor:p,name:`Attach ${P.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ee.pretty(e.configuration,h.relativeCwd,ee.Type.PATH)})`})});break;case"latest":await g(async()=>{if(r.range!=="unknown")c.push({descriptor:r,name:`Use ${P.prettyRange(e.configuration,r.range)}`,reason:"(explicit range requested)"});else if(n==="peerDependencies")c.push({descriptor:P.makeDescriptor(r,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ee.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await hT(r,"latest",{project:e,cache:i,workspace:t,preserveModifier:!1});h&&(h=Yne(h,s),c.push({descriptor:h,name:`Use ${P.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function hT(r,e,{project:t,cache:i,workspace:n,preserveModifier:s=!0}){let o=P.makeDescriptor(r,e),a=new ti,l=t.configuration.makeFetcher(),c=t.configuration.makeResolver(),u={project:t,fetcher:l,cache:i,checksums:t.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g={...u,resolver:c,fetchOptions:u},f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:C,source:y,params:B,selector:v}=P.parseRange(P.convertToManifestRange(p.reference));if(C===t.configuration.get("defaultProtocol")&&(C=null),uT.default.valid(v)&&s!==!1){let D=typeof s=="string"?s:o.range;v=Gne(D,{project:t})+v}return P.makeDescriptor(p,P.makeRange({protocol:C,source:y,params:B,selector:v}))}async function lje(r){return await M.mktempPromise(async e=>{let t=ye.create(e);return t.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await r(new Rt(e,{configuration:t,check:!1,immutable:!1}))})}var _c=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=z.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=z.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=z.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=z.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=z.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=z.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Wi(Xn)});this.silent=z.Boolean("--silent",{hidden:!0});this.packages=z.Rest()}async execute(){var y;let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=(y=this.interactive)!=null?y:t.get("preferInteractive"),a=km(this,i),l=[...o?["reuse"]:[],"project",...this.cached?["cache"]:[],"latest"],c=o?1/0:1,u=await Promise.all(this.packages.map(async B=>{let v=B.match(/^\.{0,2}\//)?await fT(B,{cwd:this.context.cwd,workspace:n}):P.tryParseDescriptor(B),D=B.match(/^(https?:|git@github)/);if(D)throw new be(`It seems you are trying to add a package using a ${ee.pretty(t,`${D[0]}...`,vi.RANGE)} url; we now require package names to be explicitly specified. -Try running the command again with the package name prefixed: ${ee.pretty(t,"yarn add",vi.CODE)} ${ee.pretty(t,P.makeDescriptor(P.makeIdent(null,"my-package"),`${D[0]}...`),vi.DESCRIPTOR)}`);if(!v)throw new be(`The ${ee.pretty(t,B,vi.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let L=cje(n,v,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(L.map(async j=>{let $=await Rm(v,{project:i,workspace:n,cache:s,target:j,modifier:a,strategies:l,maxResults:c});return{request:v,suggestedDescriptors:$,target:j}}))})).then(B=>B.flat()),g=await _o.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let{request:v,suggestedDescriptors:{suggestions:D,rejections:L}}of u)if(D.filter(j=>j.descriptor!==null).length===0){let[j]=L;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range`):B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),B.reportSeparator(),B.reportExceptionOnce(j)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[],p=[];for(let{suggestedDescriptors:{suggestions:B},target:v}of u){let D,L=B.filter(V=>V.descriptor!==null),H=L[0].descriptor,j=L.every(V=>P.areDescriptorsEqual(V.descriptor,H));L.length===1||j?D=H:(f=!0,{answer:D}=await(0,Wne.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:B.map(({descriptor:V,name:W,reason:Z})=>V?{name:W,hint:Z,descriptor:V}:{name:W,hint:Z,disabled:!0}),onCancel:()=>process.exit(130),result(V){return this.find(V,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let $=n.manifest[v].get(D.identHash);(typeof $>"u"||$.descriptorHash!==D.descriptorHash)&&(n.manifest[v].set(D.identHash,D),this.optional&&(v==="dependencies"?n.manifest.ensureDependencyMeta({...D,range:"unknown"}).optional=!0:v==="peerDependencies"&&(n.manifest.ensurePeerDependencyMeta({...D,range:"unknown"}).optional=!0)),typeof $>"u"?h.push([n,v,D,l]):p.push([n,v,$,D]))}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyAddition,h),await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),f&&this.context.stdout.write(` -`),(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};_c.paths=[["add"]],_c.usage=ve.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function cje(r,e,{dev:t,peer:i,preferDev:n,optional:s}){let o=r.manifest["dependencies"].has(e.identHash),a=r.manifest["devDependencies"].has(e.identHash),l=r.manifest["peerDependencies"].has(e.identHash);if((t||i)&&o)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!t&&!i&&l)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((t||n)&&s)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let c=[];return i&&c.push("peerDependencies"),(t||n)&&c.push("devDependencies"),s&&c.push("dependencies"),c.length>0?c:a?["devDependencies"]:l?["peerDependencies"]:["dependencies"]}var Zc=class extends De{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=z.String({required:!1})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,locator:n}=await je.find(t,this.context.cwd);if(await i.restoreInstallState(),this.name){let a=(await Jt.getPackageAccessibleBinaries(n,{project:i})).get(this.name);if(!a)throw new be(`Couldn't find a binary named "${this.name}" for package "${P.prettyLocator(t,n)}"`);let[,l]=a;return this.context.stdout.write(`${l} -`),0}return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async o=>{let a=await Jt.getPackageAccessibleBinaries(n,{project:i}),c=Array.from(a.keys()).reduce((u,g)=>Math.max(u,g.length),0);for(let[u,[g,f]]of a)o.reportJson({name:u,source:P.stringifyIdent(g),path:f});if(this.verbose)for(let[u,[g]]of a)o.reportInfo(null,`${u.padEnd(c," ")} ${P.prettyLocator(t,g)}`);else for(let u of a.keys())o.reportInfo(null,u)})).exitCode()}};Zc.paths=[["bin"]],Zc.usage=ve.Usage({description:"get the path to a binary script",details:` +`+Ba(t)}async persistLockfile(){let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t="";try{t=await M.readFilePromise(e,"utf8")}catch{}let i=this.generateLockfile(),n=Vl(t,i);n!==t&&(await M.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(jN))e.push(...o);let t=(0,Z0.default)(this,e),i=qN.default.serialize(t),n=tn(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await M.mkdirPromise(x.dirname(s),{recursive:!0}),await M.writeFilePromise(s,await KMe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:t=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath"),s;try{let o=await HMe(await M.readFilePromise(n));s=qN.default.deserialize(o),this.installStateChecksum=tn(o)}catch{t&&await this.applyLightResolution();return}e&&typeof s.installersCustomData<"u"&&(this.installersCustomData=s.installersCustomData),i&&Object.assign(this,(0,Z0.default)(s,jN.restoreBuildState)),t&&(s.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,Z0.default)(s,jN.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ti}),await this.persistInstallStateFile()}async persist(){let e=(0,_0.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(t=>e(()=>t.persistManifest()))])}async cacheCleanup({cache:e,report:t}){if(this.configuration.get("enableGlobalCache"))return;let i=new Set([".gitignore"]);if(!ZD(e.cwd,this.cwd)||!await M.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await M.readdirPromise(e.cwd)){if(i.has(a))continue;let l=x.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?t.reportError(56,`${$e(this.configuration,x.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:t.reportInfo(19,`${$e(this.configuration,x.basename(l),"magenta")} appears to be unused - removing`),await M.removePromise(l)))}n&&s!==0&&t.reportInfo(19,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function GMe({project:r,allDescriptors:e,allResolutions:t,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,peerRequirements:o=new Map,volatileDescriptors:a=new Set,report:l}){var V;let c=new Map,u=[],g=new Map,f=new Map,h=new Map,p=new Map,C=new Map,y=new Map(r.workspaces.map(W=>{let _=W.anchoredLocator.locatorHash,A=i.get(_);if(typeof A>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[_,rC(A)]})),B=()=>{let W=M.mktempSync(),_=x.join(W,"stacktrace.log"),A=String(u.length+1).length,Ae=u.map((ge,re)=>`${`${re+1}.`.padStart(A," ")} ${Es(ge)} +`).join("");throw M.writeFileSync(_,Ae),M.detachTemp(W),new at(45,`Encountered a stack overflow when resolving peer dependencies; cf ${U.fromPortablePath(_)}`)},v=W=>{let _=t.get(W.descriptorHash);if(typeof _>"u")throw new Error("Assertion failed: The resolution should have been registered");let A=i.get(_);if(!A)throw new Error("Assertion failed: The package could not be found");return A},D=(W,_,A,{top:Ae,optional:ge})=>{u.length>1e3&&B(),u.push(_);let re=L(W,_,A,{top:Ae,optional:ge});return u.pop(),re},L=(W,_,A,{top:Ae,optional:ge})=>{if(n.has(_.locatorHash))return;n.add(_.locatorHash),ge||s.delete(_.locatorHash);let re=i.get(_.locatorHash);if(!re)throw new Error(`Assertion failed: The package (${mt(r.configuration,_)}) should have been registered`);let O=[],F=[],ue=[],pe=[],ke=[];for(let Ne of Array.from(re.dependencies.values())){if(re.peerDependencies.has(Ne.identHash)&&re.locatorHash!==Ae)continue;if(JA(Ne))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(Ne.descriptorHash);let oe=ge;if(!oe){let Y=re.dependenciesMeta.get(Ot(Ne));if(typeof Y<"u"){let he=Y.get(null);typeof he<"u"&&he.optional&&(oe=!0)}}let le=t.get(Ne.descriptorHash);if(!le)throw new Error(`Assertion failed: The resolution (${tr(r.configuration,Ne)}) should have been registered`);let Be=y.get(le)||i.get(le);if(!Be)throw new Error(`Assertion failed: The package (${le}, resolved from ${tr(r.configuration,Ne)}) should have been registered`);if(Be.peerDependencies.size===0){D(Ne,Be,new Map,{top:Ae,optional:oe});continue}let fe,ae,qe=new Set,ne;F.push(()=>{fe=GD(Ne,_.locatorHash),ae=YD(Be,_.locatorHash),re.dependencies.delete(Ne.identHash),re.dependencies.set(fe.identHash,fe),t.set(fe.descriptorHash,ae.locatorHash),e.set(fe.descriptorHash,fe),i.set(ae.locatorHash,ae),O.push([Be,fe,ae])}),ue.push(()=>{var Y;ne=new Map;for(let he of ae.peerDependencies.values()){let ie=re.dependencies.get(he.identHash);if(!ie&&sC(_,he)&&(W.identHash===_.identHash?ie=W:(ie=_t(_,W.range),e.set(ie.descriptorHash,ie),t.set(ie.descriptorHash,_.locatorHash),a.delete(ie.descriptorHash))),(!ie||ie.range==="missing:")&&ae.dependencies.has(he.identHash)){ae.peerDependencies.delete(he.identHash);continue}ie||(ie=_t(he,"missing:")),ae.dependencies.set(ie.identHash,ie),JA(ie)&&wc(h,ie.descriptorHash).add(ae.locatorHash),g.set(ie.identHash,ie),ie.range==="missing:"&&qe.add(ie.identHash),ne.set(he.identHash,(Y=A.get(he.identHash))!=null?Y:ae.locatorHash)}ae.dependencies=new Map(Bn(ae.dependencies,([he,ie])=>Ot(ie)))}),pe.push(()=>{if(!i.has(ae.locatorHash))return;let Y=c.get(Be.locatorHash);typeof Y=="number"&&Y>=2&&B();let he=c.get(Be.locatorHash),ie=typeof he<"u"?he+1:1;c.set(Be.locatorHash,ie),D(fe,ae,ne,{top:Ae,optional:oe}),c.set(Be.locatorHash,ie-1)}),ke.push(()=>{let Y=re.dependencies.get(Ne.identHash);if(typeof Y>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let he=t.get(Y.descriptorHash);if(typeof he>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(wc(C,he).add(_.locatorHash),!!i.has(ae.locatorHash)){for(let ie of ae.peerDependencies.values()){let de=ne.get(ie.identHash);if(typeof de>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hf(pf(p,de),Ot(ie)).push(ae.locatorHash)}for(let ie of qe)ae.dependencies.delete(ie)}})}for(let Ne of[...F,...ue])Ne();let Fe;do{Fe=!0;for(let[Ne,oe,le]of O){let Be=pf(f,Ne.locatorHash),fe=tn(...[...le.dependencies.values()].map(Y=>{let he=Y.range!=="missing:"?t.get(Y.descriptorHash):"missing:";if(typeof he>"u")throw new Error(`Assertion failed: Expected the resolution for ${tr(r.configuration,Y)} to have been registered`);return he===Ae?`${he} (top)`:he}),oe.identHash),ae=Be.get(fe);if(typeof ae>"u"){Be.set(fe,oe);continue}if(ae===oe)continue;i.delete(le.locatorHash),e.delete(oe.descriptorHash),t.delete(oe.descriptorHash),n.delete(le.locatorHash);let qe=h.get(oe.descriptorHash)||[],ne=[re.locatorHash,...qe];h.delete(oe.descriptorHash);for(let Y of ne){let he=i.get(Y);typeof he>"u"||(he.dependencies.get(oe.identHash).descriptorHash!==ae.descriptorHash&&(Fe=!1),he.dependencies.set(oe.identHash,ae))}}}while(!Fe);for(let Ne of[...pe,...ke])Ne()};for(let W of r.workspaces){let _=W.anchoredLocator;a.delete(W.anchoredDescriptor.descriptorHash),D(W.anchoredDescriptor,_,new Map,{top:_.locatorHash,optional:!1})}let H;(A=>(A[A.NotProvided=0]="NotProvided",A[A.NotCompatible=1]="NotCompatible"))(H||(H={}));let j=[];for(let[W,_]of C){let A=i.get(W);if(typeof A>"u")throw new Error("Assertion failed: Expected the root to be registered");let Ae=p.get(W);if(!(typeof Ae>"u"))for(let ge of _){let re=i.get(ge);if(!(typeof re>"u"))for(let[O,F]of Ae){let ue=en(O);if(re.peerDependencies.has(ue.identHash))continue;let pe=`p${tn(ge,O,W).slice(0,5)}`;o.set(pe,{subject:ge,requested:ue,rootRequester:W,allRequesters:F});let ke=A.dependencies.get(ue.identHash);if(typeof ke<"u"){let Fe=v(ke),Ne=(V=Fe.version)!=null?V:"0.0.0",oe=new Set;for(let Be of F){let fe=i.get(Be);if(typeof fe>"u")throw new Error("Assertion failed: Expected the link to be registered");let ae=fe.peerDependencies.get(ue.identHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the ident to be registered");oe.add(ae.range)}[...oe].every(Be=>{if(Be.startsWith(jr.protocol)){if(!r.tryWorkspaceByLocator(Fe))return!1;Be=Be.slice(jr.protocol.length),(Be==="^"||Be==="~")&&(Be="*")}return kc(Ne,Be)})||j.push({type:1,subject:re,requested:ue,requester:A,version:Ne,hash:pe,requirementCount:F.length})}else{let Fe=A.peerDependenciesMeta.get(O);Fe!=null&&Fe.optional||j.push({type:0,subject:re,requested:ue,requester:A,hash:pe})}}}}let $=[W=>jD(W.subject),W=>Ot(W.requested),W=>`${W.type}`];l==null||l.startSectionSync({reportFooter:()=>{l.reportWarning(0,`Some peer dependencies are incorrectly met; run ${$e(r.configuration,"yarn explain peer-requirements ",Ke.CODE)} for details, where ${$e(r.configuration,"",Ke.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let W of Bn(j,$))switch(W.type){case 0:l.reportWarning(2,`${mt(r.configuration,W.subject)} doesn't provide ${Ai(r.configuration,W.requested)} (${$e(r.configuration,W.hash,Ke.CODE)}), requested by ${Ai(r.configuration,W.requester)}`);break;case 1:{let _=W.requirementCount>1?"and some of its descendants request":"requests";l.reportWarning(60,`${mt(r.configuration,W.subject)} provides ${Ai(r.configuration,W.requested)} (${$e(r.configuration,W.hash,Ke.CODE)}) with version ${AC(r.configuration,W.version)}, which doesn't satisfy what ${Ai(r.configuration,W.requester)} ${_}`)}break}})}var Sh=class{constructor(e,t){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!M.existsSync(i),this.sendReport(t),this.startBuffer()}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,t){wc(this.values,e).add(t)}reportEnumerator(e,t){wc(this.enumerators,e).add(tn(t))}reportHit(e,t="*"){let i=pf(this.hits,e),n=Na(i,t,()=>0);i.set(t,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return x.join(e,"telemetry.json")}sendReport(e){var u,g,f;let t=this.getRegistryPath(),i;try{i=M.readJsonSync(t)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{M.mkdirSync(x.dirname(t),{recursive:!0}),M.writeJsonSync(t,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>kR(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let C=p;C.userId=h,C.reportType="primary";for(let v of Object.keys((f=C.enumerators)!=null?f:{}))C.enumerators[v]=C.enumerators[v].length;c(C);let y=new Map,B=20;for(let[v,D]of Object.entries(C.values))D.length>0&&y.set(v,D.slice(0,B));for(;y.size>0;){let v={};v.userId=h,v.reportType="secondary",v.metrics={};for(let[D,L]of y)v.metrics[D]=L.shift(),L.length===0&&y.delete(D);c(v)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),t;try{t=M.readJsonSync(e)}catch{t={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=t.blocks=(a=t.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let C of this.hits.keys()){let y=s.hits=(c=s.hits)!=null?c:{},B=y[C]=(u=y[C])!=null?u:{};for(let[v,D]of this.hits.get(C))B[v]=((g=B[v])!=null?g:0)+D}for(let C of["values","enumerators"])for(let y of this[C].keys()){let B=s[C]=(f=s[C])!=null?f:{};B[y]=[...new Set([...(h=B[y])!=null?h:[],...(p=this[C].get(y))!=null?p:[]])]}M.mkdirSync(x.dirname(e),{recursive:!0}),M.writeJsonSync(e,t)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var zN=J("child_process"),R$=Pe(Ac());var VN=J("fs");var vh=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function YMe(r){let e=U.fromPortablePath(r);process.on("SIGINT",()=>{}),e?(0,zN.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,zN.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}async function $0({binaryVersion:r,pluginConfiguration:e}){async function t(){let n=new Hn({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:r});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var C,y,B,v,D;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(!Ie.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!vt.satisfiesWithPrereleases(s,o))throw new be(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let l=await ye.find(U.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),c=l.get("yarnPath"),u=l.get("ignorePath"),g=l.get("ignoreCwd"),f=U.toPortablePath(U.resolve(process.argv[1])),h=L=>M.readFilePromise(L).catch(()=>Buffer.of());if(!u&&!g&&await(async()=>c===f||Buffer.compare(...await Promise.all([h(c),h(f)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(c!==null&&!u)if(!M.existsSync(c))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${l.sources.get("yarnPath")}), but the specified location doesn't exist (${c}).`))),process.exitCode=1;else try{YMe(c)}catch(L){process.exitCode=L.code||1}else{u&&delete process.env.YARN_IGNORE_PATH,l.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(ye.telemetry=new Sh(l,"puba9cdc10ec5790a2cf4969dd413a47270")),(C=ye.telemetry)==null||C.reportVersion(r);for(let[$,V]of l.plugins.entries()){vh.has((B=(y=$.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:y[1])!=null?B:"")&&((v=ye.telemetry)==null||v.reportPluginName($));for(let W of V.commands||[])n.register(W)}let H=n.process(process.argv.slice(2));H.help||(D=ye.telemetry)==null||D.reportCommandName(H.path.join(" "));let j=H.cwd;if(typeof j<"u"&&!g){let $=(0,VN.realpathSync)(process.cwd()),V=(0,VN.realpathSync)(j);if($!==V){process.chdir(j),await t();return}}await n.runExit(H,{cwd:U.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return t().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>M.rmtempPromise())}function F$(r){r.Command.Path=(...e)=>t=>{t.paths=t.paths||[],t.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])r.Command[e]=(...t)=>(i,n)=>{let s=r.Option[e](...t);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return r}var Nm={};ut(Nm,{BaseCommand:()=>De,WorkspaceRequiredError:()=>ct,getDynamicLibs:()=>Jie,getPluginConfiguration:()=>BQ,main:()=>$0,openWorkspace:()=>Hh,pluginCommands:()=>vh});var De=class extends ve{constructor(){super(...arguments);this.cwd=z.String("--cwd",{hidden:!0})}};var ct=class extends be{constructor(e,t){let i=x.relative(e,t),n=x.join(e,ot.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var VYe=Pe(Xr());ls();var XYe=Pe(WL()),Jie=()=>new Map([["@yarnpkg/cli",Nm],["@yarnpkg/core",sm],["@yarnpkg/fslib",Wp],["@yarnpkg/libzip",xC],["@yarnpkg/parsers",td],["@yarnpkg/shell",RC],["clipanion",ud],["semver",VYe],["typanion",fn],["yup",XYe]]);async function Hh(r,e){let{project:t,workspace:i}=await je.find(r,e);if(!i)throw new ct(t.cwd,e);return i}var b9e=Pe(Xr());ls();var S9e=Pe(WL());var pO={};ut(pO,{dedupeUtils:()=>NQ,default:()=>A4e,suggestUtils:()=>qh});var qae=Pe(Ac());var Nse=Pe(Um());ls();var qh={};ut(qh,{Modifier:()=>UT,Strategy:()=>DQ,Target:()=>Km,WorkspaceModifier:()=>xse,applyModifier:()=>Dse,extractDescriptorFromPath:()=>KT,extractRangeModifier:()=>Pse,fetchDescriptorFrom:()=>HT,findProjectDescriptors:()=>Fse,getModifier:()=>Hm,getSuggestedDescriptors:()=>Gm,makeWorkspaceDescriptor:()=>Rse,toWorkspaceModifier:()=>kse});var MT=Pe(Xr()),hqe="workspace:",Km=(i=>(i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies",i))(Km||{}),UT=(i=>(i.CARET="^",i.TILDE="~",i.EXACT="",i))(UT||{}),xse=(i=>(i.CARET="^",i.TILDE="~",i.EXACT="*",i))(xse||{}),DQ=(s=>(s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache",s))(DQ||{});function Hm(r,e){return r.exact?"":r.caret?"^":r.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var pqe=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Pse(r,{project:e}){let t=r.match(pqe);return t?t[1]:e.configuration.get("defaultSemverRangePrefix")}function Dse(r,e){let{protocol:t,source:i,params:n,selector:s}=P.parseRange(r.range);return MT.default.valid(s)&&(s=`${e}${r.range}`),P.makeDescriptor(r,P.makeRange({protocol:t,source:i,params:n,selector:s}))}function kse(r){switch(r){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${r}"`)}}function Rse(r,e){return P.makeDescriptor(r.anchoredDescriptor,`${hqe}${kse(e)}`)}async function Fse(r,{project:e,target:t}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(t==="peerDependencies"){let o=s.manifest.peerDependencies.get(r.identHash);o!==void 0&&n(o).locators.push(s.anchoredLocator)}else{let o=s.manifest.dependencies.get(r.identHash),a=s.manifest.devDependencies.get(r.identHash);t==="devDependencies"?a!==void 0?n(a).locators.push(s.anchoredLocator):o!==void 0&&n(o).locators.push(s.anchoredLocator):o!==void 0?n(o).locators.push(s.anchoredLocator):a!==void 0&&n(a).locators.push(s.anchoredLocator)}return i}async function KT(r,{cwd:e,workspace:t}){return await dqe(async i=>{x.isAbsolute(r)||(r=x.relative(t.cwd,x.resolve(e,r)),r.match(/^\.{0,2}\//)||(r=`./${r}`));let{project:n}=t,s=await HT(P.makeIdent(null,"archive"),r,{project:t.project,cache:i,workspace:t});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ti,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,t.anchoredLocator,c),g=P.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await ot.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return P.makeDescriptor(h.name,r)})}async function Gm(r,{project:e,workspace:t,cache:i,target:n,modifier:s,strategies:o,maxResults:a=1/0}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(r.range!=="unknown")return{suggestions:[{descriptor:r,name:`Use ${P.prettyDescriptor(e.configuration,r)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof t<"u"&&t!==null&&t.manifest[n].get(r.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case"keep":await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${P.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case"reuse":await g(async()=>{for(let{descriptor:h,locators:p}of(await Fse(r,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===t.anchoredLocator.locatorHash&&o.includes("keep"))continue;let C=`(originally used by ${P.prettyLocator(e.configuration,p[0])}`;C+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:C})}});break;case"cache":await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===r.identHash&&c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await g(async()=>{if(t.manifest.name!==null&&r.identHash===t.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(r);if(h===null)return;let p=Rse(h,s);c.push({descriptor:p,name:`Attach ${P.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ee.pretty(e.configuration,h.relativeCwd,ee.Type.PATH)})`})});break;case"latest":await g(async()=>{if(r.range!=="unknown")c.push({descriptor:r,name:`Use ${P.prettyRange(e.configuration,r.range)}`,reason:"(explicit range requested)"});else if(n==="peerDependencies")c.push({descriptor:P.makeDescriptor(r,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ee.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await HT(r,"latest",{project:e,cache:i,workspace:t,preserveModifier:!1});h&&(h=Dse(h,s),c.push({descriptor:h,name:`Use ${P.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function HT(r,e,{project:t,cache:i,workspace:n,preserveModifier:s=!0}){let o=P.makeDescriptor(r,e),a=new ti,l=t.configuration.makeFetcher(),c=t.configuration.makeResolver(),u={project:t,fetcher:l,cache:i,checksums:t.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g={...u,resolver:c,fetchOptions:u},f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:C,source:y,params:B,selector:v}=P.parseRange(P.convertToManifestRange(p.reference));if(C===t.configuration.get("defaultProtocol")&&(C=null),MT.default.valid(v)&&s!==!1){let D=typeof s=="string"?s:o.range;v=Pse(D,{project:t})+v}return P.makeDescriptor(p,P.makeRange({protocol:C,source:y,params:B,selector:v}))}async function dqe(r){return await M.mktempPromise(async e=>{let t=ye.create(e);return t.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await r(new Rt(e,{configuration:t,check:!1,immutable:!1}))})}var Au=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=z.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=z.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=z.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=z.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=z.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=z.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Xi(es)});this.silent=z.Boolean("--silent",{hidden:!0});this.packages=z.Rest()}async execute(){var y;let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=(y=this.interactive)!=null?y:t.get("preferInteractive"),a=Hm(this,i),l=[...o?["reuse"]:[],"project",...this.cached?["cache"]:[],"latest"],c=o?1/0:1,u=await Promise.all(this.packages.map(async B=>{let v=B.match(/^\.{0,2}\//)?await KT(B,{cwd:this.context.cwd,workspace:n}):P.tryParseDescriptor(B),D=B.match(/^(https?:|git@github)/);if(D)throw new be(`It seems you are trying to add a package using a ${ee.pretty(t,`${D[0]}...`,xi.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${ee.pretty(t,"yarn add",xi.CODE)} ${ee.pretty(t,P.makeDescriptor(P.makeIdent(null,"my-package"),`${D[0]}...`),xi.DESCRIPTOR)}`);if(!v)throw new be(`The ${ee.pretty(t,B,xi.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let L=Cqe(n,v,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(L.map(async j=>{let $=await Gm(v,{project:i,workspace:n,cache:s,target:j,modifier:a,strategies:l,maxResults:c});return{request:v,suggestedDescriptors:$,target:j}}))})).then(B=>B.flat()),g=await ra.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let{request:v,suggestedDescriptors:{suggestions:D,rejections:L}}of u)if(D.filter(j=>j.descriptor!==null).length===0){let[j]=L;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range`):B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),B.reportSeparator(),B.reportExceptionOnce(j)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[],p=[];for(let{suggestedDescriptors:{suggestions:B},target:v}of u){let D,L=B.filter(V=>V.descriptor!==null),H=L[0].descriptor,j=L.every(V=>P.areDescriptorsEqual(V.descriptor,H));L.length===1||j?D=H:(f=!0,{answer:D}=await(0,Nse.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:B.map(({descriptor:V,name:W,reason:_})=>V?{name:W,hint:_,descriptor:V}:{name:W,hint:_,disabled:!0}),onCancel:()=>process.exit(130),result(V){return this.find(V,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let $=n.manifest[v].get(D.identHash);(typeof $>"u"||$.descriptorHash!==D.descriptorHash)&&(n.manifest[v].set(D.identHash,D),this.optional&&(v==="dependencies"?n.manifest.ensureDependencyMeta({...D,range:"unknown"}).optional=!0:v==="peerDependencies"&&(n.manifest.ensurePeerDependencyMeta({...D,range:"unknown"}).optional=!0)),typeof $>"u"?h.push([n,v,D,l]):p.push([n,v,$,D]))}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyAddition,h),await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),f&&this.context.stdout.write(` +`),(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};Au.paths=[["add"]],Au.usage=ve.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function Cqe(r,e,{dev:t,peer:i,preferDev:n,optional:s}){let o=r.manifest["dependencies"].has(e.identHash),a=r.manifest["devDependencies"].has(e.identHash),l=r.manifest["peerDependencies"].has(e.identHash);if((t||i)&&o)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!t&&!i&&l)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((t||n)&&s)throw new be(`Package "${P.prettyIdent(r.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let c=[];return i&&c.push("peerDependencies"),(t||n)&&c.push("devDependencies"),s&&c.push("dependencies"),c.length>0?c:a?["devDependencies"]:l?["peerDependencies"]:["dependencies"]}var lu=class extends De{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=z.String({required:!1})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,locator:n}=await je.find(t,this.context.cwd);if(await i.restoreInstallState(),this.name){let a=(await Wt.getPackageAccessibleBinaries(n,{project:i})).get(this.name);if(!a)throw new be(`Couldn't find a binary named "${this.name}" for package "${P.prettyLocator(t,n)}"`);let[,l]=a;return this.context.stdout.write(`${l} +`),0}return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async o=>{let a=await Wt.getPackageAccessibleBinaries(n,{project:i}),c=Array.from(a.keys()).reduce((u,g)=>Math.max(u,g.length),0);for(let[u,[g,f]]of a)o.reportJson({name:u,source:P.stringifyIdent(g),path:f});if(this.verbose)for(let[u,[g]]of a)o.reportInfo(null,`${u.padEnd(c," ")} ${P.prettyLocator(t,g)}`);else for(let u of a.keys())o.reportInfo(null,u)})).exitCode()}};lu.paths=[["bin"]],lu.usage=ve.Usage({description:"get the path to a binary script",details:` When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var $c=class extends De{constructor(){super(...arguments);this.mirror=z.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=z.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await Rt.find(t);return(await Ge.start({configuration:t,stdout:this.context.stdout},async()=>{let s=(this.all||this.mirror)&&i.mirrorCwd!==null,o=!this.mirror;s&&(await M.removePromise(i.mirrorCwd),await t.triggerHook(a=>a.cleanGlobalArtifacts,t)),o&&await M.removePromise(i.cwd)})).exitCode()}};$c.paths=[["cache","clean"],["cache","clear"]],$c.usage=ve.Usage({description:"remove the shared cache files",details:` + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var cu=class extends De{constructor(){super(...arguments);this.mirror=z.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=z.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await Rt.find(t);return(await Ge.start({configuration:t,stdout:this.context.stdout},async()=>{let s=(this.all||this.mirror)&&i.mirrorCwd!==null,o=!this.mirror;s&&(await M.removePromise(i.mirrorCwd),await t.triggerHook(a=>a.cleanGlobalArtifacts,t)),o&&await M.removePromise(i.cwd)})).exitCode()}};cu.paths=[["cache","clean"],["cache","clear"]],cu.usage=ve.Usage({description:"remove the shared cache files",details:` This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var zne=Pe(j0()),pT=J("util"),eu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=z.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*/,"");if(typeof t.settings.get(i)>"u")throw new be(`Couldn't find a configuration settings named "${i}"`);let o=t.getSpecial(i,{hideSecrets:!this.unsafe,getNativePaths:!0}),a=Ie.convertMapsToIndexableObjects(o),l=n?(0,zne.default)(a,n):a,c=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async u=>{u.reportJson(l)});if(!this.json){if(typeof l=="string")return this.context.stdout.write(`${l} -`),c.exitCode();pT.inspect.styles.name="cyan",this.context.stdout.write(`${(0,pT.inspect)(l,{depth:1/0,colors:t.get("enableColors"),compact:!1})} -`)}return c.exitCode()}};eu.paths=[["config","get"]],eu.usage=ve.Usage({description:"read a configuration settings",details:` + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var Lse=Pe(uQ()),GT=J("util"),uu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=z.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*/,"");if(typeof t.settings.get(i)>"u")throw new be(`Couldn't find a configuration settings named "${i}"`);let o=t.getSpecial(i,{hideSecrets:!this.unsafe,getNativePaths:!0}),a=Ie.convertMapsToIndexableObjects(o),l=n?(0,Lse.default)(a,n):a,c=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async u=>{u.reportJson(l)});if(!this.json){if(typeof l=="string")return this.context.stdout.write(`${l} +`),c.exitCode();GT.inspect.styles.name="cyan",this.context.stdout.write(`${(0,GT.inspect)(l,{depth:1/0,colors:t.get("enableColors"),compact:!1})} +`)}return c.exitCode()}};uu.paths=[["config","get"]],uu.usage=ve.Usage({description:"read a configuration settings",details:` This command will print a configuration setting. Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var ooe=Pe(yT()),aoe=Pe(j0()),Aoe=Pe(soe()),wT=J("util"),tu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String();this.value=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new be("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new be(`Couldn't find a configuration settings named "${n}"`);if(n==="enableStrictSettings")throw new be("This setting only affects the file it's in, and thus cannot be set from the CLI");let a=this.json?JSON.parse(this.value):this.value;await(this.home?p=>ye.updateHomeConfiguration(p):p=>ye.updateConfiguration(i(),p))(p=>{if(s){let C=(0,ooe.default)(p);return(0,Aoe.default)(C,this.name,a),C}else return{...p,[n]:a}});let u=(await ye.find(this.context.cwd,this.context.plugins)).getSpecial(n,{hideSecrets:!0,getNativePaths:!0}),g=Ie.convertMapsToIndexableObjects(u),f=s?(0,aoe.default)(g,s):g;return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async p=>{wT.inspect.styles.name="cyan",p.reportInfo(0,`Successfully set ${this.name} to ${(0,wT.inspect)(f,{depth:1/0,colors:t.get("enableColors"),compact:!1})}`)})).exitCode()}};tu.paths=[["config","set"]],tu.usage=ve.Usage({description:"change a configuration settings",details:` + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var Woe=Pe(zT()),zoe=Pe(uQ()),Voe=Pe(Joe()),VT=J("util"),gu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String();this.value=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new be("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new be(`Couldn't find a configuration settings named "${n}"`);if(n==="enableStrictSettings")throw new be("This setting only affects the file it's in, and thus cannot be set from the CLI");let a=this.json?JSON.parse(this.value):this.value;await(this.home?p=>ye.updateHomeConfiguration(p):p=>ye.updateConfiguration(i(),p))(p=>{if(s){let C=(0,Woe.default)(p);return(0,Voe.default)(C,this.name,a),C}else return{...p,[n]:a}});let u=(await ye.find(this.context.cwd,this.context.plugins)).getSpecial(n,{hideSecrets:!0,getNativePaths:!0}),g=Ie.convertMapsToIndexableObjects(u),f=s?(0,zoe.default)(g,s):g;return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async p=>{VT.inspect.styles.name="cyan",p.reportInfo(0,`Successfully set ${this.name} to ${(0,VT.inspect)(f,{depth:1/0,colors:t.get("enableColors"),compact:!1})}`)})).exitCode()}};gu.paths=[["config","set"]],gu.usage=ve.Usage({description:"change a configuration settings",details:` This command will set a configuration setting. When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var Coe=Pe(yT()),moe=Pe(_C()),Eoe=Pe(doe()),ru=class extends De{constructor(){super(...arguments);this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new be("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new be(`Couldn't find a configuration settings named "${n}"`);let a=this.home?c=>ye.updateHomeConfiguration(c):c=>ye.updateConfiguration(i(),c);return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async c=>{let u=!1;await a(g=>{if(!(0,moe.default)(g,this.name))return c.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),u=!0,g;let f=s?(0,Coe.default)(g):{...g};return(0,Eoe.default)(f,this.name),f}),u||c.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};ru.paths=[["config","unset"]],ru.usage=ve.Usage({description:"unset a configuration setting",details:` + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var nae=Pe(zT()),sae=Pe(am()),oae=Pe(iae()),fu=class extends De{constructor(){super(...arguments);this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new be("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new be(`Couldn't find a configuration settings named "${n}"`);let a=this.home?c=>ye.updateHomeConfiguration(c):c=>ye.updateConfiguration(i(),c);return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async c=>{let u=!1;await a(g=>{if(!(0,sae.default)(g,this.name))return c.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),u=!0,g;let f=s?(0,nae.default)(g):{...g};return(0,oae.default)(f,this.name),f}),u||c.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};fu.paths=[["config","unset"]],fu.usage=ve.Usage({description:"unset a configuration setting",details:` This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var BT=J("util"),iu=class extends De{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=z.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{if(t.invalid.size>0&&!this.json){for(let[s,o]of t.invalid)n.reportError(34,`Invalid configuration key "${s}" in ${o}`);n.reportSeparator()}if(this.json){let s=Ie.sortMap(t.settings.keys(),o=>o);for(let o of s){let a=t.settings.get(o),l=t.getSpecial(o,{hideSecrets:!0,getNativePaths:!0}),c=t.sources.get(o);this.verbose?n.reportJson({key:o,effective:l,source:c}):n.reportJson({key:o,effective:l,source:c,...a})}}else{let s=Ie.sortMap(t.settings.keys(),l=>l),o=s.reduce((l,c)=>Math.max(l,c.length),0),a={breakLength:1/0,colors:t.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let l=s.map(u=>{let g=t.settings.get(u);if(!g)throw new Error(`Assertion failed: This settings ("${u}") should have been registered`);let f=this.why?t.sources.get(u)||"":g.description;return[u,f]}),c=l.reduce((u,[,g])=>Math.max(u,g.length),0);for(let[u,g]of l)n.reportInfo(null,`${u.padEnd(o," ")} ${g.padEnd(c," ")} ${(0,BT.inspect)(t.getSpecial(u,{hideSecrets:!0,getNativePaths:!0}),a)}`)}else for(let l of s)n.reportInfo(null,`${l.padEnd(o," ")} ${(0,BT.inspect)(t.getSpecial(l,{hideSecrets:!0,getNativePaths:!0}),a)}`)}})).exitCode()}};iu.paths=[["config"]],iu.usage=ve.Usage({description:"display the current configuration",details:` + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var XT=J("util"),hu=class extends De{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=z.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{if(t.invalid.size>0&&!this.json){for(let[s,o]of t.invalid)n.reportError(34,`Invalid configuration key "${s}" in ${o}`);n.reportSeparator()}if(this.json){let s=Ie.sortMap(t.settings.keys(),o=>o);for(let o of s){let a=t.settings.get(o),l=t.getSpecial(o,{hideSecrets:!0,getNativePaths:!0}),c=t.sources.get(o);this.verbose?n.reportJson({key:o,effective:l,source:c}):n.reportJson({key:o,effective:l,source:c,...a})}}else{let s=Ie.sortMap(t.settings.keys(),l=>l),o=s.reduce((l,c)=>Math.max(l,c.length),0),a={breakLength:1/0,colors:t.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let l=s.map(u=>{let g=t.settings.get(u);if(!g)throw new Error(`Assertion failed: This settings ("${u}") should have been registered`);let f=this.why?t.sources.get(u)||"":g.description;return[u,f]}),c=l.reduce((u,[,g])=>Math.max(u,g.length),0);for(let[u,g]of l)n.reportInfo(null,`${u.padEnd(o," ")} ${g.padEnd(c," ")} ${(0,XT.inspect)(t.getSpecial(u,{hideSecrets:!0,getNativePaths:!0}),a)}`)}else for(let l of s)n.reportInfo(null,`${l.padEnd(o," ")} ${(0,XT.inspect)(t.getSpecial(l,{hideSecrets:!0,getNativePaths:!0}),a)}`)}})).exitCode()}};hu.paths=[["config"]],hu.usage=ve.Usage({description:"display the current configuration",details:` This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});ns();var fQ={};ut(fQ,{Strategy:()=>Nm,acceptedStrategies:()=>fWe,dedupe:()=>QT});var Ioe=Pe(yn()),Nm=(e=>(e.HIGHEST="highest",e))(Nm||{}),fWe=new Set(Object.values(Nm)),hWe={highest:async(r,e,{resolver:t,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of r.storedResolutions){let c=r.storedDescriptors.get(a);if(typeof c>"u")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);Ie.getSetWithDefault(o,c.identHash).add(l)}return Array.from(r.storedDescriptors.values(),async a=>{if(e.length&&!Ioe.default.isMatch(P.stringifyIdent(a),e))return null;let l=r.storedResolutions.get(a.descriptorHash);if(typeof l>"u")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=r.originalPackages.get(l);if(typeof c>"u"||!t.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u>"u")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(y=>{let B=r.originalPackages.get(y);if(typeof B>"u")throw new Error(`Assertion failed: The package (${y}) should have been registered`);return B.reference}),f=await t.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h>"u")return null;let p=h.locatorHash,C=r.originalPackages.get(p);if(typeof C>"u")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:C}})}};async function QT(r,{strategy:e,patterns:t,cache:i,report:n}){let{configuration:s}=r,o=new ti,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:r.storedChecksums,fetcher:l,project:r,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:r,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let g=hWe[e],f=await g(r,t,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Si.progressViaCounter(f.length);await n.reportProgress(h);let p=0;await Promise.all(f.map(B=>B.then(v=>{if(v===null)return;p++;let{descriptor:D,currentPackage:L,updatedPackage:H}=v;n.reportInfo(0,`${P.prettyDescriptor(s,D)} can be deduped from ${P.prettyLocator(s,L)} to ${P.prettyLocator(s,H)}`),n.reportJson({descriptor:P.stringifyDescriptor(D),currentResolution:P.stringifyLocator(L),updatedResolution:P.stringifyLocator(H)}),r.storedResolutions.set(D.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let C;switch(p){case 0:C="No packages";break;case 1:C="One package";break;default:C=`${p} packages`}let y=ee.pretty(s,e,ee.Type.CODE);return n.reportInfo(0,`${C} can be deduped using the ${y} strategy`),p})}var nu=class extends De{constructor(){super(...arguments);this.strategy=z.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Wi(Nm)});this.check=z.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Wi(Xn)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=await Rt.find(t);await i.restoreInstallState({restoreResolutions:!1});let s=0,o=await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout,json:this.json},async a=>{s=await QT(i,{strategy:this.strategy,patterns:this.patterns,cache:n,report:a})});return o.hasErrors()?o.exitCode():this.check?s?1:0:(await Ge.start({configuration:t,stdout:this.context.stdout,json:this.json},async l=>{await i.install({cache:n,report:l,mode:this.mode})})).exitCode()}};nu.paths=[["dedupe"]],nu.usage=ve.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Oh=class extends De{async execute(){let{plugins:e}=await ye.find(this.context.cwd,this.context.plugins),t=[];for(let o of e){let{commands:a}=o[1];if(a){let c=Kn.from(a).definitions();t.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=yoe()["@yarnpkg/builder"].bundles.standard;for(let o of t){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Oh.paths=[["--clipanion=definitions"]];var Mh=class extends De{async execute(){this.context.stdout.write(this.cli.usage(null))}};Mh.paths=[["help"],["--help"],["-h"]];var Lm=class extends De{constructor(){super(...arguments);this.leadingArgument=z.String();this.args=z.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!P.tryParseIdent(this.leadingArgument)){let t=x.resolve(this.context.cwd,K.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:t})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};var Kh=class extends De{async execute(){this.context.stdout.write(`${Lr||""} -`)}};Kh.paths=[["-v"],["--version"]];var su=class extends De{constructor(){super(...arguments);this.commandName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,locator:n}=await je.find(t,this.context.cwd);return await i.restoreInstallState(),await Jt.executePackageShellcode(n,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:i})}};su.paths=[["exec"]],su.usage=ve.Usage({description:"execute a shell script",details:` + `,examples:[["Print the active configuration settings","$0 config"]]});ls();var NQ={};ut(NQ,{Strategy:()=>jm,acceptedStrategies:()=>I8e,dedupe:()=>ZT});var aae=Pe(wn()),jm=(e=>(e.HIGHEST="highest",e))(jm||{}),I8e=new Set(Object.values(jm)),y8e={highest:async(r,e,{resolver:t,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of r.storedResolutions){let c=r.storedDescriptors.get(a);if(typeof c>"u")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);Ie.getSetWithDefault(o,c.identHash).add(l)}return Array.from(r.storedDescriptors.values(),async a=>{if(e.length&&!aae.default.isMatch(P.stringifyIdent(a),e))return null;let l=r.storedResolutions.get(a.descriptorHash);if(typeof l>"u")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=r.originalPackages.get(l);if(typeof c>"u"||!t.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u>"u")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(y=>{let B=r.originalPackages.get(y);if(typeof B>"u")throw new Error(`Assertion failed: The package (${y}) should have been registered`);return B.reference}),f=await t.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h>"u")return null;let p=h.locatorHash,C=r.originalPackages.get(p);if(typeof C>"u")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:C}})}};async function ZT(r,{strategy:e,patterns:t,cache:i,report:n}){let{configuration:s}=r,o=new ti,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:r.storedChecksums,fetcher:l,project:r,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:r,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let g=y8e[e],f=await g(r,t,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=vi.progressViaCounter(f.length);await n.reportProgress(h);let p=0;await Promise.all(f.map(B=>B.then(v=>{if(v===null)return;p++;let{descriptor:D,currentPackage:L,updatedPackage:H}=v;n.reportInfo(0,`${P.prettyDescriptor(s,D)} can be deduped from ${P.prettyLocator(s,L)} to ${P.prettyLocator(s,H)}`),n.reportJson({descriptor:P.stringifyDescriptor(D),currentResolution:P.stringifyLocator(L),updatedResolution:P.stringifyLocator(H)}),r.storedResolutions.set(D.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let C;switch(p){case 0:C="No packages";break;case 1:C="One package";break;default:C=`${p} packages`}let y=ee.pretty(s,e,ee.Type.CODE);return n.reportInfo(0,`${C} can be deduped using the ${y} strategy`),p})}var pu=class extends De{constructor(){super(...arguments);this.strategy=z.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Xi(jm)});this.check=z.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Xi(es)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=await Rt.find(t);await i.restoreInstallState({restoreResolutions:!1});let s=0,o=await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout,json:this.json},async a=>{s=await ZT(i,{strategy:this.strategy,patterns:this.patterns,cache:n,report:a})});return o.hasErrors()?o.exitCode():this.check?s?1:0:(await Ge.start({configuration:t,stdout:this.context.stdout,json:this.json},async l=>{await i.install({cache:n,report:l,mode:this.mode})})).exitCode()}};pu.paths=[["dedupe"]],pu.usage=ve.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Vh=class extends De{async execute(){let{plugins:e}=await ye.find(this.context.cwd,this.context.plugins),t=[];for(let o of e){let{commands:a}=o[1];if(a){let c=Hn.from(a).definitions();t.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Aae()["@yarnpkg/builder"].bundles.standard;for(let o of t){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} +`)}};Vh.paths=[["--clipanion=definitions"]];var Xh=class extends De{async execute(){this.context.stdout.write(this.cli.usage(null))}};Xh.paths=[["help"],["--help"],["-h"]];var qm=class extends De{constructor(){super(...arguments);this.leadingArgument=z.String();this.args=z.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!P.tryParseIdent(this.leadingArgument)){let t=x.resolve(this.context.cwd,U.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:t})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};var Zh=class extends De{async execute(){this.context.stdout.write(`${Lr||""} +`)}};Zh.paths=[["-v"],["--version"]];var du=class extends De{constructor(){super(...arguments);this.commandName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,locator:n}=await je.find(t,this.context.cwd);return await i.restoreInstallState(),await Wt.executePackageShellcode(n,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:i})}};du.paths=[["exec"]],du.usage=ve.Usage({description:"execute a shell script",details:` This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});ns();var ou=class extends De{constructor(){super(...arguments);this.hash=z.String({required:!1,validator:zp(Wp(),[Vp(/^p[0-9a-f]{5}$/)])})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return await i.restoreInstallState({restoreResolutions:!1}),await i.applyLightResolution(),typeof this.hash<"u"?await dWe(this.hash,i,{stdout:this.context.stdout}):(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{var a;let o=[([,l])=>P.stringifyLocator(i.storedPackages.get(l.subject)),([,l])=>P.stringifyIdent(l.requested)];for(let[l,c]of Ie.sortMap(i.peerRequirements,o)){let u=i.storedPackages.get(c.subject);if(typeof u>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let g=i.storedPackages.get(c.rootRequester);if(typeof g>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let f=(a=u.dependencies.get(c.requested.identHash))!=null?a:null,h=ee.pretty(t,l,ee.Type.CODE),p=P.prettyLocator(t,u),C=P.prettyIdent(t,c.requested),y=P.prettyIdent(t,g),B=c.allRequesters.length-1,v=`descendant${B===1?"":"s"}`,D=B>0?` and ${B} ${v}`:"",L=f!==null?"provides":"doesn't provide";s.reportInfo(null,`${h} \u2192 ${p} ${L} ${C} to ${y}${D}`)}})).exitCode()}};ou.paths=[["explain","peer-requirements"]],ou.usage=ve.Usage({description:"explain a set of peer requirements",details:` + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});ls();var Cu=class extends De{constructor(){super(...arguments);this.hash=z.String({required:!1,validator:od(sd(),[ad(/^p[0-9a-f]{5}$/)])})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return await i.restoreInstallState({restoreResolutions:!1}),await i.applyLightResolution(),typeof this.hash<"u"?await B8e(this.hash,i,{stdout:this.context.stdout}):(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{var a;let o=[([,l])=>P.stringifyLocator(i.storedPackages.get(l.subject)),([,l])=>P.stringifyIdent(l.requested)];for(let[l,c]of Ie.sortMap(i.peerRequirements,o)){let u=i.storedPackages.get(c.subject);if(typeof u>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let g=i.storedPackages.get(c.rootRequester);if(typeof g>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let f=(a=u.dependencies.get(c.requested.identHash))!=null?a:null,h=ee.pretty(t,l,ee.Type.CODE),p=P.prettyLocator(t,u),C=P.prettyIdent(t,c.requested),y=P.prettyIdent(t,g),B=c.allRequesters.length-1,v=`descendant${B===1?"":"s"}`,D=B>0?` and ${B} ${v}`:"",L=f!==null?"provides":"doesn't provide";s.reportInfo(null,`${h} \u2192 ${p} ${L} ${C} to ${y}${D}`)}})).exitCode()}};Cu.paths=[["explain","peer-requirements"]],Cu.usage=ve.Usage({description:"explain a set of peer requirements",details:` A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. @@ -482,9 +482,9 @@ Try running the command again with the package name prefixed: ${ee.pretty(t,"yar When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function dWe(r,e,t){let{configuration:i}=e,n=e.peerRequirements.get(r);if(typeof n>"u")throw new Error(`No peerDependency requirements found for hash: "${r}"`);return(await Ge.start({configuration:i,stdout:t.stdout,includeFooter:!1},async o=>{var B,v;let a=e.storedPackages.get(n.subject);if(typeof a>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(B=a.dependencies.get(n.requested.identHash))!=null?B:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(D=>{let L=e.storedPackages.get(D);if(typeof L>"u")throw new Error("Assertion failed: Expected the package to be registered");let H=P.devirtualizeLocator(L),j=e.storedPackages.get(H.locatorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the package to be registered");let $=j.peerDependencies.get(n.requested.identHash);if(typeof $>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:L,peerDependency:$}});if(g!==null){let D=f.every(({peerDependency:L})=>vt.satisfiesWithPrereleases(g.version,L.range));o.reportInfo(0,`${P.prettyLocator(i,a)} provides ${P.prettyLocator(i,g)} with version ${P.prettyReference(i,(v=g.version)!=null?v:"")}, which ${D?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(0,`${P.prettyLocator(i,a)} doesn't provide ${P.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ee.mark(i),p=[];for(let{pkg:D,peerDependency:L}of Ie.sortMap(f,H=>P.stringifyLocator(H.pkg))){let j=(g!==null?vt.satisfiesWithPrereleases(g.version,L.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:P.stringifyLocator(D),prettyLocator:P.prettyLocator(i,D),prettyRange:P.prettyRange(i,L.range),mark:j})}let C=Math.max(...p.map(({stringifiedLocator:D})=>D.length)),y=Math.max(...p.map(({prettyRange:D})=>D.length));for(let{stringifiedLocator:D,prettyLocator:L,prettyRange:H,mark:j}of Ie.sortMap(p,({stringifiedLocator:$})=>$))o.reportInfo(null,`${L.padEnd(C+(L.length-D.length)," ")} \u2192 ${H.padEnd(y," ")} ${j}`);p.length>1&&(o.reportSeparator(),o.reportInfo(0,`Note: these requirements start with ${P.prettyLocator(e.configuration,l)}`))})).exitCode()}ns();var woe=Pe(Xr()),au=class extends De{constructor(){super(...arguments);this.onlyIfNeeded=z.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=z.String()}async execute(){var o;let t=await ye.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&t.get("yarnPath")){let a=t.sources.get("yarnPath");if(!a)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let l=(o=t.projectCwd)!=null?o:t.startingCwd;if(x.contains(l,a))return 0}let i=()=>{if(typeof Lr>"u")throw new be("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},n;if(this.version==="self")n=i();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")n=`https://repo.yarnpkg.com/${await Tm(t,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")n=`https://repo.yarnpkg.com/${await Tm(t,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")n="https://classic.yarnpkg.com/latest.js";else if(this.version.match(/^https?:/))n=this.version;else if(this.version.match(/^\.{0,2}[\\/]/)||K.isAbsolute(this.version))n=`file://${K.resolve(this.version)}`;else if(vt.satisfiesWithPrereleases(this.version,">=2.0.0"))n=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(vt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))n=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(vt.validRange(this.version))n=`https://repo.yarnpkg.com/${await CWe(t,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new be(`Invalid version descriptor "${this.version}"`);return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{let l="file://",c;n.startsWith(l)?(a.reportInfo(0,`Downloading ${ee.pretty(t,n,vi.URL)}`),c=await M.readFilePromise(K.toPortablePath(n.slice(l.length)))):(a.reportInfo(0,`Retrieving ${ee.pretty(t,n,vi.PATH)}`),c=await Vt.get(n,{configuration:t})),await bT(t,null,c,{report:a})})).exitCode()}};au.paths=[["set","version"]],au.usage=ve.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});async function CWe(r,e){let i=(await Vt.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0})).tags.filter(n=>vt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new be(`No matching release found for range ${ee.pretty(r,e,ee.Type.RANGE)}.`);return i[0]}async function Tm(r,e){let t=await Vt.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0});if(!t.latest[e])throw new be(`Tag ${ee.pretty(r,e,ee.Type.RANGE)} not found`);return t.latest[e]}async function bT(r,e,t,{report:i}){var h;e===null&&await M.mktempPromise(async p=>{let C=x.join(p,"yarn.cjs");await M.writeFilePromise(C,t);let{stdout:y}=await Cr.execvp(process.execPath,[K.fromPortablePath(C),"--version"],{cwd:p,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(e=y.trim(),!woe.default.valid(e))throw new Error(`Invalid semver version. ${ee.pretty(r,"yarn --version",ee.Type.CODE)} returned: -${e}`)});let n=(h=r.projectCwd)!=null?h:r.startingCwd,s=x.resolve(n,".yarn/releases"),o=x.resolve(s,`yarn-${e}.cjs`),a=x.relative(r.startingCwd,o),l=x.relative(n,o);i.reportInfo(0,`Saving the new release in ${ee.pretty(r,a,"magenta")}`),await M.removePromise(x.dirname(o)),await M.mkdirPromise(x.dirname(o),{recursive:!0}),await M.writeFilePromise(o,t,{mode:493}),await ye.updateConfiguration(n,{yarnPath:l});let c=await ot.tryFind(n)||new ot;c.packageManager=`yarn@${e&&Ie.isTaggedYarnVersion(e)?e:await Tm(r,"stable")}`;let u={};c.exportTo(u);let g=x.join(n,ot.fileName),f=`${JSON.stringify(u,null,c.indent)} -`;await M.changeFilePromise(g,f,{automaticNewlines:!0})}function Boe(r){return Ct[QI(r)]}var mWe=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function EWe(r){let t=`https://repo.yarnpkg.com/${Ie.isTaggedYarnVersion(Lr)?Lr:await Tm(r,"canary")}/packages/gatsby/content/advanced/error-codes.md`,i=await Vt.get(t,{configuration:r});return new Map(Array.from(i.toString().matchAll(mWe),({groups:n})=>{if(!n)throw new Error("Assertion failed: Expected the match to have been successful");let s=Boe(n.code);if(n.name!==s)throw new Error(`Assertion failed: Invalid error code data: Expected "${n.name}" to be named "${s}"`);return[n.code,n.details]}))}var Au=class extends De{constructor(){super(...arguments);this.code=z.String({required:!1,validator:zp(Wp(),[Vp(/^YN[0-9]{4}$/)])});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let i=Boe(this.code),n=ee.pretty(t,i,ee.Type.CODE),s=this.cli.format().header(`${this.code} - ${n}`),a=(await EWe(t)).get(this.code),l=typeof a<"u"?ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.MARKDOWN,{text:a,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. + `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function B8e(r,e,t){let{configuration:i}=e,n=e.peerRequirements.get(r);if(typeof n>"u")throw new Error(`No peerDependency requirements found for hash: "${r}"`);return(await Ge.start({configuration:i,stdout:t.stdout,includeFooter:!1},async o=>{var B,v;let a=e.storedPackages.get(n.subject);if(typeof a>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(B=a.dependencies.get(n.requested.identHash))!=null?B:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(D=>{let L=e.storedPackages.get(D);if(typeof L>"u")throw new Error("Assertion failed: Expected the package to be registered");let H=P.devirtualizeLocator(L),j=e.storedPackages.get(H.locatorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the package to be registered");let $=j.peerDependencies.get(n.requested.identHash);if(typeof $>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:L,peerDependency:$}});if(g!==null){let D=f.every(({peerDependency:L})=>vt.satisfiesWithPrereleases(g.version,L.range));o.reportInfo(0,`${P.prettyLocator(i,a)} provides ${P.prettyLocator(i,g)} with version ${P.prettyReference(i,(v=g.version)!=null?v:"")}, which ${D?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(0,`${P.prettyLocator(i,a)} doesn't provide ${P.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ee.mark(i),p=[];for(let{pkg:D,peerDependency:L}of Ie.sortMap(f,H=>P.stringifyLocator(H.pkg))){let j=(g!==null?vt.satisfiesWithPrereleases(g.version,L.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:P.stringifyLocator(D),prettyLocator:P.prettyLocator(i,D),prettyRange:P.prettyRange(i,L.range),mark:j})}let C=Math.max(...p.map(({stringifiedLocator:D})=>D.length)),y=Math.max(...p.map(({prettyRange:D})=>D.length));for(let{stringifiedLocator:D,prettyLocator:L,prettyRange:H,mark:j}of Ie.sortMap(p,({stringifiedLocator:$})=>$))o.reportInfo(null,`${L.padEnd(C+(L.length-D.length)," ")} \u2192 ${H.padEnd(y," ")} ${j}`);p.length>1&&(o.reportSeparator(),o.reportInfo(0,`Note: these requirements start with ${P.prettyLocator(e.configuration,l)}`))})).exitCode()}ls();var lae=Pe(Xr()),mu=class extends De{constructor(){super(...arguments);this.onlyIfNeeded=z.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=z.String()}async execute(){var o;let t=await ye.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&t.get("yarnPath")){let a=t.sources.get("yarnPath");if(!a)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let l=(o=t.projectCwd)!=null?o:t.startingCwd;if(x.contains(l,a))return 0}let i=()=>{if(typeof Lr>"u")throw new be("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},n;if(this.version==="self")n=i();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")n=`https://repo.yarnpkg.com/${await Jm(t,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")n=`https://repo.yarnpkg.com/${await Jm(t,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")n="https://classic.yarnpkg.com/latest.js";else if(this.version.match(/^https?:/))n=this.version;else if(this.version.match(/^\.{0,2}[\\/]/)||U.isAbsolute(this.version))n=`file://${U.resolve(this.version)}`;else if(vt.satisfiesWithPrereleases(this.version,">=2.0.0"))n=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(vt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))n=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(vt.validRange(this.version))n=`https://repo.yarnpkg.com/${await Q8e(t,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new be(`Invalid version descriptor "${this.version}"`);return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{let l="file://",c;n.startsWith(l)?(a.reportInfo(0,`Downloading ${ee.pretty(t,n,xi.URL)}`),c=await M.readFilePromise(U.toPortablePath(n.slice(l.length)))):(a.reportInfo(0,`Retrieving ${ee.pretty(t,n,xi.PATH)}`),c=await Xt.get(n,{configuration:t})),await _T(t,null,c,{report:a})})).exitCode()}};mu.paths=[["set","version"]],mu.usage=ve.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});async function Q8e(r,e){let i=(await Xt.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0})).tags.filter(n=>vt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new be(`No matching release found for range ${ee.pretty(r,e,ee.Type.RANGE)}.`);return i[0]}async function Jm(r,e){let t=await Xt.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0});if(!t.latest[e])throw new be(`Tag ${ee.pretty(r,e,ee.Type.RANGE)} not found`);return t.latest[e]}async function _T(r,e,t,{report:i}){var h;e===null&&await M.mktempPromise(async p=>{let C=x.join(p,"yarn.cjs");await M.writeFilePromise(C,t);let{stdout:y}=await Cr.execvp(process.execPath,[U.fromPortablePath(C),"--version"],{cwd:p,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(e=y.trim(),!lae.default.valid(e))throw new Error(`Invalid semver version. ${ee.pretty(r,"yarn --version",ee.Type.CODE)} returned: +${e}`)});let n=(h=r.projectCwd)!=null?h:r.startingCwd,s=x.resolve(n,".yarn/releases"),o=x.resolve(s,`yarn-${e}.cjs`),a=x.relative(r.startingCwd,o),l=x.relative(n,o);i.reportInfo(0,`Saving the new release in ${ee.pretty(r,a,"magenta")}`),await M.removePromise(x.dirname(o)),await M.mkdirPromise(x.dirname(o),{recursive:!0}),await M.writeFilePromise(o,t,{mode:493}),await ye.updateConfiguration(n,{yarnPath:l});let c=await ot.tryFind(n)||new ot;c.packageManager=`yarn@${e&&Ie.isTaggedYarnVersion(e)?e:await Jm(r,"stable")}`;let u={};c.exportTo(u);let g=x.join(n,ot.fileName),f=`${JSON.stringify(u,null,c.indent)} +`;await M.changeFilePromise(g,f,{automaticNewlines:!0})}function cae(r){return Ct[TI(r)]}var b8e=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function S8e(r){let t=`https://repo.yarnpkg.com/${Ie.isTaggedYarnVersion(Lr)?Lr:await Jm(r,"canary")}/packages/gatsby/content/advanced/error-codes.md`,i=await Xt.get(t,{configuration:r});return new Map(Array.from(i.toString().matchAll(b8e),({groups:n})=>{if(!n)throw new Error("Assertion failed: Expected the match to have been successful");let s=cae(n.code);if(n.name!==s)throw new Error(`Assertion failed: Invalid error code data: Expected "${n.name}" to be named "${s}"`);return[n.code,n.details]}))}var Eu=class extends De{constructor(){super(...arguments);this.code=z.String({required:!1,validator:od(sd(),[ad(/^YN[0-9]{4}$/)])});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let i=cae(this.code),n=ee.pretty(t,i,ee.Type.CODE),s=this.cli.format().header(`${this.code} - ${n}`),a=(await S8e(t)).get(this.code),l=typeof a<"u"?ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.MARKDOWN,{text:a,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. You can help us by editing this page on GitHub \u{1F642}: ${ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} @@ -492,11 +492,11 @@ ${ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.URL,"https://github.com/yarnpkg/b `):this.context.stdout.write(`${s} ${l} -`)}else{let i={children:Ie.mapAndFilter(Object.entries(Ct),([n,s])=>Number.isNaN(Number(n))?Ie.mapAndFilter.skip:{label:QA(Number(n)),value:ee.tuple(ee.Type.CODE,s)})};Vn.emitTree(i,{configuration:t,stdout:this.context.stdout,json:this.json})}}};Au.paths=[["explain"]],Au.usage=ve.Usage({description:"explain an error code",details:` +`)}else{let i={children:Ie.mapAndFilter(Object.entries(Ct),([n,s])=>Number.isNaN(Number(n))?Ie.mapAndFilter.skip:{label:FA(Number(n)),value:ee.tuple(ee.Type.CODE,s)})};$n.emitTree(i,{configuration:t,stdout:this.context.stdout,json:this.json})}}};Eu.paths=[["explain"]],Eu.usage=ve.Usage({description:"explain an error code",details:` When the code argument is specified, this command prints its name and its details. When used without arguments, this command lists all error codes and their names. - `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});var Qoe=Pe(yn()),lu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=z.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=z.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=z.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=z.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=z.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=z.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n&&!this.all)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let o=new Set(this.extra);this.cache&&o.add("cache"),this.dependents&&o.add("dependents"),this.manifest&&o.add("manifest");let a=(L,{recursive:H})=>{let j=L.anchoredLocator.locatorHash,$=new Map,V=[j];for(;V.length>0;){let W=V.shift();if($.has(W))continue;let Z=i.storedPackages.get(W);if(typeof Z>"u")throw new Error("Assertion failed: Expected the package to be registered");if($.set(W,Z),P.isVirtualLocator(Z)&&V.push(P.devirtualizeLocator(Z).locatorHash),!(!H&&W!==j))for(let A of Z.dependencies.values()){let ae=i.storedResolutions.get(A.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");V.push(ae)}}return $.values()},l=({recursive:L})=>{let H=new Map;for(let j of i.workspaces)for(let $ of a(j,{recursive:L}))H.set($.locatorHash,$);return H.values()},c=({all:L,recursive:H})=>L&&H?i.storedPackages.values():L?l({recursive:H}):a(n,{recursive:H}),u=({all:L,recursive:H})=>{let j=c({all:L,recursive:H}),$=this.patterns.map(Z=>{let A=P.parseLocator(Z),ae=Qoe.default.makeRe(P.stringifyIdent(A)),ge=P.isVirtualLocator(A),re=ge?P.devirtualizeLocator(A):A;return O=>{let F=P.stringifyIdent(O);if(!ae.test(F))return!1;if(A.reference==="unknown")return!0;let ue=P.isVirtualLocator(O),he=ue?P.devirtualizeLocator(O):O;return!(ge&&ue&&A.reference!==O.reference||re.reference!==he.reference)}}),V=Ie.sortMap([...j],Z=>P.stringifyLocator(Z));return{selection:V.filter(Z=>$.length===0||$.some(A=>A(Z))),sortedLookup:V}},{selection:g,sortedLookup:f}=u({all:this.all,recursive:this.recursive});if(g.length===0)throw new be("No package matched your request");let h=new Map;if(this.dependents)for(let L of f)for(let H of L.dependencies.values()){let j=i.storedResolutions.get(H.descriptorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ie.getArrayWithDefault(h,j).push(L)}let p=new Map;for(let L of f){if(!P.isVirtualLocator(L))continue;let H=P.devirtualizeLocator(L);Ie.getArrayWithDefault(p,H.locatorHash).push(L)}let C={},y={children:C},B=t.makeFetcher(),v={project:i,fetcher:B,cache:s,checksums:i.storedChecksums,report:new ti,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},D=[async(L,H,j)=>{var W,Z;if(!H.has("manifest"))return;let $=await B.fetch(L,v),V;try{V=await ot.find($.prefixPath,{baseFs:$.packageFs})}finally{(W=$.releaseFs)==null||W.call($)}j("Manifest",{License:ee.tuple(ee.Type.NO_HINT,V.license),Homepage:ee.tuple(ee.Type.URL,(Z=V.raw.homepage)!=null?Z:null)})},async(L,H,j)=>{var ae;if(!H.has("cache"))return;let $={mockedPackages:i.disabledLocators,unstablePackages:i.conditionalLocators},V=(ae=i.storedChecksums.get(L.locatorHash))!=null?ae:null,W=s.getLocatorPath(L,V,$),Z;if(W!==null)try{Z=M.statSync(W)}catch{}let A=typeof Z<"u"?[Z.size,ee.Type.SIZE]:void 0;j("Cache",{Checksum:ee.tuple(ee.Type.NO_HINT,V),Path:ee.tuple(ee.Type.PATH,W),Size:A})}];for(let L of g){let H=P.isVirtualLocator(L);if(!this.virtuals&&H)continue;let j={},$={value:[L,ee.Type.LOCATOR],children:j};if(C[P.stringifyLocator(L)]=$,this.nameOnly){delete $.children;continue}let V=p.get(L.locatorHash);typeof V<"u"&&(j.Instances={label:"Instances",value:ee.tuple(ee.Type.NUMBER,V.length)}),j.Version={label:"Version",value:ee.tuple(ee.Type.NO_HINT,L.version)};let W=(A,ae)=>{let ge={};if(j[A]=ge,Array.isArray(ae))ge.children=ae.map(re=>({value:re}));else{let re={};ge.children=re;for(let[O,F]of Object.entries(ae))typeof F>"u"||(re[O]={label:O,value:F})}};if(!H){for(let A of D)await A(L,o,W);await t.triggerHook(A=>A.fetchPackageInfo,L,o,W)}L.bin.size>0&&!H&&W("Exported Binaries",[...L.bin.keys()].map(A=>ee.tuple(ee.Type.PATH,A)));let Z=h.get(L.locatorHash);typeof Z<"u"&&Z.length>0&&W("Dependents",Z.map(A=>ee.tuple(ee.Type.LOCATOR,A))),L.dependencies.size>0&&!H&&W("Dependencies",[...L.dependencies.values()].map(A=>{var re;let ae=i.storedResolutions.get(A.descriptorHash),ge=typeof ae<"u"&&(re=i.storedPackages.get(ae))!=null?re:null;return ee.tuple(ee.Type.RESOLUTION,{descriptor:A,locator:ge})})),L.peerDependencies.size>0&&H&&W("Peer dependencies",[...L.peerDependencies.values()].map(A=>{var O,F;let ae=L.dependencies.get(A.identHash),ge=typeof ae<"u"&&(O=i.storedResolutions.get(ae.descriptorHash))!=null?O:null,re=ge!==null&&(F=i.storedPackages.get(ge))!=null?F:null;return ee.tuple(ee.Type.RESOLUTION,{descriptor:A,locator:re})}))}Vn.emitTree(y,{configuration:t,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};lu.paths=[["info"]],lu.usage=ve.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var hQ=Pe(Vl());ns();var cu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=z.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=z.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=z.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=z.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Wi(Xn)});this.cacheFolder=z.String("--cache-folder",{hidden:!0});this.frozenLockfile=z.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=z.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=z.Boolean("--non-interactive",{hidden:!0});this.preferOffline=z.Boolean("--prefer-offline",{hidden:!0});this.production=z.Boolean("--production",{hidden:!0});this.registry=z.String("--registry",{hidden:!0});this.silent=z.Boolean("--silent",{hidden:!0});this.networkTimeout=z.String("--network-timeout",{hidden:!0})}async execute(){var f;let t=await ye.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&t.useWithSource("",{enableInlineBuilds:this.inlineBuilds},t.startingCwd,{overwrite:!0});let i=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,n=async(h,{error:p})=>{let C=await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async y=>{p?y.reportError(50,h):y.reportWarning(50,h)});return C.hasErrors()?C.exitCode():null};if(typeof this.ignoreEngines<"u"){let h=await n("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!hQ.default.VERCEL});if(h!==null)return h}if(typeof this.registry<"u"){let h=await n("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(h!==null)return h}if(typeof this.preferOffline<"u"){let h=await n("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!hQ.default.VERCEL});if(h!==null)return h}if(typeof this.production<"u"){let h=await n("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(h!==null)return h}if(typeof this.nonInteractive<"u"){let h=await n("The --non-interactive option is deprecated",{error:!i});if(h!==null)return h}if(typeof this.frozenLockfile<"u"&&(await n("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder<"u"){let h=await n("The cache-folder option has been deprecated; use rc settings instead",{error:!hQ.default.NETLIFY});if(h!==null)return h}let s=this.mode==="update-lockfile";if(s&&(this.immutable||this.immutableCache))throw new be(`${ee.pretty(t,"--immutable",ee.Type.CODE)} and ${ee.pretty(t,"--immutable-cache",ee.Type.CODE)} cannot be used with ${ee.pretty(t,"--mode=update-lockfile",ee.Type.CODE)}`);let o=((f=this.immutable)!=null?f:t.get("enableImmutableInstalls"))&&!s,a=this.immutableCache&&!s;if(t.projectCwd!==null){let h=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async p=>{await BWe(t,o)&&(p.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),p.reportSeparator())});if(h.hasErrors())return h.exitCode()}if(t.projectCwd!==null&&typeof t.sources.get("nodeLinker")>"u"){let h=t.projectCwd,p;try{p=await M.readFilePromise(x.join(h,xt.lockfile),"utf8")}catch{}if(p!=null&&p.includes("yarn lockfile v1")){let C=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async y=>{y.reportInfo(70,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),y.reportSeparator(),t.use("",{nodeLinker:"node-modules"},h,{overwrite:!0}),await ye.updateConfiguration(h,{nodeLinker:"node-modules"})});if(C.hasErrors())return C.exitCode()}}if(t.projectCwd!==null){let h=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async p=>{var C;(C=ye.telemetry)!=null&&C.isNew&&(p.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),p.reportInfo(65,`Run ${ee.pretty(t,"yarn config set --home enableTelemetry 0",ee.Type.CODE)} to disable`),p.reportSeparator())});if(h.hasErrors())return h.exitCode()}let{project:l,workspace:c}=await je.find(t,this.context.cwd),u=await Rt.find(t,{immutable:a,check:this.checkCache});if(!c)throw new ct(l.cwd,this.context.cwd);return await l.restoreInstallState({restoreResolutions:!1}),(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!0},async h=>{await l.install({cache:u,report:h,immutable:o,mode:this.mode})})).exitCode()}};cu.paths=[["install"],ve.Default],cu.usage=ve.Usage({description:"install the project dependencies",details:` + `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});var uae=Pe(wn()),Iu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=z.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=z.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=z.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=z.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=z.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=z.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n&&!this.all)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let o=new Set(this.extra);this.cache&&o.add("cache"),this.dependents&&o.add("dependents"),this.manifest&&o.add("manifest");let a=(L,{recursive:H})=>{let j=L.anchoredLocator.locatorHash,$=new Map,V=[j];for(;V.length>0;){let W=V.shift();if($.has(W))continue;let _=i.storedPackages.get(W);if(typeof _>"u")throw new Error("Assertion failed: Expected the package to be registered");if($.set(W,_),P.isVirtualLocator(_)&&V.push(P.devirtualizeLocator(_).locatorHash),!(!H&&W!==j))for(let A of _.dependencies.values()){let Ae=i.storedResolutions.get(A.descriptorHash);if(typeof Ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");V.push(Ae)}}return $.values()},l=({recursive:L})=>{let H=new Map;for(let j of i.workspaces)for(let $ of a(j,{recursive:L}))H.set($.locatorHash,$);return H.values()},c=({all:L,recursive:H})=>L&&H?i.storedPackages.values():L?l({recursive:H}):a(n,{recursive:H}),u=({all:L,recursive:H})=>{let j=c({all:L,recursive:H}),$=this.patterns.map(_=>{let A=P.parseLocator(_),Ae=uae.default.makeRe(P.stringifyIdent(A)),ge=P.isVirtualLocator(A),re=ge?P.devirtualizeLocator(A):A;return O=>{let F=P.stringifyIdent(O);if(!Ae.test(F))return!1;if(A.reference==="unknown")return!0;let ue=P.isVirtualLocator(O),pe=ue?P.devirtualizeLocator(O):O;return!(ge&&ue&&A.reference!==O.reference||re.reference!==pe.reference)}}),V=Ie.sortMap([...j],_=>P.stringifyLocator(_));return{selection:V.filter(_=>$.length===0||$.some(A=>A(_))),sortedLookup:V}},{selection:g,sortedLookup:f}=u({all:this.all,recursive:this.recursive});if(g.length===0)throw new be("No package matched your request");let h=new Map;if(this.dependents)for(let L of f)for(let H of L.dependencies.values()){let j=i.storedResolutions.get(H.descriptorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ie.getArrayWithDefault(h,j).push(L)}let p=new Map;for(let L of f){if(!P.isVirtualLocator(L))continue;let H=P.devirtualizeLocator(L);Ie.getArrayWithDefault(p,H.locatorHash).push(L)}let C={},y={children:C},B=t.makeFetcher(),v={project:i,fetcher:B,cache:s,checksums:i.storedChecksums,report:new ti,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},D=[async(L,H,j)=>{var W,_;if(!H.has("manifest"))return;let $=await B.fetch(L,v),V;try{V=await ot.find($.prefixPath,{baseFs:$.packageFs})}finally{(W=$.releaseFs)==null||W.call($)}j("Manifest",{License:ee.tuple(ee.Type.NO_HINT,V.license),Homepage:ee.tuple(ee.Type.URL,(_=V.raw.homepage)!=null?_:null)})},async(L,H,j)=>{var Ae;if(!H.has("cache"))return;let $={mockedPackages:i.disabledLocators,unstablePackages:i.conditionalLocators},V=(Ae=i.storedChecksums.get(L.locatorHash))!=null?Ae:null,W=s.getLocatorPath(L,V,$),_;if(W!==null)try{_=M.statSync(W)}catch{}let A=typeof _<"u"?[_.size,ee.Type.SIZE]:void 0;j("Cache",{Checksum:ee.tuple(ee.Type.NO_HINT,V),Path:ee.tuple(ee.Type.PATH,W),Size:A})}];for(let L of g){let H=P.isVirtualLocator(L);if(!this.virtuals&&H)continue;let j={},$={value:[L,ee.Type.LOCATOR],children:j};if(C[P.stringifyLocator(L)]=$,this.nameOnly){delete $.children;continue}let V=p.get(L.locatorHash);typeof V<"u"&&(j.Instances={label:"Instances",value:ee.tuple(ee.Type.NUMBER,V.length)}),j.Version={label:"Version",value:ee.tuple(ee.Type.NO_HINT,L.version)};let W=(A,Ae)=>{let ge={};if(j[A]=ge,Array.isArray(Ae))ge.children=Ae.map(re=>({value:re}));else{let re={};ge.children=re;for(let[O,F]of Object.entries(Ae))typeof F>"u"||(re[O]={label:O,value:F})}};if(!H){for(let A of D)await A(L,o,W);await t.triggerHook(A=>A.fetchPackageInfo,L,o,W)}L.bin.size>0&&!H&&W("Exported Binaries",[...L.bin.keys()].map(A=>ee.tuple(ee.Type.PATH,A)));let _=h.get(L.locatorHash);typeof _<"u"&&_.length>0&&W("Dependents",_.map(A=>ee.tuple(ee.Type.LOCATOR,A))),L.dependencies.size>0&&!H&&W("Dependencies",[...L.dependencies.values()].map(A=>{var re;let Ae=i.storedResolutions.get(A.descriptorHash),ge=typeof Ae<"u"&&(re=i.storedPackages.get(Ae))!=null?re:null;return ee.tuple(ee.Type.RESOLUTION,{descriptor:A,locator:ge})})),L.peerDependencies.size>0&&H&&W("Peer dependencies",[...L.peerDependencies.values()].map(A=>{var O,F;let Ae=L.dependencies.get(A.identHash),ge=typeof Ae<"u"&&(O=i.storedResolutions.get(Ae.descriptorHash))!=null?O:null,re=ge!==null&&(F=i.storedPackages.get(ge))!=null?F:null;return ee.tuple(ee.Type.RESOLUTION,{descriptor:A,locator:re})}))}$n.emitTree(y,{configuration:t,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Iu.paths=[["info"]],Iu.usage=ve.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var LQ=Pe(Ac());ls();var yu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=z.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=z.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=z.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=z.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Xi(es)});this.cacheFolder=z.String("--cache-folder",{hidden:!0});this.frozenLockfile=z.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=z.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=z.Boolean("--non-interactive",{hidden:!0});this.preferOffline=z.Boolean("--prefer-offline",{hidden:!0});this.production=z.Boolean("--production",{hidden:!0});this.registry=z.String("--registry",{hidden:!0});this.silent=z.Boolean("--silent",{hidden:!0});this.networkTimeout=z.String("--network-timeout",{hidden:!0})}async execute(){var f;let t=await ye.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&t.useWithSource("",{enableInlineBuilds:this.inlineBuilds},t.startingCwd,{overwrite:!0});let i=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,n=async(h,{error:p})=>{let C=await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async y=>{p?y.reportError(50,h):y.reportWarning(50,h)});return C.hasErrors()?C.exitCode():null};if(typeof this.ignoreEngines<"u"){let h=await n("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!LQ.default.VERCEL});if(h!==null)return h}if(typeof this.registry<"u"){let h=await n("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(h!==null)return h}if(typeof this.preferOffline<"u"){let h=await n("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!LQ.default.VERCEL});if(h!==null)return h}if(typeof this.production<"u"){let h=await n("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(h!==null)return h}if(typeof this.nonInteractive<"u"){let h=await n("The --non-interactive option is deprecated",{error:!i});if(h!==null)return h}if(typeof this.frozenLockfile<"u"&&(await n("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder<"u"){let h=await n("The cache-folder option has been deprecated; use rc settings instead",{error:!LQ.default.NETLIFY});if(h!==null)return h}let s=this.mode==="update-lockfile";if(s&&(this.immutable||this.immutableCache))throw new be(`${ee.pretty(t,"--immutable",ee.Type.CODE)} and ${ee.pretty(t,"--immutable-cache",ee.Type.CODE)} cannot be used with ${ee.pretty(t,"--mode=update-lockfile",ee.Type.CODE)}`);let o=((f=this.immutable)!=null?f:t.get("enableImmutableInstalls"))&&!s,a=this.immutableCache&&!s;if(t.projectCwd!==null){let h=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async p=>{await D8e(t,o)&&(p.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),p.reportSeparator())});if(h.hasErrors())return h.exitCode()}if(t.projectCwd!==null&&typeof t.sources.get("nodeLinker")>"u"){let h=t.projectCwd,p;try{p=await M.readFilePromise(x.join(h,xt.lockfile),"utf8")}catch{}if(p!=null&&p.includes("yarn lockfile v1")){let C=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async y=>{y.reportInfo(70,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),y.reportSeparator(),t.use("",{nodeLinker:"node-modules"},h,{overwrite:!0}),await ye.updateConfiguration(h,{nodeLinker:"node-modules"})});if(C.hasErrors())return C.exitCode()}}if(t.projectCwd!==null){let h=await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeFooter:!1},async p=>{var C;(C=ye.telemetry)!=null&&C.isNew&&(p.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),p.reportInfo(65,`Run ${ee.pretty(t,"yarn config set --home enableTelemetry 0",ee.Type.CODE)} to disable`),p.reportSeparator())});if(h.hasErrors())return h.exitCode()}let{project:l,workspace:c}=await je.find(t,this.context.cwd),u=await Rt.find(t,{immutable:a,check:this.checkCache});if(!c)throw new ct(l.cwd,this.context.cwd);return await l.restoreInstallState({restoreResolutions:!1}),(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!0},async h=>{await l.install({cache:u,report:h,immutable:o,mode:this.mode})})).exitCode()}};yu.paths=[["install"],ve.Default],yu.usage=ve.Usage({description:"install the project dependencies",details:` This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). @@ -522,18 +522,18 @@ ${l} - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var IWe="|||||||",yWe=">>>>>>>",wWe="=======",boe="<<<<<<<";async function BWe(r,e){if(!r.projectCwd)return!1;let t=x.join(r.projectCwd,r.get("lockfileFilename"));if(!await M.existsPromise(t))return!1;let i=await M.readFilePromise(t,"utf8");if(!i.includes(boe))return!1;if(e)throw new at(47,"Cannot autofix a lockfile when running an immutable install");let[n,s]=QWe(i),o,a;try{o=Ii(n),a=Ii(s)}catch{throw new at(46,"The individual variants of the lockfile failed to parse")}let l={...o,...a};for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await M.changeFilePromise(t,Ca(l),{automaticNewlines:!0}),!0}function QWe(r){let e=[[],[]],t=r.split(/\r?\n/g),i=!1;for(;t.length>0;){let n=t.shift();if(typeof n>"u")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(boe)){for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s===wWe){i=!1;break}else if(i||s.startsWith(IWe)){i=!0;continue}else e[0].push(s)}for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(yWe))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` + `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var v8e="|||||||",x8e=">>>>>>>",P8e="=======",gae="<<<<<<<";async function D8e(r,e){if(!r.projectCwd)return!1;let t=x.join(r.projectCwd,r.get("lockfileFilename"));if(!await M.existsPromise(t))return!1;let i=await M.readFilePromise(t,"utf8");if(!i.includes(gae))return!1;if(e)throw new at(47,"Cannot autofix a lockfile when running an immutable install");let[n,s]=k8e(i),o,a;try{o=yi(n),a=yi(s)}catch{throw new at(46,"The individual variants of the lockfile failed to parse")}let l={...o,...a};for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await M.changeFilePromise(t,Ba(l),{automaticNewlines:!0}),!0}function k8e(r){let e=[[],[]],t=r.split(/\r?\n/g),i=!1;for(;t.length>0;){let n=t.shift();if(typeof n>"u")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(gae)){for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s===P8e){i=!1;break}else if(i||s.startsWith(v8e)){i=!0;continue}else e[0].push(s)}for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(x8e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` `),e[1].join(` -`)]}var uu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=z.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=z.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=x.resolve(this.context.cwd,K.toPortablePath(this.destination)),a=await ye.find(o,this.context.plugins,{useRc:!1,strict:!1}),{project:l,workspace:c}=await je.find(a,o);if(i.cwd===l.cwd)throw new be("Invalid destination; Can't link the project to itself");if(!c)throw new ct(l.cwd,o);let u=i.topLevelWorkspace,g=[];if(this.all){for(let h of l.workspaces)h.manifest.name&&(!h.manifest.private||this.private)&&g.push(h);if(g.length===0)throw new be("No workspace found to be linked in the target project")}else{if(!c.manifest.name)throw new be("The target workspace doesn't have a name and thus cannot be linked");if(c.manifest.private&&!this.private)throw new be("The target workspace is marked private - use the --private flag to link it anyway");g.push(c)}for(let h of g){let p=P.stringifyIdent(h.locator),C=this.relative?x.relative(i.cwd,h.cwd):h.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:p}},reference:`portal:${C}`})}return(await Ge.start({configuration:t,stdout:this.context.stdout},async h=>{await i.install({cache:s,report:h})})).exitCode()}};uu.paths=[["link"]],uu.usage=ve.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var gu=class extends De{constructor(){super(...arguments);this.args=z.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};gu.paths=[["node"]],gu.usage=ve.Usage({description:"run node with the hook already setup",details:` +`)]}var wu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=z.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=z.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=x.resolve(this.context.cwd,U.toPortablePath(this.destination)),a=await ye.find(o,this.context.plugins,{useRc:!1,strict:!1}),{project:l,workspace:c}=await je.find(a,o);if(i.cwd===l.cwd)throw new be("Invalid destination; Can't link the project to itself");if(!c)throw new ct(l.cwd,o);let u=i.topLevelWorkspace,g=[];if(this.all){for(let h of l.workspaces)h.manifest.name&&(!h.manifest.private||this.private)&&g.push(h);if(g.length===0)throw new be("No workspace found to be linked in the target project")}else{if(!c.manifest.name)throw new be("The target workspace doesn't have a name and thus cannot be linked");if(c.manifest.private&&!this.private)throw new be("The target workspace is marked private - use the --private flag to link it anyway");g.push(c)}for(let h of g){let p=P.stringifyIdent(h.locator),C=this.relative?x.relative(i.cwd,h.cwd):h.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:p}},reference:`portal:${C}`})}return(await Ge.start({configuration:t,stdout:this.context.stdout},async h=>{await i.install({cache:s,report:h})})).exitCode()}};wu.paths=[["link"]],wu.usage=ve.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var Bu=class extends De{constructor(){super(...arguments);this.args=z.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};Bu.paths=[["node"]],Bu.usage=ve.Usage({description:"run node with the hook already setup",details:` This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var koe=J("os");var Soe=J("os");var bWe="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function hu(r){let e=await Vt.get(bWe,{configuration:r});return Ii(e.toString())}var fu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{let s=await hu(t);for(let[o,{experimental:a,...l}]of Object.entries(s)){let c=o;a&&(c+=" [experimental]"),n.reportJson({name:o,experimental:a,...l}),n.reportInfo(null,c)}})).exitCode()}};fu.paths=[["plugin","list"]],fu.usage=ve.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var SWe=/^[0-9]+$/;function voe(r){return SWe.test(r)?`pull/${r}/head`:r}var vWe=({repository:r,branch:e},t)=>[["git","init",K.fromPortablePath(t)],["git","remote","add","origin",r],["git","fetch","origin","--depth=1",voe(e)],["git","reset","--hard","FETCH_HEAD"]],xWe=({branch:r})=>[["git","fetch","origin","--depth=1",voe(r),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],PWe=({plugins:r,noMinify:e},t)=>[["yarn","build:cli",...new Array().concat(...r.map(i=>["--plugin",x.resolve(t,i)])),...e?["--no-minify"]:[],"|"]],pu=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=z.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=z.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.installPath<"u"?x.resolve(this.context.cwd,K.toPortablePath(this.installPath)):x.resolve(K.toPortablePath((0,Soe.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async o=>{await ST(this,{configuration:t,report:o,target:n}),o.reportSeparator(),o.reportInfo(0,"Building a fresh bundle"),o.reportSeparator(),await Om(PWe(this,n),{configuration:t,context:this.context,target:n}),o.reportSeparator();let a=x.resolve(n,"packages/yarnpkg-cli/bundles/yarn.js"),l=await M.readFilePromise(a);await bT(t,"sources",l,{report:o}),this.skipPlugins||await DWe(this,{project:i,report:o,target:n})})).exitCode()}};pu.paths=[["set","version","from","sources"]],pu.usage=ve.Usage({description:"build Yarn from master",details:` + `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var mae=J("os");var fae=J("os");var R8e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function bu(r){let e=await Xt.get(R8e,{configuration:r});return yi(e.toString())}var Qu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{let s=await bu(t);for(let[o,{experimental:a,...l}]of Object.entries(s)){let c=o;a&&(c+=" [experimental]"),n.reportJson({name:o,experimental:a,...l}),n.reportInfo(null,c)}})).exitCode()}};Qu.paths=[["plugin","list"]],Qu.usage=ve.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var F8e=/^[0-9]+$/;function hae(r){return F8e.test(r)?`pull/${r}/head`:r}var N8e=({repository:r,branch:e},t)=>[["git","init",U.fromPortablePath(t)],["git","remote","add","origin",r],["git","fetch","origin","--depth=1",hae(e)],["git","reset","--hard","FETCH_HEAD"]],L8e=({branch:r})=>[["git","fetch","origin","--depth=1",hae(r),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],T8e=({plugins:r,noMinify:e},t)=>[["yarn","build:cli",...new Array().concat(...r.map(i=>["--plugin",x.resolve(t,i)])),...e?["--no-minify"]:[],"|"]],Su=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=z.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=z.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.installPath<"u"?x.resolve(this.context.cwd,U.toPortablePath(this.installPath)):x.resolve(U.toPortablePath((0,fae.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async o=>{await $T(this,{configuration:t,report:o,target:n}),o.reportSeparator(),o.reportInfo(0,"Building a fresh bundle"),o.reportSeparator(),await Wm(T8e(this,n),{configuration:t,context:this.context,target:n}),o.reportSeparator();let a=x.resolve(n,"packages/yarnpkg-cli/bundles/yarn.js"),l=await M.readFilePromise(a);await _T(t,"sources",l,{report:o}),this.skipPlugins||await O8e(this,{project:i,report:o,target:n})})).exitCode()}};Su.paths=[["set","version","from","sources"]],Su.usage=ve.Usage({description:"build Yarn from master",details:` This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});async function Om(r,{configuration:e,context:t,target:i}){for(let[n,...s]of r){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await Cr.pipevp(n,s,{cwd:i,stdin:t.stdin,stdout:t.stdout,stderr:t.stderr,strict:!0});else{t.stdout.write(`${ee.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await Cr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw t.stdout.write(a.stdout||a.stack),a}}}}async function ST(r,{configuration:e,report:t,target:i}){let n=!1;if(!r.force&&M.existsSync(x.join(i,".git"))){t.reportInfo(0,"Fetching the latest commits"),t.reportSeparator();try{await Om(xWe(r),{configuration:e,context:r.context,target:i}),n=!0}catch{t.reportSeparator(),t.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}n||(t.reportInfo(0,"Cloning the remote repository"),t.reportSeparator(),await M.removePromise(i),await M.mkdirPromise(i,{recursive:!0}),await Om(vWe(r,i),{configuration:e,context:r.context,target:i}))}async function DWe(r,{project:e,report:t,target:i}){let n=await hu(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await vT(o,r,{project:e,report:t,target:i})}var xoe=Pe(Xr()),Poe=J("url"),Doe=J("vm");var du=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,stdout:this.context.stdout},async n=>{let{project:s}=await je.find(t,this.context.cwd),o,a;if(this.name.match(/^\.{0,2}[\\/]/)||K.isAbsolute(this.name)){let l=x.resolve(this.context.cwd,K.toPortablePath(this.name));n.reportInfo(0,`Reading ${ee.pretty(t,l,ee.Type.PATH)}`),o=x.relative(s.cwd,l),a=await M.readFilePromise(l)}else{let l;if(this.name.match(/^https?:/)){try{new Poe.URL(this.name)}catch{throw new at(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}o=this.name,l=this.name}else{let c=P.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(c.reference!=="unknown"&&!xoe.default.valid(c.reference))throw new at(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let u=P.stringifyIdent(c),g=await hu(t);if(!Object.prototype.hasOwnProperty.call(g,u))throw new at(51,`Couldn't find a plugin named "${u}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);o=u,l=g[u].url,c.reference!=="unknown"?l=l.replace(/\/master\//,`/${u}/${c.reference}/`):Lr!==null&&(l=l.replace(/\/master\//,`/@yarnpkg/cli/${Lr}/`))}n.reportInfo(0,`Downloading ${ee.pretty(t,l,"green")}`),a=await Vt.get(l,{configuration:t})}await xT(o,a,{project:s,report:n})})).exitCode()}};du.paths=[["plugin","import"]],du.usage=ve.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + `,examples:[["Build Yarn from master","$0 set version from sources"]]});async function Wm(r,{configuration:e,context:t,target:i}){for(let[n,...s]of r){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await Cr.pipevp(n,s,{cwd:i,stdin:t.stdin,stdout:t.stdout,stderr:t.stderr,strict:!0});else{t.stdout.write(`${ee.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} +`);try{await Cr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw t.stdout.write(a.stdout||a.stack),a}}}}async function $T(r,{configuration:e,report:t,target:i}){let n=!1;if(!r.force&&M.existsSync(x.join(i,".git"))){t.reportInfo(0,"Fetching the latest commits"),t.reportSeparator();try{await Wm(L8e(r),{configuration:e,context:r.context,target:i}),n=!0}catch{t.reportSeparator(),t.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}n||(t.reportInfo(0,"Cloning the remote repository"),t.reportSeparator(),await M.removePromise(i),await M.mkdirPromise(i,{recursive:!0}),await Wm(N8e(r,i),{configuration:e,context:r.context,target:i}))}async function O8e(r,{project:e,report:t,target:i}){let n=await bu(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await eO(o,r,{project:e,report:t,target:i})}var pae=Pe(Xr()),dae=J("url"),Cae=J("vm");var vu=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,stdout:this.context.stdout},async n=>{let{project:s}=await je.find(t,this.context.cwd),o,a;if(this.name.match(/^\.{0,2}[\\/]/)||U.isAbsolute(this.name)){let l=x.resolve(this.context.cwd,U.toPortablePath(this.name));n.reportInfo(0,`Reading ${ee.pretty(t,l,ee.Type.PATH)}`),o=x.relative(s.cwd,l),a=await M.readFilePromise(l)}else{let l;if(this.name.match(/^https?:/)){try{new dae.URL(this.name)}catch{throw new at(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}o=this.name,l=this.name}else{let c=P.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(c.reference!=="unknown"&&!pae.default.valid(c.reference))throw new at(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let u=P.stringifyIdent(c),g=await bu(t);if(!Object.prototype.hasOwnProperty.call(g,u))throw new at(51,`Couldn't find a plugin named "${u}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);o=u,l=g[u].url,c.reference!=="unknown"?l=l.replace(/\/master\//,`/${u}/${c.reference}/`):Lr!==null&&(l=l.replace(/\/master\//,`/@yarnpkg/cli/${Lr}/`))}n.reportInfo(0,`Downloading ${ee.pretty(t,l,"green")}`),a=await Xt.get(l,{configuration:t})}await tO(o,a,{project:s,report:n})})).exitCode()}};vu.paths=[["plugin","import"]],vu.usage=ve.Usage({category:"Plugin-related commands",description:"download a plugin",details:` This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. Three types of plugin references are accepted: @@ -543,23 +543,23 @@ ${l} - Local plugins can be referenced by their path on the disk. Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function xT(r,e,{project:t,report:i}){let{configuration:n}=t,s={},o={exports:s};(0,Doe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=x.resolve(t.cwd,l);i.reportInfo(0,`Saving the new plugin in ${ee.pretty(n,l,"magenta")}`),await M.mkdirPromise(x.dirname(c),{recursive:!0}),await M.writeFilePromise(c,e);let u={path:l,spec:r};await ye.updateConfiguration(t.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let C=typeof p!="string"?p.path:p,y=x.resolve(t.cwd,K.toPortablePath(C)),{name:B}=Ie.dynamicRequire(y);B!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),{...g,plugins:f}})}var kWe=({pluginName:r,noMinify:e},t)=>[["yarn",`build:${r}`,...e?["--no-minify"]:[],"|"]],Cu=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=typeof this.installPath<"u"?x.resolve(this.context.cwd,K.toPortablePath(this.installPath)):x.resolve(K.toPortablePath((0,koe.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let{project:o}=await je.find(t,this.context.cwd),a=P.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),l=P.stringifyIdent(a),c=await hu(t);if(!Object.prototype.hasOwnProperty.call(c,l))throw new at(51,`Couldn't find a plugin named "${l}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let u=l;await ST(this,{configuration:t,report:s,target:i}),await vT(u,this,{project:o,report:s,target:i})})).exitCode()}};Cu.paths=[["plugin","import","from","sources"]],Cu.usage=ve.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function tO(r,e,{project:t,report:i}){let{configuration:n}=t,s={},o={exports:s};(0,Cae.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=x.resolve(t.cwd,l);i.reportInfo(0,`Saving the new plugin in ${ee.pretty(n,l,"magenta")}`),await M.mkdirPromise(x.dirname(c),{recursive:!0}),await M.writeFilePromise(c,e);let u={path:l,spec:r};await ye.updateConfiguration(t.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let C=typeof p!="string"?p.path:p,y=x.resolve(t.cwd,U.toPortablePath(C)),{name:B}=Ie.dynamicRequire(y);B!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),{...g,plugins:f}})}var M8e=({pluginName:r,noMinify:e},t)=>[["yarn",`build:${r}`,...e?["--no-minify"]:[],"|"]],xu=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=typeof this.installPath<"u"?x.resolve(this.context.cwd,U.toPortablePath(this.installPath)):x.resolve(U.toPortablePath((0,mae.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let{project:o}=await je.find(t,this.context.cwd),a=P.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),l=P.stringifyIdent(a),c=await bu(t);if(!Object.prototype.hasOwnProperty.call(c,l))throw new at(51,`Couldn't find a plugin named "${l}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let u=l;await $T(this,{configuration:t,report:s,target:i}),await eO(u,this,{project:o,report:s,target:i})})).exitCode()}};xu.paths=[["plugin","import","from","sources"]],xu.usage=ve.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function vT(r,{context:e,noMinify:t},{project:i,report:n,target:s}){let o=r.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(0,`Building a fresh ${o}`),n.reportSeparator(),await Om(kWe({pluginName:o,noMinify:t},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=x.resolve(s,`packages/${o}/bundles/${r}.js`),c=await M.readFilePromise(l);await xT(r,c,{project:i,report:n})}var mu=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let o=this.name,a=P.parseIdent(o);if(!t.plugins.has(o))throw new be(`${P.prettyIdent(t,a)} isn't referenced by the current configuration`);let l=`.yarn/plugins/${o}.cjs`,c=x.resolve(i.cwd,l);M.existsSync(c)&&(s.reportInfo(0,`Removing ${ee.pretty(t,l,ee.Type.PATH)}...`),await M.removePromise(c)),s.reportInfo(0,"Updating the configuration..."),await ye.updateConfiguration(i.cwd,u=>{if(!Array.isArray(u.plugins))return u;let g=u.plugins.filter(f=>f.path!==l);return u.plugins.length===g.length?u:{...u,plugins:g}})})).exitCode()}};mu.paths=[["plugin","remove"]],mu.usage=ve.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function eO(r,{context:e,noMinify:t},{project:i,report:n,target:s}){let o=r.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(0,`Building a fresh ${o}`),n.reportSeparator(),await Wm(M8e({pluginName:o,noMinify:t},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=x.resolve(s,`packages/${o}/bundles/${r}.js`),c=await M.readFilePromise(l);await tO(r,c,{project:i,report:n})}var Pu=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let o=this.name,a=P.parseIdent(o);if(!t.plugins.has(o))throw new be(`${P.prettyIdent(t,a)} isn't referenced by the current configuration`);let l=`.yarn/plugins/${o}.cjs`,c=x.resolve(i.cwd,l);M.existsSync(c)&&(s.reportInfo(0,`Removing ${ee.pretty(t,l,ee.Type.PATH)}...`),await M.removePromise(c)),s.reportInfo(0,"Updating the configuration..."),await ye.updateConfiguration(i.cwd,u=>{if(!Array.isArray(u.plugins))return u;let g=u.plugins.filter(f=>f.path!==l);return u.plugins.length===g.length?u:{...u,plugins:g}})})).exitCode()}};Pu.paths=[["plugin","remove"]],Pu.usage=ve.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var Eu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{for(let s of t.plugins.keys()){let o=this.context.plugins.plugins.has(s),a=s;o&&(a+=" [builtin]"),n.reportJson({name:s,builtin:o}),n.reportInfo(null,`${a}`)}})).exitCode()}};Eu.paths=[["plugin","runtime"]],Eu.usage=ve.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var Du=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{for(let s of t.plugins.keys()){let o=this.context.plugins.plugins.has(s),a=s;o&&(a+=" [builtin]"),n.reportJson({name:s,builtin:o}),n.reportInfo(null,`${a}`)}})).exitCode()}};Du.paths=[["plugin","runtime"]],Du.usage=ve.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var Iu=class extends De{constructor(){super(...arguments);this.idents=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=new Set;for(let l of this.idents)o.add(P.parseIdent(l).identHash);if(await i.restoreInstallState({restoreResolutions:!1}),await i.resolveEverything({cache:s,report:new ti}),o.size>0)for(let l of i.storedPackages.values())o.has(l.identHash)&&i.storedBuildState.delete(l.locatorHash);else i.storedBuildState.clear();return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async l=>{await i.install({cache:s,report:l})})).exitCode()}};Iu.paths=[["rebuild"]],Iu.usage=ve.Usage({description:"rebuild the project's native packages",details:` + `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var ku=class extends De{constructor(){super(...arguments);this.idents=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=new Set;for(let l of this.idents)o.add(P.parseIdent(l).identHash);if(await i.restoreInstallState({restoreResolutions:!1}),await i.resolveEverything({cache:s,report:new ti}),o.size>0)for(let l of i.storedPackages.values())o.has(l.identHash)&&i.storedBuildState.delete(l.locatorHash);else i.storedBuildState.clear();return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async l=>{await i.install({cache:s,report:l})})).exitCode()}};ku.paths=[["rebuild"]],ku.usage=ve.Usage({description:"rebuild the project's native packages",details:` This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var PT=Pe(yn());ns();var yu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Wi(Xn)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=this.all?i.workspaces:[n],a=["dependencies","devDependencies","peerDependencies"],l=[],c=!1,u=[];for(let p of this.patterns){let C=!1,y=P.parseIdent(p);for(let B of o){let v=[...B.manifest.peerDependenciesMeta.keys()];for(let D of(0,PT.default)(v,p))B.manifest.peerDependenciesMeta.delete(D),c=!0,C=!0;for(let D of a){let L=B.manifest.getForScope(D),H=[...L.values()].map(j=>P.stringifyIdent(j));for(let j of(0,PT.default)(H,P.stringifyIdent(y))){let{identHash:$}=P.parseIdent(j),V=L.get($);if(typeof V>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");B.manifest[D].delete($),u.push([B,D,V]),c=!0,C=!0}}}C||l.push(p)}let g=l.length>1?"Patterns":"Pattern",f=l.length>1?"don't":"doesn't",h=this.all?"any":"this";if(l.length>0)throw new be(`${g} ${ee.prettyList(t,l,vi.CODE)} ${f} match any packages referenced by ${h} workspace`);return c?(await t.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,u),(await Ge.start({configuration:t,stdout:this.context.stdout},async C=>{await i.install({cache:s,report:C,mode:this.mode})})).exitCode()):0}};yu.paths=[["remove"]],yu.usage=ve.Usage({description:"remove dependencies from the project",details:` + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var rO=Pe(wn());ls();var Ru=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Xi(es)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=this.all?i.workspaces:[n],a=["dependencies","devDependencies","peerDependencies"],l=[],c=!1,u=[];for(let p of this.patterns){let C=!1,y=P.parseIdent(p);for(let B of o){let v=[...B.manifest.peerDependenciesMeta.keys()];for(let D of(0,rO.default)(v,p))B.manifest.peerDependenciesMeta.delete(D),c=!0,C=!0;for(let D of a){let L=B.manifest.getForScope(D),H=[...L.values()].map(j=>P.stringifyIdent(j));for(let j of(0,rO.default)(H,P.stringifyIdent(y))){let{identHash:$}=P.parseIdent(j),V=L.get($);if(typeof V>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");B.manifest[D].delete($),u.push([B,D,V]),c=!0,C=!0}}}C||l.push(p)}let g=l.length>1?"Patterns":"Pattern",f=l.length>1?"don't":"doesn't",h=this.all?"any":"this";if(l.length>0)throw new be(`${g} ${ee.prettyList(t,l,xi.CODE)} ${f} match any packages referenced by ${h} workspace`);return c?(await t.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,u),(await Ge.start({configuration:t,stdout:this.context.stdout},async C=>{await i.install({cache:s,report:C,mode:this.mode})})).exitCode()):0}};Ru.paths=[["remove"]],Ru.usage=ve.Usage({description:"remove dependencies from the project",details:` This command will remove the packages matching the specified patterns from the current workspace. If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: @@ -569,7 +569,7 @@ ${l} - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var Roe=J("util"),Uh=class extends De{async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:t,workspace:i}=await je.find(e,this.context.cwd);if(!i)throw new ct(t.cwd,this.context.cwd);return(await Ge.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=Ie.sortMap(o.keys(),u=>u),l={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,Roe.inspect)(g,l)}`)})).exitCode()}};Uh.paths=[["run"]];var wu=class extends De{constructor(){super(...arguments);this.inspect=z.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=z.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=z.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=z.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=z.Boolean("--silent",{hidden:!0});this.scriptName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n,locator:s}=await je.find(t,this.context.cwd);await i.restoreInstallState();let o=this.topLevel?i.topLevelWorkspace.anchoredLocator:s;if(!this.binariesOnly&&await Jt.hasPackageScript(o,this.scriptName,{project:i}))return await Jt.executePackageScript(o,this.scriptName,this.args,{project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let a=await Jt.getPackageAccessibleBinaries(o,{project:i});if(a.get(this.scriptName)){let c=[];return this.inspect&&(typeof this.inspect=="string"?c.push(`--inspect=${this.inspect}`):c.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?c.push(`--inspect-brk=${this.inspectBrk}`):c.push("--inspect-brk")),await Jt.executePackageAccessibleBinary(o,this.scriptName,this.args,{cwd:this.context.cwd,project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:c,packageAccessibleBinaries:a})}if(!this.topLevel&&!this.binariesOnly&&n&&this.scriptName.includes(":")){let u=(await Promise.all(i.workspaces.map(async g=>g.manifest.scripts.has(this.scriptName)?g:null))).filter(g=>g!==null);if(u.length===1)return await Jt.executeWorkspaceScript(u[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new be(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new be(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}).`);{if(this.scriptName==="global")throw new be("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let c=[this.scriptName].concat(this.args);for(let[u,g]of ph)for(let f of g)if(c.length>=f.length&&JSON.stringify(c.slice(0,f.length))===JSON.stringify(f))throw new be(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${u} plugin. You can install it with "yarn plugin import ${u}".`);throw new be(`Couldn't find a script named "${this.scriptName}".`)}}};wu.paths=[["run"]],wu.usage=ve.Usage({description:"run a script defined in the package.json",details:` + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var Eae=J("util"),_h=class extends De{async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:t,workspace:i}=await je.find(e,this.context.cwd);if(!i)throw new ct(t.cwd,this.context.cwd);return(await Ge.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=Ie.sortMap(o.keys(),u=>u),l={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,Eae.inspect)(g,l)}`)})).exitCode()}};_h.paths=[["run"]];var Fu=class extends De{constructor(){super(...arguments);this.inspect=z.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=z.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=z.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=z.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=z.Boolean("--silent",{hidden:!0});this.scriptName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n,locator:s}=await je.find(t,this.context.cwd);await i.restoreInstallState();let o=this.topLevel?i.topLevelWorkspace.anchoredLocator:s;if(!this.binariesOnly&&await Wt.hasPackageScript(o,this.scriptName,{project:i}))return await Wt.executePackageScript(o,this.scriptName,this.args,{project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let a=await Wt.getPackageAccessibleBinaries(o,{project:i});if(a.get(this.scriptName)){let c=[];return this.inspect&&(typeof this.inspect=="string"?c.push(`--inspect=${this.inspect}`):c.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?c.push(`--inspect-brk=${this.inspectBrk}`):c.push("--inspect-brk")),await Wt.executePackageAccessibleBinary(o,this.scriptName,this.args,{cwd:this.context.cwd,project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:c,packageAccessibleBinaries:a})}if(!this.topLevel&&!this.binariesOnly&&n&&this.scriptName.includes(":")){let u=(await Promise.all(i.workspaces.map(async g=>g.manifest.scripts.has(this.scriptName)?g:null))).filter(g=>g!==null);if(u.length===1)return await Wt.executeWorkspaceScript(u[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new be(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new be(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}).`);{if(this.scriptName==="global")throw new be("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let c=[this.scriptName].concat(this.args);for(let[u,g]of vh)for(let f of g)if(c.length>=f.length&&JSON.stringify(c.slice(0,f.length))===JSON.stringify(f))throw new be(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${u} plugin. You can install it with "yarn plugin import ${u}".`);throw new be(`Couldn't find a script named "${this.scriptName}".`)}}};Fu.paths=[["run"]],Fu.usage=ve.Usage({description:"run a script defined in the package.json",details:` This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. @@ -579,123 +579,123 @@ ${l} - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var Bu=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=z.String();this.resolution=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(await i.restoreInstallState({restoreResolutions:!1}),!n)throw new ct(i.cwd,this.context.cwd);let o=P.parseDescriptor(this.descriptor,!0),a=P.makeDescriptor(o,this.resolution);return i.storedDescriptors.set(o.descriptorHash,o),i.storedDescriptors.set(a.descriptorHash,a),i.resolutionAliases.set(o.descriptorHash,a.descriptorHash),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Bu.paths=[["set","resolution"]],Bu.usage=ve.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var Foe=Pe(yn()),Qu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=i.topLevelWorkspace,a=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:c,reference:u}of o.manifest.resolutions)u.startsWith("portal:")&&a.add(c.descriptor.fullName);if(this.leadingArguments.length>0)for(let c of this.leadingArguments){let u=x.resolve(this.context.cwd,K.toPortablePath(c));if(Ie.isPathLike(c)){let g=await ye.find(u,this.context.plugins,{useRc:!1,strict:!1}),{project:f,workspace:h}=await je.find(g,u);if(!h)throw new ct(f.cwd,u);if(this.all){for(let p of f.workspaces)p.manifest.name&&a.add(P.stringifyIdent(p.locator));if(a.size===0)throw new be("No workspace found to be unlinked in the target project")}else{if(!h.manifest.name)throw new be("The target workspace doesn't have a name and thus cannot be unlinked");a.add(P.stringifyIdent(h.locator))}}else{let g=[...o.manifest.resolutions.map(({pattern:f})=>f.descriptor.fullName)];for(let f of(0,Foe.default)(g,c))a.add(f)}}return o.manifest.resolutions=o.manifest.resolutions.filter(({pattern:c})=>!a.has(c.descriptor.fullName)),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Qu.paths=[["unlink"]],Qu.usage=ve.Usage({description:"disconnect the local project from another one",details:` + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var Nu=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=z.String();this.resolution=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(await i.restoreInstallState({restoreResolutions:!1}),!n)throw new ct(i.cwd,this.context.cwd);let o=P.parseDescriptor(this.descriptor,!0),a=P.makeDescriptor(o,this.resolution);return i.storedDescriptors.set(o.descriptorHash,o),i.storedDescriptors.set(a.descriptorHash,a),i.resolutionAliases.set(o.descriptorHash,a.descriptorHash),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Nu.paths=[["set","resolution"]],Nu.usage=ve.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var Iae=Pe(wn()),Lu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=i.topLevelWorkspace,a=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:c,reference:u}of o.manifest.resolutions)u.startsWith("portal:")&&a.add(c.descriptor.fullName);if(this.leadingArguments.length>0)for(let c of this.leadingArguments){let u=x.resolve(this.context.cwd,U.toPortablePath(c));if(Ie.isPathLike(c)){let g=await ye.find(u,this.context.plugins,{useRc:!1,strict:!1}),{project:f,workspace:h}=await je.find(g,u);if(!h)throw new ct(f.cwd,u);if(this.all){for(let p of f.workspaces)p.manifest.name&&a.add(P.stringifyIdent(p.locator));if(a.size===0)throw new be("No workspace found to be unlinked in the target project")}else{if(!h.manifest.name)throw new be("The target workspace doesn't have a name and thus cannot be unlinked");a.add(P.stringifyIdent(h.locator))}}else{let g=[...o.manifest.resolutions.map(({pattern:f})=>f.descriptor.fullName)];for(let f of(0,Iae.default)(g,c))a.add(f)}}return o.manifest.resolutions=o.manifest.resolutions.filter(({pattern:c})=>!a.has(c.descriptor.fullName)),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Lu.paths=[["unlink"]],Lu.usage=ve.Usage({description:"disconnect the local project from another one",details:` This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var Noe=Pe(Pm()),DT=Pe(yn());ns();var Al=class extends De{constructor(){super(...arguments);this.interactive=z.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Wi(Xn)});this.patterns=z.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=[...i.storedDescriptors.values()],a=o.map(g=>P.stringifyIdent(g)),l=new Set;for(let g of this.patterns){if(P.parseDescriptor(g).range!=="unknown")throw new be("Ranges aren't allowed when using --recursive");for(let f of(0,DT.default)(a,g)){let h=P.parseIdent(f);l.add(h.identHash)}}let c=o.filter(g=>l.has(g.identHash));for(let g of c)i.storedDescriptors.delete(g.descriptorHash),i.storedResolutions.delete(g.descriptorHash);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{await i.install({cache:s,report:g})})).exitCode()}async executeUpClassic(){var y;let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=(y=this.interactive)!=null?y:t.get("preferInteractive"),a=km(this,i),l=o?["keep","reuse","project","latest"]:["project","latest"],c=[],u=[];for(let B of this.patterns){let v=!1,D=P.parseDescriptor(B);for(let L of i.workspaces)for(let H of["dependencies","devDependencies"]){let $=[...L.manifest.getForScope(H).values()].map(V=>P.stringifyIdent(V));for(let V of(0,DT.default)($,P.stringifyIdent(D))){let W=P.parseIdent(V),Z=L.manifest[H].get(W.identHash);if(typeof Z>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let A=P.makeDescriptor(W,D.range);c.push(Promise.resolve().then(async()=>[L,H,Z,await Rm(A,{project:i,workspace:L,cache:s,target:H,modifier:a,strategies:l})])),v=!0}}v||u.push(B)}if(u.length>1)throw new be(`Patterns ${ee.prettyList(t,u,vi.CODE)} don't match any packages referenced by any workspace`);if(u.length>0)throw new be(`Pattern ${ee.prettyList(t,u,vi.CODE)} doesn't match any packages referenced by any workspace`);let g=await Promise.all(c),f=await _o.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let[,,v,{suggestions:D,rejections:L}]of g){let H=D.filter(j=>j.descriptor!==null);if(H.length===0){let[j]=L;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");let $=this.cli.error(j);i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var yae=Pe(Um()),iO=Pe(wn());ls();var ml=class extends De{constructor(){super(...arguments);this.interactive=z.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Xi(es)});this.patterns=z.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=[...i.storedDescriptors.values()],a=o.map(g=>P.stringifyIdent(g)),l=new Set;for(let g of this.patterns){if(P.parseDescriptor(g).range!=="unknown")throw new be("Ranges aren't allowed when using --recursive");for(let f of(0,iO.default)(a,g)){let h=P.parseIdent(f);l.add(h.identHash)}}let c=o.filter(g=>l.has(g.identHash));for(let g of c)i.storedDescriptors.delete(g.descriptorHash),i.storedResolutions.delete(g.descriptorHash);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{await i.install({cache:s,report:g})})).exitCode()}async executeUpClassic(){var y;let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=(y=this.interactive)!=null?y:t.get("preferInteractive"),a=Hm(this,i),l=o?["keep","reuse","project","latest"]:["project","latest"],c=[],u=[];for(let B of this.patterns){let v=!1,D=P.parseDescriptor(B);for(let L of i.workspaces)for(let H of["dependencies","devDependencies"]){let $=[...L.manifest.getForScope(H).values()].map(V=>P.stringifyIdent(V));for(let V of(0,iO.default)($,P.stringifyIdent(D))){let W=P.parseIdent(V),_=L.manifest[H].get(W.identHash);if(typeof _>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let A=P.makeDescriptor(W,D.range);c.push(Promise.resolve().then(async()=>[L,H,_,await Gm(A,{project:i,workspace:L,cache:s,target:H,modifier:a,strategies:l})])),v=!0}}v||u.push(B)}if(u.length>1)throw new be(`Patterns ${ee.prettyList(t,u,xi.CODE)} don't match any packages referenced by any workspace`);if(u.length>0)throw new be(`Pattern ${ee.prettyList(t,u,xi.CODE)} doesn't match any packages referenced by any workspace`);let g=await Promise.all(c),f=await ra.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let[,,v,{suggestions:D,rejections:L}]of g){let H=D.filter(j=>j.descriptor!==null);if(H.length===0){let[j]=L;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");let $=this.cli.error(j);i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range ${$}`):B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range (note: network resolution has been disabled) -${$}`)}else H.length>1&&!o&&B.reportError(27,`${P.prettyDescriptor(t,v)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(f.hasErrors())return f.exitCode();let h=!1,p=[];for(let[B,v,,{suggestions:D}]of g){let L,H=D.filter(W=>W.descriptor!==null),j=H[0].descriptor,$=H.every(W=>P.areDescriptorsEqual(W.descriptor,j));H.length===1||$?L=j:(h=!0,{answer:L}=await(0,Noe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${P.prettyWorkspace(t,B)} \u276F ${v}?`,choices:D.map(({descriptor:W,name:Z,reason:A})=>W?{name:Z,hint:A,descriptor:W}:{name:Z,hint:A,disabled:!0}),onCancel:()=>process.exit(130),result(W){return this.find(W,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let V=B.manifest[v].get(L.identHash);if(typeof V>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(V.descriptorHash!==L.descriptorHash)B.manifest[v].set(L.identHash,L),p.push([B,v,V,L]);else{let W=t.makeResolver(),Z={project:i,resolver:W},A=W.bindDescriptor(V,B.anchoredLocator,Z);i.forgetResolution(A)}}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),h&&this.context.stdout.write(` -`),(await Ge.start({configuration:t,stdout:this.context.stdout},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};Al.paths=[["up"]],Al.usage=ve.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),Al.schema=[JS("recursive",Xl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var bu=class extends De{constructor(){super(...arguments);this.recursive=z.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=z.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=P.parseIdent(this.package).identHash,o=this.recursive?FWe(i,s,{configuration:t,peers:this.peers}):RWe(i,s,{configuration:t,peers:this.peers});Vn.emitTree(o,{configuration:t,stdout:this.context.stdout,json:this.json,separators:1})}};bu.paths=[["why"]],bu.usage=ve.Usage({description:"display the reason why a package is needed",details:` +${$}`)}else H.length>1&&!o&&B.reportError(27,`${P.prettyDescriptor(t,v)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(f.hasErrors())return f.exitCode();let h=!1,p=[];for(let[B,v,,{suggestions:D}]of g){let L,H=D.filter(W=>W.descriptor!==null),j=H[0].descriptor,$=H.every(W=>P.areDescriptorsEqual(W.descriptor,j));H.length===1||$?L=j:(h=!0,{answer:L}=await(0,yae.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${P.prettyWorkspace(t,B)} \u276F ${v}?`,choices:D.map(({descriptor:W,name:_,reason:A})=>W?{name:_,hint:A,descriptor:W}:{name:_,hint:A,disabled:!0}),onCancel:()=>process.exit(130),result(W){return this.find(W,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let V=B.manifest[v].get(L.identHash);if(typeof V>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(V.descriptorHash!==L.descriptorHash)B.manifest[v].set(L.identHash,L),p.push([B,v,V,L]);else{let W=t.makeResolver(),_={project:i,resolver:W},A=W.bindDescriptor(V,B.anchoredLocator,_);i.forgetResolution(A)}}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),h&&this.context.stdout.write(` +`),(await Ge.start({configuration:t,stdout:this.context.stdout},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};ml.paths=[["up"]],ml.usage=ve.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),ml.schema=[av("recursive",lc.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var Tu=class extends De{constructor(){super(...arguments);this.recursive=z.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=z.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=P.parseIdent(this.package).identHash,o=this.recursive?K8e(i,s,{configuration:t,peers:this.peers}):U8e(i,s,{configuration:t,peers:this.peers});$n.emitTree(o,{configuration:t,stdout:this.context.stdout,json:this.json,separators:1})}};Tu.paths=[["why"]],Tu.usage=ve.Usage({description:"display the reason why a package is needed",details:` This command prints the exact reasons why a package appears in the dependency tree. If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function RWe(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.storedPackages.values(),a=>P.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={};for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=r.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=r.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;{let p=P.stringifyLocator(a);s[p]={value:[a,ee.Type.LOCATOR],children:l}}let h=P.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ee.Type.DEPENDENT]}}}return o}function FWe(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.workspaces,f=>P.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let C=r.storedResolutions.get(p.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let y=r.storedPackages.get(C);if(!y)throw new Error("Assertion failed: The package should have been registered");a(y)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let C=p!==null?ee.tuple(ee.Type.DEPENDENT,{locator:f,descriptor:p}):ee.tuple(ee.Type.LOCATOR,f),y={},B={value:C,children:y},v=P.stringifyLocator(f);if(h[v]=B,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&r.tryWorkspaceByLocator(f))))for(let D of f.dependencies.values()){if(!i&&f.peerDependencies.has(D.identHash))continue;let L=r.storedResolutions.get(D.descriptorHash);if(!L)throw new Error("Assertion failed: The resolution should have been registered");let H=r.storedPackages.get(L);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,y,D)}};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var HT={};ut(HT,{default:()=>$We,gitUtils:()=>$a});var $a={};ut($a,{TreeishProtocols:()=>pQ,clone:()=>UT,fetchBase:()=>tae,fetchChangedFiles:()=>rae,fetchChangedWorkspaces:()=>_We,fetchRoot:()=>eae,isGitUrl:()=>Gh,lsRemote:()=>$oe,normalizeLocator:()=>MT,normalizeRepoUrl:()=>Km,resolveUrl:()=>KT,splitRepoUrl:()=>Mm});var OT=Pe(zoe()),_oe=Pe(dB()),Hh=Pe(J("querystring")),LT=Pe(Xr());function NT(r,e,t){let i=r.indexOf(t);return r.lastIndexOf(e,i>-1?i:1/0)}function Voe(r){try{return new URL(r)}catch{return}}function VWe(r){let e=NT(r,"@","#"),t=NT(r,":","#");return t>e&&(r=`${r.slice(0,t)}/${r.slice(t+1)}`),NT(r,":","#")===-1&&r.indexOf("//")===-1&&(r=`ssh://${r}`),r}function Xoe(r){return Voe(r)||Voe(VWe(r))}function Zoe(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var XWe=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],pQ=(n=>(n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver",n))(pQ||{});function Gh(r){return r?XWe.some(e=>!!r.match(e)):!1}function Mm(r){r=Km(r);let e=r.indexOf("#");if(e===-1)return{repo:r,treeish:{protocol:"head",request:"HEAD"},extra:{}};let t=r.slice(0,e),i=r.slice(e+1);if(i.match(/^[a-z]+=/)){let n=Hh.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(pQ).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s<"u"?(o=s,a=n[s]):(o="head",a="HEAD");for(let l of Object.values(pQ))delete n[l];return{repo:t,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:t,treeish:{protocol:s,request:o},extra:{}}}}function Km(r,{git:e=!1}={}){if(r=r.replace(/^git\+https:/,"https:"),r=r.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),r=r.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let t=Xoe(r);t&&(r=t.href),r=r.replace(/^git\+([^:]+):/,"$1:")}return r}function MT(r){return P.makeLocator(r,Km(r.reference))}async function $oe(r,e){let t=Km(r,{git:!0});if(!Vt.getNetworkSettings(`https://${(0,OT.default)(t).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${t}' has been blocked because of your configuration settings`);let n=await TT("listing refs",["ls-remote",t],{cwd:e.startingCwd,env:Zoe()},{configuration:e,normalizedRepoUrl:t}),s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function KT(r,e){let{repo:t,treeish:{protocol:i,request:n},extra:s}=Mm(r),o=await $oe(t,e),a=(c,u)=>{switch(c){case"commit":{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return Hh.default.stringify({...s,commit:u})}case"head":{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g>"u")throw new Error(`Unknown head ("${u}")`);return Hh.default.stringify({...s,commit:g})}case"tag":{let g=o.get(`refs/tags/${u}`);if(typeof g>"u")throw new Error(`Unknown tag ("${u}")`);return Hh.default.stringify({...s,commit:g})}case"semver":{let g=vt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,C])=>[LT.default.parse(p.slice(10)),C]).filter(p=>p[0]!==null)),h=LT.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return Hh.default.stringify({...s,commit:f.get(h)})}case null:{let g;if((g=l("commit",u))!==null||(g=l("tag",u))!==null||(g=l("head",u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch{return null}};return`${t}#${a(i,n)}`}async function UT(r,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:t,treeish:{protocol:i,request:n}}=Mm(r);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=Km(t,{git:!0});if(Vt.getNetworkSettings(`https://${(0,OT.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await M.mktempPromise(),a={cwd:o,env:Zoe()};return await TT("cloning the repository",["clone","-c core.autocrlf=false",s,K.fromPortablePath(o)],a,{configuration:e,normalizedRepoUrl:s}),await TT("switching branch",["checkout",`${n}`],a,{configuration:e,normalizedRepoUrl:s}),o})}async function eae(r){let e=null,t,i=r;do t=i,await M.existsPromise(x.join(t,".git"))&&(e=t),i=x.dirname(t);while(e===null&&i!==t);return e}async function tae(r,{baseRefs:e}){if(e.length===0)throw new be("Can't run this command with zero base refs specified.");let t=[];for(let a of e){let{code:l}=await Cr.execvp("git",["merge-base",a,"HEAD"],{cwd:r});l===0&&t.push(a)}if(t.length===0)throw new be(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await Cr.execvp("git",["merge-base","HEAD",...t],{cwd:r,strict:!0}),n=i.trim(),{stdout:s}=await Cr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:r,strict:!0}),o=s.trim();return{hash:n,title:o}}async function rae(r,{base:e,project:t}){let i=Ie.buildIgnorePattern(t.configuration.get("changesetIgnorePatterns")),{stdout:n}=await Cr.execvp("git",["diff","--name-only",`${e}`],{cwd:r,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>x.resolve(r,K.toPortablePath(c))),{stdout:o}=await Cr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:r,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>x.resolve(r,K.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!x.relative(t.cwd,c).match(i)):l}async function _We({ref:r,project:e}){if(e.configuration.projectCwd===null)throw new be("This command can only be run from within a Yarn project");let t=[x.resolve(e.cwd,e.configuration.get("cacheFolder")),x.resolve(e.cwd,e.configuration.get("installStatePath")),x.resolve(e.cwd,e.configuration.get("lockfileFilename")),x.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&t.push(o)});let i=await eae(e.configuration.projectCwd);if(i==null)throw new be("This command can only be run on Git repositories");let n=await tae(i,{baseRefs:typeof r=="string"?[r]:e.configuration.get("changesetBaseRefs")}),s=await rae(i,{base:n.hash,project:e});return new Set(Ie.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?Ie.mapAndFilter.skip:t.some(l=>o.startsWith(l))?Ie.mapAndFilter.skip:a}))}async function TT(r,e,t,{configuration:i,normalizedRepoUrl:n}){try{return await Cr.execvp("git",e,{...t,strict:!0})}catch(s){if(!(s instanceof Cr.ExecError))throw s;let o=s.reportExtra,a=s.stderr.toString();throw new at(1,`Failed ${r}`,l=>{l.reportError(1,` ${ee.prettyField(i,{label:"Repository URL",value:ee.tuple(ee.Type.URL,n)})}`);for(let c of a.matchAll(/^(.+?): (.*)$/gm)){let[,u,g]=c;u=u.toLowerCase();let f=u==="error"?"Error":`${(0,_oe.default)(u)} Error`;l.reportError(1,` ${ee.prettyField(i,{label:f,value:ee.tuple(ee.Type.NO_HINT,g)})}`)}o==null||o(l)})}}var dQ=class{supports(e,t){return Gh(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,n=MT(e),s=new Map(t.checksums);s.set(n.locatorHash,i);let o={...t,checksums:s},a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:l,releaseFs:c,prefixPath:P.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,t){return t.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,t)}async cloneFromRemote(e,t){let i=await UT(e.reference,t.project.configuration),n=Mm(e.reference),s=x.join(i,"package.tgz");await Jt.prepareExternalProject(i,s,{configuration:t.project.configuration,report:t.report,workspace:n.extra.workspace,locator:e});let o=await M.readFilePromise(s);return await Ie.releaseAfterUseAsync(async()=>await Ci.convertToZip(o,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}))}};var CQ=class{supportsDescriptor(e,t){return Gh(e.range)}supportsLocator(e,t){return Gh(e.reference)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=await KT(e.range,i.project.configuration);return[P.makeLocator(e,n)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var ZWe={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[dQ],resolvers:[CQ]};var $We=ZWe;var Su=class extends De{constructor(){super(...arguments);this.since=z.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=z.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=z.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async s=>{let o=this.since?await $a.fetchChangedWorkspaces({ref:this.since,project:i}):i.workspaces,a=new Set(o);if(this.recursive)for(let l of[...o].map(c=>c.getRecursiveWorkspaceDependents()))for(let c of l)a.add(c);for(let l of a){let{manifest:c}=l;if(c.private&&this.noPrivate)continue;let u;if(this.verbose){let g=new Set,f=new Set;for(let h of ot.hardDependencies)for(let[p,C]of c.getForScope(h)){let y=i.tryWorkspaceByDescriptor(C);y===null?i.workspacesByIdent.has(p)&&f.add(C):g.add(y)}u={workspaceDependencies:Array.from(g).map(h=>h.relativeCwd),mismatchedWorkspaceDependencies:Array.from(f).map(h=>P.stringifyDescriptor(h))}}s.reportInfo(null,`${l.relativeCwd}`),s.reportJson({location:l.relativeCwd,name:c.name?P.stringifyIdent(c.name):null,...u})}})).exitCode()}};Su.paths=[["workspaces","list"]],Su.usage=ve.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var vu=class extends De{constructor(){super(...arguments);this.workspaceName=z.String();this.commandName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=i.workspaces,o=new Map(s.map(l=>[P.stringifyIdent(l.locator),l])),a=o.get(this.workspaceName);if(a===void 0){let l=Array.from(o.keys()).sort();throw new be(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function U8e(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.storedPackages.values(),a=>P.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={};for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=r.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=r.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;{let p=P.stringifyLocator(a);s[p]={value:[a,ee.Type.LOCATOR],children:l}}let h=P.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ee.Type.DEPENDENT]}}}return o}function K8e(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.workspaces,f=>P.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let C=r.storedResolutions.get(p.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let y=r.storedPackages.get(C);if(!y)throw new Error("Assertion failed: The package should have been registered");a(y)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let C=p!==null?ee.tuple(ee.Type.DEPENDENT,{locator:f,descriptor:p}):ee.tuple(ee.Type.LOCATOR,f),y={},B={value:C,children:y},v=P.stringifyLocator(f);if(h[v]=B,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&r.tryWorkspaceByLocator(f))))for(let D of f.dependencies.values()){if(!i&&f.peerDependencies.has(D.identHash))continue;let L=r.storedResolutions.get(D.descriptorHash);if(!L)throw new Error("Assertion failed: The resolution should have been registered");let H=r.storedPackages.get(L);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,y,D)}};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var hO={};ut(hO,{default:()=>o4e,gitUtils:()=>AA});var AA={};ut(AA,{TreeishProtocols:()=>TQ,clone:()=>fO,fetchBase:()=>Yae,fetchChangedFiles:()=>jae,fetchChangedWorkspaces:()=>n4e,fetchRoot:()=>Gae,isGitUrl:()=>ep,lsRemote:()=>Hae,normalizeLocator:()=>uO,normalizeRepoUrl:()=>Vm,resolveUrl:()=>gO,splitRepoUrl:()=>zm});var cO=Pe(Lae()),Uae=Pe(PB()),$h=Pe(J("querystring")),AO=Pe(Xr());var Oae=J("url");function aO(r,e,t){let i=r.indexOf(t);return r.lastIndexOf(e,i>-1?i:1/0)}function Tae(r){try{return new Oae.URL(r)}catch{return}}function r4e(r){let e=aO(r,"@","#"),t=aO(r,":","#");return t>e&&(r=`${r.slice(0,t)}/${r.slice(t+1)}`),aO(r,":","#")===-1&&r.indexOf("//")===-1&&(r=`ssh://${r}`),r}function Mae(r){return Tae(r)||Tae(r4e(r))}function Kae(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var i4e=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],TQ=(n=>(n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver",n))(TQ||{});function ep(r){return r?i4e.some(e=>!!r.match(e)):!1}function zm(r){r=Vm(r);let e=r.indexOf("#");if(e===-1)return{repo:r,treeish:{protocol:"head",request:"HEAD"},extra:{}};let t=r.slice(0,e),i=r.slice(e+1);if(i.match(/^[a-z]+=/)){let n=$h.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(TQ).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s<"u"?(o=s,a=n[s]):(o="head",a="HEAD");for(let l of Object.values(TQ))delete n[l];return{repo:t,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:t,treeish:{protocol:s,request:o},extra:{}}}}function Vm(r,{git:e=!1}={}){if(r=r.replace(/^git\+https:/,"https:"),r=r.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),r=r.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let t=Mae(r);t&&(r=t.href),r=r.replace(/^git\+([^:]+):/,"$1:")}return r}function uO(r){return P.makeLocator(r,Vm(r.reference))}async function Hae(r,e){let t=Vm(r,{git:!0});if(!Xt.getNetworkSettings(`https://${(0,cO.default)(t).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${t}' has been blocked because of your configuration settings`);let n=await lO("listing refs",["ls-remote",t],{cwd:e.startingCwd,env:Kae()},{configuration:e,normalizedRepoUrl:t}),s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function gO(r,e){let{repo:t,treeish:{protocol:i,request:n},extra:s}=zm(r),o=await Hae(t,e),a=(c,u)=>{switch(c){case"commit":{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return $h.default.stringify({...s,commit:u})}case"head":{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g>"u")throw new Error(`Unknown head ("${u}")`);return $h.default.stringify({...s,commit:g})}case"tag":{let g=o.get(`refs/tags/${u}`);if(typeof g>"u")throw new Error(`Unknown tag ("${u}")`);return $h.default.stringify({...s,commit:g})}case"semver":{let g=vt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,C])=>[AO.default.parse(p.slice(10)),C]).filter(p=>p[0]!==null)),h=AO.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return $h.default.stringify({...s,commit:f.get(h)})}case null:{let g;if((g=l("commit",u))!==null||(g=l("tag",u))!==null||(g=l("head",u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch{return null}};return`${t}#${a(i,n)}`}async function fO(r,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:t,treeish:{protocol:i,request:n}}=zm(r);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=Vm(t,{git:!0});if(Xt.getNetworkSettings(`https://${(0,cO.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await M.mktempPromise(),a={cwd:o,env:Kae()};return await lO("cloning the repository",["clone","-c core.autocrlf=false",s,U.fromPortablePath(o)],a,{configuration:e,normalizedRepoUrl:s}),await lO("switching branch",["checkout",`${n}`],a,{configuration:e,normalizedRepoUrl:s}),o})}async function Gae(r){let e=null,t,i=r;do t=i,await M.existsPromise(x.join(t,".git"))&&(e=t),i=x.dirname(t);while(e===null&&i!==t);return e}async function Yae(r,{baseRefs:e}){if(e.length===0)throw new be("Can't run this command with zero base refs specified.");let t=[];for(let a of e){let{code:l}=await Cr.execvp("git",["merge-base",a,"HEAD"],{cwd:r});l===0&&t.push(a)}if(t.length===0)throw new be(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await Cr.execvp("git",["merge-base","HEAD",...t],{cwd:r,strict:!0}),n=i.trim(),{stdout:s}=await Cr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:r,strict:!0}),o=s.trim();return{hash:n,title:o}}async function jae(r,{base:e,project:t}){let i=Ie.buildIgnorePattern(t.configuration.get("changesetIgnorePatterns")),{stdout:n}=await Cr.execvp("git",["diff","--name-only",`${e}`],{cwd:r,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>x.resolve(r,U.toPortablePath(c))),{stdout:o}=await Cr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:r,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>x.resolve(r,U.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!x.relative(t.cwd,c).match(i)):l}async function n4e({ref:r,project:e}){if(e.configuration.projectCwd===null)throw new be("This command can only be run from within a Yarn project");let t=[x.resolve(e.cwd,e.configuration.get("cacheFolder")),x.resolve(e.cwd,e.configuration.get("installStatePath")),x.resolve(e.cwd,e.configuration.get("lockfileFilename")),x.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&t.push(o)});let i=await Gae(e.configuration.projectCwd);if(i==null)throw new be("This command can only be run on Git repositories");let n=await Yae(i,{baseRefs:typeof r=="string"?[r]:e.configuration.get("changesetBaseRefs")}),s=await jae(i,{base:n.hash,project:e});return new Set(Ie.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?Ie.mapAndFilter.skip:t.some(l=>o.startsWith(l))?Ie.mapAndFilter.skip:a}))}async function lO(r,e,t,{configuration:i,normalizedRepoUrl:n}){try{return await Cr.execvp("git",e,{...t,strict:!0})}catch(s){if(!(s instanceof Cr.ExecError))throw s;let o=s.reportExtra,a=s.stderr.toString();throw new at(1,`Failed ${r}`,l=>{l.reportError(1,` ${ee.prettyField(i,{label:"Repository URL",value:ee.tuple(ee.Type.URL,n)})}`);for(let c of a.matchAll(/^(.+?): (.*)$/gm)){let[,u,g]=c;u=u.toLowerCase();let f=u==="error"?"Error":`${(0,Uae.default)(u)} Error`;l.reportError(1,` ${ee.prettyField(i,{label:f,value:ee.tuple(ee.Type.NO_HINT,g)})}`)}o==null||o(l)})}}var OQ=class{supports(e,t){return ep(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,n=uO(e),s=new Map(t.checksums);s.set(n.locatorHash,i);let o={...t,checksums:s},a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:l,releaseFs:c,prefixPath:P.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,t){return t.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,t)}async cloneFromRemote(e,t){let i=await fO(e.reference,t.project.configuration),n=zm(e.reference),s=x.join(i,"package.tgz");await Wt.prepareExternalProject(i,s,{configuration:t.project.configuration,report:t.report,workspace:n.extra.workspace,locator:e});let o=await M.readFilePromise(s);return await Ie.releaseAfterUseAsync(async()=>await mi.convertToZip(o,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}))}};var MQ=class{supportsDescriptor(e,t){return ep(e.range)}supportsLocator(e,t){return ep(e.reference)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=await gO(e.range,i.project.configuration);return[P.makeLocator(e,n)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var s4e={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[OQ],resolvers:[MQ]};var o4e=s4e;var Ou=class extends De{constructor(){super(...arguments);this.since=z.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=z.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=z.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async s=>{let o=this.since?await AA.fetchChangedWorkspaces({ref:this.since,project:i}):i.workspaces,a=new Set(o);if(this.recursive)for(let l of[...o].map(c=>c.getRecursiveWorkspaceDependents()))for(let c of l)a.add(c);for(let l of a){let{manifest:c}=l;if(c.private&&this.noPrivate)continue;let u;if(this.verbose){let g=new Set,f=new Set;for(let h of ot.hardDependencies)for(let[p,C]of c.getForScope(h)){let y=i.tryWorkspaceByDescriptor(C);y===null?i.workspacesByIdent.has(p)&&f.add(C):g.add(y)}u={workspaceDependencies:Array.from(g).map(h=>h.relativeCwd),mismatchedWorkspaceDependencies:Array.from(f).map(h=>P.stringifyDescriptor(h))}}s.reportInfo(null,`${l.relativeCwd}`),s.reportJson({location:l.relativeCwd,name:c.name?P.stringifyIdent(c.name):null,...u})}})).exitCode()}};Ou.paths=[["workspaces","list"]],Ou.usage=ve.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var Mu=class extends De{constructor(){super(...arguments);this.workspaceName=z.String();this.commandName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=i.workspaces,o=new Map(s.map(l=>[P.stringifyIdent(l.locator),l])),a=o.get(this.workspaceName);if(a===void 0){let l=Array.from(o.keys()).sort();throw new be(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - ${l.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:a.cwd})}};vu.paths=[["workspace"]],vu.usage=ve.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:a.cwd})}};Mu.paths=[["workspace"]],Mu.usage=ve.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var e3e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:iae.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"}},commands:[$c,eu,tu,ru,Bu,pu,au,Su,Oh,Mh,Lm,Kh,_c,Zc,iu,nu,su,ou,Au,lu,cu,uu,Qu,gu,Cu,du,mu,fu,Eu,Iu,yu,Uh,wu,Al,bu,vu]},t3e=e3e;var WT={};ut(WT,{default:()=>i3e});var Le={optional:!0},YT=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Le,zenObservable:Le}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Le,zenObservable:Le}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Le}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Le,["postcss-jsx"]:Le,["postcss-less"]:Le,["postcss-markdown"]:Le,["postcss-scss"]:Le}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Le}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Le}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Le,"vue-template-compiler":Le}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Le,"utf-8-validate":Le}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Le,"vuetify-loader":Le}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Le}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Le}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Le}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Le}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Le,tinyliquid:Le,"liquid-node":Le,jade:Le,"then-jade":Le,dust:Le,"dustjs-helpers":Le,"dustjs-linkedin":Le,swig:Le,"swig-templates":Le,"razor-tmpl":Le,atpl:Le,liquor:Le,twig:Le,ejs:Le,eco:Le,jazz:Le,jqtpl:Le,hamljs:Le,hamlet:Le,whiskers:Le,"haml-coffee":Le,"hogan.js":Le,templayed:Le,handlebars:Le,underscore:Le,lodash:Le,pug:Le,"then-pug":Le,qejs:Le,walrus:Le,mustache:Le,just:Le,ect:Le,mote:Le,toffee:Le,dot:Le,"bracket-template":Le,ractive:Le,nunjucks:Le,htmling:Le,"babel-core":Le,plates:Le,"react-dom":Le,react:Le,"arc-templates":Le,vash:Le,slm:Le,marko:Le,teacup:Le,"coffee-script":Le,squirrelly:Le,twing:Le}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Le}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Le,vue:Le}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Le}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Le}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(r=>[r,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Le,"webpack-command":Le}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Le}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Le}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Le,jimp:Le}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Le,"eslint-import-resolver-typescript":Le,"eslint-import-resolver-webpack":Le,"@typescript-eslint/parser":Le}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Le}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Le}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Le}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Le}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{["vue-template-compiler"]:"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["parcel@*",{peerDependenciesMeta:{["@parcel/core"]:Le}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@*",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Le}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Le}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Le}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Le}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}]];var jT;function nae(){return typeof jT>"u"&&(jT=J("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),jT}var qT;function sae(){return typeof qT>"u"&&(qT=J("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),qT}var JT;function oae(){return typeof JT>"u"&&(JT=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),JT}var aae=new Map([[P.makeIdent(null,"fsevents").identHash,nae],[P.makeIdent(null,"resolve").identHash,sae],[P.makeIdent(null,"typescript").identHash,oae]]),r3e={hooks:{registerPackageExtensions:async(r,e)=>{for(let[t,i]of YT)e(P.parseDescriptor(t,!0),i)},getBuiltinPatch:async(r,e)=>{var s;let t="compat/";if(!e.startsWith(t))return;let i=P.parseIdent(e.slice(t.length)),n=(s=aae.get(i.identHash))==null?void 0:s();return typeof n<"u"?n:null},reduceDependency:async(r,e,t,i)=>typeof aae.get(r.identHash)>"u"?r:P.makeDescriptor(r,P.makeRange({protocol:"patch:",source:P.stringifyDescriptor(r),selector:`~builtin`,params:null}))}},i3e=r3e;var zT={};ut(zT,{default:()=>s3e});var Yh=class extends De{constructor(){super(...arguments);this.pkg=z.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){let t=[];this.pkg&&t.push("--package",this.pkg),this.quiet&&t.push("--quiet");let i=P.parseDescriptor(this.command),n;i.scope?n=P.makeIdent(i.scope,`create-${i.name}`):i.name.startsWith("@")?n=P.makeIdent(i.name.substring(1),"create"):n=P.makeIdent(null,`create-${i.name}`);let s=P.stringifyIdent(n);return i.range!=="unknown"&&(s+=`@${i.range}`),this.cli.run(["dlx",...t,s,...this.args])}};Yh.paths=[["create"]];var xu=class extends De{constructor(){super(...arguments);this.packages=z.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){return ye.telemetry=null,await M.mktempPromise(async t=>{var C;let i=x.join(t,`dlx-${process.pid}`);await M.mkdirPromise(i),await M.writeFilePromise(x.join(i,"package.json"),`{} -`),await M.writeFilePromise(x.join(i,"yarn.lock"),"");let n=x.join(i,".yarnrc.yml"),s=await ye.findProjectCwd(this.context.cwd,xt.lockfile),o=!(await ye.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),a=s!==null?x.join(s,".yarnrc.yml"):null;a!==null&&M.existsSync(a)?(await M.copyFilePromise(a,n),await ye.updateConfiguration(i,y=>{let B={...y,enableGlobalCache:o,enableTelemetry:!1};return Array.isArray(y.plugins)&&(B.plugins=y.plugins.map(v=>{let D=typeof v=="string"?v:v.path,L=K.isAbsolute(D)?D:K.resolve(K.fromPortablePath(s),D);return typeof v=="string"?L:{path:L,spec:v.spec}})),B})):await M.writeFilePromise(n,`enableGlobalCache: ${o} + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var a4e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:qae.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"}},commands:[cu,uu,gu,fu,Nu,Su,mu,Ou,Vh,Xh,qm,Zh,Au,lu,hu,pu,du,Cu,Eu,Iu,yu,wu,Lu,Bu,xu,vu,Pu,Qu,Du,ku,Ru,_h,Fu,ml,Tu,Mu]},A4e=a4e;var IO={};ut(IO,{default:()=>c4e});var Le={optional:!0},dO=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Le,zenObservable:Le}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Le,zenObservable:Le}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Le}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Le,["postcss-jsx"]:Le,["postcss-less"]:Le,["postcss-markdown"]:Le,["postcss-scss"]:Le}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Le}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Le}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Le,"vue-template-compiler":Le}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Le,"utf-8-validate":Le}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Le,"vuetify-loader":Le}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Le}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Le}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Le}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Le}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Le,tinyliquid:Le,"liquid-node":Le,jade:Le,"then-jade":Le,dust:Le,"dustjs-helpers":Le,"dustjs-linkedin":Le,swig:Le,"swig-templates":Le,"razor-tmpl":Le,atpl:Le,liquor:Le,twig:Le,ejs:Le,eco:Le,jazz:Le,jqtpl:Le,hamljs:Le,hamlet:Le,whiskers:Le,"haml-coffee":Le,"hogan.js":Le,templayed:Le,handlebars:Le,underscore:Le,lodash:Le,pug:Le,"then-pug":Le,qejs:Le,walrus:Le,mustache:Le,just:Le,ect:Le,mote:Le,toffee:Le,dot:Le,"bracket-template":Le,ractive:Le,nunjucks:Le,htmling:Le,"babel-core":Le,plates:Le,"react-dom":Le,react:Le,"arc-templates":Le,vash:Le,slm:Le,marko:Le,teacup:Le,"coffee-script":Le,squirrelly:Le,twing:Le}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Le}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Le,vue:Le}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Le}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Le}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(r=>[r,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Le,"webpack-command":Le}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Le}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Le}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Le,jimp:Le}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Le,"eslint-import-resolver-typescript":Le,"eslint-import-resolver-webpack":Le,"@typescript-eslint/parser":Le}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Le}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Le}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Le}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Le}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{["vue-template-compiler"]:"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["parcel@*",{peerDependenciesMeta:{["@parcel/core"]:Le}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@*",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Le}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Le}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Le}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Le}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}]];var CO;function Jae(){return typeof CO>"u"&&(CO=J("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),CO}var mO;function Wae(){return typeof mO>"u"&&(mO=J("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),mO}var EO;function zae(){return typeof EO>"u"&&(EO=J("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),EO}var Vae=new Map([[P.makeIdent(null,"fsevents").identHash,Jae],[P.makeIdent(null,"resolve").identHash,Wae],[P.makeIdent(null,"typescript").identHash,zae]]),l4e={hooks:{registerPackageExtensions:async(r,e)=>{for(let[t,i]of dO)e(P.parseDescriptor(t,!0),i)},getBuiltinPatch:async(r,e)=>{var s;let t="compat/";if(!e.startsWith(t))return;let i=P.parseIdent(e.slice(t.length)),n=(s=Vae.get(i.identHash))==null?void 0:s();return typeof n<"u"?n:null},reduceDependency:async(r,e,t,i)=>typeof Vae.get(r.identHash)>"u"?r:P.makeDescriptor(r,P.makeRange({protocol:"patch:",source:P.stringifyDescriptor(r),selector:`~builtin`,params:null}))}},c4e=l4e;var yO={};ut(yO,{default:()=>g4e});var tp=class extends De{constructor(){super(...arguments);this.pkg=z.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){let t=[];this.pkg&&t.push("--package",this.pkg),this.quiet&&t.push("--quiet");let i=P.parseDescriptor(this.command),n;i.scope?n=P.makeIdent(i.scope,`create-${i.name}`):i.name.startsWith("@")?n=P.makeIdent(i.name.substring(1),"create"):n=P.makeIdent(null,`create-${i.name}`);let s=P.stringifyIdent(n);return i.range!=="unknown"&&(s+=`@${i.range}`),this.cli.run(["dlx",...t,s,...this.args])}};tp.paths=[["create"]];var Uu=class extends De{constructor(){super(...arguments);this.packages=z.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){return ye.telemetry=null,await M.mktempPromise(async t=>{var C;let i=x.join(t,`dlx-${process.pid}`);await M.mkdirPromise(i),await M.writeFilePromise(x.join(i,"package.json"),`{} +`),await M.writeFilePromise(x.join(i,"yarn.lock"),"");let n=x.join(i,".yarnrc.yml"),s=await ye.findProjectCwd(this.context.cwd,xt.lockfile),o=!(await ye.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),a=s!==null?x.join(s,".yarnrc.yml"):null;a!==null&&M.existsSync(a)?(await M.copyFilePromise(a,n),await ye.updateConfiguration(i,y=>{let B={...y,enableGlobalCache:o,enableTelemetry:!1};return Array.isArray(y.plugins)&&(B.plugins=y.plugins.map(v=>{let D=typeof v=="string"?v:v.path,L=U.isAbsolute(D)?D:U.resolve(U.fromPortablePath(s),D);return typeof v=="string"?L:{path:L,spec:v.spec}})),B})):await M.writeFilePromise(n,`enableGlobalCache: ${o} enableTelemetry: false `);let l=(C=this.packages)!=null?C:[this.command],c=P.parseDescriptor(this.command).name,u=await this.cli.run(["add","--",...l],{cwd:i,quiet:this.quiet});if(u!==0)return u;this.quiet||this.context.stdout.write(` -`);let g=await ye.find(i,this.context.plugins),{project:f,workspace:h}=await je.find(g,i);if(h===null)throw new ct(f.cwd,i);await f.restoreInstallState();let p=await Jt.getWorkspaceAccessibleBinaries(h);return p.has(c)===!1&&p.size===1&&typeof this.packages>"u"&&(c=Array.from(p)[0][0]),await Jt.executeWorkspaceAccessibleBinary(h,c,this.args,{packageAccessibleBinaries:p,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};xu.paths=[["dlx"]],xu.usage=ve.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var n3e={commands:[Yh,xu]},s3e=n3e;var ZT={};ut(ZT,{default:()=>A3e,fileUtils:()=>Hm});var jh=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,Um=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,qr="file:";var Hm={};ut(Hm,{makeArchiveFromLocator:()=>mQ,makeBufferFromLocator:()=>_T,makeLocator:()=>XT,makeSpec:()=>Aae,parseSpec:()=>VT});function VT(r){let{params:e,selector:t}=P.parseRange(r),i=K.toPortablePath(t);return{parentLocator:e&&typeof e.locator=="string"?P.parseLocator(e.locator):null,path:i}}function Aae({parentLocator:r,path:e,folderHash:t,protocol:i}){let n=r!==null?{locator:P.stringifyLocator(r)}:{},s=typeof t<"u"?{hash:t}:{};return P.makeRange({protocol:i,source:e,selector:e,params:{...s,...n}})}function XT(r,{parentLocator:e,path:t,folderHash:i,protocol:n}){return P.makeLocator(r,Aae({parentLocator:e,path:t,folderHash:i,protocol:n}))}async function mQ(r,{protocol:e,fetchOptions:t,inMemory:i=!1}){let{parentLocator:n,path:s}=P.parseFileStyleRange(r.reference,{protocol:e}),o=x.isAbsolute(s)?{packageFs:new jt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(n,t),a=o.localPath?{packageFs:new jt(Oe.root),prefixPath:x.relative(Oe.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=x.join(a.prefixPath,s);return await Ie.releaseAfterUseAsync(async()=>await Ci.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:P.getIdentVendorPath(r),compressionLevel:t.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function _T(r,{protocol:e,fetchOptions:t}){return(await mQ(r,{protocol:e,fetchOptions:t,inMemory:!0})).getBufferAndClose()}var EQ=class{supports(e,t){return!!e.reference.startsWith(qr)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:qr});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async fetchFromDisk(e,t){return mQ(e,{protocol:qr,fetchOptions:t})}};var o3e=2,IQ=class{supportsDescriptor(e,t){return e.range.match(jh)?!0:!!e.range.startsWith(qr)}supportsLocator(e,t){return!!e.reference.startsWith(qr)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return jh.test(e.range)&&(e=P.makeDescriptor(e,`${qr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=VT(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await _T(P.makeLocator(e,P.makeRange({protocol:qr,source:n,selector:n,params:{locator:P.stringifyLocator(s)}})),{protocol:qr,fetchOptions:i.fetchOptions}),a=li.makeHash(`${o3e}`,o).slice(0,6);return[XT(e,{parentLocator:s,path:n,folderHash:a,protocol:qr})]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var yQ=class{supports(e,t){return Um.test(e.reference)?!!e.reference.startsWith(qr):!1}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:qr}),s=x.isAbsolute(n)?{packageFs:new jt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new jt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.join(o.prefixPath,n),c=await a.readFilePromise(l);return await Ie.releaseAfterUseAsync(async()=>await Ci.convertToZip(c,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var wQ=class{supportsDescriptor(e,t){return Um.test(e.range)?!!(e.range.startsWith(qr)||jh.test(e.range)):!1}supportsLocator(e,t){return Um.test(e.reference)?!!e.reference.startsWith(qr):!1}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return jh.test(e.range)&&(e=P.makeDescriptor(e,`${qr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range;return n.startsWith(qr)&&(n=n.slice(qr.length)),[P.makeLocator(e,`${qr}${K.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var a3e={fetchers:[yQ,EQ],resolvers:[wQ,IQ]},A3e=a3e;var $T={};ut($T,{default:()=>g3e});var lae=Pe(J("querystring")),cae=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function uae(r){return r?cae.some(e=>!!r.match(e)):!1}function gae(r){let e;for(let a of cae)if(e=r.match(a),e)break;if(!e)throw new Error(l3e(r));let[,t,i,n,s="master"]=e,{commit:o}=lae.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:t,username:i,reponame:n,treeish:s}}function l3e(r){return`Input cannot be parsed as a valid GitHub URL ('${r}').`}var BQ=class{supports(e,t){return!!uae(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i=await Vt.get(this.getLocatorUrl(e,t),{configuration:t.project.configuration});return await M.mktempPromise(async n=>{let s=new jt(n);await Ci.extractArchiveTo(i,s,{stripComponents:1});let o=$a.splitRepoUrl(e.reference),a=x.join(n,"package.tgz");await Jt.prepareExternalProject(n,a,{configuration:t.project.configuration,report:t.report,workspace:o.extra.workspace,locator:e});let l=await M.readFilePromise(a);return await Ci.convertToZip(l,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,t){let{auth:i,username:n,reponame:s,treeish:o}=gae(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var u3e={hooks:{async fetchHostedRepository(r,e,t){if(r!==null)return r;let i=new BQ;if(!i.supports(e,t))return null;try{return await i.fetch(e,t)}catch{return null}}}},g3e=u3e;var eO={};ut(eO,{default:()=>h3e});var Gm=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,Ym=/^https?:/;var QQ=class{supports(e,t){return Gm.test(e.reference)?!!Ym.test(e.reference):!1}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i=await Vt.get(e.reference,{configuration:t.project.configuration});return await Ci.convertToZip(i,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var bQ=class{supportsDescriptor(e,t){return Gm.test(e.range)?!!Ym.test(e.range):!1}supportsLocator(e,t){return Gm.test(e.reference)?!!Ym.test(e.reference):!1}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){return[P.convertDescriptorToLocator(e)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var f3e={fetchers:[QQ],resolvers:[bQ]},h3e=f3e;var nO={};ut(nO,{default:()=>p4e});var Kae=Pe(Mae()),iO=J("util"),Pu=class extends De{constructor(){super(...arguments);this.private=z.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=z.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=z.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=z.Boolean("-2",!1,{hidden:!0});this.yes=z.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=z.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return i!==null?await this.executeProxy(t,i):await this.executeRegular(t)}async executeProxy(t,i){if(t.projectCwd!==null&&t.projectCwd!==this.context.cwd)throw new be("Cannot use the --install flag from within a project subdirectory");M.existsSync(this.context.cwd)||await M.mkdirPromise(this.context.cwd,{recursive:!0});let n=x.join(this.context.cwd,t.get("lockfileFilename"));M.existsSync(n)||await M.writeFilePromise(n,"");let s=await this.cli.run(["set","version",i],{quiet:!0});if(s!==0)return s;let o=[];return this.private&&o.push("-p"),this.workspace&&o.push("-w"),this.yes&&o.push("-y"),await M.mktempPromise(async a=>{let{code:l}=await Cr.pipevp("yarn",["init",...o],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Jt.makeScriptEnv({binFolder:a})});return l})}async executeRegular(t){var c;let i=null;try{i=(await je.find(t,this.context.cwd)).project}catch{i=null}M.existsSync(this.context.cwd)||await M.mkdirPromise(this.context.cwd,{recursive:!0});let n=await ot.tryFind(this.context.cwd)||new ot,s=Object.fromEntries(t.get("initFields").entries());n.load(s),n.name=(c=n.name)!=null?c:P.makeIdent(t.get("initScope"),x.basename(this.context.cwd)),n.packageManager=Lr&&Ie.isTaggedYarnVersion(Lr)?`yarn@${Lr}`:null,typeof n.raw.private>"u"&&(this.private||this.workspace&&n.workspaceDefinitions.length===0)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await M.mkdirPromise(x.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let o={};n.exportTo(o),iO.inspect.styles.name="cyan",this.context.stdout.write(`${(0,iO.inspect)(o,{depth:1/0,colors:!0,compact:!1})} +`);let g=await ye.find(i,this.context.plugins),{project:f,workspace:h}=await je.find(g,i);if(h===null)throw new ct(f.cwd,i);await f.restoreInstallState();let p=await Wt.getWorkspaceAccessibleBinaries(h);return p.has(c)===!1&&p.size===1&&typeof this.packages>"u"&&(c=Array.from(p)[0][0]),await Wt.executeWorkspaceAccessibleBinary(h,c,this.args,{packageAccessibleBinaries:p,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};Uu.paths=[["dlx"]],Uu.usage=ve.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var u4e={commands:[tp,Uu]},g4e=u4e;var bO={};ut(bO,{default:()=>p4e,fileUtils:()=>Zm});var rp=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,Xm=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,qr="file:";var Zm={};ut(Zm,{makeArchiveFromLocator:()=>UQ,makeBufferFromLocator:()=>QO,makeLocator:()=>BO,makeSpec:()=>Xae,parseSpec:()=>wO});function wO(r){let{params:e,selector:t}=P.parseRange(r),i=U.toPortablePath(t);return{parentLocator:e&&typeof e.locator=="string"?P.parseLocator(e.locator):null,path:i}}function Xae({parentLocator:r,path:e,folderHash:t,protocol:i}){let n=r!==null?{locator:P.stringifyLocator(r)}:{},s=typeof t<"u"?{hash:t}:{};return P.makeRange({protocol:i,source:e,selector:e,params:{...s,...n}})}function BO(r,{parentLocator:e,path:t,folderHash:i,protocol:n}){return P.makeLocator(r,Xae({parentLocator:e,path:t,folderHash:i,protocol:n}))}async function UQ(r,{protocol:e,fetchOptions:t,inMemory:i=!1}){let{parentLocator:n,path:s}=P.parseFileStyleRange(r.reference,{protocol:e}),o=x.isAbsolute(s)?{packageFs:new qt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(n,t),a=o.localPath?{packageFs:new qt(Oe.root),prefixPath:x.relative(Oe.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=x.join(a.prefixPath,s);return await Ie.releaseAfterUseAsync(async()=>await mi.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:P.getIdentVendorPath(r),compressionLevel:t.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function QO(r,{protocol:e,fetchOptions:t}){return(await UQ(r,{protocol:e,fetchOptions:t,inMemory:!0})).getBufferAndClose()}var KQ=class{supports(e,t){return!!e.reference.startsWith(qr)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:qr});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async fetchFromDisk(e,t){return UQ(e,{protocol:qr,fetchOptions:t})}};var f4e=2,HQ=class{supportsDescriptor(e,t){return e.range.match(rp)?!0:!!e.range.startsWith(qr)}supportsLocator(e,t){return!!e.reference.startsWith(qr)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return rp.test(e.range)&&(e=P.makeDescriptor(e,`${qr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=wO(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await QO(P.makeLocator(e,P.makeRange({protocol:qr,source:n,selector:n,params:{locator:P.stringifyLocator(s)}})),{protocol:qr,fetchOptions:i.fetchOptions}),a=li.makeHash(`${f4e}`,o).slice(0,6);return[BO(e,{parentLocator:s,path:n,folderHash:a,protocol:qr})]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var GQ=class{supports(e,t){return Xm.test(e.reference)?!!e.reference.startsWith(qr):!1}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:qr}),s=x.isAbsolute(n)?{packageFs:new qt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new qt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.join(o.prefixPath,n),c=await a.readFilePromise(l);return await Ie.releaseAfterUseAsync(async()=>await mi.convertToZip(c,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var YQ=class{supportsDescriptor(e,t){return Xm.test(e.range)?!!(e.range.startsWith(qr)||rp.test(e.range)):!1}supportsLocator(e,t){return Xm.test(e.reference)?!!e.reference.startsWith(qr):!1}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return rp.test(e.range)&&(e=P.makeDescriptor(e,`${qr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range;return n.startsWith(qr)&&(n=n.slice(qr.length)),[P.makeLocator(e,`${qr}${U.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var h4e={fetchers:[GQ,KQ],resolvers:[YQ,HQ]},p4e=h4e;var SO={};ut(SO,{default:()=>E4e});var Zae=Pe(J("querystring")),_ae=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function $ae(r){return r?_ae.some(e=>!!r.match(e)):!1}function eAe(r){let e;for(let a of _ae)if(e=r.match(a),e)break;if(!e)throw new Error(d4e(r));let[,t,i,n,s="master"]=e,{commit:o}=Zae.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:t,username:i,reponame:n,treeish:s}}function d4e(r){return`Input cannot be parsed as a valid GitHub URL ('${r}').`}var jQ=class{supports(e,t){return!!$ae(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i=await Xt.get(this.getLocatorUrl(e,t),{configuration:t.project.configuration});return await M.mktempPromise(async n=>{let s=new qt(n);await mi.extractArchiveTo(i,s,{stripComponents:1});let o=AA.splitRepoUrl(e.reference),a=x.join(n,"package.tgz");await Wt.prepareExternalProject(n,a,{configuration:t.project.configuration,report:t.report,workspace:o.extra.workspace,locator:e});let l=await M.readFilePromise(a);return await mi.convertToZip(l,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,t){let{auth:i,username:n,reponame:s,treeish:o}=eAe(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var m4e={hooks:{async fetchHostedRepository(r,e,t){if(r!==null)return r;let i=new jQ;if(!i.supports(e,t))return null;try{return await i.fetch(e,t)}catch{return null}}}},E4e=m4e;var vO={};ut(vO,{default:()=>y4e});var _m=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,$m=/^https?:/;var qQ=class{supports(e,t){return _m.test(e.reference)?!!$m.test(e.reference):!1}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i=await Xt.get(e.reference,{configuration:t.project.configuration});return await mi.convertToZip(i,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var JQ=class{supportsDescriptor(e,t){return _m.test(e.range)?!!$m.test(e.range):!1}supportsLocator(e,t){return _m.test(e.reference)?!!$m.test(e.reference):!1}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){return[P.convertDescriptorToLocator(e)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var I4e={fetchers:[qQ],resolvers:[JQ]},y4e=I4e;var kO={};ut(kO,{default:()=>wWe});var vAe=Pe(SAe()),DO=J("util"),Ku=class extends De{constructor(){super(...arguments);this.private=z.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=z.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=z.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=z.Boolean("-2",!1,{hidden:!0});this.yes=z.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=z.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return i!==null?await this.executeProxy(t,i):await this.executeRegular(t)}async executeProxy(t,i){if(t.projectCwd!==null&&t.projectCwd!==this.context.cwd)throw new be("Cannot use the --install flag from within a project subdirectory");M.existsSync(this.context.cwd)||await M.mkdirPromise(this.context.cwd,{recursive:!0});let n=x.join(this.context.cwd,t.get("lockfileFilename"));M.existsSync(n)||await M.writeFilePromise(n,"");let s=await this.cli.run(["set","version",i],{quiet:!0});if(s!==0)return s;let o=[];return this.private&&o.push("-p"),this.workspace&&o.push("-w"),this.yes&&o.push("-y"),await M.mktempPromise(async a=>{let{code:l}=await Cr.pipevp("yarn",["init",...o],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Wt.makeScriptEnv({binFolder:a})});return l})}async executeRegular(t){var c;let i=null;try{i=(await je.find(t,this.context.cwd)).project}catch{i=null}M.existsSync(this.context.cwd)||await M.mkdirPromise(this.context.cwd,{recursive:!0});let n=await ot.tryFind(this.context.cwd)||new ot,s=Object.fromEntries(t.get("initFields").entries());n.load(s),n.name=(c=n.name)!=null?c:P.makeIdent(t.get("initScope"),x.basename(this.context.cwd)),n.packageManager=Lr&&Ie.isTaggedYarnVersion(Lr)?`yarn@${Lr}`:null,typeof n.raw.private>"u"&&(this.private||this.workspace&&n.workspaceDefinitions.length===0)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await M.mkdirPromise(x.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let o={};n.exportTo(o),DO.inspect.styles.name="cyan",this.context.stdout.write(`${(0,DO.inspect)(o,{depth:1/0,colors:!0,compact:!1})} `);let a=x.join(this.context.cwd,ot.fileName);await M.changeFilePromise(a,`${JSON.stringify(o,null,2)} `,{automaticNewlines:!0});let l=x.join(this.context.cwd,"README.md");if(M.existsSync(l)||await M.writeFilePromise(l,`# ${P.stringifyIdent(n.name)} `),!i||i.cwd===this.context.cwd){let u=x.join(this.context.cwd,xt.lockfile);M.existsSync(u)||await M.writeFilePromise(u,"");let f=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!.yarn/cache","#.pnp.*"].map(L=>`${L} `).join(""),h=x.join(this.context.cwd,".gitignore");M.existsSync(h)||await M.writeFilePromise(h,f);let C=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(L=>`${L} -`).join(""),y=x.join(this.context.cwd,".gitattributes");M.existsSync(y)||await M.writeFilePromise(y,C);let B={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Kae.default)(B,t.get("initEditorConfig"));let v=`root = true +`).join(""),y=x.join(this.context.cwd,".gitattributes");M.existsSync(y)||await M.writeFilePromise(y,C);let B={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,vAe.default)(B,t.get("initEditorConfig"));let v=`root = true `;for(let[L,H]of Object.entries(B)){v+=` [${L}] -`;for(let[j,$]of Object.entries(H))v+=`${j.replace(/[A-Z]/g,W=>`_${W.toLowerCase()}`)} = ${$} -`}let D=x.join(this.context.cwd,".editorconfig");M.existsSync(D)||await M.writeFilePromise(D,v),M.existsSync(x.join(this.context.cwd,".git"))||await Cr.execvp("git",["init"],{cwd:this.context.cwd})}}};Pu.paths=[["init"]],Pu.usage=ve.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var h4e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Pu]},p4e=h4e;var sO={};ut(sO,{default:()=>C4e});var eA="portal:",tA="link:";var SQ=class{supports(e,t){return!!e.reference.startsWith(eA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:eA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:eA}),s=x.isAbsolute(n)?{packageFs:new jt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new jt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath),localPath:Oe.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new jt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,localPath:l}:{packageFs:new wo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot}}};var vQ=class{supportsDescriptor(e,t){return!!e.range.startsWith(eA)}supportsLocator(e,t){return!!e.reference.startsWith(eA)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(eA.length);return[P.makeLocator(e,`${eA}${K.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var xQ=class{supports(e,t){return!!e.reference.startsWith(tA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:tA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:tA}),s=x.isAbsolute(n)?{packageFs:new jt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new jt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath),localPath:Oe.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new jt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,discardFromLookup:!0,localPath:l}:{packageFs:new wo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,discardFromLookup:!0}}};var PQ=class{supportsDescriptor(e,t){return!!e.range.startsWith(tA)}supportsLocator(e,t){return!!e.reference.startsWith(tA)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(tA.length);return[P.makeLocator(e,`${tA}${K.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){return{...e,version:"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};var d4e={fetchers:[xQ,SQ],resolvers:[PQ,vQ]},C4e=d4e;var MO={};ut(MO,{default:()=>N8e});var aO=(r,e)=>`${r}@${e}`,Uae=(r,e)=>{let t=e.indexOf("#"),i=t>=0?e.substring(t+1):e;return aO(r,i)};var Yae=(r,e={})=>{let t=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||t>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:t,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=Q4e(r,s),l=!1,c=0;do l=AO(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=jm(a);if(AO(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +`;for(let[j,$]of Object.entries(H)){let V=j.replace(/[A-Z]/g,W=>`_${W.toLowerCase()}`);v+=`${V} = ${$} +`}}let D=x.join(this.context.cwd,".editorconfig");M.existsSync(D)||await M.writeFilePromise(D,v),M.existsSync(x.join(this.context.cwd,".git"))||await Cr.execvp("git",["init"],{cwd:this.context.cwd})}}};Ku.paths=[["init"]],Ku.usage=ve.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var yWe={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Ku]},wWe=yWe;var RO={};ut(RO,{default:()=>QWe});var lA="portal:",cA="link:";var WQ=class{supports(e,t){return!!e.reference.startsWith(lA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:lA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:lA}),s=x.isAbsolute(n)?{packageFs:new qt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new qt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath),localPath:Oe.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new qt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,localPath:l}:{packageFs:new So(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot}}};var zQ=class{supportsDescriptor(e,t){return!!e.range.startsWith(lA)}supportsLocator(e,t){return!!e.reference.startsWith(lA)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(lA.length);return[P.makeLocator(e,`${lA}${U.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var VQ=class{supports(e,t){return!!e.reference.startsWith(cA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:cA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:cA}),s=x.isAbsolute(n)?{packageFs:new qt(Oe.root),prefixPath:Oe.dot,localPath:Oe.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new qt(Oe.root),prefixPath:x.relative(Oe.root,s.localPath),localPath:Oe.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new qt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,discardFromLookup:!0,localPath:l}:{packageFs:new So(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Oe.dot,discardFromLookup:!0}}};var XQ=class{supportsDescriptor(e,t){return!!e.range.startsWith(cA)}supportsLocator(e,t){return!!e.reference.startsWith(cA)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(cA.length);return[P.makeLocator(e,`${cA}${U.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){return{...e,version:"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};var BWe={fetchers:[VQ,WQ],resolvers:[XQ,zQ]},QWe=BWe;var hM={};ut(hM,{default:()=>Hze});var NO=(r,e)=>`${r}@${e}`,xAe=(r,e)=>{let t=e.indexOf("#"),i=t>=0?e.substring(t+1):e;return NO(r,i)};var kAe=(r,e={})=>{let t=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||t>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:t,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=kWe(r,s),l=!1,c=0;do l=LO(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=eE(a);if(LO(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: ${u}, next tree: -${jm(a)}`);let f=jae(a);if(f)throw new Error(`${f}, after hoisting finished: -${jm(a)}`)}return s.debugLevel>=2&&console.log(jm(a)),b4e(a)},m4e=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())t.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),t},E4e=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of r)u=g.dependencies.get(c.name),u&&t.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),t},Hae=(r,e)=>{if(e.decoupled)return e;let{name:t,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:p,hoistedTo:C}=e,y={name:t,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:new Map(p),hoistedTo:new Map(C)},B=y.dependencies.get(t);return B&&B.ident==y.ident&&y.dependencies.set(t,y),r.dependencies.set(y.name,y),y},I4e=(r,e)=>{let t=new Map([[r.name,[r.ident]]]);for(let n of r.dependencies.values())r.peerNames.has(n.name)||t.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!r.peerNames.has(s)){let a=t.get(s);a||(a=[],t.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return t},oO=r=>{let e=new Set,t=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!r.peerNames.has(s)){let o=r.dependencies.get(s);o&&!e.has(o)&&t(o,n)}e.add(i)}};for(let i of r.dependencies.values())r.peerNames.has(i.name)||t(i);return e},AO=(r,e,t,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=S4e(o),l=I4e(o,a),c=r==o?new Map:n.fastLookupPossible?m4e(e):E4e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([C,y])=>[C,y[0]])),p=new Map;do{let C=B4e(r,e,t,c,h,l,i,p,n);C.isGraphChanged&&(f=!0),C.anotherRoundNeeded&&(g=!0),u=!1;for(let[y,B]of l)B.length>1&&!o.dependencies.has(y)&&(h.delete(y),B.shift(),h.set(y,B[0]),u=!0)}while(u);for(let C of o.dependencies.values())if(!o.peerNames.has(C.name)&&!t.has(C.locator)){t.add(C.locator);let y=AO(r,[...e,C],t,p,n);y.isGraphChanged&&(f=!0),y.anotherRoundNeeded&&(g=!0),t.delete(C.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},y4e=r=>{for(let[e,t]of r.dependencies)if(!r.peerNames.has(e)&&t.ident!==r.ident)return!0;return!1},w4e=(r,e,t,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(y=>Di(y)).join("\u2192")}`);let h=t[t.length-1],C=!(i.ident===h.ident);if(l&&!C&&(g="- self-reference"),C&&(C=i.dependencyKind!==1,l&&!C&&(g="- workspace")),C&&i.dependencyKind===2&&(C=!y4e(i),l&&!C&&(g="- external soft link with unhoisted dependencies")),C&&(C=h.dependencyKind!==1||h.hoistedFrom.has(i.name)||e.size===1,l&&!C&&(g=h.reasons.get(i.name))),C&&(C=!r.peerNames.has(i.name),l&&!C&&(g=`- cannot shadow peer: ${Di(r.originalDependencies.get(i.name).locator)} at ${u}`)),C){let y=!1,B=n.get(i.name);if(y=!B||B.ident===i.ident,l&&!y&&(g=`- filled by: ${Di(B.locator)} at ${u}`),y)for(let v=t.length-1;v>=1;v--){let L=t[v].dependencies.get(i.name);if(L&&L.ident!==i.ident){y=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${Di(L.locator)} at ${t.slice(0,v).map(j=>Di(j.locator)).join("\u2192")}`);break}}C=y}if(C&&(C=s.get(i.name)===i.ident,l&&!C&&(g=`- filled by: ${Di(o.get(i.name)[0])} at ${u}`)),C){let y=!0,B=new Set(i.peerNames);for(let v=t.length-1;v>=1;v--){let D=t[v];for(let L of B){if(D.peerNames.has(L)&&D.originalDependencies.has(L))continue;let H=D.dependencies.get(L);H&&r.dependencies.get(L)!==H&&(v===t.length-1?f.add(H):(f=null,y=!1,l&&(g=`- peer dependency ${Di(H.locator)} from parent ${Di(D.locator)} was not hoisted to ${u}`))),B.delete(L)}if(!y)break}C=y}if(C&&!c)for(let y of i.hoistedDependencies.values()){let B=n.get(y.name)||r.dependencies.get(y.name);if(!B||y.ident!==B.ident){C=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${Di(y.locator)}, available: ${Di(B==null?void 0:B.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:C?0:1,reason:g}},DQ=r=>`${r.name}@${r.locator}`,B4e=(r,e,t,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(B,v,D,L,H)=>{if(u.has(L))return;let j=[...v,DQ(L)],$=[...D,DQ(L)],V=new Map,W=new Map;for(let re of oO(L)){let O=w4e(c,t,[c,...B,L],re,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(W.set(re,O),O.isHoistable===2)for(let F of O.dependsOn){let ue=V.get(F.name)||new Set;ue.add(re.name),V.set(F.name,ue)}}let Z=new Set,A=(re,O,F)=>{if(!Z.has(re)){Z.add(re),W.set(re,{isHoistable:1,reason:F});for(let ue of V.get(re.name)||[])A(L.dependencies.get(ue),O,l.debugLevel>=2?`- peer dependency ${Di(re.locator)} from parent ${Di(L.locator)} was not hoisted`:"")}};for(let[re,O]of W)O.isHoistable===1&&A(re,O,O.reason);let ae=!1;for(let re of W.keys())if(!Z.has(re)){f=!0;let O=o.get(L);O&&O.has(re.name)&&(g=!0),ae=!0,L.dependencies.delete(re.name),L.hoistedDependencies.set(re.name,re),L.reasons.delete(re.name);let F=c.dependencies.get(re.name);if(l.debugLevel>=2){let ue=Array.from(v).concat([L.locator]).map(ke=>Di(ke)).join("\u2192"),he=c.hoistedFrom.get(re.name);he||(he=[],c.hoistedFrom.set(re.name,he)),he.push(ue),L.hoistedTo.set(re.name,Array.from(e).map(ke=>Di(ke.locator)).join("\u2192"))}if(!F)c.ident!==re.ident&&(c.dependencies.set(re.name,re),H.add(re));else for(let ue of re.references)F.references.add(ue)}if(L.dependencyKind===2&&ae&&(g=!0),l.check){let re=jae(r);if(re)throw new Error(`${re}, after hoisting dependencies of ${[c,...B,L].map(O=>Di(O.locator)).join("\u2192")}: -${jm(r)}`)}let ge=oO(L);for(let re of ge)if(Z.has(re)){let O=W.get(re);if((n.get(re.name)===re.ident||!L.reasons.has(re.name))&&O.isHoistable!==0&&L.reasons.set(re.name,O.reason),!re.isHoistBorder&&$.indexOf(DQ(re))<0){u.add(L);let ue=Hae(L,re);h([...B,L],j,$,ue,C),u.delete(L)}}},p,C=new Set(oO(c)),y=Array.from(e).map(B=>DQ(B));do{p=C,C=new Set;for(let B of p){if(B.locator===c.locator||B.isHoistBorder)continue;let v=Hae(c,B);h([],Array.from(t),y,v,C)}}while(C.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},jae=r=>{let e=[],t=new Set,i=new Set,n=(s,o,a)=>{if(t.has(s)||(t.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>Di(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,C=`${h?` hoisted to ${h}`:""}`,y=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${y} - broken require promise for ${c.name}${C}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${y} - broken require promise: no required dependency ${c.name}${C} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(r,r.dependencies,r),e.join(` -`)},Q4e=(r,e)=>{let{identName:t,name:i,reference:n,peerNames:s}=r,o={name:i,references:new Set([n]),locator:aO(t,n),ident:Uae(t,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[r,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:C,peerNames:y,hoistPriority:B,dependencyKind:v}=c,D=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([C]),locator:aO(p,C),ident:Uae(p,C),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(y),reasons:new Map,decoupled:!0,isHoistBorder:D?D.has(h):!1,hoistPriority:B||0,dependencyKind:v||0,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=C=>{if(!h.has(C)){h.add(C),C.decoupled=!1;for(let y of C.dependencies.values())C.peerNames.has(y.name)||p(y)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of r.dependencies)l(c,o);return o},lO=r=>r.substring(0,r.indexOf("@",1)),b4e=r=>{let e={name:r.name,identName:lO(r.locator),references:new Set(r.references),dependencies:new Set},t=new Set([r]),i=(n,s,o)=>{let a=t.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:lO(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){t.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);t.delete(n)}};for(let n of r.dependencies.values())i(n,r,e);return e},S4e=r=>{let e=new Map,t=new Set([r]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!t.has(a);if(n(a).dependents.add(o.ident),!l){t.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of r.dependencies.values())r.peerNames.has(o.name)||s(r,o);return e},Di=r=>{if(!r)return"none";let e=r.indexOf("@",1),t=r.substring(0,e);t.endsWith("$wsroot$")&&(t=`wh:${t.replace("$wsroot$","")}`);let i=r.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(t=`v:${t}`),n.startsWith("workspace")&&(t=`w:${t}`,n=""),`${t}${n?`@${n}`:""}`}else return`${t}`},Gae=5e4,jm=r=>{let e=0,t=(n,s,o="")=>{if(e>Gae||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name===u.name?0:c.name>u.name?1:-1),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+Di(u.locator)+(g?` ${g}`:"")} -`,l+=t(u,s,`${o}${cGae?` +${eE(a)}`);let f=RAe(a);if(f)throw new Error(`${f}, after hoisting finished: +${eE(a)}`)}return s.debugLevel>=2&&console.log(eE(a)),RWe(a)},bWe=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())t.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),t},SWe=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of r)u=g.dependencies.get(c.name),u&&t.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),t},PAe=(r,e)=>{if(e.decoupled)return e;let{name:t,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:p,hoistedTo:C}=e,y={name:t,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:new Map(p),hoistedTo:new Map(C)},B=y.dependencies.get(t);return B&&B.ident==y.ident&&y.dependencies.set(t,y),r.dependencies.set(y.name,y),y},vWe=(r,e)=>{let t=new Map([[r.name,[r.ident]]]);for(let n of r.dependencies.values())r.peerNames.has(n.name)||t.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!r.peerNames.has(s)){let a=t.get(s);a||(a=[],t.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return t},FO=r=>{let e=new Set,t=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!r.peerNames.has(s)){let o=r.dependencies.get(s);o&&!e.has(o)&&t(o,n)}e.add(i)}};for(let i of r.dependencies.values())r.peerNames.has(i.name)||t(i);return e},LO=(r,e,t,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=FWe(o),l=vWe(o,a),c=r==o?new Map:n.fastLookupPossible?bWe(e):SWe(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([C,y])=>[C,y[0]])),p=new Map;do{let C=DWe(r,e,t,c,h,l,i,p,n);C.isGraphChanged&&(f=!0),C.anotherRoundNeeded&&(g=!0),u=!1;for(let[y,B]of l)B.length>1&&!o.dependencies.has(y)&&(h.delete(y),B.shift(),h.set(y,B[0]),u=!0)}while(u);for(let C of o.dependencies.values())if(!o.peerNames.has(C.name)&&!t.has(C.locator)){t.add(C.locator);let y=LO(r,[...e,C],t,p,n);y.isGraphChanged&&(f=!0),y.anotherRoundNeeded&&(g=!0),t.delete(C.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},xWe=r=>{for(let[e,t]of r.dependencies)if(!r.peerNames.has(e)&&t.ident!==r.ident)return!0;return!1},PWe=(r,e,t,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(y=>ki(y)).join("\u2192")}`);let h=t[t.length-1],C=!(i.ident===h.ident);if(l&&!C&&(g="- self-reference"),C&&(C=i.dependencyKind!==1,l&&!C&&(g="- workspace")),C&&i.dependencyKind===2&&(C=!xWe(i),l&&!C&&(g="- external soft link with unhoisted dependencies")),C&&(C=h.dependencyKind!==1||h.hoistedFrom.has(i.name)||e.size===1,l&&!C&&(g=h.reasons.get(i.name))),C&&(C=!r.peerNames.has(i.name),l&&!C&&(g=`- cannot shadow peer: ${ki(r.originalDependencies.get(i.name).locator)} at ${u}`)),C){let y=!1,B=n.get(i.name);if(y=!B||B.ident===i.ident,l&&!y&&(g=`- filled by: ${ki(B.locator)} at ${u}`),y)for(let v=t.length-1;v>=1;v--){let L=t[v].dependencies.get(i.name);if(L&&L.ident!==i.ident){y=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${ki(L.locator)} at ${t.slice(0,v).map(j=>ki(j.locator)).join("\u2192")}`);break}}C=y}if(C&&(C=s.get(i.name)===i.ident,l&&!C&&(g=`- filled by: ${ki(o.get(i.name)[0])} at ${u}`)),C){let y=!0,B=new Set(i.peerNames);for(let v=t.length-1;v>=1;v--){let D=t[v];for(let L of B){if(D.peerNames.has(L)&&D.originalDependencies.has(L))continue;let H=D.dependencies.get(L);H&&r.dependencies.get(L)!==H&&(v===t.length-1?f.add(H):(f=null,y=!1,l&&(g=`- peer dependency ${ki(H.locator)} from parent ${ki(D.locator)} was not hoisted to ${u}`))),B.delete(L)}if(!y)break}C=y}if(C&&!c)for(let y of i.hoistedDependencies.values()){let B=n.get(y.name)||r.dependencies.get(y.name);if(!B||y.ident!==B.ident){C=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${ki(y.locator)}, available: ${ki(B==null?void 0:B.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:C?0:1,reason:g}},ZQ=r=>`${r.name}@${r.locator}`,DWe=(r,e,t,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(B,v,D,L,H)=>{if(u.has(L))return;let j=[...v,ZQ(L)],$=[...D,ZQ(L)],V=new Map,W=new Map;for(let re of FO(L)){let O=PWe(c,t,[c,...B,L],re,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(W.set(re,O),O.isHoistable===2)for(let F of O.dependsOn){let ue=V.get(F.name)||new Set;ue.add(re.name),V.set(F.name,ue)}}let _=new Set,A=(re,O,F)=>{if(!_.has(re)){_.add(re),W.set(re,{isHoistable:1,reason:F});for(let ue of V.get(re.name)||[])A(L.dependencies.get(ue),O,l.debugLevel>=2?`- peer dependency ${ki(re.locator)} from parent ${ki(L.locator)} was not hoisted`:"")}};for(let[re,O]of W)O.isHoistable===1&&A(re,O,O.reason);let Ae=!1;for(let re of W.keys())if(!_.has(re)){f=!0;let O=o.get(L);O&&O.has(re.name)&&(g=!0),Ae=!0,L.dependencies.delete(re.name),L.hoistedDependencies.set(re.name,re),L.reasons.delete(re.name);let F=c.dependencies.get(re.name);if(l.debugLevel>=2){let ue=Array.from(v).concat([L.locator]).map(ke=>ki(ke)).join("\u2192"),pe=c.hoistedFrom.get(re.name);pe||(pe=[],c.hoistedFrom.set(re.name,pe)),pe.push(ue),L.hoistedTo.set(re.name,Array.from(e).map(ke=>ki(ke.locator)).join("\u2192"))}if(!F)c.ident!==re.ident&&(c.dependencies.set(re.name,re),H.add(re));else for(let ue of re.references)F.references.add(ue)}if(L.dependencyKind===2&&Ae&&(g=!0),l.check){let re=RAe(r);if(re)throw new Error(`${re}, after hoisting dependencies of ${[c,...B,L].map(O=>ki(O.locator)).join("\u2192")}: +${eE(r)}`)}let ge=FO(L);for(let re of ge)if(_.has(re)){let O=W.get(re);if((n.get(re.name)===re.ident||!L.reasons.has(re.name))&&O.isHoistable!==0&&L.reasons.set(re.name,O.reason),!re.isHoistBorder&&$.indexOf(ZQ(re))<0){u.add(L);let ue=PAe(L,re);h([...B,L],j,$,ue,C),u.delete(L)}}},p,C=new Set(FO(c)),y=Array.from(e).map(B=>ZQ(B));do{p=C,C=new Set;for(let B of p){if(B.locator===c.locator||B.isHoistBorder)continue;let v=PAe(c,B);h([],Array.from(t),y,v,C)}}while(C.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},RAe=r=>{let e=[],t=new Set,i=new Set,n=(s,o,a)=>{if(t.has(s)||(t.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>ki(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,C=`${h?` hoisted to ${h}`:""}`,y=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${y} - broken require promise for ${c.name}${C}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${y} - broken require promise: no required dependency ${c.name}${C} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(r,r.dependencies,r),e.join(` +`)},kWe=(r,e)=>{let{identName:t,name:i,reference:n,peerNames:s}=r,o={name:i,references:new Set([n]),locator:NO(t,n),ident:xAe(t,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[r,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:C,peerNames:y,hoistPriority:B,dependencyKind:v}=c,D=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([C]),locator:NO(p,C),ident:xAe(p,C),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(y),reasons:new Map,decoupled:!0,isHoistBorder:D?D.has(h):!1,hoistPriority:B||0,dependencyKind:v||0,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=C=>{if(!h.has(C)){h.add(C),C.decoupled=!1;for(let y of C.dependencies.values())C.peerNames.has(y.name)||p(y)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of r.dependencies)l(c,o);return o},TO=r=>r.substring(0,r.indexOf("@",1)),RWe=r=>{let e={name:r.name,identName:TO(r.locator),references:new Set(r.references),dependencies:new Set},t=new Set([r]),i=(n,s,o)=>{let a=t.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:TO(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){t.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);t.delete(n)}};for(let n of r.dependencies.values())i(n,r,e);return e},FWe=r=>{let e=new Map,t=new Set([r]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!t.has(a);if(n(a).dependents.add(o.ident),!l){t.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of r.dependencies.values())r.peerNames.has(o.name)||s(r,o);return e},ki=r=>{if(!r)return"none";let e=r.indexOf("@",1),t=r.substring(0,e);t.endsWith("$wsroot$")&&(t=`wh:${t.replace("$wsroot$","")}`);let i=r.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(t=`v:${t}`),n.startsWith("workspace")&&(t=`w:${t}`,n=""),`${t}${n?`@${n}`:""}`}else return`${t}`},DAe=5e4,eE=r=>{let e=0,t=(n,s,o="")=>{if(e>DAe||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name===u.name?0:c.name>u.name?1:-1),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+ki(u.locator)+(g?` ${g}`:"")} +`,l+=t(u,s,`${o}${cDAe?` Tree is too large, part of the tree has been dunped -`:"")};var qm=(i=>(i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none",i))(qm||{}),qae="node_modules",Du="$wsroot$";var Jm=(r,e)=>{let{packageTree:t,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=x4e(r,e),o=null;if(n.length===0){let a=Yae(t,{hoistingLimits:i});o=D4e(r,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ea=r=>`${r.name}@${r.reference}`,uO=r=>{let e=new Map;for(let[t,i]of r.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(t)}for(let t of e.values())t.locations=t.locations.sort((i,n)=>{let s=i.split(x.delimiter).length,o=n.split(x.delimiter).length;return n===i?0:s!==o?o-s:n>i?1:-1});return e},Jae=(r,e)=>{let t=P.isVirtualLocator(r)?P.devirtualizeLocator(r):r,i=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e;return P.areLocatorsEqual(t,i)},cO=(r,e,t,i)=>{if(r.linkType!=="SOFT")return!1;let n=K.toPortablePath(t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(r.packageLocation):r.packageLocation);return x.contains(i,n)===null},v4e=r=>{let e=r.getPackageInformation(r.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(r.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=K.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=r.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ea(f);if(l.has(p))return;l.add(p);let C=r.getPackageInformation(f);if(C){let y=h?ea(h):"";if(ea(f)!==y&&C.linkType==="SOFT"&&!cO(C,f,r,i)){let B=Wae(C,f,r);(!a.get(B)||f.reference.startsWith("workspace:"))&&a.set(B,f)}for(let[B,v]of C.packageDependencies)v!==null&&(C.packagePeers.has(B)||c(r.getLocator(B,v),f))}};for(let f of o)c(f,null);let u=i.split(x.sep);for(let f of a.values()){let h=r.getPackageInformation(f),C=K.toPortablePath(h.packageLocation.slice(0,-1)).split(x.sep).slice(u.length),y=s;for(let B of C){let v=y.children.get(B);v||(v={children:new Map},y.children.set(B,v)),y=v}y.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ea(h),C=n.get(p);C||(C=new Set,n.set(p,C)),C.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},x4e=(r,e)=>{let t=[],i=!1,n=new Map,s=v4e(r),o=r.getPackageInformation(r.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=r.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=K.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,dependencyKind:1},u=new Map,g=(h,p)=>`${ea(p)}:${h}`,f=(h,p,C,y,B,v,D,L)=>{var re,O;let H=g(h,C),j=u.get(H),$=!!j;!$&&C.name===a.name&&C.reference===a.reference&&(j=c,u.set(H,c));let V=cO(p,C,r,l);if(!j){let F=0;V?F=2:p.linkType==="SOFT"&&C.name.endsWith(Du)&&(F=1),j={name:h,identName:C.name,reference:C.reference,dependencies:new Set,peerNames:F===1?new Set:p.packagePeers,dependencyKind:F},u.set(H,j)}let W;if(V?W=2:B.linkType==="SOFT"?W=1:W=0,j.hoistPriority=Math.max(j.hoistPriority||0,W),L&&!V){let F=ea({name:y.identName,reference:y.reference}),ue=n.get(F)||new Set;n.set(F,ue),ue.add(j.name)}let Z=new Map(p.packageDependencies);if(e.project){let F=e.project.workspacesByCwd.get(K.toPortablePath(p.packageLocation.slice(0,-1)));if(F){let ue=new Set([...Array.from(F.manifest.peerDependencies.values(),he=>P.stringifyIdent(he)),...Array.from(F.manifest.peerDependenciesMeta.keys())]);for(let he of ue)Z.has(he)||(Z.set(he,v.get(he)||null),j.peerNames.add(he))}}let A=ea({name:C.name.replace(Du,""),reference:C.reference}),ae=s.get(A);if(ae)for(let F of ae)Z.set(`${F.name}${Du}`,F.reference);(p!==B||p.linkType!=="SOFT"||!V&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(D)))&&y.dependencies.add(j);let ge=C!==a&&p.linkType==="SOFT"&&!C.name.endsWith(Du)&&!V;if(!$&&!ge){let F=new Map;for(let[ue,he]of Z)if(he!==null){let ke=r.getLocator(ue,he),Fe=r.getLocator(ue.replace(Du,""),he),Ne=r.getPackageInformation(Fe);if(Ne===null)throw new Error("Assertion failed: Expected the package to have been registered");let oe=cO(Ne,ke,r,l);if(e.validateExternalSoftLinks&&e.project&&oe){Ne.packageDependencies.size>0&&(i=!0);for(let[qe,ne]of Ne.packageDependencies)if(ne!==null){let Y=P.parseLocator(Array.isArray(ne)?`${ne[0]}@${ne[1]}`:`${qe}@${ne}`);if(ea(Y)!==ea(ke)){let pe=Z.get(qe);if(pe){let ie=P.parseLocator(Array.isArray(pe)?`${pe[0]}@${pe[1]}`:`${qe}@${pe}`);Jae(ie,Y)||t.push({messageName:71,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(ke.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${C.name}@${C.reference}`))} dependency ${P.prettyLocator(e.project.configuration,Y)} conflicts with parent dependency ${P.prettyLocator(e.project.configuration,ie)}`})}else{let ie=F.get(qe);if(ie){let de=ie.target,tt=P.parseLocator(Array.isArray(de)?`${de[0]}@${de[1]}`:`${qe}@${de}`);Jae(tt,Y)||t.push({messageName:71,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(ke.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${C.name}@${C.reference}`))} dependency ${P.prettyLocator(e.project.configuration,Y)} conflicts with dependency ${P.prettyLocator(e.project.configuration,tt)} from sibling portal ${P.prettyIdent(e.project.configuration,P.parseIdent(ie.portal.name))}`})}else F.set(qe,{target:Y.reference,portal:ke})}}}}let le=(re=e.hoistingLimitsByCwd)==null?void 0:re.get(D),we=oe?D:x.relative(l,K.toPortablePath(Ne.packageLocation))||Oe.dot,fe=(O=e.hoistingLimitsByCwd)==null?void 0:O.get(we);f(ue,Ne,ke,j,p,Z,we,le==="dependencies"||fe==="dependencies"||fe==="workspaces")}}};return f(a.name,o,a,c,o,o.packageDependencies,Oe.dot,!1),{packageTree:c,hoistingLimits:n,errors:t,preserveSymlinksRequired:i}};function Wae(r,e,t){let i=t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(r.packageLocation):r.packageLocation;return K.toPortablePath(i||r.packageLocation)}function P4e(r,e,t){let i=e.getLocator(r.name.replace(Du,""),r.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return t.pnpifyFs?(o=K.toPortablePath(n.packageLocation),s="SOFT"):(o=Wae(n,r,e),s=n.linkType),{linkType:s,target:o}}var D4e=(r,e,t)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=P4e(u,r,t);return{locator:ea(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:Ur(g),name:Ur(f)}:{scope:null,name:Ur(g)}},o=new Set,a=(u,g,f)=>{if(o.has(u))return;o.add(u);let h=Array.from(u.references).sort().join("#");for(let p of u.dependencies){let C=Array.from(p.references).sort().join("#");if(p.identName===u.identName&&C===h)continue;let y=Array.from(p.references).sort(),B={name:p.identName,reference:y[0]},{name:v,scope:D}=s(p.name),L=D?[D,v]:[v],H=x.join(g,qae),j=x.join(H,...L),$=`${f}/${B.name}`,V=n(B,f,y.slice(1)),W=!1;if(V.linkType==="SOFT"&&t.project){let A=t.project.workspacesByCwd.get(V.target.slice(0,-1));W=!!(A&&!A.manifest.name)}let Z=V.linkType==="SOFT"&&j.startsWith(V.target);if(!p.name.endsWith(Du)&&!W&&!Z){let A=i.get(j);if(A){if(A.dirList)throw new Error(`Assertion failed: ${j} cannot merge dir node with leaf node`);{let O=P.parseLocator(A.locator),F=P.parseLocator(V.locator);if(A.linkType!==V.linkType)throw new Error(`Assertion failed: ${j} cannot merge nodes with different link types ${A.nodePath}/${P.stringifyLocator(O)} and ${f}/${P.stringifyLocator(F)}`);if(O.identHash!==F.identHash)throw new Error(`Assertion failed: ${j} cannot merge nodes with different idents ${A.nodePath}/${P.stringifyLocator(O)} and ${f}/s${P.stringifyLocator(F)}`);V.aliases=[...V.aliases,...A.aliases,P.parseLocator(A.locator).reference]}}i.set(j,V);let ae=j.split("/"),ge=ae.indexOf(qae),re=ae.length-1;for(;ge>=0&&re>ge;){let O=K.toPortablePath(ae.slice(0,re).join(x.sep)),F=Ur(ae[re]),ue=i.get(O);if(!ue)i.set(O,{dirList:new Set([F])});else if(ue.dirList){if(ue.dirList.has(F))break;ue.dirList.add(F)}re--}}a(p,V.linkType==="SOFT"?V.target:j,$)}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var vO={};ut(vO,{PnpInstaller:()=>Fu,PnpLinker:()=>ll,default:()=>a8e,getPnpPath:()=>cl,jsInstallUtils:()=>uo,pnpUtils:()=>rE,quotePathIfNeeded:()=>TAe});var NAe=Pe(Xr()),LAe=J("url");var zae={["DEFAULT"]:{collapsed:!1,next:{["*"]:"DEFAULT"}},["TOP_LEVEL"]:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA",["*"]:"DEFAULT"}},["FALLBACK_EXCLUSION_LIST"]:{collapsed:!1,next:{["*"]:"FALLBACK_EXCLUSION_ENTRIES"}},["FALLBACK_EXCLUSION_ENTRIES"]:{collapsed:!0,next:{["*"]:"FALLBACK_EXCLUSION_DATA"}},["FALLBACK_EXCLUSION_DATA"]:{collapsed:!0,next:{["*"]:"DEFAULT"}},["PACKAGE_REGISTRY_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_REGISTRY_ENTRIES"}},["PACKAGE_REGISTRY_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_STORE_DATA"}},["PACKAGE_STORE_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_STORE_ENTRIES"}},["PACKAGE_STORE_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_INFORMATION_DATA"}},["PACKAGE_INFORMATION_DATA"]:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES",["*"]:"DEFAULT"}},["PACKAGE_DEPENDENCIES"]:{collapsed:!1,next:{["*"]:"PACKAGE_DEPENDENCY"}},["PACKAGE_DEPENDENCY"]:{collapsed:!0,next:{["*"]:"DEFAULT"}}};function k4e(r,e,t){let i="";i+="[";for(let n=0,s=r.length;n"u"||(a!==0&&(n+=", "),n+=JSON.stringify(l),n+=": ",n+=kQ(l,c,e,t).replace(/^ +/g,""),a+=1)}return n+="}",n}function N4e(r,e,t){let i=Object.keys(r),n=`${t} `,s="";s+=t,s+=`{ +`:"")};var tE=(i=>(i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none",i))(tE||{}),FAe="node_modules",Hu="$wsroot$";var rE=(r,e)=>{let{packageTree:t,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=LWe(r,e),o=null;if(n.length===0){let a=kAe(t,{hoistingLimits:i});o=OWe(r,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},sa=r=>`${r.name}@${r.reference}`,MO=r=>{let e=new Map;for(let[t,i]of r.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(t)}for(let t of e.values())t.locations=t.locations.sort((i,n)=>{let s=i.split(x.delimiter).length,o=n.split(x.delimiter).length;return n===i?0:s!==o?o-s:n>i?1:-1});return e},NAe=(r,e)=>{let t=P.isVirtualLocator(r)?P.devirtualizeLocator(r):r,i=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e;return P.areLocatorsEqual(t,i)},OO=(r,e,t,i)=>{if(r.linkType!=="SOFT")return!1;let n=U.toPortablePath(t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(r.packageLocation):r.packageLocation);return x.contains(i,n)===null},NWe=r=>{let e=r.getPackageInformation(r.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(r.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=U.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=r.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=sa(f);if(l.has(p))return;l.add(p);let C=r.getPackageInformation(f);if(C){let y=h?sa(h):"";if(sa(f)!==y&&C.linkType==="SOFT"&&!OO(C,f,r,i)){let B=LAe(C,f,r);(!a.get(B)||f.reference.startsWith("workspace:"))&&a.set(B,f)}for(let[B,v]of C.packageDependencies)v!==null&&(C.packagePeers.has(B)||c(r.getLocator(B,v),f))}};for(let f of o)c(f,null);let u=i.split(x.sep);for(let f of a.values()){let h=r.getPackageInformation(f),C=U.toPortablePath(h.packageLocation.slice(0,-1)).split(x.sep).slice(u.length),y=s;for(let B of C){let v=y.children.get(B);v||(v={children:new Map},y.children.set(B,v)),y=v}y.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=sa(h),C=n.get(p);C||(C=new Set,n.set(p,C)),C.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},LWe=(r,e)=>{let t=[],i=!1,n=new Map,s=NWe(r),o=r.getPackageInformation(r.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=r.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=U.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,dependencyKind:1},u=new Map,g=(h,p)=>`${sa(p)}:${h}`,f=(h,p,C,y,B,v,D,L)=>{var re,O;let H=g(h,C),j=u.get(H),$=!!j;!$&&C.name===a.name&&C.reference===a.reference&&(j=c,u.set(H,c));let V=OO(p,C,r,l);if(!j){let F=0;V?F=2:p.linkType==="SOFT"&&C.name.endsWith(Hu)&&(F=1),j={name:h,identName:C.name,reference:C.reference,dependencies:new Set,peerNames:F===1?new Set:p.packagePeers,dependencyKind:F},u.set(H,j)}let W;if(V?W=2:B.linkType==="SOFT"?W=1:W=0,j.hoistPriority=Math.max(j.hoistPriority||0,W),L&&!V){let F=sa({name:y.identName,reference:y.reference}),ue=n.get(F)||new Set;n.set(F,ue),ue.add(j.name)}let _=new Map(p.packageDependencies);if(e.project){let F=e.project.workspacesByCwd.get(U.toPortablePath(p.packageLocation.slice(0,-1)));if(F){let ue=new Set([...Array.from(F.manifest.peerDependencies.values(),pe=>P.stringifyIdent(pe)),...Array.from(F.manifest.peerDependenciesMeta.keys())]);for(let pe of ue)_.has(pe)||(_.set(pe,v.get(pe)||null),j.peerNames.add(pe))}}let A=sa({name:C.name.replace(Hu,""),reference:C.reference}),Ae=s.get(A);if(Ae)for(let F of Ae)_.set(`${F.name}${Hu}`,F.reference);(p!==B||p.linkType!=="SOFT"||!V&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(D)))&&y.dependencies.add(j);let ge=C!==a&&p.linkType==="SOFT"&&!C.name.endsWith(Hu)&&!V;if(!$&&!ge){let F=new Map;for(let[ue,pe]of _)if(pe!==null){let ke=r.getLocator(ue,pe),Fe=r.getLocator(ue.replace(Hu,""),pe),Ne=r.getPackageInformation(Fe);if(Ne===null)throw new Error("Assertion failed: Expected the package to have been registered");let oe=OO(Ne,ke,r,l);if(e.validateExternalSoftLinks&&e.project&&oe){Ne.packageDependencies.size>0&&(i=!0);for(let[qe,ne]of Ne.packageDependencies)if(ne!==null){let Y=P.parseLocator(Array.isArray(ne)?`${ne[0]}@${ne[1]}`:`${qe}@${ne}`);if(sa(Y)!==sa(ke)){let he=_.get(qe);if(he){let ie=P.parseLocator(Array.isArray(he)?`${he[0]}@${he[1]}`:`${qe}@${he}`);NAe(ie,Y)||t.push({messageName:71,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(ke.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${C.name}@${C.reference}`))} dependency ${P.prettyLocator(e.project.configuration,Y)} conflicts with parent dependency ${P.prettyLocator(e.project.configuration,ie)}`})}else{let ie=F.get(qe);if(ie){let de=ie.target,_e=P.parseLocator(Array.isArray(de)?`${de[0]}@${de[1]}`:`${qe}@${de}`);NAe(_e,Y)||t.push({messageName:71,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(ke.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${C.name}@${C.reference}`))} dependency ${P.prettyLocator(e.project.configuration,Y)} conflicts with dependency ${P.prettyLocator(e.project.configuration,_e)} from sibling portal ${P.prettyIdent(e.project.configuration,P.parseIdent(ie.portal.name))}`})}else F.set(qe,{target:Y.reference,portal:ke})}}}}let le=(re=e.hoistingLimitsByCwd)==null?void 0:re.get(D),Be=oe?D:x.relative(l,U.toPortablePath(Ne.packageLocation))||Oe.dot,fe=(O=e.hoistingLimitsByCwd)==null?void 0:O.get(Be);f(ue,Ne,ke,j,p,_,Be,le==="dependencies"||fe==="dependencies"||fe==="workspaces")}}};return f(a.name,o,a,c,o,o.packageDependencies,Oe.dot,!1),{packageTree:c,hoistingLimits:n,errors:t,preserveSymlinksRequired:i}};function LAe(r,e,t){let i=t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(r.packageLocation):r.packageLocation;return U.toPortablePath(i||r.packageLocation)}function TWe(r,e,t){let i=e.getLocator(r.name.replace(Hu,""),r.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return t.pnpifyFs?(o=U.toPortablePath(n.packageLocation),s="SOFT"):(o=LAe(n,r,e),s=n.linkType),{linkType:s,target:o}}var OWe=(r,e,t)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=TWe(u,r,t);return{locator:sa(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:Kr(g),name:Kr(f)}:{scope:null,name:Kr(g)}},o=new Set,a=(u,g,f)=>{if(o.has(u))return;o.add(u);let h=Array.from(u.references).sort().join("#");for(let p of u.dependencies){let C=Array.from(p.references).sort().join("#");if(p.identName===u.identName&&C===h)continue;let y=Array.from(p.references).sort(),B={name:p.identName,reference:y[0]},{name:v,scope:D}=s(p.name),L=D?[D,v]:[v],H=x.join(g,FAe),j=x.join(H,...L),$=`${f}/${B.name}`,V=n(B,f,y.slice(1)),W=!1;if(V.linkType==="SOFT"&&t.project){let A=t.project.workspacesByCwd.get(V.target.slice(0,-1));W=!!(A&&!A.manifest.name)}let _=V.linkType==="SOFT"&&j.startsWith(V.target);if(!p.name.endsWith(Hu)&&!W&&!_){let A=i.get(j);if(A){if(A.dirList)throw new Error(`Assertion failed: ${j} cannot merge dir node with leaf node`);{let O=P.parseLocator(A.locator),F=P.parseLocator(V.locator);if(A.linkType!==V.linkType)throw new Error(`Assertion failed: ${j} cannot merge nodes with different link types ${A.nodePath}/${P.stringifyLocator(O)} and ${f}/${P.stringifyLocator(F)}`);if(O.identHash!==F.identHash)throw new Error(`Assertion failed: ${j} cannot merge nodes with different idents ${A.nodePath}/${P.stringifyLocator(O)} and ${f}/s${P.stringifyLocator(F)}`);V.aliases=[...V.aliases,...A.aliases,P.parseLocator(A.locator).reference]}}i.set(j,V);let Ae=j.split("/"),ge=Ae.indexOf(FAe),re=Ae.length-1;for(;ge>=0&&re>ge;){let O=U.toPortablePath(Ae.slice(0,re).join(x.sep)),F=Kr(Ae[re]),ue=i.get(O);if(!ue)i.set(O,{dirList:new Set([F])});else if(ue.dirList){if(ue.dirList.has(F))break;ue.dirList.add(F)}re--}}a(p,V.linkType==="SOFT"?V.target:j,$)}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var iM={};ut(iM,{PnpInstaller:()=>Yu,PnpLinker:()=>wl,default:()=>hze,getPnpPath:()=>Bl,jsInstallUtils:()=>po,pnpUtils:()=>hE,quotePathIfNeeded:()=>Qle});var wle=Pe(Xr()),Ble=J("url");var TAe={["DEFAULT"]:{collapsed:!1,next:{["*"]:"DEFAULT"}},["TOP_LEVEL"]:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA",["*"]:"DEFAULT"}},["FALLBACK_EXCLUSION_LIST"]:{collapsed:!1,next:{["*"]:"FALLBACK_EXCLUSION_ENTRIES"}},["FALLBACK_EXCLUSION_ENTRIES"]:{collapsed:!0,next:{["*"]:"FALLBACK_EXCLUSION_DATA"}},["FALLBACK_EXCLUSION_DATA"]:{collapsed:!0,next:{["*"]:"DEFAULT"}},["PACKAGE_REGISTRY_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_REGISTRY_ENTRIES"}},["PACKAGE_REGISTRY_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_STORE_DATA"}},["PACKAGE_STORE_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_STORE_ENTRIES"}},["PACKAGE_STORE_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_INFORMATION_DATA"}},["PACKAGE_INFORMATION_DATA"]:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES",["*"]:"DEFAULT"}},["PACKAGE_DEPENDENCIES"]:{collapsed:!1,next:{["*"]:"PACKAGE_DEPENDENCY"}},["PACKAGE_DEPENDENCY"]:{collapsed:!0,next:{["*"]:"DEFAULT"}}};function MWe(r,e,t){let i="";i+="[";for(let n=0,s=r.length;n"u"||(a!==0&&(n+=", "),n+=JSON.stringify(l),n+=": ",n+=_Q(l,c,e,t).replace(/^ +/g,""),a+=1)}return n+="}",n}function HWe(r,e,t){let i=Object.keys(r),n=`${t} `,s="";s+=t,s+=`{ `;let o=0;for(let a=0,l=i.length;a"u"||(o!==0&&(s+=",",s+=` -`),s+=n,s+=JSON.stringify(c),s+=": ",s+=kQ(c,u,e,n).replace(/^ +/g,""),o+=1)}return o!==0&&(s+=` -`),s+=t,s+="}",s}function kQ(r,e,t,i){let{next:n}=zae[t],s=n[r]||n["*"];return Vae(e,s,i)}function Vae(r,e,t){let{collapsed:i}=zae[e];return Array.isArray(r)?i?k4e(r,e,t):R4e(r,e,t):typeof r=="object"&&r!==null?i?F4e(r,e,t):N4e(r,e,t):JSON.stringify(r)}function Xae(r){return Vae(r,"TOP_LEVEL","")}function Wm(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(t.map(o=>s(o)));let n=t.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>t[s])}function L4e(r){let e=new Map,t=Wm(r.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of t){let s=e.get(i);typeof s>"u"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function T4e(r){return Wm(r.fallbackPool||[],([e])=>e)}function O4e(r){let e=[];for(let[t,i]of Wm(r.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([t,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of Wm(i,([g])=>g===null?"0":`1${g}`)){let g=[];t!==null&&s!==null&&!a.has(t)&&g.push([t,s]);for(let[p,C]of Wm(a.entries(),([y])=>y))g.push([p,C]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function zm(r){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:r.dependencyTreeRoots,enableTopLevelFallback:r.enableTopLevelFallback||!1,ignorePatternData:r.ignorePattern||null,fallbackExclusionList:L4e(r),fallbackPool:T4e(r),packageRegistryData:O4e(r)}}var $ae=Pe(Zae());function eAe(r,e){return[r?`${r} +`),s+=n,s+=JSON.stringify(c),s+=": ",s+=_Q(c,u,e,n).replace(/^ +/g,""),o+=1)}return o!==0&&(s+=` +`),s+=t,s+="}",s}function _Q(r,e,t,i){let{next:n}=TAe[t],s=n[r]||n["*"];return OAe(e,s,i)}function OAe(r,e,t){let{collapsed:i}=TAe[e];return Array.isArray(r)?i?MWe(r,e,t):UWe(r,e,t):typeof r=="object"&&r!==null?i?KWe(r,e,t):HWe(r,e,t):JSON.stringify(r)}function MAe(r){return OAe(r,"TOP_LEVEL","")}function iE(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(t.map(o=>s(o)));let n=t.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>t[s])}function GWe(r){let e=new Map,t=iE(r.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of t){let s=e.get(i);typeof s>"u"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function YWe(r){return iE(r.fallbackPool||[],([e])=>e)}function jWe(r){let e=[];for(let[t,i]of iE(r.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([t,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of iE(i,([g])=>g===null?"0":`1${g}`)){let g=[];t!==null&&s!==null&&!a.has(t)&&g.push([t,s]);for(let[p,C]of iE(a.entries(),([y])=>y))g.push([p,C]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function nE(r){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:r.dependencyTreeRoots,enableTopLevelFallback:r.enableTopLevelFallback||!1,ignorePatternData:r.ignorePattern||null,fallbackExclusionList:GWe(r),fallbackPool:YWe(r),packageRegistryData:jWe(r)}}var HAe=Pe(KAe());function GAe(r,e){return[r?`${r} `:"",`/* eslint-disable */ `,`"use strict"; `,` `,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { `,e.replace(/^/gm," "),`} `,` -`,(0,$ae.default)()].join("")}function M4e(r){return JSON.stringify(r,null,2)}function K4e(r){return`'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ -`)}'`}function U4e(r){return[`return hydrateRuntimeState(JSON.parse(${K4e(Xae(r))}), {basePath: basePath || __dirname}); -`].join("")}function H4e(r){return[`var path = require('path'); +`,(0,HAe.default)()].join("")}function qWe(r){return JSON.stringify(r,null,2)}function JWe(r){return`'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function WWe(r){return[`return hydrateRuntimeState(JSON.parse(${JWe(MAe(r))}), {basePath: basePath || __dirname}); +`].join("")}function zWe(r){return[`var path = require('path'); `,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(r)}); `,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function tAe(r){let e=zm(r),t=U4e(e);return eAe(r.shebang,t)}function rAe(r){let e=zm(r),t=H4e(r.dataLocation),i=eAe(r.shebang,t);return{dataFile:M4e(e),loaderFile:i}}var SAe=J("fs");var vAe=J("util");function fO(r,{basePath:e}){let t=K.toPortablePath(e),i=x.resolve(t),n=r.ignorePatternData!==null?new RegExp(r.ignorePatternData):null,s=new Map,o=new Map(r.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var D;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let C=(D=p.discardFromLookup)!=null?D:!1,y={name:g,reference:h},B=s.get(p.packageLocation);B?(B.discardFromLookup=B.discardFromLookup&&C,C||(B.locator=y)):s.set(p.packageLocation,{locator:y,discardFromLookup:C});let v=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:C,get packageLocation(){return v||(v=x.join(i,p.packageLocation))}}]}))])),a=new Map(r.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(r.fallbackPool),c=r.dependencyTreeRoots,u=r.enableTopLevelFallback;return{basePath:t,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var eE=J("module");function qh(r,e){if(typeof r=="string")return r;if(r){let t,i;if(Array.isArray(r)){for(t=0;t0)return(f=qh(n[g],u))?f.replace("*",c.substring(g.length-1)):ku(i,c,1)}return ku(i,c)}}var KQ=J("url"),IO=J("util");var Ao=J("url");var cAe=Pe(J("assert"));var nAe=Array.isArray,Vm=JSON.stringify,hO=Object.getOwnPropertyNames,Jh=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),pO=(r,e)=>RegExp.prototype.exec.call(r,e),dO=(r,...e)=>RegExp.prototype[Symbol.replace].apply(r,e),Xm=(r,...e)=>String.prototype.endsWith.apply(r,e),sAe=(r,...e)=>String.prototype.includes.apply(r,e),oAe=(r,...e)=>String.prototype.lastIndexOf.apply(r,e),RQ=(r,...e)=>String.prototype.indexOf.apply(r,e),aAe=(r,...e)=>String.prototype.replace.apply(r,e),_m=(r,...e)=>String.prototype.slice.apply(r,e),rA=(r,...e)=>String.prototype.startsWith.apply(r,e),AAe=Map,lAe=JSON.parse;function FQ(r,e,t){return class extends t{constructor(...i){super(e(...i)),this.code=r,this.name=`${t.name} [${r}]`}}}var uAe=FQ("ERR_PACKAGE_IMPORT_NOT_DEFINED",(r,e,t)=>`Package import specifier "${r}" is not defined${e?` in package ${e}package.json`:""} imported from ${t}`,TypeError),CO=FQ("ERR_INVALID_MODULE_SPECIFIER",(r,e,t=void 0)=>`Invalid module "${r}" ${e}${t?` imported from ${t}`:""}`,TypeError),gAe=FQ("ERR_INVALID_PACKAGE_TARGET",(r,e,t,i=!1,n=void 0)=>{let s=typeof t=="string"&&!i&&t.length&&!rA(t,"./");return e==="."?((0,cAe.default)(i===!1),`Invalid "exports" main target ${Vm(t)} defined in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`):`Invalid "${i?"imports":"exports"}" target ${Vm(t)} defined for '${e}' in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`},Error),NQ=FQ("ERR_INVALID_PACKAGE_CONFIG",(r,e,t)=>`Invalid package config ${r}${e?` while importing ${e}`:""}${t?`. ${t}`:""}`,Error);var TQ=J("url");function fAe(r,e){let t=Object.create(null);for(let i=0;ie):r+e}Zm(t,r,i,o,n)}pO(pAe,_m(r,2))!==null&&Zm(t,r,i,o,n);let l=new URL(r,i),c=l.pathname,u=new URL(".",i).pathname;if(rA(c,u)||Zm(t,r,i,o,n),e==="")return l;if(pO(pAe,e)!==null){let g=s?aAe(t,"*",()=>e):t+e;q4e(g,i,o,n)}return s?new URL(dO(dAe,l.href,()=>e)):new URL(e,l)}function W4e(r){let e=+r;return`${e}`!==r?!1:e>=0&&e<4294967295}function OQ(r,e,t,i,n,s,o,a){if(typeof e=="string")return J4e(e,t,i,r,n,s,o,a);if(nAe(e)){if(e.length===0)return null;let l;for(let c=0;cs?-1:s>n||t===-1?1:i===-1||r.length>e.length?-1:e.length>r.length?1:0}function CAe({name:r,base:e,conditions:t,readFileSyncFn:i}){if(r==="#"||rA(r,"#/")||Xm(r,"/")){let o="is not a valid internal imports specifier name";throw new CO(r,o,(0,Ao.fileURLToPath)(e))}let n,s=hAe(e,i);if(s.exists){n=(0,Ao.pathToFileURL)(s.pjsonPath);let o=s.imports;if(o)if(Jh(o,r)&&!sAe(r,"*")){let a=OQ(n,o[r],"",r,e,!1,!0,t);if(a!=null)return a}else{let a="",l,c=hO(o);for(let u=0;u=g.length&&Xm(r,h)&&z4e(a,g)===1&&oAe(g,"*")===f&&(a=g,l=_m(r,f,r.length-h.length))}}if(a){let u=o[a],g=OQ(n,u,l,a,e,!0,!0,t);if(g!=null)return g}}}j4e(r,n,e)}var V4e=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function ri(r,e,t={},i){i!=null||(i=V4e.has(r)?"MODULE_NOT_FOUND":r);let n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...n,value:i},pnpCode:{...n,value:r},data:{...n,value:t}})}function lo(r){return K.normalize(K.fromPortablePath(r))}var yAe=Pe(EAe());function wAe(r){return X4e(),EO[r]}var EO;function X4e(){EO||(EO={"--conditions":[],...IAe(_4e()),...IAe(process.execArgv)})}function IAe(r){return(0,yAe.default)({"--conditions":[String],"-C":"--conditions"},{argv:r,permissive:!0})}function _4e(){let r=[],e=Z4e(process.env.NODE_OPTIONS||"",r);return r.length,e}function Z4e(r,e){let t=[],i=!1,n=!0;for(let s=0;s[g,new Map(f.map(([h,p])=>{var D;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let C=(D=p.discardFromLookup)!=null?D:!1,y={name:g,reference:h},B=s.get(p.packageLocation);B?(B.discardFromLookup=B.discardFromLookup&&C,C||(B.locator=y)):s.set(p.packageLocation,{locator:y,discardFromLookup:C});let v=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:C,get packageLocation(){return v||(v=x.join(i,p.packageLocation))}}]}))])),a=new Map(r.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(r.fallbackPool),c=r.dependencyTreeRoots,u=r.enableTopLevelFallback;return{basePath:t,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var gE=J("module"),uA=J("url"),XO=J("util");var qi=J("url");var zAe=Pe(J("assert"));var HO=Array.isArray,sE=JSON.stringify,oE=Object.getOwnPropertyNames,Gu=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),GO=(r,e)=>RegExp.prototype.exec.call(r,e),YO=(r,...e)=>RegExp.prototype[Symbol.replace].apply(r,e),El=(r,...e)=>String.prototype.endsWith.apply(r,e),jO=(r,...e)=>String.prototype.includes.apply(r,e),qO=(r,...e)=>String.prototype.lastIndexOf.apply(r,e),aE=(r,...e)=>String.prototype.indexOf.apply(r,e),qAe=(r,...e)=>String.prototype.replace.apply(r,e),Il=(r,...e)=>String.prototype.slice.apply(r,e),oa=(r,...e)=>String.prototype.startsWith.apply(r,e),JAe=Map,WAe=JSON.parse;function AE(r,e,t){return class extends t{constructor(...i){super(e(...i)),this.code=r,this.name=`${t.name} [${r}]`}}}var VAe=AE("ERR_PACKAGE_IMPORT_NOT_DEFINED",(r,e,t)=>`Package import specifier "${r}" is not defined${e?` in package ${e}package.json`:""} imported from ${t}`,TypeError),JO=AE("ERR_INVALID_MODULE_SPECIFIER",(r,e,t=void 0)=>`Invalid module "${r}" ${e}${t?` imported from ${t}`:""}`,TypeError),XAe=AE("ERR_INVALID_PACKAGE_TARGET",(r,e,t,i=!1,n=void 0)=>{let s=typeof t=="string"&&!i&&t.length&&!oa(t,"./");return e==="."?((0,zAe.default)(i===!1),`Invalid "exports" main target ${sE(t)} defined in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`):`Invalid "${i?"imports":"exports"}" target ${sE(t)} defined for '${e}' in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`},Error),lE=AE("ERR_INVALID_PACKAGE_CONFIG",(r,e,t)=>`Invalid package config ${r}${e?` while importing ${e}`:""}${t?`. ${t}`:""}`,Error),ZAe=AE("ERR_PACKAGE_PATH_NOT_EXPORTED",(r,e,t=void 0)=>e==="."?`No "exports" main defined in ${r}package.json${t?` imported from ${t}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${r}package.json${t?` imported from ${t}`:""}`,Error);var eb=J("url");function _Ae(r,e){let t=Object.create(null);for(let i=0;ie):r+e}cE(t,r,i,o,n)}GO(ele,Il(r,2))!==null&&cE(t,r,i,o,n);let l=new URL(r,i),c=l.pathname,u=new URL(".",i).pathname;if(oa(c,u)||cE(t,r,i,o,n),e==="")return l;if(GO(ele,e)!==null){let g=s?qAe(t,"*",()=>e):t+e;ZWe(g,i,o,n)}return s?new URL(YO(tle,l.href,()=>e)):new URL(e,l)}function $We(r){let e=+r;return`${e}`!==r?!1:e>=0&&e<4294967295}function ip(r,e,t,i,n,s,o,a){if(typeof e=="string")return _We(e,t,i,r,n,s,o,a);if(HO(e)){if(e.length===0)return null;let l;for(let c=0;cs?-1:s>n||t===-1?1:i===-1||r.length>e.length?-1:e.length>r.length?1:0}function eze(r,e,t){if(typeof r=="string"||HO(r))return!0;if(typeof r!="object"||r===null)return!1;let i=oE(r),n=!1,s=0;for(let o=0;o=c.length&&El(e,g)&&ile(s,c)===1&&qO(c,"*")===u&&(s=c,o=Il(e,u,e.length-g.length))}}if(s){let l=t[s],c=ip(r,l,o,s,i,!0,!1,n);return c==null&&WO(e,r,i),c}WO(e,r,i)}function sle({name:r,base:e,conditions:t,readFileSyncFn:i}){if(r==="#"||oa(r,"#/")||El(r,"/")){let o="is not a valid internal imports specifier name";throw new JO(r,o,(0,qi.fileURLToPath)(e))}let n,s=$Ae(e,i);if(s.exists){n=(0,qi.pathToFileURL)(s.pjsonPath);let o=s.imports;if(o)if(Gu(o,r)&&!jO(r,"*")){let a=ip(n,o[r],"",r,e,!1,!0,t);if(a!=null)return a}else{let a="",l,c=oE(o);for(let u=0;u=g.length&&El(r,h)&&ile(a,g)===1&&qO(g,"*")===f&&(a=g,l=Il(r,f,r.length-h.length))}}if(a){let u=o[a],g=ip(n,u,l,a,e,!0,!0,t);if(g!=null)return g}}}XWe(r,n,e)}var rze=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function ri(r,e,t={},i){i!=null||(i=rze.has(r)?"MODULE_NOT_FOUND":r);let n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...n,value:i},pnpCode:{...n,value:r},data:{...n,value:t}})}function ho(r){return U.normalize(U.fromPortablePath(r))}var lle=Pe(ale());function cle(r){return ize(),VO[r]}var VO;function ize(){VO||(VO={"--conditions":[],...Ale(nze()),...Ale(process.execArgv)})}function Ale(r){return(0,lle.default)({"--conditions":[String],"-C":"--conditions"},{argv:r,permissive:!0})}function nze(){let r=[],e=sze(process.env.NODE_OPTIONS||"",r);return r.length,e}function sze(r,e){let t=[],i=!1,n=!0;for(let s=0;sparseInt(r,10)),cwt=co>16||co===16&&Ru>=12,uwt=co>17||co===17&&Ru>=5||co===16&&Ru>=15,gwt=co>17||co===17&&Ru>=1||co===16&&Ru>14,BAe=co>19||co===19&&Ru>=2||co===18&&Ru>=13;var $4e=new Set(QAe.Module.builtinModules||Object.keys(process.binding("natives"))),MQ=r=>r.startsWith("node:")||$4e.has(r);function bAe(r){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(r=r.map(e=>K.fromPortablePath(Br.resolveVirtual(K.toPortablePath(e)))),BAe)process.send({"watch:require":r});else for(let e of r)process.send({"watch:require":e})}function yO(r,e){let t=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,s=/^(\/|\.{1,2}(\/|$))/,o=/\/$/,a=/^\.{0,2}\//,l={name:null,reference:null},c=[],u=new Set;if(r.enableTopLevelFallback===!0&&c.push(l),e.compatibilityMode!==!1)for(let oe of["react-scripts","gatsby"]){let le=r.packageRegistry.get(oe);if(le)for(let we of le.keys()){if(we===null)throw new Error("Assertion failed: This reference shouldn't be null");c.push({name:oe,reference:we})}}let{ignorePattern:g,packageRegistry:f,packageLocatorsByLocations:h}=r;function p(oe,le){return{fn:oe,args:le,error:null,result:null}}function C(oe){var qe,ne,Y,pe,ie,de;let le=(Y=(ne=(qe=process.stderr)==null?void 0:qe.hasColors)==null?void 0:ne.call(qe))!=null?Y:process.stdout.isTTY,we=(tt,Pt)=>`\x1B[${tt}m${Pt}\x1B[0m`,fe=oe.error;console.error(fe?we("31;1",`\u2716 ${(pe=oe.error)==null?void 0:pe.message.replace(/\n.*/s,"")}`):we("33;1","\u203C Resolution")),oe.args.length>0&&console.error();for(let tt of oe.args)console.error(` ${we("37;1","In \u2190")} ${(0,IO.inspect)(tt,{colors:le,compact:!0})}`);oe.result&&(console.error(),console.error(` ${we("37;1","Out \u2192")} ${(0,IO.inspect)(oe.result,{colors:le,compact:!0})}`));let Ae=(de=(ie=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ie.slice(2))!=null?de:[];if(Ae.length>0){console.error();for(let tt of Ae)console.error(` ${we("38;5;244",tt)}`)}console.error()}function y(oe,le){if(e.allowDebug===!1)return le;if(Number.isFinite(i)){if(i>=2)return(...we)=>{let fe=p(oe,we);try{return fe.result=le(...we)}catch(Ae){throw fe.error=Ae}finally{C(fe)}};if(i>=1)return(...we)=>{try{return le(...we)}catch(fe){let Ae=p(oe,we);throw Ae.error=fe,C(Ae),fe}}}return le}function B(oe){let le=A(oe);if(!le)throw ri("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return le}function v(oe){if(oe.name===null)return!0;for(let le of r.dependencyTreeRoots)if(le.name===oe.name&&le.reference===oe.reference)return!0;return!1}let D=new Set(["default","node","require",...wAe("--conditions")]);function L(oe,le=D){let we=re(x.join(oe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(we===null)throw ri("INTERNAL",`The locator that owns the "${oe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:fe}=B(we),Ae=x.join(fe,xt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let qe=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),ne=x.contains(fe,oe);if(ne===null)throw ri("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");a.test(ne)||(ne=`./${ne}`);let Y;try{Y=iAe(qe,x.normalize(ne),{conditions:le,unsafe:!0})}catch(pe){throw ri("EXPORTS_RESOLUTION_FAILED",pe.message,{unqualifiedPath:lo(oe),locator:we,pkgJson:qe,subpath:lo(ne),conditions:le},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof Y=="string"?x.join(fe,Y):null}function H(oe,le,{extensions:we}){let fe;try{le.push(oe),fe=e.fakeFs.statSync(oe)}catch{}if(fe&&!fe.isDirectory())return e.fakeFs.realpathSync(oe);if(fe&&fe.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(x.join(oe,xt.manifest),"utf8"))}catch{}let qe;if(Ae&&Ae.main&&(qe=x.resolve(oe,Ae.main)),qe&&qe!==oe){let ne=H(qe,le,{extensions:we});if(ne!==null)return ne}}for(let Ae=0,qe=we.length;Ae{let Y=JSON.stringify(ne.name);if(fe.has(Y))return;fe.add(Y);let pe=ae(ne);for(let ie of pe)if(B(ie).packagePeers.has(oe))Ae(ie);else{let tt=we.get(ie.name);typeof tt>"u"&&we.set(ie.name,tt=new Set),tt.add(ie.reference)}};Ae(le);let qe=[];for(let ne of[...we.keys()].sort())for(let Y of[...we.get(ne)].sort())qe.push({name:ne,reference:Y});return qe}function re(oe,{resolveIgnored:le=!1,includeDiscardFromLookup:we=!1}={}){if(V(oe)&&!le)return null;let fe=x.relative(r.basePath,oe);fe.match(s)||(fe=`./${fe}`),fe.endsWith("/")||(fe=`${fe}/`);do{let Ae=h.get(fe);if(typeof Ae>"u"||Ae.discardFromLookup&&!we){fe=fe.substring(0,fe.lastIndexOf("/",fe.length-2)+1);continue}return Ae.locator}while(fe!=="");return null}function O(oe){try{return e.fakeFs.readFileSync(K.toPortablePath(oe),"utf8")}catch(le){if(le.code==="ENOENT")return;throw le}}function F(oe,le,{considerBuiltins:we=!0}={}){if(oe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(oe==="pnpapi")return K.toPortablePath(e.pnpapiResolution);if(we&&MQ(oe))return null;let fe=lo(oe),Ae=le&&lo(le);if(le&&V(le)&&(!x.isAbsolute(oe)||re(oe)===null)){let Y=$(oe,le);if(Y===!1)throw ri("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) +`),t}var gle=J("module");var[ts,yl]=process.versions.node.split(".").map(r=>parseInt(r,10)),iBt=ts>16||ts===16&&yl>=12,nBt=ts>17||ts===17&&yl>=5||ts===16&&yl>=15,sBt=ts>17||ts===17&&yl>=1||ts===16&&yl>14,ule=ts>19||ts===19&&yl>=2||ts===18&&yl>=13,oBt=ts>19||ts===19&&yl>=3;var oze=new Set(gle.Module.builtinModules||Object.keys(process.binding("natives"))),tb=r=>r.startsWith("node:")||oze.has(r);function fle(r){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(r=r.map(e=>U.fromPortablePath(Br.resolveVirtual(U.toPortablePath(e)))),ule)process.send({"watch:require":r});else for(let e of r)process.send({"watch:require":e})}function ZO(r,e){let t=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,s=/^(\/|\.{1,2}(\/|$))/,o=/\/$/,a=/^\.{0,2}\//,l={name:null,reference:null},c=[],u=new Set;if(r.enableTopLevelFallback===!0&&c.push(l),e.compatibilityMode!==!1)for(let oe of["react-scripts","gatsby"]){let le=r.packageRegistry.get(oe);if(le)for(let Be of le.keys()){if(Be===null)throw new Error("Assertion failed: This reference shouldn't be null");c.push({name:oe,reference:Be})}}let{ignorePattern:g,packageRegistry:f,packageLocatorsByLocations:h}=r;function p(oe,le){return{fn:oe,args:le,error:null,result:null}}function C(oe){var qe,ne,Y,he,ie,de;let le=(Y=(ne=(qe=process.stderr)==null?void 0:qe.hasColors)==null?void 0:ne.call(qe))!=null?Y:process.stdout.isTTY,Be=(_e,Pt)=>`\x1B[${_e}m${Pt}\x1B[0m`,fe=oe.error;console.error(fe?Be("31;1",`\u2716 ${(he=oe.error)==null?void 0:he.message.replace(/\n.*/s,"")}`):Be("33;1","\u203C Resolution")),oe.args.length>0&&console.error();for(let _e of oe.args)console.error(` ${Be("37;1","In \u2190")} ${(0,XO.inspect)(_e,{colors:le,compact:!0})}`);oe.result&&(console.error(),console.error(` ${Be("37;1","Out \u2192")} ${(0,XO.inspect)(oe.result,{colors:le,compact:!0})}`));let ae=(de=(ie=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ie.slice(2))!=null?de:[];if(ae.length>0){console.error();for(let _e of ae)console.error(` ${Be("38;5;244",_e)}`)}console.error()}function y(oe,le){if(e.allowDebug===!1)return le;if(Number.isFinite(i)){if(i>=2)return(...Be)=>{let fe=p(oe,Be);try{return fe.result=le(...Be)}catch(ae){throw fe.error=ae}finally{C(fe)}};if(i>=1)return(...Be)=>{try{return le(...Be)}catch(fe){let ae=p(oe,Be);throw ae.error=fe,C(ae),fe}}}return le}function B(oe){let le=A(oe);if(!le)throw ri("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return le}function v(oe){if(oe.name===null)return!0;for(let le of r.dependencyTreeRoots)if(le.name===oe.name&&le.reference===oe.reference)return!0;return!1}let D=new Set(["node","require",...cle("--conditions")]);function L(oe,le=D,Be){let fe=re(x.join(oe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(fe===null)throw ri("INTERNAL",`The locator that owns the "${oe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=B(fe),qe=x.join(ae,xt.manifest);if(!e.fakeFs.existsSync(qe))return null;let ne=JSON.parse(e.fakeFs.readFileSync(qe,"utf8"));if(ne.exports==null)return null;let Y=x.contains(ae,oe);if(Y===null)throw ri("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");Y!=="."&&!a.test(Y)&&(Y=`./${Y}`);try{let he=nle({packageJSONUrl:(0,uA.pathToFileURL)(U.fromPortablePath(qe)),packageSubpath:Y,exports:ne.exports,base:Be?(0,uA.pathToFileURL)(U.fromPortablePath(Be)):null,conditions:le});return U.toPortablePath((0,uA.fileURLToPath)(he))}catch(he){throw ri("EXPORTS_RESOLUTION_FAILED",he.message,{unqualifiedPath:ho(oe),locator:fe,pkgJson:ne,subpath:ho(Y),conditions:le},he.code)}}function H(oe,le,{extensions:Be}){let fe;try{le.push(oe),fe=e.fakeFs.statSync(oe)}catch{}if(fe&&!fe.isDirectory())return e.fakeFs.realpathSync(oe);if(fe&&fe.isDirectory()){let ae;try{ae=JSON.parse(e.fakeFs.readFileSync(x.join(oe,xt.manifest),"utf8"))}catch{}let qe;if(ae&&ae.main&&(qe=x.resolve(oe,ae.main)),qe&&qe!==oe){let ne=H(qe,le,{extensions:Be});if(ne!==null)return ne}}for(let ae=0,qe=Be.length;ae{let Y=JSON.stringify(ne.name);if(fe.has(Y))return;fe.add(Y);let he=Ae(ne);for(let ie of he)if(B(ie).packagePeers.has(oe))ae(ie);else{let _e=Be.get(ie.name);typeof _e>"u"&&Be.set(ie.name,_e=new Set),_e.add(ie.reference)}};ae(le);let qe=[];for(let ne of[...Be.keys()].sort())for(let Y of[...Be.get(ne)].sort())qe.push({name:ne,reference:Y});return qe}function re(oe,{resolveIgnored:le=!1,includeDiscardFromLookup:Be=!1}={}){if(V(oe)&&!le)return null;let fe=x.relative(r.basePath,oe);fe.match(s)||(fe=`./${fe}`),fe.endsWith("/")||(fe=`${fe}/`);do{let ae=h.get(fe);if(typeof ae>"u"||ae.discardFromLookup&&!Be){fe=fe.substring(0,fe.lastIndexOf("/",fe.length-2)+1);continue}return ae.locator}while(fe!=="");return null}function O(oe){try{return e.fakeFs.readFileSync(U.toPortablePath(oe),"utf8")}catch(le){if(le.code==="ENOENT")return;throw le}}function F(oe,le,{considerBuiltins:Be=!0}={}){if(oe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(oe==="pnpapi")return U.toPortablePath(e.pnpapiResolution);if(Be&&tb(oe))return null;let fe=ho(oe),ae=le&&ho(le);if(le&&V(le)&&(!x.isAbsolute(oe)||re(oe)===null)){let Y=$(oe,le);if(Y===!1)throw ri("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) Require request: "${fe}" -Required by: ${Ae} -`,{request:fe,issuer:Ae});return K.toPortablePath(Y)}let qe,ne=oe.match(n);if(ne){if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:Ae});let[,Y,pe]=ne,ie=re(le);if(!ie){let hr=$(oe,le);if(hr===!1)throw ri("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). +Required by: ${ae} +`,{request:fe,issuer:ae});return U.toPortablePath(Y)}let qe,ne=oe.match(n);if(ne){if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:ae});let[,Y,he]=ne,ie=re(le);if(!ie){let hr=$(oe,le);if(hr===!1)throw ri("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). Require path: "${fe}" -Required by: ${Ae} -`,{request:fe,issuer:Ae});return K.toPortablePath(hr)}let tt=B(ie).packageDependencies.get(Y),Pt=null;if(tt==null&&ie.name!==null){let hr=r.fallbackExclusionList.get(ie.name);if(!hr||!hr.has(ie.reference)){for(let ni=0,Ls=c.length;niv(fi))?It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. +Required by: ${ae} +`,{request:fe,issuer:ae,dependencyName:Y});else{let hr=ge(Y,ie);hr.every(fi=>v(fi))?It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${ie.name}@${ie.reference} (via ${Ae}) +Required by: ${ie.name}@${ie.reference} (via ${ae}) ${hr.map(fi=>`Ancestor breaking the chain: ${fi.name}@${fi.reference} `).join("")} -`,{request:fe,issuer:Ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr}):It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. +`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr}):It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${ie.name}@${ie.reference} (via ${Ae}) +Required by: ${ie.name}@${ie.reference} (via ${ae}) ${hr.map(fi=>`Ancestor breaking the chain: ${fi.name}@${fi.reference} `).join("")} -`,{request:fe,issuer:Ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr})}else tt===void 0&&(!we&&MQ(oe)?v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. +`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr})}else _e===void 0&&(!Be&&tb(oe)?v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${Ae} -`,{request:fe,issuer:Ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in ${ie.name}'s dependencies, this makes the require call ambiguous and unsound. +Required by: ${ae} +`,{request:fe,issuer:ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in ${ie.name}'s dependencies, this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${Ae} -`,{request:fe,issuer:Ae,issuerLocator:Object.assign({},ie),dependencyName:Y}):v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. +Required by: ${ae} +`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y}):v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${Ae} -`,{request:fe,issuer:Ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. +Required by: ${ae} +`,{request:fe,issuer:ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. Required package: ${Y}${Y!==fe?` (via "${fe}")`:""} -Required by: ${ie.name}@${ie.reference} (via ${Ae}) -`,{request:fe,issuer:Ae,issuerLocator:Object.assign({},ie),dependencyName:Y}));if(tt==null){if(Pt===null||It===null)throw It||new Error("Assertion failed: Expected an error to have been set");tt=Pt;let hr=It.message.replace(/\n.*/g,"");It.message=hr,!u.has(hr)&&i!==0&&(u.add(hr),process.emitWarning(It))}let Or=Array.isArray(tt)?{name:tt[0],reference:tt[1]}:{name:Y,reference:tt},ii=B(Or);if(!ii.packageLocation)throw ri("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. +Required by: ${ie.name}@${ie.reference} (via ${ae}) +`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y}));if(_e==null){if(Pt===null||It===null)throw It||new Error("Assertion failed: Expected an error to have been set");_e=Pt;let hr=It.message.replace(/\n.*/g,"");It.message=hr,!u.has(hr)&&i!==0&&(u.add(hr),process.emitWarning(It))}let Or=Array.isArray(_e)?{name:_e[0],reference:_e[1]}:{name:Y,reference:_e},ii=B(Or);if(!ii.packageLocation)throw ri("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. Required package: ${Or.name}@${Or.reference}${Or.name!==fe?` (via "${fe}")`:""} -Required by: ${ie.name}@${ie.reference} (via ${Ae}) -`,{request:fe,issuer:Ae,dependencyLocator:Object.assign({},Or)});let gi=ii.packageLocation;pe?qe=x.join(gi,pe):qe=gi}else if(x.isAbsolute(oe))qe=x.normalize(oe);else{if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:Ae});let Y=x.resolve(le);le.match(o)?qe=x.normalize(x.join(Y,oe)):qe=x.normalize(x.join(x.dirname(Y),oe))}return x.normalize(qe)}function ue(oe,le,we=D){if(s.test(oe))return le;let fe=L(le,we);return fe?x.normalize(fe):le}function he(oe,{extensions:le=Object.keys(eE.Module._extensions)}={}){var Ae,qe;let we=[],fe=H(oe,we,{extensions:le});if(fe)return x.normalize(fe);{bAe(we.map(pe=>K.fromPortablePath(pe)));let ne=lo(oe),Y=re(oe);if(Y){let{packageLocation:pe}=B(Y),ie=!0;try{e.fakeFs.accessSync(pe)}catch(de){if((de==null?void 0:de.code)==="ENOENT")ie=!1;else{let tt=((qe=(Ae=de==null?void 0:de.message)!=null?Ae:de)!=null?qe:"empty exception thrown").replace(/^[A-Z]/,Pt=>Pt.toLowerCase());throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${tt}). +Required by: ${ie.name}@${ie.reference} (via ${ae}) +`,{request:fe,issuer:ae,dependencyLocator:Object.assign({},Or)});let gi=ii.packageLocation;he?qe=x.join(gi,he):qe=gi}else if(x.isAbsolute(oe))qe=x.normalize(oe);else{if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:ae});let Y=x.resolve(le);le.match(o)?qe=x.normalize(x.join(Y,oe)):qe=x.normalize(x.join(x.dirname(Y),oe))}return x.normalize(qe)}function ue(oe,le,Be=D,fe){if(s.test(oe))return le;let ae=L(le,Be,fe);return ae?x.normalize(ae):le}function pe(oe,{extensions:le=Object.keys(gE.Module._extensions)}={}){var ae,qe;let Be=[],fe=H(oe,Be,{extensions:le});if(fe)return x.normalize(fe);{fle(Be.map(he=>U.fromPortablePath(he)));let ne=ho(oe),Y=re(oe);if(Y){let{packageLocation:he}=B(Y),ie=!0;try{e.fakeFs.accessSync(he)}catch(de){if((de==null?void 0:de.code)==="ENOENT")ie=!1;else{let _e=((qe=(ae=de==null?void 0:de.message)!=null?ae:de)!=null?qe:"empty exception thrown").replace(/^[A-Z]/,Pt=>Pt.toLowerCase());throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${_e}). Missing package: ${Y.name}@${Y.reference} -Expected package location: ${lo(pe)} -`,{unqualifiedPath:ne,extensions:le})}}if(!ie){let de=pe.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`${de} +Expected package location: ${ho(he)} +`,{unqualifiedPath:ne,extensions:le})}}if(!ie){let de=he.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`${de} Missing package: ${Y.name}@${Y.reference} -Expected package location: ${lo(pe)} +Expected package location: ${ho(he)} `,{unqualifiedPath:ne,extensions:le})}}throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. Source path: ${ne} -${we.map(pe=>`Not found: ${lo(pe)} -`).join("")}`,{unqualifiedPath:ne,extensions:le})}}function ke(oe,le,we){var Ae;if(!le)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let fe=CAe({name:oe,base:(0,KQ.pathToFileURL)(K.fromPortablePath(le)),conditions:(Ae=we.conditions)!=null?Ae:D,readFileSyncFn:O});if(fe instanceof URL)return he(K.toPortablePath((0,KQ.fileURLToPath)(fe)),{extensions:we.extensions});if(fe.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return Fe(fe,le,we)}function Fe(oe,le,we={}){try{if(oe.startsWith("#"))return ke(oe,le,we);let{considerBuiltins:fe,extensions:Ae,conditions:qe}=we,ne=F(oe,le,{considerBuiltins:fe});if(oe==="pnpapi")return ne;if(ne===null)return null;let Y=()=>le!==null?V(le):!1,pe=(!fe||!MQ(oe))&&!Y()?ue(oe,ne,qe):ne;return he(pe,{extensions:Ae})}catch(fe){throw Object.prototype.hasOwnProperty.call(fe,"pnpCode")&&Object.assign(fe.data,{request:lo(oe),issuer:le&&lo(le)}),fe}}function Ne(oe){let le=x.normalize(oe),we=Br.resolveVirtual(le);return we!==le?we:null}return{VERSIONS:W,topLevel:Z,getLocator:(oe,le)=>Array.isArray(le)?{name:le[0],reference:le[1]}:{name:oe,reference:le},getDependencyTreeRoots:()=>[...r.dependencyTreeRoots],getAllLocators(){let oe=[];for(let[le,we]of f)for(let fe of we.keys())le!==null&&fe!==null&&oe.push({name:le,reference:fe});return oe},getPackageInformation:oe=>{let le=A(oe);if(le===null)return null;let we=K.fromPortablePath(le.packageLocation);return{...le,packageLocation:we}},findPackageLocator:oe=>re(K.toPortablePath(oe)),resolveToUnqualified:y("resolveToUnqualified",(oe,le,we)=>{let fe=le!==null?K.toPortablePath(le):null,Ae=F(K.toPortablePath(oe),fe,we);return Ae===null?null:K.fromPortablePath(Ae)}),resolveUnqualified:y("resolveUnqualified",(oe,le)=>K.fromPortablePath(he(K.toPortablePath(oe),le))),resolveRequest:y("resolveRequest",(oe,le,we)=>{let fe=le!==null?K.toPortablePath(le):null,Ae=Fe(K.toPortablePath(oe),fe,we);return Ae===null?null:K.fromPortablePath(Ae)}),resolveVirtual:y("resolveVirtual",oe=>{let le=Ne(K.toPortablePath(oe));return le!==null?K.fromPortablePath(le):null})}}var Dwt=(0,vAe.promisify)(SAe.readFile);var xAe=(r,e,t)=>{let i=zm(r),n=fO(i,{basePath:e}),s=K.join(e,xt.pnpCjs);return yO(n,{fakeFs:t,pnpapiResolution:s})};var BO=Pe(DAe());var uo={};ut(uo,{checkAndReportManifestCompatibility:()=>RAe,checkManifestCompatibility:()=>kAe,extractBuildScripts:()=>UQ,getExtractHint:()=>QO,hasBindingGyp:()=>bO});function kAe(r){return P.isPackageCompatible(r,Cs.getArchitectureSet())}function RAe(r,e,{configuration:t,report:i}){return kAe(r)?!0:(i==null||i.reportWarningOnce(76,`${P.prettyLocator(t,r)} The ${Cs.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function UQ(r,e,t,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([0,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([1,"node-gyp rebuild"]),s.length===0?[]:r.linkType!=="HARD"?(n==null||n.reportWarningOnce(6,`${P.prettyLocator(i,r)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):t&&t.built===!1?(n==null||n.reportInfoOnce(5,`${P.prettyLocator(i,r)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!t.built?(n==null||n.reportWarningOnce(4,`${P.prettyLocator(i,r)} lists build scripts, but all build scripts have been disabled.`),[]):RAe(r,"build",{configuration:i,report:n})?s:[]}var t8e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function QO(r){return r.packageFs.getExtractHint({relevantExtensions:t8e})}function bO(r){let e=x.join(r.prefixPath,"binding.gyp");return r.packageFs.existsSync(e)}var rE={};ut(rE,{getUnpluggedPath:()=>tE});function tE(r,{configuration:e}){return x.resolve(e.get("pnpUnpluggedFolder"),P.slugifyLocator(r))}var r8e=new Set([P.makeIdent(null,"open").identHash,P.makeIdent(null,"opn").identHash]),ll=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let i=cl(t.project).cjs;if(!M.existsSync(i))throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=Ie.getFactoryWithDefault(this.pnpCache,i,()=>Ie.dynamicRequire(i,{cachingStrategy:Ie.CachingStrategy.FsTime})),s={name:P.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed PnP map - running an install might help`);return K.toPortablePath(o.packageLocation)}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=cl(t.project).cjs;if(!M.existsSync(i))return null;let s=Ie.getFactoryWithDefault(this.pnpCache,i,()=>Ie.dynamicRequire(i,{cachingStrategy:Ie.CachingStrategy.FsTime})).findPackageLocator(K.fromPortablePath(e));return s?P.makeLocator(P.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Fu(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Fu=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new Ie.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,t,i){let n=P.stringifyIdent(e),s=e.reference,o=!!this.opts.project.tryWorkspaceByLocator(e),a=P.isVirtualLocator(e),l=e.peerDependencies.size>0&&!a,c=!l&&!o,u=!l&&e.linkType!=="SOFT",g,f;if(c||u){let D=a?P.devirtualizeLocator(e):e;g=this.customData.store.get(D.locatorHash),typeof g>"u"&&(g=await i8e(t),e.linkType==="HARD"&&this.customData.store.set(D.locatorHash,g)),g.manifest.type==="module"&&(this.isESMLoaderRequired=!0),f=this.opts.project.getDependencyMeta(D,e.version)}let h=c?UQ(e,g,f,{configuration:this.opts.project.configuration,report:this.opts.report}):[],p=u?await this.unplugPackageIfNeeded(e,g,t,f,i):t.packageFs;if(x.isAbsolute(t.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${t.prefixPath}) to be relative to the parent`);let C=x.resolve(p.getRealPath(),t.prefixPath),y=SO(this.opts.project.cwd,C),B=new Map,v=new Set;if(a){for(let D of e.peerDependencies.values())B.set(P.stringifyIdent(D),null),v.add(P.stringifyIdent(D));if(!o){let D=P.devirtualizeLocator(e);this.virtualTemplates.set(D.locatorHash,{location:SO(this.opts.project.cwd,Br.resolveVirtual(C)),locator:D})}}return Ie.getMapWithDefault(this.packageRegistry,n).set(s,{packageLocation:y,packageDependencies:B,packagePeers:v,linkType:e.linkType,discardFromLookup:t.discardFromLookup||!1}),{packageLocation:C,buildDirective:h.length>0?h:null}}async attachInternalDependencies(e,t){let i=this.getPackageInformation(e);for(let[n,s]of t){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,t){for(let i of t)this.getDiskInformation(i).packageDependencies.set(P.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=cl(this.opts.project);if(M.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(0,`Removing the old ${ee.pretty(this.opts.project.configuration,xt.pnpJs,ee.Type.PATH)} file. You might need to manually update existing references to reference the new ${ee.pretty(this.opts.project.configuration,xt.pnpCjs,ee.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ee.pretty(this.opts.project.configuration,"yarn sdks",ee.Type.CODE)}.`),await M.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await M.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await M.removePromise(e.cjs),await M.removePromise(this.opts.project.configuration.get("pnpDataPath")),await M.removePromise(e.esmLoader),await M.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:u,location:g}of this.virtualTemplates.values())Ie.getMapWithDefault(this.packageRegistry,P.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let t=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:P.stringifyIdent(u),reference:u.reference})),n=t!=="none",s=[],o=new Map,a=Ie.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(t==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:P.stringifyIdent(u),reference:u.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let t=cl(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await M.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=tAe(e);await M.changeFilePromise(t.cjs,o,{automaticNewlines:!0,mode:493}),await M.removePromise(i)}else{let o=x.relative(x.dirname(t.cjs),i),{dataFile:a,loaderFile:l}=rAe({...e,dataLocation:o});await M.changeFilePromise(t.cjs,l,{automaticNewlines:!0,mode:493}),await M.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await M.changeFilePromise(t.esmLoader,(0,BO.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await M.removePromise(s);else for(let o of await M.readdirPromise(s)){let a=x.resolve(s,o);this.unpluggedPaths.has(a)||await M.removePromise(a)}}async locateNodeModules(e){let t=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=x.join(n.cwd,"node_modules");if(i&&i.test(x.relative(this.opts.project.cwd,n.cwd))||!M.existsSync(s))continue;let o=await M.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)t.push(s);else for(let l of a)t.push(x.join(s,l.name))}return t}async unplugPackageIfNeeded(e,t,i,n,s){return this.shouldBeUnplugged(e,t,n)?this.unplugPackage(e,i,s):i.packageFs}shouldBeUnplugged(e,t,i){return typeof i.unplugged<"u"?i.unplugged:r8e.has(e.identHash)||e.conditions!=null?!0:t.manifest.preferUnplugged!==null?t.manifest.preferUnplugged:!!(UQ(e,t,i,{configuration:this.opts.project.configuration}).length>0||t.misc.extractHint)}async unplugPackage(e,t,i){let n=tE(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new yo(n,{baseFs:t.packageFs,pathUtils:x}):(this.unpluggedPaths.add(n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let s=x.join(n,t.prefixPath,".ready");await M.existsPromise(s)||(this.opts.project.storedBuildState.delete(e.locatorHash),await M.mkdirPromise(n,{recursive:!0}),await M.copyPromise(n,Oe.dot,{baseFs:t.packageFs,overwrite:!1}),await M.writeFilePromise(s,""))})),new jt(n))}getPackageInformation(e){let t=P.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(t);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${P.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${P.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let t=Ie.getMapWithDefault(this.packageRegistry,"@@disk"),i=SO(this.opts.project.cwd,e);return Ie.getFactoryWithDefault(t,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function SO(r,e){let t=x.relative(r,e);return t.match(/^\.{0,2}\//)||(t=`./${t}`),t.replace(/\/?$/,"/")}async function i8e(r){var i;let e=(i=await ot.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?i:new ot,t=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())t.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:QO(r),hasBindingGyp:bO(r)}}}var FAe=Pe(yn());var Nu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);if(t.get("nodeLinker")!=="pnp")throw new be("This command can only be used if the `nodeLinker` option is set to `pnp`");await i.restoreInstallState();let o=new Set(this.patterns),a=this.patterns.map(h=>{let p=P.parseDescriptor(h),C=p.range!=="unknown"?p:P.makeDescriptor(p,"*");if(!vt.validRange(C.range))throw new be(`The range of the descriptor patterns must be a valid semver range (${P.prettyDescriptor(t,C)})`);return y=>{let B=P.stringifyIdent(y);return!FAe.default.isMatch(B,P.stringifyIdent(C))||y.version&&!vt.satisfiesWithPrereleases(y.version,C.range)?!1:(o.delete(h),!0)}}),l=()=>{let h=[];for(let p of i.storedPackages.values())!i.tryWorkspaceByLocator(p)&&!P.isVirtualLocator(p)&&a.some(C=>C(p))&&h.push(p);return h},c=h=>{let p=new Set,C=[],y=(B,v)=>{if(!p.has(B.locatorHash)&&(p.add(B.locatorHash),!i.tryWorkspaceByLocator(B)&&a.some(D=>D(B))&&C.push(B),!(v>0&&!this.recursive)))for(let D of B.dependencies.values()){let L=i.storedResolutions.get(D.descriptorHash);if(!L)throw new Error("Assertion failed: The resolution should have been registered");let H=i.storedPackages.get(L);if(!H)throw new Error("Assertion failed: The package should have been registered");y(H,v+1)}};for(let B of h){let v=i.storedPackages.get(B.anchoredLocator.locatorHash);if(!v)throw new Error("Assertion failed: The package should have been registered");y(v,0)}return C},u,g;if(this.all&&this.recursive?(u=l(),g="the project"):this.all?(u=c(i.workspaces),g="any workspace"):(u=c([n]),g="this workspace"),o.size>1)throw new be(`Patterns ${ee.prettyList(t,o,ee.Type.CODE)} don't match any packages referenced by ${g}`);if(o.size>0)throw new be(`Pattern ${ee.prettyList(t,o,ee.Type.CODE)} doesn't match any packages referenced by ${g}`);return u=Ie.sortMap(u,h=>P.stringifyLocator(h)),(await Ge.start({configuration:t,stdout:this.context.stdout,json:this.json},async h=>{var p;for(let C of u){let y=(p=C.version)!=null?p:"unknown",B=i.topLevelWorkspace.manifest.ensureDependencyMeta(P.makeDescriptor(C,y));B.unplugged=!0,h.reportInfo(0,`Will unpack ${P.prettyLocator(t,C)} to ${ee.pretty(t,tE(C,{configuration:t}),ee.Type.PATH)}`),h.reportJson({locator:P.stringifyLocator(C),version:y})}await i.topLevelWorkspace.persistManifest(),h.reportSeparator(),await i.install({cache:s,report:h})})).exitCode()}};Nu.paths=[["unplug"]],Nu.usage=ve.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var cl=r=>({cjs:x.join(r.cwd,xt.pnpCjs),cjsLegacy:x.join(r.cwd,xt.pnpJs),esmLoader:x.join(r.cwd,".pnp.loader.mjs")}),TAe=r=>/\s/.test(r)?JSON.stringify(r):r;async function n8e(r,e,t){let i=cl(r),n=`--require ${TAe(K.fromPortablePath(i.cjs))}`;if(M.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,LAe.pathToFileURL)(K.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&NAe.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(M.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function s8e(r,e){let t=cl(r);e(t.cjs),e(t.esmLoader),e(r.configuration.get("pnpDataPath")),e(r.configuration.get("pnpUnpluggedFolder"))}var o8e={hooks:{populateYarnPaths:s8e,setupScriptEnvironment:n8e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:"STRING",default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:"ABSOLUTE_PATH",default:"./.pnp.data.json"}},linkers:[ll],commands:[Nu]},a8e=o8e;var jAe=Pe(HAe());var NO=Pe(J("crypto")),qAe=Pe(J("fs")),JAe=1,kr="node_modules",HQ=".bin",WAe=".yarn-state.yml",Q8e=1e3;var GQ=class{constructor(){this.installStateCache=new Map}supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let i=t.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await Ie.getFactoryWithDefault(this.installStateCache,t.project.cwd,async()=>await FO(t.project,{unrollAliases:!0}));if(n===null)throw new be("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(P.stringifyLocator(e));if(!s){let l=new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw l.code="LOCATOR_NOT_INSTALLED",l}let o=s.locations.sort((l,c)=>l.split(x.sep).length-c.split(x.sep).length),a=x.join(t.project.configuration.startingCwd,kr);return o.find(l=>x.contains(a,l))||s.locations[0]}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=await Ie.getFactoryWithDefault(this.installStateCache,t.project.cwd,async()=>await FO(t.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=YQ(x.resolve(e),{skipPrefix:t.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return P.parseLocator(a)}makeInstaller(e){return new RO(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},RO=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,t){var u;let i=x.resolve(t.packageFs.getRealPath(),t.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n>"u"&&(n=await b8e(e,t),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,n)),!P.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(P.stringifyIdent(e))||s.set(P.stringifyIdent(e),e.reference);let a=e;if(P.isVirtualLocator(e)){a=P.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(P.stringifyIdent(g),null),o.add(P.stringifyIdent(g))}let l={packageLocation:`${K.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=t.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=t.checksum?t.checksum.substring(t.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,t){let i=this.localStore.get(e.locatorHash);if(typeof i>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of t){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,t){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Br({baseFs:new Tn({libzip:await rn(),maxOpenFiles:80,readOnlyArchives:!0})}),t=await FO(this.opts.project),i=this.opts.project.configuration.get("nmMode");(t===null||i!==t.nmMode)&&(this.opts.project.storedBuildState.clear(),t={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i,mtimeMs:0});let n=new Map(this.opts.project.workspaces.map(f=>{var p,C;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=Ie.validateEnum(qm,(C=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?C:h)}catch{let B=P.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(57,`${B}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(qm).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,C;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(C=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?C:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:P.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:P.makeLocator(P.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(K.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:P.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>K.fromPortablePath(Br.resolveVirtual(K.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=Jm(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=uO(a);await k8e(t,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=P.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p>"u")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(_Ae(f))continue;let p=P.parseLocator(f),C=this.localStore.get(p.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(C.pkg))continue;let y=uo.extractBuildScripts(C.pkg,C.customPackageData,C.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});y.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:y})}return c&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${ee.pretty(this.opts.project.configuration,"--preserve-symlinks",ee.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function b8e(r,e){var n;let t=(n=await ot.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new ot,i=new Set(["preinstall","install","postinstall"]);for(let s of t.scripts.keys())i.has(s)||t.scripts.delete(s);return{manifest:{bin:t.bin,scripts:t.scripts},misc:{extractHint:uo.getExtractHint(e),hasBindingGyp:uo.hasBindingGyp(e)}}}async function S8e(r,e,t,i,{installChangedByUser:n}){let s="";s+=`# Warning: This file is automatically generated. Removing it is fine, but will +${Be.map(he=>`Not found: ${ho(he)} +`).join("")}`,{unqualifiedPath:ne,extensions:le})}}function ke(oe,le,Be){var ae;if(!le)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let fe=sle({name:oe,base:(0,uA.pathToFileURL)(U.fromPortablePath(le)),conditions:(ae=Be.conditions)!=null?ae:D,readFileSyncFn:O});if(fe instanceof uA.URL)return pe(U.toPortablePath((0,uA.fileURLToPath)(fe)),{extensions:Be.extensions});if(fe.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return Fe(fe,le,Be)}function Fe(oe,le,Be={}){try{if(oe.startsWith("#"))return ke(oe,le,Be);let{considerBuiltins:fe,extensions:ae,conditions:qe}=Be,ne=F(oe,le,{considerBuiltins:fe});if(oe==="pnpapi")return ne;if(ne===null)return null;let Y=()=>le!==null?V(le):!1,he=(!fe||!tb(oe))&&!Y()?ue(oe,ne,qe,le):ne;return pe(he,{extensions:ae})}catch(fe){throw Object.prototype.hasOwnProperty.call(fe,"pnpCode")&&Object.assign(fe.data,{request:ho(oe),issuer:le&&ho(le)}),fe}}function Ne(oe){let le=x.normalize(oe),Be=Br.resolveVirtual(le);return Be!==le?Be:null}return{VERSIONS:W,topLevel:_,getLocator:(oe,le)=>Array.isArray(le)?{name:le[0],reference:le[1]}:{name:oe,reference:le},getDependencyTreeRoots:()=>[...r.dependencyTreeRoots],getAllLocators(){let oe=[];for(let[le,Be]of f)for(let fe of Be.keys())le!==null&&fe!==null&&oe.push({name:le,reference:fe});return oe},getPackageInformation:oe=>{let le=A(oe);if(le===null)return null;let Be=U.fromPortablePath(le.packageLocation);return{...le,packageLocation:Be}},findPackageLocator:oe=>re(U.toPortablePath(oe)),resolveToUnqualified:y("resolveToUnqualified",(oe,le,Be)=>{let fe=le!==null?U.toPortablePath(le):null,ae=F(U.toPortablePath(oe),fe,Be);return ae===null?null:U.fromPortablePath(ae)}),resolveUnqualified:y("resolveUnqualified",(oe,le)=>U.fromPortablePath(pe(U.toPortablePath(oe),le))),resolveRequest:y("resolveRequest",(oe,le,Be)=>{let fe=le!==null?U.toPortablePath(le):null,ae=Fe(U.toPortablePath(oe),fe,Be);return ae===null?null:U.fromPortablePath(ae)}),resolveVirtual:y("resolveVirtual",oe=>{let le=Ne(U.toPortablePath(oe));return le!==null?U.fromPortablePath(le):null})}}var BBt=(0,ple.promisify)(hle.readFile);var dle=(r,e,t)=>{let i=nE(r),n=KO(i,{basePath:e}),s=U.join(e,xt.pnpCjs);return ZO(n,{fakeFs:t,pnpapiResolution:s})};var $O=Pe(mle());var po={};ut(po,{checkAndReportManifestCompatibility:()=>Ile,checkManifestCompatibility:()=>Ele,extractBuildScripts:()=>rb,getExtractHint:()=>eM,hasBindingGyp:()=>tM});function Ele(r){return P.isPackageCompatible(r,ws.getArchitectureSet())}function Ile(r,e,{configuration:t,report:i}){return Ele(r)?!0:(i==null||i.reportWarningOnce(76,`${P.prettyLocator(t,r)} The ${ws.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function rb(r,e,t,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([0,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([1,"node-gyp rebuild"]),s.length===0?[]:r.linkType!=="HARD"?(n==null||n.reportWarningOnce(6,`${P.prettyLocator(i,r)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):t&&t.built===!1?(n==null||n.reportInfoOnce(5,`${P.prettyLocator(i,r)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!t.built?(n==null||n.reportWarningOnce(4,`${P.prettyLocator(i,r)} lists build scripts, but all build scripts have been disabled.`),[]):Ile(r,"build",{configuration:i,report:n})?s:[]}var Aze=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function eM(r){return r.packageFs.getExtractHint({relevantExtensions:Aze})}function tM(r){let e=x.join(r.prefixPath,"binding.gyp");return r.packageFs.existsSync(e)}var hE={};ut(hE,{getUnpluggedPath:()=>fE});function fE(r,{configuration:e}){return x.resolve(e.get("pnpUnpluggedFolder"),P.slugifyLocator(r))}var lze=new Set([P.makeIdent(null,"open").identHash,P.makeIdent(null,"opn").identHash]),wl=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let i=Bl(t.project).cjs;if(!M.existsSync(i))throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=Ie.getFactoryWithDefault(this.pnpCache,i,()=>Ie.dynamicRequire(i,{cachingStrategy:Ie.CachingStrategy.FsTime})),s={name:P.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed PnP map - running an install might help`);return U.toPortablePath(o.packageLocation)}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=Bl(t.project).cjs;if(!M.existsSync(i))return null;let s=Ie.getFactoryWithDefault(this.pnpCache,i,()=>Ie.dynamicRequire(i,{cachingStrategy:Ie.CachingStrategy.FsTime})).findPackageLocator(U.fromPortablePath(e));return s?P.makeLocator(P.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Yu(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Yu=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new Ie.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,t,i){let n=P.stringifyIdent(e),s=e.reference,o=!!this.opts.project.tryWorkspaceByLocator(e),a=P.isVirtualLocator(e),l=e.peerDependencies.size>0&&!a,c=!l&&!o,u=!l&&e.linkType!=="SOFT",g,f;if(c||u){let D=a?P.devirtualizeLocator(e):e;g=this.customData.store.get(D.locatorHash),typeof g>"u"&&(g=await cze(t),e.linkType==="HARD"&&this.customData.store.set(D.locatorHash,g)),g.manifest.type==="module"&&(this.isESMLoaderRequired=!0),f=this.opts.project.getDependencyMeta(D,e.version)}let h=c?rb(e,g,f,{configuration:this.opts.project.configuration,report:this.opts.report}):[],p=u?await this.unplugPackageIfNeeded(e,g,t,f,i):t.packageFs;if(x.isAbsolute(t.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${t.prefixPath}) to be relative to the parent`);let C=x.resolve(p.getRealPath(),t.prefixPath),y=rM(this.opts.project.cwd,C),B=new Map,v=new Set;if(a){for(let D of e.peerDependencies.values())B.set(P.stringifyIdent(D),null),v.add(P.stringifyIdent(D));if(!o){let D=P.devirtualizeLocator(e);this.virtualTemplates.set(D.locatorHash,{location:rM(this.opts.project.cwd,Br.resolveVirtual(C)),locator:D})}}return Ie.getMapWithDefault(this.packageRegistry,n).set(s,{packageLocation:y,packageDependencies:B,packagePeers:v,linkType:e.linkType,discardFromLookup:t.discardFromLookup||!1}),{packageLocation:C,buildDirective:h.length>0?h:null}}async attachInternalDependencies(e,t){let i=this.getPackageInformation(e);for(let[n,s]of t){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,t){for(let i of t)this.getDiskInformation(i).packageDependencies.set(P.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=Bl(this.opts.project);if(M.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(0,`Removing the old ${ee.pretty(this.opts.project.configuration,xt.pnpJs,ee.Type.PATH)} file. You might need to manually update existing references to reference the new ${ee.pretty(this.opts.project.configuration,xt.pnpCjs,ee.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ee.pretty(this.opts.project.configuration,"yarn sdks",ee.Type.CODE)}.`),await M.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await M.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await M.removePromise(e.cjs),await M.removePromise(this.opts.project.configuration.get("pnpDataPath")),await M.removePromise(e.esmLoader),await M.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:u,location:g}of this.virtualTemplates.values())Ie.getMapWithDefault(this.packageRegistry,P.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let t=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:P.stringifyIdent(u),reference:u.reference})),n=t!=="none",s=[],o=new Map,a=Ie.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(t==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:P.stringifyIdent(u),reference:u.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let t=Bl(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await M.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=YAe(e);await M.changeFilePromise(t.cjs,o,{automaticNewlines:!0,mode:493}),await M.removePromise(i)}else{let o=x.relative(x.dirname(t.cjs),i),{dataFile:a,loaderFile:l}=jAe({...e,dataLocation:o});await M.changeFilePromise(t.cjs,l,{automaticNewlines:!0,mode:493}),await M.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await M.changeFilePromise(t.esmLoader,(0,$O.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await M.removePromise(s);else for(let o of await M.readdirPromise(s)){let a=x.resolve(s,o);this.unpluggedPaths.has(a)||await M.removePromise(a)}}async locateNodeModules(e){let t=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=x.join(n.cwd,"node_modules");if(i&&i.test(x.relative(this.opts.project.cwd,n.cwd))||!M.existsSync(s))continue;let o=await M.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)t.push(s);else for(let l of a)t.push(x.join(s,l.name))}return t}async unplugPackageIfNeeded(e,t,i,n,s){return this.shouldBeUnplugged(e,t,n)?this.unplugPackage(e,i,s):i.packageFs}shouldBeUnplugged(e,t,i){return typeof i.unplugged<"u"?i.unplugged:lze.has(e.identHash)||e.conditions!=null?!0:t.manifest.preferUnplugged!==null?t.manifest.preferUnplugged:!!(rb(e,t,i,{configuration:this.opts.project.configuration}).length>0||t.misc.extractHint)}async unplugPackage(e,t,i){let n=fE(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new bo(n,{baseFs:t.packageFs,pathUtils:x}):(this.unpluggedPaths.add(n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let s=x.join(n,t.prefixPath,".ready");await M.existsPromise(s)||(this.opts.project.storedBuildState.delete(e.locatorHash),await M.mkdirPromise(n,{recursive:!0}),await M.copyPromise(n,Oe.dot,{baseFs:t.packageFs,overwrite:!1}),await M.writeFilePromise(s,""))})),new qt(n))}getPackageInformation(e){let t=P.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(t);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${P.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${P.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let t=Ie.getMapWithDefault(this.packageRegistry,"@@disk"),i=rM(this.opts.project.cwd,e);return Ie.getFactoryWithDefault(t,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function rM(r,e){let t=x.relative(r,e);return t.match(/^\.{0,2}\//)||(t=`./${t}`),t.replace(/\/?$/,"/")}async function cze(r){var i;let e=(i=await ot.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?i:new ot,t=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())t.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:eM(r),hasBindingGyp:tM(r)}}}var yle=Pe(wn());var ju=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);if(t.get("nodeLinker")!=="pnp")throw new be("This command can only be used if the `nodeLinker` option is set to `pnp`");await i.restoreInstallState();let o=new Set(this.patterns),a=this.patterns.map(h=>{let p=P.parseDescriptor(h),C=p.range!=="unknown"?p:P.makeDescriptor(p,"*");if(!vt.validRange(C.range))throw new be(`The range of the descriptor patterns must be a valid semver range (${P.prettyDescriptor(t,C)})`);return y=>{let B=P.stringifyIdent(y);return!yle.default.isMatch(B,P.stringifyIdent(C))||y.version&&!vt.satisfiesWithPrereleases(y.version,C.range)?!1:(o.delete(h),!0)}}),l=()=>{let h=[];for(let p of i.storedPackages.values())!i.tryWorkspaceByLocator(p)&&!P.isVirtualLocator(p)&&a.some(C=>C(p))&&h.push(p);return h},c=h=>{let p=new Set,C=[],y=(B,v)=>{if(!p.has(B.locatorHash)&&(p.add(B.locatorHash),!i.tryWorkspaceByLocator(B)&&a.some(D=>D(B))&&C.push(B),!(v>0&&!this.recursive)))for(let D of B.dependencies.values()){let L=i.storedResolutions.get(D.descriptorHash);if(!L)throw new Error("Assertion failed: The resolution should have been registered");let H=i.storedPackages.get(L);if(!H)throw new Error("Assertion failed: The package should have been registered");y(H,v+1)}};for(let B of h){let v=i.storedPackages.get(B.anchoredLocator.locatorHash);if(!v)throw new Error("Assertion failed: The package should have been registered");y(v,0)}return C},u,g;if(this.all&&this.recursive?(u=l(),g="the project"):this.all?(u=c(i.workspaces),g="any workspace"):(u=c([n]),g="this workspace"),o.size>1)throw new be(`Patterns ${ee.prettyList(t,o,ee.Type.CODE)} don't match any packages referenced by ${g}`);if(o.size>0)throw new be(`Pattern ${ee.prettyList(t,o,ee.Type.CODE)} doesn't match any packages referenced by ${g}`);return u=Ie.sortMap(u,h=>P.stringifyLocator(h)),(await Ge.start({configuration:t,stdout:this.context.stdout,json:this.json},async h=>{var p;for(let C of u){let y=(p=C.version)!=null?p:"unknown",B=i.topLevelWorkspace.manifest.ensureDependencyMeta(P.makeDescriptor(C,y));B.unplugged=!0,h.reportInfo(0,`Will unpack ${P.prettyLocator(t,C)} to ${ee.pretty(t,fE(C,{configuration:t}),ee.Type.PATH)}`),h.reportJson({locator:P.stringifyLocator(C),version:y})}await i.topLevelWorkspace.persistManifest(),h.reportSeparator(),await i.install({cache:s,report:h})})).exitCode()}};ju.paths=[["unplug"]],ju.usage=ve.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Bl=r=>({cjs:x.join(r.cwd,xt.pnpCjs),cjsLegacy:x.join(r.cwd,xt.pnpJs),esmLoader:x.join(r.cwd,".pnp.loader.mjs")}),Qle=r=>/\s/.test(r)?JSON.stringify(r):r;async function uze(r,e,t){let i=Bl(r),n=`--require ${Qle(U.fromPortablePath(i.cjs))}`;if(M.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,Ble.pathToFileURL)(U.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&wle.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(M.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function gze(r,e){let t=Bl(r);e(t.cjs),e(t.esmLoader),e(r.configuration.get("pnpDataPath")),e(r.configuration.get("pnpUnpluggedFolder"))}var fze={hooks:{populateYarnPaths:gze,setupScriptEnvironment:uze},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:"STRING",default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:"ABSOLUTE_PATH",default:"./.pnp.data.json"}},linkers:[wl],commands:[ju]},hze=fze;var Rle=Pe(Ple());var cM=Pe(J("crypto")),Fle=Pe(J("fs")),Nle=1,kr="node_modules",ib=".bin",Lle=".yarn-state.yml",kze=1e3;var nb=class{constructor(){this.installStateCache=new Map}supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let i=t.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await Ie.getFactoryWithDefault(this.installStateCache,t.project.cwd,async()=>await lM(t.project,{unrollAliases:!0}));if(n===null)throw new be("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(P.stringifyLocator(e));if(!s){let l=new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw l.code="LOCATOR_NOT_INSTALLED",l}let o=s.locations.sort((l,c)=>l.split(x.sep).length-c.split(x.sep).length),a=x.join(t.project.configuration.startingCwd,kr);return o.find(l=>x.contains(a,l))||s.locations[0]}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=await Ie.getFactoryWithDefault(this.installStateCache,t.project.cwd,async()=>await lM(t.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=sb(x.resolve(e),{skipPrefix:t.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return P.parseLocator(a)}makeInstaller(e){return new AM(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},AM=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,t){var u;let i=x.resolve(t.packageFs.getRealPath(),t.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n>"u"&&(n=await Rze(e,t),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,n)),!P.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(P.stringifyIdent(e))||s.set(P.stringifyIdent(e),e.reference);let a=e;if(P.isVirtualLocator(e)){a=P.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(P.stringifyIdent(g),null),o.add(P.stringifyIdent(g))}let l={packageLocation:`${U.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=t.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=t.checksum?t.checksum.substring(t.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,t){let i=this.localStore.get(e.locatorHash);if(typeof i>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of t){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,t){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Br({baseFs:new Mn({libzip:await on(),maxOpenFiles:80,readOnlyArchives:!0})}),t=await lM(this.opts.project),i=this.opts.project.configuration.get("nmMode");(t===null||i!==t.nmMode)&&(this.opts.project.storedBuildState.clear(),t={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i,mtimeMs:0});let n=new Map(this.opts.project.workspaces.map(f=>{var p,C;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=Ie.validateEnum(tE,(C=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?C:h)}catch{let B=P.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(57,`${B}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(tE).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,C;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(C=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?C:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:P.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:P.makeLocator(P.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(U.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:P.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>U.fromPortablePath(Br.resolveVirtual(U.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=rE(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=MO(a);await Mze(t,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=P.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p>"u")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(Ule(f))continue;let p=P.parseLocator(f),C=this.localStore.get(p.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(C.pkg))continue;let y=po.extractBuildScripts(C.pkg,C.customPackageData,C.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});y.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:y})}return c&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${ee.pretty(this.opts.project.configuration,"--preserve-symlinks",ee.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function Rze(r,e){var n;let t=(n=await ot.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new ot,i=new Set(["preinstall","install","postinstall"]);for(let s of t.scripts.keys())i.has(s)||t.scripts.delete(s);return{manifest:{bin:t.bin,scripts:t.scripts},misc:{extractHint:po.getExtractHint(e),hasBindingGyp:po.hasBindingGyp(e)}}}async function Fze(r,e,t,i,{installChangedByUser:n}){let s="";s+=`# Warning: This file is automatically generated. Removing it is fine, but will `,s+=`# cause your node_modules installation to become invalidated. `,s+=` `,s+=`__metadata: -`,s+=` version: ${JAe} +`,s+=` version: ${Nle} `,s+=` nmMode: ${i.value} `;let o=Array.from(e.keys()).sort(),a=P.stringifyLocator(r.topLevelWorkspace.anchoredLocator);for(let u of o){let g=e.get(u);s+=` `,s+=`${JSON.stringify(u)}: @@ -706,14 +706,14 @@ ${we.map(pe=>`Not found: ${lo(pe)} `}if(u===a&&t.size>0){s+=` bin: `;for(let[f,h]of t){let p=x.contains(r.cwd,f);if(p===null)throw new Error(`Assertion failed: Expected the path to be within the project (${f})`);s+=` ${JSON.stringify(p)}: `;for(let[C,y]of h){let B=x.relative(x.join(f,kr),y);s+=` ${JSON.stringify(C)}: ${JSON.stringify(B)} -`}}}}let l=r.cwd,c=x.join(l,kr,WAe);n&&await M.removePromise(c),await M.changeFilePromise(c,s,{automaticNewlines:!0})}async function FO(r,{unrollAliases:e=!1}={}){let t=r.cwd,i=x.join(t,kr,WAe),n;try{n=await M.statPromise(i)}catch{}if(!n)return null;let s=Ii(await M.readFilePromise(i,"utf8"));if(s.__metadata.version>JAe)return null;let o=s.__metadata.nmMode||"classic",a=new Map,l=new Map;delete s.__metadata;for(let[c,u]of Object.entries(s)){let g=u.locations.map(h=>x.join(t,h)),f=u.bin;if(f)for(let[h,p]of Object.entries(f)){let C=x.join(t,K.toPortablePath(h)),y=Ie.getMapWithDefault(l,C);for(let[B,v]of Object.entries(p))y.set(Ur(B),K.toPortablePath([C,kr,v].join(x.sep)))}if(a.set(c,{target:Oe.dot,linkType:"HARD",locations:g,aliases:u.aliases||[]}),e&&u.aliases)for(let h of u.aliases){let{scope:p,name:C}=P.parseLocator(c),y=P.makeLocator(P.makeIdent(p,C),h),B=P.stringifyLocator(y);a.set(B,{target:Oe.dot,linkType:"HARD",locations:g,aliases:[]})}}return{locatorMap:a,binSymlinks:l,locationTree:zAe(a,{skipPrefix:r.cwd}),nmMode:o,mtimeMs:n.mtimeMs}}var zh=async(r,e)=>{if(r.split(x.sep).indexOf(kr)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${r}`);try{if(!e.innerLoop){let i=e.allowSymlink?await M.statPromise(r):await M.lstatPromise(r);if(e.allowSymlink&&!i.isDirectory()||!e.allowSymlink&&i.isSymbolicLink()){await M.unlinkPromise(r);return}}let t=await M.readdirPromise(r,{withFileTypes:!0});for(let i of t){let n=x.join(r,Ur(i.name));i.isDirectory()?(i.name!==kr||e&&e.innerLoop)&&await zh(n,{innerLoop:!0,contentsOnly:!1}):await M.unlinkPromise(n)}e.contentsOnly||await M.rmdirPromise(r)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY")throw t}},GAe=4,YQ=(r,{skipPrefix:e})=>{let t=x.contains(e,r);if(t===null)throw new Error(`Assertion failed: Writing attempt prevented to ${r} which is outside project root: ${e}`);let i=t.split(x.sep).filter(l=>l!==""),n=i.indexOf(kr),s=i.slice(0,n).join(x.sep),o=x.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},zAe=(r,{skipPrefix:e})=>{let t=new Map;if(r===null)return t;let i=()=>({children:new Map,linkType:"HARD"});for(let[n,s]of r.entries()){if(s.linkType==="SOFT"&&x.contains(e,s.target)!==null){let a=Ie.getFactoryWithDefault(t,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=YQ(o,{skipPrefix:e}),c=Ie.getFactoryWithDefault(t,a,i);for(let u=0;u{let t;try{process.platform==="win32"&&(t=await M.lstatPromise(r))}catch{}process.platform=="win32"&&(!t||t.isDirectory())?await M.symlinkPromise(r,e,"junction"):await M.symlinkPromise(x.relative(x.dirname(e),r),e)};async function VAe(r,e,t){let i=x.join(r,Ur(`${NO.default.randomBytes(16).toString("hex")}.tmp`));try{await M.writeFilePromise(i,t);try{await M.linkPromise(i,e)}catch{}}finally{await M.unlinkPromise(i)}}async function v8e({srcPath:r,dstPath:e,entry:t,globalHardlinksStore:i,baseFs:n,nmMode:s}){if(t.kind===XAe.FILE){if(s.value==="hardlinks-global"&&i&&t.digest){let a=x.join(i,t.digest.substring(0,2),`${t.digest.substring(2)}.dat`),l;try{let c=await M.statPromise(a);if(c&&(!t.mtimeMs||c.mtimeMs>t.mtimeMs||c.mtimeMs(i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink",i))(XAe||{}),x8e=async(r,e,{baseFs:t,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await M.mkdirPromise(r,{recursive:!0});let o=async(c=Oe.dot)=>{let u=x.join(e,c),g=await t.readdirPromise(u,{withFileTypes:!0}),f=new Map;for(let h of g){let p=x.join(c,h.name),C,y=x.join(u,h.name);if(h.isFile()){if(C={kind:"file",mode:(await t.lstatPromise(y)).mode},n.value==="hardlinks-global"){let B=await li.checksumFile(y,{baseFs:t,algorithm:"sha1"});C.digest=B}}else if(h.isDirectory())C={kind:"directory"};else if(h.isSymbolicLink())C={kind:"symlink",symlinkTo:await t.readlinkPromise(y)};else throw new Error(`Unsupported file type (file: ${y}, mode: 0o${await t.statSync(y).mode.toString(8).padStart(6,"0")})`);if(f.set(p,C),h.isDirectory()&&p!==kr){let B=await o(p);for(let[v,D]of B)f.set(v,D)}}return f},a;if(n.value==="hardlinks-global"&&i&&s){let c=x.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await M.readFilePromise(c,"utf8"))))}catch{a=await o()}}else a=await o();let l=!1;for(let[c,u]of a){let g=x.join(e,c),f=x.join(r,c);if(u.kind==="directory")await M.mkdirPromise(f,{recursive:!0});else if(u.kind==="file"){let h=u.mtimeMs;await v8e({srcPath:g,dstPath:f,entry:u,nmMode:n,baseFs:t,globalHardlinksStore:i}),u.mtimeMs!==h&&(l=!0)}else u.kind==="symlink"&&await LO(x.resolve(x.dirname(f),u.symlinkTo),f)}if(n.value==="hardlinks-global"&&i&&l&&s){let c=x.join(i,s.substring(0,2),`${s.substring(2)}.json`);await M.removePromise(c),await VAe(i,c,Buffer.from(JSON.stringify(Object.fromEntries(a))))}};function P8e(r,e,t,i){let n=new Map,s=new Map,o=new Map,a=!1,l=(c,u,g,f,h)=>{let p=!0,C=x.join(c,u),y=new Set;if(u===kr||u.startsWith("@")){let v;try{v=M.statSync(C)}catch{}p=!!v,v?v.mtimeMs>t?(a=!0,y=new Set(M.readdirSync(C))):y=new Set(g.children.get(u).children.keys()):a=!0;let D=e.get(c);if(D){let L=x.join(c,kr,HQ),H;try{H=M.statSync(L)}catch{}if(!H)a=!0;else if(H.mtimeMs>t){a=!0;let j=new Set(M.readdirSync(L)),$=new Map;s.set(c,$);for(let[V,W]of D)j.has(V)&&$.set(V,W)}else s.set(c,D)}}else p=h.has(u);let B=g.children.get(u);if(p){let{linkType:v,locator:D}=B,L={children:new Map,linkType:v,locator:D};if(f.children.set(u,L),D){let H=Ie.getSetWithDefault(o,D);H.add(C),o.set(D,H)}for(let H of B.children.keys())l(C,H,B,L,y)}else B.locator&&i.storedBuildState.delete(P.parseLocator(B.locator).locatorHash)};for(let[c,u]of r){let{linkType:g,locator:f}=u,h={children:new Map,linkType:g,locator:f};if(n.set(c,h),f){let p=Ie.getSetWithDefault(o,u.locator);p.add(c),o.set(u.locator,p)}u.children.has(kr)&&l(c,kr,u,h,new Set)}return{locationTree:n,binSymlinks:s,locatorLocations:o,installChangedByUser:a}}function _Ae(r){let e=P.parseDescriptor(r);return P.isVirtualDescriptor(e)&&(e=P.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function D8e(r,e,t,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of r){let c=_Ae(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=x.join(l[0],f);f!==""&&M.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=x.contains(t,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let C=x.join(a,K.toPortablePath(p));u.set(Ur(h),C)}for(let[h,p]of c.children){let C=x.join(a,h),y=o(C,C,p);y.size>0&&s.set(a,new Map([...s.get(a)||new Map,...y]))}}else for(let[f,h]of c.children){let p=o(x.join(a,f),l,h);for(let[C,y]of p)u.set(C,y)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var YAe=(r,e)=>{if(!r||!e)return r===e;let t=P.parseLocator(r);P.isVirtualLocator(t)&&(t=P.devirtualizeLocator(t));let i=P.parseLocator(e);return P.isVirtualLocator(i)&&(i=P.devirtualizeLocator(i)),P.areLocatorsEqual(t,i)};function TO(r){return x.join(r.get("globalFolder"),"store")}async function k8e(r,e,{baseFs:t,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=x.join(i.cwd,kr),{locationTree:l,binSymlinks:c,locatorLocations:u,installChangedByUser:g}=P8e(r.locationTree,r.binSymlinks,r.mtimeMs,i),f=zAe(e,{skipPrefix:i.cwd}),h=[],p=async({srcDir:V,dstDir:W,linkType:Z,globalHardlinksStore:A,nmMode:ae,packageChecksum:ge})=>{let re=(async()=>{try{Z==="SOFT"?(await M.mkdirPromise(x.dirname(W),{recursive:!0}),await LO(x.resolve(V),W)):await x8e(W,V,{baseFs:t,globalHardlinksStore:A,nmMode:ae,packageChecksum:ge})}catch(O){throw O.message=`While persisting ${V} -> ${W} ${O.message}`,O}finally{L.tick()}})().then(()=>h.splice(h.indexOf(re),1));h.push(re),h.length>GAe&&await Promise.race(h)},C=async(V,W,Z)=>{let A=(async()=>{let ae=async(ge,re,O)=>{try{O.innerLoop||await M.mkdirPromise(re,{recursive:!0});let F=await M.readdirPromise(ge,{withFileTypes:!0});for(let ue of F){if(!O.innerLoop&&ue.name===HQ)continue;let he=x.join(ge,ue.name),ke=x.join(re,ue.name);ue.isDirectory()?(ue.name!==kr||O&&O.innerLoop)&&(await M.mkdirPromise(ke,{recursive:!0}),await ae(he,ke,{...O,innerLoop:!0})):$.value==="hardlinks-local"||$.value==="hardlinks-global"?await M.linkPromise(he,ke):await M.copyFilePromise(he,ke,qAe.default.constants.COPYFILE_FICLONE)}}catch(F){throw O.innerLoop||(F.message=`While cloning ${ge} -> ${re} ${F.message}`),F}finally{O.innerLoop||L.tick()}};await ae(V,W,Z)})().then(()=>h.splice(h.indexOf(A),1));h.push(A),h.length>GAe&&await Promise.race(h)},y=async(V,W,Z)=>{if(Z)for(let[A,ae]of W.children){let ge=Z.children.get(A);await y(x.join(V,A),ae,ge)}else{W.children.has(kr)&&await zh(x.join(V,kr),{contentsOnly:!1});let A=x.basename(V)===kr&&f.has(x.join(x.dirname(V),x.sep));await zh(V,{contentsOnly:V===a,allowSymlink:A})}};for(let[V,W]of l){let Z=f.get(V);for(let[A,ae]of W.children){if(A===".")continue;let ge=Z&&Z.children.get(A),re=x.join(V,A);await y(re,ae,ge)}}let B=async(V,W,Z)=>{if(Z){YAe(W.locator,Z.locator)||await zh(V,{contentsOnly:W.linkType==="HARD"});for(let[A,ae]of W.children){let ge=Z.children.get(A);await B(x.join(V,A),ae,ge)}}else{W.children.has(kr)&&await zh(x.join(V,kr),{contentsOnly:!0});let A=x.basename(V)===kr&&f.has(x.join(x.dirname(V),x.sep));await zh(V,{contentsOnly:W.linkType==="HARD",allowSymlink:A})}};for(let[V,W]of f){let Z=l.get(V);for(let[A,ae]of W.children){if(A===".")continue;let ge=Z&&Z.children.get(A);await B(x.join(V,A),ae,ge)}}let v=new Map,D=[];for(let[V,W]of u)for(let Z of W){let{locationRoot:A,segments:ae}=YQ(Z,{skipPrefix:i.cwd}),ge=f.get(A),re=A;if(ge){for(let O of ae)if(re=x.join(re,O),ge=ge.children.get(O),!ge)break;if(ge){let O=YAe(ge.locator,V),F=e.get(ge.locator),ue=F.target,he=re,ke=F.linkType;if(O)v.has(ue)||v.set(ue,he);else if(ue!==he){let Fe=P.parseLocator(ge.locator);P.isVirtualLocator(Fe)&&(Fe=P.devirtualizeLocator(Fe)),D.push({srcDir:ue,dstDir:he,linkType:ke,realLocatorHash:Fe.locatorHash})}}}}for(let[V,{locations:W}]of e.entries())for(let Z of W){let{locationRoot:A,segments:ae}=YQ(Z,{skipPrefix:i.cwd}),ge=l.get(A),re=f.get(A),O=A,F=e.get(V),ue=P.parseLocator(V);P.isVirtualLocator(ue)&&(ue=P.devirtualizeLocator(ue));let he=ue.locatorHash,ke=F.target,Fe=Z;if(ke===Fe)continue;let Ne=F.linkType;for(let oe of ae)re=re.children.get(oe);if(!ge)D.push({srcDir:ke,dstDir:Fe,linkType:Ne,realLocatorHash:he});else for(let oe of ae)if(O=x.join(O,oe),ge=ge.children.get(oe),!ge){D.push({srcDir:ke,dstDir:Fe,linkType:Ne,realLocatorHash:he});break}}let L=Si.progressViaCounter(D.length),H=n.reportProgress(L),j=i.configuration.get("nmMode"),$={value:j};try{let V=$.value==="hardlinks-global"?`${TO(i.configuration)}/v1`:null;if(V&&!await M.existsPromise(V)){await M.mkdirpPromise(V);for(let Z=0;Z<256;Z++)await M.mkdirPromise(x.join(V,Z.toString(16).padStart(2,"0")))}for(let Z of D)(Z.linkType==="SOFT"||!v.has(Z.srcDir))&&(v.set(Z.srcDir,Z.dstDir),await p({...Z,globalHardlinksStore:V,nmMode:$,packageChecksum:o.get(Z.realLocatorHash)||null}));await Promise.all(h),h.length=0;for(let Z of D){let A=v.get(Z.srcDir);Z.linkType!=="SOFT"&&Z.dstDir!==A&&await C(A,Z.dstDir,{nmMode:$})}await Promise.all(h),await M.mkdirPromise(a,{recursive:!0});let W=await D8e(e,f,i.cwd,{loadManifest:s});await R8e(c,W,i.cwd),await S8e(i,e,W,$,{installChangedByUser:g}),j=="hardlinks-global"&&$.value=="hardlinks-local"&&n.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{H.stop()}}async function R8e(r,e,t){for(let i of r.keys()){if(x.contains(t,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=x.join(i,kr,HQ);await M.removePromise(n)}}for(let[i,n]of e){if(x.contains(t,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=x.join(i,kr,HQ),o=r.get(i)||new Map;await M.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await M.removePromise(x.join(s,a)),process.platform==="win32"&&await M.removePromise(x.join(s,Ur(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=x.join(s,a);c!==l&&(process.platform==="win32"?await(0,jAe.default)(K.fromPortablePath(l),K.fromPortablePath(u),{createPwshFile:!1}):(await M.removePromise(u),await LO(l,u),x.contains(t,await M.realpathPromise(l))!==null&&await M.chmodPromise(l,493)))}}}var jQ=class extends ll{constructor(){super(...arguments);this.mode="loose"}makeInstaller(t){return new OO(t)}},OO=class extends Fu{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(t){let i=new Br({baseFs:new Tn({libzip:await rn(),maxOpenFiles:80,readOnlyArchives:!0})}),n=xAe(t,this.opts.project.cwd,i),{tree:s,errors:o}=Jm(n,{pnpifyFs:!1,project:this.opts.project});if(!s){for(let{messageName:g,text:f}of o)this.opts.report.reportError(g,f);return}let a=new Map;t.fallbackPool=a;let l=(g,f)=>{let h=P.parseLocator(f.locator),p=P.stringifyIdent(h);p===g?a.set(g,h.reference):a.set(g,[p,h.reference])},c=x.join(this.opts.project.cwd,xt.nodeModules),u=s.get(c);if(!(typeof u>"u")){if("target"in u)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let g of u.dirList){let f=x.join(c,g),h=s.get(f);if(typeof h>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in h)l(g,h);else for(let p of h.dirList){let C=x.join(f,p),y=s.get(C);if(typeof y>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in y)l(`${g}/${p}`,y);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var F8e={hooks:{cleanGlobalArtifacts:async r=>{let e=TO(r);await M.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:"BOOLEAN",default:!0}},linkers:[GQ,jQ]},N8e=F8e;var LM={};ut(LM,{default:()=>GVe,npmConfigUtils:()=>or,npmHttpUtils:()=>Mt,npmPublishUtils:()=>op});var ile=Pe(Xr());var gr="npm:";var Mt={};ut(Mt,{AuthType:()=>rle,customPackageError:()=>T8e,del:()=>K8e,get:()=>fo,getIdentUrl:()=>gl,handleInvalidAuthenticationError:()=>ul,post:()=>O8e,put:()=>M8e});var HO=Pe(Pm()),tle=J("url");var or={};ut(or,{RegistryType:()=>ZAe,getAuditRegistry:()=>L8e,getAuthConfiguration:()=>UO,getDefaultRegistry:()=>qQ,getPublishRegistry:()=>$Ae,getRegistryConfiguration:()=>ele,getScopeConfiguration:()=>KO,getScopeRegistry:()=>iA,normalizeRegistry:()=>go});var ZAe=(i=>(i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry",i))(ZAe||{});function go(r){return r.replace(/\/$/,"")}function L8e(r,{configuration:e}){let t=e.get("npmAuditRegistry");return t!==null?go(t):$Ae(r,{configuration:e})}function $Ae(r,{configuration:e}){var t;return(t=r.publishConfig)!=null&&t.registry?go(r.publishConfig.registry):r.name?iA(r.name.scope,{configuration:e,type:"npmPublishRegistry"}):qQ({configuration:e,type:"npmPublishRegistry"})}function iA(r,{configuration:e,type:t="npmRegistryServer"}){let i=KO(r,{configuration:e});if(i===null)return qQ({configuration:e,type:t});let n=i.get(t);return n===null?qQ({configuration:e,type:t}):go(n)}function qQ({configuration:r,type:e="npmRegistryServer"}){let t=r.get(e);return go(t!==null?t:r.get("npmRegistryServer"))}function ele(r,{configuration:e}){let t=e.get("npmRegistries"),i=go(r),n=t.get(i);if(typeof n<"u")return n;let s=t.get(i.replace(/^[a-z]+:/,""));return typeof s<"u"?s:null}function KO(r,{configuration:e}){if(r===null)return null;let i=e.get("npmScopes").get(r);return i||null}function UO(r,{configuration:e,ident:t}){let i=t&&KO(t.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:ele(r,{configuration:e})||e}var rle=(n=>(n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH",n))(rle||{});async function ul(r,{attemptedAs:e,registry:t,headers:i,configuration:n}){var s,o;if(WQ(r))throw new at(41,"Invalid OTP token");if(((s=r.originalError)==null?void 0:s.name)==="HTTPError"&&((o=r.originalError)==null?void 0:o.response.statusCode)===401)throw new at(41,`Invalid authentication (${typeof e!="string"?`as ${await H8e(t,i,{configuration:n})}`:`attempted as ${e}`})`)}function T8e(r){var e;return((e=r.response)==null?void 0:e.statusCode)===404?"Package not found":null}function gl(r){return r.scope?`/@${r.scope}%2f${r.name}`:`/${r.name}`}async function fo(r,{configuration:e,headers:t,ident:i,authType:n,registry:s,...o}){if(i&&typeof s>"u"&&(s=iA(i.scope,{configuration:e})),i&&i.scope&&typeof n>"u"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let a=await JQ(s,{authType:n,configuration:e,ident:i});a&&(t={...t,authorization:a});try{return await Vt.get(r.charAt(0)==="/"?`${s}${r}`:r,{configuration:e,headers:t,...o})}catch(l){throw await ul(l,{registry:s,configuration:e,headers:t}),l}}async function O8e(r,e,{attemptedAs:t,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l,...c}){if(s&&typeof a>"u"&&(a=iA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let u=await JQ(a,{authType:o,configuration:i,ident:s});u&&(n={...n,authorization:u}),l&&(n={...n,...Vh(l)});try{return await Vt.post(a+r,e,{configuration:i,headers:n,...c})}catch(g){if(!WQ(g)||l)throw await ul(g,{attemptedAs:t,registry:a,configuration:i,headers:n}),g;l=await GO(g,{configuration:i});let f={...n,...Vh(l)};try{return await Vt.post(`${a}${r}`,e,{configuration:i,headers:f,...c})}catch(h){throw await ul(h,{attemptedAs:t,registry:a,configuration:i,headers:n}),h}}}async function M8e(r,e,{attemptedAs:t,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l,...c}){if(s&&typeof a>"u"&&(a=iA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let u=await JQ(a,{authType:o,configuration:i,ident:s});u&&(n={...n,authorization:u}),l&&(n={...n,...Vh(l)});try{return await Vt.put(a+r,e,{configuration:i,headers:n,...c})}catch(g){if(!WQ(g))throw await ul(g,{attemptedAs:t,registry:a,configuration:i,headers:n}),g;l=await GO(g,{configuration:i});let f={...n,...Vh(l)};try{return await Vt.put(`${a}${r}`,e,{configuration:i,headers:f,...c})}catch(h){throw await ul(h,{attemptedAs:t,registry:a,configuration:i,headers:n}),h}}}async function K8e(r,{attemptedAs:e,configuration:t,headers:i,ident:n,authType:s=3,registry:o,otp:a,...l}){if(n&&typeof o>"u"&&(o=iA(n.scope,{configuration:t})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let c=await JQ(o,{authType:s,configuration:t,ident:n});c&&(i={...i,authorization:c}),a&&(i={...i,...Vh(a)});try{return await Vt.del(o+r,{configuration:t,headers:i,...l})}catch(u){if(!WQ(u)||a)throw await ul(u,{attemptedAs:e,registry:o,configuration:t,headers:i}),u;a=await GO(u,{configuration:t});let g={...i,...Vh(a)};try{return await Vt.del(`${o}${r}`,{configuration:t,headers:g,...l})}catch(f){throw await ul(f,{attemptedAs:e,registry:o,configuration:t,headers:i}),f}}}async function JQ(r,{authType:e=2,configuration:t,ident:i}){let n=UO(r,{configuration:t,ident:i}),s=U8e(n,e);if(!s)return null;let o=await t.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,r,{configuration:t,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new at(33,"No authentication configured for request");return null}function U8e(r,e){switch(e){case 2:return r.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function H8e(r,e,{configuration:t}){var i;if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(i=(await Vt.get(new tle.URL(`${r}/-/whoami`).href,{configuration:t,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function GO(r,{configuration:e}){var n;let t=(n=r.originalError)==null?void 0:n.response.headers["npm-notice"];if(t&&(await Ge.start({configuration:e,stdout:process.stdout,includeFooter:!1},async s=>{if(s.reportInfo(0,t.replace(/(https?:\/\/\S+)/g,ee.pretty(e,"$1",ee.Type.URL))),!process.env.YARN_IS_TEST_ENV){let o=t.match(/open (https?:\/\/\S+)/i);if(o&&Cs.openUrl){let{openNow:a}=await(0,HO.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});a&&(await Cs.openUrl(o[1])||(s.reportSeparator(),s.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` -`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:i}=await(0,HO.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` -`),i}function WQ(r){var e,t;if(((e=r.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((t=r.originalError)==null?void 0:t.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch{return!1}}function Vh(r){return{["npm-otp"]:r}}var zQ=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i,params:n}=P.parseRange(e.reference);return!(!ile.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let{params:i}=P.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await fo(i.__archiveUrl,{configuration:t.project.configuration,ident:e});return await Ci.convertToZip(n,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var VQ=class{supportsDescriptor(e,t){return!(!e.range.startsWith(gr)||!P.tryParseDescriptor(e.range.slice(gr.length),!0))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){let i=P.parseDescriptor(e.range.slice(gr.length),!0);return t.resolver.getResolutionDependencies(i,t)}async getCandidates(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return await i.resolver.getCandidates(n,t,i)}async getSatisfying(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return i.resolver.getSatisfying(n,t,i)}resolve(e,t){throw new Error("Unreachable")}};var nle=Pe(Xr()),sle=J("url");var Rs=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let i=new sle.URL(e.reference);return!(!nle.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i;try{i=await fo(Rs.getLocatorUrl(e),{configuration:t.project.configuration,ident:e})}catch{i=await fo(Rs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:t.project.configuration,ident:e})}return await Ci.convertToZip(i,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,t,{configuration:i}){let n=iA(e.scope,{configuration:i}),s=Rs.getLocatorUrl(e);return t=t.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t=t.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t===n+s||t===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let t=vt.clean(e.reference.slice(gr.length));if(t===null)throw new at(10,"The npm semver resolver got selected, but the version isn't semver");return`${gl(e)}/-/${e.name}-${t}.tgz`}};var ole=Pe(Xr());var XQ=P.makeIdent(null,"node-gyp"),G8e=/\b(node-gyp|prebuild-install)\b/,_Q=class{supportsDescriptor(e,t){return e.range.startsWith(gr)?!!vt.validRange(e.range.slice(gr.length)):!1}supportsLocator(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i}=P.parseRange(e.reference);return!!ole.default.valid(i)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(gr.length)}`);let s=await fo(gl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=Ie.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new vt.SemVer(c);if(n.test(u))return u}catch{}return Ie.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=P.makeLocator(e,`${gr}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Rs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:P.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(gr.length)}`);return Ie.mapAndFilter(t,s=>{try{let{selector:o}=P.parseRange(s,{requireProtocol:gr}),a=new vt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return Ie.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>P.makeLocator(e,s))}async resolve(e,t){let{selector:i}=P.parseRange(e.reference),n=vt.clean(i);if(n===null)throw new at(10,"The npm semver resolver got selected, but the version isn't semver");let s=await fo(gl(e),{configuration:t.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new at(15,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new at(16,`Registry failed to return reference "${n}"`);let o=new ot;if(o.load(s.versions[n]),!o.dependencies.has(XQ.identHash)&&!o.peerDependencies.has(XQ.identHash)){for(let a of o.scripts.values())if(a.match(G8e)){o.dependencies.set(XQ.identHash,P.makeDescriptor(XQ,"latest")),t.report.reportWarningOnce(32,`${P.prettyLocator(t.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof o.raw.deprecated=="string"&&o.raw.deprecated!==""){let a=P.prettyLocator(t.project.configuration,e),l=o.raw.deprecated.match(/\S/)?`${a} is deprecated: ${o.raw.deprecated}`:`${a} is deprecated`;t.report.reportWarningOnce(61,l)}return{...e,version:n,languageName:"node",linkType:"HARD",conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin}}};var ZQ=class{supportsDescriptor(e,t){return!(!e.range.startsWith(gr)||!wf.test(e.range.slice(gr.length)))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(gr.length),s=await fo(gl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new at(15,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new at(16,`Registry failed to return tag "${n}"`);let a=o[n],l=P.makeLocator(e,`${gr}${a}`),c=s.versions[a].dist.tarball;return Rs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[P.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,t,i){return null}async resolve(e,t){throw new Error("Unreachable")}};var op={};ut(op,{getGitHead:()=>UVe,makePublishBody:()=>KVe});var DM={};ut(DM,{default:()=>yVe,packUtils:()=>ia});var ia={};ut(ia,{genPackList:()=>yb,genPackStream:()=>PM,genPackageManifest:()=>Oce,hasPackScripts:()=>vM,prepareForPack:()=>xM});var SM=Pe(yn()),Lce=Pe(kce()),Tce=J("zlib"),cVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],uVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function vM(r){return!!(Jt.hasWorkspaceScript(r,"prepack")||Jt.hasWorkspaceScript(r,"postpack"))}async function xM(r,{report:e},t){await Jt.maybeExecuteWorkspaceLifecycleScript(r,"prepack",{report:e});try{let i=x.join(r.cwd,ot.fileName);await M.existsPromise(i)&&await r.manifest.loadFile(i,{baseFs:M}),await t()}finally{await Jt.maybeExecuteWorkspaceLifecycleScript(r,"postpack",{report:e})}}async function PM(r,e){var s,o;typeof e>"u"&&(e=await yb(r));let t=new Set;for(let a of(o=(s=r.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)t.add(x.normalize(a));for(let a of r.manifest.bin.values())t.add(x.normalize(a));let i=Lce.default.pack();process.nextTick(async()=>{for(let a of e){let l=x.normalize(a),c=x.resolve(r.cwd,l),u=x.join("package",l),g=await M.lstatPromise(c),f={name:u,mtime:new Date(xr.SAFE_TIME*1e3)},h=t.has(l)?493:420,p,C,y=new Promise((v,D)=>{p=v,C=D}),B=v=>{v?C(v):p()};if(g.isFile()){let v;l==="package.json"?v=Buffer.from(JSON.stringify(await Oce(r),null,2)):v=await M.readFilePromise(c),i.entry({...f,mode:h,type:"file"},v,B)}else g.isSymbolicLink()?i.entry({...f,mode:h,type:"symlink",linkname:await M.readlinkPromise(c)},B):B(new Error(`Unsupported file type ${g.mode} for ${K.fromPortablePath(l)}`));await y}i.finalize()});let n=(0,Tce.createGzip)();return i.pipe(n),n}async function Oce(r){let e=JSON.parse(JSON.stringify(r.manifest.raw));return await r.project.configuration.triggerHook(t=>t.beforeWorkspacePacking,r,e),e}async function yb(r){var g,f,h,p,C,y,B,v;let e=r.project,t=e.configuration,i={accept:[],reject:[]};for(let D of uVe)i.reject.push(D);for(let D of cVe)i.accept.push(D);i.reject.push(t.get("rcFilename"));let n=D=>{if(D===null||!D.startsWith(`${r.cwd}/`))return;let L=x.relative(r.cwd,D),H=x.resolve(Oe.root,L);i.reject.push(H)};n(x.resolve(e.cwd,t.get("lockfileFilename"))),n(t.get("cacheFolder")),n(t.get("globalFolder")),n(t.get("installStatePath")),n(t.get("virtualFolder")),n(t.get("yarnPath")),await t.triggerHook(D=>D.populateYarnPaths,e,D=>{n(D)});for(let D of e.workspaces){let L=x.relative(r.cwd,D.cwd);L!==""&&!L.match(/^(\.\.)?\//)&&i.reject.push(`/${L}`)}let s={accept:[],reject:[]},o=(f=(g=r.manifest.publishConfig)==null?void 0:g.main)!=null?f:r.manifest.main,a=(p=(h=r.manifest.publishConfig)==null?void 0:h.module)!=null?p:r.manifest.module,l=(y=(C=r.manifest.publishConfig)==null?void 0:C.browser)!=null?y:r.manifest.browser,c=(v=(B=r.manifest.publishConfig)==null?void 0:B.bin)!=null?v:r.manifest.bin;o!=null&&s.accept.push(x.resolve(Oe.root,o)),a!=null&&s.accept.push(x.resolve(Oe.root,a)),typeof l=="string"&&s.accept.push(x.resolve(Oe.root,l));for(let D of c.values())s.accept.push(x.resolve(Oe.root,D));if(l instanceof Map)for(let[D,L]of l.entries())s.accept.push(x.resolve(Oe.root,D)),typeof L=="string"&&s.accept.push(x.resolve(Oe.root,L));let u=r.manifest.files!==null;if(u){s.reject.push("/*");for(let D of r.manifest.files)Mce(s.accept,D,{cwd:Oe.root})}return await gVe(r.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function gVe(r,{hasExplicitFileList:e,globalList:t,ignoreList:i}){let n=[],s=new wo(r),o=[[Oe.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!Fce(a,{globalList:t,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Oe.root)for(let C of u)g=g||C===".gitignore",f=f||C===".npmignore";let h=f?await Rce(s,a,".npmignore"):g?await Rce(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;Fce(a,{globalList:t,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let C of u)o.push([x.resolve(a,C),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(x.relative(Oe.root,a))}return n.sort()}async function Rce(r,e,t){let i={accept:[],reject:[]},n=await r.readFilePromise(x.join(e,t),"utf8");for(let s of n.split(/\n/g))Mce(i.reject,s,{cwd:e});return i}function fVe(r,{cwd:e}){let t=r[0]==="!";return t&&(r=r.slice(1)),r.match(/\.{0,1}\//)&&(r=x.resolve(e,r)),t&&(r=`!${r}`),r}function Mce(r,e,{cwd:t}){let i=e.trim();i===""||i[0]==="#"||r.push(fVe(i,{cwd:t}))}function Fce(r,{globalList:e,ignoreLists:t}){let i=Ib(r,e.accept);if(i!==0)return i===2;let n=Ib(r,e.reject);if(n!==0)return n===1;if(t!==null)for(let s of t){let o=Ib(r,s.accept);if(o!==0)return o===2;let a=Ib(r,s.reject);if(a!==0)return a===1}return!1}function Ib(r,e){let t=e,i=[];for(let n=0;n{await xM(n,{report:c},async()=>{c.reportJson({base:K.fromPortablePath(n.cwd)});let u=await yb(n);for(let g of u)c.reportInfo(null,K.fromPortablePath(g)),c.reportJson({location:K.fromPortablePath(g)});if(!this.dryRun){let g=await PM(n,u),f=M.createWriteStream(o);g.pipe(f),await new Promise(h=>{f.on("finish",h)})}}),this.dryRun||(c.reportInfo(0,`Package archive generated in ${ee.pretty(t,o,ee.Type.PATH)}`),c.reportJson({output:K.fromPortablePath(o)}))})).exitCode()}};Ku.paths=[["pack"]],Ku.usage=ve.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function hVe(r,{workspace:e}){let t=r.replace("%s",pVe(e)).replace("%v",dVe(e));return K.toPortablePath(t)}function pVe(r){return r.manifest.name!==null?P.slugifyIdent(r.manifest.name):"package"}function dVe(r){return r.manifest.version!==null?r.manifest.version:"unknown"}var CVe=["dependencies","devDependencies","peerDependencies"],mVe="workspace:",EVe=(r,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let t=r.project;for(let s of CVe)for(let o of r.manifest.getForScope(s).values()){let a=t.tryWorkspaceByDescriptor(o),l=P.parseRange(o.range);if(l.protocol===mVe)if(a===null){if(t.tryWorkspaceByIdent(o)===null)throw new at(21,`${P.prettyDescriptor(t.configuration,o)}: No local workspace found for this range`)}else{let c;P.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector;let u=s==="dependencies"?P.makeDescriptor(o,"unknown"):null,g=u!==null&&r.manifest.ensureDependencyMeta(u).optional?"optionalDependencies":s;e[g][P.stringifyIdent(o)]=c}}},IVe={hooks:{beforeWorkspacePacking:EVe},commands:[Ku]},yVe=IVe;var Wce=J("crypto"),zce=Pe(Jce()),Vce=J("url");async function KVe(r,e,{access:t,tag:i,registry:n,gitHead:s}){let o=r.project.configuration,a=r.manifest.name,l=r.manifest.version,c=P.stringifyIdent(a),u=(0,Wce.createHash)("sha1").update(e).digest("hex"),g=zce.default.fromData(e).toString();typeof t>"u"&&(r.manifest.publishConfig&&typeof r.manifest.publishConfig.access=="string"?t=r.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?t=o.get("npmPublishAccess"):a.scope?t="restricted":t="public");let f=await ia.genPackageManifest(r),h=`${c}-${l}.tgz`,p=new Vce.URL(`${go(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:t,["dist-tags"]:{[i]:l},versions:{[l]:{...f,_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}}}}}async function UVe(r){try{let{stdout:e}=await Cr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:r});return e.trim()===""?void 0:e.trim()}catch{return}}var NM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Xce={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},HVe={configuration:{...NM,...Xce,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...NM,...Xce}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:go,valueDefinition:{description:"",type:"SHAPE",properties:{...NM}}}},fetchers:[zQ,Rs],resolvers:[VQ,_Q,ZQ]},GVe=HVe;var KM={};ut(KM,{default:()=>ZVe});var EE=Pe(yn());ns();var wb=(i=>(i.All="all",i.Production="production",i.Development="development",i))(wb||{}),Bb=(s=>(s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical",s))(Bb||{});var mE=["info","low","moderate","high","critical"];function Zce(r,e){let t=[],i=new Set,n=o=>{i.has(o)||(i.add(o),t.push(o))};for(let o of e)n(o);let s=new Set;for(;t.length>0;){let o=t.shift(),a=r.storedResolutions.get(o);if(typeof a>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=r.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function YVe(r,e){return new Set([...r].filter(t=>!e.has(t)))}function jVe(r,e,{all:t}){let i=t?r.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=Zce(r,l),g=Zce(r,c);return YVe(g,u)}function $ce(r){let e={};for(let t of r)e[P.stringifyIdent(t)]=P.parseRange(t.range).selector;return e}function eue(r){if(typeof r>"u")return new Set(mE);let e=mE.indexOf(r),t=mE.slice(e);return new Set(t)}function qVe(r,e){let t=eue(e),i={};for(let n of t)i[n]=r[n];return i}function tue(r,e){var i;let t=qVe(r,e);for(let n of Object.keys(t))if((i=t[n])!=null?i:0>0)return!0;return!1}function rue(r,e){var s;let t={},i={children:t},n=Object.values(r.advisories);if(e!=null){let o=eue(e);n=n.filter(a=>o.has(a.severity))}for(let o of Ie.sortMap(n,a=>a.module_name))t[o.module_name]={label:o.module_name,value:ee.tuple(ee.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{ID:{label:"ID",value:ee.tuple(ee.Type.NUMBER,o.id)},Issue:{label:"Issue",value:ee.tuple(ee.Type.NO_HINT,o.title)},URL:{label:"URL",value:ee.tuple(ee.Type.URL,o.url)},Severity:{label:"Severity",value:ee.tuple(ee.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ee.tuple(ee.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ee.tuple(ee.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ee.tuple(ee.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ee.tuple(ee.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function iue(r,e,{all:t,environment:i}){let n=t?r.workspaces:[e],s=["all","production"].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=["all","development"].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return $ce([...o,...l].filter(c=>P.parseRange(c.range).protocol===null))}function nue(r,e,{all:t}){var s;let i=jVe(r,e,{all:t}),n={};for(let o of r.storedPackages.values())n[P.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:$ce(o.dependencies.values()),dev:i.has(P.convertLocatorToDescriptor(o).descriptorHash)};return n}var Gu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=z.String("--environment","all",{description:"Which environments to cover",validator:Wi(wb)});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=z.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Wi(Bb)});this.excludes=z.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=z.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=iue(i,n,{all:this.all,environment:this.environment}),o=nue(i,n,{all:this.all});if(!this.recursive)for(let C of Object.keys(o))Object.prototype.hasOwnProperty.call(s,C)?o[C].requires={}:delete o[C];let a=Array.from(new Set([...t.get("npmAuditExcludePackages"),...this.excludes]));if(a){for(let C of Object.keys(s))EE.default.isMatch(C,a)&&delete s[C];for(let C of Object.keys(o))EE.default.isMatch(C,a)&&delete o[C];for(let C of Object.keys(o))for(let y of Object.keys(o[C].requires))EE.default.isMatch(y,a)&&delete o[C].requires[y]}let l={requires:s,dependencies:o},c=or.getAuditRegistry(n.manifest,{configuration:t}),u,g=await _o.start({configuration:t,stdout:this.context.stdout},async()=>{u=await Mt.post("/-/npm/v1/security/audits/quick",l,{authType:Mt.AuthType.BEST_EFFORT,configuration:t,jsonResponse:!0,registry:c})});if(g.hasErrors())return g.exitCode();let f=Array.from(new Set([...t.get("npmAuditIgnoreAdvisories"),...this.ignores]));if(f){for(let C of Object.keys(u.advisories))if(EE.default.isMatch(C,f)){let y=u.advisories[C];u.metadata.vulnerabilities[y.severity]-=1,delete u.advisories[C]}}let h=tue(u.metadata.vulnerabilities,this.severity);return!this.json&&h?(Vn.emitTree(rue(u,this.severity),{configuration:t,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async C=>{C.reportJson(u),h||C.reportInfo(1,"No audit suggestions")})).exitCode()}};Gu.paths=[["npm","audit"]],Gu.usage=ve.Usage({description:"perform a vulnerability audit against the installed packages",details:` +`}}}}let l=r.cwd,c=x.join(l,kr,Lle);n&&await M.removePromise(c),await M.changeFilePromise(c,s,{automaticNewlines:!0})}async function lM(r,{unrollAliases:e=!1}={}){let t=r.cwd,i=x.join(t,kr,Lle),n;try{n=await M.statPromise(i)}catch{}if(!n)return null;let s=yi(await M.readFilePromise(i,"utf8"));if(s.__metadata.version>Nle)return null;let o=s.__metadata.nmMode||"classic",a=new Map,l=new Map;delete s.__metadata;for(let[c,u]of Object.entries(s)){let g=u.locations.map(h=>x.join(t,h)),f=u.bin;if(f)for(let[h,p]of Object.entries(f)){let C=x.join(t,U.toPortablePath(h)),y=Ie.getMapWithDefault(l,C);for(let[B,v]of Object.entries(p))y.set(Kr(B),U.toPortablePath([C,kr,v].join(x.sep)))}if(a.set(c,{target:Oe.dot,linkType:"HARD",locations:g,aliases:u.aliases||[]}),e&&u.aliases)for(let h of u.aliases){let{scope:p,name:C}=P.parseLocator(c),y=P.makeLocator(P.makeIdent(p,C),h),B=P.stringifyLocator(y);a.set(B,{target:Oe.dot,linkType:"HARD",locations:g,aliases:[]})}}return{locatorMap:a,binSymlinks:l,locationTree:Tle(a,{skipPrefix:r.cwd}),nmMode:o,mtimeMs:n.mtimeMs}}var sp=async(r,e)=>{if(r.split(x.sep).indexOf(kr)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${r}`);try{if(!e.innerLoop){let i=e.allowSymlink?await M.statPromise(r):await M.lstatPromise(r);if(e.allowSymlink&&!i.isDirectory()||!e.allowSymlink&&i.isSymbolicLink()){await M.unlinkPromise(r);return}}let t=await M.readdirPromise(r,{withFileTypes:!0});for(let i of t){let n=x.join(r,Kr(i.name));i.isDirectory()?(i.name!==kr||e&&e.innerLoop)&&await sp(n,{innerLoop:!0,contentsOnly:!1}):await M.unlinkPromise(n)}e.contentsOnly||await M.rmdirPromise(r)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY")throw t}},Dle=4,sb=(r,{skipPrefix:e})=>{let t=x.contains(e,r);if(t===null)throw new Error(`Assertion failed: Writing attempt prevented to ${r} which is outside project root: ${e}`);let i=t.split(x.sep).filter(l=>l!==""),n=i.indexOf(kr),s=i.slice(0,n).join(x.sep),o=x.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Tle=(r,{skipPrefix:e})=>{let t=new Map;if(r===null)return t;let i=()=>({children:new Map,linkType:"HARD"});for(let[n,s]of r.entries()){if(s.linkType==="SOFT"&&x.contains(e,s.target)!==null){let a=Ie.getFactoryWithDefault(t,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=sb(o,{skipPrefix:e}),c=Ie.getFactoryWithDefault(t,a,i);for(let u=0;u{let t;try{process.platform==="win32"&&(t=await M.lstatPromise(r))}catch{}process.platform=="win32"&&(!t||t.isDirectory())?await M.symlinkPromise(r,e,"junction"):await M.symlinkPromise(x.relative(x.dirname(e),r),e)};async function Ole(r,e,t){let i=x.join(r,Kr(`${cM.default.randomBytes(16).toString("hex")}.tmp`));try{await M.writeFilePromise(i,t);try{await M.linkPromise(i,e)}catch{}}finally{await M.unlinkPromise(i)}}async function Nze({srcPath:r,dstPath:e,entry:t,globalHardlinksStore:i,baseFs:n,nmMode:s}){if(t.kind===Mle.FILE){if(s.value==="hardlinks-global"&&i&&t.digest){let a=x.join(i,t.digest.substring(0,2),`${t.digest.substring(2)}.dat`),l;try{let c=await M.statPromise(a);if(c&&(!t.mtimeMs||c.mtimeMs>t.mtimeMs||c.mtimeMs(i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink",i))(Mle||{}),Lze=async(r,e,{baseFs:t,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await M.mkdirPromise(r,{recursive:!0});let o=async(c=Oe.dot)=>{let u=x.join(e,c),g=await t.readdirPromise(u,{withFileTypes:!0}),f=new Map;for(let h of g){let p=x.join(c,h.name),C,y=x.join(u,h.name);if(h.isFile()){if(C={kind:"file",mode:(await t.lstatPromise(y)).mode},n.value==="hardlinks-global"){let B=await li.checksumFile(y,{baseFs:t,algorithm:"sha1"});C.digest=B}}else if(h.isDirectory())C={kind:"directory"};else if(h.isSymbolicLink())C={kind:"symlink",symlinkTo:await t.readlinkPromise(y)};else throw new Error(`Unsupported file type (file: ${y}, mode: 0o${await t.statSync(y).mode.toString(8).padStart(6,"0")})`);if(f.set(p,C),h.isDirectory()&&p!==kr){let B=await o(p);for(let[v,D]of B)f.set(v,D)}}return f},a;if(n.value==="hardlinks-global"&&i&&s){let c=x.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await M.readFilePromise(c,"utf8"))))}catch{a=await o()}}else a=await o();let l=!1;for(let[c,u]of a){let g=x.join(e,c),f=x.join(r,c);if(u.kind==="directory")await M.mkdirPromise(f,{recursive:!0});else if(u.kind==="file"){let h=u.mtimeMs;await Nze({srcPath:g,dstPath:f,entry:u,nmMode:n,baseFs:t,globalHardlinksStore:i}),u.mtimeMs!==h&&(l=!0)}else u.kind==="symlink"&&await uM(x.resolve(x.dirname(f),u.symlinkTo),f)}if(n.value==="hardlinks-global"&&i&&l&&s){let c=x.join(i,s.substring(0,2),`${s.substring(2)}.json`);await M.removePromise(c),await Ole(i,c,Buffer.from(JSON.stringify(Object.fromEntries(a))))}};function Tze(r,e,t,i){let n=new Map,s=new Map,o=new Map,a=!1,l=(c,u,g,f,h)=>{let p=!0,C=x.join(c,u),y=new Set;if(u===kr||u.startsWith("@")){let v;try{v=M.statSync(C)}catch{}p=!!v,v?v.mtimeMs>t?(a=!0,y=new Set(M.readdirSync(C))):y=new Set(g.children.get(u).children.keys()):a=!0;let D=e.get(c);if(D){let L=x.join(c,kr,ib),H;try{H=M.statSync(L)}catch{}if(!H)a=!0;else if(H.mtimeMs>t){a=!0;let j=new Set(M.readdirSync(L)),$=new Map;s.set(c,$);for(let[V,W]of D)j.has(V)&&$.set(V,W)}else s.set(c,D)}}else p=h.has(u);let B=g.children.get(u);if(p){let{linkType:v,locator:D}=B,L={children:new Map,linkType:v,locator:D};if(f.children.set(u,L),D){let H=Ie.getSetWithDefault(o,D);H.add(C),o.set(D,H)}for(let H of B.children.keys())l(C,H,B,L,y)}else B.locator&&i.storedBuildState.delete(P.parseLocator(B.locator).locatorHash)};for(let[c,u]of r){let{linkType:g,locator:f}=u,h={children:new Map,linkType:g,locator:f};if(n.set(c,h),f){let p=Ie.getSetWithDefault(o,u.locator);p.add(c),o.set(u.locator,p)}u.children.has(kr)&&l(c,kr,u,h,new Set)}return{locationTree:n,binSymlinks:s,locatorLocations:o,installChangedByUser:a}}function Ule(r){let e=P.parseDescriptor(r);return P.isVirtualDescriptor(e)&&(e=P.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function Oze(r,e,t,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of r){let c=Ule(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=x.join(l[0],f);f!==""&&M.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=x.contains(t,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let C=x.join(a,U.toPortablePath(p));u.set(Kr(h),C)}for(let[h,p]of c.children){let C=x.join(a,h),y=o(C,C,p);y.size>0&&s.set(a,new Map([...s.get(a)||new Map,...y]))}}else for(let[f,h]of c.children){let p=o(x.join(a,f),l,h);for(let[C,y]of p)u.set(C,y)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var kle=(r,e)=>{if(!r||!e)return r===e;let t=P.parseLocator(r);P.isVirtualLocator(t)&&(t=P.devirtualizeLocator(t));let i=P.parseLocator(e);return P.isVirtualLocator(i)&&(i=P.devirtualizeLocator(i)),P.areLocatorsEqual(t,i)};function gM(r){return x.join(r.get("globalFolder"),"store")}async function Mze(r,e,{baseFs:t,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=x.join(i.cwd,kr),{locationTree:l,binSymlinks:c,locatorLocations:u,installChangedByUser:g}=Tze(r.locationTree,r.binSymlinks,r.mtimeMs,i),f=Tle(e,{skipPrefix:i.cwd}),h=[],p=async({srcDir:V,dstDir:W,linkType:_,globalHardlinksStore:A,nmMode:Ae,packageChecksum:ge})=>{let re=(async()=>{try{_==="SOFT"?(await M.mkdirPromise(x.dirname(W),{recursive:!0}),await uM(x.resolve(V),W)):await Lze(W,V,{baseFs:t,globalHardlinksStore:A,nmMode:Ae,packageChecksum:ge})}catch(O){throw O.message=`While persisting ${V} -> ${W} ${O.message}`,O}finally{L.tick()}})().then(()=>h.splice(h.indexOf(re),1));h.push(re),h.length>Dle&&await Promise.race(h)},C=async(V,W,_)=>{let A=(async()=>{let Ae=async(ge,re,O)=>{try{O.innerLoop||await M.mkdirPromise(re,{recursive:!0});let F=await M.readdirPromise(ge,{withFileTypes:!0});for(let ue of F){if(!O.innerLoop&&ue.name===ib)continue;let pe=x.join(ge,ue.name),ke=x.join(re,ue.name);ue.isDirectory()?(ue.name!==kr||O&&O.innerLoop)&&(await M.mkdirPromise(ke,{recursive:!0}),await Ae(pe,ke,{...O,innerLoop:!0})):$.value==="hardlinks-local"||$.value==="hardlinks-global"?await M.linkPromise(pe,ke):await M.copyFilePromise(pe,ke,Fle.default.constants.COPYFILE_FICLONE)}}catch(F){throw O.innerLoop||(F.message=`While cloning ${ge} -> ${re} ${F.message}`),F}finally{O.innerLoop||L.tick()}};await Ae(V,W,_)})().then(()=>h.splice(h.indexOf(A),1));h.push(A),h.length>Dle&&await Promise.race(h)},y=async(V,W,_)=>{if(_)for(let[A,Ae]of W.children){let ge=_.children.get(A);await y(x.join(V,A),Ae,ge)}else{W.children.has(kr)&&await sp(x.join(V,kr),{contentsOnly:!1});let A=x.basename(V)===kr&&f.has(x.join(x.dirname(V),x.sep));await sp(V,{contentsOnly:V===a,allowSymlink:A})}};for(let[V,W]of l){let _=f.get(V);for(let[A,Ae]of W.children){if(A===".")continue;let ge=_&&_.children.get(A),re=x.join(V,A);await y(re,Ae,ge)}}let B=async(V,W,_)=>{if(_){kle(W.locator,_.locator)||await sp(V,{contentsOnly:W.linkType==="HARD"});for(let[A,Ae]of W.children){let ge=_.children.get(A);await B(x.join(V,A),Ae,ge)}}else{W.children.has(kr)&&await sp(x.join(V,kr),{contentsOnly:!0});let A=x.basename(V)===kr&&f.has(x.join(x.dirname(V),x.sep));await sp(V,{contentsOnly:W.linkType==="HARD",allowSymlink:A})}};for(let[V,W]of f){let _=l.get(V);for(let[A,Ae]of W.children){if(A===".")continue;let ge=_&&_.children.get(A);await B(x.join(V,A),Ae,ge)}}let v=new Map,D=[];for(let[V,W]of u)for(let _ of W){let{locationRoot:A,segments:Ae}=sb(_,{skipPrefix:i.cwd}),ge=f.get(A),re=A;if(ge){for(let O of Ae)if(re=x.join(re,O),ge=ge.children.get(O),!ge)break;if(ge){let O=kle(ge.locator,V),F=e.get(ge.locator),ue=F.target,pe=re,ke=F.linkType;if(O)v.has(ue)||v.set(ue,pe);else if(ue!==pe){let Fe=P.parseLocator(ge.locator);P.isVirtualLocator(Fe)&&(Fe=P.devirtualizeLocator(Fe)),D.push({srcDir:ue,dstDir:pe,linkType:ke,realLocatorHash:Fe.locatorHash})}}}}for(let[V,{locations:W}]of e.entries())for(let _ of W){let{locationRoot:A,segments:Ae}=sb(_,{skipPrefix:i.cwd}),ge=l.get(A),re=f.get(A),O=A,F=e.get(V),ue=P.parseLocator(V);P.isVirtualLocator(ue)&&(ue=P.devirtualizeLocator(ue));let pe=ue.locatorHash,ke=F.target,Fe=_;if(ke===Fe)continue;let Ne=F.linkType;for(let oe of Ae)re=re.children.get(oe);if(!ge)D.push({srcDir:ke,dstDir:Fe,linkType:Ne,realLocatorHash:pe});else for(let oe of Ae)if(O=x.join(O,oe),ge=ge.children.get(oe),!ge){D.push({srcDir:ke,dstDir:Fe,linkType:Ne,realLocatorHash:pe});break}}let L=vi.progressViaCounter(D.length),H=n.reportProgress(L),j=i.configuration.get("nmMode"),$={value:j};try{let V=$.value==="hardlinks-global"?`${gM(i.configuration)}/v1`:null;if(V&&!await M.existsPromise(V)){await M.mkdirpPromise(V);for(let _=0;_<256;_++)await M.mkdirPromise(x.join(V,_.toString(16).padStart(2,"0")))}for(let _ of D)(_.linkType==="SOFT"||!v.has(_.srcDir))&&(v.set(_.srcDir,_.dstDir),await p({..._,globalHardlinksStore:V,nmMode:$,packageChecksum:o.get(_.realLocatorHash)||null}));await Promise.all(h),h.length=0;for(let _ of D){let A=v.get(_.srcDir);_.linkType!=="SOFT"&&_.dstDir!==A&&await C(A,_.dstDir,{nmMode:$})}await Promise.all(h),await M.mkdirPromise(a,{recursive:!0});let W=await Oze(e,f,i.cwd,{loadManifest:s});await Uze(c,W,i.cwd),await Fze(i,e,W,$,{installChangedByUser:g}),j=="hardlinks-global"&&$.value=="hardlinks-local"&&n.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{H.stop()}}async function Uze(r,e,t){for(let i of r.keys()){if(x.contains(t,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=x.join(i,kr,ib);await M.removePromise(n)}}for(let[i,n]of e){if(x.contains(t,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=x.join(i,kr,ib),o=r.get(i)||new Map;await M.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await M.removePromise(x.join(s,a)),process.platform==="win32"&&await M.removePromise(x.join(s,Kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=x.join(s,a);c!==l&&(process.platform==="win32"?await(0,Rle.default)(U.fromPortablePath(l),U.fromPortablePath(u),{createPwshFile:!1}):(await M.removePromise(u),await uM(l,u),x.contains(t,await M.realpathPromise(l))!==null&&await M.chmodPromise(l,493)))}}}var ob=class extends wl{constructor(){super(...arguments);this.mode="loose"}makeInstaller(t){return new fM(t)}},fM=class extends Yu{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(t){let i=new Br({baseFs:new Mn({libzip:await on(),maxOpenFiles:80,readOnlyArchives:!0})}),n=dle(t,this.opts.project.cwd,i),{tree:s,errors:o}=rE(n,{pnpifyFs:!1,project:this.opts.project});if(!s){for(let{messageName:g,text:f}of o)this.opts.report.reportError(g,f);return}let a=new Map;t.fallbackPool=a;let l=(g,f)=>{let h=P.parseLocator(f.locator),p=P.stringifyIdent(h);p===g?a.set(g,h.reference):a.set(g,[p,h.reference])},c=x.join(this.opts.project.cwd,xt.nodeModules),u=s.get(c);if(!(typeof u>"u")){if("target"in u)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let g of u.dirList){let f=x.join(c,g),h=s.get(f);if(typeof h>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in h)l(g,h);else for(let p of h.dirList){let C=x.join(f,p),y=s.get(C);if(typeof y>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in y)l(`${g}/${p}`,y);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var Kze={hooks:{cleanGlobalArtifacts:async r=>{let e=gM(r);await M.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:"BOOLEAN",default:!0}},linkers:[nb,ob]},Hze=Kze;var u1={};ut(u1,{default:()=>VVe,npmConfigUtils:()=>or,npmHttpUtils:()=>Mt,npmPublishUtils:()=>Cp});var qle=Pe(Xr());var gr="npm:";var Mt={};ut(Mt,{AuthType:()=>jle,customPackageError:()=>Yze,del:()=>Jze,get:()=>mo,getIdentUrl:()=>bl,handleInvalidAuthenticationError:()=>Ql,post:()=>jze,put:()=>qze});var CM=Pe(Um()),Yle=J("url");var or={};ut(or,{RegistryType:()=>Kle,getAuditRegistry:()=>Gze,getAuthConfiguration:()=>dM,getDefaultRegistry:()=>ab,getPublishRegistry:()=>Hle,getRegistryConfiguration:()=>Gle,getScopeConfiguration:()=>pM,getScopeRegistry:()=>gA,normalizeRegistry:()=>Co});var Kle=(i=>(i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry",i))(Kle||{});function Co(r){return r.replace(/\/$/,"")}function Gze(r,{configuration:e}){let t=e.get("npmAuditRegistry");return t!==null?Co(t):Hle(r,{configuration:e})}function Hle(r,{configuration:e}){var t;return(t=r.publishConfig)!=null&&t.registry?Co(r.publishConfig.registry):r.name?gA(r.name.scope,{configuration:e,type:"npmPublishRegistry"}):ab({configuration:e,type:"npmPublishRegistry"})}function gA(r,{configuration:e,type:t="npmRegistryServer"}){let i=pM(r,{configuration:e});if(i===null)return ab({configuration:e,type:t});let n=i.get(t);return n===null?ab({configuration:e,type:t}):Co(n)}function ab({configuration:r,type:e="npmRegistryServer"}){let t=r.get(e);return Co(t!==null?t:r.get("npmRegistryServer"))}function Gle(r,{configuration:e}){let t=e.get("npmRegistries"),i=Co(r),n=t.get(i);if(typeof n<"u")return n;let s=t.get(i.replace(/^[a-z]+:/,""));return typeof s<"u"?s:null}function pM(r,{configuration:e}){if(r===null)return null;let i=e.get("npmScopes").get(r);return i||null}function dM(r,{configuration:e,ident:t}){let i=t&&pM(t.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:Gle(r,{configuration:e})||e}var jle=(n=>(n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH",n))(jle||{});async function Ql(r,{attemptedAs:e,registry:t,headers:i,configuration:n}){var s,o;if(lb(r))throw new at(41,"Invalid OTP token");if(((s=r.originalError)==null?void 0:s.name)==="HTTPError"&&((o=r.originalError)==null?void 0:o.response.statusCode)===401)throw new at(41,`Invalid authentication (${typeof e!="string"?`as ${await zze(t,i,{configuration:n})}`:`attempted as ${e}`})`)}function Yze(r){var e;return((e=r.response)==null?void 0:e.statusCode)===404?"Package not found":null}function bl(r){return r.scope?`/@${r.scope}%2f${r.name}`:`/${r.name}`}async function mo(r,{configuration:e,headers:t,ident:i,authType:n,registry:s,...o}){if(i&&typeof s>"u"&&(s=gA(i.scope,{configuration:e})),i&&i.scope&&typeof n>"u"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let a=await Ab(s,{authType:n,configuration:e,ident:i});a&&(t={...t,authorization:a});try{return await Xt.get(r.charAt(0)==="/"?`${s}${r}`:r,{configuration:e,headers:t,...o})}catch(l){throw await Ql(l,{registry:s,configuration:e,headers:t}),l}}async function jze(r,e,{attemptedAs:t,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l,...c}){if(s&&typeof a>"u"&&(a=gA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let u=await Ab(a,{authType:o,configuration:i,ident:s});u&&(n={...n,authorization:u}),l&&(n={...n,...op(l)});try{return await Xt.post(a+r,e,{configuration:i,headers:n,...c})}catch(g){if(!lb(g)||l)throw await Ql(g,{attemptedAs:t,registry:a,configuration:i,headers:n}),g;l=await mM(g,{configuration:i});let f={...n,...op(l)};try{return await Xt.post(`${a}${r}`,e,{configuration:i,headers:f,...c})}catch(h){throw await Ql(h,{attemptedAs:t,registry:a,configuration:i,headers:n}),h}}}async function qze(r,e,{attemptedAs:t,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l,...c}){if(s&&typeof a>"u"&&(a=gA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let u=await Ab(a,{authType:o,configuration:i,ident:s});u&&(n={...n,authorization:u}),l&&(n={...n,...op(l)});try{return await Xt.put(a+r,e,{configuration:i,headers:n,...c})}catch(g){if(!lb(g))throw await Ql(g,{attemptedAs:t,registry:a,configuration:i,headers:n}),g;l=await mM(g,{configuration:i});let f={...n,...op(l)};try{return await Xt.put(`${a}${r}`,e,{configuration:i,headers:f,...c})}catch(h){throw await Ql(h,{attemptedAs:t,registry:a,configuration:i,headers:n}),h}}}async function Jze(r,{attemptedAs:e,configuration:t,headers:i,ident:n,authType:s=3,registry:o,otp:a,...l}){if(n&&typeof o>"u"&&(o=gA(n.scope,{configuration:t})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let c=await Ab(o,{authType:s,configuration:t,ident:n});c&&(i={...i,authorization:c}),a&&(i={...i,...op(a)});try{return await Xt.del(o+r,{configuration:t,headers:i,...l})}catch(u){if(!lb(u)||a)throw await Ql(u,{attemptedAs:e,registry:o,configuration:t,headers:i}),u;a=await mM(u,{configuration:t});let g={...i,...op(a)};try{return await Xt.del(`${o}${r}`,{configuration:t,headers:g,...l})}catch(f){throw await Ql(f,{attemptedAs:e,registry:o,configuration:t,headers:i}),f}}}async function Ab(r,{authType:e=2,configuration:t,ident:i}){let n=dM(r,{configuration:t,ident:i}),s=Wze(n,e);if(!s)return null;let o=await t.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,r,{configuration:t,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new at(33,"No authentication configured for request");return null}function Wze(r,e){switch(e){case 2:return r.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function zze(r,e,{configuration:t}){var i;if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(i=(await Xt.get(new Yle.URL(`${r}/-/whoami`).href,{configuration:t,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function mM(r,{configuration:e}){var n;let t=(n=r.originalError)==null?void 0:n.response.headers["npm-notice"];if(t&&(await Ge.start({configuration:e,stdout:process.stdout,includeFooter:!1},async s=>{if(s.reportInfo(0,t.replace(/(https?:\/\/\S+)/g,ee.pretty(e,"$1",ee.Type.URL))),!process.env.YARN_IS_TEST_ENV){let o=t.match(/open (https?:\/\/\S+)/i);if(o&&ws.openUrl){let{openNow:a}=await(0,CM.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});a&&(await ws.openUrl(o[1])||(s.reportSeparator(),s.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` +`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:i}=await(0,CM.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` +`),i}function lb(r){var e,t;if(((e=r.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((t=r.originalError)==null?void 0:t.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch{return!1}}function op(r){return{["npm-otp"]:r}}var cb=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i,params:n}=P.parseRange(e.reference);return!(!qle.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let{params:i}=P.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await mo(i.__archiveUrl,{configuration:t.project.configuration,ident:e});return await mi.convertToZip(n,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var ub=class{supportsDescriptor(e,t){return!(!e.range.startsWith(gr)||!P.tryParseDescriptor(e.range.slice(gr.length),!0))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){let i=P.parseDescriptor(e.range.slice(gr.length),!0);return t.resolver.getResolutionDependencies(i,t)}async getCandidates(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return await i.resolver.getCandidates(n,t,i)}async getSatisfying(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return i.resolver.getSatisfying(n,t,i)}resolve(e,t){throw new Error("Unreachable")}};var Jle=Pe(Xr()),Wle=J("url");var Ts=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let i=new Wle.URL(e.reference);return!(!Jle.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i;try{i=await mo(Ts.getLocatorUrl(e),{configuration:t.project.configuration,ident:e})}catch{i=await mo(Ts.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:t.project.configuration,ident:e})}return await mi.convertToZip(i,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,t,{configuration:i}){let n=gA(e.scope,{configuration:i}),s=Ts.getLocatorUrl(e);return t=t.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t=t.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t===n+s||t===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let t=vt.clean(e.reference.slice(gr.length));if(t===null)throw new at(10,"The npm semver resolver got selected, but the version isn't semver");return`${bl(e)}/-/${e.name}-${t}.tgz`}};var zle=Pe(Xr());var gb=P.makeIdent(null,"node-gyp"),Vze=/\b(node-gyp|prebuild-install)\b/,fb=class{supportsDescriptor(e,t){return e.range.startsWith(gr)?!!vt.validRange(e.range.slice(gr.length)):!1}supportsLocator(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i}=P.parseRange(e.reference);return!!zle.default.valid(i)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(gr.length)}`);let s=await mo(bl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=Ie.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new vt.SemVer(c);if(n.test(u))return u}catch{}return Ie.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=P.makeLocator(e,`${gr}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Ts.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:P.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(gr.length)}`);return Ie.mapAndFilter(t,s=>{try{let{selector:o}=P.parseRange(s,{requireProtocol:gr}),a=new vt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return Ie.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>P.makeLocator(e,s))}async resolve(e,t){let{selector:i}=P.parseRange(e.reference),n=vt.clean(i);if(n===null)throw new at(10,"The npm semver resolver got selected, but the version isn't semver");let s=await mo(bl(e),{configuration:t.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new at(15,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new at(16,`Registry failed to return reference "${n}"`);let o=new ot;if(o.load(s.versions[n]),!o.dependencies.has(gb.identHash)&&!o.peerDependencies.has(gb.identHash)){for(let a of o.scripts.values())if(a.match(Vze)){o.dependencies.set(gb.identHash,P.makeDescriptor(gb,"latest")),t.report.reportWarningOnce(32,`${P.prettyLocator(t.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof o.raw.deprecated=="string"&&o.raw.deprecated!==""){let a=P.prettyLocator(t.project.configuration,e),l=o.raw.deprecated.match(/\S/)?`${a} is deprecated: ${o.raw.deprecated}`:`${a} is deprecated`;t.report.reportWarningOnce(61,l)}return{...e,version:n,languageName:"node",linkType:"HARD",conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin}}};var hb=class{supportsDescriptor(e,t){return!(!e.range.startsWith(gr)||!Rf.test(e.range.slice(gr.length)))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(gr.length),s=await mo(bl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new at(15,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new at(16,`Registry failed to return tag "${n}"`);let a=o[n],l=P.makeLocator(e,`${gr}${a}`),c=s.versions[a].dist.tarball;return Ts.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[P.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,t,i){return null}async resolve(e,t){throw new Error("Unreachable")}};var Cp={};ut(Cp,{getGitHead:()=>WVe,makePublishBody:()=>JVe});var o1={};ut(o1,{default:()=>xVe,packUtils:()=>la});var la={};ut(la,{genPackList:()=>Ob,genPackStream:()=>s1,genPackageManifest:()=>bue,hasPackScripts:()=>i1,prepareForPack:()=>n1});var r1=Pe(wn()),Bue=Pe(Eue()),Que=J("zlib"),CVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],mVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function i1(r){return!!(Wt.hasWorkspaceScript(r,"prepack")||Wt.hasWorkspaceScript(r,"postpack"))}async function n1(r,{report:e},t){await Wt.maybeExecuteWorkspaceLifecycleScript(r,"prepack",{report:e});try{let i=x.join(r.cwd,ot.fileName);await M.existsPromise(i)&&await r.manifest.loadFile(i,{baseFs:M}),await t()}finally{await Wt.maybeExecuteWorkspaceLifecycleScript(r,"postpack",{report:e})}}async function s1(r,e){var s,o;typeof e>"u"&&(e=await Ob(r));let t=new Set;for(let a of(o=(s=r.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)t.add(x.normalize(a));for(let a of r.manifest.bin.values())t.add(x.normalize(a));let i=Bue.default.pack();process.nextTick(async()=>{for(let a of e){let l=x.normalize(a),c=x.resolve(r.cwd,l),u=x.join("package",l),g=await M.lstatPromise(c),f={name:u,mtime:new Date(xr.SAFE_TIME*1e3)},h=t.has(l)?493:420,p,C,y=new Promise((v,D)=>{p=v,C=D}),B=v=>{v?C(v):p()};if(g.isFile()){let v;l==="package.json"?v=Buffer.from(JSON.stringify(await bue(r),null,2)):v=await M.readFilePromise(c),i.entry({...f,mode:h,type:"file"},v,B)}else g.isSymbolicLink()?i.entry({...f,mode:h,type:"symlink",linkname:await M.readlinkPromise(c)},B):B(new Error(`Unsupported file type ${g.mode} for ${U.fromPortablePath(l)}`));await y}i.finalize()});let n=(0,Que.createGzip)();return i.pipe(n),n}async function bue(r){let e=JSON.parse(JSON.stringify(r.manifest.raw));return await r.project.configuration.triggerHook(t=>t.beforeWorkspacePacking,r,e),e}async function Ob(r){var g,f,h,p,C,y,B,v;let e=r.project,t=e.configuration,i={accept:[],reject:[]};for(let D of mVe)i.reject.push(D);for(let D of CVe)i.accept.push(D);i.reject.push(t.get("rcFilename"));let n=D=>{if(D===null||!D.startsWith(`${r.cwd}/`))return;let L=x.relative(r.cwd,D),H=x.resolve(Oe.root,L);i.reject.push(H)};n(x.resolve(e.cwd,t.get("lockfileFilename"))),n(t.get("cacheFolder")),n(t.get("globalFolder")),n(t.get("installStatePath")),n(t.get("virtualFolder")),n(t.get("yarnPath")),await t.triggerHook(D=>D.populateYarnPaths,e,D=>{n(D)});for(let D of e.workspaces){let L=x.relative(r.cwd,D.cwd);L!==""&&!L.match(/^(\.\.)?\//)&&i.reject.push(`/${L}`)}let s={accept:[],reject:[]},o=(f=(g=r.manifest.publishConfig)==null?void 0:g.main)!=null?f:r.manifest.main,a=(p=(h=r.manifest.publishConfig)==null?void 0:h.module)!=null?p:r.manifest.module,l=(y=(C=r.manifest.publishConfig)==null?void 0:C.browser)!=null?y:r.manifest.browser,c=(v=(B=r.manifest.publishConfig)==null?void 0:B.bin)!=null?v:r.manifest.bin;o!=null&&s.accept.push(x.resolve(Oe.root,o)),a!=null&&s.accept.push(x.resolve(Oe.root,a)),typeof l=="string"&&s.accept.push(x.resolve(Oe.root,l));for(let D of c.values())s.accept.push(x.resolve(Oe.root,D));if(l instanceof Map)for(let[D,L]of l.entries())s.accept.push(x.resolve(Oe.root,D)),typeof L=="string"&&s.accept.push(x.resolve(Oe.root,L));let u=r.manifest.files!==null;if(u){s.reject.push("/*");for(let D of r.manifest.files)Sue(s.accept,D,{cwd:Oe.root})}return await EVe(r.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function EVe(r,{hasExplicitFileList:e,globalList:t,ignoreList:i}){let n=[],s=new So(r),o=[[Oe.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!yue(a,{globalList:t,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Oe.root)for(let C of u)g=g||C===".gitignore",f=f||C===".npmignore";let h=f?await Iue(s,a,".npmignore"):g?await Iue(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;yue(a,{globalList:t,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let C of u)o.push([x.resolve(a,C),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(x.relative(Oe.root,a))}return n.sort()}async function Iue(r,e,t){let i={accept:[],reject:[]},n=await r.readFilePromise(x.join(e,t),"utf8");for(let s of n.split(/\n/g))Sue(i.reject,s,{cwd:e});return i}function IVe(r,{cwd:e}){let t=r[0]==="!";return t&&(r=r.slice(1)),r.match(/\.{0,1}\//)&&(r=x.resolve(e,r)),t&&(r=`!${r}`),r}function Sue(r,e,{cwd:t}){let i=e.trim();i===""||i[0]==="#"||r.push(IVe(i,{cwd:t}))}function yue(r,{globalList:e,ignoreLists:t}){let i=Tb(r,e.accept);if(i!==0)return i===2;let n=Tb(r,e.reject);if(n!==0)return n===1;if(t!==null)for(let s of t){let o=Tb(r,s.accept);if(o!==0)return o===2;let a=Tb(r,s.reject);if(a!==0)return a===1}return!1}function Tb(r,e){let t=e,i=[];for(let n=0;n{await n1(n,{report:c},async()=>{c.reportJson({base:U.fromPortablePath(n.cwd)});let u=await Ob(n);for(let g of u)c.reportInfo(null,U.fromPortablePath(g)),c.reportJson({location:U.fromPortablePath(g)});if(!this.dryRun){let g=await s1(n,u),f=M.createWriteStream(o);g.pipe(f),await new Promise(h=>{f.on("finish",h)})}}),this.dryRun||(c.reportInfo(0,`Package archive generated in ${ee.pretty(t,o,ee.Type.PATH)}`),c.reportJson({output:U.fromPortablePath(o)}))})).exitCode()}};Vu.paths=[["pack"]],Vu.usage=ve.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function yVe(r,{workspace:e}){let t=r.replace("%s",wVe(e)).replace("%v",BVe(e));return U.toPortablePath(t)}function wVe(r){return r.manifest.name!==null?P.slugifyIdent(r.manifest.name):"package"}function BVe(r){return r.manifest.version!==null?r.manifest.version:"unknown"}var QVe=["dependencies","devDependencies","peerDependencies"],bVe="workspace:",SVe=(r,e)=>{var i,n;e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let t=r.project;for(let s of QVe)for(let o of r.manifest.getForScope(s).values()){let a=t.tryWorkspaceByDescriptor(o),l=P.parseRange(o.range);if(l.protocol===bVe)if(a===null){if(t.tryWorkspaceByIdent(o)===null)throw new at(21,`${P.prettyDescriptor(t.configuration,o)}: No local workspace found for this range`)}else{let c;P.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector;let u=s==="dependencies"?P.makeDescriptor(o,"unknown"):null,g=u!==null&&r.manifest.ensureDependencyMeta(u).optional?"optionalDependencies":s;e[g][P.stringifyIdent(o)]=c}}},vVe={hooks:{beforeWorkspacePacking:SVe},commands:[Vu]},xVe=vVe;var Lue=J("crypto"),Tue=Pe(Nue()),Oue=J("url");async function JVe(r,e,{access:t,tag:i,registry:n,gitHead:s}){let o=r.project.configuration,a=r.manifest.name,l=r.manifest.version,c=P.stringifyIdent(a),u=(0,Lue.createHash)("sha1").update(e).digest("hex"),g=Tue.default.fromData(e).toString();typeof t>"u"&&(r.manifest.publishConfig&&typeof r.manifest.publishConfig.access=="string"?t=r.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?t=o.get("npmPublishAccess"):a.scope?t="restricted":t="public");let f=await la.genPackageManifest(r),h=`${c}-${l}.tgz`,p=new Oue.URL(`${Co(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:t,["dist-tags"]:{[i]:l},versions:{[l]:{...f,_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}}}}}async function WVe(r){try{let{stdout:e}=await Cr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:r});return e.trim()===""?void 0:e.trim()}catch{return}}var c1={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Mue={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},zVe={configuration:{...c1,...Mue,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...c1,...Mue}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Co,valueDefinition:{description:"",type:"SHAPE",properties:{...c1}}}},fetchers:[cb,Ts],resolvers:[ub,fb,hb]},VVe=zVe;var p1={};ut(p1,{default:()=>s9e});var kE=Pe(wn());ls();var Mb=(i=>(i.All="all",i.Production="production",i.Development="development",i))(Mb||{}),Ub=(s=>(s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical",s))(Ub||{});var DE=["info","low","moderate","high","critical"];function Kue(r,e){let t=[],i=new Set,n=o=>{i.has(o)||(i.add(o),t.push(o))};for(let o of e)n(o);let s=new Set;for(;t.length>0;){let o=t.shift(),a=r.storedResolutions.get(o);if(typeof a>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=r.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function XVe(r,e){return new Set([...r].filter(t=>!e.has(t)))}function ZVe(r,e,{all:t}){let i=t?r.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=Kue(r,l),g=Kue(r,c);return XVe(g,u)}function Hue(r){let e={};for(let t of r)e[P.stringifyIdent(t)]=P.parseRange(t.range).selector;return e}function Gue(r){if(typeof r>"u")return new Set(DE);let e=DE.indexOf(r),t=DE.slice(e);return new Set(t)}function _Ve(r,e){let t=Gue(e),i={};for(let n of t)i[n]=r[n];return i}function Yue(r,e){var i;let t=_Ve(r,e);for(let n of Object.keys(t))if((i=t[n])!=null?i:0>0)return!0;return!1}function jue(r,e){var s;let t={},i={children:t},n=Object.values(r.advisories);if(e!=null){let o=Gue(e);n=n.filter(a=>o.has(a.severity))}for(let o of Ie.sortMap(n,a=>a.module_name))t[o.module_name]={label:o.module_name,value:ee.tuple(ee.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{ID:{label:"ID",value:ee.tuple(ee.Type.NUMBER,o.id)},Issue:{label:"Issue",value:ee.tuple(ee.Type.NO_HINT,o.title)},URL:{label:"URL",value:ee.tuple(ee.Type.URL,o.url)},Severity:{label:"Severity",value:ee.tuple(ee.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ee.tuple(ee.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ee.tuple(ee.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ee.tuple(ee.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ee.tuple(ee.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function que(r,e,{all:t,environment:i}){let n=t?r.workspaces:[e],s=["all","production"].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=["all","development"].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return Hue([...o,...l].filter(c=>P.parseRange(c.range).protocol===null))}function Jue(r,e,{all:t}){var s;let i=ZVe(r,e,{all:t}),n={};for(let o of r.storedPackages.values())n[P.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:Hue(o.dependencies.values()),dev:i.has(P.convertLocatorToDescriptor(o).descriptorHash)};return n}var _u=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=z.String("--environment","all",{description:"Which environments to cover",validator:Xi(Mb)});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=z.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Xi(Ub)});this.excludes=z.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=z.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=que(i,n,{all:this.all,environment:this.environment}),o=Jue(i,n,{all:this.all});if(!this.recursive)for(let C of Object.keys(o))Object.prototype.hasOwnProperty.call(s,C)?o[C].requires={}:delete o[C];let a=Array.from(new Set([...t.get("npmAuditExcludePackages"),...this.excludes]));if(a){for(let C of Object.keys(s))kE.default.isMatch(C,a)&&delete s[C];for(let C of Object.keys(o))kE.default.isMatch(C,a)&&delete o[C];for(let C of Object.keys(o))for(let y of Object.keys(o[C].requires))kE.default.isMatch(y,a)&&delete o[C].requires[y]}let l={requires:s,dependencies:o},c=or.getAuditRegistry(n.manifest,{configuration:t}),u,g=await ra.start({configuration:t,stdout:this.context.stdout},async()=>{u=await Mt.post("/-/npm/v1/security/audits/quick",l,{authType:Mt.AuthType.BEST_EFFORT,configuration:t,jsonResponse:!0,registry:c})});if(g.hasErrors())return g.exitCode();let f=Array.from(new Set([...t.get("npmAuditIgnoreAdvisories"),...this.ignores]));if(f){for(let C of Object.keys(u.advisories))if(kE.default.isMatch(C,f)){let y=u.advisories[C],B=0;y.findings.forEach(v=>B+=v.paths.length),u.metadata.vulnerabilities[y.severity]-=B,delete u.advisories[C]}}let h=Yue(u.metadata.vulnerabilities,this.severity);return!this.json&&h?($n.emitTree(jue(u,this.severity),{configuration:t,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async C=>{C.reportJson(u),h||C.reportInfo(1,"No audit suggestions")})).exitCode()}};_u.paths=[["npm","audit"]],_u.usage=ve.Usage({description:"perform a vulnerability audit against the installed packages",details:` This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${mE.map(t=>`\`${t}\``).join(", ")}. + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${DE.map(t=>`\`${t}\``).join(", ")}. If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. @@ -722,25 +722,25 @@ ${we.map(pe=>`Not found: ${lo(pe)} If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});var TM=Pe(Xr()),OM=J("util"),Yu=class extends De{constructor(){super(...arguments);this.fields=z.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,s=[],o=!1,a=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async l=>{for(let c of this.packages){let u;if(c==="."){let L=i.topLevelWorkspace;if(!L.manifest.name)throw new be(`Missing ${ee.pretty(t,"name",ee.Type.CODE)} field in ${K.fromPortablePath(x.join(L.cwd,xt.manifest))}`);u=P.makeDescriptor(L.manifest.name,"unknown")}else u=P.parseDescriptor(c);let g=Mt.getIdentUrl(u),f=MM(await Mt.get(g,{configuration:t,ident:u,jsonResponse:!0,customErrorMessage:Mt.customPackageError})),h=Object.keys(f.versions).sort(TM.default.compareLoose),C=f["dist-tags"].latest||h[h.length-1],y=vt.validRange(u.range);if(y){let L=TM.default.maxSatisfying(h,y);L!==null?C=L:(l.reportWarning(0,`Unmet range ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0)}else Object.prototype.hasOwnProperty.call(f["dist-tags"],u.range)?C=f["dist-tags"][u.range]:u.range!=="unknown"&&(l.reportWarning(0,`Unknown tag ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0);let B=f.versions[C],v={...f,...B,version:C,versions:h},D;if(n!==null){D={};for(let L of n){let H=v[L];if(typeof H<"u")D[L]=H;else{l.reportWarning(1,`The ${ee.pretty(t,L,ee.Type.CODE)} field doesn't exist inside ${P.prettyIdent(t,u)}'s information`),o=!0;continue}}}else this.json||(delete v.dist,delete v.readme,delete v.users),D=v;l.reportJson(D),this.json||s.push(D)}});OM.inspect.styles.name="cyan";for(let l of s)(l!==s[0]||o)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,OM.inspect)(l,{depth:1/0,colors:!0,compact:!1})} -`);return a.exitCode()}};Yu.paths=[["npm","info"]],Yu.usage=ve.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function MM(r){if(Array.isArray(r)){let e=[];for(let t of r)t=MM(t),t&&e.push(t);return e}else if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r)){if(t.startsWith("_"))continue;let i=MM(r[t]);i&&(e[t]=i)}return e}else return r||null}var sue=Pe(Pm()),ju=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await Qb({configuration:t,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{let o=await zVe({configuration:t,registry:i,report:s,stdin:this.context.stdin,stdout:this.context.stdout}),a=`/-/user/org.couchdb.user:${encodeURIComponent(o.name)}`,l=await Mt.put(a,o,{attemptedAs:o.name,configuration:t,registry:i,jsonResponse:!0,authType:Mt.AuthType.NO_AUTH});return await WVe(i,l.token,{configuration:t,scope:this.scope}),s.reportInfo(0,"Successfully logged in")})).exitCode()}};ju.paths=[["npm","login"]],ju.usage=ve.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function Qb({scope:r,publish:e,configuration:t,cwd:i}){return r&&e?or.getScopeRegistry(r,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):r?or.getScopeRegistry(r,{configuration:t}):e?or.getPublishRegistry((await Ph(t,i)).manifest,{configuration:t}):or.getDefaultRegistry({configuration:t})}async function WVe(r,e,{configuration:t,scope:i}){let n=o=>a=>{let l=Ie.isIndexableObject(a)?a:{},c=l[o],u=Ie.isIndexableObject(c)?c:{};return{...l,[o]:{...u,npmAuthToken:e}}},s=i?{npmScopes:n(i)}:{npmRegistries:n(r)};return await ye.updateHomeConfiguration(s)}async function zVe({configuration:r,registry:e,report:t,stdin:i,stdout:n}){t.reportInfo(0,`Logging in to ${ee.pretty(r,e,ee.Type.URL)}`);let s=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(t.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),s=!0),t.reportSeparator(),process.env.YARN_IS_TEST_ENV)return{name:process.env.YARN_INJECT_NPM_USER||"",password:process.env.YARN_INJECT_NPM_PASSWORD||""};let{username:o,password:a}=await(0,sue.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:i,stdout:n},{type:"password",name:"password",message:s?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:i,stdout:n}]);return t.reportSeparator(),{name:o,password:a}}var ap=new Set(["npmAuthIdent","npmAuthToken"]),qu=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=z.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=async()=>{var c;let s=await Qb({configuration:t,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),o=await ye.find(this.context.cwd,this.context.plugins),a=P.makeIdent((c=this.scope)!=null?c:null,"pkg");return!or.getAuthConfiguration(s,{configuration:o,ident:a}).get("npmAuthToken")};return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{if(this.all&&(await XVe(),s.reportInfo(0,"Successfully logged out from everything")),this.scope){await oue("npmScopes",this.scope),await i()?s.reportInfo(0,`Successfully logged out from ${this.scope}`):s.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let o=await Qb({configuration:t,cwd:this.context.cwd,publish:this.publish});await oue("npmRegistries",o),await i()?s.reportInfo(0,`Successfully logged out from ${o}`):s.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};qu.paths=[["npm","logout"]],qu.usage=ve.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});function VVe(r,e){let t=r[e];if(!Ie.isIndexableObject(t))return!1;let i=new Set(Object.keys(t));if([...ap].every(s=>!i.has(s)))return!1;for(let s of ap)i.delete(s);if(i.size===0)return r[e]=void 0,!0;let n={...t};for(let s of ap)delete n[s];return r[e]=n,!0}async function XVe(){let r=e=>{let t=!1,i=Ie.isIndexableObject(e)?{...e}:{};i.npmAuthToken&&(delete i.npmAuthToken,t=!0);for(let n of Object.keys(i))VVe(i,n)&&(t=!0);if(Object.keys(i).length!==0)return t?i:e};return await ye.updateHomeConfiguration({npmRegistries:r,npmScopes:r})}async function oue(r,e){return await ye.updateHomeConfiguration({[r]:t=>{let i=Ie.isIndexableObject(t)?t:{};if(!Object.prototype.hasOwnProperty.call(i,e))return t;let n=i[e],s=Ie.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...ap].every(l=>!o.has(l)))return t;for(let l of ap)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:{...i,[e]:void 0};let a={};for(let l of ap)a[l]=void 0;return{...i,[e]:{...s,...a}}}})}var Ju=class extends De{constructor(){super(...arguments);this.access=z.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=z.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=z.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=z.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);if(n.manifest.private)throw new be("Private workspaces cannot be published");if(n.manifest.name===null||n.manifest.version===null)throw new be("Workspaces must have valid names and versions to be published on an external registry");await i.restoreInstallState();let s=n.manifest.name,o=n.manifest.version,a=or.getPublishRegistry(n.manifest,{configuration:t});return(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{var u,g;if(this.tolerateRepublish)try{let f=await Mt.get(Mt.getIdentUrl(s),{configuration:t,registry:a,ident:s,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(f,"versions"))throw new at(15,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(f.versions,o)){c.reportWarning(0,`Registry already knows about version ${o}; skipping.`);return}}catch(f){if(((g=(u=f.originalError)==null?void 0:u.response)==null?void 0:g.statusCode)!==404)throw f}await Jt.maybeExecuteWorkspaceLifecycleScript(n,"prepublish",{report:c}),await ia.prepareForPack(n,{report:c},async()=>{let f=await ia.genPackList(n);for(let B of f)c.reportInfo(null,B);let h=await ia.genPackStream(n,f),p=await Ie.bufferStream(h),C=await op.getGitHead(n.cwd),y=await op.makePublishBody(n,p,{access:this.access,tag:this.tag,registry:a,gitHead:C});await Mt.put(Mt.getIdentUrl(s),y,{configuration:t,registry:a,ident:s,otp:this.otp,jsonResponse:!0})}),c.reportInfo(0,"Package archive published")})).exitCode()}};Ju.paths=[["npm","publish"]],Ju.usage=ve.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var aue=Pe(Xr());var Wu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String({required:!1})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s;if(typeof this.package<"u")s=P.parseIdent(this.package);else{if(!n)throw new ct(i.cwd,this.context.cwd);if(!n.manifest.name)throw new be(`Missing 'name' field in ${K.fromPortablePath(x.join(n.cwd,xt.manifest))}`);s=n.manifest.name}let o=await IE(s,t),l={children:Ie.sortMap(Object.entries(o),([c])=>c).map(([c,u])=>({value:ee.tuple(ee.Type.RESOLUTION,{descriptor:P.makeDescriptor(s,c),locator:P.makeLocator(s,u)})}))};return Vn.emitTree(l,{configuration:t,json:this.json,stdout:this.context.stdout})}};Wu.paths=[["npm","tag","list"]],Wu.usage=ve.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});var g1=Pe(Xr()),f1=J("util"),$u=class extends De{constructor(){super(...arguments);this.fields=z.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,s=[],o=!1,a=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async l=>{for(let c of this.packages){let u;if(c==="."){let L=i.topLevelWorkspace;if(!L.manifest.name)throw new be(`Missing ${ee.pretty(t,"name",ee.Type.CODE)} field in ${U.fromPortablePath(x.join(L.cwd,xt.manifest))}`);u=P.makeDescriptor(L.manifest.name,"unknown")}else u=P.parseDescriptor(c);let g=Mt.getIdentUrl(u),f=h1(await Mt.get(g,{configuration:t,ident:u,jsonResponse:!0,customErrorMessage:Mt.customPackageError})),h=Object.keys(f.versions).sort(g1.default.compareLoose),C=f["dist-tags"].latest||h[h.length-1],y=vt.validRange(u.range);if(y){let L=g1.default.maxSatisfying(h,y);L!==null?C=L:(l.reportWarning(0,`Unmet range ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0)}else Object.prototype.hasOwnProperty.call(f["dist-tags"],u.range)?C=f["dist-tags"][u.range]:u.range!=="unknown"&&(l.reportWarning(0,`Unknown tag ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0);let B=f.versions[C],v={...f,...B,version:C,versions:h},D;if(n!==null){D={};for(let L of n){let H=v[L];if(typeof H<"u")D[L]=H;else{l.reportWarning(1,`The ${ee.pretty(t,L,ee.Type.CODE)} field doesn't exist inside ${P.prettyIdent(t,u)}'s information`),o=!0;continue}}}else this.json||(delete v.dist,delete v.readme,delete v.users),D=v;l.reportJson(D),this.json||s.push(D)}});f1.inspect.styles.name="cyan";for(let l of s)(l!==s[0]||o)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,f1.inspect)(l,{depth:1/0,colors:!0,compact:!1})} +`);return a.exitCode()}};$u.paths=[["npm","info"]],$u.usage=ve.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function h1(r){if(Array.isArray(r)){let e=[];for(let t of r)t=h1(t),t&&e.push(t);return e}else if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r)){if(t.startsWith("_"))continue;let i=h1(r[t]);i&&(e[t]=i)}return e}else return r||null}var Wue=Pe(Um()),eg=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await Kb({configuration:t,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{let o=await t9e({configuration:t,registry:i,report:s,stdin:this.context.stdin,stdout:this.context.stdout}),a=`/-/user/org.couchdb.user:${encodeURIComponent(o.name)}`,l=await Mt.put(a,o,{attemptedAs:o.name,configuration:t,registry:i,jsonResponse:!0,authType:Mt.AuthType.NO_AUTH});return await e9e(i,l.token,{configuration:t,scope:this.scope}),s.reportInfo(0,"Successfully logged in")})).exitCode()}};eg.paths=[["npm","login"]],eg.usage=ve.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function Kb({scope:r,publish:e,configuration:t,cwd:i}){return r&&e?or.getScopeRegistry(r,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):r?or.getScopeRegistry(r,{configuration:t}):e?or.getPublishRegistry((await Hh(t,i)).manifest,{configuration:t}):or.getDefaultRegistry({configuration:t})}async function e9e(r,e,{configuration:t,scope:i}){let n=o=>a=>{let l=Ie.isIndexableObject(a)?a:{},c=l[o],u=Ie.isIndexableObject(c)?c:{};return{...l,[o]:{...u,npmAuthToken:e}}},s=i?{npmScopes:n(i)}:{npmRegistries:n(r)};return await ye.updateHomeConfiguration(s)}async function t9e({configuration:r,registry:e,report:t,stdin:i,stdout:n}){t.reportInfo(0,`Logging in to ${ee.pretty(r,e,ee.Type.URL)}`);let s=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(t.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),s=!0),t.reportSeparator(),process.env.YARN_IS_TEST_ENV)return{name:process.env.YARN_INJECT_NPM_USER||"",password:process.env.YARN_INJECT_NPM_PASSWORD||""};let{username:o,password:a}=await(0,Wue.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:i,stdout:n},{type:"password",name:"password",message:s?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:i,stdout:n}]);return t.reportSeparator(),{name:o,password:a}}var mp=new Set(["npmAuthIdent","npmAuthToken"]),tg=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=z.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=async()=>{var c;let s=await Kb({configuration:t,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),o=await ye.find(this.context.cwd,this.context.plugins),a=P.makeIdent((c=this.scope)!=null?c:null,"pkg");return!or.getAuthConfiguration(s,{configuration:o,ident:a}).get("npmAuthToken")};return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{if(this.all&&(await i9e(),s.reportInfo(0,"Successfully logged out from everything")),this.scope){await zue("npmScopes",this.scope),await i()?s.reportInfo(0,`Successfully logged out from ${this.scope}`):s.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let o=await Kb({configuration:t,cwd:this.context.cwd,publish:this.publish});await zue("npmRegistries",o),await i()?s.reportInfo(0,`Successfully logged out from ${o}`):s.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};tg.paths=[["npm","logout"]],tg.usage=ve.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});function r9e(r,e){let t=r[e];if(!Ie.isIndexableObject(t))return!1;let i=new Set(Object.keys(t));if([...mp].every(s=>!i.has(s)))return!1;for(let s of mp)i.delete(s);if(i.size===0)return r[e]=void 0,!0;let n={...t};for(let s of mp)delete n[s];return r[e]=n,!0}async function i9e(){let r=e=>{let t=!1,i=Ie.isIndexableObject(e)?{...e}:{};i.npmAuthToken&&(delete i.npmAuthToken,t=!0);for(let n of Object.keys(i))r9e(i,n)&&(t=!0);if(Object.keys(i).length!==0)return t?i:e};return await ye.updateHomeConfiguration({npmRegistries:r,npmScopes:r})}async function zue(r,e){return await ye.updateHomeConfiguration({[r]:t=>{let i=Ie.isIndexableObject(t)?t:{};if(!Object.prototype.hasOwnProperty.call(i,e))return t;let n=i[e],s=Ie.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...mp].every(l=>!o.has(l)))return t;for(let l of mp)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:{...i,[e]:void 0};let a={};for(let l of mp)a[l]=void 0;return{...i,[e]:{...s,...a}}}})}var rg=class extends De{constructor(){super(...arguments);this.access=z.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=z.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=z.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=z.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);if(n.manifest.private)throw new be("Private workspaces cannot be published");if(n.manifest.name===null||n.manifest.version===null)throw new be("Workspaces must have valid names and versions to be published on an external registry");await i.restoreInstallState();let s=n.manifest.name,o=n.manifest.version,a=or.getPublishRegistry(n.manifest,{configuration:t});return(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{var u,g;if(this.tolerateRepublish)try{let f=await Mt.get(Mt.getIdentUrl(s),{configuration:t,registry:a,ident:s,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(f,"versions"))throw new at(15,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(f.versions,o)){c.reportWarning(0,`Registry already knows about version ${o}; skipping.`);return}}catch(f){if(((g=(u=f.originalError)==null?void 0:u.response)==null?void 0:g.statusCode)!==404)throw f}await Wt.maybeExecuteWorkspaceLifecycleScript(n,"prepublish",{report:c}),await la.prepareForPack(n,{report:c},async()=>{let f=await la.genPackList(n);for(let B of f)c.reportInfo(null,B);let h=await la.genPackStream(n,f),p=await Ie.bufferStream(h),C=await Cp.getGitHead(n.cwd),y=await Cp.makePublishBody(n,p,{access:this.access,tag:this.tag,registry:a,gitHead:C});await Mt.put(Mt.getIdentUrl(s),y,{configuration:t,registry:a,ident:s,otp:this.otp,jsonResponse:!0})}),c.reportInfo(0,"Package archive published")})).exitCode()}};rg.paths=[["npm","publish"]],rg.usage=ve.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Vue=Pe(Xr());var ig=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String({required:!1})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s;if(typeof this.package<"u")s=P.parseIdent(this.package);else{if(!n)throw new ct(i.cwd,this.context.cwd);if(!n.manifest.name)throw new be(`Missing 'name' field in ${U.fromPortablePath(x.join(n.cwd,xt.manifest))}`);s=n.manifest.name}let o=await RE(s,t),l={children:Ie.sortMap(Object.entries(o),([c])=>c).map(([c,u])=>({value:ee.tuple(ee.Type.RESOLUTION,{descriptor:P.makeDescriptor(s,c),locator:P.makeLocator(s,u)})}))};return $n.emitTree(l,{configuration:t,json:this.json,stdout:this.context.stdout})}};ig.paths=[["npm","tag","list"]],ig.usage=ve.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` This command will list all tags of a package from the npm registry. If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function IE(r,e){let t=`/-/package${Mt.getIdentUrl(r)}/dist-tags`;return Mt.get(t,{configuration:e,ident:r,jsonResponse:!0,customErrorMessage:Mt.customPackageError})}var zu=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseDescriptor(this.package,!0),o=s.range;if(!aue.default.valid(o))throw new be(`The range ${ee.pretty(t,s.range,ee.Type.RANGE)} must be a valid semver version`);let a=or.getPublishRegistry(n.manifest,{configuration:t}),l=ee.pretty(t,s,ee.Type.IDENT),c=ee.pretty(t,o,ee.Type.RANGE),u=ee.pretty(t,this.tag,ee.Type.CODE);return(await Ge.start({configuration:t,stdout:this.context.stdout},async f=>{let h=await IE(s,t);Object.prototype.hasOwnProperty.call(h,this.tag)&&h[this.tag]===o&&f.reportWarning(0,`Tag ${u} is already set to version ${c}`);let p=`/-/package${Mt.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Mt.put(p,o,{configuration:t,registry:a,ident:s,jsonRequest:!0,jsonResponse:!0}),f.reportInfo(0,`Tag ${u} added to version ${c} of package ${l}`)})).exitCode()}};zu.paths=[["npm","tag","add"]],zu.usage=ve.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function RE(r,e){let t=`/-/package${Mt.getIdentUrl(r)}/dist-tags`;return Mt.get(t,{configuration:e,ident:r,jsonResponse:!0,customErrorMessage:Mt.customPackageError})}var ng=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseDescriptor(this.package,!0),o=s.range;if(!Vue.default.valid(o))throw new be(`The range ${ee.pretty(t,s.range,ee.Type.RANGE)} must be a valid semver version`);let a=or.getPublishRegistry(n.manifest,{configuration:t}),l=ee.pretty(t,s,ee.Type.IDENT),c=ee.pretty(t,o,ee.Type.RANGE),u=ee.pretty(t,this.tag,ee.Type.CODE);return(await Ge.start({configuration:t,stdout:this.context.stdout},async f=>{let h=await RE(s,t);Object.prototype.hasOwnProperty.call(h,this.tag)&&h[this.tag]===o&&f.reportWarning(0,`Tag ${u} is already set to version ${c}`);let p=`/-/package${Mt.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Mt.put(p,o,{configuration:t,registry:a,ident:s,jsonRequest:!0,jsonResponse:!0}),f.reportInfo(0,`Tag ${u} added to version ${c} of package ${l}`)})).exitCode()}};ng.paths=[["npm","tag","add"]],ng.usage=ve.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Vu=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){if(this.tag==="latest")throw new be("The 'latest' tag cannot be removed.");let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseIdent(this.package),o=or.getPublishRegistry(n.manifest,{configuration:t}),a=ee.pretty(t,this.tag,ee.Type.CODE),l=ee.pretty(t,s,ee.Type.IDENT),c=await IE(s,t);if(!Object.prototype.hasOwnProperty.call(c,this.tag))throw new be(`${a} is not a tag of package ${l}`);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{let f=`/-/package${Mt.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Mt.del(f,{configuration:t,registry:o,ident:s,jsonResponse:!0}),g.reportInfo(0,`Tag ${a} removed from package ${l}`)})).exitCode()}};Vu.paths=[["npm","tag","remove"]],Vu.usage=ve.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var sg=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){if(this.tag==="latest")throw new be("The 'latest' tag cannot be removed.");let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseIdent(this.package),o=or.getPublishRegistry(n.manifest,{configuration:t}),a=ee.pretty(t,this.tag,ee.Type.CODE),l=ee.pretty(t,s,ee.Type.IDENT),c=await RE(s,t);if(!Object.prototype.hasOwnProperty.call(c,this.tag))throw new be(`${a} is not a tag of package ${l}`);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{let f=`/-/package${Mt.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Mt.del(f,{configuration:t,registry:o,ident:s,jsonResponse:!0}),g.reportInfo(0,`Tag ${a} removed from package ${l}`)})).exitCode()}};sg.paths=[["npm","tag","remove"]],sg.usage=ve.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Xu=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i;return this.scope&&this.publish?i=or.getScopeRegistry(this.scope,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):this.scope?i=or.getScopeRegistry(this.scope,{configuration:t}):this.publish?i=or.getPublishRegistry((await Ph(t,this.context.cwd)).manifest,{configuration:t}):i=or.getDefaultRegistry({configuration:t}),(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{var a,l;let o;try{o=await Mt.get("/-/whoami",{configuration:t,registry:i,authType:Mt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?P.makeIdent(this.scope,""):void 0})}catch(c){if(((a=c.response)==null?void 0:a.statusCode)===401||((l=c.response)==null?void 0:l.statusCode)===403){s.reportError(41,"Authentication failed - your credentials may have expired");return}else throw c}s.reportInfo(0,o.username)})).exitCode()}};Xu.paths=[["npm","whoami"]],Xu.usage=ve.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var _Ve={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[Gu,Yu,ju,qu,Ju,zu,Wu,Vu,Xu]},ZVe=_Ve;var zM={};ut(zM,{default:()=>h6e,patchUtils:()=>_u});var _u={};ut(_u,{applyPatchFile:()=>Sb,diffFolders:()=>JM,ensureUnpatchedDescriptor:()=>HM,extractPackageToDisk:()=>qM,extractPatchFlags:()=>hue,isParentRequired:()=>jM,loadPatchFiles:()=>QE,makeDescriptor:()=>GM,makeLocator:()=>YM,makePatchHash:()=>WM,parseDescriptor:()=>wE,parseLocator:()=>BE,parsePatchFile:()=>yE});var $Ve=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Ap(r){return x.relative(Oe.root,x.resolve(Oe.root,K.toPortablePath(r)))}function e6e(r){let e=r.trim().match($Ve);if(!e)throw new Error(`Bad header line: '${r}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var t6e=420,r6e=493;var Aue=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),i6e=r=>({header:e6e(r),parts:[]}),n6e={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function s6e(r){let e=[],t=Aue(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),t.hunks.push(n),n=null)}function a(){o(),e.push(t),t=Aue()}for(let l=0;l0?"patch":"mode change",v=null;switch(B){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Ap(u),toPath:Ap(g)}),v=g}break;case"file deletion":{let D=n||p;if(!D)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:y&&y[0]||null,path:Ap(D),mode:bb(l),hash:f})}break;case"file creation":{let D=s||C;if(!D)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:y&&y[0]||null,path:Ap(D),mode:bb(c),hash:h})}break;case"patch":case"mode change":v=C||s;break;default:Ie.assertNever(B);break}v&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Ap(v),oldMode:bb(o),newMode:bb(a)}),v&&y&&y.length&&e.push({type:"patch",semverExclusivity:i,path:Ap(v),hunks:y,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function bb(r){let e=parseInt(r,8)&511;if(e!==t6e&&e!==r6e)throw new Error(`Unexpected file mode string: ${r}`);return e}function yE(r){let e=r.split(/\n/g);return e[e.length-1]===""&&e.pop(),o6e(s6e(e))}function a6e(r){let e=0,t=0;for(let{type:i,lines:n}of r.parts)switch(i){case"context":t+=n.length,e+=n.length;break;case"deletion":e+=n.length;break;case"insertion":t+=n.length;break;default:Ie.assertNever(i);break}if(e!==r.header.original.length||t!==r.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(r.header.original.length)} ${i(r.header.patched.length)} @@, got @@ ${i(e)} ${i(t)} @@)`)}}var lp=class extends Error{constructor(t,i){super(`Cannot apply hunk #${t+1}`);this.hunk=i}};async function cp(r,e,t){let i=await r.lstatPromise(e),n=await t();if(typeof n<"u"&&(e=n),r.lutimesPromise)await r.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await r.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function Sb(r,{baseFs:e=new $t,dryRun:t=!1,version:i=null}={}){for(let n of r)if(!(n.semverExclusivity!==null&&i!==null&&!vt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(t){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await cp(e,x.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(t){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await cp(e,x.dirname(n.fromPath),async()=>{await cp(e,x.dirname(n.toPath),async()=>{await cp(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(t){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var og=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i;return this.scope&&this.publish?i=or.getScopeRegistry(this.scope,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):this.scope?i=or.getScopeRegistry(this.scope,{configuration:t}):this.publish?i=or.getPublishRegistry((await Hh(t,this.context.cwd)).manifest,{configuration:t}):i=or.getDefaultRegistry({configuration:t}),(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{var a,l;let o;try{o=await Mt.get("/-/whoami",{configuration:t,registry:i,authType:Mt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?P.makeIdent(this.scope,""):void 0})}catch(c){if(((a=c.response)==null?void 0:a.statusCode)===401||((l=c.response)==null?void 0:l.statusCode)===403){s.reportError(41,"Authentication failed - your credentials may have expired");return}else throw c}s.reportInfo(0,o.username)})).exitCode()}};og.paths=[["npm","whoami"]],og.usage=ve.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var n9e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[_u,$u,eg,tg,rg,ng,ig,sg,og]},s9e=n9e;var Q1={};ut(Q1,{default:()=>y9e,patchUtils:()=>ag});var ag={};ut(ag,{applyPatchFile:()=>Gb,diffFolders:()=>w1,ensureUnpatchedDescriptor:()=>C1,extractPackageToDisk:()=>y1,extractPatchFlags:()=>rge,isParentRequired:()=>I1,loadPatchFiles:()=>TE,makeDescriptor:()=>m1,makeLocator:()=>E1,makePatchHash:()=>B1,parseDescriptor:()=>NE,parseLocator:()=>LE,parsePatchFile:()=>FE});var o9e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Ep(r){return x.relative(Oe.root,x.resolve(Oe.root,U.toPortablePath(r)))}function a9e(r){let e=r.trim().match(o9e);if(!e)throw new Error(`Bad header line: '${r}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var A9e=420,l9e=493;var Xue=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),c9e=r=>({header:a9e(r),parts:[]}),u9e={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function g9e(r){let e=[],t=Xue(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),t.hunks.push(n),n=null)}function a(){o(),e.push(t),t=Xue()}for(let l=0;l0?"patch":"mode change",v=null;switch(B){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Ep(u),toPath:Ep(g)}),v=g}break;case"file deletion":{let D=n||p;if(!D)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:y&&y[0]||null,path:Ep(D),mode:Hb(l),hash:f})}break;case"file creation":{let D=s||C;if(!D)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:y&&y[0]||null,path:Ep(D),mode:Hb(c),hash:h})}break;case"patch":case"mode change":v=C||s;break;default:Ie.assertNever(B);break}v&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Ep(v),oldMode:Hb(o),newMode:Hb(a)}),v&&y&&y.length&&e.push({type:"patch",semverExclusivity:i,path:Ep(v),hunks:y,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function Hb(r){let e=parseInt(r,8)&511;if(e!==A9e&&e!==l9e)throw new Error(`Unexpected file mode string: ${r}`);return e}function FE(r){let e=r.split(/\n/g);return e[e.length-1]===""&&e.pop(),f9e(g9e(e))}function h9e(r){let e=0,t=0;for(let{type:i,lines:n}of r.parts)switch(i){case"context":t+=n.length,e+=n.length;break;case"deletion":e+=n.length;break;case"insertion":t+=n.length;break;default:Ie.assertNever(i);break}if(e!==r.header.original.length||t!==r.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(r.header.original.length)} ${i(r.header.patched.length)} @@, got @@ ${i(e)} ${i(t)} @@)`)}}var Ip=class extends Error{constructor(t,i){super(`Cannot apply hunk #${t+1}`);this.hunk=i}};async function yp(r,e,t){let i=await r.lstatPromise(e),n=await t();if(typeof n<"u"&&(e=n),r.lutimesPromise)await r.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await r.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function Gb(r,{baseFs:e=new $t,dryRun:t=!1,version:i=null}={}){for(let n of r)if(!(n.semverExclusivity!==null&&i!==null&&!vt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(t){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await yp(e,x.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(t){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await yp(e,x.dirname(n.fromPath),async()=>{await yp(e,x.dirname(n.toPath),async()=>{await yp(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(t){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` `)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(x.dirname(n.path),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,xr.SAFE_TIME,xr.SAFE_TIME)}break;case"patch":await cp(e,n.path,async()=>{await c6e(n,{baseFs:e,dryRun:t})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(lue(n.newMode)!==lue(o))continue;await cp(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:Ie.assertNever(n);break}}function lue(r){return(r&64)>0}function cue(r){return r.replace(/\s+$/,"")}function l6e(r,e){return cue(r)===cue(e)}async function c6e({hunks:r,path:e},{baseFs:t,dryRun:i=!1}){let n=await t.statSync(e).mode,o=(await t.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of r){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),C=Math.max(h,p),y=0,B=0,v=null;for(;y<=C;){if(y<=h&&(B=f-y,v=uue(g,o,B),v!==null)){y=-y;break}if(y<=p&&(B=f+y,v=uue(g,o,B),v!==null))break;y+=1}if(v===null)throw new lp(r.indexOf(g),g);a.push(v),l+=y,c=B+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:Ie.assertNever(f);break}await t.writeFilePromise(e,o.join(` -`),{mode:n})}function uue(r,e,t){let i=[];for(let n of r.parts)switch(n.type){case"context":case"deletion":{for(let s of n.lines){let o=e[t];if(o==null||!l6e(o,s))return null;t+=1}n.type==="deletion"&&(i.push({type:"splice",index:t-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case"insertion":i.push({type:"splice",index:t,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:Ie.assertNever(n.type);break}return i}var g6e=/^builtin<([^>]+)>$/;function UM(r,e){let{source:t,selector:i,params:n}=P.parseRange(r);if(t===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>K.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?P.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(t);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function wE(r){let{sourceItem:e,...t}=UM(r.range,P.parseDescriptor);return{...t,sourceDescriptor:e}}function BE(r){let{sourceItem:e,...t}=UM(r.reference,P.parseLocator);return{...t,sourceLocator:e}}function HM(r){if(!r.range.startsWith("patch:"))return r;let{sourceItem:e}=UM(r.range,P.parseDescriptor);return e}function gue({parentLocator:r,sourceItem:e,patchPaths:t,sourceVersion:i,patchHash:n},s){let o=r!==null?{locator:P.stringifyLocator(r)}:{},a=typeof i<"u"?{version:i}:{},l=typeof n<"u"?{hash:n}:{};return P.makeRange({protocol:"patch:",source:s(e),selector:t.join("&"),params:{...a,...l,...o}})}function GM(r,{parentLocator:e,sourceDescriptor:t,patchPaths:i}){return P.makeDescriptor(r,gue({parentLocator:e,sourceItem:t,patchPaths:i},P.stringifyDescriptor))}function YM(r,{parentLocator:e,sourcePackage:t,patchPaths:i,patchHash:n}){return P.makeLocator(r,gue({parentLocator:e,sourceItem:t,sourceVersion:t.version,patchPaths:i,patchHash:n},P.stringifyLocator))}function fue({onAbsolute:r,onRelative:e,onBuiltin:t},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(g6e);return s!==null?t(s[1]):x.isAbsolute(i)?r(i):e(i)}function hue(r){let e=r.startsWith("~");return e&&(r=r.slice(1)),{optional:e}}function jM(r){return fue({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},r)}async function QE(r,e,t){let i=r!==null?await t.fetcher.fetch(r,t):null,n=i&&i.localPath?{packageFs:new jt(Oe.root),prefixPath:x.relative(Oe.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await Ie.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=hue(o),l=await fue({onAbsolute:async()=>await M.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(x.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await t.project.configuration.firstHook(u=>u.getBuiltinPatch,t.project,c)},o);return{...a,source:l}})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function qM(r,{cache:e,project:t}){let i=t.storedPackages.get(r.locatorHash);if(typeof i>"u")throw new Error("Assertion failed: Expected the package to be registered");let n=t.storedChecksums,s=new ti,o=t.configuration.makeFetcher(),a=await o.fetch(r,{cache:e,project:t,fetcher:o,checksums:n,report:s}),l=await M.mktempPromise(),c=x.join(l,"source"),u=x.join(l,"user"),g=x.join(l,".yarn-patch.json");return await Promise.all([M.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),M.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),M.writeJsonPromise(g,{locator:P.stringifyLocator(r),version:i.version})]),M.detachTemp(l),u}async function JM(r,e){let t=K.fromPortablePath(r).replace(/\\/g,"/"),i=K.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await Cr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",t,i],{cwd:K.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +`):"";await e.mkdirpPromise(x.dirname(n.path),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,xr.SAFE_TIME,xr.SAFE_TIME)}break;case"patch":await yp(e,n.path,async()=>{await C9e(n,{baseFs:e,dryRun:t})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(Zue(n.newMode)!==Zue(o))continue;await yp(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:Ie.assertNever(n);break}}function Zue(r){return(r&64)>0}function _ue(r){return r.replace(/\s+$/,"")}function d9e(r,e){return _ue(r)===_ue(e)}async function C9e({hunks:r,path:e},{baseFs:t,dryRun:i=!1}){let n=await t.statSync(e).mode,o=(await t.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of r){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),C=Math.max(h,p),y=0,B=0,v=null;for(;y<=C;){if(y<=h&&(B=f-y,v=$ue(g,o,B),v!==null)){y=-y;break}if(y<=p&&(B=f+y,v=$ue(g,o,B),v!==null))break;y+=1}if(v===null)throw new Ip(r.indexOf(g),g);a.push(v),l+=y,c=B+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:Ie.assertNever(f);break}await t.writeFilePromise(e,o.join(` +`),{mode:n})}function $ue(r,e,t){let i=[];for(let n of r.parts)switch(n.type){case"context":case"deletion":{for(let s of n.lines){let o=e[t];if(o==null||!d9e(o,s))return null;t+=1}n.type==="deletion"&&(i.push({type:"splice",index:t-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case"insertion":i.push({type:"splice",index:t,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:Ie.assertNever(n.type);break}return i}var E9e=/^builtin<([^>]+)>$/;function d1(r,e){let{source:t,selector:i,params:n}=P.parseRange(r);if(t===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>U.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?P.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(t);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function NE(r){let{sourceItem:e,...t}=d1(r.range,P.parseDescriptor);return{...t,sourceDescriptor:e}}function LE(r){let{sourceItem:e,...t}=d1(r.reference,P.parseLocator);return{...t,sourceLocator:e}}function C1(r){if(!r.range.startsWith("patch:"))return r;let{sourceItem:e}=d1(r.range,P.parseDescriptor);return e}function ege({parentLocator:r,sourceItem:e,patchPaths:t,sourceVersion:i,patchHash:n},s){let o=r!==null?{locator:P.stringifyLocator(r)}:{},a=typeof i<"u"?{version:i}:{},l=typeof n<"u"?{hash:n}:{};return P.makeRange({protocol:"patch:",source:s(e),selector:t.join("&"),params:{...a,...l,...o}})}function m1(r,{parentLocator:e,sourceDescriptor:t,patchPaths:i}){return P.makeDescriptor(r,ege({parentLocator:e,sourceItem:t,patchPaths:i},P.stringifyDescriptor))}function E1(r,{parentLocator:e,sourcePackage:t,patchPaths:i,patchHash:n}){return P.makeLocator(r,ege({parentLocator:e,sourceItem:t,sourceVersion:t.version,patchPaths:i,patchHash:n},P.stringifyLocator))}function tge({onAbsolute:r,onRelative:e,onBuiltin:t},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E9e);return s!==null?t(s[1]):x.isAbsolute(i)?r(i):e(i)}function rge(r){let e=r.startsWith("~");return e&&(r=r.slice(1)),{optional:e}}function I1(r){return tge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},r)}async function TE(r,e,t){let i=r!==null?await t.fetcher.fetch(r,t):null,n=i&&i.localPath?{packageFs:new qt(Oe.root),prefixPath:x.relative(Oe.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await Ie.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=rge(o),l=await tge({onAbsolute:async()=>await M.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(x.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await t.project.configuration.firstHook(u=>u.getBuiltinPatch,t.project,c)},o);return{...a,source:l}})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` +`));return s}async function y1(r,{cache:e,project:t}){let i=t.storedPackages.get(r.locatorHash);if(typeof i>"u")throw new Error("Assertion failed: Expected the package to be registered");let n=t.storedChecksums,s=new ti,o=t.configuration.makeFetcher(),a=await o.fetch(r,{cache:e,project:t,fetcher:o,checksums:n,report:s}),l=await M.mktempPromise(),c=x.join(l,"source"),u=x.join(l,"user"),g=x.join(l,".yarn-patch.json");return await Promise.all([M.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),M.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),M.writeJsonPromise(g,{locator:P.stringifyLocator(r),version:i.version})]),M.detachTemp(l),u}async function w1(r,e){let t=U.fromPortablePath(r).replace(/\\/g,"/"),i=U.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await Cr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",t,i],{cwd:U.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. The following error was reported by 'git': -${s}`);let o=t.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${Ie.escapeRegExp(`/${o(t)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ie.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(Ie.escapeRegExp(`${t}/`),"g"),"").replace(new RegExp(Ie.escapeRegExp(`${i}/`),"g"),"")}function WM(r,e){let t=[];for(let{source:i}of r){if(i===null)continue;let n=yE(i);for(let s of n){let{semverExclusivity:o,...a}=s;o!==null&&e!==null&&!vt.satisfiesWithPrereleases(e,o)||t.push(JSON.stringify(a))}}return li.makeHash(`${3}`,...t).slice(0,6)}function pue(r,{configuration:e,report:t}){for(let i of r.parts)for(let n of i.lines)switch(i.type){case"context":t.reportInfo(null,` ${ee.pretty(e,n,"grey")}`);break;case"deletion":t.reportError(28,`- ${ee.pretty(e,n,ee.Type.REMOVED)}`);break;case"insertion":t.reportError(28,`+ ${ee.pretty(e,n,ee.Type.ADDED)}`);break;default:Ie.assertNever(i.type)}}var vb=class{supports(e,t){return!!e.reference.startsWith("patch:")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async patchPackage(e,t){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=BE(e),a=await QE(i,o,t),l=await M.mktempPromise(),c=x.join(l,"current.zip"),u=await t.fetcher.fetch(n,t),g=P.getIdentVendorPath(e),f=await rn(),h=new Wr(c,{libzip:f,create:!0,level:t.project.configuration.get("compressionLevel")});await Ie.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:C}of a){if(p===null)continue;let y=new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")}),B=new jt(x.resolve(Oe.root,g),{baseFs:y});try{await Sb(yE(p),{baseFs:B,version:s})}catch(v){if(!(v instanceof lp))throw v;let D=t.project.configuration.get("enableInlineHunks"),L=!D&&!C?" (set enableInlineHunks for details)":"",H=`${P.prettyLocator(t.project.configuration,e)}: ${v.message}${L}`,j=$=>{!D||pue(v.hunk,{configuration:t.project.configuration,report:$})};if(y.discardAndClose(),C){t.report.reportWarningOnce(66,H,{reportExtra:j});continue}else throw new at(66,H,j)}y.saveAndClose()}return new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")})}};var xb=class{supportsDescriptor(e,t){return!!e.range.startsWith("patch:")}supportsLocator(e,t){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){let{patchPaths:n}=wE(e);return n.every(s=>!jM(s))?e:P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){let{sourceDescriptor:i}=wE(e);return[i]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=wE(e),a=await QE(n,o,i.fetchOptions),l=t.get(s.descriptorHash);if(typeof l>"u")throw new Error("Assertion failed: The dependency should have been resolved");let c=WM(a,l.version);return[YM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,t,i){return null}async resolve(e,t){let{sourceLocator:i}=BE(e);return{...await t.resolver.resolve(i,t),...e}}};var Zu=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=x.resolve(this.context.cwd,K.toPortablePath(this.patchFolder)),o=x.join(s,"../source"),a=x.join(s,"../.yarn-patch.json");if(!M.existsSync(o))throw new be("The argument folder didn't get created by 'yarn patch'");let l=await JM(o,s),c=await M.readJsonPromise(a),u=P.parseLocator(c.locator,!0);if(!i.storedPackages.has(u.locatorHash))throw new be("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(l);return}let g=t.get("patchFolder"),f=x.join(g,`${P.slugifyLocator(u)}.patch`);await M.mkdirPromise(g,{recursive:!0}),await M.writeFilePromise(f,l);let h=new Map;for(let p of i.storedPackages.values()){if(P.isVirtualLocator(p))continue;let C=p.dependencies.get(u.identHash);if(!C)continue;let y=P.isVirtualDescriptor(C)?P.devirtualizeDescriptor(C):C,B=HM(y),v=i.storedResolutions.get(B.descriptorHash);if(!v)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!i.storedPackages.get(v))throw new Error("Assertion failed: Expected the package to have been registered");let L=i.originalPackages.get(p.locatorHash);if(!L)throw new Error("Assertion failed: Expected the original package to have been registered");let H=L.dependencies.get(C.identHash);if(!H)throw new Error("Assertion failed: Expected the original dependency to have been registered");h.set(H.descriptorHash,H)}for(let p of h.values()){let C=GM(p,{parentLocator:null,sourceDescriptor:P.convertLocatorToDescriptor(u),sourceVersion:null,patchPaths:[`./${x.relative(i.cwd,f)}`]});i.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:P.stringifyIdent(C),description:p.range}},reference:C.range})}await i.persist()}};Zu.paths=[["patch-commit"]],Zu.usage=ve.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $u=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let o=P.parseLocator(this.package);if(o.reference==="unknown"){let a=Ie.mapAndFilter([...i.storedPackages.values()],l=>l.identHash!==o.identHash?Ie.mapAndFilter.skip:P.isVirtualLocator(l)?Ie.mapAndFilter.skip:l);if(a.length===0)throw new be("No package found in the project for the given locator");if(a.length>1)throw new be(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${s}`);let o=t.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${Ie.escapeRegExp(`/${o(t)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ie.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(Ie.escapeRegExp(`${t}/`),"g"),"").replace(new RegExp(Ie.escapeRegExp(`${i}/`),"g"),"")}function B1(r,e){let t=[];for(let{source:i}of r){if(i===null)continue;let n=FE(i);for(let s of n){let{semverExclusivity:o,...a}=s;o!==null&&e!==null&&!vt.satisfiesWithPrereleases(e,o)||t.push(JSON.stringify(a))}}return li.makeHash(`${3}`,...t).slice(0,6)}function ige(r,{configuration:e,report:t}){for(let i of r.parts)for(let n of i.lines)switch(i.type){case"context":t.reportInfo(null,` ${ee.pretty(e,n,"grey")}`);break;case"deletion":t.reportError(28,`- ${ee.pretty(e,n,ee.Type.REMOVED)}`);break;case"insertion":t.reportError(28,`+ ${ee.pretty(e,n,ee.Type.ADDED)}`);break;default:Ie.assertNever(i.type)}}var Yb=class{supports(e,t){return!!e.reference.startsWith("patch:")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async patchPackage(e,t){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=LE(e),a=await TE(i,o,t),l=await M.mktempPromise(),c=x.join(l,"current.zip"),u=await t.fetcher.fetch(n,t),g=P.getIdentVendorPath(e),f=await on(),h=new Wr(c,{libzip:f,create:!0,level:t.project.configuration.get("compressionLevel")});await Ie.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:C}of a){if(p===null)continue;let y=new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")}),B=new qt(x.resolve(Oe.root,g),{baseFs:y});try{await Gb(FE(p),{baseFs:B,version:s})}catch(v){if(!(v instanceof Ip))throw v;let D=t.project.configuration.get("enableInlineHunks"),L=!D&&!C?" (set enableInlineHunks for details)":"",H=`${P.prettyLocator(t.project.configuration,e)}: ${v.message}${L}`,j=$=>{!D||ige(v.hunk,{configuration:t.project.configuration,report:$})};if(y.discardAndClose(),C){t.report.reportWarningOnce(66,H,{reportExtra:j});continue}else throw new at(66,H,j)}y.saveAndClose()}return new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")})}};var jb=class{supportsDescriptor(e,t){return!!e.range.startsWith("patch:")}supportsLocator(e,t){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){let{patchPaths:n}=NE(e);return n.every(s=>!I1(s))?e:P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){let{sourceDescriptor:i}=NE(e);return[i]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=NE(e),a=await TE(n,o,i.fetchOptions),l=t.get(s.descriptorHash);if(typeof l>"u")throw new Error("Assertion failed: The dependency should have been resolved");let c=B1(a,l.version);return[E1(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,t,i){return null}async resolve(e,t){let{sourceLocator:i}=LE(e);return{...await t.resolver.resolve(i,t),...e}}};var Ag=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=x.resolve(this.context.cwd,U.toPortablePath(this.patchFolder)),o=x.join(s,"../source"),a=x.join(s,"../.yarn-patch.json");if(!M.existsSync(o))throw new be("The argument folder didn't get created by 'yarn patch'");let l=await w1(o,s),c=await M.readJsonPromise(a),u=P.parseLocator(c.locator,!0);if(!i.storedPackages.has(u.locatorHash))throw new be("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(l);return}let g=t.get("patchFolder"),f=x.join(g,`${P.slugifyLocator(u)}.patch`);await M.mkdirPromise(g,{recursive:!0}),await M.writeFilePromise(f,l);let h=new Map;for(let p of i.storedPackages.values()){if(P.isVirtualLocator(p))continue;let C=p.dependencies.get(u.identHash);if(!C)continue;let y=P.isVirtualDescriptor(C)?P.devirtualizeDescriptor(C):C,B=C1(y),v=i.storedResolutions.get(B.descriptorHash);if(!v)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!i.storedPackages.get(v))throw new Error("Assertion failed: Expected the package to have been registered");let L=i.originalPackages.get(p.locatorHash);if(!L)throw new Error("Assertion failed: Expected the original package to have been registered");let H=L.dependencies.get(C.identHash);if(!H)throw new Error("Assertion failed: Expected the original dependency to have been registered");h.set(H.descriptorHash,H)}for(let p of h.values()){let C=m1(p,{parentLocator:null,sourceDescriptor:P.convertLocatorToDescriptor(u),sourceVersion:null,patchPaths:[`./${x.relative(i.cwd,f)}`]});i.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:P.stringifyIdent(C),description:p.range}},reference:C.range})}await i.persist()}};Ag.paths=[["patch-commit"]],Ag.usage=ve.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var lg=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let o=P.parseLocator(this.package);if(o.reference==="unknown"){let a=Ie.mapAndFilter([...i.storedPackages.values()],l=>l.identHash!==o.identHash?Ie.mapAndFilter.skip:P.isVirtualLocator(l)?Ie.mapAndFilter.skip:l);if(a.length===0)throw new be("No package found in the project for the given locator");if(a.length>1)throw new be(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): ${a.map(l=>` -- ${P.prettyLocator(t,l)}`).join("")}`);o=a[0]}if(!i.storedPackages.has(o.locatorHash))throw new be("No package found in the project for the given locator");await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async a=>{let l=await qM(o,{cache:s,project:i});a.reportJson({locator:P.stringifyLocator(o),path:K.fromPortablePath(l)}),a.reportInfo(0,`Package ${P.prettyLocator(t,o)} got extracted with success!`),a.reportInfo(0,`You can now edit the following folder: ${ee.pretty(t,K.fromPortablePath(l),"magenta")}`),a.reportInfo(0,`Once you are done run ${ee.pretty(t,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${K.fromPortablePath(l)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};$u.paths=[["patch"]],$u.usage=ve.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n \n Once you're done with your changes, run `yarn patch-commit -s ` (with `` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n "});var f6e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[Zu,$u],fetchers:[vb],resolvers:[xb]},h6e=f6e;var ZM={};ut(ZM,{default:()=>C6e});var Pb=class{supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let i=XM(),n=t.project.installersCustomData.get(i);if(!n)throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=n.pathByLocator.get(e.locatorHash);if(typeof s>"u")throw new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return s}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=XM(),n=t.project.installersCustomData.get(i);if(!n)throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=x.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new VM(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},VM=class{constructor(e){this.opts=e;this.asyncActions=new Ie.AsyncActions(10);this.customData={pathByLocator:new Map,locatorByPath:new Map}}getCustomDataKey(){return XM()}attachCustomData(e){}async installPackage(e,t,i){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,t,i);case"HARD":return this.installPackageHard(e,t,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,t,i){let n=x.resolve(t.packageFs.getRealPath(),t.prefixPath);return this.customData.pathByLocator.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,t,i){var u;let n=p6e(e,{project:this.opts.project});this.customData.locatorByPath.set(n,P.stringifyLocator(e)),this.customData.pathByLocator.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await M.mkdirPromise(n,{recursive:!0}),await M.copyPromise(n,t.prefixPath,{baseFs:t.packageFs,overwrite:!1})}));let o=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e,a={manifest:(u=await ot.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?u:new ot,misc:{hasBindingGyp:uo.hasBindingGyp(t)}},l=this.opts.project.getDependencyMeta(o,e.version),c=uo.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,t){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!due(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.customData.pathByLocator.get(e.locatorHash);if(typeof n>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(e)})`);let s=x.join(n,xt.nodeModules),o=[],a=await Cue(s);for(let[l,c]of t){let u=c;due(c,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=P.devirtualizeLocator(c));let g=this.customData.pathByLocator.get(u.locatorHash);if(typeof g>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(c)})`);let f=P.stringifyIdent(l),h=x.join(s,f),p=x.relative(x.dirname(h),g),C=a.get(f);a.delete(f),o.push(Promise.resolve().then(async()=>{if(C){if(C.isSymbolicLink()&&await M.readlinkPromise(h)===p)return;await M.removePromise(h)}await M.mkdirpPromise(x.dirname(h)),process.platform=="win32"?await M.symlinkPromise(g,h,"junction"):await M.symlinkPromise(p,h)}))}o.push(mue(s,a)),await Promise.all(o)}))}async attachExternalDependents(e,t){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=Iue(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await M.removePromise(e);else{let t=[],i=new Set;for(let s of this.customData.pathByLocator.values()){let o=x.contains(e,s);if(o!==null){let[a,,...l]=o.split(x.sep);i.add(a);let c=x.join(e,a);t.push(M.readdirPromise(c).then(u=>Promise.all(u.map(async g=>{let f=x.join(c,g);if(g===xt.nodeModules){let h=await Cue(f);return h.delete(l.join(x.sep)),mue(f,h)}else return M.removePromise(f)}))).catch(u=>{if(u.code!=="ENOENT")throw u}))}}let n;try{n=await M.readdirPromise(e)}catch{n=[]}for(let s of n)i.has(s)||t.push(M.removePromise(x.join(e,s)));await Promise.all(t)}return await this.asyncActions.wait(),await _M(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await _M(Eue(this.opts.project)),{customData:this.customData}}};function XM(){return JSON.stringify({name:"PnpmInstaller",version:2})}function Eue(r){return x.join(r.cwd,xt.nodeModules)}function Iue(r){return x.join(Eue(r),".store")}function p6e(r,{project:e}){let t=P.slugifyLocator(r),i=P.getIdentVendorPath(r);return x.join(Iue(e),t,i)}function due(r,{project:e}){return!P.isVirtualLocator(r)||!e.tryWorkspaceByLocator(r)}async function Cue(r){let e=new Map,t=[];try{t=await M.readdirPromise(r,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of t)if(!i.name.startsWith("."))if(i.name.startsWith("@")){let n=await M.readdirPromise(x.join(r,i.name),{withFileTypes:!0});if(n.length===0)e.set(i.name,i);else for(let s of n)e.set(`${i.name}/${s.name}`,s)}else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}async function mue(r,e){var n;let t=[],i=new Set;for(let s of e.keys()){t.push(M.removePromise(x.join(r,s)));let o=(n=P.tryParseIdent(s))==null?void 0:n.scope;o&&i.add(`@${o}`)}return Promise.all(t).then(()=>Promise.all([...i].map(s=>_M(x.join(r,s)))))}async function _M(r){try{await M.rmdirPromise(r)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var d6e={linkers:[Pb]},C6e=d6e;var rQ=()=>({modules:new Map([["@yarnpkg/cli",Qm],["@yarnpkg/core",VC],["@yarnpkg/fslib",Lp],["@yarnpkg/libzip",CC],["@yarnpkg/parsers",Yp],["@yarnpkg/shell",yC],["clipanion",JZ($p)],["semver",m6e],["typanion",gn],["yup",E6e],["@yarnpkg/plugin-essentials",GT],["@yarnpkg/plugin-compat",WT],["@yarnpkg/plugin-dlx",zT],["@yarnpkg/plugin-file",ZT],["@yarnpkg/plugin-git",HT],["@yarnpkg/plugin-github",$T],["@yarnpkg/plugin-http",eO],["@yarnpkg/plugin-init",nO],["@yarnpkg/plugin-link",sO],["@yarnpkg/plugin-nm",MO],["@yarnpkg/plugin-npm",LM],["@yarnpkg/plugin-npm-cli",KM],["@yarnpkg/plugin-pack",DM],["@yarnpkg/plugin-patch",zM],["@yarnpkg/plugin-pnp",vO],["@yarnpkg/plugin-pnpm",ZM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});R0({binaryVersion:Lr||"",pluginConfiguration:rQ()});})(); +- ${P.prettyLocator(t,l)}`).join("")}`);o=a[0]}if(!i.storedPackages.has(o.locatorHash))throw new be("No package found in the project for the given locator");await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async a=>{let l=await y1(o,{cache:s,project:i});a.reportJson({locator:P.stringifyLocator(o),path:U.fromPortablePath(l)}),a.reportInfo(0,`Package ${P.prettyLocator(t,o)} got extracted with success!`),a.reportInfo(0,`You can now edit the following folder: ${ee.pretty(t,U.fromPortablePath(l),"magenta")}`),a.reportInfo(0,`Once you are done run ${ee.pretty(t,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${U.fromPortablePath(l)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};lg.paths=[["patch"]],lg.usage=ve.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n \n Once you're done with your changes, run `yarn patch-commit -s ` (with `` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n "});var I9e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[Ag,lg],fetchers:[Yb],resolvers:[jb]},y9e=I9e;var x1={};ut(x1,{default:()=>Q9e});var qb=class{supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let i=S1(),n=t.project.installersCustomData.get(i);if(!n)throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=n.pathByLocator.get(e.locatorHash);if(typeof s>"u")throw new be(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return s}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=S1(),n=t.project.installersCustomData.get(i);if(!n)throw new be(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=x.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new b1(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},b1=class{constructor(e){this.opts=e;this.asyncActions=new Ie.AsyncActions(10);this.customData={pathByLocator:new Map,locatorByPath:new Map}}getCustomDataKey(){return S1()}attachCustomData(e){}async installPackage(e,t,i){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,t,i);case"HARD":return this.installPackageHard(e,t,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,t,i){let n=x.resolve(t.packageFs.getRealPath(),t.prefixPath);return this.customData.pathByLocator.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,t,i){var u;let n=w9e(e,{project:this.opts.project});this.customData.locatorByPath.set(n,P.stringifyLocator(e)),this.customData.pathByLocator.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await M.mkdirPromise(n,{recursive:!0}),await M.copyPromise(n,t.prefixPath,{baseFs:t.packageFs,overwrite:!1})}));let o=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e,a={manifest:(u=await ot.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?u:new ot,misc:{hasBindingGyp:po.hasBindingGyp(t)}},l=this.opts.project.getDependencyMeta(o,e.version),c=po.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,t){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!nge(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.customData.pathByLocator.get(e.locatorHash);if(typeof n>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(e)})`);let s=x.join(n,xt.nodeModules),o=[],a=await sge(s);for(let[l,c]of t){let u=c;nge(c,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=P.devirtualizeLocator(c));let g=this.customData.pathByLocator.get(u.locatorHash);if(typeof g>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(c)})`);let f=P.stringifyIdent(l),h=x.join(s,f),p=x.relative(x.dirname(h),g),C=a.get(f);a.delete(f),o.push(Promise.resolve().then(async()=>{if(C){if(C.isSymbolicLink()&&await M.readlinkPromise(h)===p)return;await M.removePromise(h)}await M.mkdirpPromise(x.dirname(h)),process.platform=="win32"?await M.symlinkPromise(g,h,"junction"):await M.symlinkPromise(p,h)}))}o.push(oge(s,a)),await Promise.all(o)}))}async attachExternalDependents(e,t){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=Age(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await M.removePromise(e);else{let t=[],i=new Set;for(let s of this.customData.pathByLocator.values()){let o=x.contains(e,s);if(o!==null){let[a,,...l]=o.split(x.sep);i.add(a);let c=x.join(e,a);t.push(M.readdirPromise(c).then(u=>Promise.all(u.map(async g=>{let f=x.join(c,g);if(g===xt.nodeModules){let h=await sge(f);return h.delete(l.join(x.sep)),oge(f,h)}else return M.removePromise(f)}))).catch(u=>{if(u.code!=="ENOENT")throw u}))}}let n;try{n=await M.readdirPromise(e)}catch{n=[]}for(let s of n)i.has(s)||t.push(M.removePromise(x.join(e,s)));await Promise.all(t)}return await this.asyncActions.wait(),await v1(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await v1(age(this.opts.project)),{customData:this.customData}}};function S1(){return JSON.stringify({name:"PnpmInstaller",version:2})}function age(r){return x.join(r.cwd,xt.nodeModules)}function Age(r){return x.join(age(r),".store")}function w9e(r,{project:e}){let t=P.slugifyLocator(r),i=P.getIdentVendorPath(r);return x.join(Age(e),t,i)}function nge(r,{project:e}){return!P.isVirtualLocator(r)||!e.tryWorkspaceByLocator(r)}async function sge(r){let e=new Map,t=[];try{t=await M.readdirPromise(r,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of t)if(!i.name.startsWith("."))if(i.name.startsWith("@")){let n=await M.readdirPromise(x.join(r,i.name),{withFileTypes:!0});if(n.length===0)e.set(i.name,i);else for(let s of n)e.set(`${i.name}/${s.name}`,s)}else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}async function oge(r,e){var n;let t=[],i=new Set;for(let s of e.keys()){t.push(M.removePromise(x.join(r,s)));let o=(n=P.tryParseIdent(s))==null?void 0:n.scope;o&&i.add(`@${o}`)}return Promise.all(t).then(()=>Promise.all([...i].map(s=>v1(x.join(r,s)))))}async function v1(r){try{await M.rmdirPromise(r)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var B9e={linkers:[qb]},Q9e=B9e;var BQ=()=>({modules:new Map([["@yarnpkg/cli",Nm],["@yarnpkg/core",sm],["@yarnpkg/fslib",Wp],["@yarnpkg/libzip",xC],["@yarnpkg/parsers",td],["@yarnpkg/shell",RC],["clipanion",F$(ud)],["semver",b9e],["typanion",fn],["yup",S9e],["@yarnpkg/plugin-essentials",pO],["@yarnpkg/plugin-compat",IO],["@yarnpkg/plugin-dlx",yO],["@yarnpkg/plugin-file",bO],["@yarnpkg/plugin-git",hO],["@yarnpkg/plugin-github",SO],["@yarnpkg/plugin-http",vO],["@yarnpkg/plugin-init",kO],["@yarnpkg/plugin-link",RO],["@yarnpkg/plugin-nm",hM],["@yarnpkg/plugin-npm",u1],["@yarnpkg/plugin-npm-cli",p1],["@yarnpkg/plugin-pack",o1],["@yarnpkg/plugin-patch",Q1],["@yarnpkg/plugin-pnp",iM],["@yarnpkg/plugin-pnpm",x1]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});$0({binaryVersion:Lr||"",pluginConfiguration:BQ()});})(); /*! * buildToken * Builds OAuth token prefix (helper function) diff --git a/.yarnrc.yml b/.yarnrc.yml index 2bc71525011c..57152b486ffa 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -2,4 +2,10 @@ installStatePath: ./.yarn/root-install-state.gz nodeLinker: node-modules -yarnPath: .yarn/releases/yarn-3.4.1.cjs +npmPublishAccess: public + +plugins: + - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs + spec: "@yarnpkg/plugin-workspace-tools" + +yarnPath: .yarn/releases/yarn-3.5.1.cjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c9955ee14e5..6f4d663ad990 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,314 +1,434 @@ -## 7.1.0-alpha.17 (May 12, 2023) +## 7.3.2 -#### Bug Fixes +- Maintenance: Revert "WebpackBuilder: Remove need for `react` as peerDependency" - [#23882](https://github.com/storybookjs/storybook/pull/23882), thanks [@vanessayuenn](https://github.com/vanessayuenn)! -- CLI: Fix storybook upgrade precheckfailure object [#22517](https://github.com/storybooks/storybook/pull/22517) -- CLI: Throw errors instead of rejecting promises [#22515](https://github.com/storybooks/storybook/pull/22515) -- CSF: Expose story id in composeStories [#22471](https://github.com/storybooks/storybook/pull/22471) -- CLI: Remove unsupported frameworks/renderers and improve builder detection [#22492](https://github.com/storybooks/storybook/pull/22492) +## 7.3.1 -## 7.1.0-alpha.16 (May 11, 2023) +- Index: Fix `*.story.*` CSF indexing - [#23852](https://github.com/storybookjs/storybook/pull/23852), thanks [@shilman](https://github.com/shilman)! -#### Bug Fixes +## 7.3.0 -- Web-components: Fix source decorator to handle document fragments [#22513](https://github.com/storybooks/storybook/pull/22513) -- Angular: Adjust child process I/O for compodoc command [#22441](https://github.com/storybooks/storybook/pull/22441) -- Core: Fix windows path error in StoryStore v6 [#22512](https://github.com/storybooks/storybook/pull/22512) +- ✨ Indexer: Introduce new experimental `indexer` API - #23691, thanks [@JReinhold](https://github.com/jreinhold)! +- ✨ CLI: Update postinstall to look for addon script - [#23791](https://github.com/storybookjs/storybook/pull/23791), thanks [@Integrayshaun](https://github.com/Integrayshaun)! +- ✨ Server: Add support for tags - #23660, thanks [@JReinhold](https://github.com/jreinhold)! +- 🐛 CSF-Tools: Remove prettier from printConfig - [#23766](https://github.com/storybookjs/storybook/pull/23766), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- 🐛 Build: Support Chrome 100, Safari 15 and Firefox 91 - [#23800](https://github.com/storybookjs/storybook/pull/23800), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- 🐛 Vue3: Don't automatically assign values to all slots - [#23697](https://github.com/storybookjs/storybook/pull/23697), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- 🐛 Core: Fix `composeStories` typings - [#23577](https://github.com/storybookjs/storybook/pull/23577), thanks [@yannbf](https://github.com/yannbf)! +- 🐛 WebpackBuilder: Remove need for `react` as peerDependency - [#23496](https://github.com/storybookjs/storybook/pull/23496), thanks [@ndelangen](https://github.com/ndelangen)! +- 🔧 Addon-docs, Core, Server: Use new `indexer` API - #23660, thanks [@JReinhold](https://github.com/jreinhold)! +- 🔧 Core-server: Improve internal types - #23632, thanks [@JReinhold](https://github.com/jreinhold)! +- 🔧 UI: Improve Link component - [#23767](https://github.com/storybookjs/storybook/pull/23767), thanks [@cdedreuille](https://github.com/cdedreuille)! +- 🔧 UI: Improve new `Button` component - [#23765](https://github.com/storybookjs/storybook/pull/23765), thanks [@cdedreuille](https://github.com/cdedreuille)! +- 🔧 UI: Update Button types to allow for no children on iconOnly buttons - [#23735](https://github.com/storybookjs/storybook/pull/23735), thanks [@cdedreuille](https://github.com/cdedreuille)! +- 🔧 UI: Upgrade Icon component - [#23680](https://github.com/storybookjs/storybook/pull/23680), thanks [@cdedreuille](https://github.com/cdedreuille)! +- 🔧 Addons: Deprecate key in addon render function as it is not available anymore - [#23792](https://github.com/storybookjs/storybook/pull/23792), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- 🔧 UI: Update IconButton and add new Toolbar component - [#23795](https://github.com/storybookjs/storybook/pull/23795), thanks [@cdedreuille](https://github.com/cdedreuille)! -#### Maintenance +## 7.2.3 -- CLI: Prompt to force initialization when storybook is detected [#22392](https://github.com/storybooks/storybook/pull/22392) -- UI: Fix css inconsistency in Button and Icon components [#22497](https://github.com/storybooks/storybook/pull/22497) +- Build: Support Chrome 100, Safari 15 and Firefox 91 - [#23800](https://github.com/storybookjs/storybook/pull/23800), thanks [@kasperpeulen](https://github.com/kasperpeulen)! -#### Build +## 7.2.2 -- Sandboxes: Pin @vitejs/plugin-react to avoid conflict [#22501](https://github.com/storybooks/storybook/pull/22501) +- CSF-Tools: Remove prettier from printConfig - [#23766](https://github.com/storybookjs/storybook/pull/23766), thanks [@kasperpeulen](https://github.com/kasperpeulen)! -## 7.1.0-alpha.15 (May 11, 2023) +## 7.2.1 -#### Bug Fixes +- Addon docs: Add safe check in Webpack preset - [#23687](https://github.com/storybookjs/storybook/pull/23687), thanks [@yannbf](https://github.com/yannbf)! +- Autodocs: Fix docs pages ignoring `meta.id` when calculating their ID - [#23520](https://github.com/storybookjs/storybook/pull/23520), thanks [@sookmax](https://github.com/sookmax)! +- CLI: Fix error logging being swallowed from dev/build failures - [#23689](https://github.com/storybookjs/storybook/pull/23689), thanks [@yannbf](https://github.com/yannbf)! +- Channels: Remove self-referencing in `package.json` - [#23681](https://github.com/storybookjs/storybook/pull/23681), thanks [@stof](https://github.com/stof)! +- UI: Fix ArgsTable empty state on docs - [#23688](https://github.com/storybookjs/storybook/pull/23688), thanks [@cdedreuille](https://github.com/cdedreuille)! +- UI: Improve controls addon - [#23635](https://github.com/storybookjs/storybook/pull/23635), thanks [@cdedreuille](https://github.com/cdedreuille)! -- CLI: Do not show a migration summary on sb init [#22109](https://github.com/storybooks/storybook/pull/22109) -- Toolbars: Fix title behavior in UI [#22496](https://github.com/storybooks/storybook/pull/22496) -- UI: Show current search shortcut in search box sidebar [#21619](https://github.com/storybooks/storybook/pull/21619) -- Measure: Deactivate when switching to Docs mode [#21602](https://github.com/storybooks/storybook/pull/21602) -- Outline: Fix additional outline border in docs mode [#21773](https://github.com/storybooks/storybook/pull/21773) +## 7.2.0 -## 7.1.0-alpha.14 (May 9, 2023) +This month, we're going to experiment with our launch cycle by making smaller but more frequent releases. Our goal is to bring you new features more quickly, while also smoothing the upgrade process. -#### Bug Fixes +Storybook 7.2 is the first of these new, faster releases: -- CLI: Scope styles in sample components from the CLI templates [#22162](https://github.com/storybooks/storybook/pull/22162) -- CLI: Fix copyTemplate failures on `init` [#22375](https://github.com/storybooks/storybook/pull/22375) -- CLI: Fix server init [#22443](https://github.com/storybooks/storybook/pull/22443) -- Server: Add json indexer [#22460](https://github.com/storybooks/storybook/pull/22460) -- React: Use correct default annotations for composeStories [#22308](https://github.com/storybooks/storybook/pull/22308) -- UI: Fix opacity of list-item color [#22074](https://github.com/storybooks/storybook/pull/22074) +- Automigration: Fix wrap-require automigration for common js main.js files - [#23644](https://github.com/storybookjs/storybook/pull/23644), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CSF Tools: Use recast for printing in csf-tools - [#23427](https://github.com/storybookjs/storybook/pull/23427), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- CSF-tools: Parse stories using typescript keywords 'satisfies' and 'as' - [#23638](https://github.com/storybookjs/storybook/pull/23638), thanks [@joaonunomota](https://github.com/joaonunomota)! +- Core: Fix channelOptions for serverChannel - [#23615](https://github.com/storybookjs/storybook/pull/23615), thanks [@ndelangen](https://github.com/ndelangen)! +- NextJS: Add `@babel/core` as a dependency - [#22450](https://github.com/storybookjs/storybook/pull/22450), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Vite: Fix config loading - project directory - [#22240](https://github.com/storybookjs/storybook/pull/22240), thanks [@nVitius](https://github.com/nVitius)! +- Angular: Fix initialization of Storybook in Angular 16.1 - [#23598](https://github.com/storybookjs/storybook/pull/23598), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Dependencies: Downgrade `jest-mock` - [#23597](https://github.com/storybookjs/storybook/pull/23597), thanks [@ndelangen](https://github.com/ndelangen)! +- Dependencies: Upgrade simple-update-notifier - [#23396](https://github.com/storybookjs/storybook/pull/23396), thanks [@dartess](https://github.com/dartess)! +- Storyshots: fix broken storyshots with angular - [#23555](https://github.com/storybookjs/storybook/pull/23555), thanks [@mattlewis92](https://github.com/mattlewis92)! +- TypeScript: Added `expanded` to `CoreCommon_StorybookRefs` to fix typescript errors - [#23488](https://github.com/storybookjs/storybook/pull/23488), thanks [@DotwoodMedia](https://github.com/DotwoodMedia)! +- TypeScript: Downgrade to the last version of type-fest that doesn't need typescript 5.0 - [#23574](https://github.com/storybookjs/storybook/pull/23574), thanks [@ndelangen](https://github.com/ndelangen)! +- Vue2: Source Decorator reactivity - [#23149](https://github.com/storybookjs/storybook/pull/23149), thanks [@chakAs3](https://github.com/chakAs3)! +- Router: Support RegExp in Route component - [#23292](https://github.com/storybookjs/storybook/pull/23292), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Improve tabs component, more type correct, allow for FC as title - [#23288](https://github.com/storybookjs/storybook/pull/23288), thanks [@ndelangen](https://github.com/ndelangen)! +- Addons: Improve code quality by using title as FC & sharing state via useAddonState - [#23298](https://github.com/storybookjs/storybook/pull/23298), thanks [@ndelangen](https://github.com/ndelangen)! +- InteractionsAddon: Improve code quality by using title as FC & sharing state via useAddonState - [#23291](https://github.com/storybookjs/storybook/pull/23291), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Add storyStatus to sidebar UI - [#23342](https://github.com/storybookjs/storybook/pull/23342), thanks [@ndelangen](https://github.com/ndelangen)! +- Addon API: Add experimental page addon type - [#23307](https://github.com/storybookjs/storybook/pull/23307), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: refactor Canvas component so we can improve types for PREVIEW addons and TAB addons - [#23311](https://github.com/storybookjs/storybook/pull/23311), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Improve Button layout and props - [#23356](https://github.com/storybookjs/storybook/pull/23356), thanks [@cdedreuille](https://github.com/cdedreuille)! +- Dependencies: Remove references to api and the 2 deprecated channel packages - [#23384](https://github.com/storybookjs/storybook/pull/23384), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Show the story status in the search results - [#23441](https://github.com/storybookjs/storybook/pull/23441), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Create new form elements in the new Core UI (Input, TextArea, Select) - [#23469](https://github.com/storybookjs/storybook/pull/23469), thanks [@cdedreuille](https://github.com/cdedreuille)! -#### Maintenance -- CLI: Refactor package manager methods to be async [#22401](https://github.com/storybooks/storybook/pull/22401) -- Angular: Improve Error message for angular.json not found [#22377](https://github.com/storybooks/storybook/pull/22377) -- TypeScript: Migrate @storybook/instrumenter to strict TS [#22370](https://github.com/storybooks/storybook/pull/22370) -- TypeScript: Migrate @storybook/core-events to strict TS [#22448](https://github.com/storybooks/storybook/pull/22448) -- TypeScript: Migrate @storybook/core-client to strict TS [#22447](https://github.com/storybooks/storybook/pull/22447) -- TypeScript: Migrate @storybook/react-vite and @storybook/preact-vite to strict TS [#22428](https://github.com/storybooks/storybook/pull/22428) -- TypeScript: Migrate @storybook/svelte-vite to strict TS [#22411](https://github.com/storybooks/storybook/pull/22411) -- TypeScript: Migrate @storybook/types to strict TS [#22397](https://github.com/storybooks/storybook/pull/22397) -- TypeScript: Migrate @storybook/addon-storysource to strict TS [#22367](https://github.com/storybooks/storybook/pull/22367) -- TypeScript: Migrate @storybook/client-api to strict TS [#22421](https://github.com/storybooks/storybook/pull/22421) -- TypeScript: Migrate @storybook/sveltekit to strict TS [#22412](https://github.com/storybooks/storybook/pull/22412) -- TypeScript: Migrate @storybook/source-loader to strict TS [#22420](https://github.com/storybooks/storybook/pull/22420) +## 7.1.1 -## 7.1.0-alpha.13 (May 5, 2023) +- Angular: Make enableProdMode optional - [#23489](https://github.com/storybookjs/storybook/pull/23489), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Gracefully shutdown and cleanup execa child processes - [#23538](https://github.com/storybookjs/storybook/pull/23538), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Improve support of mono repositories - [#23458](https://github.com/storybookjs/storybook/pull/23458), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! -#### Bug Fixes +## 7.1.0 (July 18, 2023) -- Core: Fix virtual modules excluded for babel-loader [#22331](https://github.com/storybooks/storybook/pull/22331) +Storybook 7.1 is here! 🎉 -#### Maintenance +- 🏄‍♀️ [**In-app onboarding**](https://storybook.js.org/blog/in-app-tour-for-new-users/) to help you set up new projects +- 💅 [**Zero-config styling support**](https://storybook.js.org/blog/zero-config-support-for-tailwind-mui-styled-components-and-emotion/) for major libraries +- 🗃️ [**API reference documentation**](https://storybook.js.org/blog/docs-updates/) and TypeScript-first snippets +- 📇 [**Table of Contents for docs**](https://storybook.js.org/docs/7.1/react/writing-docs/autodocs#generate-a-table-of-contents) +- 🎨 [**Figma** **Design addon**](https://github.com/storybookjs/addon-designs) official support +- 📗 **Vue3 source snippets** and reactivity improvements +- 💯 **Hundreds more** fixes and improvements -- Angular: Allow TypeScript 4.0.0 and 5.0.0 [#22391](https://github.com/storybooks/storybook/pull/22391) -- Angular: Enable Angular Unit tests [#22355](https://github.com/storybooks/storybook/pull/22355) -- TypeScript: Migrate @storybook/theming to strict TS [#22376](https://github.com/storybooks/storybook/pull/22376) -- TypeScript: Migrate @storybook/channel-websocket to strict TS [#22364](https://github.com/storybooks/storybook/pull/22364) -- TypeScript: Migrate @storybook/addon-outline to strict TS [#22369](https://github.com/storybooks/storybook/pull/22369) -- TypeScript: Migrate @storybook/addon-viewbook to strict ts [#22339](https://github.com/storybooks/storybook/pull/22339) -- TypeScript: Migrate @storybook/channels to strict TS [#22365](https://github.com/storybooks/storybook/pull/22365) +7.1 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.1.0-alpha.*`, `7.1.0-beta.*`, and `7.1.0-rc.*` for the full list of changes. -#### Build +For a better upgrade experience, please use one of the following commands: -- Add Angular Prerelease sandbox [#22379](https://github.com/storybooks/storybook/pull/22379) +npm or yarn 1: +`npx storybook@latest upgrade` -## 7.1.0-alpha.12 (May 3, 2023) +pnpm: +`pnpm dlx storybook@latest upgrade` -#### Bug Fixes +yarn berry: +`yarn dlx storybook@latest upgrade` -- Migrate: skip the automigration for gf markdown when user isn't using mdx [#22186](https://github.com/storybooks/storybook/pull/22186) -- UI: Addon panel does not update after disabling/enabling an addon [#22258](https://github.com/storybooks/storybook/pull/22258) -- Typescript: Fix bad typings caused by tsup bug [#22261](https://github.com/storybooks/storybook/pull/22261) -- Core: Fix source snippets for stories with mapped args [#22135](https://github.com/storybooks/storybook/pull/22135) +## 7.0.27 -#### Maintenance +- Angular: Enable prod mode when Storybook is built - [#23404](https://github.com/storybookjs/storybook/pull/23404), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Angular: Fix esm issue in combination with rxjs v6 - [#23405](https://github.com/storybookjs/storybook/pull/23405), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Exit when user does not select a storybook project type - [#23201](https://github.com/storybookjs/storybook/pull/23201), thanks [@yannbf](https://github.com/yannbf)! +- Next.js: Fix for @nx/react/plugin/storybook with SVGs - [#23210](https://github.com/storybookjs/storybook/pull/23210), thanks [@daves28](https://github.com/daves28)! +- Svelte-Webpack: Support Svelte v4 - [#23336](https://github.com/storybookjs/storybook/pull/23336), thanks [@JReinhold](https://github.com/JReinhold)! -- Telemetry: Persist sessionId across runs [#22325](https://github.com/storybooks/storybook/pull/22325) -- Packaging: Move `types` condition to the front in all `package.json.exports` maps [#22321](https://github.com/storybooks/storybook/pull/22321) -- Packaging: Don't generate ESM dist for preset files [#22330](https://github.com/storybooks/storybook/pull/22330) -- Typescript: Migrate `@storybook/csf-tools` to strict TS [#22312](https://github.com/storybooks/storybook/pull/22312) -- Typescript: Migrate @storybook/postinstall and @storybook/router to strict TS [#22200](https://github.com/storybooks/storybook/pull/22200) -- Maintenance: Fix urls for all packages in package.json [#22101](https://github.com/storybooks/storybook/pull/22101) -- Docs: Improve component typings [#22050](https://github.com/storybooks/storybook/pull/22050) +## 7.0.26 -#### Build +- Next.js: Fix next/image usage in latest Next.js release - [#23296](https://github.com/storybookjs/storybook/pull/23296), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- NextJS: Fix `useParams` support - [#22946](https://github.com/storybookjs/storybook/pull/22946), thanks [@gitstart-storybook](https://github.com/gitstart-storybook)! +- NextJS: Allow disabling next/image lazy loading - [#21909](https://github.com/storybookjs/storybook/pull/21909), thanks [@martinnabhan](https://github.com/martinnabhan) -- Build: Comment out flaky test [#22310](https://github.com/storybooks/storybook/pull/22310) -- Build: Migrate `@storybook/web-components-vite` to strict TS [#22309](https://github.com/storybooks/storybook/pull/22309) -- Build: Migrate `@storybook/html-vite` to strict TS [#22293](https://github.com/storybooks/storybook/pull/22293) -- Build: Migrate @storybook/preset-vue-webpack to strict TS [#22320](https://github.com/storybooks/storybook/pull/22320) -- Build: Use `next` branch for sandbox and repro commands [#22238](https://github.com/storybooks/storybook/pull/22238) +## 7.0.25 -## 7.1.0-alpha.11 (April 28, 2023) +- CLI: Fix pnp paths logic in storybook metadata - [#23259](https://github.com/storybookjs/storybook/pull/23259), thanks [@yannbf](https://github.com/yannbf)! +- Controls: Fix UI to add array items - [#22993](https://github.com/storybookjs/storybook/pull/22993), thanks [@sookmax](https://github.com/sookmax)! +- Next.js: Support disableStaticImages setting - [#23167](https://github.com/storybookjs/storybook/pull/23167), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- React: Fix decorators to conditionally render children - [#22336](https://github.com/storybookjs/storybook/pull/22336), thanks [@redbugz](https://github.com/redbugz)! -#### Features +## 7.0.24 + +- CLI: Parse pnp paths in storybook metadata - [#23199](https://github.com/storybookjs/storybook/pull/23199), thanks [@yannbf](https://github.com/yannbf)! +- Dependencies: Pin `file-system-cache` to 2.3.0 - [#23221](https://github.com/storybookjs/storybook/pull/23221), thanks [@JReinhold](https://github.com/JReinhold)! +- Svelte: Support v4 - [#22905](https://github.com/storybookjs/storybook/pull/22905), thanks [@JReinhold](https://github.com/JReinhold)! + +## 7.0.23 + +- Core: Fix compat by disabling name mangling in `esbuild` require - [#22486](https://github.com/storybookjs/storybook/pull/22486), thanks [@youngboy](https://github.com/youngboy)! +- Core: Prebundle node-logger and make it CJS only - [#23109](https://github.com/storybookjs/storybook/pull/23109), thanks [@ndelangen](https://github.com/ndelangen)! +- NextJS: Fix fonts not loading with 3+ words in name - [#23121](https://github.com/storybookjs/storybook/pull/23121), thanks [@ygkn](https://github.com/ygkn)! +- Telemetry: Count onboarding stories - [#23092](https://github.com/storybookjs/storybook/pull/23092), thanks [@shilman](https://github.com/shilman)! + +## 7.0.22 + +- CLI: Prebundle boxen to resolve a ESM/CJS incompatibility - [#23080](https://github.com/storybookjs/storybook/pull/23080), thanks [@ndelangen](https://github.com/ndelangen)! +- Core: Fix core-common to use node-fetch - [#23077](https://github.com/storybookjs/storybook/pull/23077), thanks [@ndelangen](https://github.com/ndelangen)! +- Telemetry: Count onboarding stories - [#23092](https://github.com/storybookjs/storybook/pull/23092), thanks [@shilman](https://github.com/shilman)! + +## 7.0.21 -- Feature: Add support for Angular 16 [#22096](https://github.com/storybooks/storybook/pull/22096) +- Angular: Fix 16.1 compatibility - [#23064](https://github.com/storybookjs/storybook/pull/23064), thanks [@ndelangen](https://github.com/ndelangen)! +- Angular: Fix ivy preset - [#23070](https://github.com/storybookjs/storybook/pull/23070), thanks [@ndelangen](https://github.com/ndelangen)! +- CLI: Improve steps in storybook init - [#22502](https://github.com/storybookjs/storybook/pull/22502), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Skip builder selection for react native - [#23042](https://github.com/storybookjs/storybook/pull/23042), thanks [@dannyhw](https://github.com/dannyhw)! +- Core: Fix `builder-manager` adding multiple dashes to relative path - [#22974](https://github.com/storybookjs/storybook/pull/22974), thanks [@MarioCadenas](https://github.com/MarioCadenas)! +- Core: Improve `of={...}` DocBlock error in story index - [#22782](https://github.com/storybookjs/storybook/pull/22782), thanks [@shilman](https://github.com/shilman)! +- Dependencies: Set vue-component-type-helpers to latest - [#23015](https://github.com/storybookjs/storybook/pull/23015), thanks [@ndelangen](https://github.com/ndelangen)! +- Vue3: Fix source decorator to generate correct story code - [#22518](https://github.com/storybookjs/storybook/pull/22518), thanks [@chakAs3](https://github.com/chakAs3)! +- Web-components: Fix custom-elements order of property application - [#19183](https://github.com/storybookjs/storybook/pull/19183), thanks [@sonntag-philipp](https://github.com/sonntag-philipp)! + +## 7.0.20 (June 8, 2023) #### Bug Fixes -- Vue3: Rollback v7 breaking change and keep reactive v6-compatible API [#22229](https://github.com/storybooks/storybook/pull/22229) +- Server: Fix .stories.yml support [#22906](https://github.com/storybooks/storybook/pull/22906) +- Docs: Fix Source block snippet updates [#22835](https://github.com/storybooks/storybook/pull/22835) +- Core: Fix indexing errors by excluding node_modules stories [#22873](https://github.com/storybooks/storybook/pull/22873) +- CLI: Fix upgrade notification message [#22933](https://github.com/storybooks/storybook/pull/22933) +- Angular: Add --open/--no-open flag to dev command [#22964](https://github.com/storybooks/storybook/pull/22964) +- Angular: Silence compodoc when running storybook with --quiet [#22957](https://github.com/storybooks/storybook/pull/22957) #### Maintenance -- Core: Add tests for mapping behaviour in #22169 [#22301](https://github.com/storybooks/storybook/pull/22301) +- Core: Improve MDX of error in story index [#22782](https://github.com/storybooks/storybook/pull/22782) -#### Dependency Upgrades +#### Build + +- Build: Fix the theme output during development [#22841](https://github.com/storybooks/storybook/pull/22841) +- Revert "Docs: E2E tests for Source block update fix" [#22934](https://github.com/storybookjs/storybook/pull/22934) + +## 7.0.19 (June 8, 2023) -- Update glob to v10.0.0 [#22171](https://github.com/storybooks/storybook/pull/22171) +Bad release -## 7.1.0-alpha.10 (April 28, 2023) +## 7.0.18 (May 26, 2023) #### Bug Fixes -- Vue3: Fix compiler error when there is double tag [#22286](https://github.com/storybooks/storybook/pull/22286) -- Args: Fix multiple mapped args return array of labels [#22169](https://github.com/storybooks/storybook/pull/22169) -- Angular: Fix storyshots by removing deprecated import [#22134](https://github.com/storybooks/storybook/pull/22134) -- Ember: Fix wrong path [#22203](https://github.com/storybooks/storybook/pull/22203) -- CLI: Add web-components webpack5 to missing-babelrc automigration [#22202](https://github.com/storybooks/storybook/pull/22202) -- Docs: Fix inline story style [#21870](https://github.com/storybooks/storybook/pull/21870) +- Vue3: Fix TS 5.0 compat with vue-component-type-helpers [#22814](https://github.com/storybooks/storybook/pull/22814) +- Vue3: Fix reactive args updates in decorators [#22717](https://github.com/storybooks/storybook/pull/22717) +- Vue3: Revert v7 breaking change, restore reactive v6-compat API [#22692](https://github.com/storybooks/storybook/pull/22692) #### Build -- Fix vue-cli/default-js sandbox [#22259](https://github.com/storybooks/storybook/pull/22259) -- Core: Fix `DOCS_RENDERED` test [#22255](https://github.com/storybooks/storybook/pull/22255) -- Add regex to ignore outdated Browserslist in Jest initialization base file [#22260](https://github.com/storybooks/storybook/pull/22260) +- Build: Add more checks to ci:daily workflow [#22815](https://github.com/storybooks/storybook/pull/22815) +- Build: Fix Nextjs E2E tests [#22816](https://github.com/storybooks/storybook/pull/22816) +- Build: Bring back new Vue3 tests to main [#22685](https://github.com/storybooks/storybook/pull/22685) -## 7.1.0-alpha.9 (April 26, 2023) +## 7.0.17 (May 24, 2023) -#### Features +#### Bug Fixes -- NextJS: Allow disabling next/image lazy loading [#21909](https://github.com/storybooks/storybook/pull/21909) -- Core: Allow Flow syntax in stories [#21859](https://github.com/storybooks/storybook/pull/21859) +- Vite: Fix pnpm support by replacing @storybook/global with `window` [#22709](https://github.com/storybooks/storybook/pull/22709) +- Core: Fix `managerHead` preset in `main.ts` [#22701](https://github.com/storybooks/storybook/pull/22701) -#### Bug Fixes +## 7.0.16 (May 24, 2023) -- Vue3: Support multiple setup functions [#22170](https://github.com/storybooks/storybook/pull/22170) -- UI: Fix shift + 7 shortcut to focus search field [#22073](https://github.com/storybooks/storybook/pull/22073) -- UI: Fix controls missing when navigating from story [#21967](https://github.com/storybooks/storybook/pull/21967) +Accidental no-op -#### Maintenance +## 7.0.15 (May 24, 2023) + +#### Bug Fixes -- Core: Rename manager UI mjs to js [#22247](https://github.com/storybooks/storybook/pull/22247) -- Remove dead code [#22019](https://github.com/storybooks/storybook/pull/22019) -- Vue3: Move TS stories into a separate folder [#22235](https://github.com/storybooks/storybook/pull/22235) +- UI: Fix `.mp3` support for builder-manager [#22699](https://github.com/storybooks/storybook/pull/22699) +- Vite: Fix missing @storybook/global dependency [#22700](https://github.com/storybooks/storybook/pull/22700) +- NextJS: Fix compatibility with Next 13.4.3 [#22697](https://github.com/storybooks/storybook/pull/22697) -#### Build +## 7.0.14 (May 23, 2023) -- Build: Migrate @storybook/addon-docs to strict-ts [#22180](https://github.com/storybooks/storybook/pull/22180) -- Build: Migrate @storybook/highlight to strict TS [#22181](https://github.com/storybooks/storybook/pull/22181) -- Build: Enable strict TS by default [#22143](https://github.com/storybooks/storybook/pull/22143) +#### Bug Fixes -## 7.1.0-alpha.8 (April 24, 2023) +- Core: Only connect to serverChannel in development mode [#22575](https://github.com/storybooks/storybook/pull/22575) +- CLI: Fix error parsing on NPM proxy [#22690](https://github.com/storybooks/storybook/pull/22690) -#### Features +#### Maintenance -- Core: Support custom hosts using window.location server channel URL [#22055](https://github.com/storybooks/storybook/pull/22055) +- Core: Create server channel from window.location [#22055](https://github.com/storybooks/storybook/pull/22055) + +## 7.0.13 (May 22, 2023) #### Bug Fixes -- Addon-actions: Fix ESM by upgrading from uuid-browser to uuid [#22037](https://github.com/storybooks/storybook/pull/22037) -- Addon-actions: Fix decorator type [#22175](https://github.com/storybooks/storybook/pull/22175) -- NextJS: Fix tsconfig resolution [#22160](https://github.com/storybooks/storybook/pull/22160) -- Core: Pass parameters in `SET_INDEX` for docs entries [#22154](https://github.com/storybooks/storybook/pull/22154) +- Angular: Fix process I/O for compodoc command [#22441](https://github.com/storybooks/storybook/pull/22441) +- CLI: Improve error handling when dealing with angular.json files [#22663](https://github.com/storybooks/storybook/pull/22663) +- CLI: Skip prompting for eslint plugin with --yes flag [#22651](https://github.com/storybooks/storybook/pull/22651) +- CLI: Account for windows paths when copying templates [#22644](https://github.com/storybooks/storybook/pull/22644) +- CLI: Fix pnpm init command [#22635](https://github.com/storybooks/storybook/pull/22635) +- UI: Add legacy font formats [#22576](https://github.com/storybooks/storybook/pull/22576) +- Webpack: Remove the alias for `global` [#22393](https://github.com/storybooks/storybook/pull/22393) #### Maintenance -- CSF: Improve error message for bad default export [#22190](https://github.com/storybooks/storybook/pull/22190) -- CLI: Add addon query-params to list of SB7 incompatible addons [#22095](https://github.com/storybooks/storybook/pull/22095) +- Angular: Enable unit tests [#22355](https://github.com/storybooks/storybook/pull/22355) +- CLI: Reduce installation noise and improve error handling [#22554](https://github.com/storybooks/storybook/pull/22554) +- CLI: Only handle CTRL + C on init event [#22687](https://github.com/storybooks/storybook/pull/22687) +- CLI: Don't touch nx packages on upgrade [#22419](https://github.com/storybooks/storybook/pull/22419) #### Build -- Build: Fix sandbox publish script [#22206](https://github.com/storybooks/storybook/pull/22206) -- Build: Fix lit sandboxes [#22201](https://github.com/storybooks/storybook/pull/22201) -- Vite sandboxes: use stable Vite 4.3 [#22183](https://github.com/storybooks/storybook/pull/22183) +- Build: Add discord notification when generating sandboxes fails [#22638](https://github.com/storybooks/storybook/pull/22638) +- Build: Set correct ref on sandboxes Github action [#22625](https://github.com/storybooks/storybook/pull/22625) +- Build: Fix sandbox generation scripts [#22620](https://github.com/storybooks/storybook/pull/22620) -## 7.1.0-alpha.7 (April 19, 2023) +## 7.0.12 (May 15, 2023) #### Bug Fixes -- Vue3: Fix reactive decorators [#21954](https://github.com/storybooks/storybook/pull/21954) +- Core: Fix source snippets for stories with mapped args [#22135](https://github.com/storybooks/storybook/pull/22135) +- CLI: Fix `getFrameworkPackage` logic [#22559](https://github.com/storybooks/storybook/pull/22559) +- CLI: Remove automigrate reference from init command [#22561](https://github.com/storybooks/storybook/pull/22561) -#### Build +#### Maintenance -- Build: Improve sandboxes commit message [#22136](https://github.com/storybooks/storybook/pull/22136) +- CLI: Detach automigrate command from storybook init [#22523](https://github.com/storybooks/storybook/pull/22523) -## 7.1.0-alpha.6 (April 18, 2023) +## 7.0.11 (May 12, 2023) #### Bug Fixes -- Core: Restore Docs `useParameter` using `DOCS_PREPARED` [#22118](https://github.com/storybooks/storybook/pull/22118) -- Core: Add new tags to distinguish docs attachment [#22120](https://github.com/storybooks/storybook/pull/22120) -- Core: Fix `module` guard in non-webpack environments [#22085](https://github.com/storybooks/storybook/pull/22085) +- Toolbars: Fix title behavior in UI [#22496](https://github.com/storybooks/storybook/pull/22496) +- CLI: Fix storybook upgrade precheckfailure object [#22517](https://github.com/storybooks/storybook/pull/22517) +- CLI: Throw errors instead of rejecting promises [#22515](https://github.com/storybooks/storybook/pull/22515) +- CLI: Remove unsupported frameworks/renderers and improve builder detection [#22492](https://github.com/storybooks/storybook/pull/22492) +- Web-components: Fix source decorator to handle document fragments [#22513](https://github.com/storybooks/storybook/pull/22513) +- Core: Fix windows path error in StoryStore v6 [#22512](https://github.com/storybooks/storybook/pull/22512) +- CLI: Do not show a migration summary on sb init [#22109](https://github.com/storybooks/storybook/pull/22109) +- UI: Show current search shortcut in search box sidebar [#21619](https://github.com/storybooks/storybook/pull/21619) +- Outline: Fix additional outline border in docs mode [#21773](https://github.com/storybooks/storybook/pull/21773) +- Measure: Deactivate when switching to Docs mode [#21602](https://github.com/storybooks/storybook/pull/21602) +- CSF: Expose story id in composeStories [#22471](https://github.com/storybooks/storybook/pull/22471) +- CLI: Prompt to force initialization when storybook folder is detected [#22392](https://github.com/storybooks/storybook/pull/22392) +- UI: Fix css inconsistency in Button and Icon components [#22497](https://github.com/storybooks/storybook/pull/22497) -#### Build +## 7.0.10 (May 9, 2023) -- Build: Skip docs pages e2e tests for ssv6 examples [#22141](https://github.com/storybooks/storybook/pull/22141) -- Build: Upgrade Playwright to 1.32.3 [#22087](https://github.com/storybooks/storybook/pull/22087) +#### Bug Fixes -#### Dependency Upgrades +- CLI: Fix copyTemplate failures on `init` [#22375](https://github.com/storybooks/storybook/pull/22375) +- CLI: Fix server init [#22443](https://github.com/storybooks/storybook/pull/22443) +- CLI: Scope styles in sample components from the CLI templates [#22162](https://github.com/storybooks/storybook/pull/22162) +- React: Use correct default annotations for composeStories [#22308](https://github.com/storybooks/storybook/pull/22308) +- Server: Add json indexer [#22460](https://github.com/storybooks/storybook/pull/22460) +- UI: Fix opacity from list-item color [#22074](https://github.com/storybooks/storybook/pull/22074) -- Remove unused babel dependencies [#21984](https://github.com/storybooks/storybook/pull/21984) +#### Maintenance -## 7.1.0-alpha.5 (April 17, 2023) +- CLI: Refactor package manager methods to be async [#22401](https://github.com/storybooks/storybook/pull/22401) +- Improve Error message for Angular.json file not found [#22377](https://github.com/storybooks/storybook/pull/22377) -#### Maintenance +## 7.0.9 (May 5, 2023) -- CLI: Mark qwik as using addon-interactions [#22000](https://github.com/storybooks/storybook/pull/22000) +#### Bug Fixes -#### Build +- Core: Fix virtual modules excluded for babel-loader [#22331](https://github.com/storybooks/storybook/pull/22331) -- Revert "Build: Update dangerfile temporarily to check for patch label" [#22108](https://github.com/storybooks/storybook/pull/22108) +#### Maintenance + +- Angular: Allow TypeScript 4.0.0 and 5.0.0 [#22391](https://github.com/storybooks/storybook/pull/22391) -## 7.1.0-alpha.4 (April 15, 2023) +## 7.0.8 (May 3, 2023) #### Bug Fixes -- Docs: Fix source snippets when parameters.docs.source.type = 'code' [#22048](https://github.com/storybooks/storybook/pull/22048) -- CLI: Mention how to setup a monorepo manually in babelrc automigration [#22052](https://github.com/storybooks/storybook/pull/22052) +- Typescript: Fix bad typings caused by tsup bug [#22261](https://github.com/storybooks/storybook/pull/22261) +- Migrate: skip the automigration for gf markdown when user isn't using mdx [#22186](https://github.com/storybooks/storybook/pull/22186) +- UI: Addon panel does not update after disabling/enabling an addon [#22258](https://github.com/storybooks/storybook/pull/22258) +- Vue3: Fix compiler error when there is double tag [#22286](https://github.com/storybooks/storybook/pull/22286) +- Args: Fix multiple mapped args return array of labels [#22169](https://github.com/storybooks/storybook/pull/22169) +- CLI: Add web-components webpack5 to missing-babelrc automigration [#22202](https://github.com/storybooks/storybook/pull/22202) +- Docs: Fix inline story style [#21870](https://github.com/storybooks/storybook/pull/21870) +- UI: Fix shift + 7 shortcut to focus search field [#22073](https://github.com/storybooks/storybook/pull/22073) +- UI: Fix controls missing when navigating from story [#21967](https://github.com/storybooks/storybook/pull/21967) +- NextJS: Fix tsconfig resolution [#22160](https://github.com/storybooks/storybook/pull/22160) + +#### Maintenance + +- Telemetry: Persist sessionId across runs [#22325](https://github.com/storybooks/storybook/pull/22325) +- Packaging: Move `types` condition to the front in all `package.json.exports` maps [#22321](https://github.com/storybooks/storybook/pull/22321) +- Core: Rename manager UI mjs to js [#22247](https://github.com/storybooks/storybook/pull/22247) +- Angular: Add support for Angular 16 [#22096](https://github.com/storybooks/storybook/pull/22096) +- Packaging: Don't generate ESM dist for preset files [#22330](https://github.com/storybooks/storybook/pull/22330) +- Packaging: Fix url for all packages in package.json [#22101](https://github.com/storybooks/storybook/pull/22101) +- Add regex to ignore outdated Browserslist in Jest initialization base file [#22260](https://github.com/storybooks/storybook/pull/22260) -## 7.1.0-alpha.3 (April 13, 2023) +## 7.0.7 (April 24, 2023) #### Bug Fixes -- UI: Fix upgrade command in about page [#22056](https://github.com/storybooks/storybook/pull/22056) -- CLI: Fix sandbox command [#21977](https://github.com/storybooks/storybook/pull/21977) +- Core: Pass parameters in `SET_INDEX` for docs entries [#22154](https://github.com/storybooks/storybook/pull/22154) +- Addon-actions: Fix ESM by upgrading from uuid-browser to uuid [#22037](https://github.com/storybooks/storybook/pull/22037) +- Addon-actions: Fix decorator type [#22175](https://github.com/storybooks/storybook/pull/22175) +- Core: Add new tags to distinguish docs attachment [#22120](https://github.com/storybooks/storybook/pull/22120) +- Core: Restore Docs `useParameter` using `DOCS_PREPARED` [#22118](https://github.com/storybooks/storybook/pull/22118) -## 7.1.0-alpha.2 (April 12, 2023) +#### Maintenance -#### Features +- CSF: Improve error message for bad default export [#22190](https://github.com/storybooks/storybook/pull/22190) +- CLI: Add addon query-params to list of SB7 incompatible addons [#22095](https://github.com/storybooks/storybook/pull/22095) +- UI: Add remount story shortcut [#21401](https://github.com/storybooks/storybook/pull/21401) + +#### Build + +- Build: Fix lit sandboxes [#22201](https://github.com/storybooks/storybook/pull/22201) +- Build: Fix sandbox publish script [#22206](https://github.com/storybooks/storybook/pull/22206) -- UI: Add remount story shortcut [#21401](https://github.com/storybooks/storybook/pull/21401) +## 7.0.6 (April 19, 2023) #### Bug Fixes -- CLI: Catch errors thrown on sanity check of SB installs [#22039](https://github.com/storybooks/storybook/pull/22039) +- Core: Fix `module` guard in non-webpack environments [#22085](https://github.com/storybooks/storybook/pull/22085) #### Maintenance -- Addon-docs: Remove mdx1-csf as optional peer dep [#22038](https://github.com/storybooks/storybook/pull/22038) -- Telemetry: Add CLI version to context [#21999](https://github.com/storybooks/storybook/pull/21999) +- CLI: Mark qwik as using addon-interactions [#22000](https://github.com/storybooks/storybook/pull/22000) #### Build -- Build: Use vite@beta on sandboxes [#22030](https://github.com/storybooks/storybook/pull/22030) -- Fix e2e tests failing in Firefox [#22022](https://github.com/storybooks/storybook/pull/22022) -- Vite: Use vite 4.3 beta in sandboxes [#21986](https://github.com/storybooks/storybook/pull/21986) +- Build: Upgrade Playwright to 1.32.3 [#22087](https://github.com/storybooks/storybook/pull/22087) -## 7.1.0-alpha.1 (April 11, 2023) +## 7.0.5 (April 15, 2023) #### Bug Fixes -- React: Fix default export docgen for React.FC and forwardRef [#22024](https://github.com/storybooks/storybook/pull/22024) -- Viewport: Remove transitions when switching viewports [#21963](https://github.com/storybooks/storybook/pull/21963) -- CLI: Fix JsPackageManager typo [#22006](https://github.com/storybooks/storybook/pull/22006) -- Viewport: Fix the `defaultOrientation` config option [#21962](https://github.com/storybooks/storybook/pull/21962) -- UI: Fix story data access for broken About page [#21951](https://github.com/storybooks/storybook/pull/21951) +- Docs: Fix source snippets when parameters.docs.source.type = 'code' [#22048](https://github.com/storybooks/storybook/pull/22048) +- CLI: Mention how to setup a monorepo manually in babelrc automigration [#22052](https://github.com/storybooks/storybook/pull/22052) +- UI: Fix upgrade command in about page [#22056](https://github.com/storybooks/storybook/pull/22056) +- CLI: Fix CLI sandbox command [#21977](https://github.com/storybooks/storybook/pull/21977) -#### Maintenance +## 7.0.4 (April 12, 2023) -- CLI: Update template code references to 7.0 [#21845](https://github.com/storybooks/storybook/pull/21845) +Storybook 7.0 is here! 🎉 + +- ⚡️ [First-class Vite](https://storybook.js.org/blog/first-class-vite-support-in-storybook/) +- 🔼 [Zero-config NextJS](https://storybook.js.org/blog/integrate-nextjs-and-storybook-automatically/) +- 🇸 [Zero-config SvelteKit](https://storybook.js.org/blog/storybook-for-sveltekit/) +- 🏗️ [Frameworks API](https://storybook.js.org/blog/framework-api/) +- 3️⃣ [Component Story Format v3](https://storybook.js.org/blog/storybook-csf3-is-here/) +- 🛡️ [Improved type safety](https://storybook.js.org/blog/improved-type-safety-in-storybook-7/) +- 📚 [Docs overhaul with MDx2 support](https://storybook.js.org/blog/storybook-7-docs/) +- ☂️ [Code coverage for interaction testing](https://storybook.js.org/blog/code-coverage-with-the-storybook-test-runner/) +- 🖼️ [UI design refresh](https://storybook.js.org/blog/7-0-design-alpha/) +- 🏛️ [Improved stability](https://storybook.js.org/blog/storybook-ecosystem-ci/) + + 7.0 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.0.0-alpha.*`, `7.0.0-beta.*`, and `7.0.0-rc.*` for the full list of changes. + +See our [Migration guide](https://storybook.js.org/migration-guides/7.0) to upgrade from earlier versions of Storybook. + +#### Bug Fixes + +- CLI: Catch errors thrown on sanity check of SB installs [#22039](https://github.com/storybooks/storybook/pull/22039) #### Dependency Upgrades -- React-vite: Fix perf regression by pinning vite-plugin-react-docgen-ts [#22013](https://github.com/storybooks/storybook/pull/22013) -- Use future version of satellite repo dependencies [#22026](https://github.com/storybooks/storybook/pull/22026) +- Addon-docs: Remove mdx1-csf as optional peer dep [#22038](https://github.com/storybooks/storybook/pull/22038) -## 7.1.0-alpha.0 (April 5, 2023) +## 7.0.3 (April 12, 2023) #### Bug Fixes -- Angular: Fix components disappearing on docs page on property change [#21944](https://github.com/storybooks/storybook/pull/21944) -- React: Don't show decorators in JSX snippets [#21907](https://github.com/storybooks/storybook/pull/21907) -- Docs: Include decorators by default in source decorators [#21902](https://github.com/storybooks/storybook/pull/21902) -- CLI: Fix npm list command [#21947](https://github.com/storybooks/storybook/pull/21947) -- Core: Revert Emotion `:first-child` (etc) workarounds [#21213](https://github.com/storybooks/storybook/pull/21213) -- Addon-actions: Fix non-included type file [#21922](https://github.com/storybooks/storybook/pull/21922) -- Addon GFM: Fix node-logger dependency [#21938](https://github.com/storybooks/storybook/pull/21938) +- React: Fix default export docgen for React.FC and forwardRef [#22024](https://github.com/storybooks/storybook/pull/22024) +- Viewport: Remove transitions when switching viewports [#21963](https://github.com/storybooks/storybook/pull/21963) +- CLI: Fix JsPackageManager typo [#22006](https://github.com/storybooks/storybook/pull/22006) +- Viewport: Fix the `defaultOrientation` config option [#21962](https://github.com/storybooks/storybook/pull/21962) +- UI: Fix story data access for broken About page [#21951](https://github.com/storybooks/storybook/pull/21951) +- Angular: Fix components disappearing on docs page on property change [#21944](https://github.com/storybooks/storybook/pull/21944) +- React: Don't show decorators in JSX snippets [#21907](https://github.com/storybooks/storybook/pull/21907) +- Addon-docs: Include decorators by default in source decorators [#21902](https://github.com/storybooks/storybook/pull/21902) +- CLI: Fix npm list command [#21947](https://github.com/storybooks/storybook/pull/21947) +- Core: Revert Emotion `:first-child` (etc) workarounds [#21213](https://github.com/storybooks/storybook/pull/21213) -#### Build +#### Maintenance -- Build: Update trigger circle ci workflow to include main [#21888](https://github.com/storybooks/storybook/pull/21888) -- Build: Update dangerfile temporarily to check for patch label [#21945](https://github.com/storybooks/storybook/pull/21945) -- Build: Re-enable Vue2 Vite sandbox [#21940](https://github.com/storybooks/storybook/pull/21940) -- Build: Fix release badge on repros [#21923](https://github.com/storybooks/storybook/pull/21923) -- Build: fix the workflows to generate sandboxes [#21912](https://github.com/storybooks/storybook/pull/21912) -- Build: bump the node version in CI [#21917](https://github.com/storybooks/storybook/pull/21917) -- Build: no `pnp.cjs` in the root, regen lockfiles [#21908](https://github.com/storybooks/storybook/pull/21908) -- Build: remove pnp sandbox template [#21913](https://github.com/storybooks/storybook/pull/21913) -- Build: make the CI config ready for 7.0 release [#21808](https://github.com/storybooks/storybook/pull/21808) +- UI: Add remount story shortcut [#21401](https://github.com/storybooks/storybook/pull/21401) +- Telemetry: Add CLI version to context [#21999](https://github.com/storybooks/storybook/pull/21999) +- CLI: Update template code references to 7.0 [#21845](https://github.com/storybooks/storybook/pull/21845) +- Addon-actions: Fix non-included type file [#21922](https://github.com/storybooks/storybook/pull/21922) +- Addon GFM: Fix node-logger dependency [#21938](https://github.com/storybooks/storybook/pull/21938) #### Dependency Upgrades -- Update `@emotion/cache` version [#21941](https://github.com/storybooks/storybook/pull/21941) +- React-vite: Fix perf regression by pinning vite-plugin-react-docgen-ts [#22013](https://github.com/storybooks/storybook/pull/22013) +- Update `@emotion/cache` version [#21941](https://github.com/storybooks/storybook/pull/21941) ## 7.0.2 (April 3, 2023) @@ -325,32 +445,32 @@ Storybook 7.0 is here! 🎉 - 🖼️ [UI design refresh](https://storybook.js.org/blog/7-0-design-alpha/) - 🏛️ [Improved stability](https://storybook.js.org/blog/storybook-ecosystem-ci/) -7.0 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.0.0-alpha.*`, `7.0.0-beta.*`, and `7.0.0-rc.*` for the full list of changes. + 7.0 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.0.0-alpha.*`, `7.0.0-beta.*`, and `7.0.0-rc.*` for the full list of changes. See our [Migration guide](https://storybook.js.org/migration-guides/7.0) to upgrade from earlier versions of Storybook. #### Bug Fixes -- CLI: Improve incompatible addons logic [#21883](https://github.com/storybooks/storybook/pull/21883) +- CLI: Improve incompatible addons logic [#21883](https://github.com/storybooks/storybook/pull/21883) ## 7.0.1 (April 3, 2023) #### Bug Fixes -- CLI: Always send error events if init doesn't succeed [#21879](https://github.com/storybooks/storybook/pull/21879) -- CLI: Warn when community addons are incompatible with Storybook 7 [#21863](https://github.com/storybooks/storybook/pull/21863) -- CLI: Fix migration summary message [#21862](https://github.com/storybooks/storybook/pull/21862) -- CLI: Fix link to new framework API migrations [#21875](https://github.com/storybooks/storybook/pull/21875) +- CLI: Always send error events if init doesn't succeed [#21879](https://github.com/storybooks/storybook/pull/21879) +- CLI: Warn when community addons are incompatible with Storybook 7 [#21863](https://github.com/storybooks/storybook/pull/21863) +- CLI: Fix migration summary message [#21862](https://github.com/storybooks/storybook/pull/21862) +- CLI: Fix link to new framework API migrations [#21875](https://github.com/storybooks/storybook/pull/21875) #### Maintenance -- Angular: Remove deprecated `component`/`propsMeta` from story [#21807](https://github.com/storybooks/storybook/pull/21807) -- Remove deprecated flags and properties [#21852](https://github.com/storybooks/storybook/pull/21852) +- Angular: Remove deprecated `component`/`propsMeta` from story [#21807](https://github.com/storybooks/storybook/pull/21807) +- Remove deprecated flags and properties [#21852](https://github.com/storybooks/storybook/pull/21852) #### Dependencies -- Fix codemod dependency conflict [#21876](https://github.com/storybooks/storybook/pull/21876) -- Upgrade satellite repos for 7.0 [#21881](https://github.com/storybooks/storybook/pull/21881) +- Fix codemod dependency conflict [#21876](https://github.com/storybooks/storybook/pull/21876) +- Upgrade satellite repos for 7.0 [#21881](https://github.com/storybooks/storybook/pull/21881) ## 7.0.0 (March 31, 2023) @@ -367,7 +487,7 @@ Storybook 7.0 is here! 🎉 - 🖼️ [UI design refresh](https://storybook.js.org/blog/7-0-design-alpha/) - 🏛️ [Improved stability](https://storybook.js.org/blog/storybook-ecosystem-ci/) -7.0 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.0.0-alpha.*`, `7.0.0-beta.*`, and `7.0.0-rc.*` for the full list of changes. + 7.0 contains hundreds more fixes, features, and tweaks. Browse the changelogs matching `7.0.0-alpha.*`, `7.0.0-beta.*`, and `7.0.0-rc.*` for the full list of changes. See our [Migration guide](https://storybook.js.org/migration-guides/7.0) to upgrade from earlier versions of Storybook. @@ -377,973 +497,973 @@ Full announcement and proper release to the `latest` npm tag coming soon. 😘 #### Features -- CLI: Update stories glob in mdx codemod and not in mdx automigration [#21809](https://github.com/storybooks/storybook/pull/21809) +- CLI: Update stories glob in mdx codemod and not in mdx automigration [#21809](https://github.com/storybooks/storybook/pull/21809) #### Bug Fixes -- TS: Make sure components with interfaces or no props don't raise decorator assignability issues [#21833](https://github.com/storybooks/storybook/pull/21833) -- Angular: Export applicationConfig decorator and adjust documentation for usage [#21851](https://github.com/storybooks/storybook/pull/21851) -- Vite: Polyfill global by default [#21832](https://github.com/storybooks/storybook/pull/21832) -- NextJS: Add explicit require.resolve calls to nextjs webpack loader config [#21834](https://github.com/storybooks/storybook/pull/21834) -- Angular: Fix support on Windows when Storystore v7 is disabled [#21830](https://github.com/storybooks/storybook/pull/21830) -- Angular: Fix module imported twice [#21770](https://github.com/storybooks/storybook/pull/21770) +- TS: Make sure components with interfaces or no props don't raise decorator assignability issues [#21833](https://github.com/storybooks/storybook/pull/21833) +- Angular: Export applicationConfig decorator and adjust documentation for usage [#21851](https://github.com/storybooks/storybook/pull/21851) +- Vite: Polyfill global by default [#21832](https://github.com/storybooks/storybook/pull/21832) +- NextJS: Add explicit require.resolve calls to nextjs webpack loader config [#21834](https://github.com/storybooks/storybook/pull/21834) +- Angular: Fix support on Windows when Storystore v7 is disabled [#21830](https://github.com/storybooks/storybook/pull/21830) +- Angular: Fix module imported twice [#21770](https://github.com/storybooks/storybook/pull/21770) #### Maintenance -- CLI: Fix duplicated dependency warning for major version differences [#21850](https://github.com/storybooks/storybook/pull/21850) -- Vite: downgrade remark related dependencies [#21836](https://github.com/storybooks/storybook/pull/21836) +- CLI: Fix duplicated dependency warning for major version differences [#21850](https://github.com/storybooks/storybook/pull/21850) +- Vite: downgrade remark related dependencies [#21836](https://github.com/storybooks/storybook/pull/21836) #### Build -- Build: Remove workflow we no longer use [#21829](https://github.com/storybooks/storybook/pull/21829) +- Build: Remove workflow we no longer use [#21829](https://github.com/storybooks/storybook/pull/21829) ## 7.0.0-rc.10 (March 29, 2023) #### Features -- CLI: Warn the user for duplicated versions after automigrate [#21791](https://github.com/storybooks/storybook/pull/21791) +- CLI: Warn the user for duplicated versions after automigrate [#21791](https://github.com/storybooks/storybook/pull/21791) #### Bug Fixes -- Addon-docs: Add `remark-slug` and `remark-external-links` to Vite builder [#21796](https://github.com/storybooks/storybook/pull/21796) -- Blocks: Add children prop types [#21803](https://github.com/storybooks/storybook/pull/21803) +- Addon-docs: Add `remark-slug` and `remark-external-links` to Vite builder [#21796](https://github.com/storybooks/storybook/pull/21796) +- Blocks: Add children prop types [#21803](https://github.com/storybooks/storybook/pull/21803) #### Maintenance -- CLI: Upgrade to latest storybook/react-native version [#21811](https://github.com/storybooks/storybook/pull/21811) +- CLI: Upgrade to latest storybook/react-native version [#21811](https://github.com/storybooks/storybook/pull/21811) ## 7.0.0-rc.9 (March 29, 2023) #### Bug Fixes -- CLI: Don't inline template functions in CSF2 to 3 codemod [#21539](https://github.com/storybooks/storybook/pull/21539) -- ArgTypes: Fix JSdoc missing deprecated tag [#21794](https://github.com/storybooks/storybook/pull/21794) -- UI: Scroll to highlighted search result [#21692](https://github.com/storybooks/storybook/pull/21692) -- Actions: Fix clearing number of actions [#21760](https://github.com/storybooks/storybook/pull/21760) -- UI: Fix cannot read properties of undefined at SearchResults [#21728](https://github.com/storybooks/storybook/pull/21728) -- CLI: Fix an issue where port can be NaN [#21785](https://github.com/storybooks/storybook/pull/21785) -- Docs: Exclude decorators by default from source [#21722](https://github.com/storybooks/storybook/pull/21722) -- Docs: Fix ArgsTable crashing on subcomponents [#21769](https://github.com/storybooks/storybook/pull/21769) -- Docs: Make Source `transform` API consistent [#21749](https://github.com/storybooks/storybook/pull/21749) +- CLI: Don't inline template functions in CSF2 to 3 codemod [#21539](https://github.com/storybooks/storybook/pull/21539) +- ArgTypes: Fix JSdoc missing deprecated tag [#21794](https://github.com/storybooks/storybook/pull/21794) +- UI: Scroll to highlighted search result [#21692](https://github.com/storybooks/storybook/pull/21692) +- Actions: Fix clearing number of actions [#21760](https://github.com/storybooks/storybook/pull/21760) +- UI: Fix cannot read properties of undefined at SearchResults [#21728](https://github.com/storybooks/storybook/pull/21728) +- CLI: Fix an issue where port can be NaN [#21785](https://github.com/storybooks/storybook/pull/21785) +- Docs: Exclude decorators by default from source [#21722](https://github.com/storybooks/storybook/pull/21722) +- Docs: Fix ArgsTable crashing on subcomponents [#21769](https://github.com/storybooks/storybook/pull/21769) +- Docs: Make Source `transform` API consistent [#21749](https://github.com/storybooks/storybook/pull/21749) #### Maintenance -- Telemetry: Count components [#21774](https://github.com/storybooks/storybook/pull/21774) +- Telemetry: Count components [#21774](https://github.com/storybooks/storybook/pull/21774) #### Dependency Upgrades -- Vite: Unpin rollup version [#21748](https://github.com/storybooks/storybook/pull/21748) -- Upgrade slash package to v5.x [#21786](https://github.com/storybooks/storybook/pull/21786) +- Vite: Unpin rollup version [#21748](https://github.com/storybooks/storybook/pull/21748) +- Upgrade slash package to v5.x [#21786](https://github.com/storybooks/storybook/pull/21786) ## 7.0.0-rc.8 (March 25, 2023) #### Bug Fixes -- TypeScript: Fix missing env in StorybookConfig [#21732](https://github.com/storybooks/storybook/pull/21732) -- Composition: Fix src of iframe unless the version changes [#21713](https://github.com/storybooks/storybook/pull/21713) -- Composition: Fix the ref loading state showing up as empty instead [#21690](https://github.com/storybooks/storybook/pull/21690) +- TypeScript: Fix missing env in StorybookConfig [#21732](https://github.com/storybooks/storybook/pull/21732) +- Composition: Fix src of iframe unless the version changes [#21713](https://github.com/storybooks/storybook/pull/21713) +- Composition: Fix the ref loading state showing up as empty instead [#21690](https://github.com/storybooks/storybook/pull/21690) #### Build -- Build: Add e2e-tests-dev task [#21546](https://github.com/storybooks/storybook/pull/21546) -- Build: Fix CI after github.com SSH change [#21764](https://github.com/storybooks/storybook/pull/21764) +- Build: Add e2e-tests-dev task [#21546](https://github.com/storybooks/storybook/pull/21546) +- Build: Fix CI after github.com SSH change [#21764](https://github.com/storybooks/storybook/pull/21764) ## 7.0.0-rc.7 (March 23, 2023) #### Bug Fixes -- Svelte: Remount when resetting args in controls [#21659](https://github.com/storybooks/storybook/pull/21659) -- CLI: Fix support for env vars when running `dev`/`build` commands [#21152](https://github.com/storybooks/storybook/pull/21152) +- Svelte: Remount when resetting args in controls [#21659](https://github.com/storybooks/storybook/pull/21659) +- CLI: Fix support for env vars when running `dev`/`build` commands [#21152](https://github.com/storybooks/storybook/pull/21152) #### Maintenance -- Core: upgrade esbuild, remove watch option from options [#21727](https://github.com/storybooks/storybook/pull/21727) +- Core: upgrade esbuild, remove watch option from options [#21727](https://github.com/storybooks/storybook/pull/21727) ## 7.0.0-rc.6 (March 23, 2023) #### Bug Fixes -- CLI: Fix sb add / mdx-gfm for addons with non-serializable values [#21731](https://github.com/storybooks/storybook/pull/21731) -- CSF-plugin: Fix sourcemaps [#21704](https://github.com/storybooks/storybook/pull/21704) -- React: Fix TS docgen for Functional Components [#21693](https://github.com/storybooks/storybook/pull/21693) -- TypeScript: Add previewMainTemplate option to StorybookConfig [#21620](https://github.com/storybooks/storybook/pull/21620) -- UI: Fix titles for addons/controls/panel tabs to support render fns and JSX elements [#21650](https://github.com/storybooks/storybook/pull/21650) -- UI: Fix active state for menu iconbutton [#21666](https://github.com/storybooks/storybook/pull/21666) -- CLI: Update renderer templates to provide correct typescript examples [#21647](https://github.com/storybooks/storybook/pull/21647) -- Composition: Fix various CORS issues [#21682](https://github.com/storybooks/storybook/pull/21682) -- Composition: Fix version switcher [#21621](https://github.com/storybooks/storybook/pull/21621) +- CLI: Fix sb add / mdx-gfm for addons with non-serializable values [#21731](https://github.com/storybooks/storybook/pull/21731) +- CSF-plugin: Fix sourcemaps [#21704](https://github.com/storybooks/storybook/pull/21704) +- React: Fix TS docgen for Functional Components [#21693](https://github.com/storybooks/storybook/pull/21693) +- TypeScript: Add previewMainTemplate option to StorybookConfig [#21620](https://github.com/storybooks/storybook/pull/21620) +- UI: Fix titles for addons/controls/panel tabs to support render fns and JSX elements [#21650](https://github.com/storybooks/storybook/pull/21650) +- UI: Fix active state for menu iconbutton [#21666](https://github.com/storybooks/storybook/pull/21666) +- CLI: Update renderer templates to provide correct typescript examples [#21647](https://github.com/storybooks/storybook/pull/21647) +- Composition: Fix various CORS issues [#21682](https://github.com/storybooks/storybook/pull/21682) +- Composition: Fix version switcher [#21621](https://github.com/storybooks/storybook/pull/21621) #### Dependency Upgrades -- Pin rollup version to 3.19.1 [#21723](https://github.com/storybooks/storybook/pull/21723) +- Pin rollup version to 3.19.1 [#21723](https://github.com/storybooks/storybook/pull/21723) ## 7.0.0-rc.5 (March 20, 2023) #### Bug Fixes -- UI: Fix IconButton to be in active state when corresponding menu is open [#21622](https://github.com/storybooks/storybook/pull/21622) -- Angular: Fix `sb init` library support [#21675](https://github.com/storybooks/storybook/pull/21675) -- CLI: Fix Vue3 template CSS [#21674](https://github.com/storybooks/storybook/pull/21674) -- Core: fix storySort not reading from `.mjs` & `.cjs` files [#21637](https://github.com/storybooks/storybook/pull/21637) -- Core: Fix cts/mts file extensions for config files [#21465](https://github.com/storybooks/storybook/pull/21465) -- Core: Fix conflicting staticDirs case when -s flag is used [#21591](https://github.com/storybooks/storybook/pull/21591) -- Angular: Fix source preview for angular stories [#21609](https://github.com/storybooks/storybook/pull/21609) +- UI: Fix IconButton to be in active state when corresponding menu is open [#21622](https://github.com/storybooks/storybook/pull/21622) +- Angular: Fix `sb init` library support [#21675](https://github.com/storybooks/storybook/pull/21675) +- CLI: Fix Vue3 template CSS [#21674](https://github.com/storybooks/storybook/pull/21674) +- Core: fix storySort not reading from `.mjs` & `.cjs` files [#21637](https://github.com/storybooks/storybook/pull/21637) +- Core: Fix cts/mts file extensions for config files [#21465](https://github.com/storybooks/storybook/pull/21465) +- Core: Fix conflicting staticDirs case when -s flag is used [#21591](https://github.com/storybooks/storybook/pull/21591) +- Angular: Fix source preview for angular stories [#21609](https://github.com/storybooks/storybook/pull/21609) ## 7.0.0-rc.4 (March 17, 2023) #### Features -- Angular: Add "assets" build option [#21116](https://github.com/storybooks/storybook/pull/21116) +- Angular: Add "assets" build option [#21116](https://github.com/storybooks/storybook/pull/21116) #### Bug Fixes -- React: Fix missing framework options in shim [#21644](https://github.com/storybooks/storybook/pull/21644) -- Docs: Update MDX `Link` component to be more user friendly [#21570](https://github.com/storybooks/storybook/pull/21570) -- Links: Update LinkTo component [#21569](https://github.com/storybooks/storybook/pull/21569) -- Vite: Allow vue files in importfn [#21550](https://github.com/storybooks/storybook/pull/21550) -- Controls: Fix glitchy range control [#21459](https://github.com/storybooks/storybook/pull/21459) -- CLI: Fix styling regression on CLI starter Introduction.mdx file [#21466](https://github.com/storybooks/storybook/pull/21466) -- Addon-docs: Fix csf-plugin for Angular [#21629](https://github.com/storybooks/storybook/pull/21629) -- Vite: Fix alias array converted incorrectly to an object [#21480](https://github.com/storybooks/storybook/pull/21480) -- UI: Default white preview background [#21593](https://github.com/storybooks/storybook/pull/21593) -- Vite: Fix dev and yarn pnp by adding lodash files to optimizeDeps.include [#21535](https://github.com/storybooks/storybook/pull/21535) -- Composition: Fix blank page when ref is missing but specified in url [#21598](https://github.com/storybooks/storybook/pull/21598) -- Core: Disable cache in dev-mode [#21574](https://github.com/storybooks/storybook/pull/21574) -- Vite: Fix react-vite and projects with absolute path preview entries on Windows [#21545](https://github.com/storybooks/storybook/pull/21545) -- UI: Change the way of preloading fonts [#21599](https://github.com/storybooks/storybook/pull/21599) -- Core: Add preload and prefetch links for runtime.mjs and related files [#21594](https://github.com/storybooks/storybook/pull/21594) -- React: Fix type inconsistencies in composeStories [#21575](https://github.com/storybooks/storybook/pull/21575) -- UI: Fix WithTooltip to use visible prop instead of defaultVisible [#21589](https://github.com/storybooks/storybook/pull/21589) +- React: Fix missing framework options in shim [#21644](https://github.com/storybooks/storybook/pull/21644) +- Docs: Update MDX `Link` component to be more user friendly [#21570](https://github.com/storybooks/storybook/pull/21570) +- Links: Update LinkTo component [#21569](https://github.com/storybooks/storybook/pull/21569) +- Vite: Allow vue files in importfn [#21550](https://github.com/storybooks/storybook/pull/21550) +- Controls: Fix glitchy range control [#21459](https://github.com/storybooks/storybook/pull/21459) +- CLI: Fix styling regression on CLI starter Introduction.mdx file [#21466](https://github.com/storybooks/storybook/pull/21466) +- Addon-docs: Fix csf-plugin for Angular [#21629](https://github.com/storybooks/storybook/pull/21629) +- Vite: Fix alias array converted incorrectly to an object [#21480](https://github.com/storybooks/storybook/pull/21480) +- UI: Default white preview background [#21593](https://github.com/storybooks/storybook/pull/21593) +- Vite: Fix dev and yarn pnp by adding lodash files to optimizeDeps.include [#21535](https://github.com/storybooks/storybook/pull/21535) +- Composition: Fix blank page when ref is missing but specified in url [#21598](https://github.com/storybooks/storybook/pull/21598) +- Core: Disable cache in dev-mode [#21574](https://github.com/storybooks/storybook/pull/21574) +- Vite: Fix react-vite and projects with absolute path preview entries on Windows [#21545](https://github.com/storybooks/storybook/pull/21545) +- UI: Change the way of preloading fonts [#21599](https://github.com/storybooks/storybook/pull/21599) +- Core: Add preload and prefetch links for runtime.mjs and related files [#21594](https://github.com/storybooks/storybook/pull/21594) +- React: Fix type inconsistencies in composeStories [#21575](https://github.com/storybooks/storybook/pull/21575) +- UI: Fix WithTooltip to use visible prop instead of defaultVisible [#21589](https://github.com/storybooks/storybook/pull/21589) #### Maintenance -- Blocks: Iprove error messages [#21615](https://github.com/storybooks/storybook/pull/21615) +- Blocks: Iprove error messages [#21615](https://github.com/storybooks/storybook/pull/21615) #### Build -- Build: Regen lockfiles [#21576](https://github.com/storybooks/storybook/pull/21576) -- Build: Fix coverage job in CircleCI [#21633](https://github.com/storybooks/storybook/pull/21633) -- Vite: Update sandbox template for vue2 script [#20750](https://github.com/storybooks/storybook/pull/20750) +- Build: Regen lockfiles [#21576](https://github.com/storybooks/storybook/pull/21576) +- Build: Fix coverage job in CircleCI [#21633](https://github.com/storybooks/storybook/pull/21633) +- Vite: Update sandbox template for vue2 script [#20750](https://github.com/storybooks/storybook/pull/20750) ## 7.0.0-rc.3 (March 14, 2023) #### Bug Fixes -- Revert "CLI: Upgrade non-core storybook packages better" [#21583](https://github.com/storybooks/storybook/pull/21583) -- CLI: Fix loading main.cjs files in automigration [#21582](https://github.com/storybooks/storybook/pull/21582) -- Outline: Fixed a typo [#21515](https://github.com/storybooks/storybook/pull/21515) +- Revert "CLI: Upgrade non-core storybook packages better" [#21583](https://github.com/storybooks/storybook/pull/21583) +- CLI: Fix loading main.cjs files in automigration [#21582](https://github.com/storybooks/storybook/pull/21582) +- Outline: Fixed a typo [#21515](https://github.com/storybooks/storybook/pull/21515) #### Maintenance -- CLI: Improve MDX codemod message regarding Story.id deprecation [#21541](https://github.com/storybooks/storybook/pull/21541) +- CLI: Improve MDX codemod message regarding Story.id deprecation [#21541](https://github.com/storybooks/storybook/pull/21541) ## 7.0.0-rc.2 (March 13, 2023) #### Bug Fixes -- CLI: Fix MDX codemod to update imports even when no stories are extracted [#21549](https://github.com/storybooks/storybook/pull/21549) -- NextJS: Support next/font in Next v13.2.4 [#21560](https://github.com/storybooks/storybook/pull/21560) +- CLI: Fix MDX codemod to update imports even when no stories are extracted [#21549](https://github.com/storybooks/storybook/pull/21549) +- NextJS: Support next/font in Next v13.2.4 [#21560](https://github.com/storybooks/storybook/pull/21560) #### Build -- Fix 'yarn build' command on windows systems [#21531](https://github.com/storybooks/storybook/pull/21531) +- Fix 'yarn build' command on windows systems [#21531](https://github.com/storybooks/storybook/pull/21531) ## 7.0.0-rc.1 (March 10, 2023) #### Bug Fixes -- Revert "Merge pull request #21486 from storybookjs/norbert/wrap-for-pnp" [#21532](https://github.com/storybooks/storybook/pull/21532) -- Revert "Merge pull request #21497 from storybookjs/tom/21432-replace-… [#21526](https://github.com/storybooks/storybook/pull/21526) -- Csf-tools: Update babelParse to use legacy decorator syntax [#21506](https://github.com/storybooks/storybook/pull/21506) +- Revert "Merge pull request #21486 from storybookjs/norbert/wrap-for-pnp" [#21532](https://github.com/storybooks/storybook/pull/21532) +- Revert "Merge pull request #21497 from storybookjs/tom/21432-replace-… [#21526](https://github.com/storybooks/storybook/pull/21526) +- Csf-tools: Update babelParse to use legacy decorator syntax [#21506](https://github.com/storybooks/storybook/pull/21506) ## 7.0.0-rc.0 (March 10, 2023) #### Bug Fixes -- CLI: Upgrade non-core storybook packages better [#21508](https://github.com/storybooks/storybook/pull/21508) -- Svelte: Pass all arguments to configure through to fix StoryStoreV6 [#21491](https://github.com/storybooks/storybook/pull/21491) -- Core: Fix project root detection in yarn PnP without git [#21461](https://github.com/storybooks/storybook/pull/21461) -- Telemetry: Replace isomorphic-unfetch with node-fetch in telemetry [#21497](https://github.com/storybooks/storybook/pull/21497) -- Core: Fix builders/renderer PnP support [#21486](https://github.com/storybooks/storybook/pull/21486) -- CLI: Require main.js without cache in automigrations [#21498](https://github.com/storybooks/storybook/pull/21498) +- CLI: Upgrade non-core storybook packages better [#21508](https://github.com/storybooks/storybook/pull/21508) +- Svelte: Pass all arguments to configure through to fix StoryStoreV6 [#21491](https://github.com/storybooks/storybook/pull/21491) +- Core: Fix project root detection in yarn PnP without git [#21461](https://github.com/storybooks/storybook/pull/21461) +- Telemetry: Replace isomorphic-unfetch with node-fetch in telemetry [#21497](https://github.com/storybooks/storybook/pull/21497) +- Core: Fix builders/renderer PnP support [#21486](https://github.com/storybooks/storybook/pull/21486) +- CLI: Require main.js without cache in automigrations [#21498](https://github.com/storybooks/storybook/pull/21498) #### Maintenance -- CLI: Filter out internal static dir logging [#21137](https://github.com/storybooks/storybook/pull/21137) -- Docs: Error if you try to index an MDX file in ssv6 [#21495](https://github.com/storybooks/storybook/pull/21495) +- CLI: Filter out internal static dir logging [#21137](https://github.com/storybooks/storybook/pull/21137) +- Docs: Error if you try to index an MDX file in ssv6 [#21495](https://github.com/storybooks/storybook/pull/21495) #### Build -- Build: add slash to fix windows test [#21518](https://github.com/storybooks/storybook/pull/21518) +- Build: add slash to fix windows test [#21518](https://github.com/storybooks/storybook/pull/21518) ## 7.0.0-beta.64 (March 9, 2023) #### Bug Fixes -- Vite: Fix HMR of preview.js [#21485](https://github.com/storybooks/storybook/pull/21485) -- Vite: Make sure we update the vite import map when .mdx is added [#21490](https://github.com/storybooks/storybook/pull/21490) -- Docs: Don't allow passing `of={}` with undefined prop [#21452](https://github.com/storybooks/storybook/pull/21452) -- Composition: Restore support for v2 stories.json [#21354](https://github.com/storybooks/storybook/pull/21354) +- Vite: Fix HMR of preview.js [#21485](https://github.com/storybooks/storybook/pull/21485) +- Vite: Make sure we update the vite import map when .mdx is added [#21490](https://github.com/storybooks/storybook/pull/21490) +- Docs: Don't allow passing `of={}` with undefined prop [#21452](https://github.com/storybooks/storybook/pull/21452) +- Composition: Restore support for v2 stories.json [#21354](https://github.com/storybooks/storybook/pull/21354) ## 7.0.0-beta.63 (March 9, 2023) #### Bug Fixes -- Story Index: Fix storySort parsing for parameters variable [#21481](https://github.com/storybooks/storybook/pull/21481) -- React/Vite: Add some missing types [#21449](https://github.com/storybooks/storybook/pull/21449) -- Docs: Cleanup with Promise instead of setTimeout [#21476](https://github.com/storybooks/storybook/pull/21476) -- Docs: Re-render MDX files when you fix a thrown error [#21454](https://github.com/storybooks/storybook/pull/21454) -- CLI: Fix mdx-to-csf codemod blocks imports [#21448](https://github.com/storybooks/storybook/pull/21448) +- Story Index: Fix storySort parsing for parameters variable [#21481](https://github.com/storybooks/storybook/pull/21481) +- React/Vite: Add some missing types [#21449](https://github.com/storybooks/storybook/pull/21449) +- Docs: Cleanup with Promise instead of setTimeout [#21476](https://github.com/storybooks/storybook/pull/21476) +- Docs: Re-render MDX files when you fix a thrown error [#21454](https://github.com/storybooks/storybook/pull/21454) +- CLI: Fix mdx-to-csf codemod blocks imports [#21448](https://github.com/storybooks/storybook/pull/21448) #### Maintenance -- CLI: Copy tweaks for automigrations [#21475](https://github.com/storybooks/storybook/pull/21475) -- CLI: Warn the user when stories glob does not match any file [#21392](https://github.com/storybooks/storybook/pull/21392) -- Docs: Use `Of` type in `useOf` argument [#21442](https://github.com/storybooks/storybook/pull/21442) -- Telemetry: Is interactive shell [#21436](https://github.com/storybooks/storybook/pull/21436) +- CLI: Copy tweaks for automigrations [#21475](https://github.com/storybooks/storybook/pull/21475) +- CLI: Warn the user when stories glob does not match any file [#21392](https://github.com/storybooks/storybook/pull/21392) +- Docs: Use `Of` type in `useOf` argument [#21442](https://github.com/storybooks/storybook/pull/21442) +- Telemetry: Is interactive shell [#21436](https://github.com/storybooks/storybook/pull/21436) ## 7.0.0-beta.62 (March 6, 2023) #### Bug Fixes -- Vite: Add react docgen types [#21338](https://github.com/storybooks/storybook/pull/21338) -- Core: Print errors in `withTelemetry` before prompting [#21407](https://github.com/storybooks/storybook/pull/21407) -- Add Angular Builder Codemods [#21409](https://github.com/storybooks/storybook/pull/21409) -- Docs: Use async import rather than require in docs [#21402](https://github.com/storybooks/storybook/pull/21402) -- Docs: Don't warn if we find the same entry twice [#21403](https://github.com/storybooks/storybook/pull/21403) -- Telemetry: Ensure we report errors even when unexpected things happen [#21416](https://github.com/storybooks/storybook/pull/21416) -- CLI: Fix versions.ts to install latest prerelease packages [#21418](https://github.com/storybooks/storybook/pull/21418) -- Core: Remove pointless `module.hot.decline()` in addons [#21421](https://github.com/storybooks/storybook/pull/21421) -- Docs: Allow ArgTable usage unattached [#21371](https://github.com/storybooks/storybook/pull/21371) +- Vite: Add react docgen types [#21338](https://github.com/storybooks/storybook/pull/21338) +- Core: Print errors in `withTelemetry` before prompting [#21407](https://github.com/storybooks/storybook/pull/21407) +- Add Angular Builder Codemods [#21409](https://github.com/storybooks/storybook/pull/21409) +- Docs: Use async import rather than require in docs [#21402](https://github.com/storybooks/storybook/pull/21402) +- Docs: Don't warn if we find the same entry twice [#21403](https://github.com/storybooks/storybook/pull/21403) +- Telemetry: Ensure we report errors even when unexpected things happen [#21416](https://github.com/storybooks/storybook/pull/21416) +- CLI: Fix versions.ts to install latest prerelease packages [#21418](https://github.com/storybooks/storybook/pull/21418) +- Core: Remove pointless `module.hot.decline()` in addons [#21421](https://github.com/storybooks/storybook/pull/21421) +- Docs: Allow ArgTable usage unattached [#21371](https://github.com/storybooks/storybook/pull/21371) #### Maintenance -- Addon-docs: Polish styling for 7.0 [#21255](https://github.com/storybooks/storybook/pull/21255) +- Addon-docs: Polish styling for 7.0 [#21255](https://github.com/storybooks/storybook/pull/21255) ## 7.0.0-beta.61 (March 4, 2023) #### Features -- Docs: Show MDX errors using our error overlay [#21369](https://github.com/storybooks/storybook/pull/21369) +- Docs: Show MDX errors using our error overlay [#21369](https://github.com/storybooks/storybook/pull/21369) #### Bug Fixes -- Core: Remove state deprecation warnings by default [#21367](https://github.com/storybooks/storybook/pull/21367) -- Core: Fix default export storySort handling [#21389](https://github.com/storybooks/storybook/pull/21389) -- Vue3: Add slot TS types [#21359](https://github.com/storybooks/storybook/pull/21359) -- Docs: Fix issue with referencing non-story files with names similar or equal to docs files [#21348](https://github.com/storybooks/storybook/pull/21348) +- Core: Remove state deprecation warnings by default [#21367](https://github.com/storybooks/storybook/pull/21367) +- Core: Fix default export storySort handling [#21389](https://github.com/storybooks/storybook/pull/21389) +- Vue3: Add slot TS types [#21359](https://github.com/storybooks/storybook/pull/21359) +- Docs: Fix issue with referencing non-story files with names similar or equal to docs files [#21348](https://github.com/storybooks/storybook/pull/21348) #### Maintenance -- Docs: Update invalid `` error to be more helpful. [#21365](https://github.com/storybooks/storybook/pull/21365) +- Docs: Update invalid `` error to be more helpful. [#21365](https://github.com/storybooks/storybook/pull/21365) #### Dependency Upgrades -- Upgrade react-docgen-typescript-plugin for TS4.8 [#21380](https://github.com/storybooks/storybook/pull/21380) +- Upgrade react-docgen-typescript-plugin for TS4.8 [#21380](https://github.com/storybooks/storybook/pull/21380) ## 7.0.0-beta.60 (March 3, 2023) #### Bug Fixes -- Core: Fix storySort parsing in preview.js with default export [#21353](https://github.com/storybooks/storybook/pull/21353) -- CLI: Remove the workspace root flag from the install command for yarn2 [#21356](https://github.com/storybooks/storybook/pull/21356) -- Svelte/Vite: Prevent crash when no svelte.config file [#21339](https://github.com/storybooks/storybook/pull/21339) -- Use stable Next.js v13.2.0 next/font [#21247](https://github.com/storybooks/storybook/pull/21247) +- Core: Fix storySort parsing in preview.js with default export [#21353](https://github.com/storybooks/storybook/pull/21353) +- CLI: Remove the workspace root flag from the install command for yarn2 [#21356](https://github.com/storybooks/storybook/pull/21356) +- Svelte/Vite: Prevent crash when no svelte.config file [#21339](https://github.com/storybooks/storybook/pull/21339) +- Use stable Next.js v13.2.0 next/font [#21247](https://github.com/storybooks/storybook/pull/21247) #### Dependency Upgrades -- Bump version of get-tarball [#21355](https://github.com/storybooks/storybook/pull/21355) +- Bump version of get-tarball [#21355](https://github.com/storybooks/storybook/pull/21355) ## 7.0.0-beta.59 (March 2, 2023) #### Bug Fixes -- CLI: Improve yarn/pnpm workspaces support for adding dependencies in CLI [#21331](https://github.com/storybooks/storybook/pull/21331) -- Core: Fix `manager.js` ignored when `sideEffects:false` in `package.json` [#21335](https://github.com/storybooks/storybook/pull/21335) -- Vite: Fix glob path creation for Windows [#21305](https://github.com/storybookjs/storybook/pull/21305) +- CLI: Improve yarn/pnpm workspaces support for adding dependencies in CLI [#21331](https://github.com/storybooks/storybook/pull/21331) +- Core: Fix `manager.js` ignored when `sideEffects:false` in `package.json` [#21335](https://github.com/storybooks/storybook/pull/21335) +- Vite: Fix glob path creation for Windows [#21305](https://github.com/storybookjs/storybook/pull/21305) ## 7.0.0-beta.58 (March 1, 2023) #### Bug Fixes -- UI: Fix enableShortcuts, exclude it from being persisted [#21291](https://github.com/storybooks/storybook/pull/21291) -- NextJS: Fix type references in Next.js >= 13.2.0 [#21304](https://github.com/storybooks/storybook/pull/21304) -- CLI: Fix formatting of autodocs-true automigration [#21314](https://github.com/storybooks/storybook/pull/21314) -- Docs: Remove warning when browsing away in React [#21214](https://github.com/storybooks/storybook/pull/21214) +- UI: Fix enableShortcuts, exclude it from being persisted [#21291](https://github.com/storybooks/storybook/pull/21291) +- NextJS: Fix type references in Next.js >= 13.2.0 [#21304](https://github.com/storybooks/storybook/pull/21304) +- CLI: Fix formatting of autodocs-true automigration [#21314](https://github.com/storybooks/storybook/pull/21314) +- Docs: Remove warning when browsing away in React [#21214](https://github.com/storybooks/storybook/pull/21214) #### Maintenance -- CLI: Fix security report around `download-tarball` package [#21201](https://github.com/storybooks/storybook/pull/21201) -- CSF-Tools/Codemods: Un-bundle babel, limit semver range of babel packages [#21326](https://github.com/storybooks/storybook/pull/21326) +- CLI: Fix security report around `download-tarball` package [#21201](https://github.com/storybooks/storybook/pull/21201) +- CSF-Tools/Codemods: Un-bundle babel, limit semver range of babel packages [#21326](https://github.com/storybooks/storybook/pull/21326) ## 7.0.0-beta.57 (March 1, 2023) #### Bug Fixes -- CSF-tools/Codemods: Pre-bundle all babel related packages [#21301](https://github.com/storybooks/storybook/pull/21301) -- UI: Fix height adjustment in ZoomElement in Safari [#21174](https://github.com/storybooks/storybook/pull/21174) +- CSF-tools/Codemods: Pre-bundle all babel related packages [#21301](https://github.com/storybooks/storybook/pull/21301) +- UI: Fix height adjustment in ZoomElement in Safari [#21174](https://github.com/storybooks/storybook/pull/21174) ## 7.0.0-beta.56 (March 1, 2023) #### Bug Fixes -- Core: Improve framework field validation [#21299](https://github.com/storybooks/storybook/pull/21299) -- SvelteKit: Only disable SSR when building, not serving [#21290](https://github.com/storybooks/storybook/pull/21290) -- CLI: Account for legacy framework values in automigration [#21184](https://github.com/storybooks/storybook/pull/21184) -- TypeScript: Add `env` type to BuilderOptions [#21173](https://github.com/storybooks/storybook/pull/21173) -- Core: Reverse order of project decorators [#21182](https://github.com/storybooks/storybook/pull/21182) +- Core: Improve framework field validation [#21299](https://github.com/storybooks/storybook/pull/21299) +- SvelteKit: Only disable SSR when building, not serving [#21290](https://github.com/storybooks/storybook/pull/21290) +- CLI: Account for legacy framework values in automigration [#21184](https://github.com/storybooks/storybook/pull/21184) +- TypeScript: Add `env` type to BuilderOptions [#21173](https://github.com/storybooks/storybook/pull/21173) +- Core: Reverse order of project decorators [#21182](https://github.com/storybooks/storybook/pull/21182) #### Maintenance -- React-webpack: Fix dependencies to remove peerDep warnings [#21278](https://github.com/storybooks/storybook/pull/21278) +- React-webpack: Fix dependencies to remove peerDep warnings [#21278](https://github.com/storybooks/storybook/pull/21278) #### Build -- Build: Improve sandbox task logs [#21296](https://github.com/storybooks/storybook/pull/21296) +- Build: Improve sandbox task logs [#21296](https://github.com/storybooks/storybook/pull/21296) ## 7.0.0-beta.55 (February 27, 2023) #### Bug Fixes -- NextJS: Fix next/babel preset [#21104](https://github.com/storybooks/storybook/pull/21104) -- CLI: Pass config dir from upgrade to automigration [#21270](https://github.com/storybooks/storybook/pull/21270) -- Docs: Show errors when stories throw in docs [#21212](https://github.com/storybooks/storybook/pull/21212) -- CLI: Fix performance regression of storybook dev [#21269](https://github.com/storybooks/storybook/pull/21269) +- NextJS: Fix next/babel preset [#21104](https://github.com/storybooks/storybook/pull/21104) +- CLI: Pass config dir from upgrade to automigration [#21270](https://github.com/storybooks/storybook/pull/21270) +- Docs: Show errors when stories throw in docs [#21212](https://github.com/storybooks/storybook/pull/21212) +- CLI: Fix performance regression of storybook dev [#21269](https://github.com/storybooks/storybook/pull/21269) #### Build -- Build: Remove jest_workaround swc package by adding extra jest.mock functions [#21249](https://github.com/storybooks/storybook/pull/21249) -- Build: Upgrade playwright & re-enable bench [#21241](https://github.com/storybooks/storybook/pull/21241) +- Build: Remove jest_workaround swc package by adding extra jest.mock functions [#21249](https://github.com/storybooks/storybook/pull/21249) +- Build: Upgrade playwright & re-enable bench [#21241](https://github.com/storybooks/storybook/pull/21241) ## 7.0.0-beta.54 (February 24, 2023) #### Features -- Core: Add `preview.js` default export support [#21227](https://github.com/storybooks/storybook/pull/21227) -- TypeScript: Add preview type and update CLI template [#21205](https://github.com/storybooks/storybook/pull/21205) -- Autodocs: Hide Stories block when only primary story exists [#21178](https://github.com/storybooks/storybook/pull/21178) -- CLI: Add automigration for GFM in MDX [#21186](https://github.com/storybooks/storybook/pull/21186) +- Core: Add `preview.js` default export support [#21227](https://github.com/storybooks/storybook/pull/21227) +- TypeScript: Add preview type and update CLI template [#21205](https://github.com/storybooks/storybook/pull/21205) +- Autodocs: Hide Stories block when only primary story exists [#21178](https://github.com/storybooks/storybook/pull/21178) +- CLI: Add automigration for GFM in MDX [#21186](https://github.com/storybooks/storybook/pull/21186) #### Bug Fixes -- Docs: Remove `react-dom@18` warning in docs [#21197](https://github.com/storybooks/storybook/pull/21197) -- mdx-to-csf codemod: Fix wrong export referenced in generated mdx [#21226](https://github.com/storybooks/storybook/pull/21226) -- Preact: Enable ts plugin by default [#21225](https://github.com/storybooks/storybook/pull/21225) -- pnpm: Fix run command for pnpm API [#21165](https://github.com/storybooks/storybook/pull/21165) -- Angular: Properly destroy component when switching to another Story [#21219](https://github.com/storybooks/storybook/pull/21219) -- CLI: Fix SvelteKit automigration package name [#21210](https://github.com/storybooks/storybook/pull/21210) -- Angular: Initialize .storybook without references to root in sub projects [#21202](https://github.com/storybooks/storybook/pull/21202) +- Docs: Remove `react-dom@18` warning in docs [#21197](https://github.com/storybooks/storybook/pull/21197) +- mdx-to-csf codemod: Fix wrong export referenced in generated mdx [#21226](https://github.com/storybooks/storybook/pull/21226) +- Preact: Enable ts plugin by default [#21225](https://github.com/storybooks/storybook/pull/21225) +- pnpm: Fix run command for pnpm API [#21165](https://github.com/storybooks/storybook/pull/21165) +- Angular: Properly destroy component when switching to another Story [#21219](https://github.com/storybooks/storybook/pull/21219) +- CLI: Fix SvelteKit automigration package name [#21210](https://github.com/storybooks/storybook/pull/21210) +- Angular: Initialize .storybook without references to root in sub projects [#21202](https://github.com/storybooks/storybook/pull/21202) #### Maintenance -- CLI: Only run useful automigrations on init [#21203](https://github.com/storybooks/storybook/pull/21203) +- CLI: Only run useful automigrations on init [#21203](https://github.com/storybooks/storybook/pull/21203) #### Build -- Build: Disable broken cra-bench [#21238](https://github.com/storybooks/storybook/pull/21238) -- Revert "Remove vue-cli as sandbox template is currently busted" [#21237](https://github.com/storybooks/storybook/pull/21237) -- Build: Add mixed exports test case to composeConfigs [#21230](https://github.com/storybooks/storybook/pull/21230) -- Build: pass debug option to sandbox generate task [#21200](https://github.com/storybooks/storybook/pull/21200) -- Build: add @storybook/bench [#21199](https://github.com/storybooks/storybook/pull/21199) -- Build: Fix Playwright to v1.30.0 [#21194](https://github.com/storybooks/storybook/pull/21194) +- Build: Disable broken cra-bench [#21238](https://github.com/storybooks/storybook/pull/21238) +- Revert "Remove vue-cli as sandbox template is currently busted" [#21237](https://github.com/storybooks/storybook/pull/21237) +- Build: Add mixed exports test case to composeConfigs [#21230](https://github.com/storybooks/storybook/pull/21230) +- Build: pass debug option to sandbox generate task [#21200](https://github.com/storybooks/storybook/pull/21200) +- Build: add @storybook/bench [#21199](https://github.com/storybooks/storybook/pull/21199) +- Build: Fix Playwright to v1.30.0 [#21194](https://github.com/storybooks/storybook/pull/21194) ## 7.0.0-beta.53 (February 22, 2023) #### Features -- Codemod: Convert `.stories.mdx` to MDX and CSF [#21073](https://github.com/storybooks/storybook/pull/21073) +- Codemod: Convert `.stories.mdx` to MDX and CSF [#21073](https://github.com/storybooks/storybook/pull/21073) #### Bug Fixes -- Csf Tools: Fix overriding scalar named export values [#21190](https://github.com/storybooks/storybook/pull/21190) -- Csf Tools: Support satisfies and as TS operator with module.exports [#21188](https://github.com/storybooks/storybook/pull/21188) -- Core: try harder to resolve `.mjs` files for the browser entries [#21161](https://github.com/storybooks/storybook/pull/21161) -- CLI: Fix jscodeshift error: env: node\r: No such file or directory [#21180](https://github.com/storybooks/storybook/pull/21180) -- Angular: Fix NG0800 error [#21181](https://github.com/storybooks/storybook/pull/21181) -- Addon-docs: Fix style bleeding [#21150](https://github.com/storybooks/storybook/pull/21150) -- CLI: Improve how automigrations read `main.js` [#21168](https://github.com/storybooks/storybook/pull/21168) +- Csf Tools: Fix overriding scalar named export values [#21190](https://github.com/storybooks/storybook/pull/21190) +- Csf Tools: Support satisfies and as TS operator with module.exports [#21188](https://github.com/storybooks/storybook/pull/21188) +- Core: try harder to resolve `.mjs` files for the browser entries [#21161](https://github.com/storybooks/storybook/pull/21161) +- CLI: Fix jscodeshift error: env: node\r: No such file or directory [#21180](https://github.com/storybooks/storybook/pull/21180) +- Angular: Fix NG0800 error [#21181](https://github.com/storybooks/storybook/pull/21181) +- Addon-docs: Fix style bleeding [#21150](https://github.com/storybooks/storybook/pull/21150) +- CLI: Improve how automigrations read `main.js` [#21168](https://github.com/storybooks/storybook/pull/21168) #### Build -- Build: Add check step to `ci:daily` workflow [#21169](https://github.com/storybooks/storybook/pull/21169) +- Build: Add check step to `ci:daily` workflow [#21169](https://github.com/storybooks/storybook/pull/21169) ## 7.0.0-beta.52 (February 21, 2023) #### Features -- Core: Coalesce multiple indexing errors into one [#21114](https://github.com/storybooks/storybook/pull/21114) -- Core: Don't crash when there are errors indexing [#21112](https://github.com/storybooks/storybook/pull/21112) +- Core: Coalesce multiple indexing errors into one [#21114](https://github.com/storybooks/storybook/pull/21114) +- Core: Don't crash when there are errors indexing [#21112](https://github.com/storybooks/storybook/pull/21112) #### Bug Fixes -- CLI: Fix CRA init, ensure the new version of the preset [#21166](https://github.com/storybooks/storybook/pull/21166) -- Angular: Fix 'isStandalone' function not available error [#21167](https://github.com/storybooks/storybook/pull/21167) -- Angular: Fix constructor dependencies [#21059](https://github.com/storybooks/storybook/pull/21059) -- NextJS: Add missing dependencies to fix pnpm [#21162](https://github.com/storybooks/storybook/pull/21162) +- CLI: Fix CRA init, ensure the new version of the preset [#21166](https://github.com/storybooks/storybook/pull/21166) +- Angular: Fix 'isStandalone' function not available error [#21167](https://github.com/storybooks/storybook/pull/21167) +- Angular: Fix constructor dependencies [#21059](https://github.com/storybooks/storybook/pull/21059) +- NextJS: Add missing dependencies to fix pnpm [#21162](https://github.com/storybooks/storybook/pull/21162) ## 7.0.0-beta.51 (February 20, 2023) #### Features -- CLI: Improve monorepo support in `automigrate` and revamp framework-related migrations [#20647](https://github.com/storybooks/storybook/pull/20647) +- CLI: Improve monorepo support in `automigrate` and revamp framework-related migrations [#20647](https://github.com/storybooks/storybook/pull/20647) #### Bug Fixes -- UI: Correctly detect Safari in browser supports CSS Zoom [#21163](https://github.com/storybooks/storybook/pull/21163) -- Web-components: Fix StorybookConfig of webcomponents-webpack5 [#21144](https://github.com/storybooks/storybook/pull/21144) -- Storysource: Fallback to the `docs.source.originalSource` parameter [#21159](https://github.com/storybooks/storybook/pull/21159) -- UI: Fix skip to canvas link style [#21021](https://github.com/storybooks/storybook/pull/21021) -- Vue2: Fix events to use bracket notation [#20754](https://github.com/storybooks/storybook/pull/20754) +- UI: Correctly detect Safari in browser supports CSS Zoom [#21163](https://github.com/storybooks/storybook/pull/21163) +- Web-components: Fix StorybookConfig of webcomponents-webpack5 [#21144](https://github.com/storybooks/storybook/pull/21144) +- Storysource: Fallback to the `docs.source.originalSource` parameter [#21159](https://github.com/storybooks/storybook/pull/21159) +- UI: Fix skip to canvas link style [#21021](https://github.com/storybooks/storybook/pull/21021) +- Vue2: Fix events to use bracket notation [#20754](https://github.com/storybooks/storybook/pull/20754) ### Maintenance -- Maintenance: Fix type errors on automigrate `check` step [#21164](https://github.com/storybooks/storybook/pull/21164) -- Core: Rename `framework` parameter to `renderer` [#21108](https://github.com/storybooks/storybook/pull/21108) -- Docs: Remove `DocsOptions.disable` [#21098](https://github.com/storybooks/storybook/pull/21098) +- Maintenance: Fix type errors on automigrate `check` step [#21164](https://github.com/storybooks/storybook/pull/21164) +- Core: Rename `framework` parameter to `renderer` [#21108](https://github.com/storybooks/storybook/pull/21108) +- Docs: Remove `DocsOptions.disable` [#21098](https://github.com/storybooks/storybook/pull/21098) ## 7.0.0-beta.50 (February 18, 2023) #### Bug Fixes -- Revert upgrade to react-docgen-typescript-plugin [#21147](https://github.com/storybooks/storybook/pull/21147) -- Revert Vite fix storysource addon support [#21146](https://github.com/storybooks/storybook/pull/21146) -- UI: Fix Canvas zoom height [#21138](https://github.com/storybooks/storybook/pull/21138) -- Addon-interaction: Fix tooltips don't disappear correctly [#21105](https://github.com/storybooks/storybook/pull/21105) -- UI: Fix CSS zoom in Safari [#21069](https://github.com/storybooks/storybook/pull/21069) +- Revert upgrade to react-docgen-typescript-plugin [#21147](https://github.com/storybooks/storybook/pull/21147) +- Revert Vite fix storysource addon support [#21146](https://github.com/storybooks/storybook/pull/21146) +- UI: Fix Canvas zoom height [#21138](https://github.com/storybooks/storybook/pull/21138) +- Addon-interaction: Fix tooltips don't disappear correctly [#21105](https://github.com/storybooks/storybook/pull/21105) +- UI: Fix CSS zoom in Safari [#21069](https://github.com/storybooks/storybook/pull/21069) #### Maintenance -- Storysource: Rename "Story" tab to "Code" [#21132](https://github.com/storybooks/storybook/pull/21132) -- TypeScript: Fix `@ts-expect-error` strict types [#20981](https://github.com/storybooks/storybook/pull/20981) -- UI: Update border color to match Design System proposal [#20660](https://github.com/storybooks/storybook/pull/20660) -- CLI: Don't render issue template reproduction section with shell [#21128](https://github.com/storybooks/storybook/pull/21128) +- Storysource: Rename "Story" tab to "Code" [#21132](https://github.com/storybooks/storybook/pull/21132) +- TypeScript: Fix `@ts-expect-error` strict types [#20981](https://github.com/storybooks/storybook/pull/20981) +- UI: Update border color to match Design System proposal [#20660](https://github.com/storybooks/storybook/pull/20660) +- CLI: Don't render issue template reproduction section with shell [#21128](https://github.com/storybooks/storybook/pull/21128) #### Dependency Upgrades -- Vite: Update dep range for @storybook/mdx1-csf [#21123](https://github.com/storybooks/storybook/pull/21123) +- Vite: Update dep range for @storybook/mdx1-csf [#21123](https://github.com/storybooks/storybook/pull/21123) ## 7.0.0-beta.49 (February 17, 2023) #### Bug Fixes -- NextJS: Fix static dirs lookup [#21119](https://github.com/storybooks/storybook/pull/21119) -- Svelte/Vue: Use Vite by default [#21002](https://github.com/storybooks/storybook/pull/21002) -- Storyshots: Fix issue with default export in main.js [#21097](https://github.com/storybooks/storybook/pull/21097) -- Args: Fix boolean arg types parsing and encoding [#21102](https://github.com/storybooks/storybook/pull/21102) +- NextJS: Fix static dirs lookup [#21119](https://github.com/storybooks/storybook/pull/21119) +- Svelte/Vue: Use Vite by default [#21002](https://github.com/storybooks/storybook/pull/21002) +- Storyshots: Fix issue with default export in main.js [#21097](https://github.com/storybooks/storybook/pull/21097) +- Args: Fix boolean arg types parsing and encoding [#21102](https://github.com/storybooks/storybook/pull/21102) #### Maintenance -- CRA: Add CRA preset to monorepo [#21107](https://github.com/storybooks/storybook/pull/21107) -- Web-components: Drop lit1 support [#21106](https://github.com/storybooks/storybook/pull/21106) -- NextJS: Fix some dependency warnings [#21117](https://github.com/storybooks/storybook/pull/21117) -- Types: Remove unnecessary dependencies [#20993](https://github.com/storybooks/storybook/pull/20993) +- CRA: Add CRA preset to monorepo [#21107](https://github.com/storybooks/storybook/pull/21107) +- Web-components: Drop lit1 support [#21106](https://github.com/storybooks/storybook/pull/21106) +- NextJS: Fix some dependency warnings [#21117](https://github.com/storybooks/storybook/pull/21117) +- Types: Remove unnecessary dependencies [#20993](https://github.com/storybooks/storybook/pull/20993) #### Build -- Build: regen lockfiles [#21126](https://github.com/storybooks/storybook/pull/21126) +- Build: regen lockfiles [#21126](https://github.com/storybooks/storybook/pull/21126) ## 7.0.0-beta.48 (February 15, 2023) #### Features -- Interactions: Add debugger to the addon panel [#21088](https://github.com/storybooks/storybook/pull/21088) +- Interactions: Add debugger to the addon panel [#21088](https://github.com/storybooks/storybook/pull/21088) #### Bug Fixes -- CLI: Fix pnp support & add auto-detection [#21046](https://github.com/storybooks/storybook/pull/21046) -- Vite: Fix storysource addon support [#21096](https://github.com/storybooks/storybook/pull/21096) -- NextJS: Fix dynamic source snippets [#21029](https://github.com/storybooks/storybook/pull/21029) -- Addon-docs: Fix source snippets for duplicate source blocks [#20915](https://github.com/storybooks/storybook/pull/20915) +- CLI: Fix pnp support & add auto-detection [#21046](https://github.com/storybooks/storybook/pull/21046) +- Vite: Fix storysource addon support [#21096](https://github.com/storybooks/storybook/pull/21096) +- NextJS: Fix dynamic source snippets [#21029](https://github.com/storybooks/storybook/pull/21029) +- Addon-docs: Fix source snippets for duplicate source blocks [#20915](https://github.com/storybooks/storybook/pull/20915) #### Maintenance -- TypeScript: Fix some unsound type check errors [#21081](https://github.com/storybooks/storybook/pull/21081) +- TypeScript: Fix some unsound type check errors [#21081](https://github.com/storybooks/storybook/pull/21081) #### Build -- Build: Fix yarn build command [#21099](https://github.com/storybooks/storybook/pull/21099) -- Tech: upgrades [#21086](https://github.com/storybooks/storybook/pull/21086) +- Build: Fix yarn build command [#21099](https://github.com/storybooks/storybook/pull/21099) +- Tech: upgrades [#21086](https://github.com/storybooks/storybook/pull/21086) #### Dependency Upgrades -- Remove unused dependencies from core-common [#20994](https://github.com/storybooks/storybook/pull/20994) -- Upgrade react-docgen-typescript-plugin [#21095](https://github.com/storybooks/storybook/pull/21095) +- Remove unused dependencies from core-common [#20994](https://github.com/storybooks/storybook/pull/20994) +- Upgrade react-docgen-typescript-plugin [#21095](https://github.com/storybooks/storybook/pull/21095) ## 7.0.0-beta.47 (February 14, 2023) #### Features -- Vite: Support legacyMdx1 fallback flag [#20823](https://github.com/storybooks/storybook/pull/20823) -- CLI: Automigration to update `mdx` stories config [#21035](https://github.com/storybooks/storybook/pull/21035) +- Vite: Support legacyMdx1 fallback flag [#20823](https://github.com/storybooks/storybook/pull/20823) +- CLI: Automigration to update `mdx` stories config [#21035](https://github.com/storybooks/storybook/pull/21035) #### Bug Fixes -- Vue3: Fix CSF2 support with decorators [#20995](https://github.com/storybooks/storybook/pull/20995) -- CLI: Do not use modern TS assets in legacy TS projects [#20458](https://github.com/storybooks/storybook/pull/20458) -- CLI: Fix conflicts in static dirs [#21064](https://github.com/storybooks/storybook/pull/21064) +- Vue3: Fix CSF2 support with decorators [#20995](https://github.com/storybooks/storybook/pull/20995) +- CLI: Do not use modern TS assets in legacy TS projects [#20458](https://github.com/storybooks/storybook/pull/20458) +- CLI: Fix conflicts in static dirs [#21064](https://github.com/storybooks/storybook/pull/21064) #### Maintenance -- CLI: Update init script for react-native v6.5 [#20719](https://github.com/storybooks/storybook/pull/20719) -- CLI: Re-enable vue-vite in new-frameworks automigration [#20970](https://github.com/storybooks/storybook/pull/20970) +- CLI: Update init script for react-native v6.5 [#20719](https://github.com/storybooks/storybook/pull/20719) +- CLI: Re-enable vue-vite in new-frameworks automigration [#20970](https://github.com/storybooks/storybook/pull/20970) ## 7.0.0-beta.46 (February 10, 2023) #### Features -- CLI: Add Solid integration [#20991](https://github.com/storybooks/storybook/pull/20991) -- Viewport: Add `defaultOrientation` parameter [#21048](https://github.com/storybooks/storybook/pull/21048) +- CLI: Add Solid integration [#20991](https://github.com/storybooks/storybook/pull/20991) +- Viewport: Add `defaultOrientation` parameter [#21048](https://github.com/storybooks/storybook/pull/21048) #### Bug Fixes -- CLI: Account for pnp when creating main.js in `storybook init` [#21049](https://github.com/storybooks/storybook/pull/21049) -- Core: Detect mdx2 errors and provide guidance to fix them [#20917](https://github.com/storybooks/storybook/pull/20917) -- Angular: provideHttpClient when HttpClientModule is present in the imports array [#21028](https://github.com/storybooks/storybook/pull/21028) +- CLI: Account for pnp when creating main.js in `storybook init` [#21049](https://github.com/storybooks/storybook/pull/21049) +- Core: Detect mdx2 errors and provide guidance to fix them [#20917](https://github.com/storybooks/storybook/pull/20917) +- Angular: provideHttpClient when HttpClientModule is present in the imports array [#21028](https://github.com/storybooks/storybook/pull/21028) #### Build -- Build: Allow `stories` folder to be served by vite sandboxes [#21022](https://github.com/storybooks/storybook/pull/21022) +- Build: Allow `stories` folder to be served by vite sandboxes [#21022](https://github.com/storybooks/storybook/pull/21022) ## 7.0.0-beta.45 (February 9, 2023) #### Features -- UI: Menu design upgrade [#20898](https://github.com/storybooks/storybook/pull/20898) +- UI: Menu design upgrade [#20898](https://github.com/storybooks/storybook/pull/20898) #### Bug Fixes -- Vite: Use posix paths for glob [#21013](https://github.com/storybooks/storybook/pull/21013) +- Vite: Use posix paths for glob [#21013](https://github.com/storybooks/storybook/pull/21013) #### Maintenance -- Telemetry: Hash error messages [#20990](https://github.com/storybooks/storybook/pull/20990) +- Telemetry: Hash error messages [#20990](https://github.com/storybooks/storybook/pull/20990) ## 7.0.0-beta.44 (February 7, 2023) #### Features -- Feature: Add woff2 support for builder-manager [#20962](https://github.com/storybooks/storybook/pull/20962) -- Feature: Add super early node version check [#20964](https://github.com/storybooks/storybook/pull/20964) -- Csf-tools: Add `satisfies` support to ConfigFile [#20936](https://github.com/storybooks/storybook/pull/20936) +- Feature: Add woff2 support for builder-manager [#20962](https://github.com/storybooks/storybook/pull/20962) +- Feature: Add super early node version check [#20964](https://github.com/storybooks/storybook/pull/20964) +- Csf-tools: Add `satisfies` support to ConfigFile [#20936](https://github.com/storybooks/storybook/pull/20936) #### Bug Fixes -- Angular: Fix changeDetectorRef should be defined [#20984](https://github.com/storybooks/storybook/pull/20984) -- Angular: Fix standalone components to be included in the imports array [#20983](https://github.com/storybooks/storybook/pull/20983) -- CLI: Fix Introduction MDX for Next.js and Typescript [#20798](https://github.com/storybooks/storybook/pull/20798) -- CLI: Fix detection of JS projects with type checking [#20944](https://github.com/storybooks/storybook/pull/20944) -- UI: Fix fonts missing/warnings [#20957](https://github.com/storybooks/storybook/pull/20957) -- Core: Undo AST main.js check in validateConfigFile [#20952](https://github.com/storybooks/storybook/pull/20952) -- Csf-tools: Fix error handling for storySort variable references [#20930](https://github.com/storybooks/storybook/pull/20930) +- Angular: Fix changeDetectorRef should be defined [#20984](https://github.com/storybooks/storybook/pull/20984) +- Angular: Fix standalone components to be included in the imports array [#20983](https://github.com/storybooks/storybook/pull/20983) +- CLI: Fix Introduction MDX for Next.js and Typescript [#20798](https://github.com/storybooks/storybook/pull/20798) +- CLI: Fix detection of JS projects with type checking [#20944](https://github.com/storybooks/storybook/pull/20944) +- UI: Fix fonts missing/warnings [#20957](https://github.com/storybooks/storybook/pull/20957) +- Core: Undo AST main.js check in validateConfigFile [#20952](https://github.com/storybooks/storybook/pull/20952) +- Csf-tools: Fix error handling for storySort variable references [#20930](https://github.com/storybooks/storybook/pull/20930) #### Maintenance -- Core: Fix missing dependency for core-server [#20989](https://github.com/storybooks/storybook/pull/20989) -- CLI: Add a default background to newly initialized storybooks [#20982](https://github.com/storybooks/storybook/pull/20982) -- Svelte/Vite: Remove `svelte-options` [#20942](https://github.com/storybooks/storybook/pull/20942) -- Vite: Correctly preserve existing vite envPrefix config [#20918](https://github.com/storybooks/storybook/pull/20918) +- Core: Fix missing dependency for core-server [#20989](https://github.com/storybooks/storybook/pull/20989) +- CLI: Add a default background to newly initialized storybooks [#20982](https://github.com/storybooks/storybook/pull/20982) +- Svelte/Vite: Remove `svelte-options` [#20942](https://github.com/storybooks/storybook/pull/20942) +- Vite: Correctly preserve existing vite envPrefix config [#20918](https://github.com/storybooks/storybook/pull/20918) #### Dependencies -- Deps: Upgrade glob-promise [#20959](https://github.com/storybooks/storybook/pull/20959) -- Deps: Update glob for storyshots [#20954](https://github.com/storybooks/storybook/pull/20954) +- Deps: Upgrade glob-promise [#20959](https://github.com/storybooks/storybook/pull/20959) +- Deps: Update glob for storyshots [#20954](https://github.com/storybooks/storybook/pull/20954) #### Build -- Build: upgrade yarn [#20986](https://github.com/storybooks/storybook/pull/20986) -- Build: add more sandboxes to CI tests [#20892](https://github.com/storybooks/storybook/pull/20892) +- Build: upgrade yarn [#20986](https://github.com/storybooks/storybook/pull/20986) +- Build: add more sandboxes to CI tests [#20892](https://github.com/storybooks/storybook/pull/20892) ## 7.0.0-beta.43 (February 4, 2023) #### Bug Fixes -- Core: Fix globs on windows [#20929](https://github.com/storybooks/storybook/pull/20929) -- Revert addon-docs: update story index generator [#20809](https://github.com/storybooks/storybook/pull/20809) +- Core: Fix globs on windows [#20929](https://github.com/storybooks/storybook/pull/20929) +- Revert addon-docs: update story index generator [#20809](https://github.com/storybooks/storybook/pull/20809) ## 7.0.0-beta.42 (February 4, 2023) #### Features -- CLI: Add type annotations in javascript main config files [#20887](https://github.com/storybooks/storybook/pull/20887) -- UI: Tab Improvements [#20783](https://github.com/storybooks/storybook/pull/20783) +- CLI: Add type annotations in javascript main config files [#20887](https://github.com/storybooks/storybook/pull/20887) +- UI: Tab Improvements [#20783](https://github.com/storybooks/storybook/pull/20783) #### Build -- Build: fix next [#20924](https://github.com/storybooks/storybook/pull/20924) +- Build: fix next [#20924](https://github.com/storybooks/storybook/pull/20924) #### Dependency Upgrades -- Upgrade jscodeshift to 0.14.0 [#20925](https://github.com/storybooks/storybook/pull/20925) -- Upgrade glob to 8.1.0 [#20927](https://github.com/storybooks/storybook/pull/20927) +- Upgrade jscodeshift to 0.14.0 [#20925](https://github.com/storybooks/storybook/pull/20925) +- Upgrade glob to 8.1.0 [#20927](https://github.com/storybooks/storybook/pull/20927) ## 7.0.0-beta.41 (February 3, 2023) #### Features -- UI: Add nunito sans font [#20846](https://github.com/storybooks/storybook/pull/20846) +- UI: Add nunito sans font [#20846](https://github.com/storybooks/storybook/pull/20846) #### Bug Fixes -- Vite/Addon-docs: Fix customization of MDX plugins [#20116](https://github.com/storybooks/storybook/pull/20116) -- Angular: Support NoopAnimationsModule [#20868](https://github.com/storybooks/storybook/pull/20868) -- Core: Fix index error handling [#20906](https://github.com/storybooks/storybook/pull/20906) -- Outline: Fix outline initial state [#20818](https://github.com/storybooks/storybook/pull/20818) +- Vite/Addon-docs: Fix customization of MDX plugins [#20116](https://github.com/storybooks/storybook/pull/20116) +- Angular: Support NoopAnimationsModule [#20868](https://github.com/storybooks/storybook/pull/20868) +- Core: Fix index error handling [#20906](https://github.com/storybooks/storybook/pull/20906) +- Outline: Fix outline initial state [#20818](https://github.com/storybooks/storybook/pull/20818) #### Maintenance -- CLI: Remove the deprecated `--no-manager-cache` flag [#20895](https://github.com/storybooks/storybook/pull/20895) +- CLI: Remove the deprecated `--no-manager-cache` flag [#20895](https://github.com/storybooks/storybook/pull/20895) #### Build -- Build: Change `rootDir` in TS plugin [#20911](https://github.com/storybooks/storybook/pull/20911) -- Build: Improve task log and error messages for event log [#20902](https://github.com/storybooks/storybook/pull/20902) -- Build: minor fixes [#20894](https://github.com/storybooks/storybook/pull/20894) +- Build: Change `rootDir` in TS plugin [#20911](https://github.com/storybooks/storybook/pull/20911) +- Build: Improve task log and error messages for event log [#20902](https://github.com/storybooks/storybook/pull/20902) +- Build: minor fixes [#20894](https://github.com/storybooks/storybook/pull/20894) ## 7.0.0-beta.40 (February 2, 2023) #### Features -- Addo-docs: Turn on autodocs for CSF with attached meta [#20867](https://github.com/storybooks/storybook/pull/20867) +- Addo-docs: Turn on autodocs for CSF with attached meta [#20867](https://github.com/storybooks/storybook/pull/20867) #### Bug Fixes -- Vue3: Fix args losing reactivity when using decorators [#20854](https://github.com/storybooks/storybook/pull/20854) -- Doc Blocks: Fix styling and parameter bugs [#20803](https://github.com/storybooks/storybook/pull/20803) -- Addon-docs: Export controls from doc blocks [#20806](https://github.com/storybooks/storybook/pull/20806) -- Webpack: Support builder options from framework [#20842](https://github.com/storybooks/storybook/pull/20842) +- Vue3: Fix args losing reactivity when using decorators [#20854](https://github.com/storybooks/storybook/pull/20854) +- Doc Blocks: Fix styling and parameter bugs [#20803](https://github.com/storybooks/storybook/pull/20803) +- Addon-docs: Export controls from doc blocks [#20806](https://github.com/storybooks/storybook/pull/20806) +- Webpack: Support builder options from framework [#20842](https://github.com/storybooks/storybook/pull/20842) ## 7.0.0-beta.39 (February 1, 2023) #### Features -- Core: return address of dev server from buildDevStandalone [#20820](https://github.com/storybooks/storybook/pull/20820) -- Addons: Fix env variables not available inside addons [#20834](https://github.com/storybooks/storybook/pull/20834) -- CLI: Add warning when main config does not use default exports [#20802](https://github.com/storybooks/storybook/pull/20802) +- Core: return address of dev server from buildDevStandalone [#20820](https://github.com/storybooks/storybook/pull/20820) +- Addons: Fix env variables not available inside addons [#20834](https://github.com/storybooks/storybook/pull/20834) +- CLI: Add warning when main config does not use default exports [#20802](https://github.com/storybooks/storybook/pull/20802) #### Bug Fixes -- SvelteKit: Disable failing `vite-plugin-sveltekit-guard` [#20870](https://github.com/storybooks/storybook/pull/20870) +- SvelteKit: Disable failing `vite-plugin-sveltekit-guard` [#20870](https://github.com/storybooks/storybook/pull/20870) #### Maintenance -- Core: Remove core-js as a dependency [#20833](https://github.com/storybooks/storybook/pull/20833) +- Core: Remove core-js as a dependency [#20833](https://github.com/storybooks/storybook/pull/20833) #### Build -- Build: cleanup CI config [#20853](https://github.com/storybooks/storybook/pull/20853) -- Change forceReRender story to forceRemount [#20752](https://github.com/storybooks/storybook/pull/20752) +- Build: cleanup CI config [#20853](https://github.com/storybooks/storybook/pull/20853) +- Change forceReRender story to forceRemount [#20752](https://github.com/storybooks/storybook/pull/20752) ## 7.0.0-beta.38 (January 31, 2023) #### Features -- CLI: Generate main config with default exports [#20797](https://github.com/storybooks/storybook/pull/20797) +- CLI: Generate main config with default exports [#20797](https://github.com/storybooks/storybook/pull/20797) #### Bug Fixes -- CLI: Only add dependencies on sb init if they do not exist [#20811](https://github.com/storybooks/storybook/pull/20811) -- CLI: Install prerelease of @storybook/testing-library in CLI starters [#20819](https://github.com/storybooks/storybook/pull/20819) +- CLI: Only add dependencies on sb init if they do not exist [#20811](https://github.com/storybooks/storybook/pull/20811) +- CLI: Install prerelease of @storybook/testing-library in CLI starters [#20819](https://github.com/storybooks/storybook/pull/20819) #### Dependency Upgrades -- Update lazy-universal-dotenv & regen lockfile [#20832](https://github.com/storybooks/storybook/pull/20832) -- Instrumenter: Remove unused core-js dependency [#20831](https://github.com/storybooks/storybook/pull/20831) +- Update lazy-universal-dotenv & regen lockfile [#20832](https://github.com/storybooks/storybook/pull/20832) +- Instrumenter: Remove unused core-js dependency [#20831](https://github.com/storybooks/storybook/pull/20831) ## 7.0.0-beta.37 (January 31, 2023) -Failed publish +Failed publish ## 7.0.0-beta.36 (January 28, 2023) #### Features -- Core: Story context is prepared before for supporting fine grained updates [#20755](https://github.com/storybooks/storybook/pull/20755) -- Addon-docs: New Markdown block [#20796](https://github.com/storybooks/storybook/pull/20796) -- Addon-docs: Disable Markdown transclusion and support ?raw .md files [#20790](https://github.com/storybooks/storybook/pull/20790) +- Core: Story context is prepared before for supporting fine grained updates [#20755](https://github.com/storybooks/storybook/pull/20755) +- Addon-docs: New Markdown block [#20796](https://github.com/storybooks/storybook/pull/20796) +- Addon-docs: Disable Markdown transclusion and support ?raw .md files [#20790](https://github.com/storybooks/storybook/pull/20790) #### Bug Fixes -- Addon-docs: Allow using `` unattached. [#20807](https://github.com/storybooks/storybook/pull/20807) -- Vite: Replace vite-plugin-externals with custom plugin [#20698](https://github.com/storybooks/storybook/pull/20698) -- Sveltekit: Ensure SSR is disabled [#20804](https://github.com/storybooks/storybook/pull/20804) +- Addon-docs: Allow using `` unattached. [#20807](https://github.com/storybooks/storybook/pull/20807) +- Vite: Replace vite-plugin-externals with custom plugin [#20698](https://github.com/storybooks/storybook/pull/20698) +- Sveltekit: Ensure SSR is disabled [#20804](https://github.com/storybooks/storybook/pull/20804) ## 7.0.0-beta.35 (January 27, 2023) #### Bug Fixes -- Storysource: Support CSF3 object exports, co-exist with addon-docs [#20799](https://github.com/storybooks/storybook/pull/20799) -- Vite: Do not pre-bundle @vitejs/plugin-vue [#20787](https://github.com/storybooks/storybook/pull/20787) -- CLI: Fix new-frameworks automigration in angular projects [#20788](https://github.com/storybooks/storybook/pull/20788) +- Storysource: Support CSF3 object exports, co-exist with addon-docs [#20799](https://github.com/storybooks/storybook/pull/20799) +- Vite: Do not pre-bundle @vitejs/plugin-vue [#20787](https://github.com/storybooks/storybook/pull/20787) +- CLI: Fix new-frameworks automigration in angular projects [#20788](https://github.com/storybooks/storybook/pull/20788) ## 7.0.0-beta.34 (January 26, 2023) #### Features -- Addon-docs: Add legacy transitional support for MDX1 [#20747](https://github.com/storybooks/storybook/pull/20747) +- Addon-docs: Add legacy transitional support for MDX1 [#20747](https://github.com/storybooks/storybook/pull/20747) #### Bug Fixes -- CLI: Fix global flag corner case [#20776](https://github.com/storybooks/storybook/pull/20776) -- Csf-tools: Fix ConfigFile string literal property handling [#20785](https://github.com/storybooks/storybook/pull/20785) -- Angular: Ensure docsMode flag has effect [#20711](https://github.com/storybooks/storybook/pull/20711) -- Angular: Use Providers in boostrapApplication option [#20746](https://github.com/storybooks/storybook/pull/20746) -- WebComponents: Fix Button type error [#20722](https://github.com/storybooks/storybook/pull/20722) +- CLI: Fix global flag corner case [#20776](https://github.com/storybooks/storybook/pull/20776) +- Csf-tools: Fix ConfigFile string literal property handling [#20785](https://github.com/storybooks/storybook/pull/20785) +- Angular: Ensure docsMode flag has effect [#20711](https://github.com/storybooks/storybook/pull/20711) +- Angular: Use Providers in boostrapApplication option [#20746](https://github.com/storybooks/storybook/pull/20746) +- WebComponents: Fix Button type error [#20722](https://github.com/storybooks/storybook/pull/20722) #### Build -- Verify consistency of anonymous id [#20781](https://github.com/storybooks/storybook/pull/20781) -- Build: fix playwright unsynced version in CI [#20778](https://github.com/storybooks/storybook/pull/20778) -- Upgrade playwright [#20777](https://github.com/storybooks/storybook/pull/20777) +- Verify consistency of anonymous id [#20781](https://github.com/storybooks/storybook/pull/20781) +- Build: fix playwright unsynced version in CI [#20778](https://github.com/storybooks/storybook/pull/20778) +- Upgrade playwright [#20777](https://github.com/storybooks/storybook/pull/20777) #### Dependency Upgrades -- Deps: Upgrade fs-extra to 11.1.0 [#20772](https://github.com/storybooks/storybook/pull/20772) +- Deps: Upgrade fs-extra to 11.1.0 [#20772](https://github.com/storybooks/storybook/pull/20772) ## 7.0.0-beta.33 (January 24, 2023) #### Features -- Addon-docs: Allow `` to reference the first story [#20765](https://github.com/storybooks/storybook/pull/20765) +- Addon-docs: Allow `` to reference the first story [#20765](https://github.com/storybooks/storybook/pull/20765) #### Bug Fixes -- Angular: Fix issue if BrowserAnimationsModule is imported [#20709](https://github.com/storybooks/storybook/pull/20709) -- Core: Fix issue with inconsistent CSF ordering in sandboxes [#20705](https://github.com/storybooks/storybook/pull/20705) -- Fixed paths in generated main.cjs for the default sandbox on Windows [#20724](https://github.com/storybooks/storybook/pull/20724) -- Blocks: Ignore known blocks with global CSS selector [#20757](https://github.com/storybooks/storybook/pull/20757) +- Angular: Fix issue if BrowserAnimationsModule is imported [#20709](https://github.com/storybooks/storybook/pull/20709) +- Core: Fix issue with inconsistent CSF ordering in sandboxes [#20705](https://github.com/storybooks/storybook/pull/20705) +- Fixed paths in generated main.cjs for the default sandbox on Windows [#20724](https://github.com/storybooks/storybook/pull/20724) +- Blocks: Ignore known blocks with global CSS selector [#20757](https://github.com/storybooks/storybook/pull/20757) #### Maintenance -- Docs: Make reference stories consistent [#20759](https://github.com/storybooks/storybook/pull/20759) -- Blocks: New Canvas API [#20723](https://github.com/storybooks/storybook/pull/20723) +- Docs: Make reference stories consistent [#20759](https://github.com/storybooks/storybook/pull/20759) +- Blocks: New Canvas API [#20723](https://github.com/storybooks/storybook/pull/20723) #### Build -- Fix vue sandbox: remove the lang=ts in a file, that should remain agnostic [#20768](https://github.com/storybooks/storybook/pull/20768) -- Build: do not treat check as a cache-able operation && cleanup [#20762](https://github.com/storybooks/storybook/pull/20762) +- Fix vue sandbox: remove the lang=ts in a file, that should remain agnostic [#20768](https://github.com/storybooks/storybook/pull/20768) +- Build: do not treat check as a cache-able operation && cleanup [#20762](https://github.com/storybooks/storybook/pull/20762) ## 7.0.0-beta.32 (January 24, 2023) #### Features -- CLI: Add init support for qwik projects [#20411](https://github.com/storybooks/storybook/pull/20411) +- CLI: Add init support for qwik projects [#20411](https://github.com/storybooks/storybook/pull/20411) #### Bug Fixes -- Vue3: Fix reactive args + many vue app creation issue [#20712](https://github.com/storybooks/storybook/pull/20712) -- Docs: Allow "declaring" stories with `story={}` [#20702](https://github.com/storybooks/storybook/pull/20702) -- Addon-links: Fix the d.ts file, deprecate LinkTo [#20671](https://github.com/storybooks/storybook/pull/20671) -- CLI: Fix package execution for npm package manager [#20708](https://github.com/storybooks/storybook/pull/20708) +- Vue3: Fix reactive args + many vue app creation issue [#20712](https://github.com/storybooks/storybook/pull/20712) +- Docs: Allow "declaring" stories with `story={}` [#20702](https://github.com/storybooks/storybook/pull/20702) +- Addon-links: Fix the d.ts file, deprecate LinkTo [#20671](https://github.com/storybooks/storybook/pull/20671) +- CLI: Fix package execution for npm package manager [#20708](https://github.com/storybooks/storybook/pull/20708) #### Maintenance -- Upgrade react-popper-tooltip [#20736](https://github.com/storybooks/storybook/pull/20736) -- CLI: Upgrade automigrations to use new safe helpers [#20693](https://github.com/storybooks/storybook/pull/20693) -- Csf-tools: Add helpers to get name from node path [#20691](https://github.com/storybooks/storybook/pull/20691) -- Build: remove preact-webpack5 from babelrc automigration [#20706](https://github.com/storybooks/storybook/pull/20706) +- Upgrade react-popper-tooltip [#20736](https://github.com/storybooks/storybook/pull/20736) +- CLI: Upgrade automigrations to use new safe helpers [#20693](https://github.com/storybooks/storybook/pull/20693) +- Csf-tools: Add helpers to get name from node path [#20691](https://github.com/storybooks/storybook/pull/20691) +- Build: remove preact-webpack5 from babelrc automigration [#20706](https://github.com/storybooks/storybook/pull/20706) #### Build -- Fix windows snapshot [#20707](https://github.com/storybooks/storybook/pull/20707) +- Fix windows snapshot [#20707](https://github.com/storybooks/storybook/pull/20707) ## 7.0.0-beta.31 (January 20, 2023) #### Features -- Docs: Added source stories and updated API [#20603](https://github.com/storybooks/storybook/pull/20603) -- Docs: Implement Controls block [#20683](https://github.com/storybooks/storybook/pull/20683) -- Docs: Created `ArgTypes` component and stories [#20664](https://github.com/storybooks/storybook/pull/20664) -- Docs: Show primary story description and headline in autodocs [#20604](https://github.com/storybooks/storybook/pull/20604) +- Docs: Added source stories and updated API [#20603](https://github.com/storybooks/storybook/pull/20603) +- Docs: Implement Controls block [#20683](https://github.com/storybooks/storybook/pull/20683) +- Docs: Created `ArgTypes` component and stories [#20664](https://github.com/storybooks/storybook/pull/20664) +- Docs: Show primary story description and headline in autodocs [#20604](https://github.com/storybooks/storybook/pull/20604) #### Bug Fixes -- Source-loader: Fix export default variable references [#20688](https://github.com/storybooks/storybook/pull/20688) +- Source-loader: Fix export default variable references [#20688](https://github.com/storybooks/storybook/pull/20688) #### Maintenance -- CLI: Make missing-babelrc an automatic migration [#20689](https://github.com/storybooks/storybook/pull/20689) -- Addon-docs: Update story index generator glob [#20679](https://github.com/storybooks/storybook/pull/20679) -- Docs: Move validation logic into `context.resolveOf` [#20662](https://github.com/storybooks/storybook/pull/20662) -- Csf-plugin: Move source to docs.source.originalSource [#20665](https://github.com/storybooks/storybook/pull/20665) +- CLI: Make missing-babelrc an automatic migration [#20689](https://github.com/storybooks/storybook/pull/20689) +- Addon-docs: Update story index generator glob [#20679](https://github.com/storybooks/storybook/pull/20679) +- Docs: Move validation logic into `context.resolveOf` [#20662](https://github.com/storybooks/storybook/pull/20662) +- Csf-plugin: Move source to docs.source.originalSource [#20665](https://github.com/storybooks/storybook/pull/20665) #### Build -- Fix ui example story [#20692](https://github.com/storybooks/storybook/pull/20692) +- Fix ui example story [#20692](https://github.com/storybooks/storybook/pull/20692) ## 7.0.0-beta.30 (January 18, 2023) #### Features -- UI: Add Sun, Moon, Sidebyside, and stacked icons [#20621](https://github.com/storybooks/storybook/pull/20621) -- Angular: Add multi-project setup for ng workspaces [#20559](https://github.com/storybooks/storybook/pull/20559) -- Addon-docs: Support @deprecated jsdoc tag [#20154](https://github.com/storybooks/storybook/pull/20154) -- Csf-plugin: Support meta description comments [#20632](https://github.com/storybooks/storybook/pull/20632) +- UI: Add Sun, Moon, Sidebyside, and stacked icons [#20621](https://github.com/storybooks/storybook/pull/20621) +- Angular: Add multi-project setup for ng workspaces [#20559](https://github.com/storybooks/storybook/pull/20559) +- Addon-docs: Support @deprecated jsdoc tag [#20154](https://github.com/storybooks/storybook/pull/20154) +- Csf-plugin: Support meta description comments [#20632](https://github.com/storybooks/storybook/pull/20632) #### Bug Fixes -- Core: Fix `core` preset default value [#20646](https://github.com/storybooks/storybook/pull/20646) -- Addon-docs: Fix issue with unattached `.mdx` files [#20661](https://github.com/storybooks/storybook/pull/20661) -- Webpack: aAd error catching when template is not set [#20669](https://github.com/storybooks/storybook/pull/20669) -- Addons: Fix Viewport resetting shortcut key not working [#20167](https://github.com/storybooks/storybook/pull/20167) -- Core: Show "booting" progress until story is specified or errors [#20425](https://github.com/storybooks/storybook/pull/20425) -- Vue: Update events binding in Vue render [#19860](https://github.com/storybooks/storybook/pull/19860) -- Addon-actions: Fix webpack hot reload code in manager bundle [#20649](https://github.com/storybooks/storybook/pull/20649) -- UI: Fix HMR issue in Manager UI [#20654](https://github.com/storybooks/storybook/pull/20654) +- Core: Fix `core` preset default value [#20646](https://github.com/storybooks/storybook/pull/20646) +- Addon-docs: Fix issue with unattached `.mdx` files [#20661](https://github.com/storybooks/storybook/pull/20661) +- Webpack: aAd error catching when template is not set [#20669](https://github.com/storybooks/storybook/pull/20669) +- Addons: Fix Viewport resetting shortcut key not working [#20167](https://github.com/storybooks/storybook/pull/20167) +- Core: Show "booting" progress until story is specified or errors [#20425](https://github.com/storybooks/storybook/pull/20425) +- Vue: Update events binding in Vue render [#19860](https://github.com/storybooks/storybook/pull/19860) +- Addon-actions: Fix webpack hot reload code in manager bundle [#20649](https://github.com/storybooks/storybook/pull/20649) +- UI: Fix HMR issue in Manager UI [#20654](https://github.com/storybooks/storybook/pull/20654) #### Maintenance -- Docs: Refactor props of Story block [#20530](https://github.com/storybooks/storybook/pull/20530) -- Vite: TypeScript type cleanup [#20642](https://github.com/storybooks/storybook/pull/20642) +- Docs: Refactor props of Story block [#20530](https://github.com/storybooks/storybook/pull/20530) +- Vite: TypeScript type cleanup [#20642](https://github.com/storybooks/storybook/pull/20642) #### Build -- Add required jobs to daily workflow [#20263](https://github.com/storybooks/storybook/pull/20263) -- Fix typings files to ensure this the check command succeeds [#20598](https://github.com/storybooks/storybook/pull/20598) +- Add required jobs to daily workflow [#20263](https://github.com/storybooks/storybook/pull/20263) +- Fix typings files to ensure this the check command succeeds [#20598](https://github.com/storybooks/storybook/pull/20598) #### Dependency Upgrades -- Svelte: Remove babel/core peer dep [#20650](https://github.com/storybooks/storybook/pull/20650) +- Svelte: Remove babel/core peer dep [#20650](https://github.com/storybooks/storybook/pull/20650) ## 7.0.0-beta.29 (January 17, 2023) #### Features -- CLI: Add codemod to upgrade deprecated types [#20618](https://github.com/storybooks/storybook/pull/20618) -- CLI: overhaul `storybook repro` command and rename it to `storybook sandbox` [#20507](https://github.com/storybooks/storybook/pull/20507) -- Vue3: Add source decorator vue template and setup script + supports of multi slots [#20498](https://github.com/storybooks/storybook/pull/20498) +- CLI: Add codemod to upgrade deprecated types [#20618](https://github.com/storybooks/storybook/pull/20618) +- CLI: overhaul `storybook repro` command and rename it to `storybook sandbox` [#20507](https://github.com/storybooks/storybook/pull/20507) +- Vue3: Add source decorator vue template and setup script + supports of multi slots [#20498](https://github.com/storybooks/storybook/pull/20498) #### Bug Fixes -- Angular: Fix handling of docsMode option in angular builder [#20608](https://github.com/storybooks/storybook/pull/20608) -- UI: Bring back support for `favicon.ico` [#20612](https://github.com/storybooks/storybook/pull/20612) -- CLI: Fix missing css import on Vue3 button [#20470](https://github.com/storybooks/storybook/pull/20470) -- Codemods: Fix `csf-2-to-3` ignores Typescript types [#20273](https://github.com/storybooks/storybook/pull/20273) -- NextJS: Fix image loader [#20615](https://github.com/storybooks/storybook/pull/20615) -- Storyshots: Fix transpilation [#20630](https://github.com/storybooks/storybook/pull/20630) +- Angular: Fix handling of docsMode option in angular builder [#20608](https://github.com/storybooks/storybook/pull/20608) +- UI: Bring back support for `favicon.ico` [#20612](https://github.com/storybooks/storybook/pull/20612) +- CLI: Fix missing css import on Vue3 button [#20470](https://github.com/storybooks/storybook/pull/20470) +- Codemods: Fix `csf-2-to-3` ignores Typescript types [#20273](https://github.com/storybooks/storybook/pull/20273) +- NextJS: Fix image loader [#20615](https://github.com/storybooks/storybook/pull/20615) +- Storyshots: Fix transpilation [#20630](https://github.com/storybooks/storybook/pull/20630) #### Maintenance -- React: Change deprecated `React.VFC` to `React.FC` [#20619](https://github.com/storybooks/storybook/pull/20619) +- React: Change deprecated `React.VFC` to `React.FC` [#20619](https://github.com/storybooks/storybook/pull/20619) #### Dependency Upgrades -- Upgrade babel-loader to ^9.0.0 [#20577](https://github.com/storybooks/storybook/pull/20577) +- Upgrade babel-loader to ^9.0.0 [#20577](https://github.com/storybooks/storybook/pull/20577) ## 7.0.0-beta.28 (January 14, 2023) #### Maintenance -- CSF: Remove deprecated ArgTypes.defaultValue [#19492](https://github.com/storybooks/storybook/pull/19492) +- CSF: Remove deprecated ArgTypes.defaultValue [#19492](https://github.com/storybooks/storybook/pull/19492) #### Dependency Upgrades -- Addon-controls: Fix version of preview api [#20622](https://github.com/storybooks/storybook/pull/20622) +- Addon-controls: Fix version of preview api [#20622](https://github.com/storybooks/storybook/pull/20622) ## 7.0.0-beta.27 (January 14, 2023) #### Features -- CLI: Add "missing-babelrc" automigration [#20341](https://github.com/storybooks/storybook/pull/20341) +- CLI: Add "missing-babelrc" automigration [#20341](https://github.com/storybooks/storybook/pull/20341) #### Bug Fixes -- Angular: Fix isStandaloneComponent check [#20295](https://github.com/storybooks/storybook/pull/20295) -- Blocks: Do not copy code snippet when text inside preview is selected [#19788](https://github.com/storybooks/storybook/pull/19788) -- Vue: Fix type.name check in extractArgTypes [#19956](https://github.com/storybooks/storybook/pull/19956) -- TypeScript: Add children to CanvasProps [#20451](https://github.com/storybooks/storybook/pull/20451) -- CLI: Fix angular/core version in init using devDependencies [#20609](https://github.com/storybooks/storybook/pull/20609) +- Angular: Fix isStandaloneComponent check [#20295](https://github.com/storybooks/storybook/pull/20295) +- Blocks: Do not copy code snippet when text inside preview is selected [#19788](https://github.com/storybooks/storybook/pull/19788) +- Vue: Fix type.name check in extractArgTypes [#19956](https://github.com/storybooks/storybook/pull/19956) +- TypeScript: Add children to CanvasProps [#20451](https://github.com/storybooks/storybook/pull/20451) +- CLI: Fix angular/core version in init using devDependencies [#20609](https://github.com/storybooks/storybook/pull/20609) #### Maintenance -- Svelte: don't add `svelte-loader` nor `svelte` when initializing Svelte projects [#18799](https://github.com/storybooks/storybook/pull/18799) -- Core: prepareMeta function similar to prepareStory [#20592](https://github.com/storybooks/storybook/pull/20592) +- Svelte: don't add `svelte-loader` nor `svelte` when initializing Svelte projects [#18799](https://github.com/storybooks/storybook/pull/18799) +- Core: prepareMeta function similar to prepareStory [#20592](https://github.com/storybooks/storybook/pull/20592) #### Build -- Build: Enable Scorecard Github Action and Badge [#19755](https://github.com/storybooks/storybook/pull/19755) -- Build: Add e2e test for static JSON files [#19463](https://github.com/storybooks/storybook/pull/19463) +- Build: Enable Scorecard Github Action and Badge [#19755](https://github.com/storybooks/storybook/pull/19755) +- Build: Add e2e test for static JSON files [#19463](https://github.com/storybooks/storybook/pull/19463) ## 7.0.0-beta.26 (January 14, 2023) #### Features -- Core: Expose port from buildDevStandalone [#20575](https://github.com/storybooks/storybook/pull/20575) -- CLI: Add auto-migration for MDX html-type comments to JS-type comments [#20349](https://github.com/storybooks/storybook/pull/20349) +- Core: Expose port from buildDevStandalone [#20575](https://github.com/storybooks/storybook/pull/20575) +- CLI: Add auto-migration for MDX html-type comments to JS-type comments [#20349](https://github.com/storybooks/storybook/pull/20349) #### Bug Fixes -- API: Fix typing on useArgs [#20610](https://github.com/storybooks/storybook/pull/20610) -- Addon-docs: Fix docs crash by simplifying element before stringify [#19188](https://github.com/storybooks/storybook/pull/19188) -- Vite: Fix duplicate code in preview [#20594](https://github.com/storybooks/storybook/pull/20594) -- Addons: Warn when addon is not installed [#20455](https://github.com/storybooks/storybook/pull/20455) -- Blocks: Handle undefined extractComponentDescription [#20590](https://github.com/storybooks/storybook/pull/20590) +- API: Fix typing on useArgs [#20610](https://github.com/storybooks/storybook/pull/20610) +- Addon-docs: Fix docs crash by simplifying element before stringify [#19188](https://github.com/storybooks/storybook/pull/19188) +- Vite: Fix duplicate code in preview [#20594](https://github.com/storybooks/storybook/pull/20594) +- Addons: Warn when addon is not installed [#20455](https://github.com/storybooks/storybook/pull/20455) +- Blocks: Handle undefined extractComponentDescription [#20590](https://github.com/storybooks/storybook/pull/20590) #### Maintenance -- CLI: Fix removal of --no-dll flag [#20589](https://github.com/storybooks/storybook/pull/20589) -- SvelteKit: Automatically support Kit-specific features [#20239](https://github.com/storybooks/storybook/pull/20239) +- CLI: Fix removal of --no-dll flag [#20589](https://github.com/storybooks/storybook/pull/20589) +- SvelteKit: Automatically support Kit-specific features [#20239](https://github.com/storybooks/storybook/pull/20239) #### Build -- Build: Fix issue with jest projects matching `ui/node_modules` [#20601](https://github.com/storybooks/storybook/pull/20601) -- TypeScript: Fix typings files to ensure check command succeeds [#20605](https://github.com/storybooks/storybook/pull/20605) -- CLI: Fix repros creation not working on windows [#20606](https://github.com/storybooks/storybook/pull/20606) -- Build: Fix template stories to make them work with stricter Typescript settings [#20591](https://github.com/storybooks/storybook/pull/20591) -- Build: Allow creating internal templates that extend others and pass `main.js` options [#20054](https://github.com/storybooks/storybook/pull/20054) +- Build: Fix issue with jest projects matching `ui/node_modules` [#20601](https://github.com/storybooks/storybook/pull/20601) +- TypeScript: Fix typings files to ensure check command succeeds [#20605](https://github.com/storybooks/storybook/pull/20605) +- CLI: Fix repros creation not working on windows [#20606](https://github.com/storybooks/storybook/pull/20606) +- Build: Fix template stories to make them work with stricter Typescript settings [#20591](https://github.com/storybooks/storybook/pull/20591) +- Build: Allow creating internal templates that extend others and pass `main.js` options [#20054](https://github.com/storybooks/storybook/pull/20054) ## 7.0.0-beta.25 (January 12, 2023) #### Features -- Vue3: Rendering slots passed from controls [#20536](https://github.com/storybooks/storybook/pull/20536) +- Vue3: Rendering slots passed from controls [#20536](https://github.com/storybooks/storybook/pull/20536) #### Bug Fixes -- Core: Export build from core-server instead of standalone [#20574](https://github.com/storybooks/storybook/pull/20574) +- Core: Export build from core-server instead of standalone [#20574](https://github.com/storybooks/storybook/pull/20574) #### Maintenance -- Blocks: New Description API, introduce useOf [#20563](https://github.com/storybooks/storybook/pull/20563) +- Blocks: New Description API, introduce useOf [#20563](https://github.com/storybooks/storybook/pull/20563) ## 7.0.0-beta.24 (January 11, 2023) #### Maintenance -- Migrations: Add `preact-vite` to new frameworks automigration [#20542](https://github.com/storybooks/storybook/pull/20542) +- Migrations: Add `preact-vite` to new frameworks automigration [#20542](https://github.com/storybooks/storybook/pull/20542) #### Build -- Build: remove unneeded dependencies & upgrades [#20533](https://github.com/storybooks/storybook/pull/20533) -- Build: upgrade verdaccio [#20561](https://github.com/storybooks/storybook/pull/20561) -- Build: remove usage of enzyme [#20534](https://github.com/storybooks/storybook/pull/20534) +- Build: remove unneeded dependencies & upgrades [#20533](https://github.com/storybooks/storybook/pull/20533) +- Build: upgrade verdaccio [#20561](https://github.com/storybooks/storybook/pull/20561) +- Build: remove usage of enzyme [#20534](https://github.com/storybooks/storybook/pull/20534) ## 7.0.0-beta.23 (January 10, 2023) #### Features -- Composition: Add basic auth support [#20488](https://github.com/storybooks/storybook/pull/20488) +- Composition: Add basic auth support [#20488](https://github.com/storybooks/storybook/pull/20488) #### Bug Fixes -- UI: Fix managerEntries containing long paths with hidden folders [#20550](https://github.com/storybooks/storybook/pull/20550) -- Addon-docs: Fix attachment logic [#20531](https://github.com/storybooks/storybook/pull/20531) +- UI: Fix managerEntries containing long paths with hidden folders [#20550](https://github.com/storybooks/storybook/pull/20550) +- Addon-docs: Fix attachment logic [#20531](https://github.com/storybooks/storybook/pull/20531) #### Maintenance -- Addon-docs: Move reactPeerCheck to docs package [#20560](https://github.com/storybooks/storybook/pull/20560) -- Addon-docs: Rename `storyByModuleExport` to `resolveModuleExport` [#20517](https://github.com/storybooks/storybook/pull/20517) -- Telemetry: Filter out example stories/docs from summary [#20553](https://github.com/storybooks/storybook/pull/20553) -- Telemetry: Count play function usage [#20541](https://github.com/storybooks/storybook/pull/20541) -- Telemetry: Add pageStoryCount [#20539](https://github.com/storybooks/storybook/pull/20539) -- Vite/Vue3: Pre-bundle @vitejs/plugin-vue [#20343](https://github.com/storybooks/storybook/pull/20343) +- Addon-docs: Move reactPeerCheck to docs package [#20560](https://github.com/storybooks/storybook/pull/20560) +- Addon-docs: Rename `storyByModuleExport` to `resolveModuleExport` [#20517](https://github.com/storybooks/storybook/pull/20517) +- Telemetry: Filter out example stories/docs from summary [#20553](https://github.com/storybooks/storybook/pull/20553) +- Telemetry: Count play function usage [#20541](https://github.com/storybooks/storybook/pull/20541) +- Telemetry: Add pageStoryCount [#20539](https://github.com/storybooks/storybook/pull/20539) +- Vite/Vue3: Pre-bundle @vitejs/plugin-vue [#20343](https://github.com/storybooks/storybook/pull/20343) #### Build -- Build: downgrade slash to non-ESM [#20543](https://github.com/storybooks/storybook/pull/20543) +- Build: downgrade slash to non-ESM [#20543](https://github.com/storybooks/storybook/pull/20543) #### Other -- Update GH action to use "linear-ghaction" label for sync [#20546](https://github.com/storybooks/storybook/pull/20546) +- Update GH action to use "linear-ghaction" label for sync [#20546](https://github.com/storybooks/storybook/pull/20546) ## 7.0.0-beta.22 (January 10, 2023) @@ -1353,62 +1473,62 @@ Failed publish #### Maintenance -- Ember: Build with tsc [#20524](https://github.com/storybooks/storybook/pull/20524) -- Storyshots: Build with tsc [#20523](https://github.com/storybooks/storybook/pull/20523) +- Ember: Build with tsc [#20524](https://github.com/storybooks/storybook/pull/20524) +- Storyshots: Build with tsc [#20523](https://github.com/storybooks/storybook/pull/20523) #### Dependencies -- Downgrade find-cache-dir [#20532](https://github.com/storybooks/storybook/pull/20532) +- Downgrade find-cache-dir [#20532](https://github.com/storybooks/storybook/pull/20532) #### Build -- Build: Cleanup babel prepare related code & dependencies [#20156](https://github.com/storybooks/storybook/pull/20156) -- Build: Create a tsc prepare script, use it for angular framework, add ESM to angular dist [#20516](https://github.com/storybooks/storybook/pull/20516) -- Build: Fix InternalCanvas story tests [#20521](https://github.com/storybooks/storybook/pull/20521) +- Build: Cleanup babel prepare related code & dependencies [#20156](https://github.com/storybooks/storybook/pull/20156) +- Build: Create a tsc prepare script, use it for angular framework, add ESM to angular dist [#20516](https://github.com/storybooks/storybook/pull/20516) +- Build: Fix InternalCanvas story tests [#20521](https://github.com/storybooks/storybook/pull/20521) ## 7.0.0-beta.20 (January 6, 2023) #### Bug Fixes -- Telemetry: Move 'dev'/'build' events to the end of the process [#20380](https://github.com/storybooks/storybook/pull/20380) -- Blocks: Export Unstyled block in index.ts [#20489](https://github.com/storybooks/storybook/pull/20489) -- Vite: Fix missing await in builder [#20409](https://github.com/storybooks/storybook/pull/20409) +- Telemetry: Move 'dev'/'build' events to the end of the process [#20380](https://github.com/storybooks/storybook/pull/20380) +- Blocks: Export Unstyled block in index.ts [#20489](https://github.com/storybooks/storybook/pull/20489) +- Vite: Fix missing await in builder [#20409](https://github.com/storybooks/storybook/pull/20409) #### Maintenance -- Build: use tsup for csf-plugin [#20150](https://github.com/storybooks/storybook/pull/20150) -- Migration: Update autodocs migration to deal with `docs.docsPage` [#20379](https://github.com/storybooks/storybook/pull/20379) +- Build: use tsup for csf-plugin [#20150](https://github.com/storybooks/storybook/pull/20150) +- Migration: Update autodocs migration to deal with `docs.docsPage` [#20379](https://github.com/storybooks/storybook/pull/20379) #### Build -- Blocks: Use example Button for stories [#20483](https://github.com/storybooks/storybook/pull/20483) -- Build: cleanup prep script where possible [#20151](https://github.com/storybooks/storybook/pull/20151) -- cleanup CI config [#20510](https://github.com/storybooks/storybook/pull/20510) -- Build: Fix CI parallelism [#20476](https://github.com/storybooks/storybook/pull/20476) -- Web-components: Restore missing script stories [#20477](https://github.com/storybooks/storybook/pull/20477) +- Blocks: Use example Button for stories [#20483](https://github.com/storybooks/storybook/pull/20483) +- Build: cleanup prep script where possible [#20151](https://github.com/storybooks/storybook/pull/20151) +- cleanup CI config [#20510](https://github.com/storybooks/storybook/pull/20510) +- Build: Fix CI parallelism [#20476](https://github.com/storybooks/storybook/pull/20476) +- Web-components: Restore missing script stories [#20477](https://github.com/storybooks/storybook/pull/20477) ## 7.0.0-beta.19 (January 1, 2023) #### Features -- NextJS: Add next/head support [#20436](https://github.com/storybooks/storybook/pull/20436) +- NextJS: Add next/head support [#20436](https://github.com/storybooks/storybook/pull/20436) #### Bug Fixes -- CLI: Do not use legacy-peer-deps for npm [#20456](https://github.com/storybooks/storybook/pull/20456) -- CLI: Use closest lockfile to determine package manager [#20464](https://github.com/storybooks/storybook/pull/20464) -- CLI: Use correct package manager for automigrate [#20428](https://github.com/storybooks/storybook/pull/20428) -- CLI: Add prop-types dependency if not using TypeScript [#20449](https://github.com/storybooks/storybook/pull/20449) -- CLI: Add peer dependency on react [#20459](https://github.com/storybooks/storybook/pull/20459) +- CLI: Do not use legacy-peer-deps for npm [#20456](https://github.com/storybooks/storybook/pull/20456) +- CLI: Use closest lockfile to determine package manager [#20464](https://github.com/storybooks/storybook/pull/20464) +- CLI: Use correct package manager for automigrate [#20428](https://github.com/storybooks/storybook/pull/20428) +- CLI: Add prop-types dependency if not using TypeScript [#20449](https://github.com/storybooks/storybook/pull/20449) +- CLI: Add peer dependency on react [#20459](https://github.com/storybooks/storybook/pull/20459) #### Maintenance -- Vue3: Add TS / legacy TS CLI templates [#20434](https://github.com/storybooks/storybook/pull/20434) -- Core: Delete outdated onerror handler [#20462](https://github.com/storybooks/storybook/pull/20462) +- Vue3: Add TS / legacy TS CLI templates [#20434](https://github.com/storybooks/storybook/pull/20434) +- Core: Delete outdated onerror handler [#20462](https://github.com/storybooks/storybook/pull/20462) #### Build -- Build: Add extensions to lodash imports [#20443](https://github.com/storybooks/storybook/pull/20443) +- Build: Add extensions to lodash imports [#20443](https://github.com/storybooks/storybook/pull/20443) ## 7.0.0-beta.18 (January 1, 2023) @@ -1418,305 +1538,304 @@ Bad npm publish #### Bug Fixes -- Svelte: Do not warn about .svelte files in storyStoreV7 [#20442](https://github.com/storybooks/storybook/pull/20442) -- Core: Fix import paths on Windows [#20430](https://github.com/storybooks/storybook/pull/20430) -- UI: Set min-height relative to the viewport and the zoom level. [#20352](https://github.com/storybooks/storybook/pull/20352) +- Svelte: Do not warn about .svelte files in storyStoreV7 [#20442](https://github.com/storybooks/storybook/pull/20442) +- Core: Fix import paths on Windows [#20430](https://github.com/storybooks/storybook/pull/20430) +- UI: Set min-height relative to the viewport and the zoom level. [#20352](https://github.com/storybooks/storybook/pull/20352) #### Maintenance -- Docs: Use `stories-mdx` and `autodocs` tags instead of `standalone: false` in index [#20424](https://github.com/storybooks/storybook/pull/20424) -- Docs: Use `'stories-mdx'` tag to indicate story defined in MDX file [#20417](https://github.com/storybooks/storybook/pull/20417) -- Preact-Vite: Minor readme and dependency cleanups [#20432](https://github.com/storybooks/storybook/pull/20432) +- Docs: Use `stories-mdx` and `autodocs` tags instead of `standalone: false` in index [#20424](https://github.com/storybooks/storybook/pull/20424) +- Docs: Use `'stories-mdx'` tag to indicate story defined in MDX file [#20417](https://github.com/storybooks/storybook/pull/20417) +- Preact-Vite: Minor readme and dependency cleanups [#20432](https://github.com/storybooks/storybook/pull/20432) #### Build -- Tech: ESLint allow devDependencies imports in prebundled packages [#20440](https://github.com/storybooks/storybook/pull/20440) -- Fix yarn task command on Windows machines [#20431](https://github.com/storybooks/storybook/pull/20431) +- Tech: ESLint allow devDependencies imports in prebundled packages [#20440](https://github.com/storybooks/storybook/pull/20440) +- Fix yarn task command on Windows machines [#20431](https://github.com/storybooks/storybook/pull/20431) ## 7.0.0-beta.16 (December 29, 2022) #### Features -- Preact-Vite: Add framework [#20390](https://github.com/storybooks/storybook/pull/20390) +- Preact-Vite: Add framework [#20390](https://github.com/storybooks/storybook/pull/20390) #### Maintenance -- NextJS: Fix unnecessary addon-actions dev dep [#20426](https://github.com/storybooks/storybook/pull/20426) +- NextJS: Fix unnecessary addon-actions dev dep [#20426](https://github.com/storybooks/storybook/pull/20426) ## 7.0.0-beta.15 (December 24, 2022) #### Bug Fixes -- Codemods: Fix peer dependency issue [#20399](https://github.com/storybooks/storybook/pull/20399) -- Core: Wrap manager entries to handle exports using a cache directory [#20331](https://github.com/storybooks/storybook/pull/20331) -- UI: fix deprecated ReactDOM.findDOMNode calls [#20368](https://github.com/storybooks/storybook/pull/20368) +- Codemods: Fix peer dependency issue [#20399](https://github.com/storybooks/storybook/pull/20399) +- Core: Wrap manager entries to handle exports using a cache directory [#20331](https://github.com/storybooks/storybook/pull/20331) +- UI: fix deprecated ReactDOM.findDOMNode calls [#20368](https://github.com/storybooks/storybook/pull/20368) #### Maintenance -- Build: Use tsup for core-server [#20134](https://github.com/storybooks/storybook/pull/20134) +- Build: Use tsup for core-server [#20134](https://github.com/storybooks/storybook/pull/20134) #### Build -- Build: Make tests use SWC, not babel [#20397](https://github.com/storybooks/storybook/pull/20397) -- Build: Fix trim vulnerability [#20371](https://github.com/storybooks/storybook/pull/20371) +- Build: Make tests use SWC, not babel [#20397](https://github.com/storybooks/storybook/pull/20397) +- Build: Fix trim vulnerability [#20371](https://github.com/storybooks/storybook/pull/20371) ## 7.0.0-beta.14 (December 23, 2022) #### Features -- CLI: Write into a log file if automigrations fail [#20310](https://github.com/storybooks/storybook/pull/20310) -- CLI: Add nodejs check in automigrations [#20342](https://github.com/storybooks/storybook/pull/20342) +- CLI: Write into a log file if automigrations fail [#20310](https://github.com/storybooks/storybook/pull/20310) +- CLI: Add nodejs check in automigrations [#20342](https://github.com/storybooks/storybook/pull/20342) #### Bug Fixes -- UI: Disable React.strictmode to avoid findNode deprecation warnings [#20345](https://github.com/storybooks/storybook/pull/20345) -- Vite: Fix peerDep warning by updating `@joshwooding/vite-plugin-react-docgen-typescript` [#20359](https://github.com/storybooks/storybook/pull/20359) +- UI: Disable React.strictmode to avoid findNode deprecation warnings [#20345](https://github.com/storybooks/storybook/pull/20345) +- Vite: Fix peerDep warning by updating `@joshwooding/vite-plugin-react-docgen-typescript` [#20359](https://github.com/storybooks/storybook/pull/20359) #### Maintenance -- Don't allow setting `Meta of={X}` if `X` is tagged with `'autodocs'` [#20373](https://github.com/storybooks/storybook/pull/20373) -- Rename `docsPage` => `autodocs` [#20364](https://github.com/storybooks/storybook/pull/20364) -- Rename `docsOptions.enabled` to `docsOptions.disable` [#20363](https://github.com/storybooks/storybook/pull/20363) -- Angular: Switch to default to inlineStories=true [#20118](https://github.com/storybooks/storybook/pull/20118) -- Types: Add Addon_OptionsParameterV7 type [#20384](https://github.com/storybooks/storybook/pull/20384) +- Don't allow setting `Meta of={X}` if `X` is tagged with `'autodocs'` [#20373](https://github.com/storybooks/storybook/pull/20373) +- Rename `docsPage` => `autodocs` [#20364](https://github.com/storybooks/storybook/pull/20364) +- Rename `docsOptions.enabled` to `docsOptions.disable` [#20363](https://github.com/storybooks/storybook/pull/20363) +- Angular: Switch to default to inlineStories=true [#20118](https://github.com/storybooks/storybook/pull/20118) +- Types: Add Addon_OptionsParameterV7 type [#20384](https://github.com/storybooks/storybook/pull/20384) #### Build -- Build: regen lockfiles [#20386](https://github.com/storybooks/storybook/pull/20386) -- Build: fix prettydocs CI flakyness [#20385](https://github.com/storybooks/storybook/pull/20385) -- Build: Update Playwright to 1.29.1 [#20372](https://github.com/storybooks/storybook/pull/20372) -- Build: store extra metadata for each sandbox test [#20365](https://github.com/storybooks/storybook/pull/20365) -- Build: Remove the non-cross-platform dash-S option [#20360](https://github.com/storybooks/storybook/pull/20360) -- Build: sync issues of `next` packages [#20354](https://github.com/storybooks/storybook/pull/20354) - +- Build: regen lockfiles [#20386](https://github.com/storybooks/storybook/pull/20386) +- Build: fix prettydocs CI flakyness [#20385](https://github.com/storybooks/storybook/pull/20385) +- Build: Update Playwright to 1.29.1 [#20372](https://github.com/storybooks/storybook/pull/20372) +- Build: store extra metadata for each sandbox test [#20365](https://github.com/storybooks/storybook/pull/20365) +- Build: Remove the non-cross-platform dash-S option [#20360](https://github.com/storybooks/storybook/pull/20360) +- Build: sync issues of `next` packages [#20354](https://github.com/storybooks/storybook/pull/20354) ## 6.5.15 (December 20, 2022) #### Bug Fixes -- Support Angular 15.0.4 [#20287](https://github.com/storybooks/storybook/pull/20287) -- CLI: execute automigrations when pressing enter in the prompts [#20208](https://github.com/storybooks/storybook/pull/20208) +- Support Angular 15.0.4 [#20287](https://github.com/storybooks/storybook/pull/20287) +- CLI: execute automigrations when pressing enter in the prompts [#20208](https://github.com/storybooks/storybook/pull/20208) ## 7.0.0-beta.13 (December 20, 2022) #### Features -- Angular: Support compodoc output arg [#20338](https://github.com/storybooks/storybook/pull/20338) -- NextJS: Support @next/font [#20291](https://github.com/storybooks/storybook/pull/20291) -- NextJS: Support useSelectedLayoutSegment and useSelectedLayoutSegments [#20330](https://github.com/storybooks/storybook/pull/20330) -- Preview Api: export `userOrAutoTitle` function [#20325](https://github.com/storybooks/storybook/pull/20325) +- Angular: Support compodoc output arg [#20338](https://github.com/storybooks/storybook/pull/20338) +- NextJS: Support @next/font [#20291](https://github.com/storybooks/storybook/pull/20291) +- NextJS: Support useSelectedLayoutSegment and useSelectedLayoutSegments [#20330](https://github.com/storybooks/storybook/pull/20330) +- Preview Api: export `userOrAutoTitle` function [#20325](https://github.com/storybooks/storybook/pull/20325) #### Bug Fixes -- Fix: peer dependency warning for `vite-react` [#20328](https://github.com/storybooks/storybook/pull/20328) -- UI: swap `react-sizeme` for `react-resize-detector` [#20333](https://github.com/storybooks/storybook/pull/20333) -- Vite: Detect React SWC plugin [#20335](https://github.com/storybooks/storybook/pull/20335) -- CLI: Fix automigrate filtering [#20329](https://github.com/storybooks/storybook/pull/20329) -- Vite: Include user config `optimizeDeps` in final `optimizeDeps` [#20313](https://github.com/storybooks/storybook/pull/20313) +- Fix: peer dependency warning for `vite-react` [#20328](https://github.com/storybooks/storybook/pull/20328) +- UI: swap `react-sizeme` for `react-resize-detector` [#20333](https://github.com/storybooks/storybook/pull/20333) +- Vite: Detect React SWC plugin [#20335](https://github.com/storybooks/storybook/pull/20335) +- CLI: Fix automigrate filtering [#20329](https://github.com/storybooks/storybook/pull/20329) +- Vite: Include user config `optimizeDeps` in final `optimizeDeps` [#20313](https://github.com/storybooks/storybook/pull/20313) #### Maintenance -- Tech: improve global types [#20184](https://github.com/storybooks/storybook/pull/20184) -- CLI: Fix sb migrate csf-2-to-3 for multiple file extensions [#20290](https://github.com/storybooks/storybook/pull/20290) -- CLI: Replace `update-notifier` with `simple-update-notifier` [#20266](https://github.com/storybooks/storybook/pull/20266) +- Tech: improve global types [#20184](https://github.com/storybooks/storybook/pull/20184) +- CLI: Fix sb migrate csf-2-to-3 for multiple file extensions [#20290](https://github.com/storybooks/storybook/pull/20290) +- CLI: Replace `update-notifier` with `simple-update-notifier` [#20266](https://github.com/storybooks/storybook/pull/20266) #### Build -- Build: remove borders in task error message [#20305](https://github.com/storybooks/storybook/pull/20305) -- Build: Fix pretty-docs CI job [#20319](https://github.com/storybooks/storybook/pull/20319) -- Build: Update Playwright to 1.29 [#20318](https://github.com/storybooks/storybook/pull/20318) +- Build: remove borders in task error message [#20305](https://github.com/storybooks/storybook/pull/20305) +- Build: Fix pretty-docs CI job [#20319](https://github.com/storybooks/storybook/pull/20319) +- Build: Update Playwright to 1.29 [#20318](https://github.com/storybooks/storybook/pull/20318) #### Dependencies -- NextJS: Make addon-actions a regular dependency [#20324](https://github.com/storybooks/storybook/pull/20324) -- NextJS: Fix addon-actions peerdependency [#20324](https://github.com/storybooks/storybook/pull/20324) -- Vite-react: Fix peer dependency warning [#20328](https://github.com/storybooks/storybook/pull/20328) +- NextJS: Make addon-actions a regular dependency [#20324](https://github.com/storybooks/storybook/pull/20324) +- NextJS: Fix addon-actions peerdependency [#20324](https://github.com/storybooks/storybook/pull/20324) +- Vite-react: Fix peer dependency warning [#20328](https://github.com/storybooks/storybook/pull/20328) ## 7.0.0-beta.12 (December 16, 2022) #### Other -- Revert "Core: Wrap manager entries to handle exports" [#20311](https://github.com/storybooks/storybook/pull/20311) +- Revert "Core: Wrap manager entries to handle exports" [#20311](https://github.com/storybooks/storybook/pull/20311) ## 7.0.0-beta.11 (December 16, 2022) #### Features -- CLI: Improve automigration to show prompt-only migrations [#20292](https://github.com/storybooks/storybook/pull/20292) +- CLI: Improve automigration to show prompt-only migrations [#20292](https://github.com/storybooks/storybook/pull/20292) #### Bug Fixes -- Angular: Fix webpackStatsJson types in angular-builder [#20296](https://github.com/storybooks/storybook/pull/20296) -- Fix: addon-storysource has no managerEntry, but defines a register and preset [#20304](https://github.com/storybooks/storybook/pull/20304) +- Angular: Fix webpackStatsJson types in angular-builder [#20296](https://github.com/storybooks/storybook/pull/20296) +- Fix: addon-storysource has no managerEntry, but defines a register and preset [#20304](https://github.com/storybooks/storybook/pull/20304) #### Maintenance -- Core: Wrap manager entries to handle exports [#20308](https://github.com/storybooks/storybook/pull/20308) -- Core: improve manager-entries failure message [#20306](https://github.com/storybooks/storybook/pull/20306) -- Telemetry: Fix flakey test [#20282](https://github.com/storybooks/storybook/pull/20282) +- Core: Wrap manager entries to handle exports [#20308](https://github.com/storybooks/storybook/pull/20308) +- Core: improve manager-entries failure message [#20306](https://github.com/storybooks/storybook/pull/20306) +- Telemetry: Fix flakey test [#20282](https://github.com/storybooks/storybook/pull/20282) #### Dependency Upgrades -- Vite: Make vite a peer dependency, update plugins [#20281](https://github.com/storybooks/storybook/pull/20281) -- Vite/Svelte: Remove addon-svelte-csf dep [#20280](https://github.com/storybooks/storybook/pull/20280) +- Vite: Make vite a peer dependency, update plugins [#20281](https://github.com/storybooks/storybook/pull/20281) +- Vite/Svelte: Remove addon-svelte-csf dep [#20280](https://github.com/storybooks/storybook/pull/20280) ## 7.0.0-beta.10 (December 16, 2022) #### Build -- Build: compile detection was using a non-conforming package, causing cache to miss always. [#20297](https://github.com/storybooks/storybook/pull/20297) +- Build: compile detection was using a non-conforming package, causing cache to miss always. [#20297](https://github.com/storybooks/storybook/pull/20297) #### Dependency Upgrades -- React-vite: Pin react-docgen version [#20300](https://github.com/storybooks/storybook/pull/20300) +- React-vite: Pin react-docgen version [#20300](https://github.com/storybooks/storybook/pull/20300) ## 7.0.0-beta.9 (December 16, 2022) #### Features -- CLI: Add interactive babel config file generation [#20234](https://github.com/storybooks/storybook/pull/20234) -- CLI: Add automigration summary [#20276](https://github.com/storybooks/storybook/pull/20276) +- CLI: Add interactive babel config file generation [#20234](https://github.com/storybooks/storybook/pull/20234) +- CLI: Add automigration summary [#20276](https://github.com/storybooks/storybook/pull/20276) #### Bug Fixes -- UI: Fix `enableShortcuts` support in `manager.ts` [#20264](https://github.com/storybooks/storybook/pull/20264) -- UI: Ensure manager entries load even if preceding ones failed [#20286](https://github.com/storybooks/storybook/pull/20286) -- Addon-viewport: Fix composition support [#20289](https://github.com/storybooks/storybook/pull/20289) -- Support Angular 15.0.4 [#20287](https://github.com/storybooks/storybook/pull/20287) -- Fix: peerDependencies issues reported [#20279](https://github.com/storybooks/storybook/pull/20279) +- UI: Fix `enableShortcuts` support in `manager.ts` [#20264](https://github.com/storybooks/storybook/pull/20264) +- UI: Ensure manager entries load even if preceding ones failed [#20286](https://github.com/storybooks/storybook/pull/20286) +- Addon-viewport: Fix composition support [#20289](https://github.com/storybooks/storybook/pull/20289) +- Support Angular 15.0.4 [#20287](https://github.com/storybooks/storybook/pull/20287) +- Fix: peerDependencies issues reported [#20279](https://github.com/storybooks/storybook/pull/20279) #### Build -- Build: ui/.storybook should not import from dist [#20284](https://github.com/storybooks/storybook/pull/20284) -- Build: bundle script a bit less repetitive, add a completion indicator [#20277](https://github.com/storybooks/storybook/pull/20277) -- Build: regen lockfiles [#20278](https://github.com/storybooks/storybook/pull/20278) +- Build: ui/.storybook should not import from dist [#20284](https://github.com/storybooks/storybook/pull/20284) +- Build: bundle script a bit less repetitive, add a completion indicator [#20277](https://github.com/storybooks/storybook/pull/20277) +- Build: regen lockfiles [#20278](https://github.com/storybooks/storybook/pull/20278) ## 7.0.0-beta.8 (December 14, 2022) #### Features -- Addon-docs: Use jsxOptions instead of mdxBabelOptions [#20271](https://github.com/storybooks/storybook/pull/20271) +- Addon-docs: Use jsxOptions instead of mdxBabelOptions [#20271](https://github.com/storybooks/storybook/pull/20271) #### Maintenance -- Svelte-vite: remove `svelteOptions` in automigration [#20270](https://github.com/storybooks/storybook/pull/20270) +- Svelte-vite: remove `svelteOptions` in automigration [#20270](https://github.com/storybooks/storybook/pull/20270) #### Build -- Fix handling of inverted yes flag in `task` steps [#20268](https://github.com/storybooks/storybook/pull/20268) +- Fix handling of inverted yes flag in `task` steps [#20268](https://github.com/storybooks/storybook/pull/20268) ## 7.0.0-beta.7 (December 14, 2022) #### Features -- CLI: Add Next.js framework automigration [#19574](https://github.com/storybooks/storybook/pull/19574) +- CLI: Add Next.js framework automigration [#19574](https://github.com/storybooks/storybook/pull/19574) #### Bug Fixes -- Don't export renderer from framework [#20259](https://github.com/storybooks/storybook/pull/20259) -- Upgrade sb dep as well in sb upgrade [#20258](https://github.com/storybooks/storybook/pull/20258) -- Vite: Make the bail function work if the server fails to start [#20243](https://github.com/storybooks/storybook/pull/20243) -- Csf-tools: Fix local vars handling in MDX-generated CSF [#20255](https://github.com/storybooks/storybook/pull/20255) -- Csf-plugin: Fix spurious storiesOf warnings [#20256](https://github.com/storybooks/storybook/pull/20256) -- Core: Remove unnecessary peer deps [#20231](https://github.com/storybooks/storybook/pull/20231) -- Fix issues with running SSv6 [#20253](https://github.com/storybooks/storybook/pull/20253) -- Core: Fix config.base relative paths [#20232](https://github.com/storybooks/storybook/pull/20232) -- Fix: vite devmode with storyStoreV6 by ensuring singleton via global [#20207](https://github.com/storybooks/storybook/pull/20207) +- Don't export renderer from framework [#20259](https://github.com/storybooks/storybook/pull/20259) +- Upgrade sb dep as well in sb upgrade [#20258](https://github.com/storybooks/storybook/pull/20258) +- Vite: Make the bail function work if the server fails to start [#20243](https://github.com/storybooks/storybook/pull/20243) +- Csf-tools: Fix local vars handling in MDX-generated CSF [#20255](https://github.com/storybooks/storybook/pull/20255) +- Csf-plugin: Fix spurious storiesOf warnings [#20256](https://github.com/storybooks/storybook/pull/20256) +- Core: Remove unnecessary peer deps [#20231](https://github.com/storybooks/storybook/pull/20231) +- Fix issues with running SSv6 [#20253](https://github.com/storybooks/storybook/pull/20253) +- Core: Fix config.base relative paths [#20232](https://github.com/storybooks/storybook/pull/20232) +- Fix: vite devmode with storyStoreV6 by ensuring singleton via global [#20207](https://github.com/storybooks/storybook/pull/20207) #### Maintenance -- Addon-docs: Upgrade mdx2-csf and use its JSX handling [#20261](https://github.com/storybooks/storybook/pull/20261) -- Vite: Use mdx2 babel pre-processing [#20241](https://github.com/storybooks/storybook/pull/20241) -- Addon-docs: Restore deprecated blocks entry point [#20246](https://github.com/storybooks/storybook/pull/20246) +- Addon-docs: Upgrade mdx2-csf and use its JSX handling [#20261](https://github.com/storybooks/storybook/pull/20261) +- Vite: Use mdx2 babel pre-processing [#20241](https://github.com/storybooks/storybook/pull/20241) +- Addon-docs: Restore deprecated blocks entry point [#20246](https://github.com/storybooks/storybook/pull/20246) #### Build -- Add Next 12 sandbox [#20092](https://github.com/storybooks/storybook/pull/20092) +- Add Next 12 sandbox [#20092](https://github.com/storybooks/storybook/pull/20092) #### Dependency Upgrades -- Add optional TypeScript peer dependency [#20244](https://github.com/storybooks/storybook/pull/20244) +- Add optional TypeScript peer dependency [#20244](https://github.com/storybooks/storybook/pull/20244) ## 7.0.0-beta.6 (December 14, 2022) #### Dependency Upgrades -- Vite: Use Vite 3 (temporarily) [#20216](https://github.com/storybooks/storybook/pull/20216) +- Vite: Use Vite 3 (temporarily) [#20216](https://github.com/storybooks/storybook/pull/20216) ## 7.0.0-beta.5 (December 13, 2022) #### Features -- CLI: Split sb-scripts into two different migrations [#20223](https://github.com/storybooks/storybook/pull/20223) +- CLI: Split sb-scripts into two different migrations [#20223](https://github.com/storybooks/storybook/pull/20223) #### Bug Fixes -- Vite: Support async Vite plugins [#20194](https://github.com/storybooks/storybook/pull/20194) -- Telemetry: Don't send boot event when cliOptions.disableTelemetry is passed [#20144](https://github.com/storybooks/storybook/pull/20144) +- Vite: Support async Vite plugins [#20194](https://github.com/storybooks/storybook/pull/20194) +- Telemetry: Don't send boot event when cliOptions.disableTelemetry is passed [#20144](https://github.com/storybooks/storybook/pull/20144) #### Maintenance -- CLI: Add React peer dep runtime check [#20206](https://github.com/storybooks/storybook/pull/20206) +- CLI: Add React peer dep runtime check [#20206](https://github.com/storybooks/storybook/pull/20206) #### Dependency Upgrades -- Upgrade esbuild [#20199](https://github.com/storybooks/storybook/pull/20199) +- Upgrade esbuild [#20199](https://github.com/storybooks/storybook/pull/20199) ## 7.0.0-beta.4 (December 13, 2022) #### Features -- Re-enable TS 4.9 CLI templates [#20159](https://github.com/storybooks/storybook/pull/20159) +- Re-enable TS 4.9 CLI templates [#20159](https://github.com/storybooks/storybook/pull/20159) #### Bug Fixes -- CLI: execute automigrations when pressing enter in the prompts [#20208](https://github.com/storybooks/storybook/pull/20208) -- Interactions: Fix storyId access in instrumenter [#20201](https://github.com/storybooks/storybook/pull/20201) -- Typescript: Fix bug with meta not working well as generic parameter for StoryObj [#20165](https://github.com/storybooks/storybook/pull/20165) -- SvelteKit: Support `v1.0.0-next.574` and above [#20181](https://github.com/storybooks/storybook/pull/20181) +- CLI: execute automigrations when pressing enter in the prompts [#20208](https://github.com/storybooks/storybook/pull/20208) +- Interactions: Fix storyId access in instrumenter [#20201](https://github.com/storybooks/storybook/pull/20201) +- Typescript: Fix bug with meta not working well as generic parameter for StoryObj [#20165](https://github.com/storybooks/storybook/pull/20165) +- SvelteKit: Support `v1.0.0-next.574` and above [#20181](https://github.com/storybooks/storybook/pull/20181) #### Build -- Svelte: Fix argTypes inference in Button component [#20212](https://github.com/storybooks/storybook/pull/20212) -- React-Vite: Ignore React MDX stories in sandbox [#20210](https://github.com/storybooks/storybook/pull/20210) +- Svelte: Fix argTypes inference in Button component [#20212](https://github.com/storybooks/storybook/pull/20212) +- React-Vite: Ignore React MDX stories in sandbox [#20210](https://github.com/storybooks/storybook/pull/20210) ## 7.0.0-beta.3 (December 10, 2022) #### Bug Fixes -- CLI: Fix sb migrate codemods [#20191](https://github.com/storybooks/storybook/pull/20191) -- Measure: Fix measure not working on disabled elements [#19985](https://github.com/storybooks/storybook/pull/19985) +- CLI: Fix sb migrate codemods [#20191](https://github.com/storybooks/storybook/pull/20191) +- Measure: Fix measure not working on disabled elements [#19985](https://github.com/storybooks/storybook/pull/19985) #### Maintenance -- SvelteKit: Automigration [#20094](https://github.com/storybooks/storybook/pull/20094) -- Tech: change `package.json` engines fields, set to minimal node16 and up [#20170](https://github.com/storybooks/storybook/pull/20170) +- SvelteKit: Automigration [#20094](https://github.com/storybooks/storybook/pull/20094) +- Tech: change `package.json` engines fields, set to minimal node16 and up [#20170](https://github.com/storybooks/storybook/pull/20170) ## 7.0.0-beta.2 (December 9, 2022) #### Bug Fixes -- Core: Catch and do nothing to avoid triggering unhandled exception problems [#20177](https://github.com/storybooks/storybook/pull/20177) -- Controls: Fix color control not resetting when initial value is defined [#20049](https://github.com/storybooks/storybook/pull/20049) -- Core: Fix typescript.checkOptions not a valid interface [#20166](https://github.com/storybooks/storybook/pull/20166) -- NextJS: Fixlogic around `next/future/image` [#20173](https://github.com/storybooks/storybook/pull/20173) +- Core: Catch and do nothing to avoid triggering unhandled exception problems [#20177](https://github.com/storybooks/storybook/pull/20177) +- Controls: Fix color control not resetting when initial value is defined [#20049](https://github.com/storybooks/storybook/pull/20049) +- Core: Fix typescript.checkOptions not a valid interface [#20166](https://github.com/storybooks/storybook/pull/20166) +- NextJS: Fixlogic around `next/future/image` [#20173](https://github.com/storybooks/storybook/pull/20173) #### Maintenance -- Revert "Revert "Telemetry: Add precedingUpgrade data to dev/build/error events"" [#20176](https://github.com/storybooks/storybook/pull/20176) -- Telemetry: Add `chromatic` to addons list [#20143](https://github.com/storybooks/storybook/pull/20143) -- Vite: Support vite 4 [#20139](https://github.com/storybooks/storybook/pull/20139) +- Revert "Revert "Telemetry: Add precedingUpgrade data to dev/build/error events"" [#20176](https://github.com/storybooks/storybook/pull/20176) +- Telemetry: Add `chromatic` to addons list [#20143](https://github.com/storybooks/storybook/pull/20143) +- Vite: Support vite 4 [#20139](https://github.com/storybooks/storybook/pull/20139) ## 7.0.0-beta.1 (December 9, 2022) #### Bug Fixes -- Revert "Telemetry: Add precedingUpgrade data to dev/build/error events" [#20168](https://github.com/storybooks/storybook/pull/20168) -- Controls: Fix file controls not resetting [#19998](https://github.com/storybooks/storybook/pull/19998) +- Revert "Telemetry: Add precedingUpgrade data to dev/build/error events" [#20168](https://github.com/storybooks/storybook/pull/20168) +- Controls: Fix file controls not resetting [#19998](https://github.com/storybooks/storybook/pull/19998) #### Dependency Upgrades -- Upgrade express to fix security warning [#20152](https://github.com/storybooks/storybook/pull/20152) +- Upgrade express to fix security warning [#20152](https://github.com/storybooks/storybook/pull/20152) ## 7.0.0-beta.0 (December 8, 2022) @@ -1728,388 +1847,387 @@ Beta means that we don't have any more major changes on the radar for 7.0 and it #### Bug Fixes -- Extend Angular Zone.js peer dependency range [#20107](https://github.com/storybooks/storybook/pull/20107) -- Vite: Fix static source handling for addon-docs [#20147](https://github.com/storybooks/storybook/pull/20147) -- Controls: Arrow keys don't work on number controls [#19954](https://github.com/storybooks/storybook/pull/19954) +- Extend Angular Zone.js peer dependency range [#20107](https://github.com/storybooks/storybook/pull/20107) +- Vite: Fix static source handling for addon-docs [#20147](https://github.com/storybooks/storybook/pull/20147) +- Controls: Arrow keys don't work on number controls [#19954](https://github.com/storybooks/storybook/pull/19954) ## 7.0.0-alpha.62 (December 8, 2022) #### Bug Fixes -- Fix new-frameworks automigration failing to read frameworkOptions field [#20128](https://github.com/storybooks/storybook/pull/20128) -- Fix Next.js lower than 12.2.0 [#20129](https://github.com/storybooks/storybook/pull/20129) -- Fix iframe.html not available upon early browser opening [#20123](https://github.com/storybooks/storybook/pull/20123) +- Fix new-frameworks automigration failing to read frameworkOptions field [#20128](https://github.com/storybooks/storybook/pull/20128) +- Fix Next.js lower than 12.2.0 [#20129](https://github.com/storybooks/storybook/pull/20129) +- Fix iframe.html not available upon early browser opening [#20123](https://github.com/storybooks/storybook/pull/20123) #### Maintenance -- Add args generic to CSFExports [#20135](https://github.com/storybooks/storybook/pull/20135) -- Modernize favicon [#20130](https://github.com/storybooks/storybook/pull/20130) -- Telemetry: Add precedingUpgrade data to dev/build/error events [#20136](https://github.com/storybooks/storybook/pull/20136) -- CLI: Replace addon-docs Meta with blocks and add blocks dep [#20133](https://github.com/storybooks/storybook/pull/20133) -- CLI: Fix upgrade --prerelease to upgrade to the next tag [#20126](https://github.com/storybooks/storybook/pull/20126) +- Add args generic to CSFExports [#20135](https://github.com/storybooks/storybook/pull/20135) +- Modernize favicon [#20130](https://github.com/storybooks/storybook/pull/20130) +- Telemetry: Add precedingUpgrade data to dev/build/error events [#20136](https://github.com/storybooks/storybook/pull/20136) +- CLI: Replace addon-docs Meta with blocks and add blocks dep [#20133](https://github.com/storybooks/storybook/pull/20133) +- CLI: Fix upgrade --prerelease to upgrade to the next tag [#20126](https://github.com/storybooks/storybook/pull/20126) ## 7.0.0-alpha.61 (December 7, 2022) #### Features -- NextJS: Support next/navigation in Next.js v13 [#20065](https://github.com/storybooks/storybook/pull/20065) +- NextJS: Support next/navigation in Next.js v13 [#20065](https://github.com/storybooks/storybook/pull/20065) #### Maintenance -- Vite/MDX: Fix mdx compiler for vite [#20121](https://github.com/storybooks/storybook/pull/20121) -- Fix more peerDependencies issues [#20120](https://github.com/storybooks/storybook/pull/20120) +- Vite/MDX: Fix mdx compiler for vite [#20121](https://github.com/storybooks/storybook/pull/20121) +- Fix more peerDependencies issues [#20120](https://github.com/storybooks/storybook/pull/20120) ## 7.0.0-alpha.60 (December 7, 2022) #### Bug Fixes -- Deal with a lot of different edge cases for git URLs [#20115](https://github.com/storybooks/storybook/pull/20115) +- Deal with a lot of different edge cases for git URLs [#20115](https://github.com/storybooks/storybook/pull/20115) #### Maintenance -- Clean up babelModeV7 migration and code [#20117](https://github.com/storybooks/storybook/pull/20117) -- Fix peer dependencies for npm8/pnpm/yarn pnp [#20110](https://github.com/storybooks/storybook/pull/20110) -- Remove peer deps from core-common [#20109](https://github.com/storybooks/storybook/pull/20109) +- Clean up babelModeV7 migration and code [#20117](https://github.com/storybooks/storybook/pull/20117) +- Fix peer dependencies for npm8/pnpm/yarn pnp [#20110](https://github.com/storybooks/storybook/pull/20110) +- Remove peer deps from core-common [#20109](https://github.com/storybooks/storybook/pull/20109) #### Build -- Add more linting config to vs-code settings.json [#20101](https://github.com/storybooks/storybook/pull/20101) +- Add more linting config to vs-code settings.json [#20101](https://github.com/storybooks/storybook/pull/20101) ## 7.0.0-alpha.59 (December 6, 2022) #### Features -- CSF: Add satisfies support to csf-tools [#20088](https://github.com/storybooks/storybook/pull/20088) +- CSF: Add satisfies support to csf-tools [#20088](https://github.com/storybooks/storybook/pull/20088) #### Bug Fixes -- Next.js: only set next/future/image mocks from version 12.2 [#20098](https://github.com/storybooks/storybook/pull/20098) -- Core: Batch the loading of CSF files for `extract()` etc [#20055](https://github.com/storybooks/storybook/pull/20055) -- Fix SSR in external docs via `node` exports [#20083](https://github.com/storybooks/storybook/pull/20083) -- CLI: Improve sb-scripts automigration logic [#20035](https://github.com/storybooks/storybook/pull/20035) +- Next.js: only set next/future/image mocks from version 12.2 [#20098](https://github.com/storybooks/storybook/pull/20098) +- Core: Batch the loading of CSF files for `extract()` etc [#20055](https://github.com/storybooks/storybook/pull/20055) +- Fix SSR in external docs via `node` exports [#20083](https://github.com/storybooks/storybook/pull/20083) +- CLI: Improve sb-scripts automigration logic [#20035](https://github.com/storybooks/storybook/pull/20035) #### Maintenance -- Revert "Telemetry: Add precedingUpgrade data to dev/build events" [#20105](https://github.com/storybooks/storybook/pull/20105) -- Telemetry: Instrument init event [#20097](https://github.com/storybooks/storybook/pull/20097) +- Revert "Telemetry: Add precedingUpgrade data to dev/build events" [#20105](https://github.com/storybooks/storybook/pull/20105) +- Telemetry: Instrument init event [#20097](https://github.com/storybooks/storybook/pull/20097) #### Build -- Fix next [#20106](https://github.com/storybooks/storybook/pull/20106) -- Build: Run sb init locally in sandbox creation [#20100](https://github.com/storybooks/storybook/pull/20100) -- Build: Add missing dependencies to manager, unify TS to ~4.9.3 [#20021](https://github.com/storybooks/storybook/pull/20021) +- Fix next [#20106](https://github.com/storybooks/storybook/pull/20106) +- Build: Run sb init locally in sandbox creation [#20100](https://github.com/storybooks/storybook/pull/20100) +- Build: Add missing dependencies to manager, unify TS to ~4.9.3 [#20021](https://github.com/storybooks/storybook/pull/20021) #### Dependency Upgrades -- Bump store2 to 2.14.2 license clarification [#19899](https://github.com/storybooks/storybook/pull/19899) +- Bump store2 to 2.14.2 license clarification [#19899](https://github.com/storybooks/storybook/pull/19899) ## 7.0.0-alpha.58 (December 5, 2022) #### Features -- Add `--tag` option to `upgrade` script [#20075](https://github.com/storybooks/storybook/pull/20075) -- HTML: Add `html-vite` framework [#19698](https://github.com/storybooks/storybook/pull/19698) -- SvelteKit: Create framework [#20039](https://github.com/storybooks/storybook/pull/20039) +- Add `--tag` option to `upgrade` script [#20075](https://github.com/storybooks/storybook/pull/20075) +- HTML: Add `html-vite` framework [#19698](https://github.com/storybooks/storybook/pull/19698) +- SvelteKit: Create framework [#20039](https://github.com/storybooks/storybook/pull/20039) #### Maintenance -- Core: Remove postcss feature flag [#20003](https://github.com/storybooks/storybook/pull/20003) -- Telemetry: Add precedingUpgrade data to dev/build events [#20084](https://github.com/storybooks/storybook/pull/20084) -- Core: make managerEntries load as ESM, for improved tree-shaking [#20070](https://github.com/storybooks/storybook/pull/20070) +- Core: Remove postcss feature flag [#20003](https://github.com/storybooks/storybook/pull/20003) +- Telemetry: Add precedingUpgrade data to dev/build events [#20084](https://github.com/storybooks/storybook/pull/20084) +- Core: make managerEntries load as ESM, for improved tree-shaking [#20070](https://github.com/storybooks/storybook/pull/20070) ## 7.0.0-alpha.57 (December 3, 2022) #### Bug Fixes -- Vite: Reinstate (deprecated) `StorybookViteConfig` [#20057](https://github.com/storybooks/storybook/pull/20057) -- Docs: using targeted styles, not components to style MDX [#19958](https://github.com/storybooks/storybook/pull/19958) -- Docs: Return to filtering toolbars in docs mode, but don't filter menu [#19959](https://github.com/storybooks/storybook/pull/19959) -- Angular: Don't set `argType.defaultValue` in angular/compodoc [#19935](https://github.com/storybooks/storybook/pull/19935) -- NextJS: Support next/image component in v12/13 properly [#20028](https://github.com/storybooks/storybook/pull/20028) -- Svelte: Use JSDocs in JS CLI templates and put manual enum arg type back as it is not inferred [#20042](https://github.com/storybooks/storybook/pull/20042) +- Vite: Reinstate (deprecated) `StorybookViteConfig` [#20057](https://github.com/storybooks/storybook/pull/20057) +- Docs: using targeted styles, not components to style MDX [#19958](https://github.com/storybooks/storybook/pull/19958) +- Docs: Return to filtering toolbars in docs mode, but don't filter menu [#19959](https://github.com/storybooks/storybook/pull/19959) +- Angular: Don't set `argType.defaultValue` in angular/compodoc [#19935](https://github.com/storybooks/storybook/pull/19935) +- NextJS: Support next/image component in v12/13 properly [#20028](https://github.com/storybooks/storybook/pull/20028) +- Svelte: Use JSDocs in JS CLI templates and put manual enum arg type back as it is not inferred [#20042](https://github.com/storybooks/storybook/pull/20042) #### Maintenance -- CLI: Add a new `version-update` check telemetry event [#20074](https://github.com/storybooks/storybook/pull/20074) -- CLI: Add upgrade telemetry details [#20064](https://github.com/storybooks/storybook/pull/20064) -- Core: added .entries property to error thrown when duplicate stories are present [#20038](https://github.com/storybooks/storybook/pull/20038) +- CLI: Add a new `version-update` check telemetry event [#20074](https://github.com/storybooks/storybook/pull/20074) +- CLI: Add upgrade telemetry details [#20064](https://github.com/storybooks/storybook/pull/20064) +- Core: added .entries property to error thrown when duplicate stories are present [#20038](https://github.com/storybooks/storybook/pull/20038) #### Build -- Improve framework version specific story handling [#20027](https://github.com/storybooks/storybook/pull/20027) -- Fix repro templates script [#20063](https://github.com/storybooks/storybook/pull/20063) -- Build: replace image placeholder url in example stories for nextjs [#20069](https://github.com/storybooks/storybook/pull/20069) -- Build: improve inDevelopment mode for yarn task [#20067](https://github.com/storybooks/storybook/pull/20067) -- Build: revamp interactions e2e test [#20060](https://github.com/storybooks/storybook/pull/20060) +- Improve framework version specific story handling [#20027](https://github.com/storybooks/storybook/pull/20027) +- Fix repro templates script [#20063](https://github.com/storybooks/storybook/pull/20063) +- Build: replace image placeholder url in example stories for nextjs [#20069](https://github.com/storybooks/storybook/pull/20069) +- Build: improve inDevelopment mode for yarn task [#20067](https://github.com/storybooks/storybook/pull/20067) +- Build: revamp interactions e2e test [#20060](https://github.com/storybooks/storybook/pull/20060) #### Dependency Upgrades -- Build: Update jest pretty-format to 29 [#20047](https://github.com/storybooks/storybook/pull/20047) +- Build: Update jest pretty-format to 29 [#20047](https://github.com/storybooks/storybook/pull/20047) ## 7.0.0-alpha.56 (December 1, 2022) #### Bug Fixes -- Addon-interactions: Fix duplicated elements in the panel [#20004](https://github.com/storybooks/storybook/pull/20004) -- Core: Fix ability to use component-level play functions [#17817](https://github.com/storybooks/storybook/pull/17817) -- CLI: Fix `docsPage` automatic migration [#19982](https://github.com/storybooks/storybook/pull/19982) +- Addon-interactions: Fix duplicated elements in the panel [#20004](https://github.com/storybooks/storybook/pull/20004) +- Core: Fix ability to use component-level play functions [#17817](https://github.com/storybooks/storybook/pull/17817) +- CLI: Fix `docsPage` automatic migration [#19982](https://github.com/storybooks/storybook/pull/19982) #### Build -- e2e: change onClick to click to support svelte examples [#20034](https://github.com/storybooks/storybook/pull/20034) +- e2e: change onClick to click to support svelte examples [#20034](https://github.com/storybooks/storybook/pull/20034) ## 7.0.0-alpha.55 (November 30, 2022) #### Features -- CLI: Add TS 4.9 CLI templates [#19986](https://github.com/storybooks/storybook/pull/19986) -- CLI: Remove render functions and infer argTypes for svelte CLI templates [#20007](https://github.com/storybooks/storybook/pull/20007) +- CLI: Add TS 4.9 CLI templates [#19986](https://github.com/storybooks/storybook/pull/19986) +- CLI: Remove render functions and infer argTypes for svelte CLI templates [#20007](https://github.com/storybooks/storybook/pull/20007) #### Bug Fixes -- Svelte: Fix decorators with slots [#19987](https://github.com/storybooks/storybook/pull/19987) -- Core: Open browser after manager is ready [#20005](https://github.com/storybooks/storybook/pull/20005) -- Core: Add backwards support for manager-api package rename [#20006](https://github.com/storybooks/storybook/pull/20006) -- Vite: Fix prebundling [#19978](https://github.com/storybooks/storybook/pull/19978) +- Svelte: Fix decorators with slots [#19987](https://github.com/storybooks/storybook/pull/19987) +- Core: Open browser after manager is ready [#20005](https://github.com/storybooks/storybook/pull/20005) +- Core: Add backwards support for manager-api package rename [#20006](https://github.com/storybooks/storybook/pull/20006) +- Vite: Fix prebundling [#19978](https://github.com/storybooks/storybook/pull/19978) #### Maintenance -- Maintenance: Use typescript legacy templates until our ecosystem fully supports ts 4.9 [#20032](https://github.com/storybooks/storybook/pull/20032) -- CLI: Rollback next TS 4.9 templates as the next babel preset doesn't support satisfies [#20029](https://github.com/storybooks/storybook/pull/20029) -- Addon-docs: Use `.mdx` globs in templates and defaults [#19795](https://github.com/storybooks/storybook/pull/19795) -- Types: Rationalize story-based types and de-prefix [#19919](https://github.com/storybooks/storybook/pull/19919) -- API: Export the controlOrMetaKey fn from manager-api [#19972](https://github.com/storybooks/storybook/pull/19972) -- Blocks: Description stories [#19806](https://github.com/storybooks/storybook/pull/19806) +- Maintenance: Use typescript legacy templates until our ecosystem fully supports ts 4.9 [#20032](https://github.com/storybooks/storybook/pull/20032) +- CLI: Rollback next TS 4.9 templates as the next babel preset doesn't support satisfies [#20029](https://github.com/storybooks/storybook/pull/20029) +- Addon-docs: Use `.mdx` globs in templates and defaults [#19795](https://github.com/storybooks/storybook/pull/19795) +- Types: Rationalize story-based types and de-prefix [#19919](https://github.com/storybooks/storybook/pull/19919) +- API: Export the controlOrMetaKey fn from manager-api [#19972](https://github.com/storybooks/storybook/pull/19972) +- Blocks: Description stories [#19806](https://github.com/storybooks/storybook/pull/19806) #### Build -- Upgrade yarn [#20025](https://github.com/storybooks/storybook/pull/20025) -- Build: Add a retry mechanism for exports file generation [#20018](https://github.com/storybooks/storybook/pull/20018) -- Build: Rollback forking off git-shallow-clone-orb [#20020](https://github.com/storybooks/storybook/pull/20020) -- Build: Clean up @storybook/preview dependencies [#19997](https://github.com/storybooks/storybook/pull/19997) -- No unused locals in tsconfig to disable deepscan [#20012](https://github.com/storybooks/storybook/pull/20012) -- Build: generate the `exports.ts` file in a single pass without `exec` [#20002](https://github.com/storybooks/storybook/pull/20002) -- Build a mechanism to E2E telemetry [#19946](https://github.com/storybooks/storybook/pull/19946) -- Add debug to chromatic task [#19933](https://github.com/storybooks/storybook/pull/19933) -- Build: Sanitise user input in github workflow [#19980](https://github.com/storybooks/storybook/pull/19980) -- Blocks: Add story for Canvas `className` prop, cleanup UI SB `preview.tsx [#19886](https://github.com/storybooks/storybook/pull/19886) -- Change export-generating script to use exec util instead of shelljs [#19979](https://github.com/storybooks/storybook/pull/19979) -- Regen lockfiles [#19967](https://github.com/storybooks/storybook/pull/19967) +- Upgrade yarn [#20025](https://github.com/storybooks/storybook/pull/20025) +- Build: Add a retry mechanism for exports file generation [#20018](https://github.com/storybooks/storybook/pull/20018) +- Build: Rollback forking off git-shallow-clone-orb [#20020](https://github.com/storybooks/storybook/pull/20020) +- Build: Clean up @storybook/preview dependencies [#19997](https://github.com/storybooks/storybook/pull/19997) +- No unused locals in tsconfig to disable deepscan [#20012](https://github.com/storybooks/storybook/pull/20012) +- Build: generate the `exports.ts` file in a single pass without `exec` [#20002](https://github.com/storybooks/storybook/pull/20002) +- Build a mechanism to E2E telemetry [#19946](https://github.com/storybooks/storybook/pull/19946) +- Add debug to chromatic task [#19933](https://github.com/storybooks/storybook/pull/19933) +- Build: Sanitise user input in github workflow [#19980](https://github.com/storybooks/storybook/pull/19980) +- Blocks: Add story for Canvas `className` prop, cleanup UI SB `preview.tsx [#19886](https://github.com/storybooks/storybook/pull/19886) +- Change export-generating script to use exec util instead of shelljs [#19979](https://github.com/storybooks/storybook/pull/19979) +- Regen lockfiles [#19967](https://github.com/storybooks/storybook/pull/19967) #### Dependency Upgrades -- Build: Upgrade jest-specific-snapshot [#19996](https://github.com/storybooks/storybook/pull/19996) -- Upgrade telejson [#19983](https://github.com/storybooks/storybook/pull/19983) +- Build: Upgrade jest-specific-snapshot [#19996](https://github.com/storybooks/storybook/pull/19996) +- Upgrade telejson [#19983](https://github.com/storybooks/storybook/pull/19983) ## 7.0.0-alpha.54 (November 25, 2022) #### Bug Fixes -- Vite: Support environment variables in viteFinal define config [#19905](https://github.com/storybooks/storybook/pull/19905) +- Vite: Support environment variables in viteFinal define config [#19905](https://github.com/storybooks/storybook/pull/19905) #### Maintenance -- Build: split `lib/addons` into manager & preview part, move code to `manager-api` [#19952](https://github.com/storybooks/storybook/pull/19952) -- TypeScript: Satisfy stricter compilerOption rules [#19953](https://github.com/storybooks/storybook/pull/19953) -- API: Rename `api` to `manager-api` [#19944](https://github.com/storybooks/storybook/pull/19944) -- API: Add `preview-api` package [#19749](https://github.com/storybooks/storybook/pull/19749) +- Build: split `lib/addons` into manager & preview part, move code to `manager-api` [#19952](https://github.com/storybooks/storybook/pull/19952) +- TypeScript: Satisfy stricter compilerOption rules [#19953](https://github.com/storybooks/storybook/pull/19953) +- API: Rename `api` to `manager-api` [#19944](https://github.com/storybooks/storybook/pull/19944) +- API: Add `preview-api` package [#19749](https://github.com/storybooks/storybook/pull/19749) #### Build -- Build: Improve security in Github actions [#19949](https://github.com/storybooks/storybook/pull/19949) +- Build: Improve security in Github actions [#19949](https://github.com/storybooks/storybook/pull/19949) #### Dependencies -- NextJS: Add Next13 peer dependency [#19932](https://github.com/storybooks/storybook/pull/19932) - +- NextJS: Add Next13 peer dependency [#19932](https://github.com/storybooks/storybook/pull/19932) ## 7.0.0-alpha.53 (November 24, 2022) #### Bug Fixes -- Angular: Fix "__webpack_require__.nmd is not a function" in v15 [#19937](https://github.com/storybooks/storybook/pull/19937) -- Controls: Exclude `{ table: { disable: true } }` from panel count [#19877](https://github.com/storybooks/storybook/pull/19877) +- Angular: Fix "**webpack_require**.nmd is not a function" in v15 [#19937](https://github.com/storybooks/storybook/pull/19937) +- Controls: Exclude `{ table: { disable: true } }` from panel count [#19877](https://github.com/storybooks/storybook/pull/19877) #### Maintenance -- Core: Prebundle the preview [#19718](https://github.com/storybooks/storybook/pull/19718) -- Builder-vite: Build with tsup [#19895](https://github.com/storybooks/storybook/pull/19895) -- Components: Fix missing export [#19923](https://github.com/storybooks/storybook/pull/19923) +- Core: Prebundle the preview [#19718](https://github.com/storybooks/storybook/pull/19718) +- Builder-vite: Build with tsup [#19895](https://github.com/storybooks/storybook/pull/19895) +- Components: Fix missing export [#19923](https://github.com/storybooks/storybook/pull/19923) #### Build -- Remove the fix we added when enhanced-resolve was broken [#19942](https://github.com/storybooks/storybook/pull/19942) -- Fix CI which was broken by enhanced-resolve [#19936](https://github.com/storybooks/storybook/pull/19936) -- Drop `inDevelopment` from `cra/default-js` [#19934](https://github.com/storybooks/storybook/pull/19934) -- Fix execa import in get-report-message [#19913](https://github.com/storybooks/storybook/pull/19913) +- Remove the fix we added when enhanced-resolve was broken [#19942](https://github.com/storybooks/storybook/pull/19942) +- Fix CI which was broken by enhanced-resolve [#19936](https://github.com/storybooks/storybook/pull/19936) +- Drop `inDevelopment` from `cra/default-js` [#19934](https://github.com/storybooks/storybook/pull/19934) +- Fix execa import in get-report-message [#19913](https://github.com/storybooks/storybook/pull/19913) ## 7.0.0-alpha.52 (November 21, 2022) #### Bug Fixes -- NextJS: Fix v13 `next/link` [#19834](https://github.com/storybooks/storybook/pull/19834) -- Docs: Fix ordering of entries in `Stories` block [#19907](https://github.com/storybooks/storybook/pull/19907) +- NextJS: Fix v13 `next/link` [#19834](https://github.com/storybooks/storybook/pull/19834) +- Docs: Fix ordering of entries in `Stories` block [#19907](https://github.com/storybooks/storybook/pull/19907) #### Build -- Maintenance: fix execa usage in build and check scripts [#19909](https://github.com/storybooks/storybook/pull/19909) -- Use execa 6.x in `scripts` [#19759](https://github.com/storybooks/storybook/pull/19759) -- Build: Create a generate task and use in the sandbox process [#19840](https://github.com/storybooks/storybook/pull/19840) +- Maintenance: fix execa usage in build and check scripts [#19909](https://github.com/storybooks/storybook/pull/19909) +- Use execa 6.x in `scripts` [#19759](https://github.com/storybooks/storybook/pull/19759) +- Build: Create a generate task and use in the sandbox process [#19840](https://github.com/storybooks/storybook/pull/19840) #### Dependency Upgrades -- Upgrade docs-mdx to fix yarn pnp [#19835](https://github.com/storybooks/storybook/pull/19835) +- Upgrade docs-mdx to fix yarn pnp [#19835](https://github.com/storybooks/storybook/pull/19835) ## 7.0.0-alpha.51 (November 19, 2022) #### Bug Fixes -- NextJS: Fix out-of-the-box babel handling [#19842](https://github.com/storybooks/storybook/pull/19842) -- NextJS: Fix import url on windows [#19798](https://github.com/storybooks/storybook/pull/19798) -- UI: Fix panel invisible for any addon listed after the interactions panel [#19771](https://github.com/storybooks/storybook/pull/19771) -- Core: Bail preview builder on failure [#19849](https://github.com/storybooks/storybook/pull/19849) -- Core: Fix double esbuild-register register [#19852](https://github.com/storybooks/storybook/pull/19852) -- Composition: Fix regression in the `#root` to `#storybook-root` change [#19848](https://github.com/storybooks/storybook/pull/19848) -- UI: Fix `showPanel=false` doesn't work on mobile view [#19807](https://github.com/storybooks/storybook/pull/19807) +- NextJS: Fix out-of-the-box babel handling [#19842](https://github.com/storybooks/storybook/pull/19842) +- NextJS: Fix import url on windows [#19798](https://github.com/storybooks/storybook/pull/19798) +- UI: Fix panel invisible for any addon listed after the interactions panel [#19771](https://github.com/storybooks/storybook/pull/19771) +- Core: Bail preview builder on failure [#19849](https://github.com/storybooks/storybook/pull/19849) +- Core: Fix double esbuild-register register [#19852](https://github.com/storybooks/storybook/pull/19852) +- Composition: Fix regression in the `#root` to `#storybook-root` change [#19848](https://github.com/storybooks/storybook/pull/19848) +- UI: Fix `showPanel=false` doesn't work on mobile view [#19807](https://github.com/storybooks/storybook/pull/19807) #### Maintenance -- CLI: Replace degit with giget [#19870](https://github.com/storybooks/storybook/pull/19870) -- Build: Bundle lib/channel-websocket with tsup [#19694](https://github.com/storybooks/storybook/pull/19694) -- Maintenance: Upgrade monorepo to TS 4.9 [#19869](https://github.com/storybooks/storybook/pull/19869) +- CLI: Replace degit with giget [#19870](https://github.com/storybooks/storybook/pull/19870) +- Build: Bundle lib/channel-websocket with tsup [#19694](https://github.com/storybooks/storybook/pull/19694) +- Maintenance: Upgrade monorepo to TS 4.9 [#19869](https://github.com/storybooks/storybook/pull/19869) #### Build -- Build: Downgrade @types/node [#19890](https://github.com/storybooks/storybook/pull/19890) -- Maintenance: Add angular 14 template and skip test runner on angular 15 for now [#19871](https://github.com/storybooks/storybook/pull/19871) -- Build: Upgrade Jest to 29 [#19863](https://github.com/storybooks/storybook/pull/19863) -- Build: Fix chromatic version to 6.11.2 in local scripts [#19889](https://github.com/storybooks/storybook/pull/19889) -- Build: Pin chromatic version to 6.11.2 to temporary fix flakiness [#19874](https://github.com/storybooks/storybook/pull/19874) +- Build: Downgrade @types/node [#19890](https://github.com/storybooks/storybook/pull/19890) +- Maintenance: Add angular 14 template and skip test runner on angular 15 for now [#19871](https://github.com/storybooks/storybook/pull/19871) +- Build: Upgrade Jest to 29 [#19863](https://github.com/storybooks/storybook/pull/19863) +- Build: Fix chromatic version to 6.11.2 in local scripts [#19889](https://github.com/storybooks/storybook/pull/19889) +- Build: Pin chromatic version to 6.11.2 to temporary fix flakiness [#19874](https://github.com/storybooks/storybook/pull/19874) #### Dependency Upgrades -- Bump mdx2-csf dependency [#19885](https://github.com/storybooks/storybook/pull/19885) +- Bump mdx2-csf dependency [#19885](https://github.com/storybooks/storybook/pull/19885) ## 7.0.0-alpha.50 (November 17, 2022) #### Features -- Expose more CSF types in all renderers [#19833](https://github.com/storybooks/storybook/pull/19833) -- CSF: Renamed Framework to Renderer [#19802](https://github.com/storybooks/storybook/pull/19802) +- Expose more CSF types in all renderers [#19833](https://github.com/storybooks/storybook/pull/19833) +- CSF: Renamed Framework to Renderer [#19802](https://github.com/storybooks/storybook/pull/19802) #### Bug Fixes -- Next.js: use file path instead of image contents for next-image-loader-stub [#19858](https://github.com/storybooks/storybook/pull/19858) -- TypeScript: Fix type inference bug with decorators [#19839](https://github.com/storybooks/storybook/pull/19839) -- Vite: Keep using absolute path node_modules splitting [#19836](https://github.com/storybooks/storybook/pull/19836) -- Vite: Fix preview annotation paths on Windows [#19822](https://github.com/storybooks/storybook/pull/19822) -- Fix csf-plugin ignoring options [#19823](https://github.com/storybooks/storybook/pull/19823) -- Controls: Checkbox does not update when using useArgs hook [#19508](https://github.com/storybooks/storybook/pull/19508) +- Next.js: use file path instead of image contents for next-image-loader-stub [#19858](https://github.com/storybooks/storybook/pull/19858) +- TypeScript: Fix type inference bug with decorators [#19839](https://github.com/storybooks/storybook/pull/19839) +- Vite: Keep using absolute path node_modules splitting [#19836](https://github.com/storybooks/storybook/pull/19836) +- Vite: Fix preview annotation paths on Windows [#19822](https://github.com/storybooks/storybook/pull/19822) +- Fix csf-plugin ignoring options [#19823](https://github.com/storybooks/storybook/pull/19823) +- Controls: Checkbox does not update when using useArgs hook [#19508](https://github.com/storybooks/storybook/pull/19508) #### Maintenance -- Jest: switch from Parameters to StorybookInternalParameters [#19853](https://github.com/storybooks/storybook/pull/19853) -- Blocks: Story stories [#19805](https://github.com/storybooks/storybook/pull/19805) -- Blocks: Canvas stories [#19804](https://github.com/storybooks/storybook/pull/19804) -- Tech: TypeScript should check stories and tests as well [#19831](https://github.com/storybooks/storybook/pull/19831) +- Jest: switch from Parameters to StorybookInternalParameters [#19853](https://github.com/storybooks/storybook/pull/19853) +- Blocks: Story stories [#19805](https://github.com/storybooks/storybook/pull/19805) +- Blocks: Canvas stories [#19804](https://github.com/storybooks/storybook/pull/19804) +- Tech: TypeScript should check stories and tests as well [#19831](https://github.com/storybooks/storybook/pull/19831) #### Build -- UI Storybook: Disable sourcemaps when building in CI [#19862](https://github.com/storybooks/storybook/pull/19862) -- Build: Increase max node memory for jobs [#19856](https://github.com/storybooks/storybook/pull/19856) -- CI: improve error reporting mechanism [#19841](https://github.com/storybooks/storybook/pull/19841) -- Fix tests on Windows [#19777](https://github.com/storybooks/storybook/pull/19777) -- Build: Fix benchmark to run on local packages [#19832](https://github.com/storybooks/storybook/pull/19832) -- CI: Report failures on discord [#19801](https://github.com/storybooks/storybook/pull/19801) +- UI Storybook: Disable sourcemaps when building in CI [#19862](https://github.com/storybooks/storybook/pull/19862) +- Build: Increase max node memory for jobs [#19856](https://github.com/storybooks/storybook/pull/19856) +- CI: improve error reporting mechanism [#19841](https://github.com/storybooks/storybook/pull/19841) +- Fix tests on Windows [#19777](https://github.com/storybooks/storybook/pull/19777) +- Build: Fix benchmark to run on local packages [#19832](https://github.com/storybooks/storybook/pull/19832) +- CI: Report failures on discord [#19801](https://github.com/storybooks/storybook/pull/19801) ## 7.0.0-alpha.49 (November 13, 2022) #### Bug Fixes -- Essentials: Fix preview annotations for Vite pnpm support [#19689](https://github.com/storybooks/storybook/pull/19689) +- Essentials: Fix preview annotations for Vite pnpm support [#19689](https://github.com/storybooks/storybook/pull/19689) #### Maintenance -- Build: convert addon-docs to use ts-up [#19790](https://github.com/storybooks/storybook/pull/19790) -- Core: Allow overriding WebView and UrlStore [#19623](https://github.com/storybooks/storybook/pull/19623) -- Storyshots: Support .cjs and .mjs file extensions [#19726](https://github.com/storybooks/storybook/pull/19726) +- Build: convert addon-docs to use ts-up [#19790](https://github.com/storybooks/storybook/pull/19790) +- Core: Allow overriding WebView and UrlStore [#19623](https://github.com/storybooks/storybook/pull/19623) +- Storyshots: Support .cjs and .mjs file extensions [#19726](https://github.com/storybooks/storybook/pull/19726) #### Build -- Build: less noise when compiling [#19808](https://github.com/storybooks/storybook/pull/19808) -- Build: Upgrade bench to `next` [#19791](https://github.com/storybooks/storybook/pull/19791) -- Maintenance: improve error feedback when tasks fail in CI [#19786](https://github.com/storybooks/storybook/pull/19786) -- UI: Enable TurboSnap for UI Storybook [#19767](https://github.com/storybooks/storybook/pull/19767) -- CI: Use a new cadence (ci, pr, merged, daily) and trigger CircleCI from github actions [#19768](https://github.com/storybooks/storybook/pull/19768) -- Maintenance: provide expected failure metadata in junit reports [#19775](https://github.com/storybooks/storybook/pull/19775) +- Build: less noise when compiling [#19808](https://github.com/storybooks/storybook/pull/19808) +- Build: Upgrade bench to `next` [#19791](https://github.com/storybooks/storybook/pull/19791) +- Maintenance: improve error feedback when tasks fail in CI [#19786](https://github.com/storybooks/storybook/pull/19786) +- UI: Enable TurboSnap for UI Storybook [#19767](https://github.com/storybooks/storybook/pull/19767) +- CI: Use a new cadence (ci, pr, merged, daily) and trigger CircleCI from github actions [#19768](https://github.com/storybooks/storybook/pull/19768) +- Maintenance: provide expected failure metadata in junit reports [#19775](https://github.com/storybooks/storybook/pull/19775) ## 7.0.0-alpha.48 (November 7, 2022) #### Breaking Changes -- Preact: Make preact use inline stories (without iframe) by default in docs [#19741](https://github.com/storybooks/storybook/pull/19741) +- Preact: Make preact use inline stories (without iframe) by default in docs [#19741](https://github.com/storybooks/storybook/pull/19741) #### Features -- Angular: Undo template gen removal during deprecation property removal [#19614](https://github.com/storybooks/storybook/pull/19614) -- CSF-tools: Support main.js default exports [#19738](https://github.com/storybooks/storybook/pull/19738) -- Addon-docs: Disable play functions in docs mode unless you set `parameters.docs.autoplay` [#19659](https://github.com/storybooks/storybook/pull/19659) -- Addon-docs: Add docsPage `automatic` to create docs entries for all components [#19713](https://github.com/storybooks/storybook/pull/19713) -- CLI: Add docsPage to all Button/Header story templates [#19715](https://github.com/storybooks/storybook/pull/19715) +- Angular: Undo template gen removal during deprecation property removal [#19614](https://github.com/storybooks/storybook/pull/19614) +- CSF-tools: Support main.js default exports [#19738](https://github.com/storybooks/storybook/pull/19738) +- Addon-docs: Disable play functions in docs mode unless you set `parameters.docs.autoplay` [#19659](https://github.com/storybooks/storybook/pull/19659) +- Addon-docs: Add docsPage `automatic` to create docs entries for all components [#19713](https://github.com/storybooks/storybook/pull/19713) +- CLI: Add docsPage to all Button/Header story templates [#19715](https://github.com/storybooks/storybook/pull/19715) #### Bug Fixes -- Svelte: Fix docs rendering [#19705](https://github.com/storybooks/storybook/pull/19705) -- React: Expose ReactFramework type [#19704](https://github.com/storybooks/storybook/pull/19704) +- Svelte: Fix docs rendering [#19705](https://github.com/storybooks/storybook/pull/19705) +- React: Expose ReactFramework type [#19704](https://github.com/storybooks/storybook/pull/19704) #### Maintenance -- Core: Update index generation to use tags to detect MDX stories [#19712](https://github.com/storybooks/storybook/pull/19712) -- CI: Fix cross OS github actions [#19754](https://github.com/storybooks/storybook/pull/19754) -- Blocks: Redo stories for controls [#19744](https://github.com/storybooks/storybook/pull/19744) -- Blocks: Setup and create example story for blocks with context [#19740](https://github.com/storybooks/storybook/pull/19740) -- Client-api: Fix export from store [#19720](https://github.com/storybooks/storybook/pull/19720) -- Pull renderer+builder from framework's package.json + a known list [#19717](https://github.com/storybooks/storybook/pull/19717) -- CLI: Add automigration to set docsPage = 'automatic' for existing Storybooks [#19716](https://github.com/storybooks/storybook/pull/19716) -- Builder-webpack5: Use import.meta.webpackHot instead of module.hot for check [#19686](https://github.com/storybooks/storybook/pull/19686) -- Fix: Point to correct .d.ts files from export maps [#19724](https://github.com/storybooks/storybook/pull/19724) -- CLI: Remove deprecated `-s` flag on `sb init` [#19585](https://github.com/storybooks/storybook/pull/19585) +- Core: Update index generation to use tags to detect MDX stories [#19712](https://github.com/storybooks/storybook/pull/19712) +- CI: Fix cross OS github actions [#19754](https://github.com/storybooks/storybook/pull/19754) +- Blocks: Redo stories for controls [#19744](https://github.com/storybooks/storybook/pull/19744) +- Blocks: Setup and create example story for blocks with context [#19740](https://github.com/storybooks/storybook/pull/19740) +- Client-api: Fix export from store [#19720](https://github.com/storybooks/storybook/pull/19720) +- Pull renderer+builder from framework's package.json + a known list [#19717](https://github.com/storybooks/storybook/pull/19717) +- CLI: Add automigration to set docsPage = 'automatic' for existing Storybooks [#19716](https://github.com/storybooks/storybook/pull/19716) +- Builder-webpack5: Use import.meta.webpackHot instead of module.hot for check [#19686](https://github.com/storybooks/storybook/pull/19686) +- Fix: Point to correct .d.ts files from export maps [#19724](https://github.com/storybooks/storybook/pull/19724) +- CLI: Remove deprecated `-s` flag on `sb init` [#19585](https://github.com/storybooks/storybook/pull/19585) #### Build -- Build: Fix eslint formatting in scripts [#19765](https://github.com/storybooks/storybook/pull/19765) -- Sandboxes: Fix up stories entry to allow HMR [#19750](https://github.com/storybooks/storybook/pull/19750) -- Fix prepare script on Windows machines [#19762](https://github.com/storybooks/storybook/pull/19762) -- CI: Fix fix handle-release-branches workflow [#19756](https://github.com/storybooks/storybook/pull/19756) -- Build: Cancel workflow in CI on steps failure [#19748](https://github.com/storybooks/storybook/pull/19748) -- CI: Schedule a daily job that runs all sandboxes [#19699](https://github.com/storybooks/storybook/pull/19699) -- Build: Delete node_modules in repro generation [#19734](https://github.com/storybooks/storybook/pull/19734) -- Fix: dts facade generator did not support deep links [#19723](https://github.com/storybooks/storybook/pull/19723) -- Build: Re-enable test-runner for vue-cli [#19706](https://github.com/storybooks/storybook/pull/19706) +- Build: Fix eslint formatting in scripts [#19765](https://github.com/storybooks/storybook/pull/19765) +- Sandboxes: Fix up stories entry to allow HMR [#19750](https://github.com/storybooks/storybook/pull/19750) +- Fix prepare script on Windows machines [#19762](https://github.com/storybooks/storybook/pull/19762) +- CI: Fix fix handle-release-branches workflow [#19756](https://github.com/storybooks/storybook/pull/19756) +- Build: Cancel workflow in CI on steps failure [#19748](https://github.com/storybooks/storybook/pull/19748) +- CI: Schedule a daily job that runs all sandboxes [#19699](https://github.com/storybooks/storybook/pull/19699) +- Build: Delete node_modules in repro generation [#19734](https://github.com/storybooks/storybook/pull/19734) +- Fix: dts facade generator did not support deep links [#19723](https://github.com/storybooks/storybook/pull/19723) +- Build: Re-enable test-runner for vue-cli [#19706](https://github.com/storybooks/storybook/pull/19706) #### Dependency Upgrades -- Upgrade mdx2-csf to fix mdxSource generation [#19766](https://github.com/storybooks/storybook/pull/19766) -- Dependencies: Bump prettier dependency, cleanup config [#19672](https://github.com/storybooks/storybook/pull/19672) -- Vue: Add babel loader 9.0.0 to vue-webpack5 peer dependencies [#19697](https://github.com/storybooks/storybook/pull/19697) +- Upgrade mdx2-csf to fix mdxSource generation [#19766](https://github.com/storybooks/storybook/pull/19766) +- Dependencies: Bump prettier dependency, cleanup config [#19672](https://github.com/storybooks/storybook/pull/19672) +- Vue: Add babel loader 9.0.0 to vue-webpack5 peer dependencies [#19697](https://github.com/storybooks/storybook/pull/19697) ## 7.0.0-alpha.47 (November 1, 2022) #### Features -- CSF-tools: Turn story comments into docs descriptions [#19684](https://github.com/storybooks/storybook/pull/19684) -- CLI: Migrate CLI templates to CSF3 [#19665](https://github.com/storybooks/storybook/pull/19665) -- Vite: Set default `base` for subfolder deployments [#19383](https://github.com/storybooks/storybook/pull/19383) +- CSF-tools: Turn story comments into docs descriptions [#19684](https://github.com/storybooks/storybook/pull/19684) +- CLI: Migrate CLI templates to CSF3 [#19665](https://github.com/storybooks/storybook/pull/19665) +- Vite: Set default `base` for subfolder deployments [#19383](https://github.com/storybooks/storybook/pull/19383) #### Bug Fixes -- Disable keyboard shortcuts during (docs) play functions and add tests [#19668](https://github.com/storybooks/storybook/pull/19668) +- Disable keyboard shortcuts during (docs) play functions and add tests [#19668](https://github.com/storybooks/storybook/pull/19668) #### Maintenance -- Addon-docs: Replace source-loader with csf-plugin [#19680](https://github.com/storybooks/storybook/pull/19680) -- CLI: Move all templates out of cli into renderers [#19664](https://github.com/storybooks/storybook/pull/19664) -- Addon-docs: Remove mdx-compiler-plugin [#19681](https://github.com/storybooks/storybook/pull/19681) +- Addon-docs: Replace source-loader with csf-plugin [#19680](https://github.com/storybooks/storybook/pull/19680) +- CLI: Move all templates out of cli into renderers [#19664](https://github.com/storybooks/storybook/pull/19664) +- Addon-docs: Remove mdx-compiler-plugin [#19681](https://github.com/storybooks/storybook/pull/19681) ## 7.0.0-alpha.46 (October 28, 2022) @@ -2587,10 +2705,10 @@ Bad publish #### Bug Fixes -- CLI: Fix race condition in sb init [#19083](https://github.com/storybooks/storybook/pull/19083) -- Vite: Fix framework option checks, and SSv6 [#19062](https://github.com/storybooks/storybook/pull/19062) -- Core: Fix WebProjectAnnotations export in preview-web for back-compat [#19048](https://github.com/storybooks/storybook/pull/19048) -- Blocks: Fix Checkbox control update when using useArgs hook +- CLI: Fix race condition in sb init [#19083](https://github.com/storybooks/storybook/pull/19083) +- Vite: Fix framework option checks, and SSv6 [#19062](https://github.com/storybooks/storybook/pull/19062) +- Core: Fix WebProjectAnnotations export in preview-web for back-compat [#19048](https://github.com/storybooks/storybook/pull/19048) +- Blocks: Fix Checkbox control update when using useArgs hook #### Maintenance diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md new file mode 100644 index 000000000000..c0ecfbb41227 --- /dev/null +++ b/CHANGELOG.prerelease.md @@ -0,0 +1,695 @@ +## 7.4.0-alpha.2 + +- Addon-docs: Resolve `mdx-react-shim` & `@storybook/global` correctly - [#23941](https://github.com/storybookjs/storybook/pull/23941), thanks [@ndelangen](https://github.com/ndelangen)! +- Addons: Fix key is not a prop warning - [#23935](https://github.com/storybookjs/storybook/pull/23935), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- CLI: Pass package manager to postinstall - [#23913](https://github.com/storybookjs/storybook/pull/23913), thanks [@Integrayshaun](https://github.com/Integrayshaun)! +- CLI: Provide guidance for users who try to initialize Storybook on an empty dir - [#23874](https://github.com/storybookjs/storybook/pull/23874), thanks [@yannbf](https://github.com/yannbf)! +- Logger: Fix double error messages/stack - [#23919](https://github.com/storybookjs/storybook/pull/23919), thanks [@ndelangen](https://github.com/ndelangen)! +- Maintenance: Categorize server errors - [#23912](https://github.com/storybookjs/storybook/pull/23912), thanks [@yannbf](https://github.com/yannbf)! +- Maintenance: Remove need for `react` as peerDependency - [#23897](https://github.com/storybookjs/storybook/pull/23897), thanks [@ndelangen](https://github.com/ndelangen)! +- Maintenance: Remove sourcemaps generation - [#23936](https://github.com/storybookjs/storybook/pull/23936), thanks [@ndelangen](https://github.com/ndelangen)! +- Preset: Add common preset overrides mechanism - [#23915](https://github.com/storybookjs/storybook/pull/23915), thanks [@yannbf](https://github.com/yannbf)! +- UI: Add an experimental API for adding sidebar bottom toolbar - [#23778](https://github.com/storybookjs/storybook/pull/23778), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Add an experimental API for adding sidebar top toolbar - [#23811](https://github.com/storybookjs/storybook/pull/23811), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.4.0-alpha.1 + +- Build: Migrate @storybook/scripts to strict-ts - [#23818](https://github.com/storybookjs/storybook/pull/23818), thanks [@stilt0n](https://github.com/stilt0n)! +- CLI: Exclude addon-styling from upgrade - [#23841](https://github.com/storybookjs/storybook/pull/23841), thanks [@Integrayshaun](https://github.com/Integrayshaun)! +- Core: Add error categorization framework - [#23653](https://github.com/storybookjs/storybook/pull/23653), thanks [@yannbf](https://github.com/yannbf)! +- Core: Fix error thrown if `docs.defaultName` is unset - [#23893](https://github.com/storybookjs/storybook/pull/23893), thanks [@stilt0n](https://github.com/stilt0n)! +- Core: Fix race-condition relating to `addons.setConfig` - [#23802](https://github.com/storybookjs/storybook/pull/23802), thanks [@ndelangen](https://github.com/ndelangen)! +- Maintenance: Move filtering of sidebar into the state - [#23911](https://github.com/storybookjs/storybook/pull/23911), thanks [@ndelangen](https://github.com/ndelangen)! +- Maintenance: Revert "WebpackBuilder: Remove need for `react` as peerDependency" - [#23882](https://github.com/storybookjs/storybook/pull/23882), thanks [@vanessayuenn](https://github.com/vanessayuenn)! +- Manager API: Fix `api.getAddonState`default value - [#23804](https://github.com/storybookjs/storybook/pull/23804), thanks [@sookmax](https://github.com/sookmax)! +- Publish: Don't distribute src files or unnecessary template files - [#23853](https://github.com/storybookjs/storybook/pull/23853), thanks [@shilman](https://github.com/shilman)! +- UI: Add an experimental API for adding sidebar filter functions at runtime - [#23722](https://github.com/storybookjs/storybook/pull/23722), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Removal of experimental components - [#23907](https://github.com/storybookjs/storybook/pull/23907), thanks [@ndelangen](https://github.com/ndelangen)! +- Vue3: Add support for Global Apps install - [#23772](https://github.com/storybookjs/storybook/pull/23772), thanks [@chakAs3](https://github.com/chakAs3)! +- Vue3: Use slot value directly if it's a string in source decorator - [#23784](https://github.com/storybookjs/storybook/pull/23784), thanks [@nasvillanueva](https://github.com/nasvillanueva)! + +## 7.4.0-alpha.0 + +- Index: Fix `*.story.*` CSF indexing - [#23852](https://github.com/storybookjs/storybook/pull/23852), thanks [@shilman](https://github.com/shilman)! + +## 7.3.0-alpha.0 + +- Addons: Deprecate key in addon render function as it is not available anymore - [#23792](https://github.com/storybookjs/storybook/pull/23792), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Build: Support Chrome 100, Safari 15 and Firefox 91 - [#23800](https://github.com/storybookjs/storybook/pull/23800), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- CLI: Update postinstall to look for addon script - [#23791](https://github.com/storybookjs/storybook/pull/23791), thanks [@Integrayshaun](https://github.com/Integrayshaun)! +- UI: Update IconButton and add new Toolbar component - [#23795](https://github.com/storybookjs/storybook/pull/23795), thanks [@cdedreuille](https://github.com/cdedreuille)! +- UI: Upgrade Addon Design - [#23806](https://github.com/storybookjs/storybook/pull/23806), thanks [@cdedreuille](https://github.com/cdedreuille)! +- Vue3: Don't assign values to all slots (rollback to v7.0.27) - [#23697](https://github.com/storybookjs/storybook/pull/23697), thanks [@kasperpeulen](https://github.com/kasperpeulen)! + +## 7.2.2-alpha.1 + +- CSF-Tools: Remove prettier from printConfig - [#23766](https://github.com/storybookjs/storybook/pull/23766), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- UI: Improve Link component - [#23767](https://github.com/storybookjs/storybook/pull/23767), thanks [@cdedreuille](https://github.com/cdedreuille)! +- UI: Improve new `Button` component - [#23765](https://github.com/storybookjs/storybook/pull/23765), thanks [@cdedreuille](https://github.com/cdedreuille)! +- UI: Update Button types to allow for no children on iconOnly buttons - [#23735](https://github.com/storybookjs/storybook/pull/23735), thanks [@cdedreuille](https://github.com/cdedreuille)! +- UI: Upgrade Icon component - [#23680](https://github.com/storybookjs/storybook/pull/23680), thanks [@cdedreuille](https://github.com/cdedreuille)! +- WebpackBuilder: Remove need for `react` as peerDependency - [#23496](https://github.com/storybookjs/storybook/pull/23496), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.2.2-alpha.0 + +- Indexer: Introduce new experimental `indexer` API - #23691, thanks [@JReinhold](https://github.com/jreinhold)! +- Addon-docs, Core, Server: Use new `indexer` API - #23660, thanks [@JReinhold](https://github.com/jreinhold)! +- Server: Add support for tags - #23660, thanks [@JReinhold](https://github.com/jreinhold)! +- Core-server: Improve internal types - #23632, thanks [@JReinhold](https://github.com/jreinhold)! + +## 7.2.0-rc.0 + +- Addon: Create @storybook/addon-themes - [#23524](https://github.com/storybookjs/storybook/pull/23524), thanks [@Integrayshaun](https://github.com/Integrayshaun)! +- Angular: Fix initialization of Storybook in Angular 16.1 - [#23598](https://github.com/storybookjs/storybook/pull/23598), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Gracefully shutdown and cleanup execa child processes - [#23538](https://github.com/storybookjs/storybook/pull/23538), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Dependencies: Downgrade `jest-mock` - [#23597](https://github.com/storybookjs/storybook/pull/23597), thanks [@ndelangen](https://github.com/ndelangen)! +- Dependencies: Upgrade simple-update-notifier - [#23396](https://github.com/storybookjs/storybook/pull/23396), thanks [@dartess](https://github.com/dartess)! +- Storyshots: fix broken storyshots with angular - [#23555](https://github.com/storybookjs/storybook/pull/23555), thanks [@mattlewis92](https://github.com/mattlewis92)! +- TypeScript: Added `expanded` to `CoreCommon_StorybookRefs` to fix typescript errors - [#23488](https://github.com/storybookjs/storybook/pull/23488), thanks [@DotwoodMedia](https://github.com/DotwoodMedia)! +- TypeScript: Downgrade to the last version of type-fest that doesn't need typescript 5.0 - [#23574](https://github.com/storybookjs/storybook/pull/23574), thanks [@ndelangen](https://github.com/ndelangen)! +- Vue2: Source Decorator reactivity - [#23149](https://github.com/storybookjs/storybook/pull/23149), thanks [@chakAs3](https://github.com/chakAs3)! + +## 7.2.0-alpha.0 + +- Angular: Make enableProdMode optional - [#23489](https://github.com/storybookjs/storybook/pull/23489), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Router: Support RegExp in Route component - [#23292](https://github.com/storybookjs/storybook/pull/23292), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Improve tabs component, more type correct, allow for FC as title - [#23288](https://github.com/storybookjs/storybook/pull/23288), thanks [@ndelangen](https://github.com/ndelangen)! +- Addons: Improve code quality by using title as FC & sharing state via useAddonState - [#23298](https://github.com/storybookjs/storybook/pull/23298), thanks [@ndelangen](https://github.com/ndelangen)! +- InteractionsAddon: Improve code quality by using title as FC & sharing state via useAddonState - [#23291](https://github.com/storybookjs/storybook/pull/23291), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Add storyStatus to sidebar UI - [#23342](https://github.com/storybookjs/storybook/pull/23342), thanks [@ndelangen](https://github.com/ndelangen)! +- Addon API: Add experimental page addon type - [#23307](https://github.com/storybookjs/storybook/pull/23307), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: refactor Canvas component so we can improve types for PREVIEW addons and TAB addons - [#23311](https://github.com/storybookjs/storybook/pull/23311), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Improve Button layout and props - [#23356](https://github.com/storybookjs/storybook/pull/23356), thanks [@cdedreuille](https://github.com/cdedreuille)! +- Dependencies: Remove references to api and the 2 deprecated channel packages - [#23384](https://github.com/storybookjs/storybook/pull/23384), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Show the story status in the search results - [#23441](https://github.com/storybookjs/storybook/pull/23441), thanks [@ndelangen](https://github.com/ndelangen)! +- UI: Create new form elements in the new Core UI (Input, TextArea, Select) - [#23469](https://github.com/storybookjs/storybook/pull/23469), thanks [@cdedreuille](https://github.com/cdedreuille)! +- CLI: Improve support of mono repositories - [#23458](https://github.com/storybookjs/storybook/pull/23458), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + +## 7.1.0-rc.2 + +- CLI: Exit when user does not select a storybook project type - [#23201](https://github.com/storybookjs/storybook/pull/23201), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Fix Javascript language detection - [#23426](https://github.com/storybookjs/storybook/pull/23426), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Core: Fix onboarding detection in what's new module - [#23424](https://github.com/storybookjs/storybook/pull/23424), thanks [@yannbf](https://github.com/yannbf)! +- Dependencies: Bump `@sveltejs/vite-plugin-svelte` - [#23233](https://github.com/storybookjs/storybook/pull/23233), thanks [@JReinhold](https://github.com/JReinhold)! +- Telemetry: Add globals usage to project.json - [#23431](https://github.com/storybookjs/storybook/pull/23431), thanks [@shilman](https://github.com/shilman)! + +## 7.1.0-rc.1 + +- Angular: Enable prod mode when Storybook is built - [#23404](https://github.com/storybookjs/storybook/pull/23404), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Angular: Fix esm issue in combination with rxjs v6 - [#23405](https://github.com/storybookjs/storybook/pull/23405), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Fix chevron icon on Configure.mdx page - [#23397](https://github.com/storybookjs/storybook/pull/23397), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Settings: Fix dark mode for what's new page - [#23398](https://github.com/storybookjs/storybook/pull/23398), thanks [@kasperpeulen](https://github.com/kasperpeulen)! + +## 7.1.0-rc.0 + +Promote beta to rc without any changes. 🎉 + +## 7.1.0-beta.3 + +- CLI: Update Configure.mdx - [#23340](https://github.com/storybookjs/storybook/pull/23340), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- React: Move `typescript` from devDependencies to peerDependencies - [#23179](https://github.com/storybookjs/storybook/pull/23179), thanks [@chakAs3](https://github.com/chakAs3)! +- Settings: Add disable whatsnew UI - [#23381](https://github.com/storybookjs/storybook/pull/23381), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Settings: New about page design - [#23357](https://github.com/storybookjs/storybook/pull/23357), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Svelte-Webpack: Support Svelte v4 - [#23336](https://github.com/storybookjs/storybook/pull/23336), thanks [@JReinhold](https://github.com/JReinhold)! +- UI: Remove css zoom - [#21303](https://github.com/storybookjs/storybook/pull/21303), thanks [@Luk-z](https://github.com/Luk-z)! + +## 7.1.0-beta.2 + +- Next.js: Fix for @nx/react/plugin/storybook with stories containing SVGs - [#23210](https://github.com/storybookjs/storybook/pull/23210), thanks [@daves28](https://github.com/daves28)! +- Yarn: Downgrade yarnpkg packages and support virtual files properly - [#23354](https://github.com/storybookjs/storybook/pull/23354), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + +## 7.1.0-beta.1 + +- Addon-docs: Add opt-in table of contents - [#23142](https://github.com/storybookjs/storybook/pull/23142), thanks [@shilman](https://github.com/shilman)! +- SyntaxHighlighter: Expose registerLanguage - [#23166](https://github.com/storybookjs/storybook/pull/23166), thanks [@ndelangen](https://github.com/ndelangen)! +- Yarn: Fix pnp package resolution on Windows - [#23274](https://github.com/storybookjs/storybook/pull/23274), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Yarn: Pin version of @yarnpkg packages to support Node 16 - [#23330](https://github.com/storybookjs/storybook/pull/23330), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + +## 7.1.0-beta.0 + +- Settings: Add what's new page, remove release notes - [#23202](https://github.com/storybookjs/storybook/pull/23202), thanks [@kasperpeulen](https://github.com/kasperpeulen)! + +## 7.1.0-alpha.44 + +- Next.js: Fix next/image usage in latest Next.js release - [#23296](https://github.com/storybookjs/storybook/pull/23296), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + +## 7.1.0-alpha.43 + +- Addons: Remove deprecated addPanel use and misc improvements - [#23284](https://github.com/storybookjs/storybook/pull/23284), thanks [@ndelangen](https://github.com/ndelangen)! +- CSF-tools: Allow type checking in story title - [#22791](https://github.com/storybookjs/storybook/pull/22791), thanks [@honzahruby](https://github.com/honzahruby)! + +## 7.1.0-alpha.42 + +- CLI: Fix pnp paths logic in storybook metadata - [#23259](https://github.com/storybookjs/storybook/pull/23259), thanks [@yannbf](https://github.com/yannbf)! + +## 7.1.0-alpha.41 + +- Controls: Fix UI to add array items - [#22993](https://github.com/storybookjs/storybook/pull/22993), thanks [@sookmax](https://github.com/sookmax)! +- Next.js: Support disableStaticImages setting - [#23167](https://github.com/storybookjs/storybook/pull/23167), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + +## 7.1.0-alpha.40 + +- CLI: Parse pnp paths in storybook metadata - [#23199](https://github.com/storybookjs/storybook/pull/23199), thanks [@yannbf](https://github.com/yannbf)! +- Dependencies: Pin `file-system-cache` to 2.3.0 - [#23221](https://github.com/storybookjs/storybook/pull/23221), thanks [@JReinhold](https://github.com/JReinhold)! +- PNPM: Hide ModuleNotFound error in pnpm pnp mode - [#23195](https://github.com/storybookjs/storybook/pull/23195), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Svelte: Support v4 - [#22905](https://github.com/storybookjs/storybook/pull/22905), thanks [@JReinhold](https://github.com/JReinhold)! + +## 7.1.0-alpha.39 + +- CLI: Add new Configure page to templates - [#23171](https://github.com/storybookjs/storybook/pull/23171), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Fix storybook package manager command in init - [#23169](https://github.com/storybookjs/storybook/pull/23169), thanks [@yannbf](https://github.com/yannbf)! +- React: Add addon-onboarding as part of init - [#22972](https://github.com/storybookjs/storybook/pull/22972), thanks [@yannbf](https://github.com/yannbf)! + +## 7.1.0-alpha.38 + +- CLI: Fix installing user's project before init - [#23145](https://github.com/storybookjs/storybook/pull/23145), thanks [@ndelangen](https://github.com/ndelangen)! +- CLI: Fix storybook dev after storybook init via subprocess - [#23144](https://github.com/storybookjs/storybook/pull/23144), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Suppress dev-server info table when `--quiet` is true - [#23133](https://github.com/storybookjs/storybook/pull/23133), thanks [@syabro](https://github.com/syabro)! +- Core: Allow `.mjs` extension for CSF stories - [#23125](https://github.com/storybookjs/storybook/pull/23125), thanks [@idesigncode](https://github.com/idesigncode)! +- Core: Fix compat by disabling name mangling in `esbuild` require - [#22486](https://github.com/storybookjs/storybook/pull/22486), thanks [@youngboy](https://github.com/youngboy)! +- Docs: Fix scroll location on docs navigation - [#22714](https://github.com/storybookjs/storybook/pull/22714), thanks [@gitstart-storybook](https://github.com/gitstart-storybook)! +- Interactions: Fix deeply nested nodes in the panel debugger - [#23108](https://github.com/storybookjs/storybook/pull/23108), thanks [@yannbf](https://github.com/yannbf)! + +## 7.1.0-alpha.37 + +- Ecosystem: Prebundle node-logger and make it CJS only - [#23109](https://github.com/storybookjs/storybook/pull/23109), thanks [@ndelangen](https://github.com/ndelangen)! +- NextJS: Fix `useParams` support - [#22946](https://github.com/storybookjs/storybook/pull/22946), thanks [@gitstart-storybook](https://github.com/gitstart-storybook)! +- NextJS: Fix fonts not loading with 3+ words in name - [#23121](https://github.com/storybookjs/storybook/pull/23121), thanks [@ygkn](https://github.com/ygkn)! +- Webpack: Fix channel format for loading status - [#23139](https://github.com/storybookjs/storybook/pull/23139), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.1.0-alpha.36 + +- CLI: Fix "Invalid version null" issues by improved version detection - [#22642](https://github.com/storybookjs/storybook/pull/22642), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Prebundle boxen to resolve a ESM/CJS incompatibility - [#23080](https://github.com/storybookjs/storybook/pull/23080), thanks [@ndelangen](https://github.com/ndelangen)! +- Telemetry: Count onboarding stories - [#23092](https://github.com/storybookjs/storybook/pull/23092), thanks [@shilman](https://github.com/shilman)! + +## 7.1.0-alpha.35 + +- CLI: Skip builder selection for react native - [#23042](https://github.com/storybookjs/storybook/pull/23042), thanks [@dannyhw](https://github.com/dannyhw)! +- Core: Fix core-common to use node-fetch - [#23077](https://github.com/storybookjs/storybook/pull/23077), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.1.0-alpha.34 + +- Angular: Fix ivy preset - [#23070](https://github.com/storybookjs/storybook/pull/23070), thanks [@ndelangen](https://github.com/ndelangen)! +- CLI: Change Button stories layout for React starter templates - [#22951](https://github.com/storybookjs/storybook/pull/22951), thanks [@yannbf](https://github.com/yannbf)! + +## 7.1.0-alpha.33 + +- Bug: Fix for angular 16.1 compatibility - [#23064](https://github.com/storybookjs/storybook/pull/23064), thanks [@ndelangen](https://github.com/ndelangen)! +- Builder-vite: Fix lib/channels dependency - [#23049](https://github.com/storybookjs/storybook/pull/23049), thanks [@ndelangen](https://github.com/ndelangen)! +- CLI: Improve steps in storybook init - [#22502](https://github.com/storybookjs/storybook/pull/22502), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Run `storybook dev` as part of `storybook init` - [#22928](https://github.com/storybookjs/storybook/pull/22928), thanks [@yannbf](https://github.com/yannbf)! +- Core: Merge channels into a single package - [#23032](https://github.com/storybookjs/storybook/pull/23032), thanks [@ndelangen](https://github.com/ndelangen)! +- Core: Unify cache location configurability - [#22079](https://github.com/storybookjs/storybook/pull/22079), thanks [@kubijo](https://github.com/kubijo)! + +## 7.1.0-alpha.32 + +- Build: Remove `babel-core` & upgrade `esbuild` - [#23017](https://github.com/storybookjs/storybook/pull/23017), thanks [@ndelangen](https://github.com/ndelangen)! +- Core: Disable esbuild on files imported from `node_modules` - [#23018](https://github.com/storybookjs/storybook/pull/23018), thanks [@tmeasday](https://github.com/tmeasday)! +- Core: Integrate serverChannel into channel - [#22940](https://github.com/storybookjs/storybook/pull/22940), thanks [@ndelangen](https://github.com/ndelangen)! +- React: Lazy import `react-docgen-typescript-plugin` - [#23019](https://github.com/storybookjs/storybook/pull/23019), thanks [@tmeasday](https://github.com/tmeasday)! + +## 7.1.0-alpha.31 + +- Dependencies: Set vue-component-type-helpers to latest - [#23015](https://github.com/storybookjs/storybook/pull/23015), thanks [@ndelangen](https://github.com/ndelangen)! +- Dependencies: Upgrade `nanoid`, prebundle it, upgrade `remark`, cleanup some `.md` files for warnings - [#23005](https://github.com/storybookjs/storybook/pull/23005), thanks [@ndelangen](https://github.com/ndelangen)! +- Dependencies: Use `latest` version of `vue-tsc` & sync versions of `angular` - [#23011](https://github.com/storybookjs/storybook/pull/23011), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.1.0-alpha.30 + +- Web-components: Fix custom-elements order of property application - [#19183](https://github.com/storybookjs/storybook/pull/19183), thanks [@sonntag-philipp](https://github.com/sonntag-philipp)! +- Dependencies: Remove `shelljs` use - [#22995](https://github.com/storybookjs/storybook/pull/22995), thanks [@ndelangen](https://github.com/ndelangen)! +- Dependencies: Upgrade Jest related packages - [#22979](https://github.com/storybookjs/storybook/pull/22979), thanks [@ndelangen](https://github.com/ndelangen)! +- Core: Fix `builder-manager` adding multiple dashes to relative path - [#22974](https://github.com/storybookjs/storybook/pull/22974), thanks [@MarioCadenas](https://github.com/MarioCadenas)! +- Core: Add JSDoc comments to `preview-api` APIs - [#22975](https://github.com/storybookjs/storybook/pull/22975), thanks [@ndelangen](https://github.com/ndelangen)! +- Vue3: Fix source decorator to generate correct story code - [#22518](https://github.com/storybookjs/storybook/pull/22518), thanks [@chakAs3](https://github.com/chakAs3)! +- Core: Add JSDoc comments to `manager-api` APIs - [#22968](https://github.com/storybookjs/storybook/pull/22968), thanks [@ndelangen](https://github.com/ndelangen)! +- Core: Improve `of={...}` DocBlock error in story index - [#22782](https://github.com/storybookjs/storybook/pull/22782), thanks [@shilman](https://github.com/shilman)! +- UI: Simplify `overlayscrollbars` component - [#22963](https://github.com/storybookjs/storybook/pull/22963), thanks [@ndelangen](https://github.com/ndelangen)! +- Angular: Add `--open`/`--no-open` flag to `dev` command - [#22964](https://github.com/storybookjs/storybook/pull/22964), thanks [@yannbf](https://github.com/yannbf)! +- Angular: Silence compodoc when running storybook with --quiet - [#22957](https://github.com/storybookjs/storybook/pull/22957), thanks [@yannbf](https://github.com/yannbf)! +- React: Fix decorators to conditionally render children - [#22336](https://github.com/storybookjs/storybook/pull/22336), thanks [@redbugz](https://github.com/redbugz)! +- Addon-measure: Migrate to strict TS - [#22402](https://github.com/storybookjs/storybook/pull/22402), thanks [@efrenaragon96](https://github.com/efrenaragon96)! +- Feature: Add experimental status API - [#22890](https://github.com/storybookjs/storybook/pull/22890), thanks [@ndelangen](https://github.com/ndelangen)! + +## 7.1.0-alpha.29 (June 6, 2023) + +#### Bug Fixes + +- CLI: Fix upgrade notification message [#22933](https://github.com/storybooks/storybook/pull/22933) +- Core: Fix indexing errors by excluding node_modules stories [#22873](https://github.com/storybooks/storybook/pull/22873) + +## 7.1.0-alpha.28 (June 6, 2023) + +#### Bug Fixes + +- Docs: E2E tests for Source block update fix [#22835](https://github.com/storybooks/storybook/pull/22835) +- Docs: Fix Source block snippet updates [#22807](https://github.com/storybooks/storybook/pull/22807) + +## 7.1.0-alpha.27 (June 4, 2023) + +#### Features + +- Webpack: Add option to minify using swc [#22843](https://github.com/storybooks/storybook/pull/22843) + +#### Bug Fixes + +- Server: Fix .stories.yml support [#22906](https://github.com/storybooks/storybook/pull/22906) +- Storysource: Fix StyledSyntaxHighlighter to wrap long lines [#22541](https://github.com/storybooks/storybook/pull/22541) + +#### Maintenance + +- TS: Migrate @storybook/web-components to strict TS [#22399](https://github.com/storybooks/storybook/pull/22399) +- TS: Migrate @storybook/addon-storyshots-puppeteer to strict TS [#22407](https://github.com/storybooks/storybook/pull/22407) +- TS: Migrate @storybook/addon-jest to strict TS [#22389](https://github.com/storybooks/storybook/pull/22389) +- TS: Migrate @storybook/addon-mdx-gfm to strict TS [#22659](https://github.com/storybooks/storybook/pull/22659) +- TS: Migrate @storybook/addon-storyshots to strict TS [#22487](https://github.com/storybooks/storybook/pull/22487) + +#### Build + +- Error on YN0060 - INCOMPATIBLE_PEER_DEPENDENCY [#22398](https://github.com/storybooks/storybook/pull/22398) +- Build: upgrade yarn [#22855](https://github.com/storybooks/storybook/pull/22855) +- Add CODEOWNERS [#22869](https://github.com/storybooks/storybook/pull/22869) + +## 7.1.0-alpha.26 (May 31, 2023) + +#### Bug Fixes + +- Addons: Fix `Addon_BaseAnnotations` type [#22771](https://github.com/storybooks/storybook/pull/22771) +- Viewport: Fix viewport menu [#22829](https://github.com/storybooks/storybook/pull/22829) + +#### Maintenance + +- NextJS: Fix types [#22836](https://github.com/storybooks/storybook/pull/22836) +- React: Update babel dependencies to fix sandbox creation [#22824](https://github.com/storybooks/storybook/pull/22824) + +#### Build + +- Build: sort package json files [#22847](https://github.com/storybooks/storybook/pull/22847) +- Build: cleanup the test-storybooks [#22846](https://github.com/storybooks/storybook/pull/22846) +- Build: fix the theme output during development [#22841](https://github.com/storybooks/storybook/pull/22841) +- Build: move deprecated packages [#22753](https://github.com/storybooks/storybook/pull/22753) +- Build: move builders [#22751](https://github.com/storybooks/storybook/pull/22751) + +## 7.1.0-alpha.25 (May 26, 2023) + +#### Bug Fixes + +- Vue3: Fix TS 5.0 compat with vue-component-type-helpers [#22814](https://github.com/storybooks/storybook/pull/22814) + +#### Build + +- Build: Fix the local storybook [#22805](https://github.com/storybooks/storybook/pull/22805) +- Build: Add more checks to ci:daily workflow [#22815](https://github.com/storybooks/storybook/pull/22815) +- Build: Revert conditional decorator story and downgrade Typescript version [#22812](https://github.com/storybooks/storybook/pull/22812) + +## 7.1.0-alpha.24 (May 26, 2023) + +#### Bug Fixes + +- Vue3: Fix reactive args updates in decorators [#22717](https://github.com/storybooks/storybook/pull/22717) + +#### Build + +- Build: Update Nx to latest version [#22694](https://github.com/storybooks/storybook/pull/22694) + +## 7.1.0-alpha.23 (May 24, 2023) + +#### Bug Fixes + +- Core: Fix `managerHead` preset in `main.ts` [#22701](https://github.com/storybooks/storybook/pull/22701) + +## 7.1.0-alpha.22 (May 24, 2023) + +#### Bug Fixes + +- Vite: Fix pnpm support by replacing @storybook/global with `window` [#22709](https://github.com/storybooks/storybook/pull/22709) + +## 7.1.0-alpha.21 (May 23, 2023) + +#### Features + +- Webpack: Add option to use swc instead of babel [#22075](https://github.com/storybooks/storybook/pull/22075) + +#### Bug Fixes + +- UI: Fix `.mp3` support for builder-manager [#22699](https://github.com/storybooks/storybook/pull/22699) +- CLI: Fix support for BROWSER env var [#21473](https://github.com/storybooks/storybook/pull/21473) +- Vite: Fix missing @storybook/global dependency [#22700](https://github.com/storybooks/storybook/pull/22700) +- Next.js: Fix compatibility with Next 13.4.3 [#22697](https://github.com/storybooks/storybook/pull/22697) +- CLI: Fix error parsing on NPM proxy [#22690](https://github.com/storybooks/storybook/pull/22690) +- Core: Only connect to serverChannel in development mode [#22575](https://github.com/storybooks/storybook/pull/22575) +- CLI: Improve error handling when dealing with angular.json files [#22663](https://github.com/storybooks/storybook/pull/22663) +- CLI: Skip prompting for eslint plugin with --yes flag [#22651](https://github.com/storybooks/storybook/pull/22651) +- CLI: Fix upgrade to not upgrade nx packages [#22419](https://github.com/storybooks/storybook/pull/22419) +- CLI: Only handle CTRL + C on init event [#22687](https://github.com/storybooks/storybook/pull/22687) +- Angular: Remove console.log [#22671](https://github.com/storybooks/storybook/pull/22671) + +## 7.1.0-alpha.20 (May 20, 2023) + +#### Bug Fixes + +- CLI: Account for windows paths when copying templates [#22644](https://github.com/storybooks/storybook/pull/22644) +- CLI: Fix pnpm init command [#22635](https://github.com/storybooks/storybook/pull/22635) +- UI: Add legacy font formats [#22576](https://github.com/storybooks/storybook/pull/22576) +- Webpack: Remove the alias for `global` [#22393](https://github.com/storybooks/storybook/pull/22393) + +#### Maintenance + +- CLI: Reduce installation noise and improve error handling [#22554](https://github.com/storybooks/storybook/pull/22554) +- Actions: Fix type of withActions [#22455](https://github.com/storybooks/storybook/pull/22455) + +#### Build + +- Build: add discord notification when generating sandboxes fails [#22638](https://github.com/storybooks/storybook/pull/22638) +- Build: set correct ref on sandboxes Github action [#22625](https://github.com/storybooks/storybook/pull/22625) +- Build: Fix sandbox generation scripts [#22620](https://github.com/storybooks/storybook/pull/22620) + +## 7.1.0-alpha.19 (May 16, 2023) + +#### Bug Fixes + +- Normalize paths exposed to vite-builder's `storybook-stories.js` file [#22327](https://github.com/storybooks/storybook/pull/22327) + +## 7.1.0-alpha.18 (May 15, 2023) + +#### Bug Fixes + +- CLI: Fix `getFrameworkPackage` logic [#22559](https://github.com/storybooks/storybook/pull/22559) +- CLI: Remove automigrate reference from init command [#22561](https://github.com/storybooks/storybook/pull/22561) + +#### Maintenance + +- CLI: Detach automigrate command from storybook init [#22523](https://github.com/storybooks/storybook/pull/22523) + +## 7.1.0-alpha.17 (May 12, 2023) + +#### Bug Fixes + +- CLI: Fix storybook upgrade precheckfailure object [#22517](https://github.com/storybooks/storybook/pull/22517) +- CLI: Throw errors instead of rejecting promises [#22515](https://github.com/storybooks/storybook/pull/22515) +- CSF: Expose story id in composeStories [#22471](https://github.com/storybooks/storybook/pull/22471) +- CLI: Remove unsupported frameworks/renderers and improve builder detection [#22492](https://github.com/storybooks/storybook/pull/22492) + +## 7.1.0-alpha.16 (May 11, 2023) + +#### Bug Fixes + +- Web-components: Fix source decorator to handle document fragments [#22513](https://github.com/storybooks/storybook/pull/22513) +- Angular: Adjust child process I/O for compodoc command [#22441](https://github.com/storybooks/storybook/pull/22441) +- Core: Fix windows path error in StoryStore v6 [#22512](https://github.com/storybooks/storybook/pull/22512) + +#### Maintenance + +- CLI: Prompt to force initialization when storybook is detected [#22392](https://github.com/storybooks/storybook/pull/22392) +- UI: Fix css inconsistency in Button and Icon components [#22497](https://github.com/storybooks/storybook/pull/22497) + +#### Build + +- Sandboxes: Pin @vitejs/plugin-react to avoid conflict [#22501](https://github.com/storybooks/storybook/pull/22501) + +## 7.1.0-alpha.15 (May 11, 2023) + +#### Bug Fixes + +- CLI: Do not show a migration summary on sb init [#22109](https://github.com/storybooks/storybook/pull/22109) +- Toolbars: Fix title behavior in UI [#22496](https://github.com/storybooks/storybook/pull/22496) +- UI: Show current search shortcut in search box sidebar [#21619](https://github.com/storybooks/storybook/pull/21619) +- Measure: Deactivate when switching to Docs mode [#21602](https://github.com/storybooks/storybook/pull/21602) +- Outline: Fix additional outline border in docs mode [#21773](https://github.com/storybooks/storybook/pull/21773) + +## 7.1.0-alpha.14 (May 9, 2023) + +#### Bug Fixes + +- CLI: Scope styles in sample components from the CLI templates [#22162](https://github.com/storybooks/storybook/pull/22162) +- CLI: Fix copyTemplate failures on `init` [#22375](https://github.com/storybooks/storybook/pull/22375) +- CLI: Fix server init [#22443](https://github.com/storybooks/storybook/pull/22443) +- Server: Add json indexer [#22460](https://github.com/storybooks/storybook/pull/22460) +- React: Use correct default annotations for composeStories [#22308](https://github.com/storybooks/storybook/pull/22308) +- UI: Fix opacity of list-item color [#22074](https://github.com/storybooks/storybook/pull/22074) + +#### Maintenance + +- CLI: Refactor package manager methods to be async [#22401](https://github.com/storybooks/storybook/pull/22401) +- Angular: Improve Error message for angular.json not found [#22377](https://github.com/storybooks/storybook/pull/22377) +- TypeScript: Migrate @storybook/instrumenter to strict TS [#22370](https://github.com/storybooks/storybook/pull/22370) +- TypeScript: Migrate @storybook/core-events to strict TS [#22448](https://github.com/storybooks/storybook/pull/22448) +- TypeScript: Migrate @storybook/core-client to strict TS [#22447](https://github.com/storybooks/storybook/pull/22447) +- TypeScript: Migrate @storybook/react-vite and @storybook/preact-vite to strict TS [#22428](https://github.com/storybooks/storybook/pull/22428) +- TypeScript: Migrate @storybook/svelte-vite to strict TS [#22411](https://github.com/storybooks/storybook/pull/22411) +- TypeScript: Migrate @storybook/types to strict TS [#22397](https://github.com/storybooks/storybook/pull/22397) +- TypeScript: Migrate @storybook/addon-storysource to strict TS [#22367](https://github.com/storybooks/storybook/pull/22367) +- TypeScript: Migrate @storybook/client-api to strict TS [#22421](https://github.com/storybooks/storybook/pull/22421) +- TypeScript: Migrate @storybook/sveltekit to strict TS [#22412](https://github.com/storybooks/storybook/pull/22412) +- TypeScript: Migrate @storybook/source-loader to strict TS [#22420](https://github.com/storybooks/storybook/pull/22420) + +## 7.1.0-alpha.13 (May 5, 2023) + +#### Bug Fixes + +- Core: Fix virtual modules excluded for babel-loader [#22331](https://github.com/storybooks/storybook/pull/22331) + +#### Maintenance + +- Angular: Allow TypeScript 4.0.0 and 5.0.0 [#22391](https://github.com/storybooks/storybook/pull/22391) +- Angular: Enable Angular Unit tests [#22355](https://github.com/storybooks/storybook/pull/22355) +- TypeScript: Migrate @storybook/theming to strict TS [#22376](https://github.com/storybooks/storybook/pull/22376) +- TypeScript: Migrate @storybook/channel-websocket to strict TS [#22364](https://github.com/storybooks/storybook/pull/22364) +- TypeScript: Migrate @storybook/addon-outline to strict TS [#22369](https://github.com/storybooks/storybook/pull/22369) +- TypeScript: Migrate @storybook/addon-viewbook to strict ts [#22339](https://github.com/storybooks/storybook/pull/22339) +- TypeScript: Migrate @storybook/channels to strict TS [#22365](https://github.com/storybooks/storybook/pull/22365) + +#### Build + +- Add Angular Prerelease sandbox [#22379](https://github.com/storybooks/storybook/pull/22379) + +## 7.1.0-alpha.12 (May 3, 2023) + +#### Bug Fixes + +- Migrate: skip the automigration for gf markdown when user isn't using mdx [#22186](https://github.com/storybooks/storybook/pull/22186) +- UI: Addon panel does not update after disabling/enabling an addon [#22258](https://github.com/storybooks/storybook/pull/22258) +- Typescript: Fix bad typings caused by tsup bug [#22261](https://github.com/storybooks/storybook/pull/22261) +- Core: Fix source snippets for stories with mapped args [#22135](https://github.com/storybooks/storybook/pull/22135) + +#### Maintenance + +- Telemetry: Persist sessionId across runs [#22325](https://github.com/storybooks/storybook/pull/22325) +- Packaging: Move `types` condition to the front in all `package.json.exports` maps [#22321](https://github.com/storybooks/storybook/pull/22321) +- Packaging: Don't generate ESM dist for preset files [#22330](https://github.com/storybooks/storybook/pull/22330) +- Typescript: Migrate `@storybook/csf-tools` to strict TS [#22312](https://github.com/storybooks/storybook/pull/22312) +- Typescript: Migrate @storybook/postinstall and @storybook/router to strict TS [#22200](https://github.com/storybooks/storybook/pull/22200) +- Maintenance: Fix urls for all packages in package.json [#22101](https://github.com/storybooks/storybook/pull/22101) +- Docs: Improve component typings [#22050](https://github.com/storybooks/storybook/pull/22050) + +#### Build + +- Build: Comment out flaky test [#22310](https://github.com/storybooks/storybook/pull/22310) +- Build: Migrate `@storybook/web-components-vite` to strict TS [#22309](https://github.com/storybooks/storybook/pull/22309) +- Build: Migrate `@storybook/html-vite` to strict TS [#22293](https://github.com/storybooks/storybook/pull/22293) +- Build: Migrate @storybook/preset-vue-webpack to strict TS [#22320](https://github.com/storybooks/storybook/pull/22320) +- Build: Use `next` branch for sandbox and repro commands [#22238](https://github.com/storybooks/storybook/pull/22238) + +## 7.1.0-alpha.11 (April 28, 2023) + +#### Features + +- Feature: Add support for Angular 16 [#22096](https://github.com/storybooks/storybook/pull/22096) + +#### Bug Fixes + +- Vue3: Rollback v7 breaking change and keep reactive v6-compatible API [#22229](https://github.com/storybooks/storybook/pull/22229) + +#### Maintenance + +- Core: Add tests for mapping behaviour in #22169 [#22301](https://github.com/storybooks/storybook/pull/22301) + +#### Dependency Upgrades + +- Update glob to v10.0.0 [#22171](https://github.com/storybooks/storybook/pull/22171) + +## 7.1.0-alpha.10 (April 28, 2023) + +#### Bug Fixes + +- Vue3: Fix compiler error when there is double tag [#22286](https://github.com/storybooks/storybook/pull/22286) +- Args: Fix multiple mapped args return array of labels [#22169](https://github.com/storybooks/storybook/pull/22169) +- Angular: Fix storyshots by removing deprecated import [#22134](https://github.com/storybooks/storybook/pull/22134) +- Ember: Fix wrong path [#22203](https://github.com/storybooks/storybook/pull/22203) +- CLI: Add web-components webpack5 to missing-babelrc automigration [#22202](https://github.com/storybooks/storybook/pull/22202) +- Docs: Fix inline story style [#21870](https://github.com/storybooks/storybook/pull/21870) + +#### Build + +- Fix vue-cli/default-js sandbox [#22259](https://github.com/storybooks/storybook/pull/22259) +- Core: Fix `DOCS_RENDERED` test [#22255](https://github.com/storybooks/storybook/pull/22255) +- Add regex to ignore outdated Browserslist in Jest initialization base file [#22260](https://github.com/storybooks/storybook/pull/22260) + +## 7.1.0-alpha.9 (April 26, 2023) + +#### Features + +- NextJS: Allow disabling next/image lazy loading [#21909](https://github.com/storybooks/storybook/pull/21909) +- Core: Allow Flow syntax in stories [#21859](https://github.com/storybooks/storybook/pull/21859) + +#### Bug Fixes + +- Vue3: Support multiple setup functions [#22170](https://github.com/storybooks/storybook/pull/22170) +- UI: Fix shift + 7 shortcut to focus search field [#22073](https://github.com/storybooks/storybook/pull/22073) +- UI: Fix controls missing when navigating from story [#21967](https://github.com/storybooks/storybook/pull/21967) + +#### Maintenance + +- Core: Rename manager UI mjs to js [#22247](https://github.com/storybooks/storybook/pull/22247) +- Remove dead code [#22019](https://github.com/storybooks/storybook/pull/22019) +- Vue3: Move TS stories into a separate folder [#22235](https://github.com/storybooks/storybook/pull/22235) + +#### Build + +- Build: Migrate @storybook/addon-docs to strict-ts [#22180](https://github.com/storybooks/storybook/pull/22180) +- Build: Migrate @storybook/highlight to strict TS [#22181](https://github.com/storybooks/storybook/pull/22181) +- Build: Enable strict TS by default [#22143](https://github.com/storybooks/storybook/pull/22143) + +## 7.1.0-alpha.8 (April 24, 2023) + +#### Features + +- Core: Support custom hosts using window.location server channel URL [#22055](https://github.com/storybooks/storybook/pull/22055) + +#### Bug Fixes + +- Addon-actions: Fix ESM by upgrading from uuid-browser to uuid [#22037](https://github.com/storybooks/storybook/pull/22037) +- Addon-actions: Fix decorator type [#22175](https://github.com/storybooks/storybook/pull/22175) +- NextJS: Fix tsconfig resolution [#22160](https://github.com/storybooks/storybook/pull/22160) +- Core: Pass parameters in `SET_INDEX` for docs entries [#22154](https://github.com/storybooks/storybook/pull/22154) + +#### Maintenance + +- CSF: Improve error message for bad default export [#22190](https://github.com/storybooks/storybook/pull/22190) +- CLI: Add addon query-params to list of SB7 incompatible addons [#22095](https://github.com/storybooks/storybook/pull/22095) + +#### Build + +- Build: Fix sandbox publish script [#22206](https://github.com/storybooks/storybook/pull/22206) +- Build: Fix lit sandboxes [#22201](https://github.com/storybooks/storybook/pull/22201) +- Vite sandboxes: use stable Vite 4.3 [#22183](https://github.com/storybooks/storybook/pull/22183) + +## 7.1.0-alpha.7 (April 19, 2023) + +#### Bug Fixes + +- Vue3: Fix reactive decorators [#21954](https://github.com/storybooks/storybook/pull/21954) + +#### Build + +- Build: Improve sandboxes commit message [#22136](https://github.com/storybooks/storybook/pull/22136) + +## 7.1.0-alpha.6 (April 18, 2023) + +#### Bug Fixes + +- Core: Restore Docs `useParameter` using `DOCS_PREPARED` [#22118](https://github.com/storybooks/storybook/pull/22118) +- Core: Add new tags to distinguish docs attachment [#22120](https://github.com/storybooks/storybook/pull/22120) +- Core: Fix `module` guard in non-webpack environments [#22085](https://github.com/storybooks/storybook/pull/22085) + +#### Build + +- Build: Skip docs pages e2e tests for ssv6 examples [#22141](https://github.com/storybooks/storybook/pull/22141) +- Build: Upgrade Playwright to 1.32.3 [#22087](https://github.com/storybooks/storybook/pull/22087) + +#### Dependency Upgrades + +- Remove unused babel dependencies [#21984](https://github.com/storybooks/storybook/pull/21984) + +## 7.1.0-alpha.5 (April 17, 2023) + +#### Maintenance + +- CLI: Mark qwik as using addon-interactions [#22000](https://github.com/storybooks/storybook/pull/22000) + +#### Build + +- Revert "Build: Update dangerfile temporarily to check for patch label" [#22108](https://github.com/storybooks/storybook/pull/22108) + +## 7.1.0-alpha.4 (April 15, 2023) + +#### Bug Fixes + +- Docs: Fix source snippets when parameters.docs.source.type = 'code' [#22048](https://github.com/storybooks/storybook/pull/22048) +- CLI: Mention how to setup a monorepo manually in babelrc automigration [#22052](https://github.com/storybooks/storybook/pull/22052) + +## 7.1.0-alpha.3 (April 13, 2023) + +#### Bug Fixes + +- UI: Fix upgrade command in about page [#22056](https://github.com/storybooks/storybook/pull/22056) +- CLI: Fix sandbox command [#21977](https://github.com/storybooks/storybook/pull/21977) + +## 7.1.0-alpha.2 (April 12, 2023) + +#### Features + +- UI: Add remount story shortcut [#21401](https://github.com/storybooks/storybook/pull/21401) + +#### Bug Fixes + +- CLI: Catch errors thrown on sanity check of SB installs [#22039](https://github.com/storybooks/storybook/pull/22039) + +#### Maintenance + +- Addon-docs: Remove mdx1-csf as optional peer dep [#22038](https://github.com/storybooks/storybook/pull/22038) +- Telemetry: Add CLI version to context [#21999](https://github.com/storybooks/storybook/pull/21999) + +#### Build + +- Build: Use vite@beta on sandboxes [#22030](https://github.com/storybooks/storybook/pull/22030) +- Fix e2e tests failing in Firefox [#22022](https://github.com/storybooks/storybook/pull/22022) +- Vite: Use vite 4.3 beta in sandboxes [#21986](https://github.com/storybooks/storybook/pull/21986) + +## 7.1.0-alpha.1 (April 11, 2023) + +#### Bug Fixes + +- React: Fix default export docgen for React.FC and forwardRef [#22024](https://github.com/storybooks/storybook/pull/22024) +- Viewport: Remove transitions when switching viewports [#21963](https://github.com/storybooks/storybook/pull/21963) +- CLI: Fix JsPackageManager typo [#22006](https://github.com/storybooks/storybook/pull/22006) +- Viewport: Fix the `defaultOrientation` config option [#21962](https://github.com/storybooks/storybook/pull/21962) +- UI: Fix story data access for broken About page [#21951](https://github.com/storybooks/storybook/pull/21951) + +#### Maintenance + +- CLI: Update template code references to 7.0 [#21845](https://github.com/storybooks/storybook/pull/21845) + +#### Dependency Upgrades + +- React-vite: Fix perf regression by pinning vite-plugin-react-docgen-ts [#22013](https://github.com/storybooks/storybook/pull/22013) +- Use future version of satellite repo dependencies [#22026](https://github.com/storybooks/storybook/pull/22026) + +## 7.1.0-alpha.0 (April 5, 2023) + +#### Bug Fixes + +- Angular: Fix components disappearing on docs page on property change [#21944](https://github.com/storybooks/storybook/pull/21944) +- React: Don't show decorators in JSX snippets [#21907](https://github.com/storybooks/storybook/pull/21907) +- Docs: Include decorators by default in source decorators [#21902](https://github.com/storybooks/storybook/pull/21902) +- CLI: Fix npm list command [#21947](https://github.com/storybooks/storybook/pull/21947) +- Core: Revert Emotion `:first-child` (etc) workarounds [#21213](https://github.com/storybooks/storybook/pull/21213) +- Addon-actions: Fix non-included type file [#21922](https://github.com/storybooks/storybook/pull/21922) +- Addon GFM: Fix node-logger dependency [#21938](https://github.com/storybooks/storybook/pull/21938) + +#### Build + +- Build: Update trigger circle ci workflow to include main [#21888](https://github.com/storybooks/storybook/pull/21888) +- Build: Update dangerfile temporarily to check for patch label [#21945](https://github.com/storybooks/storybook/pull/21945) +- Build: Re-enable Vue2 Vite sandbox [#21940](https://github.com/storybooks/storybook/pull/21940) +- Build: Fix release badge on repros [#21923](https://github.com/storybooks/storybook/pull/21923) +- Build: fix the workflows to generate sandboxes [#21912](https://github.com/storybooks/storybook/pull/21912) +- Build: bump the node version in CI [#21917](https://github.com/storybooks/storybook/pull/21917) +- Build: no `pnp.cjs` in the root, regen lockfiles [#21908](https://github.com/storybooks/storybook/pull/21908) +- Build: remove pnp sandbox template [#21913](https://github.com/storybooks/storybook/pull/21913) +- Build: make the CI config ready for 7.0 release [#21808](https://github.com/storybooks/storybook/pull/21808) + +#### Dependency Upgrades + +- Update `@emotion/cache` version [#21941](https://github.com/storybooks/storybook/pull/21941) diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 000000000000..de427497aba2 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,98 @@ +# Code Owners + +# Root +.github/ @JReinhold @yannbf @vanessayuenn +.circleci/ @yannbf @kasperpeulen +.yarnrc.yml @ndelangen @JReinhold + +# Docs +/docs/ @kylegach @jonniebigodes + +# Scripts +/scripts/ @ndelangen @kasperpeulen +/scripts/release/ @jreinhold @ndelangen @kasperpeulen + +# Addons +/code/addons/a11y/ @ndelangen @yannbf +/code/addons/actions/ @ndelangen @yannbf +/code/addons/backgrounds/ @yannbf @ndelangen +/code/addons/controls/ @kasperpeulen @ndelangen +/code/addons/docs/ @JReinhold @kasperpeulen +/code/addons/essentials/ @valentinpalkovic @ndelangen +/code/addons/gfm/ @ndelangen @valentinpalkovic +/code/addons/highlight/ @yannbf @valentinpalkovic +/code/addons/interactions/ @yannbf @ndelangen +/code/addons/jest/ @ndelangen +/code/addons/links/ @yannbf @JReinhold +/code/addons/measure/ @yannbf @valentinpalkovic +/code/addons/outline/ @yannbf @valentinpalkovic +/code/addons/storyshots-core/ @ndelangen +/code/addons/storyshots-puppeteer/ @ndelangen +/code/addons/storysource/ @ndelangen +/code/addons/toolbars/ @ndelangen @JReinhold +/code/addons/viewport/ @yannbf @ndelangen + +# Builder +/code/builders/builder-manager/ @ndelangen @valentinpalkovic +/code/builders/builder-vite/ @JReinhold @valentinpalkovic @IanVS +/code/builders/builder-webpack5/ @ndelangen @valentinpalkovic + +# Frameworks +/code/frameworks/angular/ @valentinpalkovic @yannbf +/code/frameworks/html-vite/ @kasperpeulen @JReinhold +/code/frameworks/html-webpack5/ @kasperpeulen @JReinhold +/code/frameworks/nextjs/ @valentinpalkovic @kasperpeulen @yannbf +/code/frameworks/react-vite/ @valentinpalkovic @kasperpeulen +/code/frameworks/react-webpack5/ @valentinpalkovic @kasperpeulen +/code/frameworks/svelte-vite/ @kasperpeulen @JReinhold +/code/frameworks/svelte-webpack5/ @kasperpeulen @JReinhold +/code/frameworks/sveltekit/ @kasperpeulen @JReinhold +/code/frameworks/vue3-vite/ @kasperpeulen @yannbf @JReinhold +/code/frameworks/vue3-webpack5/ @kasperpeulen @yannbf @JReinhold +/code/frameworks/web-components-vite/ @kasperpeulen @JReinhold +/code/frameworks/web-components-webpack5/ @kasperpeulen @JReinhold + +# Lib +/code/lib/channels/ @ndelangen @kasperpeulen +/code/lib/cli/ @yannbf @valentinpalkovic @ndelangen +/code/lib/cli-sb/ @yannbf @valentinpalkovic @ndelangen +/code/lib/cli-storybook/ @yannbf @valentinpalkovic @ndelangen +/code/lib/client-logger/ @ndelangen @yannbf +/code/lib/codemod/ @kasperpeulen @ndelangen +/code/lib/core-common/ @ndelangen @yannbf +/code/lib/core-events/ @ndelangen @kasperpeulen +/code/lib/core-server/ @ndelangen @JReinhold @tmeasday @shilman +/code/lib/core-webpack/ @valentinpalkovic @ndelangen +/code/lib/csf-plugin/ @ndelangen @valentinpalkovic +/code/lib/csf-tools/ @kasperpeulen @shilman +/code/lib/docs-tools/ @JReinhold @shilman +/code/lib/instrumenter/ @yannbf @kasperpeulen +/code/lib/manager-api/ @ndelangen @valentinpalkovic @kasperpeulen +/code/lib/node-logger/ @yannbf @ndelangen +/code/lib/preview/ @ndelangen @kasperpeulen +/code/lib/preview-api/ @yannbf @ndelangen @tmeasday +/code/lib/react-dom-shim/ @ndelangen @valentinpalkovic @tmeasday +/code/lib/router/ @ndelangen @JReinhold +/code/lib/telemetry/ @shilman @yannbf @ndelangen +/code/lib/theming/ @cdedreuille @ndelangen @JReinhold +/code/lib/types/ @kasperpeulen @ndelangen + +# Presets +/code/presets/create-react-app/ @valentinpalkovic @ndelangen + +# Renderers +/code/renderers/html/ @kasperpeulen @JReinhold +/code/renderers/react/ @valentinpalkovic @kasperpeulen +/code/renderers/server/ @shilman @valentinpalkovic +/code/renderers/svelte/ @JReinhold @kasperpeulen +/code/renderers/vue3/ @kasperpeulen @JReinhold +/code/renderers/web-components/ @kasperpeulen @JReinhold + +# UI +/code/ui/.storybook/ @JReinhold @cdedreuille +/code/ui/blocks/ @JReinhold @cdedreuille +/code/ui/components/ @cdedreuille @JReinhold +/code/ui/manager/ @ndelangen @JReinhold @cdedreuille @tmeasday + +# E2E +/code/e2e-tests/ @yannbf @valentinpalkovic diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d0ddac9871db..cc26a6bff211 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,24 @@ # Getting started -- Ensure you have node version 16 installed (suggestion: v16.5). +Storybook is developed against a specific node version. We recommend using [Volta](https://volta.sh/) as it will automatically install the correct node and yarn version when you first use the repo. If you chose not to use Volta please ensure you you have node version 16 installed (suggestion: v16.5) + - Ensure if you are using Windows to use the Windows Subsystem for Linux (WSL). - Run `yarn start` in the root directory to run a basic test Storybook "sandbox". The `yarn start` script will generate a React Vite TypeScript sandbox with a set of test stories inside it, as well as taking all steps required to get it running (building the various packages we need etc). There is no need to run `yarn` or `yarn install` as `yarn start` will do this for you. +## Issues + +If you run `yarn start` and encounter the following error, try rerunning `yarn start` a second time: + +```sh +> NX ENOENT: no such file or directory, open 'storybook/code/node_modules/nx/package.json' +``` + +## Forked repos + +If you have forked the repository, you should [disable Github Actions for your repo](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository) as many of them (e.g. pushing to sandbox) will fail without proper authorization. In your Github repo, go to Settings > Actions > General > set the Actions Permissions to **Disable actions**. + # Running against different sandbox templates You can also pick a specific template to use as your sandbox by running `yarn task`, which will prompt you to make further choices about which template you want and which task you want to run. @@ -31,4 +44,4 @@ yarn task --task dev --template --start-from=publish # Contributing to Storybook -For further advice on how to contribute, please refer to our [NEW contributing guide on the Storybook website](https://storybook.js.org/docs/next/react/contribute/how-to-contribute). +For further advice on how to contribute, please refer to our [NEW contributing guide on the Storybook website](https://storybook.js.org/docs/react/contribute/how-to-contribute). diff --git a/CONTRIBUTING/RELEASING.md b/CONTRIBUTING/RELEASING.md new file mode 100644 index 000000000000..0997b757b6ea --- /dev/null +++ b/CONTRIBUTING/RELEASING.md @@ -0,0 +1,603 @@ +# Releasing + +> **Note** +> This document is relevant only for maintainers that have permissions to release new versions of Storybook. Anyone can read it for interest or to suggest changes, but it's not required knowledge. + +## Table of Contents + +- [Introduction](#introduction) + - [Branches](#branches) +- [Release Pull Requests](#release-pull-requests) + - [Prereleases](#prereleases) + - [Patch Releases](#patch-releases) + - [Publishing](#publishing) +- [👉 How to Release](#-how-to-release) + - [1. Find the Prepared Pull Request](#1-find-the-prepared-pull-request) + - [2. Freeze the Pull Request and run CI](#2-freeze-the-pull-request-and-run-ci) + - [3. QA Each Merged Pull Request](#3-qa-each-merged-pull-request) + - [4. Re-trigger the Workflow](#4-re-trigger-the-workflow) + - [5. Make Manual Changes](#5-make-manual-changes) + - [6. Merge](#6-merge) + - [7. See the "Publish" Workflow Finish](#7-see-the-publish-workflow-finish) +- [Releasing Locally in an Emergency 🚨](#releasing-locally-in-an-emergency-) +- [Canary Releases](#canary-releases) +- [Versioning Scenarios](#versioning-scenarios) + - [Prereleases - `7.1.0-alpha.12` -\> `7.1.0-alpha.13`](#prereleases---710-alpha12---710-alpha13) + - [Prerelease promotions - `7.1.0-alpha.13` -\> `7.1.0-beta.0`](#prerelease-promotions---710-alpha13---710-beta0) + - [Minor/major releases - `7.1.0-rc.2` -\> `7.1.0` or `8.0.0-rc.3` -\> `8.0.0`](#minormajor-releases---710-rc2---710-or-800-rc3---800) + - [First prerelease of new major/minor - `7.1.0` -\> `7.2.0-alpha.0` or `8.0.0-alpha.0`](#first-prerelease-of-new-majorminor---710---720-alpha0-or-800-alpha0) + - [Patch releases to stable - subset of `7.1.0-alpha.13` -\> `7.0.14`](#patch-releases-to-stable---subset-of-710-alpha13---7014) + - [Patch releases to earlier versions - subset of `7.1.0-alpha.13` -\> `6.5.14`](#patch-releases-to-earlier-versions---subset-of-710-alpha13---6514) + - [Prerelease of upcoming patch release - `7.0.20` -\> `7.0.21-alpha.0`](#prerelease-of-upcoming-patch-release---7020---7021-alpha0) + - [Merges to `main` without versioning](#merges-to-main-without-versioning) +- [FAQ](#faq) + - [When should I use the "patch" label?](#when-should-i-use-the-patch-label) + - [How do I make changes to the release tooling/process?](#how-do-i-make-changes-to-the-release-toolingprocess) + - [Why do I need to re-trigger workflows to update the changelog?](#why-do-i-need-to-re-trigger-workflows-to-update-the-changelog) + - [Which combination of inputs creates the version bump I need?](#which-combination-of-inputs-creates-the-version-bump-i-need) + - [Which changes are considered "releasable", and what does it mean?](#which-changes-are-considered-releasable-and-what-does-it-mean) + - [Why are no release PRs being prepared?](#why-are-no-release-prs-being-prepared) + - [Why do we need separate release branches?](#why-do-we-need-separate-release-branches) + +## Introduction + +This document explains the release process for the Storybook monorepo. There are two types: + +1. Prereleases and major/minor releases - releasing any content that is on the `next` branch +2. Patch releases - picking any content from `next` to `main`, that needs to be patched back to the current stable minor release + +The release process is based on automatically created "Release Pull Requests", that when merged will trigger a new version to be released. + +A designated Releaser -- which may rotate between core team members -- will go through the release process in the current Release PR. This process is implemented with NodeJS scripts in [`scripts/release`](../scripts/release/) and three GitHub Actions workflows: + +- [Prepare Prerelease PR](../.github/workflows/prepare-prerelease.yml) +- [Prepare Patch PR](../.github/workflows/prepare-patch-release.yml) +- [Publish](../.github/workflows/publish.yml) + +> **Note** +> This document distinguishes between **patch** releases and **prereleases**. This is a simplification; stable major and minor releases work the same way as prereleases. The distinction reflects the difference between patching an existing minor version on `main` or releasing a new minor/major/prerelease from `next`. + +### Branches + +To understand the release structure, it's important to know the branching strategy used. All development is done on the `next` branch, where new features and bug fixes are added. This branch contains content to be released in the next prerelease (eg. `v7.1.0-alpha.22`). + +The `main` branch contains the content for the current stable release (eg. `v7.0.20`). When changes need to be made to both the next major/minor release and the current patch release (bug fixes or small improvements), they are made to `next`. If the change needs to be patched back to the current minor version (eg. from `7.1.0-alpha.20` to `7.0.18`), the PR containing the fix is labeled with the **"patch"** label, so the release workflow can pick it up. This ensures changes are tested in a prerelease before being released to stable. + +The actual (pre)releases are not made from `next` nor `main`, but from `next-release` and `latest-release` respectively. This indirection is explained in [the "Why do we need separate release branches?" section](#why-do-we-need-separate-release-branches) below. + +The branches in the monorepo can be summarized in this diagram (simplified): + +```mermaid +%%{init: { 'gitGraph': { 'showCommitLabel': false } } }%% +gitGraph + commit + branch latest-release + branch next + commit + branch next-release + commit + commit tag: "7.1.0-alpha.18" + checkout next + merge next-release + commit id: "bugfix" + commit + checkout latest-release + cherry-pick id: "bugfix" + commit tag: "7.0.20" + checkout next-release + merge next + commit tag: "7.1.0-alpha.19" + checkout next + merge next-release + commit + checkout main + merge latest-release +``` + +## Release Pull Requests + +Two GitHub Actions workflows automatically create release pull requests, one for each type of release. These pull requests act as the "interface" for the Releaser to create a new release. Although the behavior between the two is similar, some minor differences exist, as described in the subsections below. + +The high-level flow is: + +1. When a PR is merged to `next` (or a commit is pushed), both release pull requests are (re)generated. +2. They create a new branch - `version-(patch|prerelease)-from-`. +3. They calculate which version to bump to according to the version strategy. +4. They update `CHANGELOG(.prerelease).md` with all changes detected. +5. They commit everything. +6. They **force push**. +7. They open/edit a pull request towards `next-release` or `latest-release`. + +A few key points to note in this flow: + +- The PRs are regenerated on any changes to `next`, or can be manually triggered (see [the Re-trigger the Workflow section](#4-re-trigger-the-workflow)). +- The changes are force pushed to the branch, so any manual changes on the release branch before merging risk being overwritten if someone else merges a new change to `next`, triggering the workflow. To avoid this, apply the **"freeze"** label to the pull request. +- The changelogs are committed during the preparation, but the packages are not version bumped and not published until later. +- The release pull requests don't target their working branches (`next` and `main`), but rather `next-release` and `latest-release`. + +### Prereleases + +> **Note** +> Workflow: [`prepare-prerelease.yml`](../.github/workflows/prepare-prerelease.yml) + +Prereleases are prepared with all content from the `next` branch. The changelog is generated by examining the git history, and looking up all the commits and pull requests between the current prerelease (on `next-release`) and `HEAD` of `next`. + +The default versioning strategy is to increase the current prerelease number, as described in [Prereleases - `7.1.0-alpha.12` -> `7.1.0-alpha.13`](#prereleases---710-alpha12---710-alpha13). If there is no prerelease number (i.e., we just released a new stable minor/major version), it will add one to a patch bump, so it would go from `7.2.0` to `7.2.1-0` by default. + +Prerelease PRs are only created if there are actual changes to release. Content labeled with "build" or "documentation" is [not considered "releasable"](#which-changes-are-considered-releasable-and-what-does-it-mean) and is not user-facing, so it doesn't make sense to create a release. This is explained in more detail in [Why are no release PRs being prepared?](#why-are-no-release-prs-being-prepared). + +The preparation workflow will create a new branch from `next`, called `version-prerelease-from-`, and open a pull request targeting `next-release`. When the Releaser merges it, the [publish workflow](#publishing) will merge `next-release` into `next`. + +Here's an example of a workflow where a feature and a bugfix have been created and then released to a new `7.1.0-alpha.29` version. All the commits highlighted with square dots are the ones that will be considered when generating the changelog. + +```mermaid +%%{init: { 'gitGraph': { 'mainBranchName': 'next' } } }%% +gitGraph + commit + branch next-release + commit tag: "7.1.0-alpha.28" + checkout next + merge next-release + commit type: HIGHLIGHT id: "direct commit" + branch new-feature + commit + commit + checkout next + merge new-feature type: HIGHLIGHT + branch some-bugfix + commit + checkout next + merge some-bugfix type: HIGHLIGHT + branch version-prerelease-from-7.1.0-alpha.28 + commit id: "write changelog" + checkout next-release + merge version-prerelease-from-7.1.0-alpha.28 + commit id: "bump versions" tag: "7.1.0-alpha.29" + checkout next + merge next-release +``` + +### Patch Releases + +> **Note** +> Workflow: [`prepare-patch-release.yml`](../.github/workflows/prepare-patch-release.yml) + +Patch releases are created by [cherry-picking](https://www.atlassian.com/git/tutorials/cherry-pick) any merged, unreleased pull requests that have the "**patch**" label applied to the `next` branch. The merge commit of said pull requests are cherry-picked. + +Sometimes it is desired to pick pull requests back to `main` even if they are not considered "releasable". Unlike prerelease preparation, patch releases will not be canceled if the content is not releasable. It might not make sense to create a new patch release if the changes are only for documentation and/or internal build systems. However, getting the changes back to `main` is the only way to deploy the documentation to the production docs site. You may also want to cherry-pick changes to internal CI to fix issues. These are valid scenarios where you want to cherry-pick the changes without being blocked on "releasable" content. In these cases, where all cherry picks are non-releasable, the preparation workflow creates a "merging" pull request instead of a "releasing" pull request. This pull request does not bump versions or update changelogs; it just cherry-picks the changes and allows you to merge them into `latest-release` -> `main`. + +The preparation workflow sequentially cherry-picks each patch pull request to its branch. If this cherry-picking fails due to conflicts or other reasons, it is ignored and the next pull request is processed. All failing cherry-picks are listed in the release pull request's description, for the Releaser to manually cherry-pick during the release process. This problem occurs more often when `main` and `next` diverge, i.e. the longer it has been since a stable major/minor release. + +Similar to the prerelease flow, the preparation workflow for patches will create a new branch from `main` called `version-patch-from-`, and open a pull request that targets `latest-release`. When the pull request is merged by the Releaser, the [publish workflow](#publishing) will eventually merge `latest-release` into `main`. + +Here is an example of a workflow where a feature and two bug fixes have been merged to `next`. Only the bug fixes have the "**patch**" label, so only those two go into the new `7.0.19` release. Note that it is the merge commits to `next` that are cherry-picked, not the commits on the bugfix branches. + +```mermaid +gitGraph + commit + branch latest-release + branch next + checkout latest-release + commit tag: "v7.0.18" + checkout main + merge latest-release + checkout next + commit + branch some-patched-bugfix + commit + commit id: "patch1" + checkout next + merge some-patched-bugfix + branch new-feature + commit + checkout next + merge new-feature + branch other-patched-bugfix + commit id: "patch2" + checkout next + merge other-patched-bugfix + checkout main + branch version-patch-from-7.0.18 + cherry-pick id: "patch1" + cherry-pick id: "patch2" + commit id: "write changelog" + checkout latest-release + merge version-patch-from-7.0.18 + commit id: "bump versions" tag: "v7.0.19" + checkout main + merge latest-release +``` + +### Publishing + +> **Note** +> Workflow: [`publish.yml`](../.github/workflows/publish.yml) + +When either a prerelease or a patch release branch is merged into `main` or `next-release`, the publishing workflow is triggered. This workflow performs the following tasks: + +1. Bump versions of all packages according to the plan from the prepared PRs +2. Install dependencies and build all packages. +3. Publish packages to npm. +4. (If this is a patch release, add the "**picked**" label to all relevant pull requests.) +5. Create a new GitHub Release, including a version tag in the release branch (`latest-release` or `next-release`). +6. Merge the release branch into the core branch (`main` or `next`). +7. (If this is a patch release, copy the `CHANGELOG.md` changes from `main` to `next`.) +8. (If this is [a promotion from a prerelease to a stable release](#minormajor-releases---710-rc2---710-or-800-rc3---800), force push `next` to `main`.) + +The publish workflow runs in the "release" GitHub environment, which has the npm token required to publish packages to the `@storybook` npm organization. For security reasons, this environment can only be accessed from the four "core" branches: `main`, `next`, `latest-release` and `next-release`. + +## 👉 How to Release + +This section explains what a Releaser should do when it's time to release. The steps are also outlined in the release pull requests, to provide guidance for inexperienced Releasers. + +The high-level workflow for a Releaser is: + +1. Find the prepared pull request +2. Freeze the pull request +3. Make changes to merged pull requests (revert, rename, relabel) +4. Re-trigger the workflow to get changes from step 3 in +5. Make any manual changes needed +6. Merge +7. Check that the "publish" workflow has finished successfully + +### 1. Find the Prepared Pull Request + +Look for the release pull request that has been prepared for the type of release you're about to release: + +- "Release: Prerelease ``" for prereleases +- "Release: Patch ``" for patch releases +- "Release: Merge patches to `main` (without version bump)" for patches without releases + +For example: https://github.com/storybookjs/storybook/pull/23148 + +### 2. Freeze the Pull Request and run CI + +Add the "**freeze**" label to the pull request. This will stop the preparation workflows from running when new changes to `next` are merged. This allows you to make changes without worrying about other people's work overriding yours. + +The "**freeze**" label does not cancel the workflows when they are triggered manually, so you can still run the workflow. + +You also need to add the "**ci:daily**" label to the pull request to trigger CI runs. This will start a full CI run and re-run on any changes. CI does not run by default to avoid unnecessary re-runs until a new release is being created. + +### 3. QA Each Merged Pull Request + +It is important to verify that the release includes the right content. Key elements to account for are: + +1. Is the change suitable for the version bump? + +For example, check if it's a breaking change that isn't allowed in a minor prerelease, or if it's a new feature in a patch release. If it's not suitable, revert the pull request and notify the author. + +Sometimes when doing a patch release, a pull request can have the "patch" label but you don't want that change to be part of this release. Maybe you're not confident in the change, or you require more input from maintainers before releasing it. In those situations you should remove the "patch" label from the pull request and follow through with the release (make sure to re-trigger the workflow). When the release is done, add the patch label back again, so it will be part of the next release. + +2. Is the pull request title correct? + +The title of pull requests is added to the user-facing changelogs, so it must be accurate and understandable. It should follow the pattern "[Area]: [Summary]", where [Area] is the part of the repo that has been changed, and the summary is what has changed. + +It's easy to confuse [Area] with labels, but they are not the same. For example, the "**build**" label indicates that the changes are internal, but a "build" [Area] is _not_ correct. The area could be "Core" or "CI", but rarely is the area being changed actually the "build" area. +If a pull request changes multiple places, it can be hard to choose an area - this is often the case when upgrading dependencies - so use your best judgement. There's no hard rule, but a good guideline is that the more precise it is, the more useful it is to read later. + +3. Is the pull request labeled correctly? + +Some labels have specific meanings when it comes to releases. It's important that each pull request has labels that accurately describe the change, as labels can determine if a pull request is included in the changelog or not. This is explained further in the [Which changes are considered "releasable", and what does it mean?](#which-changes-are-considered-releasable-and-what-does-it-mean) section. + +4. Patches: has it already been released in a prerelease? + +If this is a patch release, make sure that all pull requests have already been released in a prerelease. If some haven't, create a new prerelease first. + +This is not a technical requirement, but it's a good practice to ensure that a change doesn't break a prerelease before releasing it to stable. + +### 4. Re-trigger the Workflow + +Any changes made to pull requests' titles, labels or even reverts won't be reflected in the release pull request because it's hopefully frozen at this point. Even if it isn't, the workflow only triggers on pushes to `next`, not when pull request meta data is changed. + +Therefore, if any changes were made in step 3, you need to re-trigger the workflow manually to regenerate the changelog and the version bump. If no changes were made, this step can be skipped. + +It's important to remember that triggering the workflow will force push changes to the branch, so it must be done before committing any changes manually (the next step). Otherwise, these will be overwritten. + +> **Warning** +> When re-triggering the workflow, any new content merged to `next` will also become part of the release pull request. You can't assume the same content with fixes will be seen, as new content may have been merged in since the pull request was frozen. + +When triggering the workflows, always choose the `next` branch as the base, unless you know exactly what you are doing. + +The workflows can be triggered here: + +- [Prepare prerelease PR](https://github.com/storybookjs/storybook/actions/workflows/prepare-prerelease.yml) +- [Prepare patch PR](https://github.com/storybookjs/storybook/actions/workflows/prepare-patch-release.yml) + +Crucially for prereleases, this is also where you change the versioning strategy if you need something else than the default as described in [Preparing - Prereleases](#prereleases). When triggering the prerelease workflow manually, you can optionally add inputs: + +![Screenshot of triggering the prerelease workflow in GitHub Actions, with a form that shows a release type selector and a prerelease identifier text field](prerelease-workflow-inputs.png) + +See [Versioning Scenarios](#versioning-scenarios) for a description of each version bump scenario, how to activate it and what it does, and [Which combination of inputs creates the version bump I need?](#which-combination-of-inputs-creates-the-version-bump-i-need) for a detailed description of the workflow inputs. + +### 5. Make Manual Changes + +It's possible and valid to push manual changes directly on the release branch when needed. This could be to alter the changelog in a way that can't be done automatically, or another critical change is needed for the release to work. Any changes made will be merged to `next|main` once the release has been published. + +It's recommended to use the automated process as much as possible to ensure that the information in GitHub is the single source of truth, and that pull requests and changelogs are in sync. + +> **Warning** +> If you make manual changes to the changelog, you also need to make those changes in either [`./docs/versions/latest.json`](../docs/versions/latest.json) or [`./docs/versions/next.json`](../docs/versions/next.json). The `"plain"` property should match the changelog entry, **without the heading** and with all new lines replaces with `\n`. +> This is common for custom release notes when releasing majors and minors. + +### 6. Merge + +When the pull request was frozen, a CI run was triggered on the branch. If it's green, it's time to merge the pull request. If CI is failing for some reason, consult with the rest of the core team. These release pull requests are almost exact copies of `next|main` so CI should only fail if they fail too. + +### 7. See the "Publish" Workflow Finish + +Merging the pull request will trigger [the publish workflow](https://github.com/storybookjs/storybook/actions/workflows/publish.yml), which does the final version bumping and publishing. As a Releaser, you're responsible for this to finish successfully, so you should watch it until the end. If it fails, it will notify in Discord, so you can monitor that instead if you want to. + +Done! 🚀 + +## Releasing Locally in an Emergency 🚨 + +Things can fail, code can break, and bugs can exist. When automation is broken, there may be a need for an emergency escape hatch to release new fixes. In such a situation, it's valid to run the whole release process locally instead of relying on pull requests and workflows. You don't need to create pull requests or split preparation and publishing; you can do it all at once, but make sure you still follow the correct branching strategy. + +You can either prepare the release locally and use the automatic workflow for publishing it or you can do the whole release workflow locally. If you choose the latter approach, you need a token to the npm registry to publish (set as `YARN_NPM_AUTH_TOKEN`), which you can get from @shilman or @ndelangen. + +You can inspect the workflows to see what they are running and copy that, but here is a general sequence of steps to mimic the automated workflow. Feel free to deviate from this as needed. + +Before you start you should make sure that your working tree is clean and the repository is in a clean state by running `git clean -xdf`. + +1. Create a new branch from either `next` (prereleases) or `main` (patches) +2. Get all tags: `git fetch --tags origin` +3. Install dependencies: `yarn task --task=install --start-from=install` +4. `cd scripts` +5. (If patch release) Cherry pick: + 1. `yarn release:pick-patches` + 2. Manually cherry pick any necessary patches based on the previous output +6. Bump versions: + 1. If you plan on using automatic publishing (ie. stop at step 12), bump with deferred: `yarn release:version --verbose --deferred --release-type --pre-id ` + 2. If doing the whole release locally, **do not** defer the bump: `yarn release:version --verbose --release-type --pre-id ` +7. To see a list of changes (for your own to-do list), run `yarn release:generate-pr-description --current-version --next-version --verbose` +8. Write changelogs: `yarn release:write-changelog --verbose` +9. `git add .`. +10. Commit changes: `git commit -m "Bump version from to MANUALLY"` +11. Merge changes to the release branch: + 1. `git checkout <"latest-release" | "next-release">` + 2. `git pull` + 3. `git merge ` + 4. `git push origin` +12. (If automatic publishing is still working, it should kick in now and the rest of the steps can be skipped) +13. `cd ..` +14. Publish to the registry: `YARN_NPM_AUTH_TOKEN= yarn release:publish --tag <"next" OR "latest"> --verbose` +15. (If patch release) `yarn release:label-patches` +16. Manually create a GitHub Release with a tag that is the new version and the target being `latest-release` or `next-release`. +17. Merge to core branch: + 1. `git checkout <"next"|"main">` + 2. `git pull` + 3. `git merge <"next-release"|"latest-release">` + 4. `git push origin` +18. (If patch release) Sync `CHANGELOG.md` to `next` with: + 1. `git checkout next` + 2. `git pull` + 3. `git checkout origin/main ./CHANGELOG.md` + 4. `git add ./CHANGELOG.md` + 5. `git commit -m "Update CHANGELOG.md for v"` + 6. `git push origin` +19. (If prerelease) Sync `versions/next.json` from `next` to `main` + 1. `git checkout main` + 2. `git pull` + 3. `git checkout origin/next ./docs/versions/next.json` + 4. `git add ./docs/versions/next.json` + 5. `git commit -m "Update versions/next.json for v"` + 6. `git push origin main` + +## Canary Releases + +It's possible to release any pull request as a canary release multiple times during development. This is an effective way to try out changes in standalone projects without linking projects together via package managers. + +To create a canary release, a core team member (or anyone else with administrator privileges) must manually trigger the canary release workflow. + +**Before creating a canary release from contributors, the core team member must ensure that the code being released is not malicious.** + +Creating a canary release can either be done via GitHub's UI or the [CLI](https://cli.github.com/): + +### With GitHub UI + +1. Open the workflow UI at https://github.com/storybookjs/storybook/actions/workflows/canary-release-pr.yml +2. On the top right corner, click "Run workflow" +3. For "branch", **always select `next`**, regardless of which branch your pull request is on +4. For the pull request number, input the number for the pull request **without a leading #** + +### With the CLI + +The following command will trigger a workflow run - replace `` with the actual pull request number: + +```bash +gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr= +``` + +When the release succeeds, it will update the "Canary release" section of the pull request with information about the release and how to use it (see example [here](https://github.com/storybookjs/storybook/pull/23508)). If it fails, it will create a comment on the pull request, tagging the triggering actor to let them know that it failed (see example [here](https://github.com/storybookjs/storybook/pull/23508#issuecomment-1642850467)). + +The canary release will have the following version format: `0.0.0-pr--sha-`, e.g., `0.0.0-pr-23508-5ec8c1c3`. Using v0.0.0 ensures that no user will accidentally get the canary release when using a canary with prereleases, eg. `^7.2.0-alpha.0` + +> ** Note ** +> All canary releases are released under the same "canary" dist tag. This means you'll technically be able to install it with `npm install @storybook/cli@canary`. However, this doesn't make sense, as releases from subsequent pull requests will overwrite that tag quickly. Therefore you should always install the specific version string, e.g., `npm install @storybook/cli@0.0.0-pr-23508-sha-5ec8c1c3`. + +
+ Isn't there a simpler/smarter way to do this? + +The simple approach would be to release canaries for all pull requests automatically; however, this would be insecure as any contributor with Write privileges to the repository (200+ users) could create a malicious pull request that alters the release script to release a malicious release (e.g., release a patch version that adds a crypto miner). + +To alleviate this, we only allow the "Release" GitHub environment that contains the npm token to be accessible from workflows running on the protected branches (`next`, `main`, etc.). + +You could also be tempted to require approval from admins before running the workflows. However, this would spam the core team with GitHub notifications for workflow runs seeking approval - even when a core team member triggered the workflow. Therefore we are doing it the other way around, requiring contributors and maintainers to ask for a canary release to be created explicitly. + +Instead of triggering the workflow manually, you could also do something smart, like trigger it when there's a specific label on the pull request or when someone writes a specific comment on the pull request. However, this would create a lot of unnecessary workflow runs because there isn't a way to filter workflow runs based on labels or comment content. The only way to achieve this would be to trigger the workflow on every comment/labeling, then cancel it if it didn't contain the expected content, which is inefficient. + +
+ +## Versioning Scenarios + +There are multiple types of releases that use the same principles, but are done somewhat differently. + +### Prereleases - `7.1.0-alpha.12` -> `7.1.0-alpha.13` + +This is the default strategy for prereleases, there's nothing special needed to trigger this scenario. + +### Prerelease promotions - `7.1.0-alpha.13` -> `7.1.0-beta.0` + +To promote a prerelease to a new prerelease ID, during the [Re-trigger the Workflow](#4-re-trigger-the-workflow) step, choose: + +- Release type: Prerelease +- Prerelease ID: The ID to promote to. For example, for alpha to beta, write "beta". + +### Minor/major releases - `7.1.0-rc.2` -> `7.1.0` or `8.0.0-rc.3` -> `8.0.0` + +To promote a prerelease to a new prerelease ID, during the [Re-trigger the Workflow](#4-re-trigger-the-workflow) step, choose: + +- Release type: Patch +- Prerelease ID: Leave empty + +The "Patch" release type ensures the current prerelease version gets promoted to a stable version without any major/minor/patch bumps. + +This scenario is special as it turns the `next` branch into a stable branch (until the next prerelease). Therefore, this will also force push `next` to `main`, to ensure that `main` contains the latest stable release. Consequently, the history for `main` is lost. + +### First prerelease of new major/minor - `7.1.0` -> `7.2.0-alpha.0` or `8.0.0-alpha.0` + +This is the first prerelease after a stable major/minor has been released. The default versioning strategy for prereleases won't work here, because it will do `7.1.0` -> `7.1.1-0`. You need to use the workflow inputs to bump the major/minor correctly: + +- Release type: Premajor for `8.0.0-alpha.0` or Preminor for `7.2.0-alpha.0` +- Prerelease ID: "alpha" + +### Patch releases to stable - subset of `7.1.0-alpha.13` -> `7.0.14` + +This is the default patch release scenario, which cherry picks patches to `main`. + +### Patch releases to earlier versions - subset of `7.1.0-alpha.13` -> `6.5.14` + +This happens so rarely on a case by case basis, so this is a completely manual process. The Releaser will find the git tag that matches the patch to bump, eg. `v6.5.14`, check it out, make the necessary changes and follow [the manual release process](#releasing-locally-in-case-of-emergency-🚨). + +### Prerelease of upcoming patch release - `7.0.20` -> `7.0.21-alpha.0` + +In some cases, a patch change is so big and complex that it makes sense to first release it as a prerelease of the current patch stable version to see if it works, before releasing it to stable shortly thereafter. + +No process is defined for this. + +### Merges to `main` without versioning + +As described in more details in [the Patch Releases section](#patch-releases), there are scenarios where you want to patch [unreleasable](#which-changes-are-considered-releasable-and-what-does-it-mean) content back to `main` without bumping versions or publishing a new release. This happens automatically as long as all the unpicked patch pull requests have unreleasable labels. In that case the prepared patch pull request will change form slighty, to just cherry-picking the patches without bumping the versions. + +## FAQ + +### When should I use the "patch" label? + +Not all pull requests need to be patched back to the stable release, which is why only those with the **"patch"** label gets that treatment. But how do you decide whether or not a give pull requests should have that label? + +First of all, patches are only for fixes and minor improvements, and not completely new features. A pull request that introduces a new feature shouldn't be patched back to the stable release. + +Second, any destabilizing changes shouldn't be patched back either. Breaking changes are reserved for major releases, but changes can be destabilizing without being strictly breaking, and those shouldn't be patched back either. An example is moving the settings panel in the manager to a completely different place, but with the same functionality. Many wouldn't consider this breaking because no usage will stop working because of this, but it can be considered a destabilizing change because user behavior have to change as a result of this. + +When in doubt ask the core team for their input. + +### How do I make changes to the release tooling/process? + +The whole process is based on [GitHub Action workflows](../.github/workflows/) and [scripts](../scripts/release/), so you can modify them if you know what you're doing. + +The short answer to "how", is to make changes as a regular pull request that is also patched back to `main`. + +There's a longer answer too, but it's pretty confusing: + +The scripts run from either `main` or `next`, so if you're changing a release script, you must patch it back to `main` for it to have an effect on patch releases. If you need the change to take effect immediately, you must manually cherry pick it to `main`. + +For workflow file changes, they usually run from `next`, but patching them back is recommended for consistency. The "publish" workflow runs from `latest-release` and `next-release`, so you should always patch changes back for _that_. 🙃 + +### Why do I need to re-trigger workflows to update the changelog? + +Changes to pull requests' titles, labels or even reverts won't be reflected in the release pull request. This is because the workflow only triggers on pushes to `next`, not when pull request meta data is changed. + +Therefore, if you've made any changes to pull requests, you must re-trigger the workflow manually to regenerate the changelog and the version bump. You could also make the changes to the changelog manually, but it means that the pull requests and their title/labels are no longer the single source of truth. + +### Which combination of inputs creates the version bump I need? + +Each versioning scenario including how to trigger it with inputs is described in [Versioning Scenarios](#versioning-scenarios). You can also see [the tests for the versioning script](https://github.com/storybookjs/storybook/blob/next/scripts/release/__tests__/version.test.ts#L137-L161) to determine which inputs create which outputs. + +### Which changes are considered "releasable", and what does it mean? + +A specific set of labels define which kind of change a pull request is, and whether it is a "releasable" change or not. Releasable changes will appear in the changelog and will trigger version bumps, while unreleasable changes will not. + +The exact list of labels and their type is written [here](https://github.com/storybookjs/storybook/blob/next/scripts/release/utils/get-changes.ts#L9-L21). Currently, releasable labels are: + +- BREAKING CHANGE +- Feature request +- Bug +- Maintenance +- Dependencies + +And unreleasable labels are: + +- Documentation +- Build + +If a pull request does not have any of the above labels at the time of release, it is considered an unreleasable change. Unreleasable changes are changes that do not affect the user through releases. Documentation-only changes are unreleasable, because they are not part of packages and do not change behavior. Similarly, "build" changes are only internal-facing and do not change behavior. This could be tests, CI, etc. + +### Why are no release PRs being prepared? + +This is most likely because `next` only contains [unreleasable changes](#which-changes-are-considered-releasable-and-what-does-it-mean), which causes the preparation workflow to cancel itself. That's because it doesn't make sense to prepare a new release if all the changes are unreleasable, as that wouldn't bump the version nor write a new changelog entry, so "releasing" it would just merge it back to `next` without any differences. + +You can always see the workflows and if they have been cancelled [here for prereleases](https://github.com/storybookjs/storybook/actions/workflows/prepare-prerelease.yml) and [here for patch releases](https://github.com/storybookjs/storybook/actions/workflows/prepare-patch-release.yml). + +### Why do we need separate release branches? + +A simpler branching approach would be to merge the versioning branches back to `main` or `next` instead of `latest-release` or `next-release`, and then trigger the publishing directly on that branch. That is what tools like [Changesets](https://github.com/changesets/changesets) do. + +The problem with that is you could end up publishing changes that were not part of the prepared pull request, and thus not part of QA nor the changelog. + +For example, if the Releaser is creating a new release with the frozen branch and another team member merges a new pull request - "some-simultaneous-bugfix - to `next` _during_ the QA steps: + +```mermaid +%%{init: { 'gitGraph': { 'mainBranchName': 'next' } } }%% +gitGraph + commit type: HIGHLIGHT + branch new-feature + commit + commit + checkout next + merge new-feature type: HIGHLIGHT + branch some-simultaneous-bugfix + commit + checkout next + branch version-prerelease-from-7.1.0-alpha.28 + commit id + checkout next + merge some-simultaneous-bugfix type: HIGHLIGHT id: "whoops!" + merge version-prerelease-from-7.1.0-alpha.28 tag: "v7.1.0-alpha.29" +``` + +When publishing at the last commit with tag `v7.1.0-alpha.29`, it will publish whatever the content is at that point (all the square dots), which includes the "whoops!" commit from merging the bugfix. But the bugfix was never part of the release pull request because it got prepared before the bugfix was merged in. + +If we instead publish from `next-release` and then merge to `next`, the bugfix won't be part of the current release, but the next one: + +```mermaid +%%{init: { 'gitGraph': { 'mainBranchName': 'next' } } }%% +gitGraph + commit type: HIGHLIGHT + branch next-release + branch new-feature + commit + commit + checkout next + merge new-feature type: HIGHLIGHT + branch some-simultanous-bugfix + commit + checkout next + branch version-prerelease-from-7.1.0-alpha.28 + commit id: "write changelog" + checkout next + merge some-simultanous-bugfix id: "whoops!" + checkout next-release + merge version-prerelease-from-7.1.0-alpha.28 + commit id: "bump versions" tag: "v7.1.0-alpha.29" + checkout next + merge next-release + branch version-prerelease-from-7.1.0-alpha.29 + commit id: "write changelog again" + checkout next-release + merge version-prerelease-from-7.1.0-alpha.29 + commit id: "bump versions again" tag: "v7.1.0-alpha.30" + checkout next + merge next-release +``` + +This is because the way that "unreleased" changes are found is to list all the commits that are part of the current history of `HEAD`, _except_ for the commits that are part of the history of the latest version tag. And since the bugfix is not part of the history of the previous version, it will be included. diff --git a/CONTRIBUTING/prerelease-workflow-inputs.png b/CONTRIBUTING/prerelease-workflow-inputs.png new file mode 100644 index 000000000000..55bb79e2b09c Binary files /dev/null and b/CONTRIBUTING/prerelease-workflow-inputs.png differ diff --git a/MIGRATION.md b/MIGRATION.md index c953269ec8a1..5022eefb59bd 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1,5 +1,7 @@

Migration

+- [From version 7.0.0 to 7.2.0](#from-version-700-to-720) + - [Addon API is more type-strict](#addon-api-is-more-type-strict) - [From version 6.5.x to 7.0.0](#from-version-65x-to-700) - [7.0 breaking changes](#70-breaking-changes) - [Dropped support for Node 15 and below](#dropped-support-for-node-15-and-below) @@ -25,6 +27,7 @@ - [Deploying build artifacts](#deploying-build-artifacts) - [Dropped support for file URLs](#dropped-support-for-file-urls) - [Serving with nginx](#serving-with-nginx) + - [Ignore story files from node\_modules](#ignore-story-files-from-node_modules) - [7.0 Core changes](#70-core-changes) - [7.0 feature flags removed](#70-feature-flags-removed) - [Story context is prepared before for supporting fine grained updates](#story-context-is-prepared-before-for-supporting-fine-grained-updates) @@ -122,6 +125,7 @@ - [Main.js framework field](#mainjs-framework-field) - [Using the v7 store](#using-the-v7-store) - [v7-style story sort](#v7-style-story-sort) + - [v7 default sort behavior](#v7-default-sort-behavior) - [v7 Store API changes for addon authors](#v7-store-api-changes-for-addon-authors) - [Storyshots compatibility in the v7 store](#storyshots-compatibility-in-the-v7-store) - [Emotion11 quasi-compatibility](#emotion11-quasi-compatibility) @@ -298,6 +302,31 @@ - [Packages renaming](#packages-renaming) - [Deprecated embedded addons](#deprecated-embedded-addons) +## From version 7.0.0 to 7.2.0 + +#### Addon API is more type-strict + +When registering an addon using `@storybook/manager-api`, the addon API is now more type-strict. This means if you use TypeScript to compile your addon before publishing, it might start giving you errors. + +The `type` property is now a required field, and the `id` property should not be set anymore. + +Here's a correct example: +```tsx +import { addons, types } from '@storybook/manager-api'; + +addons.register('my-addon', () => { + addons.add('my-addon/panel', { + type: types.PANEL, + title: 'My Addon', + render: ({ active }) => active ?
Hello World
: null, + }); +}); +``` + +The API: `addons.addPanel()` is now deprecated, and will be removed in 8.0.0. Please use `addons.add()` instead. + +The `render` method can now be a `React.FunctionComponent` (without the `children` prop). Storybook will now render it, rather than calling it as a function. + ## From version 6.5.x to 7.0.0 A number of these changes can be made automatically by the Storybook CLI. To take advantage of these "automigrations", run `npx storybook@latest upgrade --prerelease` or `pnpx dlx storybook@latest upgrade --prerelease`. @@ -511,7 +540,6 @@ Storybook 7 introduces the concept of `frameworks`, which abstracts configuratio > Note: > All of the following changes can be done automatically either via `npx storybook@latest upgrade --prerelease` or via the `npx storybook@latest automigrate` command. It's highly recommended to use these commands, which will tell you exactly what to do. - ##### Available framework packages In 7.0, `frameworks` combine a `renderer` and a `builder`, with the exception of a few packages that do not contain multiple builders, such as `@storybook/angular`, which only has Webpack 5 support. @@ -675,7 +703,7 @@ import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { framework: { name: '@storybook/react-vite', - options: {} + options: {}, }, // ... your configuration }; @@ -833,6 +861,28 @@ With [nginx](https://www.nginx.com/), you need to extend [the MIME type handling It would otherwise default to serving the `.mjs` files as `application/octet-stream`. +##### Ignore story files from node_modules + +In 6.x Storybook literally followed the glob patterns specified in your `.storybook/main.js` `stories` field. Storybook 7.0 ignores files from `node_modules` unless your glob pattern includes the string `"node_modules"`. + +Given the following `main.js`: + +```js +export default { + stories: ['../**/*.stories.*'] +} +``` + +If you want to restore the previous behavior to include `node_modules`, you can update it to: + +```js +export default { + stories: ['../**/*.stories.*', '../**/node_modules/**/*.stories.*'] +} +``` + +The first glob would have node_modules automatically excluded by Storybook, and the second glob would include all stories that are under a nested `node_modules` directory. + ### 7.0 Core changes #### 7.0 feature flags removed @@ -1110,7 +1160,7 @@ In v6.x `@storybook/web-components` had a peer dependency on `lit-html` v1 or v2 #### Create React App: dropped CRA4 support -Since v7 [drops webpack4 support](#webpack4-support-discontinued), it longer supports Create React App < 5.0. If you're using an earlier version of CRA, please upgrade or stay on Storybook 6.x. +Since v7 [drops webpack4 support](#webpack4-support-discontinued), it no longer supports Create React App < 5.0. If you're using an earlier version of CRA, please upgrade or stay on Storybook 6.x. #### HTML: No longer auto-dedents source code @@ -1126,7 +1176,7 @@ Storybook 7 adds 2 new packages for addon authors to use: `@storybook/preview-ap These 2 packages replace `@storybook/addons`. When adding addons to storybook, you can (for example) add panels: - + ```js import { addons } from '@storybook/manager-api'; @@ -1141,7 +1191,7 @@ The `addons` export is now a named export only, there's no default export anymor The package `@storybook/addons` is still available, but it's only for backwards compatibility. It's not recommended to use it anymore. -It's also been used by addon creators to gain access to a few APIs like `makeDecorator`. +It's also been used by addon creators to gain access to a few APIs like `makeDecorator`. These APIs are now available in `@storybook/preview-api`. Storybook users have had access to a few storybook-lifecycle hooks such as `useChannel`, `useParameter`, `useStorybookState`; @@ -1179,7 +1229,6 @@ It should no longer depend on `@storybook/addons`, but instead on `@storybook/pr You might also depend (and use) these packages in your addon's decorators: `@storybook/store`, `@storybook/preview-web`, `@storybook/core-client`, `@storybook/client-api`; these have all been consolidated into `@storybook/preview-api`. So if you use any of these packages, please import what you need from `@storybook/preview-api` instead. - Storybook 7 will prepare manager-code for the browser using ESbuild (before it was using a combination of webpack + babel). This is a very important change, though it will not affect most addons. It means that when creating custom addons, particularly custom addons within the repo in which they are consumed, @@ -1188,8 +1237,8 @@ This can result in errors if you are using experimental JS features in your addo or using babel dependent features such as Component selectors in Emotion. ESbuild also places some constraints on things you can import into your addon's manager code: only woff2 files are supported, and not all image file types are supported. -Here's the list of supported file types: -https://github.com/storybookjs/storybook/blob/4a37372f649e85e7a0c35b0493da016dbb5dee17/code/lib/builder-manager/src/index.ts#L54-L64 +Here's the [list](https://github.com/storybookjs/storybook/blob/next/code/builders/builder-manager/src/index.ts#L53-L70) of supported file types. + This is not configurable. If this is a problem for your addon, you need to pre-compile your addon's manager code to ensure it works. @@ -1209,17 +1258,19 @@ All of storybook's core addons have been updated and are ready to use with Story We're working with the community to update the most popular addons. But if you're using an addon that hasn't been updated yet, it might not work. -It's possible for example for older addons to use APIs that are no longer available in Storybook 7. +It's possible for example for older addons to use APIs that are no longer available in Storybook 7. Your addon might not show upside of the storybook (manager) UI, or storybook might fail to start entirely. When this happens to you please open an issue on the addon's repo, and ask the addon author to update their addon to be compatible with Storybook 7. It's also useful for the storybook team to know which addons are not yet compatible, so please open an issue on the storybook repo as well; particularly if the addon is popular and causes a critical failure. Here's a list of popular addons that are known not to be compatible with Storybook 7 yet: + - [ ] [storybook-addon-jsx](https://github.com/storybookjs/addon-jsx) - [ ] [storybook-addon-dark-mode](https://github.com/hipstersmoothie/storybook-dark-mode) Though storybook should de-duplicate storybook packages, storybook CLI's `upgrade` command will warn you when you have multiple storybook-dependencies, because it is a possibility that this causes addons/storybook to not work, so when running into issues, please run this: + ``` npx sb upgrade ``` @@ -1618,7 +1669,7 @@ If you're using `storiesOf` and want to restore the previous behavior, you can a ```js module.exports = { webpackFinal: (config) => { - config.modules.rules.push({ + config.module.rules.push({ test: /\.stories\.[tj]sx?$/, use: [ { @@ -2184,10 +2235,40 @@ function storySort(a, b) { ``` **NOTE:** v7-style sorting is statically analyzed by Storybook, which puts a variety of constraints versus v6: -- Sorting must be specified in the user's `.storybook/preview.js`. It cannot be specified by an addon or preset. + +- Sorting must be specified in the user's `.storybook/preview.js`. It cannot be specified by an addon or preset. - The `preview.js` export should not be generated by a function. - `storySort` must be a self-contained function that does not reference external variables. +#### v7 default sort behavior + +The behavior of the default `storySort` function has also changed in v7 thanks to [#18423](https://github.com/storybookjs/storybook/pull/18243), which gives better control over hierarchical sorting. + +In 6.x, the following configuration would sort any story/doc containing the title segment `Introduction` to the top of the sidebar, so this would match `Introduction`, `Example/Introduction`, `Very/Nested/Introduction`, etc. + +```js +// preview.js +export default { + parameters: { + options: { + storySort: { + order: ['Introduction', '*'], + }, + }, + }, +}; +``` + +In 7.0+, the targeting is more precise, so the preceding example would match `Introduction`, but not anything nested. If you wanted to sort `Example/Introduction` first, you'd need to specify that: + +```js +storySort: { + order: ['*', ['Introduction', '*']], +} +``` + +This would sort `*/Introduction` first, but not `Introduction` or `Very/Nested/Introduction`. If you want to target `Introduction` stories/docs anywhere in the hierarchy, you can do this with a [custom sort function](https://storybook.js.org/docs/react/writing-stories/naming-components-and-hierarchy#sorting-stories). + #### v7 Store API changes for addon authors The Story Store in v7 mode is async, so synchronous story loading APIs no longer work. In particular: diff --git a/README.md b/README.md index f0c57639d0c9..4633f6efc0b8 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ For additional help, join us in the [Storybook Discord](https://discord.gg/story | [measure](code/addons/measure/) | Visually inspect the layout and box model within the Storybook UI | | [outline](code/addons/outline/) | Visually debug the CSS layout and alignment within the Storybook UI | | [query params](https://github.com/storybookjs/addon-queryparams) | Mock query params | -| [storyshots](code/addons/storyshots/) | Snapshot testing for components in Storybook | +| [storyshots](code/addons/storyshots-core/) | Snapshot testing for components in Storybook | | [storysource](code/addons/storysource/) | View the code of your stories within the Storybook UI | | [viewport](code/addons/viewport/) | Change display sizes and layouts for responsive components using Storybook | diff --git a/RELEASES.md b/RELEASES.md deleted file mode 100644 index 88557cf2fbeb..000000000000 --- a/RELEASES.md +++ /dev/null @@ -1,117 +0,0 @@ -# Release Process - -A Storybook release process based on [Semver](http://semver.org/). In short: - -1. Merge all PRs into `next`, which is the default branch. Cherry-pick bugfix PRs into `main`, which is the stable release. - -2. Every week: release patch releases off `main` to the NPM tag `latest`, and alpha releases off `next` to the NPM tag `next` (as e.g. `4.1.0-alpha.0`). - -3. Every month or two, merge `next` into `main` and release a minor/major version according to `semver`. We set minor release dates as soon as we have feature clarity and manage to those dates: - - Date should be a Monday so if we slip we don't get pushed into the weekend - - T-3wk: - - Draft announcement and socialize - - Announce dates in #maintenance so people can react - - T-1wk: - - If you want your feature in the release, it should already be released on next by this time - - Create release branch and only cherrypick bugfixes - - Set up launch plan - -## Motivation - -During the Storybook 3.x transition we've undergone a series of growing pains as -we've opened up the development process. We've had questions about: - -1. how to adhere to semver? -2. how to do marketing releases (while adhering to semver)? -3. how to introduce significant new features (e.g. vue support, story hierarchy)? -4. how to converge on key design decisions (e.g. new addons API)? -5. how to schedule releases? -6. how to maintain quality/stability through the process? -7. how to pay down tech debt as we go? - -This process attempts to address all these concerns in one shot. - -## Semver - -[Semver](http://semver.org/) dictates three types of release: - -1. MAJOR version when you make incompatible API changes, -2. MINOR version when you add functionality in a backwards-compatible manner, and -3. PATCH version when you make backwards-compatible bug fixes. - -We'll do our best to adhere to Semver, but won't be religious about it. In -particular, we may occasionally release small bits of new functionality in PATCH -releases. We'll try our best to restrict breaking changes to MAJOR releases. - -## PATCH releases - -Every bugfix should go out as soon as we've verified the fix, and based on the -current rate of contribution, we should be issuing PATCH releases weekly. -Eventually, we'll automate the process so that a release will go out every time a PR is -merged into `main`, and we've already laid most of the groundwork for this. - -## MINOR releases - -Every new feature, particularly significant ones (e.g. Vue support, deep -hierarchy for stories) deserves more attention: - -1. They should be well-tested by the community before we release. -2. They often have architectural implications for the entire Storybook ecosystem, so should be discussed thoroughly before release. Doing `alpha` releases allow us to test in the community without necessarily achieving agreement. -3. They often deserve proper marketing treatment (blog posts, release announcement, podcast, etc.) - -Therefore we release `alpha` versions continuously on the NPM `next` tag to allow people to test out features as soon as they are ready. - -In general, we should release 2-3 headline features per minor release for -marketing purposes. Each headline feature should get its own blog post on the -Storybook medium publication, and the release itself should also get a blog -post. - -## MAJOR releases - -We should avoid major releases, but won't hold ourselves back on this. Making storybook better is the prime directive, and if we have to make breaking changes to do it, we will. That said, MAJOR releases -should have killer features that reward users for upgrading, and should not be -used to scratch our own architectural itches -- unless those itches are really -killing development in some meaningful way. - -## Blocking bugs - -Most PATCH releases come from community members, who generously fix problems as -they come up. However, there are also bugs that never get picked up and just sit -there gathering upvotes and "me too" comments. We need a way to make sure that -these bugs get addressed. - -For every non-PATCH release, we nominate a small number of bugs that must be -addressed before a release can go out by adding them to the milestone. For example, here's a list of blocking bugs [for the 6.5 milestone](https://github.com/storybookjs/storybook/milestone/75). - -Adding bugs to the milestone helps people looking for good ways to contribute, -or to understand what is blocking the release so they can actually do something -about it. Discussion about which bugs are critical happens in the [`#maintenance` channel](https://discord.com/channels/486522875931656193/490070912448724992) in our Discord Server - -If you're experiencing a bug, the best way to make sure that it gets attention -is to upvote it by adding a "thumbs-up" reaction in Github. This way important -bugs quickly bubble to the top [with a -search](https://github.com/storybookjs/storybook/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20sort%3Areactions-%2B1-desc%20label%3Abug). - -The best way to make sure a bug gets addressed quickly is to fix -it yourself and issue a PR. If the fix is good, we'll try to release it quickly -in a patch release. - -## Decision-making - -- For PATCH changes, all discussion can occur in issue/PR comments (and random slack chat as needed). -- For MINOR feature changes, there are multiple stages of discussion: - - The feature may be discussed in an issue before it is implemented (ex: ) - - Once it's implemented, the discussion may occur on the PR (ex: ) - - If people disagree on an implementation and it can't be resolved in discussion, they may issue alternative PR's with different ideas - - Ultimately the maintainers will reach a consensus before merging the changes. There is no set process for this, but we're all adults. - - Since MINOR features are released in alpha before they are fully released, new issues may be created by end users, etc. -- For MAJOR infrastructural changes, the discussion may take place over time, in gists, issues, slack discussions, etc. - - Once the breaking changes have been reduced to an actual implementation, it looks pretty much like a feature release (only with higher stakes and probably a longer stabilization process). - -## FAQ's - -#### How does my PR get merged? - -- For PATCH PR's, any maintainer can review, test, approve, and merge it. -- For MINOR/MAJOR PR's, once a maintainer reviews, tests, and approves it, they should clear it with the other maintainers before merging it into the release branch. -- Once a release date has been set and we cut off merging, we'll create a temporary branch to hold that release so that it doesn't block merging to `next`. diff --git a/SECURITY.md b/SECURITY.md index 682b8f7e3ff2..123b5d5bbeac 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,9 +2,9 @@ ## Supported Versions -| Version | Supported | -| ------------- | ------------------ | -| 6.3, 6.4, 6.5 | :white_check_mark: | +We release patches for fixing security vulnerabilities, primarily focusing on the latest release only. + +In the event of a high-risk vulnerability, we may backport the security fixes to the minor versions of the software, starting from the latest minor version up to the latest major release. The decision to backport security fixes to older versions will be made based on a risk assessment and the feasibility of implementing the patch in those versions. ## Reporting a Vulnerability diff --git a/code/.eslintrc.js b/code/.eslintrc.js index c8c7127d5c26..e967113bb8eb 100644 --- a/code/.eslintrc.js +++ b/code/.eslintrc.js @@ -9,6 +9,7 @@ module.exports = { tsconfigRootDir: __dirname, project: ['./tsconfig.json'], }, + plugins: ['local-rules'], rules: { 'eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }], 'eslint-comments/no-unused-disable': 'error', @@ -69,7 +70,15 @@ module.exports = { }, { // these packages use pre-bundling, dependencies will be bundled, and will be in devDepenencies - files: ['addons/**/*', 'frameworks/**/*', 'lib/**/*', 'renderers/**/*', 'ui/**/*'], + files: [ + 'addons/**/*', + 'frameworks/**/*', + 'lib/**/*', + 'builders/**/*', + 'deprecated/**/*', + 'renderers/**/*', + 'ui/**/*', + ], excludedFiles: ['frameworks/angular/**/*', 'frameworks/ember/**/*', 'lib/core-server/**/*'], rules: { 'import/no-extraneous-dependencies': [ @@ -158,5 +167,18 @@ module.exports = { 'import/no-unresolved': 'off', }, }, + { + files: ['**/*.ts', '!**/*.test.*', '!**/*.spec.*'], + rules: { + 'local-rules/no-uncategorized-errors': 'warn', + }, + }, + { + files: ['**/core-events/src/**/*'], + excludedFiles: ['**/*.test.*'], + rules: { + 'local-rules/no-duplicated-error-codes': 'error', + }, + }, ], }; diff --git a/code/.yarnrc.yml b/code/.yarnrc.yml index 4e51f3e0e7b8..b1f46c133b27 100644 --- a/code/.yarnrc.yml +++ b/code/.yarnrc.yml @@ -25,5 +25,5 @@ plugins: unsafeHttpWhitelist: - localhost -yarnPath: ../.yarn/releases/yarn-3.4.1.cjs +yarnPath: ../.yarn/releases/yarn-3.5.1.cjs installStatePath: '../.yarn/code-install-state.gz' diff --git a/code/__mocks__/fs-extra.js b/code/__mocks__/fs-extra.js index 8ec82c844bd6..7e18c3ead80d 100644 --- a/code/__mocks__/fs-extra.js +++ b/code/__mocks__/fs-extra.js @@ -15,17 +15,23 @@ function __setMockFiles(newMockFiles) { const readFile = async (filePath) => mockFiles[filePath]; const readFileSync = (filePath = '') => mockFiles[filePath]; const existsSync = (filePath) => !!mockFiles[filePath]; +const readJson = (filePath = '') => JSON.parse(mockFiles[filePath]); const readJsonSync = (filePath = '') => JSON.parse(mockFiles[filePath]); const lstatSync = (filePath) => ({ isFile: () => !!mockFiles[filePath], }); +const writeJson = jest.fn((filePath, json, { spaces } = {}) => { + mockFiles[filePath] = JSON.stringify(json, null, spaces); +}); // eslint-disable-next-line no-underscore-dangle fs.__setMockFiles = __setMockFiles; fs.readFile = readFile; fs.readFileSync = readFileSync; +fs.readJson = readJson; fs.readJsonSync = readJsonSync; fs.existsSync = existsSync; fs.lstatSync = lstatSync; +fs.writeJson = writeJson; module.exports = fs; diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 0b3db071729a..e37bb3fbd7a1 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", @@ -56,23 +56,24 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addon-highlight": "7.1.0-alpha.17", - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/addon-highlight": "workspace:*", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" @@ -104,7 +105,7 @@ "./src/preview.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Accessibility", "icon": "https://user-images.githubusercontent.com/263385/101991665-47042f80-3c7c-11eb-8f00-64b5a18f498a.png", diff --git a/code/addons/a11y/src/manager.test.tsx b/code/addons/a11y/src/manager.test.tsx index be9f23541285..f389266ce785 100644 --- a/code/addons/a11y/src/manager.test.tsx +++ b/code/addons/a11y/src/manager.test.tsx @@ -1,13 +1,16 @@ import * as api from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; import { PANEL_ID } from './constants'; import './manager'; jest.mock('@storybook/manager-api'); const mockedApi = api as unknown as jest.Mocked; -mockedApi.getAddonState = jest.fn(); +mockedApi.useAddonState = jest.fn(); const mockedAddons = api.addons as jest.Mocked; const registrationImpl = mockedAddons.register.mock.calls[0][1]; +const isPanel = (input: Parameters[1]): input is Addon_BaseType => + input.type === api.types.PANEL; describe('A11yManager', () => { it('should register the panels', () => { // when @@ -19,35 +22,78 @@ describe('A11yManager', () => { const panel = mockedAddons.add.mock.calls .map(([_, def]) => def) - .find(({ type }) => type === 'panel'); + .find(({ type }) => type === api.types.PANEL); const tool = mockedAddons.add.mock.calls .map(([_, def]) => def) - .find(({ type }) => type === 'tool'); + .find(({ type }) => type === api.types.TOOL); expect(panel).toBeDefined(); expect(tool).toBeDefined(); }); it('should compute title with no issues', () => { // given - mockedApi.getAddonState.mockImplementation(() => undefined); + mockedApi.useAddonState.mockImplementation(() => [undefined]); registrationImpl(api as unknown as api.API); - const title = mockedAddons.add.mock.calls - .map(([_, def]) => def) - .find(({ type }) => type === 'panel')?.title as Function; + const title = mockedAddons.add.mock.calls.map(([_, def]) => def).find(isPanel) + ?.title as Function; // when / then - expect(title()).toBe('Accessibility'); + expect(title()).toMatchInlineSnapshot(` +
+ + + Accessibility + + + +
+ `); }); it('should compute title with issues', () => { // given - mockedApi.getAddonState.mockImplementation(() => ({ violations: [{}], incomplete: [{}, {}] })); + mockedApi.useAddonState.mockImplementation(() => [ + { + violations: [{}], + incomplete: [{}, {}], + }, + ]); registrationImpl(mockedApi); - const title = mockedAddons.add.mock.calls - .map(([_, def]) => def) - .find(({ type }) => type === 'panel')?.title as Function; + const title = mockedAddons.add.mock.calls.map(([_, def]) => def).find(isPanel) + ?.title as Function; // when / then - expect(title()).toBe('Accessibility (3)'); + expect(title()).toMatchInlineSnapshot(` +
+ + + Accessibility + + + 3 + + +
+ `); }); }); diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index 910e3d10050b..3943fb3d2d48 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -1,11 +1,30 @@ import React from 'react'; -import { addons, types } from '@storybook/manager-api'; +import { addons, types, useAddonState } from '@storybook/manager-api'; +import { Badge, Spaced } from '@storybook/components'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; import { VisionSimulator } from './components/VisionSimulator'; import { A11YPanel } from './components/A11YPanel'; import type { Results } from './components/A11yContext'; import { A11yContextProvider } from './components/A11yContext'; +const Title = () => { + const [addonState] = useAddonState(ADDON_ID); + const violationsNb = addonState?.violations?.length || 0; + const incompleteNb = addonState?.incomplete?.length || 0; + const count = violationsNb + incompleteNb; + + const suffix = count === 0 ? '' : {count}; + + return ( +
+ + Accessibility + {suffix} + +
+ ); +}; + addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: '', @@ -15,17 +34,10 @@ addons.register(ADDON_ID, (api) => { }); addons.add(PANEL_ID, { - title() { - const addonState: Results = api?.getAddonState(ADDON_ID); - const violationsNb = addonState?.violations?.length || 0; - const incompleteNb = addonState?.incomplete?.length || 0; - const totalNb = violationsNb + incompleteNb; - return totalNb !== 0 ? `Accessibility (${totalNb})` : 'Accessibility'; - }, - id: 'accessibility', + title: Title, type: types.PANEL, - render: ({ active = true, key }) => ( - + render: ({ active = true }) => ( + ), diff --git a/code/addons/a11y/tsconfig.json b/code/addons/a11y/tsconfig.json index 0535ece33606..2713b9288c15 100644 --- a/code/addons/a11y/tsconfig.json +++ b/code/addons/a11y/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["jest", "@testing-library/jest-dom"], + "skipLibCheck": true, "strict": true }, "include": ["src/**/*"] diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 9499a98d9aa4..f04f164a3fec 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", @@ -73,27 +73,28 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", "prop-types": "^15.7.2", "react-inspector": "^6.0.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", "uuid": "^9.0.0" }, @@ -125,7 +126,7 @@ "./src/preview.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Actions", "unsupportedFrameworks": [ diff --git a/code/addons/actions/src/decorator.ts b/code/addons/actions/src/decorator.ts index 09c2589acc53..3022714f1253 100644 --- a/code/addons/actions/src/decorator.ts +++ b/code/addons/actions/src/decorator.ts @@ -1,6 +1,6 @@ import { global } from '@storybook/global'; import { useEffect, makeDecorator } from '@storybook/preview-api'; -import type { Addon_DecoratorFunction } from '@storybook/types'; +import type { PartialStoryFn, Renderer } from '@storybook/types'; import { actions } from './runtime/actions'; import { PARAM_KEY } from './constants'; @@ -52,15 +52,20 @@ const applyEventHandlers = (actionsFn: any, ...handles: any[]) => { }, [root, actionsFn, handles]); }; -export const withActions: Addon_DecoratorFunction = makeDecorator({ - name: 'withActions', - parameterName: PARAM_KEY, - skipIfNoParametersOrOptions: true, - wrapper: (getStory, context, { parameters }) => { - if (parameters?.['handles']) { - applyEventHandlers(actions, ...parameters['handles']); - } +// This type is basically the same as DecoratorFunction from @storybook/types. +// We can not use DecoratorFunction though as the type has to be generic. +// Hard to explain, but you will understand when you try to solve this issue: +// https://github.com/storybookjs/storybook/issues/22384 +export const withActions: (storyFn: PartialStoryFn) => T['storyResult'] = + makeDecorator({ + name: 'withActions', + parameterName: PARAM_KEY, + skipIfNoParametersOrOptions: true, + wrapper: (getStory, context, { parameters }) => { + if (parameters?.['handles']) { + applyEventHandlers(actions, ...parameters['handles']); + } - return getStory(context); - }, -}); + return getStory(context); + }, + }); diff --git a/code/addons/actions/src/manager.tsx b/code/addons/actions/src/manager.tsx index b17bdc1bbac6..cade1d86fdce 100644 --- a/code/addons/actions/src/manager.tsx +++ b/code/addons/actions/src/manager.tsx @@ -1,50 +1,42 @@ -import React, { useState } from 'react'; -import { addons, types, useChannel } from '@storybook/manager-api'; +import React from 'react'; +import { addons, types, useAddonState, useChannel } from '@storybook/manager-api'; import { STORY_CHANGED } from '@storybook/core-events'; +import { Badge, Spaced } from '@storybook/components'; import ActionLogger from './containers/ActionLogger'; import { ADDON_ID, CLEAR_ID, EVENT_ID, PANEL_ID, PARAM_KEY } from './constants'; -function Title({ count }: { count: { current: number } }) { - // eslint-disable-next-line @typescript-eslint/naming-convention - const [_, setRerender] = useState(false); +function Title() { + const [{ count }, setCount] = useAddonState(ADDON_ID, { count: 0 }); - // Reactivity hack - force re-render on STORY_CHANGED, EVENT_ID and CLEAR_ID events useChannel({ [EVENT_ID]: () => { - setRerender((r) => !r); + setCount((c) => ({ ...c, count: c.count + 1 })); }, [STORY_CHANGED]: () => { - setRerender((r) => !r); + setCount((c) => ({ ...c, count: 0 })); }, [CLEAR_ID]: () => { - setRerender((r) => !r); + setCount((c) => ({ ...c, count: 0 })); }, }); - const suffix = count.current === 0 ? '' : ` (${count.current})`; - return <>Actions{suffix}; + const suffix = count === 0 ? '' : {count}; + + return ( +
+ + Actions + {suffix} + +
+ ); } addons.register(ADDON_ID, (api) => { - const countRef = { current: 0 }; - - api.on(STORY_CHANGED, (id) => { - countRef.current = 0; - }); - - api.on(EVENT_ID, () => { - countRef.current += 1; - }); - - api.on(CLEAR_ID, () => { - countRef.current = 0; - }); - - addons.addPanel(PANEL_ID, { - title: , - id: 'actions', + addons.add(PANEL_ID, { + title: Title, type: types.PANEL, - render: ({ active, key }) => <ActionLogger key={key} api={api} active={!!active} />, + render: ({ active }) => <ActionLogger api={api} active={!!active} />, paramKey: PARAM_KEY, }); }); diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 075fb770c053..4b27406819d7 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", @@ -69,21 +69,22 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -112,7 +113,7 @@ "./src/preview.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Backgrounds", "icon": "https://user-images.githubusercontent.com/263385/101991667-479cc600-3c7c-11eb-96d3-410e936252e7.png", diff --git a/code/addons/backgrounds/src/manager.tsx b/code/addons/backgrounds/src/manager.tsx index 4cabc6011c84..ecd36b0bb618 100644 --- a/code/addons/backgrounds/src/manager.tsx +++ b/code/addons/backgrounds/src/manager.tsx @@ -8,7 +8,6 @@ import { GridSelector } from './containers/GridSelector'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'Backgrounds', - id: 'backgrounds', type: types.TOOL, match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), render: () => ( diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 108c07b564c3..d7603cb7caf7 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", @@ -61,22 +61,24 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/blocks": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/blocks": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -102,7 +104,7 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Controls", "icon": "https://user-images.githubusercontent.com/263385/101991669-479cc600-3c7c-11eb-93d9-38b67e8371f2.png", diff --git a/code/addons/controls/src/ControlsPanel.tsx b/code/addons/controls/src/ControlsPanel.tsx index e5583589d007..fc7c2085abd4 100644 --- a/code/addons/controls/src/ControlsPanel.tsx +++ b/code/addons/controls/src/ControlsPanel.tsx @@ -1,5 +1,5 @@ import type { FC } from 'react'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { useArgs, useGlobals, @@ -7,12 +7,7 @@ import { useParameter, useStorybookState, } from '@storybook/manager-api'; -import { - PureArgsTable as ArgsTable, - NoControlsWarning, - type PresetColor, - type SortType, -} from '@storybook/blocks'; +import { PureArgsTable as ArgsTable, type PresetColor, type SortType } from '@storybook/blocks'; import type { ArgTypes } from '@storybook/types'; import { PARAM_KEY } from './constants'; @@ -21,24 +16,26 @@ interface ControlsParameters { sort?: SortType; expanded?: boolean; presetColors?: PresetColor[]; + + /** @deprecated No longer used, will be removed in Storybook 8.0 */ hideNoControlsWarning?: boolean; } export const ControlsPanel: FC = () => { + const [isLoading, setIsLoading] = useState(true); const [args, updateArgs, resetArgs] = useArgs(); const [globals] = useGlobals(); const rows = useArgTypes(); - const isArgsStory = useParameter<boolean>('__isArgsStory', false); - const { - expanded, - sort, - presetColors, - hideNoControlsWarning = false, - } = useParameter<ControlsParameters>(PARAM_KEY, {}); - const { path } = useStorybookState(); + const { expanded, sort, presetColors } = useParameter<ControlsParameters>(PARAM_KEY, {}); + const { path, previewInitialized } = useStorybookState(); + + // If the story is prepared, then show the args table + // and reset the loading states + useEffect(() => { + if (previewInitialized) setIsLoading(false); + }, [previewInitialized]); const hasControls = Object.values(rows).some((arg) => arg?.control); - const showWarning = !(hasControls && isArgsStory) && !hideNoControlsWarning; const withPresetColors = Object.entries(rows).reduce((acc, [key, arg]) => { if (arg?.control?.type !== 'color' || arg?.control?.presetColors) acc[key] = arg; @@ -47,21 +44,17 @@ export const ControlsPanel: FC = () => { }, {} as ArgTypes); return ( - <> - {showWarning && <NoControlsWarning />} - <ArgsTable - {...{ - key: path, // resets state when switching stories - compact: !expanded && hasControls, - rows: withPresetColors, - args, - globals, - updateArgs, - resetArgs, - inAddonPanel: true, - sort, - }} - /> - </> + <ArgsTable + key={path} // resets state when switching stories + compact={!expanded && hasControls} + rows={withPresetColors} + args={args} + globals={globals} + updateArgs={updateArgs} + resetArgs={resetArgs} + inAddonPanel + sort={sort} + isLoading={isLoading} + /> ); }; diff --git a/code/addons/controls/src/manager.tsx b/code/addons/controls/src/manager.tsx index eae78973b47a..921cd038b74c 100644 --- a/code/addons/controls/src/manager.tsx +++ b/code/addons/controls/src/manager.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { addons, types, type API, useArgTypes } from '@storybook/manager-api'; -import { AddonPanel } from '@storybook/components'; +import { addons, types, useArgTypes } from '@storybook/manager-api'; +import { AddonPanel, Badge, Spaced } from '@storybook/components'; import { ControlsPanel } from './ControlsPanel'; import { ADDON_ID, PARAM_KEY } from './constants'; @@ -9,23 +9,29 @@ function Title() { const controlsCount = Object.values(rows).filter( (argType) => argType?.control && !argType?.table?.disable ).length; - const suffix = controlsCount === 0 ? '' : ` (${controlsCount})`; + const suffix = controlsCount === 0 ? '' : <Badge status="neutral">{controlsCount}</Badge>; - return <>Controls{suffix}</>; + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Controls</span> + {suffix} + </Spaced> + </div> + ); } -addons.register(ADDON_ID, (api: API) => { - addons.addPanel(ADDON_ID, { - title: <Title />, - id: 'controls', +addons.register(ADDON_ID, (api) => { + addons.add(ADDON_ID, { + title: Title, type: types.PANEL, paramKey: PARAM_KEY, - render: ({ key, active }) => { + render: ({ active }) => { if (!active || !api.getCurrentStoryData()) { return null; } return ( - <AddonPanel key={key} active={active}> + <AddonPanel active={active}> <ControlsPanel /> </AddonPanel> ); diff --git a/code/addons/controls/template/stories/basics.stories.ts b/code/addons/controls/template/stories/basics.stories.ts index 51acda9c1f21..aabbda0e4d4c 100644 --- a/code/addons/controls/template/stories/basics.stories.ts +++ b/code/addons/controls/template/stories/basics.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], argTypes: { boolean: { control: 'boolean' }, diff --git a/code/addons/controls/template/stories/conditional.stories.ts b/code/addons/controls/template/stories/conditional.stories.ts index 8d8677f33e60..eba90f541a0d 100644 --- a/code/addons/controls/template/stories/conditional.stories.ts +++ b/code/addons/controls/template/stories/conditional.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], }; diff --git a/code/addons/controls/template/stories/disable.stories.ts b/code/addons/controls/template/stories/disable.stories.ts index bcc53c876124..7b8be89df32f 100644 --- a/code/addons/controls/template/stories/disable.stories.ts +++ b/code/addons/controls/template/stories/disable.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], }; diff --git a/code/addons/controls/template/stories/filters.stories.ts b/code/addons/controls/template/stories/filters.stories.ts index 8aa860e77b82..5b84f32e110a 100644 --- a/code/addons/controls/template/stories/filters.stories.ts +++ b/code/addons/controls/template/stories/filters.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], args: { helloWorld: 1, diff --git a/code/addons/controls/template/stories/issues.stories.ts b/code/addons/controls/template/stories/issues.stories.ts index d3827f766d6b..00c5c71b21e0 100644 --- a/code/addons/controls/template/stories/issues.stories.ts +++ b/code/addons/controls/template/stories/issues.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], }; diff --git a/code/addons/controls/template/stories/matchers.stories.ts b/code/addons/controls/template/stories/matchers.stories.ts index 0582447362a9..174d59f085c1 100644 --- a/code/addons/controls/template/stories/matchers.stories.ts +++ b/code/addons/controls/template/stories/matchers.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], }; diff --git a/code/addons/controls/template/stories/sorting.stories.ts b/code/addons/controls/template/stories/sorting.stories.ts index 573f11a2bb3d..12353382b436 100644 --- a/code/addons/controls/template/stories/sorting.stories.ts +++ b/code/addons/controls/template/stories/sorting.stories.ts @@ -4,7 +4,8 @@ import type { PartialStoryFn, StoryContext } from '@storybook/types'; export default { component: globalThis.Components.Pre, decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => storyFn({ args: { object: context.args } }), + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { object: { ...context.args } } }), ], argTypes: { x: { type: { required: true } }, diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 73ebe5329dbc..27e8936644da 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", @@ -90,28 +90,29 @@ "lit/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/csf-plugin": "7.1.0-alpha.17", - "@storybook/csf-tools": "7.1.0-alpha.17", + "@storybook/blocks": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/csf-plugin": "workspace:*", + "@storybook/csf-tools": "workspace:*", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/postinstall": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/react-dom-shim": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/node-logger": "workspace:*", + "@storybook/postinstall": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/react-dom-shim": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -141,7 +142,7 @@ "@storybook/mdx1-csf" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Docs", "icon": "https://user-images.githubusercontent.com/263385/101991672-48355c80-3c7c-11eb-82d9-95fa12438f64.png", diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index 6e784adec8cf..1931f0bcc32c 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -1,15 +1,10 @@ import fs from 'fs-extra'; +import { dirname, join } from 'path'; import remarkSlug from 'remark-slug'; import remarkExternalLinks from 'remark-external-links'; import { dedent } from 'ts-dedent'; -import type { - IndexerOptions, - StoryIndexer, - DocsOptions, - Options, - StorybookConfig, -} from '@storybook/types'; +import type { DocsOptions, Indexer, Options, StorybookConfig } from '@storybook/types'; import type { CsfPluginOptions } from '@storybook/csf-plugin'; import type { JSXOptions, CompileOptions } from '@storybook/mdx2-csf'; import { global } from '@storybook/global'; @@ -56,7 +51,10 @@ async function webpack( skipCsf: true, ...mdxPluginOptions, mdxCompileOptions: { - providerImportSource: '@storybook/addon-docs/mdx-react-shim', + providerImportSource: join( + dirname(require.resolve('@storybook/addon-docs/package.json')), + '/dist/shims/mdx-react-shim' + ), ...mdxPluginOptions.mdxCompileOptions, remarkPlugins: [remarkSlug, remarkExternalLinks].concat( mdxPluginOptions?.mdxCompileOptions?.remarkPlugins ?? [] @@ -105,7 +103,7 @@ async function webpack( module: { ...module, rules: [ - ...module.rules, + ...(module.rules || []), { test: /(stories|story)\.mdx$/, use: [ @@ -135,23 +133,35 @@ async function webpack( return result; } -const storyIndexers = (indexers: StoryIndexer[] | null) => { - const mdxIndexer = async (fileName: string, opts: IndexerOptions) => { +export const createStoriesMdxIndexer = (legacyMdx1?: boolean): Indexer => ({ + test: /(stories|story)\.mdx$/, + index: async (fileName, opts) => { let code = (await fs.readFile(fileName, 'utf-8')).toString(); - const { compile } = global.FEATURES?.legacyMdx1 + const { compile } = legacyMdx1 ? await import('@storybook/mdx1-csf') : await import('@storybook/mdx2-csf'); code = await compile(code, {}); - return loadCsf(code, { ...opts, fileName }).parse(); - }; - return [ - { - test: /(stories|story)\.mdx$/, - indexer: mdxIndexer, - }, - ...(indexers || []), - ]; -}; + const csf = loadCsf(code, { ...opts, fileName }).parse(); + + const { indexInputs, stories } = csf; + + return indexInputs.map((input, index) => { + const docsOnly = stories[index].parameters?.docsOnly; + const tags = input.tags ? input.tags : []; + if (docsOnly) { + tags.push('stories-mdx-docsOnly'); + } + // the mdx-csf compiler automatically adds the 'stories-mdx' tag to meta, here' we're just making sure it is always there + if (!tags.includes('stories-mdx')) { + tags.push('stories-mdx'); + } + return { ...input, tags }; + }); + }, +}); + +const indexers: StorybookConfig['experimental_indexers'] = (existingIndexers) => + [createStoriesMdxIndexer(global.FEATURES?.legacyMdx1)].concat(existingIndexers || []); const docs = (docsOptions: DocsOptions) => { return { @@ -170,9 +180,9 @@ export const addons: StorybookConfig['addons'] = [ * something down the dependency chain is using typescript namespaces, which are not supported by rollup-plugin-dts */ const webpackX = webpack as any; -const storyIndexersX = storyIndexers as any; +const indexersX = indexers as any; const docsX = docs as any; ensureReactPeerDeps(); -export { webpackX as webpack, storyIndexersX as storyIndexers, docsX as docs }; +export { webpackX as webpack, indexersX as experimental_indexers, docsX as docs }; diff --git a/code/addons/docs/src/typings.d.ts b/code/addons/docs/src/typings.d.ts index 651c8846fc0b..48d1127304af 100644 --- a/code/addons/docs/src/typings.d.ts +++ b/code/addons/docs/src/typings.d.ts @@ -10,12 +10,6 @@ declare module 'sveltedoc-parser' { export function parse(options: any): Promise<any>; } -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - legacyMdx1?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; diff --git a/code/addons/docs/template/stories/toc/basic.stories.ts b/code/addons/docs/template/stories/toc/basic.stories.ts new file mode 100644 index 000000000000..63938a400e8f --- /dev/null +++ b/code/addons/docs/template/stories/toc/basic.stories.ts @@ -0,0 +1,14 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + component: globalThis.Components.Button, + tags: ['autodocs'], + parameters: { + chromatic: { disable: true }, + docs: { toc: {} }, + }, +}; + +export const One = { args: { label: 'One' } }; +export const Two = { args: { label: 'Two' } }; +export const Three = { args: { label: 'Three' } }; diff --git a/code/addons/docs/template/stories/toc/custom-selector.stories.ts b/code/addons/docs/template/stories/toc/custom-selector.stories.ts new file mode 100644 index 000000000000..e031366aa829 --- /dev/null +++ b/code/addons/docs/template/stories/toc/custom-selector.stories.ts @@ -0,0 +1,15 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + component: globalThis.Components.Button, + tags: ['autodocs'], + parameters: { + chromatic: { disable: true }, + // Select all the headings in the document + docs: { toc: { headingSelector: 'h1, h2, h3' } }, + }, +}; + +export const One = { args: { label: 'One' } }; +export const Two = { args: { label: 'Two' } }; +export const Three = { args: { label: 'Three' } }; diff --git a/code/addons/docs/template/stories/toc/custom-title.stories.ts b/code/addons/docs/template/stories/toc/custom-title.stories.ts new file mode 100644 index 000000000000..69303e905cd0 --- /dev/null +++ b/code/addons/docs/template/stories/toc/custom-title.stories.ts @@ -0,0 +1,15 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + component: globalThis.Components.Button, + tags: ['autodocs'], + parameters: { + chromatic: { disable: true }, + // Custom title label + docs: { toc: { title: 'Contents' } }, + }, +}; + +export const One = { args: { label: 'One' } }; +export const Two = { args: { label: 'Two' } }; +export const Three = { args: { label: 'Three' } }; diff --git a/code/addons/docs/template/stories/toc/ignore-selector.stories.ts b/code/addons/docs/template/stories/toc/ignore-selector.stories.ts new file mode 100644 index 000000000000..61ae6d12f2a7 --- /dev/null +++ b/code/addons/docs/template/stories/toc/ignore-selector.stories.ts @@ -0,0 +1,15 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + component: globalThis.Components.Button, + tags: ['autodocs'], + parameters: { + chromatic: { disable: true }, + // Skip the first story in the TOC + docs: { toc: { ignoreSelector: '#one' } }, + }, +}; + +export const One = { args: { label: 'One' } }; +export const Two = { args: { label: 'Two' } }; +export const Three = { args: { label: 'Three' } }; diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 05722e11d13f..eb3509db2aa4 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", @@ -112,30 +112,31 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addon-actions": "7.1.0-alpha.17", - "@storybook/addon-backgrounds": "7.1.0-alpha.17", - "@storybook/addon-controls": "7.1.0-alpha.17", - "@storybook/addon-docs": "7.1.0-alpha.17", - "@storybook/addon-highlight": "7.1.0-alpha.17", - "@storybook/addon-measure": "7.1.0-alpha.17", - "@storybook/addon-outline": "7.1.0-alpha.17", - "@storybook/addon-toolbars": "7.1.0-alpha.17", - "@storybook/addon-viewport": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", + "@storybook/addon-actions": "workspace:*", + "@storybook/addon-backgrounds": "workspace:*", + "@storybook/addon-controls": "workspace:*", + "@storybook/addon-docs": "workspace:*", + "@storybook/addon-highlight": "workspace:*", + "@storybook/addon-measure": "workspace:*", + "@storybook/addon-outline": "workspace:*", + "@storybook/addon-toolbars": "workspace:*", + "@storybook/addon-viewport": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview-api": "workspace:*", "ts-dedent": "^2.0.0" }, "devDependencies": { - "@storybook/vue": "7.1.0-alpha.17", + "@storybook/vue": "workspace:*", "typescript": "^4.9.3" }, "peerDependencies": { @@ -166,5 +167,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/addons/essentials/src/docs/preset.ts b/code/addons/essentials/src/docs/preset.ts index af022cfece92..1faed598e0b1 100644 --- a/code/addons/essentials/src/docs/preset.ts +++ b/code/addons/essentials/src/docs/preset.ts @@ -1,8 +1,13 @@ -/* eslint-disable import/export */ +import { dirname, join } from 'path'; + +// eslint-disable-next-line import/export export * from '@storybook/addon-docs/dist/preset'; export const mdxLoaderOptions = async (config: any) => { // eslint-disable-next-line no-param-reassign - config.mdxCompileOptions.providerImportSource = '@storybook/addon-essentials/docs/mdx-react-shim'; + config.mdxCompileOptions.providerImportSource = join( + dirname(require.resolve('@storybook/addon-docs/package.json')), + '/dist/shims/mdx-react-shim' + ); return config; }; diff --git a/code/addons/essentials/src/index.ts b/code/addons/essentials/src/index.ts index 96fd171146bb..358cf796a579 100644 --- a/code/addons/essentials/src/index.ts +++ b/code/addons/essentials/src/index.ts @@ -3,15 +3,16 @@ import { logger } from '@storybook/node-logger'; import { serverRequire } from '@storybook/core-common'; interface PresetOptions { - configDir: string; - docs?: boolean; - controls?: boolean; actions?: boolean; backgrounds?: boolean; - viewport?: boolean; - toolbars?: boolean; + configDir: string; + controls?: boolean; + docs?: boolean; measure?: boolean; outline?: boolean; + themes?: boolean; + toolbars?: boolean; + viewport?: boolean; } const requireMain = (configDir: string) => { @@ -37,6 +38,8 @@ export function addons(options: PresetOptions) { }; const main = requireMain(options.configDir); + + // NOTE: The order of these addons is important. return [ 'docs', 'controls', diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index 6a11d82bff16..7f45471a169a 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", @@ -44,14 +44,15 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/node-logger": "7.1.0-alpha.17", + "@storybook/node-logger": "workspace:*", "remark-gfm": "^3.0.1", "ts-dedent": "^2.0.0" }, @@ -69,5 +70,5 @@ "cjs" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/addons/gfm/tsconfig.json b/code/addons/gfm/tsconfig.json index a6f65038a17b..1dc5a72190bd 100644 --- a/code/addons/gfm/tsconfig.json +++ b/code/addons/gfm/tsconfig.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "skipLibCheck": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/addons/highlight/README.md b/code/addons/highlight/README.md index f6bf3fa293e3..e4b245acc5fd 100644 --- a/code/addons/highlight/README.md +++ b/code/addons/highlight/README.md @@ -4,61 +4,143 @@ Storybook addon allows for highlighting specific DOM nodes within your story. Use it to call attention to particular parts of the story. Or use it to enhance other addons that you might be building. For example, [Accessibility](https://storybook.js.org/addons/@storybook/addon-a11y/) addon uses it to highlight DOM nodes that are failing accessibility checks. -![](https://user-images.githubusercontent.com/42671/160146801-179eaa79-fff8-4bff-b17c-9262fdc94918.png) +![Story with highlight](./docs/highlight.png) ## Usage -This addon requires Storybook 6.5 or later. Highlight is part of [essentials](https://storybook.js.org/docs/react/essentials/introduction) and so is installed in all new Storybooks by default. If you need to add it to your Storybook, you can run: +This addon requires Storybook 6.5 or later. Highlight is part of [essentials](https://storybook.js.org/docs/react/essentials/introduction) and so is installed in all new Storybooks by default. If you need to add it to your Storybook, you can run the following command: + +yarn: + +```sh +yarn add --dev @storybook/addon-highlight +``` + +npm: + +```sh +npm install @storybook/addon-highlight --save-dev +``` + +pnpm: ```sh -npm i -D @storybook/addon-highlight +pnpm add --save-dev @storybook/addon-highlight ``` -Add `"@storybook/addon-highlight"` to the addons array in your `.storybook/main.js`: +Add `"@storybook/addon-highlight"` to the addons array in your `.storybook/main.js|ts`: -```js -export default { +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { addons: ['@storybook/addon-highlight'], }; + +export default config; ``` -### Apply or clear highlights +### Highlighting DOM Elements -Highlight DOM nodes by emitting the `HIGHLIGHT` event from within a story or an addon. The event payload must contain a list of selectors you want to highlight. +Highlight DOM nodes by emitting the `HIGHLIGHT` event from within a story or an addon. The event payload must contain an `elements` property assigned to an array of selectors matching the elements you want to highlight. -```js -import React, { useEffect } from 'react'; -import { useChannel } from '@storybook/preview-api'; -import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; -import { MyComponent } form './MyComponent'; +```ts +// MyComponent.stories.ts -export default { component: MyComponent }; +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; -export const MyStory = () => { - const emit = useChannel({}); +import { MyComponent } from './MyComponent'; - useEffect(() => { - emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - }); - }, []); +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; - return <MyComponent />; +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const Highlighted: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['.title', '.subtitle'], + }); + return storyFn(); + }, + ], }; ``` +### Reset highlighted elements + Highlights are automatically cleared when the story changes. You can also manually clear them by emitting the `RESET_HIGHLIGHT` event. -```js -emit(RESET_HIGHLIGHT); +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const ResetHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return storyFn(); + }, + ], +}; ``` ### Customize style -```js -emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - color: 'red', - style: 'solid', // 'dotted' | 'dashed' | 'solid' | 'double' -}); +The addon applies a standard style to the highlighted elements you've enabled for the story. However, you can enable your custom style by extending the payload object and providing a `color` and/or `style` properties. For example: + +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const StyledHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['.title', '.subtitle'], + color: 'red', + style: 'solid', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return storyFn(); + }, + ], +}; ``` diff --git a/code/addons/highlight/docs/highlight.png b/code/addons/highlight/docs/highlight.png new file mode 100644 index 000000000000..2d1aef2f56ea Binary files /dev/null and b/code/addons/highlight/docs/highlight.png differ diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 49a38f46e49e..0a8664a64c8f 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", @@ -54,16 +54,17 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/preview-api": "workspace:*" }, "devDependencies": { "@types/webpack-env": "^1.16.0", @@ -78,7 +79,7 @@ "./src/preview.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Highlight", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index 35ba0f3c45c2..47ac694796b8 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", @@ -65,31 +65,32 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/instrumenter": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, "devDependencies": { "@devtools-ds/object-inspector": "^1.1.2", - "@storybook/jest": "future", - "@storybook/testing-library": "future", + "@storybook/jest": "next", + "@storybook/testing-library": "next", "@types/node": "^16.0.0", "formik": "^2.2.9", "typescript": "~4.9.3" @@ -114,11 +115,10 @@ "./src/index.ts", "./src/manager.tsx", "./src/preview.ts", - "./src/preset/checkActionsLoaded.ts" - ], - "platform": "node" + "./src/preset.ts" + ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Interactions", "unsupportedFrameworks": [ diff --git a/code/addons/interactions/preset.js b/code/addons/interactions/preset.js index 6f2756ea9960..e538669369e9 100644 --- a/code/addons/interactions/preset.js +++ b/code/addons/interactions/preset.js @@ -1,4 +1,4 @@ -const { checkActionsLoaded } = require('./dist/preset/checkActionsLoaded'); +const { checkActionsLoaded } = require('./dist/preset'); function previewAnnotations(entry = [], options) { checkActionsLoaded(options.configDir); diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index a6cdcba755c2..0bf1111fca01 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -1,6 +1,7 @@ import { global } from '@storybook/global'; -import * as React from 'react'; -import { useChannel, useParameter } from '@storybook/manager-api'; +import type { Dispatch, SetStateAction } from 'react'; +import React, { Fragment, memo, useEffect, useMemo, useRef, useState } from 'react'; +import { useAddonState, useChannel, useParameter } from '@storybook/manager-api'; import { FORCE_REMOUNT, IGNORED_EXCEPTION, @@ -8,17 +9,10 @@ import { STORY_THREW_EXCEPTION, PLAY_FUNCTION_THREW_EXCEPTION, } from '@storybook/core-events'; -import { - EVENTS, - type Call, - CallStates, - type ControlStates, - type LogItem, -} from '@storybook/instrumenter'; - -import type { StoryId } from '@storybook/types'; +import { EVENTS, type Call, CallStates, type LogItem } from '@storybook/instrumenter'; + import { InteractionsPanel } from './components/InteractionsPanel'; -import { TabIcon, TabStatus } from './components/TabStatus'; +import { ADDON_ID } from './constants'; interface Interaction extends Call { status: Call['status']; @@ -45,15 +39,18 @@ export const getInteractions = ({ log: LogItem[]; calls: Map<Call['id'], Call>; collapsed: Set<Call['id']>; - setCollapsed: React.Dispatch<React.SetStateAction<Set<string>>>; + setCollapsed: Dispatch<SetStateAction<Set<string>>>; }) => { const callsById = new Map<Call['id'], Call>(); const childCallMap = new Map<Call['id'], Call['id'][]>(); + return log .map<Call & { isHidden: boolean }>(({ callId, ancestors, status }) => { let isHidden = false; ancestors.forEach((ancestor) => { - if (collapsed.has(ancestor)) isHidden = true; + if (collapsed.has(ancestor)) { + isHidden = true; + } childCallMap.set(ancestor, (childCallMap.get(ancestor) || []).concat(callId)); }); return { ...calls.get(callId), status, isHidden }; @@ -72,34 +69,50 @@ export const getInteractions = ({ isCollapsed: collapsed.has(call.id), toggleCollapsed: () => setCollapsed((ids) => { - if (ids.has(call.id)) ids.delete(call.id); - else ids.add(call.id); + if (ids.has(call.id)) { + ids.delete(call.id); + } else { + ids.add(call.id); + } return new Set(ids); }), }; }); }; -export const Panel: React.FC<{ active: boolean }> = (props) => { - const [storyId, setStoryId] = React.useState<StoryId>(); - const [controlStates, setControlStates] = React.useState<ControlStates>(INITIAL_CONTROL_STATES); - const [pausedAt, setPausedAt] = React.useState<Call['id']>(); - const [isErrored, setErrored] = React.useState(false); - const [isPlaying, setPlaying] = React.useState(false); - const [isRerunAnimating, setIsRerunAnimating] = React.useState(false); - const [scrollTarget, setScrollTarget] = React.useState<HTMLElement>(); - const [collapsed, setCollapsed] = React.useState<Set<Call['id']>>(new Set()); - const [caughtException, setCaughtException] = React.useState<Error>(); - const [interactions, setInteractions] = React.useState<Interaction[]>([]); - const [interactionsCount, setInteractionsCount] = React.useState<number>(); +export const Panel = memo<{ storyId: string }>(function PanelMemoized({ storyId }) { + // shared state + const [addonState, set] = useAddonState(ADDON_ID, { + controlStates: INITIAL_CONTROL_STATES, + isErrored: false, + pausedAt: undefined, + interactions: [], + isPlaying: false, + hasException: false, + caughtException: undefined, + interactionsCount: 0, + }); + + // local state + const [scrollTarget, setScrollTarget] = useState<HTMLElement | undefined>(undefined); + const [collapsed, setCollapsed] = useState<Set<Call['id']>>(new Set()); + + const { + controlStates = INITIAL_CONTROL_STATES, + isErrored = false, + pausedAt = undefined, + interactions = [], + isPlaying = false, + caughtException = undefined, + } = addonState; // Log and calls are tracked in a ref so we don't needlessly rerender. - const log = React.useRef<LogItem[]>([]); - const calls = React.useRef<Map<Call['id'], Omit<Call, 'status'>>>(new Map()); + const log = useRef<LogItem[]>([]); + const calls = useRef<Map<Call['id'], Omit<Call, 'status'>>>(new Map()); const setCall = ({ status, ...call }: Call) => calls.current.set(call.id, call); - const endRef = React.useRef(); - React.useEffect(() => { + const endRef = useRef(); + useEffect(() => { let observer: IntersectionObserver; if (global.IntersectionObserver) { observer = new global.IntersectionObserver( @@ -115,45 +128,84 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { { [EVENTS.CALL]: setCall, [EVENTS.SYNC]: (payload) => { - setControlStates(payload.controlStates); - setPausedAt(payload.pausedAt); - setInteractions( - getInteractions({ log: payload.logItems, calls: calls.current, collapsed, setCollapsed }) - ); + set((s) => { + const list = getInteractions({ + log: payload.logItems, + calls: calls.current, + collapsed, + setCollapsed, + }); + return { + ...s, + controlStates: payload.controlStates, + pausedAt: payload.pausedAt, + interactions: list, + interactionsCount: list.filter(({ method }) => method !== 'step').length, + }; + }); + log.current = payload.logItems; }, [STORY_RENDER_PHASE_CHANGED]: (event) => { - setStoryId(event.storyId); - setPlaying(event.newPhase === 'playing'); - setPausedAt(undefined); - if (event.newPhase === 'rendering') { - setErrored(false); - setCaughtException(undefined); + if (event.newPhase === 'preparing') { + set((s) => ({ + controlStates: INITIAL_CONTROL_STATES, + isErrored: false, + pausedAt: undefined, + interactions: [], + isPlaying: false, + isRerunAnimating: false, + scrollTarget, + collapsed: new Set() as Set<Call['id']>, + hasException: false, + caughtException: undefined, + interactionsCount: 0, + })); + return; } + set((s) => ({ + ...s, + isPlaying: event.newPhase === 'playing', + pausedAt: undefined, + ...(event.newPhase === 'rendering' + ? { + isErrored: false, + caughtException: undefined, + } + : {}), + })); }, [STORY_THREW_EXCEPTION]: () => { - setErrored(true); + set((s) => ({ ...s, isErrored: true })); }, [PLAY_FUNCTION_THREW_EXCEPTION]: (e) => { - if (e?.message !== IGNORED_EXCEPTION.message) setCaughtException(e); - else setCaughtException(undefined); + if (e?.message !== IGNORED_EXCEPTION.message) { + set((s) => ({ ...s, caughtException: e })); + } else { + set((s) => ({ ...s, caughtException: undefined })); + } }, }, [collapsed] ); - React.useEffect(() => { - setInteractions( - getInteractions({ log: log.current, calls: calls.current, collapsed, setCollapsed }) - ); + useEffect(() => { + set((s) => { + const list = getInteractions({ + log: log.current, + calls: calls.current, + collapsed, + setCollapsed, + }); + return { + ...s, + interactions: list, + interactionsCount: list.filter(({ method }) => method !== 'step').length, + }; + }); }, [collapsed]); - React.useEffect(() => { - if (isPlaying || isRerunAnimating) return; - setInteractionsCount(interactions.filter(({ method }) => method !== 'step').length); - }, [interactions, isPlaying, isRerunAnimating]); - - const controls = React.useMemo( + const controls = useMemo( () => ({ start: () => emit(EVENTS.START, { storyId }), back: () => emit(EVENTS.BACK, { storyId }), @@ -161,7 +213,6 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { next: () => emit(EVENTS.NEXT, { storyId }), end: () => emit(EVENTS.END, { storyId }), rerun: () => { - setIsRerunAnimating(true); emit(FORCE_REMOUNT, { storyId }); }, }), @@ -172,19 +223,14 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { const [fileName] = storyFilePath.toString().split('/').slice(-1); const scrollToTarget = () => scrollTarget?.scrollIntoView({ behavior: 'smooth', block: 'end' }); - const showStatus = interactionsCount > 0 || !!caughtException || isRerunAnimating; const hasException = !!caughtException || interactions.some((v) => v.status === CallStates.ERROR); if (isErrored) { - return <React.Fragment key="interactions" />; + return <Fragment key="interactions" />; } return ( - <React.Fragment key="interactions"> - <TabStatus> - {showStatus && - (hasException ? <TabIcon status={CallStates.ERROR} /> : ` (${interactionsCount})`)} - </TabStatus> + <Fragment key="interactions"> <InteractionsPanel calls={calls.current} controls={controls} @@ -197,10 +243,7 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { pausedAt={pausedAt} endRef={endRef} onScrollToEnd={scrollTarget && scrollToTarget} - isRerunAnimating={isRerunAnimating} - setIsRerunAnimating={setIsRerunAnimating} - {...props} /> - </React.Fragment> + </Fragment> ); -}; +}); diff --git a/code/addons/interactions/src/components/InteractionsPanel.tsx b/code/addons/interactions/src/components/InteractionsPanel.tsx index e5bed004ded0..6fad03daaf48 100644 --- a/code/addons/interactions/src/components/InteractionsPanel.tsx +++ b/code/addons/interactions/src/components/InteractionsPanel.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { AddonPanel, Link, Placeholder } from '@storybook/components'; +import { Link, Placeholder } from '@storybook/components'; import { type Call, CallStates, type ControlStates } from '@storybook/instrumenter'; import { styled } from '@storybook/theming'; import { transparentize } from 'polished'; @@ -18,7 +18,6 @@ export interface Controls { } interface InteractionsPanelProps { - active: boolean; controls: Controls; controlStates: ControlStates; interactions: (Call & { @@ -36,8 +35,6 @@ interface InteractionsPanelProps { calls: Map<string, any>; endRef?: React.Ref<HTMLDivElement>; onScrollToEnd?: () => void; - isRerunAnimating: boolean; - setIsRerunAnimating: React.Dispatch<React.SetStateAction<boolean>>; } const Container = styled.div<{ withException: boolean }>(({ theme, withException }) => ({ @@ -91,72 +88,65 @@ export const InteractionsPanel: React.FC<InteractionsPanelProps> = React.memo( pausedAt, onScrollToEnd, endRef, - isRerunAnimating, - setIsRerunAnimating, - ...panelProps }) { return ( - <AddonPanel {...panelProps}> - <Container withException={!!caughtException}> - {(interactions.length > 0 || hasException || isRerunAnimating) && ( - <Subnav + <Container withException={!!caughtException}> + {(interactions.length > 0 || hasException) && ( + <Subnav + controls={controls} + controlStates={controlStates} + status={ + // eslint-disable-next-line no-nested-ternary + isPlaying ? CallStates.ACTIVE : hasException ? CallStates.ERROR : CallStates.DONE + } + storyFileName={fileName} + onScrollToEnd={onScrollToEnd} + /> + )} + <div aria-label="Interactions list"> + {interactions.map((call) => ( + <Interaction + key={call.id} + call={call} + callsById={calls} controls={controls} controlStates={controlStates} - status={ - // eslint-disable-next-line no-nested-ternary - isPlaying ? CallStates.ACTIVE : hasException ? CallStates.ERROR : CallStates.DONE - } - storyFileName={fileName} - onScrollToEnd={onScrollToEnd} - isRerunAnimating={isRerunAnimating} - setIsRerunAnimating={setIsRerunAnimating} + childCallIds={call.childCallIds} + isHidden={call.isHidden} + isCollapsed={call.isCollapsed} + toggleCollapsed={call.toggleCollapsed} + pausedAt={pausedAt} /> - )} - <div aria-label="Interactions list"> - {interactions.map((call) => ( - <Interaction - key={call.id} - call={call} - callsById={calls} - controls={controls} - controlStates={controlStates} - childCallIds={call.childCallIds} - isHidden={call.isHidden} - isCollapsed={call.isCollapsed} - toggleCollapsed={call.toggleCollapsed} - pausedAt={pausedAt} - /> - ))} - </div> - {caughtException && !caughtException.message?.startsWith('ignoredException') && ( - <CaughtException> - <CaughtExceptionTitle> - Caught exception in <CaughtExceptionCode>play</CaughtExceptionCode> function - </CaughtExceptionTitle> - <CaughtExceptionDescription> - This story threw an error after it finished rendering which means your interactions - couldn' t be run.Go to this story' s play function in {fileName} to fix. - </CaughtExceptionDescription> - <CaughtExceptionStack data-chromatic="ignore"> - {caughtException.stack || `${caughtException.name}: ${caughtException.message}`} - </CaughtExceptionStack> - </CaughtException> - )} - <div ref={endRef} /> - {!isPlaying && !caughtException && interactions.length === 0 && ( - <Placeholder> - No interactions found - <Link - href="https://storybook.js.org/docs/react/writing-stories/play-function" - target="_blank" - withArrow - > - Learn how to add interactions to your story - </Link> - </Placeholder> - )} - </Container> - </AddonPanel> + ))} + </div> + {caughtException && !caughtException.message?.startsWith('ignoredException') && ( + <CaughtException> + <CaughtExceptionTitle> + Caught exception in <CaughtExceptionCode>play</CaughtExceptionCode> function + </CaughtExceptionTitle> + <CaughtExceptionDescription> + This story threw an error after it finished rendering which means your interactions + couldn' t be run.Go to this story' s play function in {fileName} to fix. + </CaughtExceptionDescription> + <CaughtExceptionStack data-chromatic="ignore"> + {caughtException.stack || `${caughtException.name}: ${caughtException.message}`} + </CaughtExceptionStack> + </CaughtException> + )} + <div ref={endRef} /> + {!isPlaying && !caughtException && interactions.length === 0 && ( + <Placeholder> + No interactions found + <Link + href="https://storybook.js.org/docs/react/writing-stories/play-function" + target="_blank" + withArrow + > + Learn how to add interactions to your story + </Link> + </Placeholder> + )} + </Container> ); } ); diff --git a/code/addons/interactions/src/components/MatcherResult.tsx b/code/addons/interactions/src/components/MatcherResult.tsx index 4f5368bd46ba..a8a1e00a63f7 100644 --- a/code/addons/interactions/src/components/MatcherResult.tsx +++ b/code/addons/interactions/src/components/MatcherResult.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-array-index-key */ import React from 'react'; import { styled, typography } from '@storybook/theming'; import { Node } from './MethodCall'; diff --git a/code/addons/interactions/src/components/MethodCall.tsx b/code/addons/interactions/src/components/MethodCall.tsx index 7bb2f6503916..a12aaa4f1a29 100644 --- a/code/addons/interactions/src/components/MethodCall.tsx +++ b/code/addons/interactions/src/components/MethodCall.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-array-index-key */ import { ObjectInspector } from '@devtools-ds/object-inspector'; import type { Call, CallRef, ElementRef } from '@storybook/instrumenter'; import { useTheme } from '@storybook/theming'; @@ -141,7 +142,14 @@ export const Node = ({ /* eslint-enable no-underscore-dangle */ case Object.prototype.toString.call(value) === '[object Object]': - return <ObjectNode value={value} showInspector={showObjectInspector} {...props} />; + return ( + <ObjectNode + value={value} + showInspector={showObjectInspector} + callsById={callsById} + {...props} + /> + ); default: return <OtherNode value={value} {...props} />; } @@ -222,11 +230,13 @@ export const ArrayNode = ({ export const ObjectNode = ({ showInspector, value, + callsById, nested = false, }: { showInspector?: boolean; value: object; nested?: boolean; + callsById?: Map<Call['id'], Call>; }) => { const isDarkMode = useTheme().base === 'dark'; const colors = useThemeColors(); @@ -253,7 +263,7 @@ export const ObjectNode = ({ .map(([k, v]) => ( <Fragment key={k}> <span style={{ color: colors.objectkey }}>{k}: </span> - <Node value={v} nested /> + <Node value={v} callsById={callsById} nested /> </Fragment> )), <span>, </span> diff --git a/code/addons/interactions/src/components/Subnav.tsx b/code/addons/interactions/src/components/Subnav.tsx index 2080f622dc37..3d2e5c41d1a3 100644 --- a/code/addons/interactions/src/components/Subnav.tsx +++ b/code/addons/interactions/src/components/Subnav.tsx @@ -40,8 +40,6 @@ export interface SubnavProps { status: Call['status']; storyFileName?: string; onScrollToEnd?: () => void; - isRerunAnimating: boolean; - setIsRerunAnimating: React.Dispatch<React.SetStateAction<boolean>>; } const StyledButton = styled(Button)(({ theme }) => ({ @@ -114,8 +112,6 @@ export const Subnav: React.FC<SubnavProps> = ({ status, storyFileName, onScrollToEnd, - isRerunAnimating, - setIsRerunAnimating, }) => { const buttonText = status === CallStates.ERROR ? 'Scroll to error' : 'Scroll to end'; @@ -177,14 +173,7 @@ export const Subnav: React.FC<SubnavProps> = ({ </WithTooltip> <WithTooltip trigger="hover" hasChrome={false} tooltip={<Note note="Rerun" />}> - <RerunButton - aria-label="Rerun" - containsIcon - onClick={controls.rerun} - onAnimationEnd={() => setIsRerunAnimating(false)} - animating={isRerunAnimating} - disabled={isRerunAnimating} - > + <RerunButton aria-label="Rerun" containsIcon onClick={controls.rerun}> <Icons icon="sync" /> </RerunButton> </WithTooltip> diff --git a/code/addons/interactions/src/components/TabStatus.tsx b/code/addons/interactions/src/components/TabStatus.tsx index bf6919612846..bce1efc72df8 100644 --- a/code/addons/interactions/src/components/TabStatus.tsx +++ b/code/addons/interactions/src/components/TabStatus.tsx @@ -1,13 +1,7 @@ import { styled } from '@storybook/theming'; -import ReactDOM from 'react-dom'; import { StatusIcon } from './StatusIcon'; -export const TabStatus = ({ children }: { children: React.ReactChild }) => { - const container = global.document.getElementById('tabbutton-storybook-interactions-panel'); - return container && ReactDOM.createPortal(children, container); -}; - export const TabIcon = styled(StatusIcon)({ marginLeft: 5, }); diff --git a/code/addons/interactions/src/manager.tsx b/code/addons/interactions/src/manager.tsx index 909eeb3b8e6d..9de823628efa 100644 --- a/code/addons/interactions/src/manager.tsx +++ b/code/addons/interactions/src/manager.tsx @@ -1,13 +1,46 @@ -import { addons, types } from '@storybook/manager-api'; - +import React, { useCallback } from 'react'; +import type { Combo } from '@storybook/manager-api'; +import { addons, Consumer, types, useAddonState } from '@storybook/manager-api'; +import { AddonPanel, Badge, Spaced } from '@storybook/components'; +import { CallStates } from '@storybook/instrumenter'; import { ADDON_ID, PANEL_ID } from './constants'; import { Panel } from './Panel'; +import { TabIcon } from './components/TabStatus'; + +function Title() { + const [addonState = {}] = useAddonState(ADDON_ID); + const { hasException, interactionsCount } = addonState as any; -addons.register(ADDON_ID, () => { + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Interactions</span> + {interactionsCount && !hasException ? ( + <Badge status="neutral">{interactionsCount}</Badge> + ) : null} + {hasException ? <TabIcon status={CallStates.ERROR} /> : null} + </Spaced> + </div> + ); +} + +addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { type: types.PANEL, - title: 'Interactions', + title: Title, match: ({ viewMode }) => viewMode === 'story', - render: Panel, + render: ({ active }) => { + const newLocal = useCallback(({ state }: Combo) => { + return { + storyId: state.storyId, + }; + }, []); + + return ( + <AddonPanel active={active}> + <Consumer filter={newLocal}>{({ storyId }) => <Panel storyId={storyId} />}</Consumer> + </AddonPanel> + ); + }, }); }); diff --git a/code/addons/interactions/src/preset/checkActionsLoaded.ts b/code/addons/interactions/src/preset.ts similarity index 100% rename from code/addons/interactions/src/preset/checkActionsLoaded.ts rename to code/addons/interactions/src/preset.ts diff --git a/code/addons/interactions/template/stories/basics.stories.ts b/code/addons/interactions/template/stories/basics.stories.ts index c8ddea0b6ea3..e8c14245aa90 100644 --- a/code/addons/interactions/template/stories/basics.stories.ts +++ b/code/addons/interactions/template/stories/basics.stories.ts @@ -15,10 +15,21 @@ export default { }, }; +export const Validation = { + play: async (context) => { + const { args, canvasElement, step } = context; + const canvas = within(canvasElement); + + await step('Submit', async () => fireEvent.click(canvas.getByRole('button'))); + + await expect(args.onSuccess).not.toHaveBeenCalled(); + }, +}; + export const Type = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); - await userEvent.type(canvas.getByTestId('value'), 'test'); + await userEvent.type(canvas.getByTestId('value'), 'foobar'); }, }; @@ -31,10 +42,9 @@ export const Step = { export const TypeAndClear = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); - // TODO: seems like userEvent.type + userEvent.clear + userEvent.type is not working for Svelte and Vue2/3. We should probably investigate, might be a bug in userEvent or in our implementation. - await fireEvent.input(canvas.getByTestId('value'), { target: { value: 'initial value' } }); - await fireEvent.input(canvas.getByTestId('value'), { target: { value: '' } }); - await fireEvent.input(canvas.getByTestId('value'), { target: { value: 'final value' } }); + await userEvent.type(canvas.getByTestId('value'), 'initial value'); + await userEvent.clear(canvas.getByTestId('value')); + await userEvent.type(canvas.getByTestId('value'), 'final value'); }, }; @@ -86,13 +96,27 @@ export const WithLoaders = { }, }; -export const Validation = { +export const UserEventSetup = { play: async (context) => { const { args, canvasElement, step } = context; + const user = userEvent.setup(); const canvas = within(canvasElement); - - await step('Submit', async () => fireEvent.click(canvas.getByRole('button'))); - - await expect(args.onSuccess).not.toHaveBeenCalled(); + await step('Select, type and paste on input using user-event v14 setup', async () => { + const input = await canvas.getByRole('textbox'); + await user.click(input); + await user.type(input, 'Pasting: '); + await user.paste('foobar'); + }); + await step('Tab and press enter on submit button', async () => { + await user.pointer([ + { keys: '[TouchA>]', target: await canvas.getByRole('textbox') }, + { keys: '[/TouchA]' }, + ]); + await user.tab(); + await user.keyboard('{enter}'); + const submitButton = await canvas.findByRole('button'); + await expect(submitButton).toHaveFocus(); + await expect(args.onSuccess).toHaveBeenCalled(); + }); }, }; diff --git a/code/addons/interactions/tsconfig.json b/code/addons/interactions/tsconfig.json index aff8c3b01d62..4bc2c0bffe1f 100644 --- a/code/addons/interactions/tsconfig.json +++ b/code/addons/interactions/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] diff --git a/code/addons/jest/README.md b/code/addons/jest/README.md index ebb14be60382..50678d636094 100644 --- a/code/addons/jest/README.md +++ b/code/addons/jest/README.md @@ -253,12 +253,12 @@ Default.parameters = { ## TODO -- [ ] Add coverage -- [ ] Display nested test better (describe) -- [ ] Display the date of the test -- [ ] Add unit tests -- [ ] Add linting -- [ ] Split <TestPanel /> +- Add coverage +- Display nested test better (describe) +- Display the date of the test +- Add unit tests +- Add linting +- Split <TestPanel /> ## Contributing diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index d9401d84d59c..ef10ff467c73 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -63,22 +63,24 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", "react-resize-detector": "^7.1.2", - "upath": "^1.2.0" + "tiny-invariant": "^1.3.1", + "upath": "^2.0.1" }, "devDependencies": { "typescript": "~4.9.3" @@ -105,7 +107,7 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Jest", "icon": "https://pbs.twimg.com/profile_images/821713465245102080/mMtKIMax_400x400.jpg", diff --git a/code/addons/jest/src/components/Message.tsx b/code/addons/jest/src/components/Message.tsx index 507e1c7c3c21..96aa5ed30262 100644 --- a/code/addons/jest/src/components/Message.tsx +++ b/code/addons/jest/src/components/Message.tsx @@ -15,11 +15,11 @@ const titleEndToken = ':'; type MsgElement = string | JSX.Element; class TestDetail { - description: MsgElement[]; + description!: MsgElement[]; - result: MsgElement[]; + result!: MsgElement[]; - stackTrace: string; + stackTrace!: string; } const StackTrace = styled.pre(({ theme }) => ({ background: theme.color.lighter, diff --git a/code/addons/jest/src/components/Panel.tsx b/code/addons/jest/src/components/Panel.tsx index ce7ee16c70f8..ad7046f1a02f 100644 --- a/code/addons/jest/src/components/Panel.tsx +++ b/code/addons/jest/src/components/Panel.tsx @@ -75,7 +75,7 @@ const SuiteTotals = styled(UnstyledSuiteTotals)(({ theme }) => ({ }, })); -const SuiteProgressPortion = styled.div<{ color: any; progressPercent: number }>( +const SuiteProgressPortion = styled.div<{ color?: string; progressPercent: number }>( ({ color, progressPercent }) => ({ height: 6, top: 3, @@ -114,7 +114,7 @@ const getColorByType = (type: string) => { case StatusTypes.TODO_TYPE: return convert(themes.light).color.purple; default: - return null; + return undefined; } }; @@ -132,8 +132,8 @@ const TestPanel: FC<{ test: Test }> = ({ test }) => { return ( <section ref={ref}> <SuiteHead> - <SuiteTotals {...{ result, width }} /> - {width > 240 ? ( + <SuiteTotals {...{ result, width: width ?? 0 }} /> + {width != null && width > 240 ? ( <ProgressWrapper> {sortedTestsByCount.map((entry: any) => { return ( @@ -261,7 +261,7 @@ const Content = styled(({ tests, className }: ContentProps) => ( }); interface PanelProps { - tests: null | Test[]; + tests?: Test[]; } const Panel = ({ tests }: PanelProps) => ( @@ -287,7 +287,7 @@ const Panel = ({ tests }: PanelProps) => ( ); Panel.defaultProps = { - tests: null, + tests: undefined, }; export default provideJestResult(Panel); diff --git a/code/addons/jest/src/components/Result.tsx b/code/addons/jest/src/components/Result.tsx index c40d15b522d7..3c545cb4bd3f 100644 --- a/code/addons/jest/src/components/Result.tsx +++ b/code/addons/jest/src/components/Result.tsx @@ -1,6 +1,7 @@ import React, { Fragment, useState } from 'react'; import { styled, themes, convert } from '@storybook/theming'; import { Icons } from '@storybook/components'; +// eslint-disable-next-line import/no-named-as-default import Message from './Message'; const Wrapper = styled.div<{ status: string }>(({ theme, status }) => ({ @@ -8,7 +9,7 @@ const Wrapper = styled.div<{ status: string }>(({ theme, status }) => ({ width: '100%', borderTop: `1px solid ${theme.appBorderColor}`, '&:hover': { - background: status === `failed` ? theme.background.hoverable : null, + background: status === `failed` ? theme.background.hoverable : undefined, }, })); @@ -18,7 +19,7 @@ const HeaderBar = styled.div<{ status: string }>(({ theme, status }) => ({ background: 'none', color: 'inherit', textAlign: 'left', - cursor: status === `failed` ? 'pointer' : null, + cursor: status === `failed` ? 'pointer' : undefined, borderLeft: '3px solid transparent', width: '100%', display: 'flex', @@ -72,7 +73,7 @@ export function Result(props: ResultProps) { }} /> ) : null} - <div>{capitalizeFirstLetter(fullName) || capitalizeFirstLetter(title)}</div> + <div>{capitalizeFirstLetter(fullName ?? '') || capitalizeFirstLetter(title ?? '')}</div> </HeaderBar> </Wrapper> {isOpen ? ( diff --git a/code/addons/jest/src/hoc/provideJestResult.tsx b/code/addons/jest/src/hoc/provideJestResult.tsx index d1cad23b25fc..6bd4194a1839 100644 --- a/code/addons/jest/src/hoc/provideJestResult.tsx +++ b/code/addons/jest/src/hoc/provideJestResult.tsx @@ -71,9 +71,9 @@ export const provideTests = (Component: ComponentType<InjectedProps>) => this.setState({ kind, storyName, tests }); }; - mounted: boolean; + mounted!: boolean; - stopListeningOnStory: () => void; + stopListeningOnStory!: () => void; render() { const { active } = this.props; diff --git a/code/addons/jest/src/manager.tsx b/code/addons/jest/src/manager.tsx index f4302002d6b7..cdf3fadde26b 100644 --- a/code/addons/jest/src/manager.tsx +++ b/code/addons/jest/src/manager.tsx @@ -1,14 +1,14 @@ import * as React from 'react'; -import { addons } from '@storybook/manager-api'; +import { addons, types } from '@storybook/manager-api'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './shared'; import Panel from './components/Panel'; addons.register(ADDON_ID, (api) => { - addons.addPanel(PANEL_ID, { + addons.add(PANEL_ID, { title: 'Tests', - id: 'tests', - render: ({ active, key }) => <Panel key={key} api={api} active={active} />, + type: types.PANEL, + render: ({ active }) => <Panel api={api} active={active} />, paramKey: PARAM_KEY, }); }); diff --git a/code/addons/jest/src/shared.ts b/code/addons/jest/src/shared.ts index ef078b7af8a8..a8714dc2d3d0 100644 --- a/code/addons/jest/src/shared.ts +++ b/code/addons/jest/src/shared.ts @@ -1,3 +1,4 @@ +import invariant from 'tiny-invariant'; import type { StorybookInternalParameters } from '@storybook/types'; // addons, panels and events get unique names using a prefix @@ -23,7 +24,9 @@ export function defineJestParameter(parameters: AddonParameters): string[] | nul } if (jest === undefined && typeof filePath === 'string') { - const fileName = filePath.split('/').pop().split('.')[0]; + const lastPath = filePath.split('/').pop(); + invariant(lastPath != null, 'split should always return at least one value'); + const fileName = lastPath.split('.')[0]; return [fileName]; } diff --git a/code/addons/jest/tsconfig.json b/code/addons/jest/tsconfig.json index a7d41e8a79b5..a4429176e35f 100644 --- a/code/addons/jest/tsconfig.json +++ b/code/addons/jest/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 2602cfacb44b..3c0258067076 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", @@ -73,21 +73,22 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/router": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/router": "workspace:*", + "@storybook/types": "workspace:*", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, @@ -119,7 +120,7 @@ ], "post": "./scripts/fix-preview-api-reference.ts" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Links", "icon": "https://user-images.githubusercontent.com/263385/101991673-48355c80-3c7c-11eb-9b6e-b627c96a75f6.png", diff --git a/code/addons/links/src/manager.ts b/code/addons/links/src/manager.ts index 9107c8c61904..e0c7487f2be9 100644 --- a/code/addons/links/src/manager.ts +++ b/code/addons/links/src/manager.ts @@ -3,9 +3,7 @@ import { addons } from '@storybook/manager-api'; import EVENTS, { ADDON_ID } from './constants'; addons.register(ADDON_ID, (api) => { - const channel = addons.getChannel(); - - channel.on(EVENTS.REQUEST, ({ kind, name }) => { + api.on(EVENTS.REQUEST, ({ kind, name }) => { const id = api.storyId(kind, name); api.emit(EVENTS.RECEIVE, id); }); diff --git a/code/addons/links/tsconfig.json b/code/addons/links/tsconfig.json index 6643cdc7da8e..a774dc60331e 100644 --- a/code/addons/links/tsconfig.json +++ b/code/addons/links/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "strict": true, + "skipLibCheck": true, "types": ["testing-library__jest-dom"] }, "include": ["src/**/*"] diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index eb593e6c134a..0fe74f02c176 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", @@ -68,20 +68,22 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17" + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", + "tiny-invariant": "^1.3.1" }, "devDependencies": { "typescript": "~4.9.3" @@ -108,7 +110,7 @@ "./src/preview.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Measure", "unsupportedFrameworks": [ diff --git a/code/addons/measure/src/box-model/canvas.ts b/code/addons/measure/src/box-model/canvas.ts index 653e3f005ac1..61c2691e1598 100644 --- a/code/addons/measure/src/box-model/canvas.ts +++ b/code/addons/measure/src/box-model/canvas.ts @@ -1,5 +1,6 @@ /* eslint-disable no-param-reassign */ import { global } from '@storybook/global'; +import invariant from 'tiny-invariant'; interface Size { width: number; @@ -25,6 +26,7 @@ function createCanvas(): CanvasState { const canvas = global.document.createElement('canvas'); canvas.id = 'storybook-addon-measure'; const context = canvas.getContext('2d'); + invariant(context != null); // Set canvas width & height const { width, height } = getDocumentWidthAndHeight(); setCanvasWidthAndHeight(canvas, context, { width, height }); @@ -67,16 +69,18 @@ export function init() { export function clear() { if (state.context) { - state.context.clearRect(0, 0, state.width, state.height); + state.context.clearRect(0, 0, state.width ?? 0, state.height ?? 0); } } -export function draw(callback: (context: CanvasRenderingContext2D) => void) { +export function draw(callback: (context?: CanvasRenderingContext2D) => void) { clear(); callback(state.context); } export function rescale() { + invariant(state.canvas, 'Canvas should exist in the state.'); + invariant(state.context, 'Context should exist in the state.'); // First reset so that the canvas size doesn't impact the container size setCanvasWidthAndHeight(state.canvas, state.context, { width: 0, height: 0 }); @@ -91,7 +95,7 @@ export function rescale() { export function destroy() { if (state.canvas) { clear(); - state.canvas.parentNode.removeChild(state.canvas); + state.canvas.parentNode?.removeChild(state.canvas); state = {}; } } diff --git a/code/addons/measure/src/box-model/labels.ts b/code/addons/measure/src/box-model/labels.ts index 80bbf440c92e..022dfdd786c2 100644 --- a/code/addons/measure/src/box-model/labels.ts +++ b/code/addons/measure/src/box-model/labels.ts @@ -285,7 +285,7 @@ export function labelStacks( acc[l.position] = []; } - acc[l.position].push(l); + acc[l.position]?.push(l); return acc; }, {}); diff --git a/code/addons/measure/src/box-model/visualizer.ts b/code/addons/measure/src/box-model/visualizer.ts index eba2de27573b..22b4523aebb2 100644 --- a/code/addons/measure/src/box-model/visualizer.ts +++ b/code/addons/measure/src/box-model/visualizer.ts @@ -282,7 +282,7 @@ function drawContent( } function drawBoxModel(element: HTMLElement) { - return (context: CanvasRenderingContext2D) => { + return (context?: CanvasRenderingContext2D) => { if (element && context) { const measurements = measureElement(element); diff --git a/code/addons/measure/src/manager.tsx b/code/addons/measure/src/manager.tsx index f65075617ef3..53bca4d0b716 100644 --- a/code/addons/measure/src/manager.tsx +++ b/code/addons/measure/src/manager.tsx @@ -7,7 +7,6 @@ import { Tool } from './Tool'; addons.register(ADDON_ID, () => { addons.add(TOOL_ID, { type: types.TOOL, - id: 'measure', title: 'Measure', match: ({ viewMode }) => viewMode === 'story', render: () => <Tool />, diff --git a/code/addons/measure/tsconfig.json b/code/addons/measure/tsconfig.json index 4c6f20a1be4d..b5a2f9a70918 100644 --- a/code/addons/measure/tsconfig.json +++ b/code/addons/measure/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "include": ["src/**/*"], "compilerOptions": { - "strict": false + "strict": true } } diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index d8b8d27eff33..5628ca04a5cb 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", @@ -71,20 +71,21 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -112,7 +113,7 @@ "./src/preview.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Outline", "unsupportedFrameworks": [ diff --git a/code/addons/outline/src/manager.tsx b/code/addons/outline/src/manager.tsx index d1852360356e..384ea24c07c6 100644 --- a/code/addons/outline/src/manager.tsx +++ b/code/addons/outline/src/manager.tsx @@ -7,7 +7,6 @@ import { OutlineSelector } from './OutlineSelector'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'Outline', - id: 'outline', type: types.TOOL, match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), render: () => <OutlineSelector />, diff --git a/code/addons/storyshots-core/package.json b/code/addons/storyshots-core/package.json index 49c0c23b5c76..4dda6f0c61fb 100644 --- a/code/addons/storyshots-core/package.json +++ b/code/addons/storyshots-core/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Take a code snapshot of every story automatically with Jest", "keywords": [ "addon", @@ -29,23 +29,25 @@ "README.md", "*.js", "*.mjs", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { "@jest/transform": "^29.3.1", "@storybook/babel-plugin-require-context-hook": "1.0.1", - "@storybook/client-api": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-webpack": "7.1.0-alpha.17", + "@storybook/client-api": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-webpack": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "@types/jest-specific-snapshot": "^0.5.6", "glob": "^10.0.0", - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", "preact-render-to-string": "^5.1.19", "pretty-format": "^29.0.0", "react-test-renderer": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -53,22 +55,21 @@ "ts-dedent": "^2.0.0" }, "devDependencies": { - "@angular/core": "^13.3.6", - "@angular/platform-browser-dynamic": "^13.3.6", + "@angular/core": "^16.0.0-rc.4", + "@angular/platform-browser-dynamic": "^16.0.0-rc.4", "@emotion/jest": "^11.8.0", - "@storybook/addon-docs": "7.1.0-alpha.17", - "@storybook/angular": "7.1.0-alpha.17", - "@storybook/react": "7.1.0-alpha.17", - "@storybook/vue": "7.1.0-alpha.17", - "@storybook/vue3": "7.1.0-alpha.17", + "@storybook/addon-docs": "workspace:*", + "@storybook/angular": "workspace:*", + "@storybook/react": "workspace:*", + "@storybook/vue": "workspace:*", + "@storybook/vue3": "workspace:*", "babel-loader": "^9.1.2", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", "enzyme-to-json": "^3.6.1", - "jest-preset-angular": "^12.2.3", + "jest-preset-angular": "^13.0.1", "jest-vue-preprocessor": "^1.7.1", "react-test-renderer": "^16", - "rimraf": "^3.0.2", "rxjs": "^6.6.3", "vue-jest": "^5.0.0-alpha.8" }, @@ -141,7 +142,7 @@ "access": "public" }, "bundler": {}, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Storyshots", "icon": "https://user-images.githubusercontent.com/263385/101991676-48cdf300-3c7c-11eb-8aa1-944dab6ab29b.png", diff --git a/code/addons/storyshots-core/src/Stories2SnapsConverter.test.ts b/code/addons/storyshots-core/src/Stories2SnapsConverter.test.ts index d066d1226e58..916ee94eb34c 100644 --- a/code/addons/storyshots-core/src/Stories2SnapsConverter.test.ts +++ b/code/addons/storyshots-core/src/Stories2SnapsConverter.test.ts @@ -7,7 +7,7 @@ describe('getSnapshotFileName', () => { const context = { fileName: 'foo.js', kind: 'kind' }; const result = target.getSnapshotFileName(context); - const platformAgnosticResult = result.replace(/\\|\//g, '/'); + const platformAgnosticResult = result?.replace(/\\|\//g, '/'); // This is an absolute path, so we need to use `toContain()` expect(platformAgnosticResult).toContain('__snapshots__/foo.storyshot'); @@ -17,7 +17,7 @@ describe('getSnapshotFileName', () => { const context = { fileName: 'foo.web.stories.js', kind: 'kind' }; const result = target.getSnapshotFileName(context); - const platformAgnosticResult = result.replace(/\\|\//g, '/'); + const platformAgnosticResult = result?.replace(/\\|\//g, '/'); // This is an absolute path, so we need to use `toContain()` expect(platformAgnosticResult).toContain('__snapshots__/foo.web.stories.storyshot'); @@ -27,7 +27,7 @@ describe('getSnapshotFileName', () => { const context = { fileName: 'test/foo.js', kind: 'kind' }; const result = target.getSnapshotFileName(context); - const platformAgnosticResult = result.replace(/\\|\//g, '/'); + const platformAgnosticResult = result?.replace(/\\|\//g, '/'); // This is an absolute path, so we need to use `toContain()` expect(platformAgnosticResult).toContain('test/__snapshots__/foo.storyshot'); diff --git a/code/addons/storyshots-core/src/Stories2SnapsConverter.ts b/code/addons/storyshots-core/src/Stories2SnapsConverter.ts index 439a514f7bd4..4d6788e6b278 100644 --- a/code/addons/storyshots-core/src/Stories2SnapsConverter.ts +++ b/code/addons/storyshots-core/src/Stories2SnapsConverter.ts @@ -55,7 +55,7 @@ export class Stories2SnapsConverter { } ` ); - return null; + return undefined; } return this.getStoryshotFile(fileName); diff --git a/code/addons/storyshots-core/src/api/StoryshotsOptions.ts b/code/addons/storyshots-core/src/api/StoryshotsOptions.ts index 0dc34d1ef24e..cbc853717de3 100644 --- a/code/addons/storyshots-core/src/api/StoryshotsOptions.ts +++ b/code/addons/storyshots-core/src/api/StoryshotsOptions.ts @@ -9,7 +9,7 @@ export interface TestMethodOptions { renderTree: RenderTree; renderShallowTree: RenderTree; stories2snapsConverter: Stories2SnapsConverter; - snapshotFileName: string; + snapshotFileName?: string; options: any; done?: () => void; } diff --git a/code/addons/storyshots-core/src/api/index.ts b/code/addons/storyshots-core/src/api/index.ts index 301d5cbf8c36..932d728a6345 100644 --- a/code/addons/storyshots-core/src/api/index.ts +++ b/code/addons/storyshots-core/src/api/index.ts @@ -54,7 +54,7 @@ function testStorySnapshots(options: StoryshotsOptions = {}) { // subsequent calls to `it()` etc will all happen within this tick, which is required // by Jest (cannot add tests asynchronously) globalWindow.__STORYBOOK_STORY_STORE__.initializationPromise.then(() => { - const data = storybook.raw().reduce( + const data = storybook.raw()?.reduce( (acc, item) => { if (storyNameRegex && !item.name.match(storyNameRegex)) { return acc; @@ -86,7 +86,7 @@ function testStorySnapshots(options: StoryshotsOptions = {}) { }[] ); - if (data.length) { + if (data && data.length) { callTestMethodGlobals(testMethod); snapshotsTests({ diff --git a/code/addons/storyshots-core/src/frameworks/angular/renderTree.ts b/code/addons/storyshots-core/src/frameworks/angular/renderTree.ts index 9de180774184..3c501c70dcc5 100644 --- a/code/addons/storyshots-core/src/frameworks/angular/renderTree.ts +++ b/code/addons/storyshots-core/src/frameworks/angular/renderTree.ts @@ -2,7 +2,7 @@ import AngularSnapshotSerializer from 'jest-preset-angular/build/serializers/ng- import HTMLCommentSerializer from 'jest-preset-angular/build/serializers/html-comment'; import { TestBed } from '@angular/core/testing'; import { addSerializer } from 'jest-specific-snapshot'; -import { getApplication, storyPropsProvider } from '@storybook/angular/renderer'; +import { getApplication, storyPropsProvider, PropertyExtractor } from '@storybook/angular/renderer'; import { BehaviorSubject } from 'rxjs'; addSerializer(HTMLCommentSerializer); @@ -11,11 +11,14 @@ addSerializer(AngularSnapshotSerializer); function getRenderedTree(story: any) { const currentStory = story.render(); + const analyzedMetadata = new PropertyExtractor(currentStory.moduleMetadata, story.component); + const application = getApplication({ storyFnAngular: currentStory, component: story.component, // TODO : To change with the story Id in v7. Currently keep with static id to avoid changes in snapshots targetSelector: 'storybook-wrapper', + analyzedMetadata, }); TestBed.configureTestingModule({ diff --git a/code/addons/storyshots-core/src/frameworks/configure.ts b/code/addons/storyshots-core/src/frameworks/configure.ts index aa1a1733c776..5532a2dfea8c 100644 --- a/code/addons/storyshots-core/src/frameworks/configure.ts +++ b/code/addons/storyshots-core/src/frameworks/configure.ts @@ -74,7 +74,7 @@ function getConfigPathParts(input: string): Output { return specifier; }); - output.requireContexts = output.stories.map((specifier) => { + output.requireContexts = output.stories?.map((specifier) => { const { path: basePath, recursive, match } = toRequireContext(specifier); // eslint-disable-next-line no-underscore-dangle @@ -108,13 +108,14 @@ function configure<TRenderer extends Renderer>( } = getConfigPathParts(configPath); global.FEATURES = features; + global.CONFIG_TYPE = 'DEVELOPMENT'; global.STORIES = stories.map((specifier) => ({ ...specifier, importPathMatcher: specifier.importPathMatcher.source, })); if (preview) { - // This is essentially the same code as lib/builder-webpack5/templates/virtualModuleEntry.template + // This is essentially the same code as builders/builder-webpack5/templates/virtualModuleEntry.template const { parameters, decorators, diff --git a/code/addons/storyshots-core/src/frameworks/frameworkLoader.ts b/code/addons/storyshots-core/src/frameworks/frameworkLoader.ts index 6589df427390..40fbed19b2a3 100644 --- a/code/addons/storyshots-core/src/frameworks/frameworkLoader.ts +++ b/code/addons/storyshots-core/src/frameworks/frameworkLoader.ts @@ -28,7 +28,7 @@ function getLoaders(): Loader[] { return null; }) .filter(Boolean) - .map((loader) => require(loader).default); + .map((loader) => loader && require(loader).default); } function loadFramework(options: StoryshotsOptions) { diff --git a/code/addons/storyshots-core/src/frameworks/svelte/renderTree.ts b/code/addons/storyshots-core/src/frameworks/svelte/renderTree.ts index 78c19bd1ab66..d39cf95008e9 100644 --- a/code/addons/storyshots-core/src/frameworks/svelte/renderTree.ts +++ b/code/addons/storyshots-core/src/frameworks/svelte/renderTree.ts @@ -1,4 +1,7 @@ import { global } from '@storybook/global'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore - types are removed in Svelte 4 but it still works. ts-ignore is safer than ts-expect-error because it's not an error in Svelte 3 +// eslint-disable-next-line import/no-unresolved import { set_current_component } from 'svelte/internal'; const { document } = global; diff --git a/code/addons/storyshots-core/src/typings.d.ts b/code/addons/storyshots-core/src/typings.d.ts index 1c68913a502c..2ae47a5617de 100644 --- a/code/addons/storyshots-core/src/typings.d.ts +++ b/code/addons/storyshots-core/src/typings.d.ts @@ -9,12 +9,8 @@ declare module '@storybook/babel-plugin-require-context-hook/register'; declare var STORYBOOK_ENV: any; declare var STORIES: any; -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; +declare var CONFIG_TYPE: 'DEVELOPMENT' | 'PRODUCTION'; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var __STORYBOOK_STORY_STORE__: any; declare var __requireContext: any; diff --git a/code/addons/storyshots-core/tsconfig.json b/code/addons/storyshots-core/tsconfig.json index be122d9916a4..6d43397802f1 100644 --- a/code/addons/storyshots-core/tsconfig.json +++ b/code/addons/storyshots-core/tsconfig.json @@ -5,7 +5,7 @@ "jsx": "preserve", "skipLibCheck": true, "skipDefaultLibCheck": true, - "strict": false + "strict": true }, "include": ["src/**/*.ts"] } diff --git a/code/addons/storyshots-puppeteer/package.json b/code/addons/storyshots-puppeteer/package.json index fe6ed9f8c892..59184bc8ca2f 100644 --- a/code/addons/storyshots-puppeteer/package.json +++ b/code/addons/storyshots-puppeteer/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots-puppeteer", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Image snapshots addition to StoryShots based on puppeteer", "keywords": [ "addon", @@ -28,28 +28,29 @@ "README.md", "*.js", "*.mjs", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { "@axe-core/puppeteer": "^4.2.0", "@storybook/csf": "^0.1.0", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", - "@types/jest-image-snapshot": "^5.1.0", + "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", + "@types/jest-image-snapshot": "^6.0.0", "jest-image-snapshot": "^6.0.0" }, "devDependencies": { "@types/puppeteer": "^5.4.0", "enzyme": "^3.11.0", "enzyme-to-json": "^3.6.1", - "puppeteer": "^2.0.0 || ^3.0.0", - "rimraf": "^3.0.2" + "puppeteer": "^2.0.0 || ^3.0.0" }, "peerDependencies": { - "@storybook/addon-storyshots": "7.1.0-alpha.17", + "@storybook/addon-storyshots": "workspace:*", "puppeteer": ">=2.0.0" }, "peerDependenciesMeta": { @@ -61,5 +62,5 @@ "access": "public" }, "bundler": {}, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/addons/storyshots-puppeteer/src/config.ts b/code/addons/storyshots-puppeteer/src/config.ts index f899a3d9a3ec..25d6633540bc 100644 --- a/code/addons/storyshots-puppeteer/src/config.ts +++ b/code/addons/storyshots-puppeteer/src/config.ts @@ -28,10 +28,10 @@ interface DirectNavigationOptions { export interface CommonConfig { storybookUrl: string; - chromeExecutablePath: string; - getGotoOptions: (options: Options) => DirectNavigationOptions; + chromeExecutablePath?: string; + getGotoOptions: (options: Options) => DirectNavigationOptions | undefined; customizePage: (page: Page) => Promise<void>; - getCustomBrowser: () => Promise<Browser>; + getCustomBrowser?: () => Promise<Browser>; /** * Puppeteer browser launch options: * {@link https://pptr.dev/api/puppeteer.puppeteernode.launch/ puppeteer.launch()} @@ -48,7 +48,7 @@ export interface PuppeteerTestConfig extends CommonConfig { } export interface ImageSnapshotConfig extends CommonConfig { - getMatchOptions: (options: Options) => MatchImageSnapshotOptions; + getMatchOptions: (options: Options) => MatchImageSnapshotOptions | undefined; getScreenshotOptions: (options: Options) => Base64ScreenShotOptions; beforeScreenshot: (page: Page, options: Options) => Promise<void | ElementHandle>; afterScreenshot: (options: { image: string | void | Buffer; context: Context }) => Promise<void>; @@ -95,11 +95,11 @@ export const defaultImageSnapshotConfig: ImageSnapshotConfig = { ...defaultCommonConfig, getMatchOptions: noop, getScreenshotOptions: defaultScreenshotOptions, - beforeScreenshot: noop, - afterScreenshot: noop, + beforeScreenshot: asyncNoop, + afterScreenshot: asyncNoop, }; export const defaultAxeConfig: AxeConfig = { ...defaultCommonConfig, - beforeAxeTest: noop, + beforeAxeTest: asyncNoop, }; diff --git a/code/addons/storyshots-puppeteer/tsconfig.json b/code/addons/storyshots-puppeteer/tsconfig.json index 471c35718cf5..b32dad6f525c 100644 --- a/code/addons/storyshots-puppeteer/tsconfig.json +++ b/code/addons/storyshots-puppeteer/tsconfig.json @@ -4,7 +4,7 @@ "skipLibCheck": true, "types": ["node"], "declaration": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index d77aa9549ab7..dad4119e7da3 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", @@ -46,20 +46,21 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/router": "7.1.0-alpha.17", - "@storybook/source-loader": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/router": "workspace:*", + "@storybook/source-loader": "workspace:*", + "@storybook/theming": "workspace:*", "estraverse": "^5.2.0", "prop-types": "^15.7.2", "react-syntax-highlighter": "^15.5.0", @@ -92,7 +93,7 @@ "./src/preset.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Storysource", "icon": "https://user-images.githubusercontent.com/263385/101991675-48cdf300-3c7c-11eb-9400-58de5ac6daa7.png", diff --git a/code/addons/storysource/src/StoryPanel.tsx b/code/addons/storysource/src/StoryPanel.tsx index 260fbdb316fa..4dd67b8b8b42 100644 --- a/code/addons/storysource/src/StoryPanel.tsx +++ b/code/addons/storysource/src/StoryPanel.tsx @@ -176,6 +176,8 @@ export const StoryPanel: React.FC<StoryPanelProps> = ({ api }) => { format={false} copyable={false} padded + wrapLongLines + lineProps={{ style: { whiteSpace: 'pre' } }} > {source} </StyledSyntaxHighlighter> diff --git a/code/addons/storysource/src/manager.tsx b/code/addons/storysource/src/manager.tsx index d4d63a704e3b..072db560bd76 100644 --- a/code/addons/storysource/src/manager.tsx +++ b/code/addons/storysource/src/manager.tsx @@ -1,14 +1,14 @@ import React from 'react'; -import { addons } from '@storybook/manager-api'; +import { addons, types } from '@storybook/manager-api'; import { StoryPanel } from './StoryPanel'; import { ADDON_ID, PANEL_ID } from './index'; addons.register(ADDON_ID, (api) => { - addons.addPanel(PANEL_ID, { + addons.add(PANEL_ID, { + type: types.PANEL, title: 'Code', - id: 'code', - render: ({ active, key }) => (active ? <StoryPanel key={key} api={api} /> : null), + render: ({ active }) => (active ? <StoryPanel api={api} /> : null), paramKey: 'storysource', }); }); diff --git a/code/addons/themes/README.md b/code/addons/themes/README.md new file mode 100644 index 000000000000..52c20f5dfeb9 --- /dev/null +++ b/code/addons/themes/README.md @@ -0,0 +1,72 @@ +# `@storybook/addon-themes + +Storybook Addon Themes can be used which between multiple themes for components inside the preview in [Storybook](https://storybook.js.org). + +![React Storybook Screenshot](https://user-images.githubusercontent.com/42671/98158421-dada2300-1ea8-11eb-8619-af1e7018e1ec.png) + +## Usage + +Requires Storybook 7.0 or later. If you need to add it to your Storybook, you can run: + +```sh +npm i -D @storybook/addon-themes +``` + +Then, add following content to [`.storybook/main.js`](https://storybook.js.org/docs/react/configure/overview#configure-your-storybook-project): + +```js +export default { + addons: ['@storybook/addon-themes'], +}; +``` + +### 👇 Tool specific configuration + +For tool-specific setup, check out the recipes below + +- [`@emotion/styled`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/emotion.md) +- [`@mui/material`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/material-ui.md) +- [`bootstrap`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/bootstrap.md) +- [`styled-components`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/styled-components.md) +- [`tailwind`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/tailwind.md) +- [`vuetify@3.x`](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md#writing-a-custom-decorator) + +Don't see your favorite tool listed? Don't worry! That doesn't mean this addon isn't for you. Check out the ["Writing a custom decorator"](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md#writing-a-custom-decorator) section of the [api reference](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md). + +### ❗️ Overriding theme + +If you want to override your theme for a particular component or story, you can use the `themes.themeOverride` parameter. + +```js +import React from 'react'; +import { Button } from './Button'; + +export default { + title: 'Example/Button', + component: Button, + parameters: { + themes: { + themeOverride: 'light', // component level override + }, + }, +}; + +export const Primary = { + args: { + primary: true, + label: 'Button', + }, +}; + +export const PrimaryDark = { + args: { + primary: true, + label: 'Button', + }, + parameters: { + themes: { + themeOverride: 'dark', // Story level override + }, + }, +}; +``` diff --git a/code/addons/themes/docs/api.md b/code/addons/themes/docs/api.md new file mode 100644 index 000000000000..36138394d93b --- /dev/null +++ b/code/addons/themes/docs/api.md @@ -0,0 +1,206 @@ +# API + +## Decorators + +### `withThemeFromJSXProvider` + +Takes your provider component, global styles, and theme(s)to wrap your stories in. + +```js +import { withThemeFromJSXProvider } from '@storybook/addon-styling'; + +export const decorators = [ + withThemeFromJSXProvider({ + themes: { + light: lightTheme, + dark: darkTheme, + }, + defaultTheme: 'light', + Provider: ThemeProvider, + GlobalStyles: CssBaseline, + }), +]; +``` + +Available options: + +| option | type | required? | Description | +| ------------ | --------------------- | :-------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| themes | `Record<string, any>` | | An object of theme configurations where the key is the name of the theme and the value is the theme object. If multiple themes are provided, a toolbar item will be added to switch between themes. | +| defaultTheme | `string` | | The name of the default theme to use | +| Provider | | | The JSX component to provide themes | +| GlobalStyles | | | A JSX component containing global css styles. | + +### `withThemeByClassName` + +Takes your theme class names to apply your parent element to enable your theme(s). + +```js +import { withThemeByClassName } from '@storybook/addon-styling'; + +export const decorators = [ + withThemeByClassName({ + themes: { + light: 'light-theme', + dark: 'dark-theme', + }, + defaultTheme: 'light', + }), +]; +``` + +Available options: + +| option | type | required? | Description | +| -------------- | ------------------------ | :-------: | --------------------------------------------------------------------------------------------------------------- | +| themes | `Record<string, string>` | ✅ | An object of theme configurations where the key is the name of the theme and the value is the theme class name. | +| defaultTheme | `string` | ✅ | The name of the default theme to use | +| parentSelector | `string` | | The selector for the parent element that you want to apply your theme class to. Defaults to "html" | + +### `withThemeByDataAttribute` + +Takes your theme names and data attribute to apply your parent element to enable your theme(s). + +```js +import { withThemeByDataAttribute } from '@storybook/addon-styling'; + +export const decorators = [ + withThemeByDataAttribute({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + attributeName: 'data-bs-theme', + }), +]; +``` + +available options: + +| option | type | required? | Description | +| -------------- | ------------------------ | :-------: | ------------------------------------------------------------------------------------------------------------------- | +| themes | `Record<string, string>` | ✅ | An object of theme configurations where the key is the name of the theme and the value is the data attribute value. | +| defaultTheme | `string` | ✅ | The name of the default theme to use | +| parentSelector | `string` | | The selector for the parent element that you want to apply your theme class to. Defaults to "html" | +| attributeName | `string` | | The name of the data attribute to set on the parent element for your theme(s). Defaults to "data-theme" | + +## Writing a custom decorator + +If none of these decorators work for your library there is still hope. We've provided a collection of helper functions to get access to the theme toggling state so that you can create a decorator of your own. + +### `pluckThemeFromContext` + +Pulls the selected theme from storybook's global state. + +```js +import { DecoratorHelpers } from '@storybook/addon-styling'; +const { pluckThemeFromContext } = DecoratorHelpers; + +export const myCustomDecorator = + ({ themes, defaultState, ...rest }) => + (storyFn, context) => { + const selectedTheme = pluckThemeFromContext(context); + + // Snipped + }; +``` + +### `useThemeParameters` + +Returns the theme parameters for this addon. + +```js +import { DecoratorHelpers } from '@storybook/addon-styling'; +const { useThemeParameters } = DecoratorHelpers; + +export const myCustomDecorator = + ({ themes, defaultState, ...rest }) => + (storyFn, context) => { + const { themeOverride } = useThemeParameters(); + + // Snipped + }; +``` + +### `initializeThemeState` + +Used to register the themes and defaultTheme with the addon state. + +```js +import { DecoratorHelpers } from '@storybook/addon-styling'; +const { initializeThemeState } = DecoratorHelpers; + +export const myCustomDecorator = ({ themes, defaultState, ...rest }) => { + initializeThemeState(Object.keys(themes), defaultTheme); + + return (storyFn, context) => { + // Snipped + }; +}; +``` + +### Putting it all together + +Let's use Vuetify as an example. Vuetify uses it's own global state to know which theme to render. To build a custom decorator to accommodate this method we'll need to do the following + +```js +// .storybook/withVeutifyTheme.decorator.js + +import { DecoratorHelpers } from '@storybook/addon-styling'; +import { useTheme } from 'vuetify'; + +const { initializeThemeState, pluckThemeFromContext, useThemeParameters } = DecoratorHelpers; + +export const withVuetifyTheme = ({ themes, defaultTheme }) => { + initializeThemeState(Object.keys(themes), defaultTheme); + + return (story, context) => { + const selectedTheme = pluckThemeFromContext(context); + const { themeOverride } = useThemeParameters(); + + const selected = themeOverride || selectedTheme || defaultTheme; + + return { + components: { story }, + setup() { + const theme = useTheme(); + + theme.global.name.value = selected; + + return { + theme, + }; + }, + template: `<v-app><story /></v-app>`, + }; + }; +}; +``` + +This can then be provided to Storybook in `.storybook/preview.js`: + +```js +// .storybook/preview.js + +import { setup } from '@storybook/vue3'; +import { registerPlugins } from '../src/plugins'; +import { withVuetifyTheme } from './withVuetifyTheme.decorator'; + +setup((app) => { + registerPlugins(app); +}); + +/* snipped for brevity */ + +export const decorators = [ + withVuetifyTheme({ + themes: { + light: 'light', + dark: 'dark', + customTheme: 'myCustomTheme', + }, + defaultTheme: 'customTheme', // The key of your default theme + }), +]; +``` diff --git a/code/addons/themes/docs/getting-started/bootstrap.md b/code/addons/themes/docs/getting-started/bootstrap.md new file mode 100644 index 000000000000..a5070d6a3032 --- /dev/null +++ b/code/addons/themes/docs/getting-started/bootstrap.md @@ -0,0 +1,90 @@ +# 🏁 Getting started with `bootstrap` + +## 📦 Install addon + +<!-- **NOTE:** As of Storybook 7.2, `@storybook/addon-themes` ships in `@storybook/addon-essentials`. If you're using Storybook >= 7.2, skip to ["Import Bootstrap"](#🥾-import-bootstrap). --> + +To get started, **install the package** as a dev dependency + +yarn: + +```zsh +yarn add -D @storybook/addon-themes +``` + +npm: + +```zsh +npm install -D @storybook/addon-themes +``` + +pnpm: + +```zsh +pnpm add -D @storybook/addon-themes +``` + +## 🧩 Register Addon + +Now, **include the addon** in your `.storybook/main.js` file. + +```diff +module.exports = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", ++ "@storybook/addon-themes" + ], +}; +``` + +## 🥾 Import Bootstrap + +To give your stories access to Bootstrap's styles and JavaScript, import them into your `.storybook/preview.js` file. + +```diff +import { Preview } from "@storybook/your-renderer"; + ++import "bootstrap/dist/css/bootstrap.min.css"; ++import "bootstrap/dist/js/bootstrap.bundle"; + +const preview: Preview = { + parameters: { /* ... */ }, +}; + +export default preview; +``` + +## 🎨 Provide your theme(s) + +Bootstrap now supports light and dark color modes out of the box as well as the ability to make your own custom modes. These modes can be activated by setting a `data-bs-theme` attribute on a parent element. + +To enable switching between these modes in a click for your stories, use our `withThemeByDataAttribute` decorator by adding the following code to your `.storybook/preview.js` file. + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeByDataAttribute } from "@storybook/addon-themes"; + +import "bootstrap/dist/css/bootstrap.min.css"; +import "bootstrap/dist/js/bootstrap.bundle"; + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeByDataAttribute<Renderer>({ ++ themes: { ++ light: "light", ++ dark: "dark", ++ }, ++ defaultTheme: "light", ++ attributeName: "data-bs-theme", ++ }), ++ ] +}; + +export default preview; +``` diff --git a/code/addons/themes/docs/getting-started/emotion.md b/code/addons/themes/docs/getting-started/emotion.md new file mode 100644 index 000000000000..4d5118d0785d --- /dev/null +++ b/code/addons/themes/docs/getting-started/emotion.md @@ -0,0 +1,74 @@ +# 🏁 Getting started with `@emotion/styled` + +## 📦 Install addon + +<!-- **NOTE:** As of Storybook 7.2, `@storybook/addon-themes` ships in `@storybook/addon-essentials`. If you're using Storybook >= 7.2, skip to ["Provide your themes"](#🎨-provide-your-themes). --> + +To get started, **install the package** as a dev dependency + +yarn: + +```zsh +yarn add -D @storybook/addon-themes +``` + +npm: + +```zsh +npm install -D @storybook/addon-themes +``` + +pnpm: + +```zsh +pnpm add -D @storybook/addon-themes +``` + +## 🧩 Register Addon + +Now, **include the addon** in your `.storybook/main.js` file + +```diff +module.exports = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", ++ "@storybook/addon-themes" + ], +}; +``` + +## 🎨 Provide your theme(s) + +Finally, provide your theme(s) and global styles component to your stories with our `withThemeFromJSXProvider` decorator. + +Make the following changes to your `.storybook/preview.js` + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeFromJSXProvider } from "@storybook/addon-themes"; ++import { ThemeProvider } from '@emotion/react'; ++import { GlobalStyles, lightTheme, darkTheme } from "../src/themes"; // import your custom theme configs + + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeFromJSXProvider<Renderer>({ ++ themes: { ++ light: lightTheme, ++ dark: darkTheme, ++ }, ++ defaultTheme: "light", ++ Provider: ThemeProvider, ++ GlobalStyles: GlobalStyles, ++ }), ++ ] +}; + +export default preview; +``` diff --git a/code/addons/themes/docs/getting-started/material-ui.md b/code/addons/themes/docs/getting-started/material-ui.md new file mode 100644 index 000000000000..267705d29340 --- /dev/null +++ b/code/addons/themes/docs/getting-started/material-ui.md @@ -0,0 +1,103 @@ +# 🏁 Getting started with `@mui/material` + +## 📦 Install addon + +<!-- **NOTE:** As of Storybook 7.2, `@storybook/addon-themes` ships in `@storybook/addon-essentials`. If you're using Storybook >= 7.2, skip to ["Import fonts"](#🔤-import-fonts). --> + +To get started, **install the package** as a dev dependency + +yarn: + +```zsh +yarn add -D @storybook/addon-themes +``` + +npm: + +```zsh +npm install -D @storybook/addon-themes +``` + +pnpm: + +```zsh +pnpm add -D @storybook/addon-themes +``` + +## 🧩 Register Addon + +Now, **include the addon** in your `.storybook/main.js` file + +```diff +module.exports = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", ++ "@storybook/addon-themes", + ], +}; +``` + +## 🔤 Import fonts + +`@mui/material` requires Google's Roboto and Material Icon fonts to render everything as intended. I'd recommend getting them from [fontsource](https://github.com/fontsource/fontsource) so that they are version locked dependencies that doesn't require a CDN. + +These can be imported into your `.storybook/preview.js` file. + +```diff +import { Preview } from "@storybook/your-renderer"; + ++// Load Material UI fonts ++import "@fontsource/roboto/300.css"; ++import "@fontsource/roboto/400.css"; ++import "@fontsource/roboto/500.css"; ++import "@fontsource/roboto/700.css"; ++import "@fontsource/material-icons"; + +const preview: Preview = { + parameters: { /* ... */ }, +}; + +export default preview; +``` + +## 🎨 Provide your theme(s) + +While Material UI comes with a default theme that works out of the box. You can create your own theme(s) and provide them to your stories with our `withThemeFromJSXProvider` decorator. + +Make the following changes to your `.storybook/preview.js` + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeFromJSXProvider } from "@storybook/addon-themes"; ++import { CssBaseline, ThemeProvider } from "@mui/material"; ++import { lightTheme, darkTheme } from "../src/themes"; // import your custom theme configs + +// Load Roboto fonts +import "@fontsource/roboto/300.css"; +import "@fontsource/roboto/400.css"; +import "@fontsource/roboto/500.css"; +import "@fontsource/roboto/700.css"; +import "@fontsource/material-icons"; + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeFromJSXProvider<Renderer>({ ++ themes: { ++ light: lightTheme, ++ dark: darkTheme, ++ }, ++ defaultTheme: "light", ++ Provider: ThemeProvider, ++ GlobalStyles: CssBaseline, ++ }), ++ ], +}; + +export default preview; +``` diff --git a/code/addons/themes/docs/getting-started/styled-components.md b/code/addons/themes/docs/getting-started/styled-components.md new file mode 100644 index 000000000000..514e95f25a85 --- /dev/null +++ b/code/addons/themes/docs/getting-started/styled-components.md @@ -0,0 +1,73 @@ +# 🏁 Getting started with `styled-components` + +## 📦 Install addon + +<!-- **NOTE:** As of Storybook 7.2, `@storybook/addon-themes` ships in `@storybook/addon-essentials`. If you're using Storybook >= 7.2, skip to ["Provide your themes"](#🎨-provide-your-themes). --> + +To get started, **install the package** as a dev dependency + +yarn: + +```zsh +yarn add -D @storybook/addon-themes +``` + +npm: + +```zsh +npm install -D @storybook/addon-themes +``` + +pnpm: + +```zsh +pnpm add -D @storybook/addon-themes +``` + +## 🧩 Register Addon + +Now, **include the addon** in your `.storybook/main.js` file + +```diff +module.exports = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", ++ "@storybook/addon-themes" + ], +}; +``` + +## 🎨 Provide your theme(s) + +Finally, provide your theme(s) and global styles component to your stories with our `withThemeFromJSXProvider` decorator. + +Make the following changes to your `.storybook/preview.js` + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeFromJSXProvider } from "@storybook/addon-themes"; ++import { ThemeProvider } from 'styled-components'; ++import { GlobalStyles, lightTheme, darkTheme } from "../src/themes"; // import your custom theme configs + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeFromJSXProvider<Renderer>({ ++ themes: { ++ light: lightTheme, ++ dark: darkTheme, ++ }, ++ defaultTheme: "light", ++ Provider: ThemeProvider, ++ GlobalStyles: GlobalStyles, ++ }), ++ ], +}; + +export default preview; +``` diff --git a/code/addons/themes/docs/getting-started/tailwind.md b/code/addons/themes/docs/getting-started/tailwind.md new file mode 100644 index 000000000000..6156c45757a0 --- /dev/null +++ b/code/addons/themes/docs/getting-started/tailwind.md @@ -0,0 +1,117 @@ +# 🏁 Getting started with `tailwind.css` + +## 📦 Install addon + +<!-- **NOTE:** As of Storybook 7.2, `@storybook/addon-themes` ships in `@storybook/addon-essentials`. If you're using Storybook >= 7.2, skip to ["Import your css"](#🥾-import-your-css). --> + +To get started, **install the package** as a dev dependency + +yarn: + +```zsh +yarn add -D @storybook/addon-themes +``` + +npm: + +```zsh +npm install -D @storybook/addon-themes +``` + +pnpm: + +```zsh +pnpm add -D @storybook/addon-themes +``` + +## 🧩 Register Addon + +Now, **include the addon** in your `.storybook/main.js` file. + +```diff +module.exports = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", ++ "@storybook/addon-themes" + ], +}; +``` + +## 🥾 Import your CSS + +To give your stories access to Tailwind styles, import them into your `.storybook/preview.js` file. + +```diff +import { Preview } from "@storybook/your-renderer"; + ++import "../src/index.css"; + +const preview: Preview = { + parameters: { /* ... */ }, +}; + +export default preview; +``` + +## 🎨 Provide your theme(s) + +Tailwind supports light and dark color modes out of the box. These modes can be activated by setting a `.dark` class on a parent element. + +To enable switching between these modes in a click for your stories, use our `withThemeByClassName` decorator by adding the following code to your `.storybook/preview.js` file. + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeByClassName } from "@storybook/addon-themes"; + +import "../src/index.css"; + + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeByClassName<Renderer>({ ++ themes: { ++ light: "", ++ dark: "dark", ++ }, ++ defaultTheme: "light", ++ }), ++ ] +}; + +export default preview; +``` + +## 🏷️ Using a data-attribute for theme? + +If you've configured Tailwind to toggle themes with a data attribute, use our `withThemeByDataAttribute` decorator by adding the following code to your `.storybook/preview.js` file. + +```diff +-import { Preview } from "@storybook/your-renderer"; ++import { Preview, Renderer } from "@storybook/your-renderer"; ++import { withThemeByDataAttribute } from "@storybook/addon-themes"; + +import "../src/index.css"; + + +const preview: Preview = { + parameters: { /* ... */ }, ++ decorators: [ ++ withThemeByDataAttribute<Renderer>({ ++ themes: { ++ light: "light", ++ dark: "dark", ++ }, ++ defaultTheme: "light", ++ attributeName: "data-theme", ++ }), ++ ] +}; + +export default preview; +``` diff --git a/code/lib/channel-postmessage/jest.config.js b/code/addons/themes/jest.config.js similarity index 100% rename from code/lib/channel-postmessage/jest.config.js rename to code/addons/themes/jest.config.js diff --git a/code/addons/themes/manager.js b/code/addons/themes/manager.js new file mode 100644 index 000000000000..8a2eae4ffce1 --- /dev/null +++ b/code/addons/themes/manager.js @@ -0,0 +1 @@ +import './dist/manager'; diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json new file mode 100644 index 000000000000..f9abcb3bc21d --- /dev/null +++ b/code/addons/themes/package.json @@ -0,0 +1,119 @@ +{ + "name": "@storybook/addon-themes", + "version": "7.4.0-alpha.2", + "description": "Switch between multiple themes for you components in Storybook", + "keywords": [ + "css", + "essentials", + "storybook-addon", + "storybook-addons", + "style", + "themes", + "toggle" + ], + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/addons/themes", + "bugs": { + "url": "https://github.com/storybookjs/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybookjs/storybook.git", + "directory": "code/addons/themes" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "license": "MIT", + "author": "Shaun Evening", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "node": "./dist/index.js", + "require": "./dist/index.js", + "import": "./dist/index.mjs" + }, + "./manager": { + "types": "./dist/manager.d.ts", + "require": "./dist/manager.js", + "import": "./dist/manager.mjs" + }, + "./preview": { + "types": "./dist/preview.d.ts", + "require": "./dist/preview.js", + "import": "./dist/preview.mjs" + }, + "./package.json": "./package.json", + "./postinstall": "./postinstall.js" + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/index.d.ts" + ], + "manager": [ + "dist/manager.d.ts" + ], + "preview": [ + "dist/preview.d.ts" + ] + } + }, + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts", + "!src/**/*" + ], + "scripts": { + "check": "../../../scripts/prepare/check.ts", + "prep": "../../../scripts/prepare/bundle.ts" + }, + "dependencies": { + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", + "ts-dedent": "^2.0.0" + }, + "devDependencies": { + "typescript": "~4.9.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + }, + "bundler": { + "entries": [ + "./src/index.ts", + "./src/manager.tsx", + "./src/preview.tsx" + ] + }, + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", + "storybook": { + "displayName": "Themes", + "unsupportedFrameworks": [ + "react-native" + ], + "icon": "" + } +} diff --git a/code/addons/themes/postinstall.js b/code/addons/themes/postinstall.js new file mode 100644 index 000000000000..c84a4e88e4b4 --- /dev/null +++ b/code/addons/themes/postinstall.js @@ -0,0 +1,17 @@ +const { spawn } = require('child_process'); + +const PACKAGE_MANAGER_TO_COMMAND = { + npm: 'npx', + yarn1: 'yarn dlx', + yarn2: 'yarn dlx', + pnpm: 'pnpm dlx', +}; + +module.exports = function postinstall(options) { + const command = PACKAGE_MANAGER_TO_COMMAND[options.packageManager]; + + spawn(command, ['@storybook/auto-config', 'themes'], { + stdio: 'inherit', + cwd: process.cwd(), + }); +}; diff --git a/code/addons/themes/preview.js b/code/addons/themes/preview.js new file mode 100644 index 000000000000..49ad602f79f4 --- /dev/null +++ b/code/addons/themes/preview.js @@ -0,0 +1 @@ +export * from './dist/preview'; diff --git a/code/addons/themes/project.json b/code/addons/themes/project.json new file mode 100644 index 000000000000..73d07c1e71a6 --- /dev/null +++ b/code/addons/themes/project.json @@ -0,0 +1,6 @@ +{ + "name": "@storybook/addon-themes", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "implicitDependencies": [], + "type": "library" +} diff --git a/code/addons/themes/src/constants.ts b/code/addons/themes/src/constants.ts new file mode 100644 index 000000000000..a1872de9e88e --- /dev/null +++ b/code/addons/themes/src/constants.ts @@ -0,0 +1,24 @@ +export const PARAM_KEY = 'themes' as const; +export const ADDON_ID = `storybook/${PARAM_KEY}}` as const; +export const GLOBAL_KEY = 'theme' as const; +export const THEME_SWITCHER_ID = `${ADDON_ID}/theme-switcher` as const; + +export interface ThemeAddonState { + themesList: string[]; + themeDefault?: string; +} + +export const DEFAULT_ADDON_STATE: ThemeAddonState = { + themesList: [], + themeDefault: undefined, +}; + +export interface ThemeParameters { + themeOverride?: string; +} + +export const DEFAULT_THEME_PARAMETERS: ThemeParameters = {}; + +export const THEMING_EVENTS = { + REGISTER_THEMES: `${ADDON_ID}/REGISTER_THEMES`, +} as const; diff --git a/code/addons/themes/src/decorators/class-name.decorator.tsx b/code/addons/themes/src/decorators/class-name.decorator.tsx new file mode 100644 index 000000000000..ccbe4fbf7f31 --- /dev/null +++ b/code/addons/themes/src/decorators/class-name.decorator.tsx @@ -0,0 +1,53 @@ +import { useEffect } from '@storybook/preview-api'; +import type { DecoratorFunction, Renderer } from '@storybook/types'; + +import { initializeThemeState, pluckThemeFromContext, useThemeParameters } from './helpers'; + +export interface ClassNameStrategyConfiguration { + themes: Record<string, string>; + defaultTheme: string; + parentSelector?: string; +} + +const DEFAULT_ELEMENT_SELECTOR = 'html'; + +const classStringToArray = (classString: string) => classString.split(' ').filter(Boolean); + +export const withThemeByClassName = <TRenderer extends Renderer = Renderer>({ + themes, + defaultTheme, + parentSelector = DEFAULT_ELEMENT_SELECTOR, +}: ClassNameStrategyConfiguration): DecoratorFunction<TRenderer> => { + initializeThemeState(Object.keys(themes), defaultTheme); + + return (storyFn, context) => { + const { themeOverride } = useThemeParameters(); + const selected = pluckThemeFromContext(context); + + useEffect(() => { + const selectedThemeName = themeOverride || selected || defaultTheme; + const parentElement = document.querySelector(parentSelector); + + if (!parentElement) { + return; + } + + Object.entries(themes) + .filter(([themeName]) => themeName !== selectedThemeName) + .forEach(([themeName, className]) => { + const classes = classStringToArray(className); + if (classes.length > 0) { + parentElement.classList.remove(...classes); + } + }); + + const newThemeClasses = classStringToArray(themes[selectedThemeName]); + + if (newThemeClasses.length > 0) { + parentElement.classList.add(...newThemeClasses); + } + }, [themeOverride, selected, parentSelector]); + + return storyFn(); + }; +}; diff --git a/code/addons/themes/src/decorators/data-attribute.decorator.tsx b/code/addons/themes/src/decorators/data-attribute.decorator.tsx new file mode 100644 index 000000000000..546885db8d62 --- /dev/null +++ b/code/addons/themes/src/decorators/data-attribute.decorator.tsx @@ -0,0 +1,37 @@ +import { useEffect } from '@storybook/preview-api'; +import type { DecoratorFunction, Renderer } from '@storybook/types'; +import { initializeThemeState, pluckThemeFromContext, useThemeParameters } from './helpers'; + +export interface DataAttributeStrategyConfiguration { + themes: Record<string, string>; + defaultTheme: string; + parentSelector?: string; + attributeName?: string; +} + +const DEFAULT_ELEMENT_SELECTOR = 'html'; +const DEFAULT_DATA_ATTRIBUTE = 'data-theme'; + +export const withThemeByDataAttribute = <TRenderer extends Renderer = Renderer>({ + themes, + defaultTheme, + parentSelector = DEFAULT_ELEMENT_SELECTOR, + attributeName = DEFAULT_DATA_ATTRIBUTE, +}: DataAttributeStrategyConfiguration): DecoratorFunction<TRenderer> => { + initializeThemeState(Object.keys(themes), defaultTheme); + return (storyFn, context) => { + const { themeOverride } = useThemeParameters(); + const selected = pluckThemeFromContext(context); + + useEffect(() => { + const parentElement = document.querySelector(parentSelector); + const themeKey = themeOverride || selected || defaultTheme; + + if (parentElement) { + parentElement.setAttribute(attributeName, themes[themeKey]); + } + }, [themeOverride, selected, parentSelector, attributeName]); + + return storyFn(); + }; +}; diff --git a/code/addons/themes/src/decorators/helpers.ts b/code/addons/themes/src/decorators/helpers.ts new file mode 100644 index 000000000000..98f9c89c4e46 --- /dev/null +++ b/code/addons/themes/src/decorators/helpers.ts @@ -0,0 +1,24 @@ +import { addons, useParameter } from '@storybook/preview-api'; +import type { StoryContext } from '@storybook/types'; +import type { ThemeParameters } from '../constants'; +import { GLOBAL_KEY, PARAM_KEY, THEMING_EVENTS, DEFAULT_THEME_PARAMETERS } from '../constants'; + +/** + * + * @param StoryContext + * @returns The global theme name set for your stories + */ +export function pluckThemeFromContext({ globals }: StoryContext): string { + return globals[GLOBAL_KEY] || ''; +} + +export function useThemeParameters(): ThemeParameters { + return useParameter<ThemeParameters>(PARAM_KEY, DEFAULT_THEME_PARAMETERS) as ThemeParameters; +} + +export function initializeThemeState(themeNames: string[], defaultTheme: string) { + addons.getChannel().emit(THEMING_EVENTS.REGISTER_THEMES, { + defaultTheme, + themes: themeNames, + }); +} diff --git a/code/addons/themes/src/decorators/index.ts b/code/addons/themes/src/decorators/index.ts new file mode 100644 index 000000000000..ce07c553332e --- /dev/null +++ b/code/addons/themes/src/decorators/index.ts @@ -0,0 +1,5 @@ +export * from './class-name.decorator'; +export * from './data-attribute.decorator'; +export * from './provider.decorator'; + +export * as DecoratorHelpers from './helpers'; diff --git a/code/addons/themes/src/decorators/provider.decorator.tsx b/code/addons/themes/src/decorators/provider.decorator.tsx new file mode 100644 index 000000000000..6063034eb859 --- /dev/null +++ b/code/addons/themes/src/decorators/provider.decorator.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { useMemo } from '@storybook/preview-api'; +import type { DecoratorFunction, Renderer } from '@storybook/types'; + +import { initializeThemeState, pluckThemeFromContext, useThemeParameters } from './helpers'; + +type Theme = Record<string, any>; +type ThemeMap = Record<string, Theme>; + +export interface ProviderStrategyConfiguration { + Provider?: any; + GlobalStyles?: any; + defaultTheme?: string; + themes?: ThemeMap; +} + +const pluckThemeFromKeyPairTuple = ([_, themeConfig]: [string, Theme]): Theme => themeConfig; + +export const withThemeFromJSXProvider = <TRenderer extends Renderer = Renderer>({ + Provider, + GlobalStyles, + defaultTheme, + themes = {}, +}: ProviderStrategyConfiguration): DecoratorFunction<TRenderer> => { + const themeNames = Object.keys(themes); + const initialTheme = defaultTheme || themeNames[0]; + + initializeThemeState(themeNames, initialTheme); + + // eslint-disable-next-line react/display-name + return (storyFn, context) => { + const { themeOverride } = useThemeParameters(); + const selected = pluckThemeFromContext(context); + + const theme = useMemo(() => { + const selectedThemeName = themeOverride || selected || initialTheme; + const pairs = Object.entries(themes); + + return pairs.length === 1 ? pluckThemeFromKeyPairTuple(pairs[0]) : themes[selectedThemeName]; + }, [themes, selected, themeOverride]); + + if (!Provider) { + return ( + <> + {GlobalStyles && <GlobalStyles />} + {storyFn()} + </> + ); + } + + return ( + <Provider theme={theme}> + {GlobalStyles && <GlobalStyles />} + {storyFn()} + </Provider> + ); + }; +}; diff --git a/code/addons/themes/src/index.ts b/code/addons/themes/src/index.ts new file mode 100644 index 000000000000..b89aa12deba9 --- /dev/null +++ b/code/addons/themes/src/index.ts @@ -0,0 +1,3 @@ +// make it work with --isolatedModules +export default {}; +export * from './decorators'; diff --git a/code/addons/themes/src/manager.tsx b/code/addons/themes/src/manager.tsx new file mode 100644 index 000000000000..2fba5bd29a4b --- /dev/null +++ b/code/addons/themes/src/manager.tsx @@ -0,0 +1,14 @@ +import { addons, types } from '@storybook/manager-api'; + +import { ADDON_ID, PARAM_KEY, THEME_SWITCHER_ID } from './constants'; +import { ThemeSwitcher } from './theme-switcher'; + +addons.register(ADDON_ID, () => { + addons.add(THEME_SWITCHER_ID, { + title: 'Themes', + type: types.TOOL, + match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), + render: ThemeSwitcher, + paramKey: PARAM_KEY, + }); +}); diff --git a/code/addons/themes/src/preview.tsx b/code/addons/themes/src/preview.tsx new file mode 100644 index 000000000000..88b41773e9db --- /dev/null +++ b/code/addons/themes/src/preview.tsx @@ -0,0 +1,11 @@ +import type { Renderer, ProjectAnnotations } from '@storybook/types'; +import { GLOBAL_KEY } from './constants'; + +const preview: ProjectAnnotations<Renderer> = { + globals: { + // Required to make sure SB picks this up from URL params + [GLOBAL_KEY]: '', + }, +}; + +export default preview; diff --git a/code/addons/themes/src/theme-switcher.tsx b/code/addons/themes/src/theme-switcher.tsx new file mode 100644 index 000000000000..3658a3ef78cc --- /dev/null +++ b/code/addons/themes/src/theme-switcher.tsx @@ -0,0 +1,83 @@ +import React, { Fragment, useMemo } from 'react'; +import { useAddonState, useChannel, useGlobals, useParameter } from '@storybook/manager-api'; +import { styled } from '@storybook/theming'; +import { Icons, IconButton, WithTooltip, TooltipLinkList } from '@storybook/components'; + +import type { ThemeAddonState, ThemeParameters } from './constants'; +import { + PARAM_KEY, + THEME_SWITCHER_ID, + THEMING_EVENTS, + DEFAULT_ADDON_STATE, + DEFAULT_THEME_PARAMETERS, +} from './constants'; + +const IconButtonLabel = styled.div(({ theme }) => ({ + fontSize: theme.typography.size.s2 - 1, + marginLeft: 10, +})); + +const hasMultipleThemes = (themesList: ThemeAddonState['themesList']) => themesList.length > 1; + +export const ThemeSwitcher = () => { + const { themeOverride } = useParameter<ThemeParameters>( + PARAM_KEY, + DEFAULT_THEME_PARAMETERS + ) as ThemeParameters; + const [{ theme: selected }, updateGlobals] = useGlobals(); + + const [{ themesList, themeDefault }, updateState] = useAddonState<ThemeAddonState>( + THEME_SWITCHER_ID, + DEFAULT_ADDON_STATE + ); + + useChannel({ + [THEMING_EVENTS.REGISTER_THEMES]: ({ themes, defaultTheme }) => { + updateState((state) => ({ + ...state, + themesList: themes, + themeDefault: defaultTheme, + })); + }, + }); + + const label = useMemo(() => { + if (themeOverride) { + return <>Story override</>; + } + + const themeName = selected || themeDefault; + + return themeName && <>{`${themeName} theme`}</>; + }, [themeOverride, themeDefault, selected]); + + return hasMultipleThemes(themesList) ? ( + <Fragment> + <WithTooltip + placement="top" + trigger="click" + closeOnClick + tooltip={({ onHide }) => { + return ( + <TooltipLinkList + links={themesList.map((theme) => ({ + id: theme, + title: theme, + active: selected === theme, + onClick: () => { + updateGlobals({ theme }); + onHide(); + }, + }))} + /> + ); + }} + > + <IconButton key={THEME_SWITCHER_ID} active={!themeOverride} title="Theme"> + <Icons icon="paintbrush" /> + {label && <IconButtonLabel>{label}</IconButtonLabel>} + </IconButton> + </WithTooltip> + </Fragment> + ) : null; +}; diff --git a/code/lib/channel-postmessage/tsconfig.json b/code/addons/themes/tsconfig.json similarity index 100% rename from code/lib/channel-postmessage/tsconfig.json rename to code/addons/themes/tsconfig.json diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index 709d762ded59..c9adc3a916c5 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", @@ -61,18 +61,19 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*" }, "devDependencies": { "typescript": "~4.9.3" @@ -99,7 +100,7 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Toolbars", "icon": "https://user-images.githubusercontent.com/263385/101991677-48cdf300-3c7c-11eb-93b4-19b0e3366959.png", diff --git a/code/addons/toolbars/src/manager.tsx b/code/addons/toolbars/src/manager.tsx index adfc9956bd7a..c87d3fbf2d80 100644 --- a/code/addons/toolbars/src/manager.tsx +++ b/code/addons/toolbars/src/manager.tsx @@ -6,7 +6,6 @@ import { ADDON_ID } from './constants'; addons.register(ADDON_ID, () => addons.add(ADDON_ID, { title: ADDON_ID, - id: 'toolbar', type: types.TOOL, match: () => true, render: () => <ToolbarManager />, diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index c9e8c4702a52..892098df73c0 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", @@ -66,20 +66,21 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -109,7 +110,7 @@ "./src/preview.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855", + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17", "storybook": { "displayName": "Viewport", "icon": "https://user-images.githubusercontent.com/263385/101991678-48cdf300-3c7c-11eb-9764-f8af293c1b28.png", diff --git a/code/addons/viewport/src/Tool.tsx b/code/addons/viewport/src/Tool.tsx index 9a0d6c04f49a..df65988e5097 100644 --- a/code/addons/viewport/src/Tool.tsx +++ b/code/addons/viewport/src/Tool.tsx @@ -106,9 +106,10 @@ const getStyles = ( styles: Styles, isRotated: boolean ): ViewportStyles | undefined => { - if (!styles || !prevStyles) { + if (styles === null) { return undefined; } + const result = typeof styles === 'function' ? styles(prevStyles) : styles; return isRotated ? flip(result) : result; }; diff --git a/code/addons/viewport/src/manager.tsx b/code/addons/viewport/src/manager.tsx index 602cd708a4ea..e42e3fba40e1 100644 --- a/code/addons/viewport/src/manager.tsx +++ b/code/addons/viewport/src/manager.tsx @@ -8,7 +8,6 @@ import { ViewportTool } from './Tool'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'viewport / media-queries', - id: 'viewport', type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => <ViewportTool />, diff --git a/code/addons/viewport/src/models/Viewport.ts b/code/addons/viewport/src/models/Viewport.ts index 76a5eb096777..7b3c98e069c9 100644 --- a/code/addons/viewport/src/models/Viewport.ts +++ b/code/addons/viewport/src/models/Viewport.ts @@ -1,4 +1,4 @@ -export type Styles = ViewportStyles | ((s: ViewportStyles) => ViewportStyles) | null; +export type Styles = ViewportStyles | ((s: ViewportStyles | undefined) => ViewportStyles) | null; export interface Viewport { name: string; diff --git a/code/lib/builder-manager/README.md b/code/builders/builder-manager/README.md similarity index 100% rename from code/lib/builder-manager/README.md rename to code/builders/builder-manager/README.md diff --git a/code/lib/addons/jest.config.js b/code/builders/builder-manager/jest.config.js similarity index 100% rename from code/lib/addons/jest.config.js rename to code/builders/builder-manager/jest.config.js diff --git a/code/lib/builder-manager/package.json b/code/builders/builder-manager/package.json similarity index 79% rename from code/lib/builder-manager/package.json rename to code/builders/builder-manager/package.json index 3e8fa9cc1a4d..28b6453a7b3f 100644 --- a/code/lib/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/builder-manager", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook manager builder", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/builder-manager", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-manager", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/builder-manager" + "directory": "code/builders/builder-manager" }, "funding": { "type": "opencollective", @@ -36,23 +36,24 @@ "templates/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/manager": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", + "@storybook/core-common": "workspace:*", + "@storybook/manager": "workspace:*", + "@storybook/node-logger": "workspace:*", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", "ejs": "^3.1.8", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-plugin-alias": "^0.2.1", "express": "^4.17.3", "find-cache-dir": "^3.0.0", @@ -73,5 +74,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/builder-manager/project.json b/code/builders/builder-manager/project.json similarity index 100% rename from code/lib/builder-manager/project.json rename to code/builders/builder-manager/project.json diff --git a/code/lib/builder-manager/src/index.ts b/code/builders/builder-manager/src/index.ts similarity index 95% rename from code/lib/builder-manager/src/index.ts rename to code/builders/builder-manager/src/index.ts index a3e20675dd70..c13f0daa87f1 100644 --- a/code/lib/builder-manager/src/index.ts +++ b/code/builders/builder-manager/src/index.ts @@ -52,6 +52,7 @@ export const getConfig: ManagerBuilder['getConfig'] = async (options) => { outExtension: { '.js': '.js' }, loader: { '.js': 'jsx', + // media '.png': 'dataurl', '.gif': 'dataurl', '.jpg': 'dataurl', @@ -59,13 +60,19 @@ export const getConfig: ManagerBuilder['getConfig'] = async (options) => { '.svg': 'dataurl', '.webp': 'dataurl', '.webm': 'dataurl', + '.mp3': 'dataurl', + // modern fonts '.woff2': 'dataurl', + // legacy font formats + '.woff': 'dataurl', + '.eot': 'dataurl', + '.ttf': 'dataurl', }, - target: ['chrome100'], + target: ['chrome100', 'safari15', 'firefox91'], platform: 'browser', bundle: true, minify: true, - sourcemap: true, + sourcemap: false, conditions: ['browser', 'module', 'default'], jsxFactory: 'React.createElement', @@ -182,6 +189,9 @@ const starter: StarterFunction = async function* starterGeneratorFn({ next(); } }); + router.use(`/index.html`, ({ path }, res) => { + res.status(200).send(html); + }); return { bail, diff --git a/code/lib/builder-manager/src/types.ts b/code/builders/builder-manager/src/types.ts similarity index 100% rename from code/lib/builder-manager/src/types.ts rename to code/builders/builder-manager/src/types.ts diff --git a/code/lib/builder-manager/src/utils/data.ts b/code/builders/builder-manager/src/utils/data.ts similarity index 86% rename from code/lib/builder-manager/src/utils/data.ts rename to code/builders/builder-manager/src/utils/data.ts index b72b7120a3bd..5e315c92e9f8 100644 --- a/code/lib/builder-manager/src/utils/data.ts +++ b/code/builders/builder-manager/src/utils/data.ts @@ -1,11 +1,10 @@ -import { basename, join } from 'path'; +import { basename } from 'path'; import type { DocsOptions, Options } from '@storybook/types'; import { getRefs } from '@storybook/core-common'; import { readTemplate } from './template'; // eslint-disable-next-line import/no-cycle import { executor, getConfig } from '../index'; -import { safeResolve } from './safeResolve'; export const getData = async (options: Options) => { const refs = getRefs(options); @@ -16,7 +15,7 @@ export const getData = async (options: Options) => { const title = options.presets.apply<string>('title'); const docsOptions = options.presets.apply<DocsOptions>('docs', {}); const template = readTemplate('template.ejs'); - const customHead = safeResolve(join(options.configDir, 'manager-head.html')); + const customHead = options.presets.apply<string>('managerHead'); // we await these, because crucially if these fail, we want to bail out asap const [instance, config] = await Promise.all([ diff --git a/code/lib/builder-manager/src/utils/files.test.ts b/code/builders/builder-manager/src/utils/files.test.ts similarity index 100% rename from code/lib/builder-manager/src/utils/files.test.ts rename to code/builders/builder-manager/src/utils/files.test.ts diff --git a/code/lib/builder-manager/src/utils/files.ts b/code/builders/builder-manager/src/utils/files.ts similarity index 100% rename from code/lib/builder-manager/src/utils/files.ts rename to code/builders/builder-manager/src/utils/files.ts diff --git a/code/lib/builder-manager/src/utils/globals.ts b/code/builders/builder-manager/src/utils/globals.ts similarity index 100% rename from code/lib/builder-manager/src/utils/globals.ts rename to code/builders/builder-manager/src/utils/globals.ts diff --git a/code/lib/builder-manager/src/utils/managerEntries.ts b/code/builders/builder-manager/src/utils/managerEntries.ts similarity index 92% rename from code/lib/builder-manager/src/utils/managerEntries.ts rename to code/builders/builder-manager/src/utils/managerEntries.ts index c6ac46a0a242..51413bfb852e 100644 --- a/code/lib/builder-manager/src/utils/managerEntries.ts +++ b/code/builders/builder-manager/src/utils/managerEntries.ts @@ -4,7 +4,12 @@ import { join, parse, relative, sep } from 'node:path'; import slash from 'slash'; const sanitizeBase = (path: string) => { - return path.replaceAll('.', '').replaceAll('@', '').replaceAll(sep, '-').replaceAll('/', '-'); + return path + .replaceAll('.', '') + .replaceAll('@', '') + .replaceAll(sep, '-') + .replaceAll('/', '-') + .replaceAll(new RegExp(/^(-)+/g), ''); }; const sanitizeFinal = (path: string) => { diff --git a/code/lib/builder-manager/src/utils/safeResolve.ts b/code/builders/builder-manager/src/utils/safeResolve.ts similarity index 100% rename from code/lib/builder-manager/src/utils/safeResolve.ts rename to code/builders/builder-manager/src/utils/safeResolve.ts diff --git a/code/lib/builder-manager/src/utils/template.ts b/code/builders/builder-manager/src/utils/template.ts similarity index 61% rename from code/lib/builder-manager/src/utils/template.ts rename to code/builders/builder-manager/src/utils/template.ts index 856a977e9ca5..64fb626869b3 100644 --- a/code/lib/builder-manager/src/utils/template.ts +++ b/code/builders/builder-manager/src/utils/template.ts @@ -1,13 +1,10 @@ -import path, { dirname, join } from 'path'; +import { dirname, join } from 'path'; import fs from 'fs-extra'; import { render } from 'ejs'; import type { DocsOptions, Options, Ref } from '@storybook/types'; -const interpolate = (string: string, data: Record<string, string> = {}) => - Object.entries(data).reduce((acc, [k, v]) => acc.replace(new RegExp(`%${k}%`, 'g'), v), string); - export const getTemplatePath = async (template: string) => { return join( dirname(require.resolve('@storybook/builder-manager/package.json')), @@ -17,32 +14,11 @@ export const getTemplatePath = async (template: string) => { }; export const readTemplate = async (template: string) => { - // eslint-disable-next-line @typescript-eslint/no-shadow const path = await getTemplatePath(template); return fs.readFile(path, 'utf8'); }; -export async function getManagerHeadTemplate( - configDirPath: string, - interpolations: Record<string, string> -) { - const head = await fs - .pathExists(path.resolve(configDirPath, 'manager-head.html')) - .then<Promise<string> | false>((exists) => { - if (exists) { - return fs.readFile(path.resolve(configDirPath, 'manager-head.html'), 'utf8'); - } - return false; - }); - - if (!head) { - return ''; - } - - return interpolate(head, interpolations); -} - export async function getManagerMainTemplate() { return getTemplatePath(`manager.ejs`); } @@ -58,9 +34,8 @@ export const renderHTML = async ( refs: Promise<Record<string, Ref>>, logLevel: Promise<string>, docsOptions: Promise<DocsOptions>, - { versionCheck, releaseNotesData, previewUrl, serverChannelUrl, configType }: Options + { versionCheck, previewUrl, configType }: Options ) => { - const customHeadRef = await customHead; const titleRef = await title; const templateRef = await template; @@ -76,9 +51,8 @@ export const renderHTML = async ( CONFIG_TYPE: JSON.stringify(await configType, null, 2), // These two need to be double stringified because the UI expects a string VERSIONCHECK: JSON.stringify(JSON.stringify(versionCheck), null, 2), - RELEASE_NOTES_DATA: JSON.stringify(JSON.stringify(releaseNotesData), null, 2), PREVIEW_URL: JSON.stringify(previewUrl, null, 2), // global preview URL }, - head: customHeadRef ? await fs.readFile(customHeadRef, 'utf8') : '', + head: (await customHead) || '', }); }; diff --git a/code/lib/builder-manager/templates/addon.tsconfig.json b/code/builders/builder-manager/templates/addon.tsconfig.json similarity index 100% rename from code/lib/builder-manager/templates/addon.tsconfig.json rename to code/builders/builder-manager/templates/addon.tsconfig.json diff --git a/code/lib/builder-manager/templates/template.ejs b/code/builders/builder-manager/templates/template.ejs similarity index 100% rename from code/lib/builder-manager/templates/template.ejs rename to code/builders/builder-manager/templates/template.ejs diff --git a/code/lib/builder-manager/tsconfig.json b/code/builders/builder-manager/tsconfig.json similarity index 100% rename from code/lib/builder-manager/tsconfig.json rename to code/builders/builder-manager/tsconfig.json diff --git a/code/lib/builder-vite/README.md b/code/builders/builder-vite/README.md similarity index 100% rename from code/lib/builder-vite/README.md rename to code/builders/builder-vite/README.md diff --git a/code/lib/builder-vite/input/iframe.html b/code/builders/builder-vite/input/iframe.html similarity index 100% rename from code/lib/builder-vite/input/iframe.html rename to code/builders/builder-vite/input/iframe.html diff --git a/code/lib/builder-manager/jest.config.js b/code/builders/builder-vite/jest.config.js similarity index 100% rename from code/lib/builder-manager/jest.config.js rename to code/builders/builder-vite/jest.config.js diff --git a/code/lib/builder-vite/package.json b/code/builders/builder-vite/package.json similarity index 74% rename from code/lib/builder-vite/package.json rename to code/builders/builder-vite/package.json index ea393c807db3..3bd3891793a0 100644 --- a/code/lib/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,15 +1,15 @@ { "name": "@storybook/builder-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "A plugin to run and build Storybooks with Vite", - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/builder-vite/#readme", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/builder-vite" + "directory": "code/builders/builder-vite" }, "funding": { "type": "opencollective", @@ -35,29 +35,30 @@ "input/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channel-websocket": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/csf-plugin": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/csf-plugin": "workspace:*", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/node-logger": "workspace:*", + "@storybook/preview": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", + "@types/find-cache-dir": "^3.2.1", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", + "find-cache-dir": "^3.0.0", "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "magic-string": "^0.27.0", + "magic-string": "^0.30.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", "rollup": "^2.25.0 || ^3.3.0" @@ -65,6 +66,7 @@ "devDependencies": { "@types/express": "^4.17.13", "@types/node": "^16.0.0", + "glob": "^10.0.0", "rollup": "^3.20.1", "slash": "^5.0.0", "typescript": "~4.9.3", @@ -99,5 +101,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/builder-vite/project.json b/code/builders/builder-vite/project.json similarity index 100% rename from code/lib/builder-vite/project.json rename to code/builders/builder-vite/project.json diff --git a/code/lib/builder-vite/src/build.ts b/code/builders/builder-vite/src/build.ts similarity index 100% rename from code/lib/builder-vite/src/build.ts rename to code/builders/builder-vite/src/build.ts diff --git a/code/lib/builder-vite/src/codegen-entries.ts b/code/builders/builder-vite/src/codegen-entries.ts similarity index 100% rename from code/lib/builder-vite/src/codegen-entries.ts rename to code/builders/builder-vite/src/codegen-entries.ts diff --git a/code/lib/builder-vite/src/codegen-iframe-script.ts b/code/builders/builder-vite/src/codegen-iframe-script.ts similarity index 100% rename from code/lib/builder-vite/src/codegen-iframe-script.ts rename to code/builders/builder-vite/src/codegen-iframe-script.ts diff --git a/code/lib/builder-vite/src/codegen-importfn-script.ts b/code/builders/builder-vite/src/codegen-importfn-script.ts similarity index 100% rename from code/lib/builder-vite/src/codegen-importfn-script.ts rename to code/builders/builder-vite/src/codegen-importfn-script.ts diff --git a/code/lib/builder-vite/src/codegen-modern-iframe-script.ts b/code/builders/builder-vite/src/codegen-modern-iframe-script.ts similarity index 96% rename from code/lib/builder-vite/src/codegen-modern-iframe-script.ts rename to code/builders/builder-vite/src/codegen-modern-iframe-script.ts index 8c64e1b4b427..5bc163fba5fa 100644 --- a/code/lib/builder-vite/src/codegen-modern-iframe-script.ts +++ b/code/builders/builder-vite/src/codegen-modern-iframe-script.ts @@ -54,7 +54,7 @@ export async function generateModernIframeScriptCode(options: Options, projectRo }; /** - * This code is largely taken from https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/lib/builder-webpack4/src/preview/virtualModuleModernEntry.js.handlebars + * This code is largely taken from https://github.com/storybookjs/storybook/blob/d1195cbd0c61687f1720fefdb772e2f490a46584/builders/builder-webpack4/src/preview/virtualModuleModernEntry.js.handlebars * Some small tweaks were made to `getProjectAnnotations` (since `import()` needs to be resolved asynchronously) * and the HMR implementation has been tweaked to work with Vite. * @todo Inline variable and remove `noinspection` diff --git a/code/builders/builder-vite/src/codegen-set-addon-channel.ts b/code/builders/builder-vite/src/codegen-set-addon-channel.ts new file mode 100644 index 000000000000..f5dc708f58b8 --- /dev/null +++ b/code/builders/builder-vite/src/codegen-set-addon-channel.ts @@ -0,0 +1,14 @@ +export async function generateAddonSetupCode() { + return ` + import { createBrowserChannel } from '@storybook/channels'; + import { addons } from '@storybook/preview-api'; + + const channel = createBrowserChannel({ page: 'preview' }); + addons.setChannel(channel); + window.__STORYBOOK_ADDONS_CHANNEL__ = channel; + + if (window.CONFIG_TYPE === 'DEVELOPMENT'){ + window.__STORYBOOK_SERVER_CHANNEL__ = channel; + } + `.trim(); +} diff --git a/code/lib/builder-vite/src/envs.ts b/code/builders/builder-vite/src/envs.ts similarity index 100% rename from code/lib/builder-vite/src/envs.ts rename to code/builders/builder-vite/src/envs.ts diff --git a/code/lib/builder-vite/src/index.ts b/code/builders/builder-vite/src/index.ts similarity index 92% rename from code/lib/builder-vite/src/index.ts rename to code/builders/builder-vite/src/index.ts index 614dc87bc561..80b1ac875377 100644 --- a/code/lib/builder-vite/src/index.ts +++ b/code/builders/builder-vite/src/index.ts @@ -25,7 +25,8 @@ export * from './types'; */ export type StorybookViteConfig = StorybookBaseConfig & StorybookConfigVite; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; function iframeMiddleware(options: Options, server: ViteDevServer): RequestHandler { return async (req, res, next) => { @@ -66,7 +67,7 @@ export const start: ViteBuilder['start'] = async ({ }) => { server = await createViteServer(options as Options, devServer); - const previewResolvedDir = wrapForPnP('@storybook/preview'); + const previewResolvedDir = getAbsolutePath('@storybook/preview'); const previewDirOrigin = join(previewResolvedDir, 'dist'); router.use(`/sb-preview`, express.static(previewDirOrigin, { immutable: true, maxAge: '5m' })); @@ -84,7 +85,7 @@ export const start: ViteBuilder['start'] = async ({ export const build: ViteBuilder['build'] = async ({ options }) => { const viteCompilation = viteBuild(options as Options); - const previewResolvedDir = wrapForPnP('@storybook/preview'); + const previewResolvedDir = getAbsolutePath('@storybook/preview'); const previewDirOrigin = join(previewResolvedDir, 'dist'); const previewDirTarget = join(options.outputDir || '', `sb-preview`); diff --git a/code/lib/builder-vite/src/list-stories.ts b/code/builders/builder-vite/src/list-stories.ts similarity index 65% rename from code/lib/builder-vite/src/list-stories.ts rename to code/builders/builder-vite/src/list-stories.ts index e9faa2ec9244..746373c4c0f5 100644 --- a/code/lib/builder-vite/src/list-stories.ts +++ b/code/builders/builder-vite/src/list-stories.ts @@ -1,9 +1,10 @@ import * as path from 'path'; import slash from 'slash'; import { glob } from 'glob'; -import { normalizeStories } from '@storybook/core-common'; +import { normalizeStories, commonGlobOptions } from '@storybook/core-common'; import type { Options } from '@storybook/types'; +import { normalizePath } from 'vite'; export async function listStories(options: Options) { return ( @@ -17,8 +18,11 @@ export async function listStories(options: Options) { ? pattern : path.join(options.configDir, pattern); - return glob(slash(absolutePattern), { follow: true }); + return glob(slash(absolutePattern), { + ...commonGlobOptions(absolutePattern), + follow: true, + }); }) ) - ).reduce((carry, stories) => carry.concat(stories), []); + ).reduce((carry, stories) => carry.concat(stories.map(normalizePath)), []); } diff --git a/code/lib/builder-vite/src/optimizeDeps.ts b/code/builders/builder-vite/src/optimizeDeps.ts similarity index 98% rename from code/lib/builder-vite/src/optimizeDeps.ts rename to code/builders/builder-vite/src/optimizeDeps.ts index 20fe4259ef37..43c64f34a7e4 100644 --- a/code/lib/builder-vite/src/optimizeDeps.ts +++ b/code/builders/builder-vite/src/optimizeDeps.ts @@ -13,8 +13,7 @@ const INCLUDE_CANDIDATES = [ '@storybook/addon-docs > acorn-jsx', '@storybook/addon-docs', '@storybook/addon-essentials/docs/mdx-react-shim', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', + '@storybook/channels', '@storybook/client-api', '@storybook/client-logger', '@storybook/core/client', diff --git a/code/lib/builder-vite/src/plugins/code-generator-plugin.ts b/code/builders/builder-vite/src/plugins/code-generator-plugin.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/code-generator-plugin.ts rename to code/builders/builder-vite/src/plugins/code-generator-plugin.ts diff --git a/code/lib/builder-vite/src/plugins/csf-plugin.ts b/code/builders/builder-vite/src/plugins/csf-plugin.ts similarity index 80% rename from code/lib/builder-vite/src/plugins/csf-plugin.ts rename to code/builders/builder-vite/src/plugins/csf-plugin.ts index 03cf54563bc6..9f472f6552f8 100644 --- a/code/lib/builder-vite/src/plugins/csf-plugin.ts +++ b/code/builders/builder-vite/src/plugins/csf-plugin.ts @@ -10,5 +10,6 @@ export async function csfPlugin(config: Options): Promise<Plugin> { // @ts-expect-error - not sure what type to use here addons.find((a) => [a, a.name].includes('@storybook/addon-docs'))?.options ?? {}; - return vite(docsOptions?.csfPluginOptions); + // TODO: looks like unplugin can return an array of plugins + return vite(docsOptions?.csfPluginOptions) as Plugin; } diff --git a/code/lib/builder-vite/src/plugins/external-globals-plugin.test.ts b/code/builders/builder-vite/src/plugins/external-globals-plugin.test.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/external-globals-plugin.test.ts rename to code/builders/builder-vite/src/plugins/external-globals-plugin.test.ts diff --git a/code/lib/builder-vite/src/plugins/external-globals-plugin.ts b/code/builders/builder-vite/src/plugins/external-globals-plugin.ts similarity index 94% rename from code/lib/builder-vite/src/plugins/external-globals-plugin.ts rename to code/builders/builder-vite/src/plugins/external-globals-plugin.ts index fe5efe1bce4a..dd53ab4a4e56 100644 --- a/code/lib/builder-vite/src/plugins/external-globals-plugin.ts +++ b/code/builders/builder-vite/src/plugins/external-globals-plugin.ts @@ -1,7 +1,8 @@ import { join } from 'node:path'; +import findCacheDirectory from 'find-cache-dir'; import { init, parse } from 'es-module-lexer'; import MagicString from 'magic-string'; -import { emptyDir, ensureDir, ensureFile, writeFile } from 'fs-extra'; +import { ensureFile, writeFile } from 'fs-extra'; import { mergeAlias } from 'vite'; import type { Alias, Plugin } from 'vite'; @@ -47,9 +48,10 @@ export async function externalGlobalsPlugin(externals: Record<string, string>) { } const newAlias = mergeAlias([], config.resolve?.alias) as Alias[]; - const cachePath = join(process.cwd(), 'node_modules', '.cache', 'vite-plugin-externals'); - await ensureDir(cachePath); - await emptyDir(cachePath); + const cachePath = findCacheDirectory({ + name: 'sb-vite-plugin-externals', + create: true, + }) as string; await Promise.all( (Object.keys(externals) as Array<keyof typeof externals>).map(async (externalKey) => { const externalCachePath = join(cachePath, `${externalKey}.js`); diff --git a/code/lib/builder-vite/src/plugins/index.ts b/code/builders/builder-vite/src/plugins/index.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/index.ts rename to code/builders/builder-vite/src/plugins/index.ts diff --git a/code/lib/builder-vite/src/plugins/inject-export-order-plugin.ts b/code/builders/builder-vite/src/plugins/inject-export-order-plugin.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/inject-export-order-plugin.ts rename to code/builders/builder-vite/src/plugins/inject-export-order-plugin.ts diff --git a/code/lib/builder-vite/src/plugins/mdx-plugin.ts b/code/builders/builder-vite/src/plugins/mdx-plugin.ts similarity index 89% rename from code/lib/builder-vite/src/plugins/mdx-plugin.ts rename to code/builders/builder-vite/src/plugins/mdx-plugin.ts index 4f50a0b38159..8e4b51f16d6e 100644 --- a/code/lib/builder-vite/src/plugins/mdx-plugin.ts +++ b/code/builders/builder-vite/src/plugins/mdx-plugin.ts @@ -3,6 +3,7 @@ import type { Plugin } from 'vite'; import remarkSlug from 'remark-slug'; import remarkExternalLinks from 'remark-external-links'; import { createFilter } from 'vite'; +import { dirname, join } from 'path'; const isStorybookMdx = (id: string) => id.endsWith('stories.mdx') || id.endsWith('story.mdx'); @@ -33,7 +34,10 @@ export async function mdxPlugin(options: Options): Promise<Plugin> { const mdxLoaderOptions = await options.presets.apply('mdxLoaderOptions', { ...mdxPluginOptions, mdxCompileOptions: { - providerImportSource: '@storybook/addon-docs/mdx-react-shim', + providerImportSource: join( + dirname(require.resolve('@storybook/addon-docs/package.json')), + '/dist/shims/mdx-react-shim' + ), ...mdxPluginOptions?.mdxCompileOptions, remarkPlugins: [remarkSlug, remarkExternalLinks].concat( mdxPluginOptions?.mdxCompileOptions?.remarkPlugins ?? [] diff --git a/code/lib/builder-vite/src/plugins/mdx-plugin.types.d.ts b/code/builders/builder-vite/src/plugins/mdx-plugin.types.d.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/mdx-plugin.types.d.ts rename to code/builders/builder-vite/src/plugins/mdx-plugin.types.d.ts diff --git a/code/lib/builder-vite/src/plugins/strip-story-hmr-boundaries.ts b/code/builders/builder-vite/src/plugins/strip-story-hmr-boundaries.ts similarity index 100% rename from code/lib/builder-vite/src/plugins/strip-story-hmr-boundaries.ts rename to code/builders/builder-vite/src/plugins/strip-story-hmr-boundaries.ts diff --git a/code/lib/builder-vite/src/transform-iframe-html.ts b/code/builders/builder-vite/src/transform-iframe-html.ts similarity index 100% rename from code/lib/builder-vite/src/transform-iframe-html.ts rename to code/builders/builder-vite/src/transform-iframe-html.ts diff --git a/code/lib/builder-vite/src/types.ts b/code/builders/builder-vite/src/types.ts similarity index 100% rename from code/lib/builder-vite/src/types.ts rename to code/builders/builder-vite/src/types.ts diff --git a/code/lib/builder-vite/src/utils/has-vite-plugins.test.ts b/code/builders/builder-vite/src/utils/has-vite-plugins.test.ts similarity index 100% rename from code/lib/builder-vite/src/utils/has-vite-plugins.test.ts rename to code/builders/builder-vite/src/utils/has-vite-plugins.test.ts diff --git a/code/lib/builder-vite/src/utils/has-vite-plugins.ts b/code/builders/builder-vite/src/utils/has-vite-plugins.ts similarity index 100% rename from code/lib/builder-vite/src/utils/has-vite-plugins.ts rename to code/builders/builder-vite/src/utils/has-vite-plugins.ts diff --git a/code/lib/builder-vite/src/utils/process-preview-annotation.test.ts b/code/builders/builder-vite/src/utils/process-preview-annotation.test.ts similarity index 93% rename from code/lib/builder-vite/src/utils/process-preview-annotation.test.ts rename to code/builders/builder-vite/src/utils/process-preview-annotation.test.ts index 586a9ecad34b..085c8547d0a9 100644 --- a/code/lib/builder-vite/src/utils/process-preview-annotation.test.ts +++ b/code/builders/builder-vite/src/utils/process-preview-annotation.test.ts @@ -35,7 +35,8 @@ describe('processPreviewAnnotation()', () => { expect(url).toBe('/src/stories/components'); }); - it('should convert node_modules into bare paths', () => { + // TODO: figure out why this fails on windows. Could be related to storybook-metadata.test file altering path.sep + it.skipWindows('should convert node_modules into bare paths', () => { const annotation = '/Users/foo/storybook/node_modules/storybook-addon/preview'; const url = processPreviewAnnotation(annotation, '/Users/foo/storybook/'); expect(url).toBe('storybook-addon/preview'); diff --git a/code/lib/builder-vite/src/utils/process-preview-annotation.ts b/code/builders/builder-vite/src/utils/process-preview-annotation.ts similarity index 100% rename from code/lib/builder-vite/src/utils/process-preview-annotation.ts rename to code/builders/builder-vite/src/utils/process-preview-annotation.ts diff --git a/code/lib/builder-vite/src/utils/without-vite-plugins.test.ts b/code/builders/builder-vite/src/utils/without-vite-plugins.test.ts similarity index 100% rename from code/lib/builder-vite/src/utils/without-vite-plugins.test.ts rename to code/builders/builder-vite/src/utils/without-vite-plugins.test.ts diff --git a/code/lib/builder-vite/src/utils/without-vite-plugins.ts b/code/builders/builder-vite/src/utils/without-vite-plugins.ts similarity index 100% rename from code/lib/builder-vite/src/utils/without-vite-plugins.ts rename to code/builders/builder-vite/src/utils/without-vite-plugins.ts diff --git a/code/lib/builder-vite/src/virtual-file-names.ts b/code/builders/builder-vite/src/virtual-file-names.ts similarity index 100% rename from code/lib/builder-vite/src/virtual-file-names.ts rename to code/builders/builder-vite/src/virtual-file-names.ts diff --git a/code/lib/builder-vite/src/vite-config.test.ts b/code/builders/builder-vite/src/vite-config.test.ts similarity index 100% rename from code/lib/builder-vite/src/vite-config.test.ts rename to code/builders/builder-vite/src/vite-config.test.ts diff --git a/code/lib/builder-vite/src/vite-config.ts b/code/builders/builder-vite/src/vite-config.ts similarity index 92% rename from code/lib/builder-vite/src/vite-config.ts rename to code/builders/builder-vite/src/vite-config.ts index e9ce254809b3..a832f2e92a96 100644 --- a/code/lib/builder-vite/src/vite-config.ts +++ b/code/builders/builder-vite/src/vite-config.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import { loadConfigFromFile, mergeConfig } from 'vite'; +import findCacheDirectory from 'find-cache-dir'; import type { ConfigEnv, InlineConfig as ViteInlineConfig, @@ -43,16 +44,18 @@ export async function commonConfig( const configEnv = _type === 'development' ? configEnvServe : configEnvBuild; const { viteConfigPath } = await getBuilderOptions<BuilderOptions>(options); + const projectRoot = path.resolve(options.configDir, '..'); + // I destructure away the `build` property from the user's config object // I do this because I can contain config that breaks storybook, such as we had in a lit project. // If the user needs to configure the `build` they need to do so in the viteFinal function in main.js. const { config: { build: buildProperty = undefined, ...userConfig } = {} } = - (await loadConfigFromFile(configEnv, viteConfigPath)) ?? {}; + (await loadConfigFromFile(configEnv, viteConfigPath, projectRoot)) ?? {}; const sbConfig: InlineConfig = { configFile: false, - cacheDir: 'node_modules/.cache/.vite-storybook', - root: path.resolve(options.configDir, '..'), + cacheDir: findCacheDirectory({ name: 'sb-vite' }), + root: projectRoot, // Allow storybook deployed as subfolder. See https://github.com/storybookjs/builder-vite/issues/238 base: './', plugins: await pluginConfig(options), diff --git a/code/lib/builder-vite/src/vite-server.ts b/code/builders/builder-vite/src/vite-server.ts similarity index 100% rename from code/lib/builder-vite/src/vite-server.ts rename to code/builders/builder-vite/src/vite-server.ts diff --git a/code/lib/builder-vite/tsconfig.json b/code/builders/builder-vite/tsconfig.json similarity index 100% rename from code/lib/builder-vite/tsconfig.json rename to code/builders/builder-vite/tsconfig.json diff --git a/code/lib/builder-webpack5/README.md b/code/builders/builder-webpack5/README.md similarity index 100% rename from code/lib/builder-webpack5/README.md rename to code/builders/builder-webpack5/README.md diff --git a/code/lib/builder-vite/jest.config.js b/code/builders/builder-webpack5/jest.config.js similarity index 100% rename from code/lib/builder-vite/jest.config.js rename to code/builders/builder-webpack5/jest.config.js diff --git a/code/lib/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json similarity index 66% rename from code/lib/builder-webpack5/package.json rename to code/builders/builder-webpack5/package.json index d3a3ce6ddba1..8fe5bda194e3 100644 --- a/code/lib/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/builder-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/builder-webpack5", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-webpack5", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/builder-webpack5" + "directory": "code/builders/builder-webpack5" }, "funding": { "type": "opencollective", @@ -48,71 +48,60 @@ "templates/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/addons": "7.1.0-alpha.17", - "@storybook/api": "7.1.0-alpha.17", - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channel-websocket": "7.1.0-alpha.17", - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-api": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/router": "7.1.0-alpha.17", - "@storybook/store": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", + "@babel/core": "^7.22.0", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/core-webpack": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@swc/core": "^1.3.49", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", "babel-plugin-named-exports-order": "^0.0.2", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "express": "^4.17.3", - "fork-ts-checker-webpack-plugin": "^7.2.8", + "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", "path-browserify": "^1.0.1", "process": "^0.11.10", "semver": "^7.3.7", "style-loader": "^3.3.1", + "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.1", "ts-dedent": "^2.0.0", + "url": "^0.11.0", "util": "^0.12.4", "util-deprecate": "^1.0.2", "webpack": "5", - "webpack-dev-middleware": "^5.3.1", + "webpack-dev-middleware": "^6.1.1", "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.4.3" + "webpack-virtual-modules": "^0.5.0" }, "devDependencies": { "@types/pretty-hrtime": "^1.0.0", "@types/terser-webpack-plugin": "^5.2.0", - "@types/webpack-dev-middleware": "^5.3.0", "@types/webpack-hot-middleware": "^2.25.6", "@types/webpack-virtual-modules": "^0.1.1", "pretty-hrtime": "^1.0.3", "slash": "^5.0.0", "typescript": "~4.9.3" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -129,5 +118,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/builder-webpack5/project.json b/code/builders/builder-webpack5/project.json similarity index 100% rename from code/lib/builder-webpack5/project.json rename to code/builders/builder-webpack5/project.json diff --git a/code/lib/builder-webpack5/src/index.ts b/code/builders/builder-webpack5/src/index.ts similarity index 96% rename from code/lib/builder-webpack5/src/index.ts rename to code/builders/builder-webpack5/src/index.ts index 3ae9c53e9a99..0106cfea091d 100644 --- a/code/lib/builder-webpack5/src/index.ts +++ b/code/builders/builder-webpack5/src/index.ts @@ -20,7 +20,8 @@ export const printDuration = (startTime: [number, number]) => .replace(' s', ' seconds') .replace(' m', ' minutes'); -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; let compilation: ReturnType<typeof webpackDevMiddleware> | undefined; let reject: (reason?: any) => void; @@ -163,7 +164,7 @@ const starter: StarterFunction = async function* starterGeneratorFn({ } } - channel.emit(PREVIEW_BUILDER_PROGRESS, [progress]); + channel.emit(PREVIEW_BUILDER_PROGRESS, progress); }, modulesCount, }).apply(compiler); @@ -175,7 +176,7 @@ const starter: StarterFunction = async function* starterGeneratorFn({ compilation = webpackDevMiddleware(compiler, middlewareOptions); - const previewResolvedDir = wrapForPnP('@storybook/preview'); + const previewResolvedDir = getAbsolutePath('@storybook/preview'); const previewDirOrigin = join(previewResolvedDir, 'dist'); router.use(`/sb-preview`, express.static(previewDirOrigin, { immutable: true, maxAge: '5m' })); @@ -288,7 +289,7 @@ const builder: BuilderFunction = async function* builderGeneratorFn({ startTime, }); }); - const previewResolvedDir = wrapForPnP('@storybook/preview'); + const previewResolvedDir = getAbsolutePath('@storybook/preview'); const previewDirOrigin = join(previewResolvedDir, 'dist'); const previewDirTarget = join(options.outputDir || '', `sb-preview`); diff --git a/code/lib/builder-webpack5/src/presets/custom-webpack-preset.ts b/code/builders/builder-webpack5/src/presets/custom-webpack-preset.ts similarity index 100% rename from code/lib/builder-webpack5/src/presets/custom-webpack-preset.ts rename to code/builders/builder-webpack5/src/presets/custom-webpack-preset.ts diff --git a/code/lib/builder-webpack5/src/presets/preview-preset.ts b/code/builders/builder-webpack5/src/presets/preview-preset.ts similarity index 100% rename from code/lib/builder-webpack5/src/presets/preview-preset.ts rename to code/builders/builder-webpack5/src/presets/preview-preset.ts diff --git a/code/lib/builder-webpack5/src/preview/base-webpack.config.ts b/code/builders/builder-webpack5/src/preview/base-webpack.config.ts similarity index 100% rename from code/lib/builder-webpack5/src/preview/base-webpack.config.ts rename to code/builders/builder-webpack5/src/preview/base-webpack.config.ts diff --git a/code/lib/builder-webpack5/src/preview/iframe-webpack.config.ts b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts similarity index 81% rename from code/lib/builder-webpack5/src/preview/iframe-webpack.config.ts rename to code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts index e2bfa86df421..01b294f48fb0 100644 --- a/code/lib/builder-webpack5/src/preview/iframe-webpack.config.ts +++ b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts @@ -25,29 +25,39 @@ import { import { toRequireContextString, toImportFn } from '@storybook/core-webpack'; import { dedent } from 'ts-dedent'; import type { BuilderOptions, TypescriptOptions } from '../types'; -import { createBabelLoader } from './babel-loader-preview'; +import { createBabelLoader, createSWCLoader } from './loaders'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; +const maybeGetAbsolutePath = <I extends string>(input: I): I | false => { + try { + return getAbsolutePath(input); + } catch (e) { + return false; + } +}; +const managerAPIPath = maybeGetAbsolutePath(`@storybook/manager-api`); +const componentsPath = maybeGetAbsolutePath(`@storybook/components`); +const globalPath = maybeGetAbsolutePath(`@storybook/global`); +const routerPath = maybeGetAbsolutePath(`@storybook/router`); +const themingPath = maybeGetAbsolutePath(`@storybook/theming`); + +// these packages are not pre-bundled because of react dependencies. +// these are not dependencies of the builder anymore, thus resolving them can fail. +// we should remove the aliases in 8.0, I'm not sure why they are here in the first place. const storybookPaths: Record<string, string> = { - global: wrapForPnP('@storybook/global'), - ...[ - // these packages are not pre-bundled because of react dependencies - 'api', - 'components', - 'global', - 'manager-api', - 'router', - 'theming', - ].reduce( - (acc, sbPackage) => ({ - ...acc, - [`@storybook/${sbPackage}`]: wrapForPnP(`@storybook/${sbPackage}`), - }), - {} - ), - // deprecated, remove in 8.0 - [`@storybook/api`]: wrapForPnP(`@storybook/manager-api`), + ...(managerAPIPath + ? { + // deprecated, remove in 8.0 + [`@storybook/api`]: managerAPIPath, + [`@storybook/manager-api`]: managerAPIPath, + } + : {}), + ...(componentsPath ? { [`@storybook/components`]: componentsPath } : {}), + ...(globalPath ? { [`@storybook/global`]: globalPath } : {}), + ...(routerPath ? { [`@storybook/router`]: routerPath } : {}), + ...(themingPath ? { [`@storybook/theming`]: themingPath } : {}), }; export default async ( @@ -294,7 +304,9 @@ export default async ( fullySpecified: false, }, }, - createBabelLoader(babelOptions, typescriptOptions, Object.keys(virtualModuleMapping)), + builderOptions.useSWC + ? createSWCLoader(Object.keys(virtualModuleMapping)) + : createBabelLoader(babelOptions, typescriptOptions, Object.keys(virtualModuleMapping)), { test: /\.md$/, type: 'asset/source', @@ -307,9 +319,13 @@ export default async ( mainFields: ['browser', 'module', 'main'].filter(Boolean), alias: storybookPaths, fallback: { + stream: false, path: require.resolve('path-browserify'), assert: require.resolve('browser-assert'), util: require.resolve('util'), + url: require.resolve('url'), + fs: false, + constants: require.resolve('constants-browserify'), }, // Set webpack to resolve symlinks based on whether the user has asked node to. // This feels like it should be default out-of-the-box in webpack :shrug: @@ -323,18 +339,32 @@ export default async ( sideEffects: true, usedExports: isProd, moduleIds: 'named', - minimizer: isProd - ? [ - new TerserWebpackPlugin({ - parallel: true, - terserOptions: { - sourceMap: true, - mangle: false, - keep_fnames: true, - }, - }), - ] - : [], + ...(isProd + ? { + minimize: true, + minimizer: builderOptions.useSWC + ? [ + new TerserWebpackPlugin({ + minify: TerserWebpackPlugin.swcMinify, + terserOptions: { + sourceMap: true, + mangle: false, + keep_fnames: true, + }, + }), + ] + : [ + new TerserWebpackPlugin({ + parallel: true, + terserOptions: { + sourceMap: true, + mangle: false, + keep_fnames: true, + }, + }), + ], + } + : {}), }, performance: { hints: isProd ? 'warning' : false, diff --git a/code/builders/builder-webpack5/src/preview/loaders.ts b/code/builders/builder-webpack5/src/preview/loaders.ts new file mode 100644 index 000000000000..a458cf8cdaea --- /dev/null +++ b/code/builders/builder-webpack5/src/preview/loaders.ts @@ -0,0 +1,50 @@ +import { getProjectRoot } from '@storybook/core-common'; +import type { Options } from '@swc/core'; +import { dedent } from 'ts-dedent'; +import { logger } from '@storybook/node-logger'; +import type { TypescriptOptions } from '../types'; + +export const createBabelLoader = ( + options: any, + typescriptOptions: TypescriptOptions, + excludes: string[] = [] +) => { + return { + test: typescriptOptions.skipBabel ? /\.(mjs|jsx?)$/ : /\.(mjs|tsx?|jsx?)$/, + use: [ + { + loader: require.resolve('babel-loader'), + options, + }, + ], + include: [getProjectRoot()], + exclude: [/node_modules/, ...excludes], + }; +}; + +export const createSWCLoader = (excludes: string[] = []) => { + logger.warn(dedent` + The SWC loader is an experimental feature and may change or even be removed at any time. + `); + + const config: Options = { + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + dynamicImport: true, + }, + }, + }; + return { + test: /\.(mjs|cjs|tsx?|jsx?)$/, + use: [ + { + loader: require.resolve('swc-loader'), + options: config, + }, + ], + include: [getProjectRoot()], + exclude: [/node_modules/, ...excludes], + }; +}; diff --git a/code/lib/builder-webpack5/src/types.ts b/code/builders/builder-webpack5/src/types.ts similarity index 98% rename from code/lib/builder-webpack5/src/types.ts rename to code/builders/builder-webpack5/src/types.ts index 6e55f145ca22..93b2c3ad9caf 100644 --- a/code/lib/builder-webpack5/src/types.ts +++ b/code/builders/builder-webpack5/src/types.ts @@ -37,6 +37,7 @@ export interface StorybookConfigWebpack extends Pick<StorybookConfig, 'webpack' export type BuilderOptions = { fsCache?: boolean; + useSWC?: boolean; lazyCompilation?: boolean; }; diff --git a/code/lib/builder-webpack5/templates/preview.ejs b/code/builders/builder-webpack5/templates/preview.ejs similarity index 100% rename from code/lib/builder-webpack5/templates/preview.ejs rename to code/builders/builder-webpack5/templates/preview.ejs diff --git a/code/lib/builder-webpack5/templates/virtualModuleEntry.template.js b/code/builders/builder-webpack5/templates/virtualModuleEntry.template.js similarity index 100% rename from code/lib/builder-webpack5/templates/virtualModuleEntry.template.js rename to code/builders/builder-webpack5/templates/virtualModuleEntry.template.js diff --git a/code/lib/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars b/code/builders/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars similarity index 74% rename from code/lib/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars rename to code/builders/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars index 2773f636f98f..0507ca9fbbd1 100644 --- a/code/lib/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars +++ b/code/builders/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars @@ -1,20 +1,19 @@ import { global } from '@storybook/global'; import { ClientApi, PreviewWeb, addons, composeConfigs } from '@storybook/preview-api'; -import { createChannel as createPostMessageChannel } from '@storybook/channel-postmessage'; -import { createChannel as createWebSocketChannel } from '@storybook/channel-websocket'; +import { createBrowserChannel } from '@storybook/channels'; import { importFn } from './{{storiesFilename}}'; const getProjectAnnotations = () => composeConfigs([{{#each previewAnnotations}}require('{{this}}'),{{/each}}]); -const channel = createPostMessageChannel({ page: 'preview' }); +const channel = createBrowserChannel({ page: 'preview' }); addons.setChannel(channel); -const serverChannel = createWebSocketChannel({}); -addons.setServerChannel(serverChannel); -window.__STORYBOOK_SERVER_CHANNEL__ = serverChannel; +if (global.CONFIG_TYPE === 'DEVELOPMENT'){ + window.__STORYBOOK_SERVER_CHANNEL__ = channel; +} const preview = new PreviewWeb(); diff --git a/code/lib/builder-webpack5/templates/virtualModuleStory.template.js b/code/builders/builder-webpack5/templates/virtualModuleStory.template.js similarity index 100% rename from code/lib/builder-webpack5/templates/virtualModuleStory.template.js rename to code/builders/builder-webpack5/templates/virtualModuleStory.template.js diff --git a/code/lib/builder-webpack5/tsconfig.json b/code/builders/builder-webpack5/tsconfig.json similarity index 100% rename from code/lib/builder-webpack5/tsconfig.json rename to code/builders/builder-webpack5/tsconfig.json diff --git a/code/lib/builder-webpack5/typings.d.ts b/code/builders/builder-webpack5/typings.d.ts similarity index 100% rename from code/lib/builder-webpack5/typings.d.ts rename to code/builders/builder-webpack5/typings.d.ts diff --git a/code/lib/addons/README.md b/code/deprecated/addons/README.md similarity index 100% rename from code/lib/addons/README.md rename to code/deprecated/addons/README.md diff --git a/code/lib/addons/package.json b/code/deprecated/addons/package.json similarity index 76% rename from code/lib/addons/package.json rename to code/deprecated/addons/package.json index 5a17c95a53eb..42688e685652 100644 --- a/code/lib/addons/package.json +++ b/code/deprecated/addons/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/addons", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook addons store", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/addons", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/deprecated/addons", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/addons" + "directory": "code/deprecated/addons" }, "funding": { "type": "opencollective", @@ -34,19 +34,19 @@ "types": "./dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17" + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -60,5 +60,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/addons/project.json b/code/deprecated/addons/project.json similarity index 100% rename from code/lib/addons/project.json rename to code/deprecated/addons/project.json diff --git a/code/lib/addons/src/index.ts b/code/deprecated/addons/src/index.ts similarity index 100% rename from code/lib/addons/src/index.ts rename to code/deprecated/addons/src/index.ts diff --git a/code/lib/addons/tsconfig.json b/code/deprecated/addons/tsconfig.json similarity index 100% rename from code/lib/addons/tsconfig.json rename to code/deprecated/addons/tsconfig.json diff --git a/code/lib/channel-postmessage/README.md b/code/deprecated/channel-postmessage/README.md similarity index 100% rename from code/lib/channel-postmessage/README.md rename to code/deprecated/channel-postmessage/README.md diff --git a/code/lib/channel-websocket/jest.config.js b/code/deprecated/channel-postmessage/jest.config.js similarity index 100% rename from code/lib/channel-websocket/jest.config.js rename to code/deprecated/channel-postmessage/jest.config.js diff --git a/code/lib/channel-postmessage/package.json b/code/deprecated/channel-postmessage/package.json similarity index 58% rename from code/lib/channel-postmessage/package.json rename to code/deprecated/channel-postmessage/package.json index 2028d4df2be2..7677be32e2d1 100644 --- a/code/lib/channel-postmessage/package.json +++ b/code/deprecated/channel-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-postmessage", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -22,34 +22,30 @@ "sideEffects": false, "exports": { ".": { - "types": "./dist/index.d.ts", - "node": "./dist/index.js", - "require": "./dist/index.js", - "import": "./dist/index.mjs" + "types": "./dist/entry.d.ts", + "node": "./dist/entry.js", + "require": "./dist/entry.js", + "import": "./dist/entry.mjs" }, "./package.json": "./package.json" }, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "main": "dist/entry.js", + "module": "dist/entry.mjs", + "types": "dist/entry.d.ts", "files": [ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", - "@storybook/global": "^5.0.0", - "qs": "^6.10.0", - "telejson": "^7.0.3", - "tiny-invariant": "^1.3.1" + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*" }, "devDependencies": { "typescript": "~4.9.3" @@ -59,8 +55,9 @@ }, "bundler": { "entries": [ - "./src/index.ts" - ] + "./src/entry.ts" + ], + "shim": "@storybook/channels/dist/postmessage/index" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/channel-postmessage/project.json b/code/deprecated/channel-postmessage/project.json similarity index 100% rename from code/lib/channel-postmessage/project.json rename to code/deprecated/channel-postmessage/project.json diff --git a/code/deprecated/channel-postmessage/src/entry.ts b/code/deprecated/channel-postmessage/src/entry.ts new file mode 100644 index 000000000000..2190b9f5382e --- /dev/null +++ b/code/deprecated/channel-postmessage/src/entry.ts @@ -0,0 +1,7 @@ +import { deprecate } from '@storybook/client-logger'; + +deprecate( + 'importing from @storybook/channel-postmessage is deprecated and will be removed in 8.0, please import createPostmessageChannel from @storybook/channels' +); + +export * from '@storybook/channels/dist/postmessage/index'; diff --git a/code/lib/channel-websocket/tsconfig.json b/code/deprecated/channel-postmessage/tsconfig.json similarity index 100% rename from code/lib/channel-websocket/tsconfig.json rename to code/deprecated/channel-postmessage/tsconfig.json diff --git a/code/lib/channel-websocket/README.md b/code/deprecated/channel-websocket/README.md similarity index 100% rename from code/lib/channel-websocket/README.md rename to code/deprecated/channel-websocket/README.md diff --git a/code/lib/client-api/jest.config.js b/code/deprecated/channel-websocket/jest.config.js similarity index 100% rename from code/lib/client-api/jest.config.js rename to code/deprecated/channel-websocket/jest.config.js diff --git a/code/deprecated/channel-websocket/package.json b/code/deprecated/channel-websocket/package.json new file mode 100644 index 000000000000..0df526a75f39 --- /dev/null +++ b/code/deprecated/channel-websocket/package.json @@ -0,0 +1,63 @@ +{ + "name": "@storybook/channel-websocket", + "version": "7.4.0-alpha.2", + "description": "", + "keywords": [ + "storybook" + ], + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/channel-websocket", + "bugs": { + "url": "https://github.com/storybookjs/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybookjs/storybook.git", + "directory": "code/lib/channel-websocket" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "license": "MIT", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/entry.d.ts", + "node": "./dist/entry.js", + "require": "./dist/entry.js", + "import": "./dist/entry.mjs" + }, + "./package.json": "./package.json" + }, + "main": "dist/entry.js", + "module": "dist/entry.mjs", + "types": "dist/entry.d.ts", + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts", + "!src/**/*" + ], + "scripts": { + "check": "../../../scripts/prepare/check.ts", + "prep": "../../../scripts/prepare/facade.ts" + }, + "dependencies": { + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*" + }, + "devDependencies": { + "typescript": "~4.9.3" + }, + "publishConfig": { + "access": "public" + }, + "bundler": { + "entries": [ + "./src/entry.ts" + ], + "shim": "@storybook/channels/dist/websocket/index" + }, + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" +} diff --git a/code/lib/channel-websocket/project.json b/code/deprecated/channel-websocket/project.json similarity index 100% rename from code/lib/channel-websocket/project.json rename to code/deprecated/channel-websocket/project.json diff --git a/code/deprecated/channel-websocket/src/entry.ts b/code/deprecated/channel-websocket/src/entry.ts new file mode 100644 index 000000000000..e5b6602e6120 --- /dev/null +++ b/code/deprecated/channel-websocket/src/entry.ts @@ -0,0 +1,7 @@ +import { deprecate } from '@storybook/client-logger'; + +deprecate( + 'importing from @storybook/channel-websocket is deprecated and will be removed in 8.0, please import createWebsocketChannel from @storybook/channels' +); + +export * from '@storybook/channels/dist/websocket/index'; diff --git a/code/lib/client-api/tsconfig.json b/code/deprecated/channel-websocket/tsconfig.json similarity index 100% rename from code/lib/client-api/tsconfig.json rename to code/deprecated/channel-websocket/tsconfig.json diff --git a/code/lib/client-api/README.md b/code/deprecated/client-api/README.md similarity index 100% rename from code/lib/client-api/README.md rename to code/deprecated/client-api/README.md diff --git a/code/lib/client-api/package.json b/code/deprecated/client-api/package.json similarity index 76% rename from code/lib/client-api/package.json rename to code/deprecated/client-api/package.json index 5b43e365d1ba..dc5b07fcf18f 100644 --- a/code/lib/client-api/package.json +++ b/code/deprecated/client-api/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/client-api", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Client API", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/client-api", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/deprecated/client-api", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/client-api" + "directory": "code/deprecated/client-api" }, "funding": { "type": "opencollective", @@ -35,15 +35,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/preview-api": "workspace:*" }, "publishConfig": { "access": "public" @@ -54,5 +55,5 @@ ], "shim": "@storybook/preview-api/dist/client-api" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/client-api/project.json b/code/deprecated/client-api/project.json similarity index 100% rename from code/lib/client-api/project.json rename to code/deprecated/client-api/project.json diff --git a/code/lib/client-api/src/entry.ts b/code/deprecated/client-api/src/entry.ts similarity index 100% rename from code/lib/client-api/src/entry.ts rename to code/deprecated/client-api/src/entry.ts diff --git a/code/lib/client-api/src/typings.d.ts b/code/deprecated/client-api/src/typings.d.ts similarity index 100% rename from code/lib/client-api/src/typings.d.ts rename to code/deprecated/client-api/src/typings.d.ts diff --git a/code/deprecated/client-api/tsconfig.json b/code/deprecated/client-api/tsconfig.json new file mode 100644 index 000000000000..b5a2f9a70918 --- /dev/null +++ b/code/deprecated/client-api/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"], + "compilerOptions": { + "strict": true + } +} diff --git a/code/lib/core-client/README.md b/code/deprecated/core-client/README.md similarity index 100% rename from code/lib/core-client/README.md rename to code/deprecated/core-client/README.md diff --git a/code/lib/core-client/package.json b/code/deprecated/core-client/package.json similarity index 76% rename from code/lib/core-client/package.json rename to code/deprecated/core-client/package.json index 4ee909e46fb5..51f316799bb0 100644 --- a/code/lib/core-client/package.json +++ b/code/deprecated/core-client/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/core-client", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/core-client", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/deprecated/core-client", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/core-client" + "directory": "code/deprecated/core-client" }, "funding": { "type": "opencollective", @@ -31,12 +31,12 @@ "module": "dist/entry.mjs", "types": "dist/entry.d.ts", "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/preview-api": "workspace:*" }, "publishConfig": { "access": "public" @@ -47,5 +47,5 @@ ], "shim": "@storybook/preview-api/dist/core-client" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/core-client/project.json b/code/deprecated/core-client/project.json similarity index 100% rename from code/lib/core-client/project.json rename to code/deprecated/core-client/project.json diff --git a/code/lib/core-client/src/entry.ts b/code/deprecated/core-client/src/entry.ts similarity index 100% rename from code/lib/core-client/src/entry.ts rename to code/deprecated/core-client/src/entry.ts diff --git a/code/lib/core-client/src/typings.d.ts b/code/deprecated/core-client/src/typings.d.ts similarity index 100% rename from code/lib/core-client/src/typings.d.ts rename to code/deprecated/core-client/src/typings.d.ts diff --git a/code/lib/core-client/tsconfig.json b/code/deprecated/core-client/tsconfig.json similarity index 100% rename from code/lib/core-client/tsconfig.json rename to code/deprecated/core-client/tsconfig.json diff --git a/code/lib/core-client/typings.d.ts b/code/deprecated/core-client/typings.d.ts similarity index 100% rename from code/lib/core-client/typings.d.ts rename to code/deprecated/core-client/typings.d.ts diff --git a/code/lib/manager-api-shim/README.md b/code/deprecated/manager-api-shim/README.md similarity index 100% rename from code/lib/manager-api-shim/README.md rename to code/deprecated/manager-api-shim/README.md diff --git a/code/lib/manager-api-shim/package.json b/code/deprecated/manager-api-shim/package.json similarity index 81% rename from code/lib/manager-api-shim/package.json rename to code/deprecated/manager-api-shim/package.json index b4f679c89102..9852affc753a 100644 --- a/code/lib/manager-api-shim/package.json +++ b/code/deprecated/manager-api-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/api", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Manager API (facade)", "keywords": [ "storybook" @@ -12,7 +12,7 @@ "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/manager-api-shim" + "directory": "code/deprecated/manager-api-shim" }, "funding": { "type": "opencollective", @@ -35,15 +35,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/manager-api": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/manager-api": "workspace:*" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -66,5 +67,5 @@ ], "shim": "@storybook/manager-api" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/manager-api-shim/project.json b/code/deprecated/manager-api-shim/project.json similarity index 100% rename from code/lib/manager-api-shim/project.json rename to code/deprecated/manager-api-shim/project.json diff --git a/code/lib/manager-api-shim/src/entry.ts b/code/deprecated/manager-api-shim/src/entry.ts similarity index 100% rename from code/lib/manager-api-shim/src/entry.ts rename to code/deprecated/manager-api-shim/src/entry.ts diff --git a/code/lib/manager-api-shim/src/typings.d.ts b/code/deprecated/manager-api-shim/src/typings.d.ts similarity index 100% rename from code/lib/manager-api-shim/src/typings.d.ts rename to code/deprecated/manager-api-shim/src/typings.d.ts diff --git a/code/lib/manager-api-shim/tsconfig.json b/code/deprecated/manager-api-shim/tsconfig.json similarity index 100% rename from code/lib/manager-api-shim/tsconfig.json rename to code/deprecated/manager-api-shim/tsconfig.json diff --git a/code/lib/preview-web/README.md b/code/deprecated/preview-web/README.md similarity index 100% rename from code/lib/preview-web/README.md rename to code/deprecated/preview-web/README.md diff --git a/code/lib/preview-web/package.json b/code/deprecated/preview-web/package.json similarity index 76% rename from code/lib/preview-web/package.json rename to code/deprecated/preview-web/package.json index 0989b46b677c..83ede3552481 100644 --- a/code/lib/preview-web/package.json +++ b/code/deprecated/preview-web/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/preview-web", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/preview-web", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/deprecated/preview-web", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/preview-web" + "directory": "code/deprecated/preview-web" }, "funding": { "type": "opencollective", @@ -35,15 +35,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/preview-api": "workspace:*" }, "publishConfig": { "access": "public" @@ -54,5 +55,5 @@ ], "shim": "@storybook/preview-api/dist/preview-web" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/preview-web/project.json b/code/deprecated/preview-web/project.json similarity index 100% rename from code/lib/preview-web/project.json rename to code/deprecated/preview-web/project.json diff --git a/code/lib/preview-web/src/entry.ts b/code/deprecated/preview-web/src/entry.ts similarity index 100% rename from code/lib/preview-web/src/entry.ts rename to code/deprecated/preview-web/src/entry.ts diff --git a/code/lib/preview-web/src/typings.d.ts b/code/deprecated/preview-web/src/typings.d.ts similarity index 100% rename from code/lib/preview-web/src/typings.d.ts rename to code/deprecated/preview-web/src/typings.d.ts diff --git a/code/lib/preview-web/tsconfig.json b/code/deprecated/preview-web/tsconfig.json similarity index 100% rename from code/lib/preview-web/tsconfig.json rename to code/deprecated/preview-web/tsconfig.json diff --git a/code/lib/store/README.md b/code/deprecated/store/README.md similarity index 100% rename from code/lib/store/README.md rename to code/deprecated/store/README.md diff --git a/code/lib/store/package.json b/code/deprecated/store/package.json similarity index 77% rename from code/lib/store/package.json rename to code/deprecated/store/package.json index d2341fbf283f..dca055387783 100644 --- a/code/lib/store/package.json +++ b/code/deprecated/store/package.json @@ -1,18 +1,18 @@ { "name": "@storybook/store", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/store", + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/deprecated/store", "bugs": { "url": "https://github.com/storybookjs/storybook/issues" }, "repository": { "type": "git", "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/store" + "directory": "code/deprecated/store" }, "funding": { "type": "opencollective", @@ -35,15 +35,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/client-logger": "workspace:*", + "@storybook/preview-api": "workspace:*" }, "publishConfig": { "access": "public" @@ -55,5 +56,5 @@ "platform": "node", "shim": "@storybook/preview-api/dist/store" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/store/project.json b/code/deprecated/store/project.json similarity index 100% rename from code/lib/store/project.json rename to code/deprecated/store/project.json diff --git a/code/lib/store/src/entry.ts b/code/deprecated/store/src/entry.ts similarity index 100% rename from code/lib/store/src/entry.ts rename to code/deprecated/store/src/entry.ts diff --git a/code/lib/store/src/typings.d.ts b/code/deprecated/store/src/typings.d.ts similarity index 100% rename from code/lib/store/src/typings.d.ts rename to code/deprecated/store/src/typings.d.ts diff --git a/code/lib/store/tsconfig.json b/code/deprecated/store/tsconfig.json similarity index 100% rename from code/lib/store/tsconfig.json rename to code/deprecated/store/tsconfig.json diff --git a/code/e2e-tests/addon-backgrounds.spec.ts b/code/e2e-tests/addon-backgrounds.spec.ts index 8aeb162d58c1..23fea7431c10 100644 --- a/code/e2e-tests/addon-backgrounds.spec.ts +++ b/code/e2e-tests/addon-backgrounds.spec.ts @@ -3,7 +3,7 @@ import process from 'process'; import { SbPage } from './util'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; -const templateName = process.env.STORYBOOK_TEMPLATE_NAME; +const templateName = process.env.STORYBOOK_TEMPLATE_NAME || ''; test.describe('addon-backgrounds', () => { test.beforeEach(async ({ page }) => { @@ -63,7 +63,7 @@ test.describe('addon-backgrounds', () => { // We start on the introduction page by default. await sbPage.page.waitForURL((url) => - url.search.includes(`path=/docs/example-introduction--docs`) + url.search.includes(`path=/docs/configure-your-project--docs`) ); await expect(sbPage.page.locator(backgroundToolbarSelector)).toBeVisible(); diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 0f318f9f657d..30babefa2280 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -83,7 +83,7 @@ test.describe('addon-docs', () => { }); test('should provide source snippet', async ({ page }) => { - // templateName is e.g. 'Vue-CLI (Default JS)' + // templateName is e.g. 'vue-cli/default-js' test.skip( /^(vue3|vue-cli|preact)/i.test(`${templateName}`), `Skipping ${templateName}, which does not support dynamic source snippets` diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts index 8e2c24b74484..981c5bf678a6 100644 --- a/code/e2e-tests/addon-interactions.spec.ts +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -12,9 +12,8 @@ test.describe('addon-interactions', () => { await new SbPage(page).waitUntilLoaded(); }); - // FIXME: skip xxx test('should have interactions', async ({ page }) => { - // templateName is e.g. 'Vue-CLI (Default JS)' + // templateName is e.g. 'vue-cli/default-js' test.skip( // eslint-disable-next-line jest/valid-title /^(lit)/i.test(`${templateName}`), @@ -43,7 +42,7 @@ test.describe('addon-interactions', () => { }); test('should step through interactions', async ({ page }) => { - // templateName is e.g. 'Vue-CLI (Default JS)' + // templateName is e.g. 'vue-cli/default-js' test.skip( // eslint-disable-next-line jest/valid-title /^(lit)/i.test(`${templateName}`), @@ -52,7 +51,7 @@ test.describe('addon-interactions', () => { const sbPage = new SbPage(page); - await sbPage.navigateToStory('addons/interactions/basics', 'type-and-clear'); + await sbPage.deepLinkToStory(storybookUrl, 'addons/interactions/basics', 'type-and-clear'); await sbPage.viewAddonPanel('Interactions'); // Test initial state - Interactions have run, count is correct and values are as expected @@ -60,15 +59,16 @@ test.describe('addon-interactions', () => { await expect(formInput).toHaveValue('final value'); const interactionsTab = await page.locator('#tabbutton-storybook-interactions-panel'); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); + await expect(interactionsTab).toBeVisible(); await expect(interactionsTab).toBeVisible(); const panel = sbPage.panelContent(); const runStatusBadge = await panel.locator('[aria-label="Status of the test run"]'); await expect(runStatusBadge).toContainText(/Pass/); - await expect(panel).toContainText(/value: "initial value"/); - await expect(panel).toContainText(/value: ""/); - await expect(panel).toContainText(/value: "final value"/); + await expect(panel).toContainText(/"initial value"/); + await expect(panel).toContainText(/clear/); + await expect(panel).toContainText(/"final value"/); await expect(panel).toBeVisible(); // Test interactions debugger - Stepping through works, count is correct and values are as expected @@ -94,19 +94,26 @@ test.describe('addon-interactions', () => { // Test rerun state (from addon panel) - Interactions have rerun, count is correct and values are as expected const rerunInteractionButton = await panel.locator('[aria-label="Rerun"]'); await rerunInteractionButton.click(); + + await expect(formInput).toHaveValue('final value'); + await interactionsRow.first().isVisible(); await interactionsRow.nth(1).isVisible(); await interactionsRow.nth(2).isVisible(); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); await expect(interactionsTab).toBeVisible(); + await expect(interactionsTab.getByText('3')).toBeVisible(); // Test remount state (from toolbar) - Interactions have rerun, count is correct and values are as expected const remountComponentButton = await page.locator('[title="Remount component"]'); await remountComponentButton.click(); + await interactionsRow.first().isVisible(); await interactionsRow.nth(1).isVisible(); await interactionsRow.nth(2).isVisible(); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); + await expect(interactionsTab).toBeVisible(); await expect(interactionsTab).toBeVisible(); + await expect(formInput).toHaveValue('final value'); }); }); diff --git a/code/e2e-tests/addon-viewport.spec.ts b/code/e2e-tests/addon-viewport.spec.ts index 18d72e112646..ec96a3bd93ea 100644 --- a/code/e2e-tests/addon-viewport.spec.ts +++ b/code/e2e-tests/addon-viewport.spec.ts @@ -20,4 +20,24 @@ test.describe('addon-viewport', () => { // Check that Button story is still displayed await expect(sbPage.previewRoot()).toContainText('Button'); }); + + test('iframe width should be changed when a mobile viewport is selected', async ({ page }) => { + const sbPage = new SbPage(page); + + // Click on viewport button and select small mobile + await sbPage.navigateToStory('example/button', 'primary'); + + // Measure the original dimensions of previewRoot + const originalDimensions = await sbPage.getCanvasBodyElement().boundingBox(); + await expect(originalDimensions?.width).toBeDefined(); + + await sbPage.selectToolbar('[title="Change the size of the preview"]', '#list-item-mobile1'); + + // Measure the adjusted dimensions of previewRoot after clicking the mobile item. + const adjustedDimensions = await sbPage.getCanvasBodyElement().boundingBox(); + await expect(adjustedDimensions?.width).toBeDefined(); + + // Compare the two widths + await expect(adjustedDimensions?.width).not.toBe(originalDimensions?.width); + }); }); diff --git a/code/e2e-tests/framework-nextjs.spec.ts b/code/e2e-tests/framework-nextjs.spec.ts index d5519251da39..440c079d1704 100644 --- a/code/e2e-tests/framework-nextjs.spec.ts +++ b/code/e2e-tests/framework-nextjs.spec.ts @@ -12,7 +12,7 @@ test.describe('Next.js', () => { // and this only tests nextjs/default-js test.skip( // eslint-disable-next-line jest/valid-title - !templateName.includes('nextjs/default-js'), + !templateName?.includes('nextjs/default-js'), 'Only run this test for the Frameworks that support next/navigation' ); diff --git a/code/e2e-tests/json-files.spec.ts b/code/e2e-tests/json-files.spec.ts index e0e29fab7c9c..d2026a7872b2 100644 --- a/code/e2e-tests/json-files.spec.ts +++ b/code/e2e-tests/json-files.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test'; import process from 'process'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; -const templateName = process.env.STORYBOOK_TEMPLATE_NAME; +const templateName = process.env.STORYBOOK_TEMPLATE_NAME || ''; test.describe('JSON files', () => { test.beforeEach(async ({ page }) => { diff --git a/code/e2e-tests/manager.spec.ts b/code/e2e-tests/manager.spec.ts new file mode 100644 index 000000000000..bd07a1adc30a --- /dev/null +++ b/code/e2e-tests/manager.spec.ts @@ -0,0 +1,94 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('manager', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + + await new SbPage(page).waitUntilLoaded(); + }); + + test('shortcuts sidebar', async ({ page }) => { + const sbPage = new SbPage(page); + + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('[aria-label="Show sidebar"]').click(); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-S').click(); + + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + }); + + test('shortcuts toolbar', async ({ page }) => { + const sbPage = new SbPage(page); + const isToolbarShown = async () => { + const canvas = await sbPage.page.locator('div', { + has: sbPage.page.locator('> #storybook-preview-wrapper'), + }); + + return (await canvas.getAttribute('offset')) === '40'; + }; + + await expect(await isToolbarShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('t'); + await expect(await isToolbarShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-T').click(); + await expect(await isToolbarShown()).toBeTruthy(); + }); + + test('shortcuts panel', async ({ page }) => { + const sbPage = new SbPage(page); + const isPanelsShown = async () => { + const main = await sbPage.page.locator('div', { + has: sbPage.page.locator('> * > #storybook-preview-wrapper'), + }); + + const style = await main.getAttribute('style'); + return style; + }; + + await sbPage.navigateToStory('example/button', 'primary'); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-A').click(); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('html').press('a'); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-D').click(); + await expect(await isPanelsShown()).toBeTruthy(); + }); + + test('settings page', async ({ page }) => { + const sbPage = new SbPage(page); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-about').click(); + + await expect(sbPage.page.url()).toContain('/settings/about'); + + await sbPage.page.locator('[title="Close settings page"]').click(); + await expect(sbPage.page.url()).not.toContain('/settings/about'); + }); +}); diff --git a/code/e2e-tests/preview-web.spec.ts b/code/e2e-tests/preview-web.spec.ts index 28c3b2e1b01d..34a536ea1ae2 100644 --- a/code/e2e-tests/preview-web.spec.ts +++ b/code/e2e-tests/preview-web.spec.ts @@ -1,28 +1,52 @@ +/* eslint-disable jest/no-disabled-tests */ import { test, expect } from '@playwright/test'; import process from 'process'; import { SbPage } from './util'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; +const templateName = process.env.STORYBOOK_TEMPLATE_NAME || ''; test.describe('preview-web', () => { test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); + await new SbPage(page).waitUntilLoaded(); }); test('should pass over shortcuts, but not from play functions, story', async ({ page }) => { - const sbPage = new SbPage(page); - await sbPage.navigateToStory('lib/store/shortcuts', 'keydown-during-play'); + test.skip( + // eslint-disable-next-line jest/valid-title + /^(lit)/i.test(`${templateName}`), + `Skipping ${templateName}, which does not support addon-interactions` + ); + const sbPage = new SbPage(page); + await sbPage.deepLinkToStory(storybookUrl, 'lib/preview-api/shortcuts', 'keydown-during-play'); await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); - await sbPage.previewRoot().locator('button').press('s'); + // wait for the play function to complete + await sbPage.viewAddonPanel('Interactions'); + const interactionsTab = await page.locator('#tabbutton-storybook-interactions-panel'); + await expect(interactionsTab).toBeVisible(); + const panel = sbPage.panelContent(); + const runStatusBadge = await panel.locator('[aria-label="Status of the test run"]'); + await expect(runStatusBadge).toContainText(/Pass/); + + // click outside, to remove focus from the input of the story, then press S to toggle sidebar + await sbPage.previewRoot().click(); + await sbPage.previewRoot().press('s'); await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); }); test('should pass over shortcuts, but not from play functions, docs', async ({ page }) => { + test.skip( + // eslint-disable-next-line jest/valid-title + /^(lit)/i.test(`${templateName}`), + `Skipping ${templateName}, which does not support addon-interactions` + ); + const sbPage = new SbPage(page); - await sbPage.navigateToStory('lib/store/shortcuts', 'docs'); + await sbPage.deepLinkToStory(storybookUrl, 'lib/preview-api/shortcuts', 'docs'); await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); diff --git a/code/e2e-tests/util.ts b/code/e2e-tests/util.ts index 7b59f27369ae..5ca303d47ef6 100644 --- a/code/e2e-tests/util.ts +++ b/code/e2e-tests/util.ts @@ -24,6 +24,20 @@ export class SbPage { } } + /** + * Visit a story via the URL instead of selecting from the sidebar. + */ + async deepLinkToStory(baseURL: string, title: string, name: 'docs' | string) { + const titleId = toId(title); + const storyId = toId(name); + const storyLinkId = `${titleId}--${storyId}`; + const viewMode = name === 'docs' ? 'docs' : 'story'; + await this.page.goto(`${baseURL}/?path=/${viewMode}/${storyLinkId}`); + } + + /** + * Visit a story by selecting it from the sidebar. + */ async navigateToStory(title: string, name: string) { await this.openComponent(title); @@ -31,7 +45,7 @@ export class SbPage { const storyId = toId(name); const storyLinkId = `#${titleId}--${storyId}`; await this.page.waitForSelector(storyLinkId); - const storyLink = this.page.locator(storyLinkId); + const storyLink = this.page.locator('*', { has: this.page.locator(`> ${storyLinkId}`) }); await storyLink.click({ force: true }); // assert url changes @@ -46,6 +60,17 @@ export class SbPage { } async waitUntilLoaded() { + // make sure we start every test with clean state – to avoid possible flakyness + await this.page.context().addInitScript(() => { + const storeState = { + layout: { + showToolbar: true, + showNav: true, + showPanel: true, + }, + }; + window.sessionStorage.setItem('@storybook/manager/store', JSON.stringify(storeState)); + }, {}); const root = this.previewRoot(); const docsLoadingPage = root.locator('.sb-preparing-docs'); const storyLoadingPage = root.locator('.sb-preparing-story'); diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 7827bad59e5c..cf6bf428c4b5 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", @@ -25,31 +25,32 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", "*.mjs", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { "check": "../../../scripts/node_modules/.bin/tsc", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/cli": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/cli": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/core-webpack": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/telemetry": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/telemetry": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^16.0.0", "@types/react": "^16.14.34", "@types/react-dom": "^16.9.14", @@ -58,9 +59,9 @@ "find-up": "^5.0.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", - "tsconfig-paths-webpack-plugin": "^3.5.2", + "tsconfig-paths-webpack-plugin": "^4.0.1", "util-deprecate": "^1.0.2", "webpack": "5" }, @@ -77,13 +78,12 @@ "@angular/forms": "^16.0.0-rc.4", "@angular/platform-browser": "^16.0.0-rc.4", "@angular/platform-browser-dynamic": "^16.0.0-rc.4", - "@types/rimraf": "^3.0.2", + "@types/cross-spawn": "^6.0.2", "@types/tmp": "^0.2.3", "cross-spawn": "^7.0.3", "jest": "^29.3.1", "jest-preset-angular": "^13.0.1", "jest-specific-snapshot": "^8.0.0", - "rimraf": "^3.0.2", "tmp": "^0.2.1", "typescript": "^5.0.4", "webpack": "5", @@ -123,5 +123,5 @@ "bundler": { "tsConfig": "tsconfig.build.json" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/angular/src/builders/build-storybook/index.ts b/code/frameworks/angular/src/builders/build-storybook/index.ts index 2916c842628e..aef361ac0790 100644 --- a/code/frameworks/angular/src/builders/build-storybook/index.ts +++ b/code/frameworks/angular/src/builders/build-storybook/index.ts @@ -35,6 +35,7 @@ export type StorybookBuilderOptions = JsonObject & { docs: boolean; compodoc: boolean; compodocArgs: string[]; + enableProdMode?: boolean; styles?: StyleElement[]; stylePreprocessorOptions?: StylePreprocessorOptions; assets?: AssetPattern[]; @@ -78,6 +79,7 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = ( loglevel, outputDir, quiet, + enableProdMode = true, webpackStatsJson, disableTelemetry, assets, @@ -90,6 +92,7 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = ( loglevel, outputDir, quiet, + enableProdMode, disableTelemetry, angularBrowserTarget: browserTarget, angularBuilderContext: context, diff --git a/code/frameworks/angular/src/builders/build-storybook/schema.json b/code/frameworks/angular/src/builders/build-storybook/schema.json index eaae4d1cf8db..b0c63c455076 100644 --- a/code/frameworks/angular/src/builders/build-storybook/schema.json +++ b/code/frameworks/angular/src/builders/build-storybook/schema.json @@ -29,6 +29,11 @@ "description": "Controls level of logging during build. Can be one of: [silly, verbose, info (default), warn, error, silent].", "pattern": "(silly|verbose|info|warn|silent)" }, + "enableProdMode": { + "type": "boolean", + "description": "Disable Angular's development mode, which turns off assertions and other checks within the framework.", + "default": true + }, "quiet": { "type": "boolean", "description": "Suppress verbose build output.", diff --git a/code/frameworks/angular/src/builders/start-storybook/index.ts b/code/frameworks/angular/src/builders/start-storybook/index.ts index da43aa8c95a4..fa78f8b45d8e 100644 --- a/code/frameworks/angular/src/builders/start-storybook/index.ts +++ b/code/frameworks/angular/src/builders/start-storybook/index.ts @@ -30,9 +30,9 @@ addToGlobalContext('cliVersion', versions.storybook); export type StorybookBuilderOptions = JsonObject & { browserTarget?: string | null; tsConfig?: string; - docs: boolean; compodoc: boolean; compodocArgs: string[]; + enableProdMode?: boolean; styles?: StyleElement[]; stylePreprocessorOptions?: StylePreprocessorOptions; assets?: AssetPattern[]; @@ -50,6 +50,9 @@ export type StorybookBuilderOptions = JsonObject & { | 'ci' | 'quiet' | 'disableTelemetry' + | 'initialPath' + | 'open' + | 'docs' >; export type StorybookBuilderOutput = JsonObject & BuilderOutput & {}; @@ -58,9 +61,13 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = (options, cont const builder = from(setup(options, context)).pipe( switchMap(({ tsConfig }) => { const runCompodoc$ = options.compodoc - ? runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: tsConfig }, context).pipe( - mapTo({ tsConfig }) - ) + ? runCompodoc( + { + compodocArgs: [...options.compodocArgs, ...(options.quiet ? ['--silent'] : [])], + tsconfig: tsConfig, + }, + context + ).pipe(mapTo({ tsConfig })) : of({}); return runCompodoc$.pipe(mapTo({ tsConfig })); @@ -87,12 +94,15 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = (options, cont https, port, quiet, + enableProdMode = false, smokeTest, sslCa, sslCert, sslKey, disableTelemetry, assets, + initialPath, + open, } = options; const standaloneOptions: StandaloneOptions = { @@ -104,6 +114,7 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = (options, cont https, port, quiet, + enableProdMode, smokeTest, sslCa, sslCert, @@ -117,6 +128,8 @@ const commandBuilder: BuilderHandlerFn<StorybookBuilderOptions> = (options, cont ...(assets ? { assets } : {}), }, tsConfig, + initialPath, + open, }; return standaloneOptions; diff --git a/code/frameworks/angular/src/builders/start-storybook/schema.json b/code/frameworks/angular/src/builders/start-storybook/schema.json index db89e94d5b4f..3bd70064ccb9 100644 --- a/code/frameworks/angular/src/builders/start-storybook/schema.json +++ b/code/frameworks/angular/src/builders/start-storybook/schema.json @@ -56,11 +56,21 @@ "description": "CI mode (skip interactive prompts, don't open browser).", "default": false }, + "open": { + "type": "boolean", + "description": "Whether to open Storybook automatically in the browser.", + "default": true + }, "quiet": { "type": "boolean", "description": "Suppress verbose build output.", "default": false }, + "enableProdMode": { + "type": "boolean", + "description": "Disable Angular's development mode, which turns off assertions and other checks within the framework.", + "default": false + }, "docs": { "type": "boolean", "description": "Starts Storybook in documentation mode. Learn more about it : https://storybook.js.org/docs/react/writing-docs/build-documentation#preview-storybooks-documentation.", @@ -109,6 +119,10 @@ "items": { "$ref": "#/definitions/assetPattern" } + }, + "initialPath": { + "type": "string", + "description": "URL path to be appended when visiting Storybook for the first time" } }, "additionalProperties": false, diff --git a/code/frameworks/angular/src/builders/utils/error-handler.ts b/code/frameworks/angular/src/builders/utils/error-handler.ts index f2ff150495cf..2673dbfd0b87 100644 --- a/code/frameworks/angular/src/builders/utils/error-handler.ts +++ b/code/frameworks/angular/src/builders/utils/error-handler.ts @@ -12,7 +12,7 @@ export const printErrorDetails = (error: any): void => { } else if ((error as any).stats && (error as any).stats.compilation.errors) { (error as any).stats.compilation.errors.forEach((e: any) => logger.plain(e)); } else { - logger.error(error as any); + logger.error(error); } } else if (error.compilation?.errors) { error.compilation.errors.forEach((e: any) => logger.plain(e)); diff --git a/code/frameworks/angular/src/builders/utils/standalone-options.ts b/code/frameworks/angular/src/builders/utils/standalone-options.ts index 6c9211b98aae..b77e82b372ba 100644 --- a/code/frameworks/angular/src/builders/utils/standalone-options.ts +++ b/code/frameworks/angular/src/builders/utils/standalone-options.ts @@ -10,6 +10,7 @@ export type StandaloneOptions = CLIOptions & LoadOptions & BuilderOptions & { mode?: 'static' | 'dev'; + enableProdMode: boolean; angularBrowserTarget?: string | null; angularBuilderOptions?: Record<string, any> & { styles?: StyleElement[]; diff --git a/code/frameworks/angular/src/client/angular-beta/RendererFactory.ts b/code/frameworks/angular/src/client/angular-beta/RendererFactory.ts index 48c77b4e0253..d9be786f22ff 100644 --- a/code/frameworks/angular/src/client/angular-beta/RendererFactory.ts +++ b/code/frameworks/angular/src/client/angular-beta/RendererFactory.ts @@ -42,7 +42,6 @@ export class RendererFactory { } export const getRenderType = (targetDOMNode: HTMLElement): RenderType => { - console.log(targetDOMNode); return targetDOMNode.id === 'storybook-root' ? 'canvas' : 'docs'; }; diff --git a/code/frameworks/angular/src/client/angular-beta/StorybookWrapperComponent.ts b/code/frameworks/angular/src/client/angular-beta/StorybookWrapperComponent.ts index ea4a8767556a..aa5bd589d123 100644 --- a/code/frameworks/angular/src/client/angular-beta/StorybookWrapperComponent.ts +++ b/code/frameworks/angular/src/client/angular-beta/StorybookWrapperComponent.ts @@ -52,7 +52,7 @@ export const createStorybookWrapperComponent = ({ styles: string[]; moduleMetadata: NgModuleMetadata; initialProps?: ICollection; - analyzedMetadata?: PropertyExtractor; + analyzedMetadata: PropertyExtractor; }): Type<any> => { // In ivy, a '' selector is not allowed, therefore we need to just set it to anything if // storyComponent was not provided. diff --git a/code/frameworks/angular/src/client/preview-prod.ts b/code/frameworks/angular/src/client/preview-prod.ts new file mode 100644 index 000000000000..13a257400434 --- /dev/null +++ b/code/frameworks/angular/src/client/preview-prod.ts @@ -0,0 +1,3 @@ +import { enableProdMode } from '@angular/core'; + +enableProdMode(); diff --git a/code/frameworks/angular/src/preset.ts b/code/frameworks/angular/src/preset.ts index 016e104e5a6f..ce5796d0c222 100644 --- a/code/frameworks/angular/src/preset.ts +++ b/code/frameworks/angular/src/preset.ts @@ -1,8 +1,10 @@ import { dirname, join } from 'path'; import { PresetProperty } from '@storybook/types'; import { StorybookConfig } from './types'; +import { StandaloneOptions } from './builders/utils/standalone-options'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ require.resolve('./server/framework-preset-angular-cli'), @@ -10,10 +12,18 @@ export const addons: PresetProperty<'addons', StorybookConfig> = [ require.resolve('./server/framework-preset-angular-docs'), ]; -export const previewAnnotations: StorybookConfig['previewAnnotations'] = (entries = []) => [ - ...entries, - require.resolve('./client/config'), -]; +export const previewAnnotations: StorybookConfig['previewAnnotations'] = ( + entries = [], + options +) => { + const annotations = [...entries, require.resolve('./client/config')]; + + if ((options as any as StandaloneOptions).enableProdMode) { + annotations.unshift(require.resolve('./client/preview-prod')); + } + + return annotations; +}; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { const framework = await options.presets.apply<StorybookConfig['framework']>('framework'); @@ -21,7 +31,7 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, }; diff --git a/code/frameworks/angular/src/renderer.ts b/code/frameworks/angular/src/renderer.ts index 11d729059f2f..a88691381c84 100644 --- a/code/frameworks/angular/src/renderer.ts +++ b/code/frameworks/angular/src/renderer.ts @@ -3,3 +3,4 @@ export { computesTemplateSourceFromComponent } from './client/angular-beta/Compu export { rendererFactory } from './client/render'; export { AbstractRenderer } from './client/angular-beta/AbstractRenderer'; export { getApplication } from './client/angular-beta/StorybookModule'; +export { PropertyExtractor } from './client/angular-beta/utils/PropertyExtractor'; diff --git a/code/frameworks/angular/src/server/angular-cli-webpack.js b/code/frameworks/angular/src/server/angular-cli-webpack.js index feb510df501f..76d05ff55e72 100644 --- a/code/frameworks/angular/src/server/angular-cli-webpack.js +++ b/code/frameworks/angular/src/server/angular-cli-webpack.js @@ -1,19 +1,48 @@ +/* eslint-disable global-require */ // Private angular devkit stuff const { generateI18nBrowserWebpackConfigFromContext, } = require('@angular-devkit/build-angular/src/utils/webpack-browser-config'); -const { - getCommonConfig, - getStylesConfig, - getDevServerConfig, - getTypeScriptConfig, -} = require('@angular-devkit/build-angular/src/webpack/configs'); const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const { filterOutStylingRules } = require('./utils/filter-out-styling-rules'); const { default: StorybookNormalizeAngularEntryPlugin, } = require('./plugins/storybook-normalize-angular-entry-plugin'); +const getAngularWebpackUtils = () => { + try { + // Angular < 16.1.0 + const { + getCommonConfig, + getStylesConfig, + getDevServerConfig, + getTypeScriptConfig, + } = require('@angular-devkit/build-angular/src/webpack/configs'); + + return { + getCommonConfig, + getStylesConfig, + getDevServerConfig, + getTypeScriptConfig, + }; + } catch (e) { + // Angular > 16.1.0 + const { + getCommonConfig, + getStylesConfig, + getDevServerConfig, + getTypeScriptConfig, + } = require('@angular-devkit/build-angular/src/tools/webpack/configs'); + + return { + getCommonConfig, + getStylesConfig, + getDevServerConfig, + getTypeScriptConfig, + }; + } +}; + /** * Extract webpack config from angular-cli 13.x.x * ⚠️ This file is in JavaScript to not use TypeScript. Because current storybook TypeScript version is not compatible with Angular CLI. @@ -26,6 +55,8 @@ exports.getWebpackConfig = async (baseConfig, { builderOptions, builderContext } /** * Get angular-cli Webpack config */ + const { getCommonConfig, getStylesConfig, getDevServerConfig, getTypeScriptConfig } = + getAngularWebpackUtils(); const { config: cliConfig } = await generateI18nBrowserWebpackConfigFromContext( { // Default options diff --git a/code/frameworks/angular/src/server/framework-preset-angular-ivy.ts b/code/frameworks/angular/src/server/framework-preset-angular-ivy.ts index 5d22cf4210cc..91f9eb31c110 100644 --- a/code/frameworks/angular/src/server/framework-preset-angular-ivy.ts +++ b/code/frameworks/angular/src/server/framework-preset-angular-ivy.ts @@ -1,7 +1,7 @@ import { Configuration } from 'webpack'; -import { VERSION } from '@angular/core'; import * as path from 'path'; import { Preset } from '@storybook/types'; +import fs from 'fs'; import { PresetOptions } from './preset-options'; import { AngularOptions } from '../types'; @@ -50,9 +50,13 @@ export const runNgcc = async () => { }; export const webpack = async (webpackConfig: Configuration, options: PresetOptions) => { + const packageJsonPath = require.resolve('@angular/core/package.json'); + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + const VERSION = packageJson.version; const framework = await options.presets.apply<Preset>('framework'); const angularOptions = (typeof framework === 'object' ? framework.options : {}) as AngularOptions; - const isAngular16OrNewer = parseInt(VERSION.major, 10) >= 16; + const angularMajorVersion = VERSION.split('.')[0]; + const isAngular16OrNewer = parseInt(angularMajorVersion, 10) >= 16; // Default to true, if undefined if (angularOptions.enableIvy === false) { diff --git a/code/frameworks/angular/src/typings.d.ts b/code/frameworks/angular/src/typings.d.ts index f934e349fc76..a1bde958b56d 100644 --- a/code/frameworks/angular/src/typings.d.ts +++ b/code/frameworks/angular/src/typings.d.ts @@ -12,12 +12,7 @@ declare var __STORYBOOK_STORY_STORE__: any; declare var CHANNEL_OPTIONS: any; declare var DOCS_OPTIONS: any; -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var IS_STORYBOOK: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; diff --git a/code/frameworks/angular/template/components/form.component.ts b/code/frameworks/angular/template/components/form.component.ts index 2bc4c00298e8..b3415c745430 100644 --- a/code/frameworks/angular/template/components/form.component.ts +++ b/code/frameworks/angular/template/components/form.component.ts @@ -6,7 +6,7 @@ import { Component, Output, EventEmitter } from '@angular/core'; <form id="interaction-test-form" (submit)="handleSubmit($event)"> <label> Enter Value - <input type="text" data-testid="value" [value]="value" required /> + <input type="text" data-testid="value" [(ngModel)]="value" required /> </label> <button type="submit">Submit</button> <p *ngIf="complete">Completed!!</p> diff --git a/code/frameworks/angular/template/stories/argTypes/doc-injectable/doc-injectable.stories.ts b/code/frameworks/angular/template/stories/argTypes/doc-injectable/doc-injectable.stories.ts index d662a3de255f..eca5e10fb11d 100644 --- a/code/frameworks/angular/template/stories/argTypes/doc-injectable/doc-injectable.stories.ts +++ b/code/frameworks/angular/template/stories/argTypes/doc-injectable/doc-injectable.stories.ts @@ -2,9 +2,6 @@ import { DocInjectableService } from './doc-injectable.service'; export default { component: DocInjectableService, - parameters: { - controls: { hideNoControlsWarning: true }, - }, }; const modules = { diff --git a/code/frameworks/angular/template/stories/argTypes/doc-pipe/doc-pipe.stories.ts b/code/frameworks/angular/template/stories/argTypes/doc-pipe/doc-pipe.stories.ts index ba6f0f282f63..6ab616f16ee2 100644 --- a/code/frameworks/angular/template/stories/argTypes/doc-pipe/doc-pipe.stories.ts +++ b/code/frameworks/angular/template/stories/argTypes/doc-pipe/doc-pipe.stories.ts @@ -2,9 +2,6 @@ import { DocPipe } from './doc-pipe.pipe'; export default { component: DocPipe, - parameters: { - controls: { hideNoControlsWarning: true }, - }, }; const modules = { diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 3838d330b116..9fbc1ba59c01 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { @@ -21,22 +21,23 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -59,5 +60,5 @@ "access": "public" }, "bundler": {}, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/ember/src/preset.ts b/code/frameworks/ember/src/preset.ts index bedd1cdb3ebd..6524132780e5 100644 --- a/code/frameworks/ember/src/preset.ts +++ b/code/frameworks/ember/src/preset.ts @@ -2,7 +2,8 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ require.resolve('./server/framework-preset-babel-ember'), @@ -15,7 +16,7 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, }; diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 4778d4216fbe..145d2f514a28 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,26 +37,24 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.1.0-alpha.17", - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channel-websocket": "7.1.0-alpha.17", - "@storybook/client-api": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/html": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview-web": "7.1.0-alpha.17", - "magic-string": "^0.27.0" + "@storybook/addons": "workspace:*", + "@storybook/builder-vite": "workspace:*", + "@storybook/client-api": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/html": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview-web": "workspace:*", + "magic-string": "^0.30.0" }, "devDependencies": { "@types/node": "^16.0.0", @@ -75,5 +73,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/html-vite/src/preset.ts b/code/frameworks/html-vite/src/preset.ts index 814831785a39..4ae871b6e589 100644 --- a/code/frameworks/html-vite/src/preset.ts +++ b/code/frameworks/html-vite/src/preset.ts @@ -1,7 +1,12 @@ import type { PresetProperty } from '@storybook/types'; +import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; +function getAbsolutePath<I extends string>(value: I): I { + return dirname(require.resolve(join(value, 'package.json'))) as any; +} + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/html', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/html'), }; diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 9b8d1c7ade15..8006517f0e71 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,21 +37,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/html": "7.1.0-alpha.17", - "@storybook/preset-html-webpack": "7.1.0-alpha.17", + "@storybook/html": "workspace:*", + "@storybook/preset-html-webpack": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -75,5 +75,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/html-webpack5/src/preset.ts b/code/frameworks/html-webpack5/src/preset.ts index 57093fdba5d3..969bee1b1e63 100644 --- a/code/frameworks/html-webpack5/src/preset.ts +++ b/code/frameworks/html-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-html-webpack'), + getAbsolutePath('@storybook/preset-html-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,9 +15,9 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/html'), + renderer: getAbsolutePath('@storybook/html'), }; }; diff --git a/code/frameworks/nextjs/README.md b/code/frameworks/nextjs/README.md index fc3b7b9b2e46..4d9ea8542470 100644 --- a/code/frameworks/nextjs/README.md +++ b/code/frameworks/nextjs/README.md @@ -28,7 +28,7 @@ - [Set `nextjs.appDirectory` to `true`](#set-nextjsappdirectory-to-true) - [Overriding defaults](#overriding-defaults-1) - [Global Defaults](#global-defaults-1) - - [`useSelectedLayoutSegment` and `useSelectedLayoutSegments` hook](#useselectedlayoutsegment-and-useselectedlayoutsegments-hook) + - [`useSelectedLayoutSegment` `useSelectedLayoutSegments` and `useParams` hook](#useselectedlayoutsegment-useselectedlayoutsegments-and-useparams-hook) - [Default Navigation Context](#default-navigation-context) - [Actions Integration Caveats](#actions-integration-caveats-1) - [Next.js Head](#nextjs-head) @@ -44,7 +44,7 @@ - [FAQ](#faq) - [Stories for pages/components which fetch data](#stories-for-pagescomponents-which-fetch-data) - [Statically imported images won't load](#statically-imported-images-wont-load) - - [Module not found: Error: Can't resolve \[package name\]](#module-not-found-error-cant-resolve-package-name) + - [Module not found: Error: Can't resolve `package name`](#module-not-found-error-cant-resolve-package-name) - [What if I'm using the Vite builder?](#what-if-im-using-the-vite-builder) - [Acknowledgements](#acknowledgements) @@ -503,9 +503,9 @@ export const parameters = { }; ``` -#### `useSelectedLayoutSegment` and `useSelectedLayoutSegments` hook +#### `useSelectedLayoutSegment` `useSelectedLayoutSegments` and `useParams` hook -The `useSelectedLayoutSegment` and `useSelectedLayoutSegments` hooks are supported in Storybook. You have to set the `nextjs.navigation.segments` parameter to return the segments you want to use. +The `useSelectedLayoutSegment` `useSelectedLayoutSegments` and `useParams` hooks are supported in Storybook. You have to set the `nextjs.navigation.segments` parameter to return the segments or the params you want to use. ```js // SomeComponentThatUsesTheNavigation.stories.js @@ -526,11 +526,46 @@ export default { export const Example = {}; // SomeComponentThatUsesTheNavigation.js -import { useSelectedLayoutSegment, useSelectedLayoutSegments } from 'next/navigation'; +import { useSelectedLayoutSegment, useSelectedLayoutSegments, useParams } from 'next/navigation'; export default function SomeComponentThatUsesTheNavigation() { const segment = useSelectedLayoutSegment(); // dashboard const segments = useSelectedLayoutSegments(); // ["dashboard", "analytics"] + const params = useParams(); // {} + ... +} +``` + +To use `useParams`, you have to use a two string elements array for a segment, the first array element is the param key and the second array element is the param value. + +```js +// SomeComponentThatUsesParams.stories.js +import SomeComponentThatUsesParams from './SomeComponentThatUsesParams'; + +export default { + component: SomeComponentThatUsesParams, + parameters: { + nextjs: { + appDirectory: true, + navigation: { + segments: [ + ['slug', 'hello'], + ['framework', 'nextjs'], + ] + }, + }, + }, +}; + +export const Example = {}; + +// SomeComponentThatUsesParams.js +import { useSelectedLayoutSegment, useSelectedLayoutSegments, useParams } from 'next/navigation'; + +export default function SomeComponentThatUsesParams() { + const segment = useSelectedLayoutSegment(); // hello + const segments = useSelectedLayoutSegments(); // ["hello", "nextjs"] + const params = useParams(); // { slug: "hello", framework: "nextjs" } ... } ``` @@ -792,10 +827,15 @@ Below is an example of how to add svgr support to Storybook with this framework. export default { // ... webpackFinal: async (config) => { + config.module = config.module || {}; + config.module.rules = config.module.rules || []; + // This modifies the existing image rule to exclude .svg files // since you want to handle those files with @svgr/webpack - const imageRule = config.module.rules.find((rule) => rule.test.test('.svg')); - imageRule.exclude = /\.svg$/; + const imageRule = config.module.rules.find((rule) => rule?.['test']?.test('.svg')); + if (imageRule) { + imageRule['exclude'] = /\.svg$/; + } // Configure .svg files to be loaded with @svgr/webpack config.module.rules.push({ @@ -930,7 +970,7 @@ Therefore, if something in storybook isn't showing the image properly, make sure See [local images](https://nextjs.org/docs/basic-features/image-optimization#local-images) for more detail on how Next.js treats static image imports. -#### Module not found: Error: Can't resolve [package name] +#### Module not found: Error: Can't resolve `package name` You might get this if you're using Yarn v2 or v3. See [Notes for Yarn v2 and v3 users](#notes-for-yarn-v2-and-v3-users) for more details. diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index ec5483945b95..acdeb7177946 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Next.js", "keywords": [ "storybook", @@ -48,41 +48,44 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { + "@babel/core": "^7.22.9", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-numeric-separator": "^7.18.6", "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-transform-runtime": "^7.21.0", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", - "@babel/runtime": "^7.21.0", - "@storybook/addon-actions": "7.1.0-alpha.17", - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preset-react-webpack": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/react": "7.1.0-alpha.17", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@storybook/addon-actions": "workspace:*", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preset-react-webpack": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/react": "workspace:*", "@types/node": "^16.0.0", "css-loader": "^6.7.3", "find-up": "^5.0.0", "fs-extra": "^11.1.0", "image-size": "^1.0.0", "loader-utils": "^3.2.0", + "node-polyfill-webpack-plugin": "^2.0.1", "pnp-webpack-plugin": "^1.7.0", "postcss": "^8.4.21", "postcss-loader": "^7.0.2", @@ -93,20 +96,18 @@ "styled-jsx": "5.1.1", "ts-dedent": "^2.0.0", "tsconfig-paths": "^4.0.0", - "tsconfig-paths-webpack-plugin": "^3.5.2" + "tsconfig-paths-webpack-plugin": "^4.0.1" }, "devDependencies": { - "@babel/core": "^7.20.5", - "@babel/types": "^7.20.5", + "@babel/types": "^7.22.5", "@types/babel__core": "^7", "@types/babel__plugin-transform-runtime": "^7", "@types/babel__preset-env": "^7", - "next": "^13.2.4", + "next": "^13.4.8", "typescript": "^4.9.3", "webpack": "^5.65.0" }, "peerDependencies": { - "@babel/core": "^7.11.5", "@next/font": "^13.0.0", "next": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -114,9 +115,6 @@ "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, "@next/font": { "optional": true }, @@ -142,9 +140,18 @@ "./src/preset.ts", "./src/preview.tsx", "./src/next-image-loader-stub.ts", + "./src/images/context.ts", + "./src/images/next-future-image.tsx", + "./src/images/next-legacy-image.tsx", + "./src/images/next-image.tsx", "./src/font/webpack/loader/storybook-nextjs-font-loader.ts" ], + "externals": [ + "sb-original/next/image", + "sb-original/next/future/image", + "sb-original/next/legacy/image" + ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/nextjs/src/babel/plugins/jsx-pragma.ts b/code/frameworks/nextjs/src/babel/plugins/jsx-pragma.ts index bb2daeaf1931..419b178d576f 100644 --- a/code/frameworks/nextjs/src/babel/plugins/jsx-pragma.ts +++ b/code/frameworks/nextjs/src/babel/plugins/jsx-pragma.ts @@ -65,7 +65,9 @@ export default function jsxPragma({ types: t }: { types: typeof BabelTypes }): P } for (const declar of newPath.get('declarations')) { - path.scope.registerBinding(newPath.node.kind, declar as NodePath<BabelTypes.Node>); + const kind = (['var', 'let', 'const'].find((k) => newPath.node.kind === k) || + 'const') as 'var' | 'let' | 'const'; + path.scope.registerBinding(kind, declar as NodePath<BabelTypes.Node>); } } diff --git a/code/frameworks/nextjs/src/babel/plugins/next-page-config.ts b/code/frameworks/nextjs/src/babel/plugins/next-page-config.ts index 29f3e9d35973..5b2ab355d2c2 100644 --- a/code/frameworks/nextjs/src/babel/plugins/next-page-config.ts +++ b/code/frameworks/nextjs/src/babel/plugins/next-page-config.ts @@ -47,19 +47,15 @@ export default function nextPageConfig({ types: t }: { types: typeof BabelTypes { ExportDeclaration(exportPath, exportState) { if ( - BabelTypes.isExportNamedDeclaration(exportPath) && - (exportPath.node as BabelTypes.ExportNamedDeclaration).specifiers?.some( - (specifier) => { - return ( - (t.isIdentifier(specifier.exported) - ? specifier.exported.name - : specifier.exported.value) === CONFIG_KEY - ); - } - ) && - BabelTypes.isStringLiteral( - (exportPath.node as BabelTypes.ExportNamedDeclaration).source - ) + exportPath.isExportNamedDeclaration() && + exportPath.node.specifiers?.some((specifier) => { + return ( + (t.isIdentifier(specifier.exported) + ? specifier.exported.name + : specifier.exported.value) === CONFIG_KEY + ); + }) && + BabelTypes.isStringLiteral(exportPath.node.source) ) { throw new Error(errorMessage(exportState, 'Expected object but got export from')); } diff --git a/code/frameworks/nextjs/src/babel/plugins/next-ssg-transform.ts b/code/frameworks/nextjs/src/babel/plugins/next-ssg-transform.ts index 6140bcb1b749..5fa80c7e1250 100644 --- a/code/frameworks/nextjs/src/babel/plugins/next-ssg-transform.ts +++ b/code/frameworks/nextjs/src/babel/plugins/next-ssg-transform.ts @@ -312,8 +312,8 @@ export default function nextTransformSsg({ ++count; if ( - t.isAssignmentExpression(sweepPath.parentPath) || - t.isVariableDeclarator(sweepPath.parentPath) + sweepPath.parentPath.isAssignmentExpression() || + sweepPath.parentPath.isVariableDeclaration() ) { sweepPath.parentPath.remove(); } else { diff --git a/code/frameworks/nextjs/src/css/webpack.ts b/code/frameworks/nextjs/src/css/webpack.ts index f673aeaf36f8..8f5ed1bfcae3 100644 --- a/code/frameworks/nextjs/src/css/webpack.ts +++ b/code/frameworks/nextjs/src/css/webpack.ts @@ -11,7 +11,12 @@ import { scopedResolve } from '../utils'; export const configureCss = (baseConfig: WebpackConfig, nextConfig: NextConfig): void => { const rules = baseConfig.module?.rules; rules?.forEach((rule, i) => { - if (typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.css')) { + if ( + rule && + typeof rule !== 'string' && + rule.test instanceof RegExp && + rule.test.test('test.css') + ) { rules[i] = { test: /\.css$/, use: [ diff --git a/code/frameworks/nextjs/src/font/webpack/loader/local/get-font-face-declarations.ts b/code/frameworks/nextjs/src/font/webpack/loader/local/get-font-face-declarations.ts index 2e0ddeefc53c..20e1df8deeb2 100644 --- a/code/frameworks/nextjs/src/font/webpack/loader/local/get-font-face-declarations.ts +++ b/code/frameworks/nextjs/src/font/webpack/loader/local/get-font-face-declarations.ts @@ -29,7 +29,7 @@ export async function getFontFaceDeclarations(options: LoaderOptions, rootContex return `@font-face { font-family: ${id}; - src: url(${localFontPath}); + src: url(.${localFontPath}); }`; } return localFontSrc @@ -38,7 +38,7 @@ export async function getFontFaceDeclarations(options: LoaderOptions, rootContex return `@font-face { font-family: ${id}; - src: url(${localFontPath}); + src: url(.${localFontPath}); ${font.weight ? `font-weight: ${font.weight};` : ''} ${font.style ? `font-style: ${font.style};` : ''} }`; diff --git a/code/frameworks/nextjs/src/font/webpack/loader/utils/get-css-meta.ts b/code/frameworks/nextjs/src/font/webpack/loader/utils/get-css-meta.ts index aa816e05faf4..7be59c01c486 100644 --- a/code/frameworks/nextjs/src/font/webpack/loader/utils/get-css-meta.ts +++ b/code/frameworks/nextjs/src/font/webpack/loader/utils/get-css-meta.ts @@ -37,7 +37,7 @@ export function getCSSMeta(options: Options) { } function getClassName({ styles, weights, fontFamily }: Options) { - const font = fontFamily.replace(' ', '-').toLowerCase(); + const font = fontFamily.replaceAll(' ', '-').toLowerCase(); const style = isNextCSSPropertyValid(styles) ? styles[0] : null; const weight = isNextCSSPropertyValid(weights) ? weights[0] : null; diff --git a/code/frameworks/nextjs/src/images/next-future-image.tsx b/code/frameworks/nextjs/src/images/next-future-image.tsx new file mode 100644 index 000000000000..559d2e857d39 --- /dev/null +++ b/code/frameworks/nextjs/src/images/next-future-image.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type * as _NextImage from 'next/image'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore import is aliased in webpack config +import OriginalNextFutureImage from 'sb-original/next/future/image'; +import { ImageContext } from './context'; +import { defaultLoader } from './next-image-default-loader'; + +function NextFutureImage(props: _NextImage.ImageProps) { + const imageParameters = React.useContext(ImageContext); + + return ( + <OriginalNextFutureImage + {...imageParameters} + {...props} + loader={props.loader ?? defaultLoader} + /> + ); +} + +export default NextFutureImage; diff --git a/code/frameworks/nextjs/src/images/next-image-default-loader.tsx b/code/frameworks/nextjs/src/images/next-image-default-loader.tsx new file mode 100644 index 000000000000..6029390979ac --- /dev/null +++ b/code/frameworks/nextjs/src/images/next-image-default-loader.tsx @@ -0,0 +1,28 @@ +import type * as _NextImage from 'next/image'; + +export const defaultLoader = ({ src, width, quality }: _NextImage.ImageLoaderProps) => { + const missingValues = []; + if (!src) { + missingValues.push('src'); + } + + if (!width) { + missingValues.push('width'); + } + + if (missingValues.length > 0) { + throw new Error( + `Next Image Optimization requires ${missingValues.join( + ', ' + )} to be provided. Make sure you pass them as props to the \`next/image\` component. Received: ${JSON.stringify( + { + src, + width, + quality, + } + )}` + ); + } + + return `${src}?w=${width}&q=${quality ?? 75}`; +}; diff --git a/code/frameworks/nextjs/src/images/next-image-stub.tsx b/code/frameworks/nextjs/src/images/next-image-stub.tsx deleted file mode 100644 index 3fc92c7b29a6..000000000000 --- a/code/frameworks/nextjs/src/images/next-image-stub.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* eslint-disable no-underscore-dangle, @typescript-eslint/no-non-null-assertion */ -import * as React from 'react'; -import type * as _NextImage from 'next/image'; -import type * as _NextLegacyImage from 'next/legacy/image'; -import semver from 'semver'; -import { ImageContext } from './context'; - -const defaultLoader = ({ src, width, quality }: _NextImage.ImageLoaderProps) => { - const missingValues = []; - if (!src) { - missingValues.push('src'); - } - - if (!width) { - missingValues.push('width'); - } - - if (missingValues.length > 0) { - throw new Error( - `Next Image Optimization requires ${missingValues.join( - ', ' - )} to be provided. Make sure you pass them as props to the \`next/image\` component. Received: ${JSON.stringify( - { - src, - width, - quality, - } - )}` - ); - } - - return `${src}?w=${width}&q=${quality ?? 75}`; -}; - -const NextImage = require('next/image') as typeof _NextImage; - -const OriginalNextImage = NextImage.default; - -Object.defineProperty(NextImage, 'default', { - configurable: true, - value: (props: _NextImage.ImageProps) => { - const imageParameters = React.useContext(ImageContext); - - return ( - <OriginalNextImage {...imageParameters} {...props} loader={props.loader ?? defaultLoader} /> - ); - }, -}); - -if (semver.satisfies(process.env.__NEXT_VERSION!, '^13.0.0')) { - const LegacyNextImage = require('next/legacy/image') as typeof _NextLegacyImage; - const OriginalNextLegacyImage = LegacyNextImage.default; - - Object.defineProperty(OriginalNextLegacyImage, 'default', { - configurable: true, - value: (props: _NextLegacyImage.ImageProps) => { - const imageParameters = React.useContext(ImageContext); - - return ( - <OriginalNextLegacyImage - {...imageParameters} - {...props} - loader={props.loader ?? defaultLoader} - /> - ); - }, - }); -} - -if (semver.satisfies(process.env.__NEXT_VERSION!, '^12.2.0')) { - const NextFutureImage = require('next/future/image') as typeof _NextImage; - const OriginalNextFutureImage = NextFutureImage.default; - - Object.defineProperty(OriginalNextFutureImage, 'default', { - configurable: true, - value: (props: _NextImage.ImageProps) => { - const imageParameters = React.useContext(ImageContext); - - return ( - <OriginalNextFutureImage - {...imageParameters} - {...props} - loader={props.loader ?? defaultLoader} - /> - ); - }, - }); -} diff --git a/code/frameworks/nextjs/src/images/next-image.tsx b/code/frameworks/nextjs/src/images/next-image.tsx new file mode 100644 index 000000000000..74e252d93a7d --- /dev/null +++ b/code/frameworks/nextjs/src/images/next-image.tsx @@ -0,0 +1,17 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore import is aliased in webpack config +import OriginalNextImage from 'sb-original/next/image'; +import type * as _NextImage from 'next/image'; +import React from 'react'; +import { ImageContext } from './context'; +import { defaultLoader } from './next-image-default-loader'; + +const MockedNextImage = (props: _NextImage.ImageProps) => { + const imageParameters = React.useContext(ImageContext); + + return ( + <OriginalNextImage {...imageParameters} {...props} loader={props.loader ?? defaultLoader} /> + ); +}; + +export default MockedNextImage; diff --git a/code/frameworks/nextjs/src/images/next-legacy-image.tsx b/code/frameworks/nextjs/src/images/next-legacy-image.tsx new file mode 100644 index 000000000000..8d899cc341a5 --- /dev/null +++ b/code/frameworks/nextjs/src/images/next-legacy-image.tsx @@ -0,0 +1,21 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore import is aliased in webpack config +import OriginalNextLegacyImage from 'sb-original/next/legacy/image'; +import type * as _NextLegacyImage from 'next/legacy/image'; +import React from 'react'; +import { ImageContext } from './context'; +import { defaultLoader } from './next-image-default-loader'; + +function NextLegacyImage(props: _NextLegacyImage.ImageProps) { + const imageParameters = React.useContext(ImageContext); + + return ( + <OriginalNextLegacyImage + {...imageParameters} + {...props} + loader={props.loader ?? defaultLoader} + /> + ); +} + +export default NextLegacyImage; diff --git a/code/frameworks/nextjs/src/images/webpack.ts b/code/frameworks/nextjs/src/images/webpack.ts index df6ecacde83e..e6b91f0712d3 100644 --- a/code/frameworks/nextjs/src/images/webpack.ts +++ b/code/frameworks/nextjs/src/images/webpack.ts @@ -1,20 +1,51 @@ import semver from 'semver'; import type { Configuration as WebpackConfig, RuleSetRule } from 'webpack'; -import { addScopedAlias, getNextjsVersion } from '../utils'; +import type { NextConfig } from 'next'; +import path from 'path'; +import { getNextjsVersion } from '../utils'; -export const configureImages = (baseConfig: WebpackConfig): void => { - configureStaticImageImport(baseConfig); - addScopedAlias(baseConfig, 'next/image'); +export const configureImages = (baseConfig: WebpackConfig, nextConfig: NextConfig): void => { + configureStaticImageImport(baseConfig, nextConfig); + configureImageDefaults(baseConfig); }; -const configureStaticImageImport = (baseConfig: WebpackConfig): void => { +const fallbackFilename = 'static/media/[path][name][ext]'; + +const configureImageDefaults = (baseConfig: WebpackConfig): void => { + const version = getNextjsVersion(); + const resolve = baseConfig.resolve ?? {}; + resolve.alias = { + ...resolve.alias, + 'sb-original/next/image': require.resolve('next/image'), + 'next/image': path.resolve(__dirname, './images/next-image'), + }; + + if (semver.satisfies(version, '^13.0.0')) { + resolve.alias = { + ...resolve.alias, + 'sb-original/next/legacy/image': require.resolve('next/legacy/image'), + 'next/legacy/image': path.resolve(__dirname, './images/next-legacy-image'), + }; + } + + if (semver.satisfies(version, '^12.2.0')) { + resolve.alias = { + ...resolve.alias, + 'sb-original/next/future/image': require.resolve('next/future/image'), + 'next/future/image': path.resolve(__dirname, './images/next-future-image'), + }; + } +}; + +const configureStaticImageImport = (baseConfig: WebpackConfig, nextConfig: NextConfig): void => { const version = getNextjsVersion(); if (semver.lt(version, '11.0.0')) return; const rules = baseConfig.module?.rules; const assetRule = rules?.find( - (rule) => typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.jpg') + (rule) => + rule && typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.jpg') ) as RuleSetRule; if (!assetRule) { @@ -30,7 +61,8 @@ const configureStaticImageImport = (baseConfig: WebpackConfig): void => { { loader: require.resolve('@storybook/nextjs/next-image-loader-stub.js'), options: { - filename: assetRule.generator?.filename, + filename: assetRule.generator?.filename ?? fallbackFilename, + nextConfig, }, }, ], @@ -40,7 +72,7 @@ const configureStaticImageImport = (baseConfig: WebpackConfig): void => { issuer: /\.(css|scss|sass)$/, type: 'asset/resource', generator: { - filename: assetRule.generator?.filename, + filename: assetRule.generator?.filename ?? fallbackFilename, }, }); }; diff --git a/code/frameworks/nextjs/src/next-image-loader-stub.ts b/code/frameworks/nextjs/src/next-image-loader-stub.ts index 9bb282834f10..04a97fdead81 100644 --- a/code/frameworks/nextjs/src/next-image-loader-stub.ts +++ b/code/frameworks/nextjs/src/next-image-loader-stub.ts @@ -2,13 +2,15 @@ import { interpolateName } from 'loader-utils'; import imageSizeOf from 'image-size'; import type { RawLoaderDefinition } from 'webpack'; +import type { NextConfig } from 'next'; interface LoaderOptions { filename: string; + nextConfig: NextConfig; } const nextImageLoaderStub: RawLoaderDefinition<LoaderOptions> = function (content) { - const { filename } = this.getOptions(); + const { filename, nextConfig } = this.getOptions(); const outputPath = interpolateName(this, filename.replace('[ext]', '.[ext]'), { context: this.rootContext, content, @@ -18,6 +20,10 @@ const nextImageLoaderStub: RawLoaderDefinition<LoaderOptions> = function (conten const { width, height } = imageSizeOf(this.resourcePath); + if (nextConfig.images?.disableStaticImages) { + return `const src = '${outputPath}'; export default src;`; + } + return `export default ${JSON.stringify({ src: outputPath, height, diff --git a/code/frameworks/nextjs/src/nodePolyfills/webpack.ts b/code/frameworks/nextjs/src/nodePolyfills/webpack.ts new file mode 100644 index 000000000000..fe9f5d9059a7 --- /dev/null +++ b/code/frameworks/nextjs/src/nodePolyfills/webpack.ts @@ -0,0 +1,17 @@ +import type { Configuration } from 'webpack'; +import NodePolyfillPlugin from 'node-polyfill-webpack-plugin'; + +export const configureNodePolyfills = (baseConfig: Configuration) => { + // This is added as a way to avoid issues caused by Next.js 13.4.3 + // introduced by gzip-size + baseConfig.plugins = [...(baseConfig.plugins || []), new NodePolyfillPlugin()]; + + baseConfig.resolve = { + ...baseConfig.resolve, + fallback: { + fs: false, + }, + }; + + return baseConfig; +}; diff --git a/code/frameworks/nextjs/src/preset.ts b/code/frameworks/nextjs/src/preset.ts index dc2469e4bb24..238ba2bb170e 100644 --- a/code/frameworks/nextjs/src/preset.ts +++ b/code/frameworks/nextjs/src/preset.ts @@ -16,6 +16,7 @@ import { configureNextImport } from './nextImport/webpack'; import TransformFontImports from './font/babel'; import { configureNextFont } from './font/webpack/configureNextFont'; import nextBabelPreset from './babel/preset'; +import { configureNodePolyfills } from './nodePolyfills/webpack'; export const addons: PresetProperty<'addons', StorybookConfig> = [ dirname(require.resolve(join('@storybook/preset-react-webpack', 'package.json'))), @@ -147,9 +148,10 @@ export const webpackFinal: StorybookConfig['webpackFinal'] = async (baseConfig, configureRuntimeNextjsVersionResolution(baseConfig); configureImports({ baseConfig, configDir: options.configDir }); configureCss(baseConfig, nextConfig); - configureImages(baseConfig); + configureImages(baseConfig, nextConfig); configureRouting(baseConfig); configureStyledJsx(baseConfig); + configureNodePolyfills(baseConfig); return baseConfig; }; diff --git a/code/frameworks/nextjs/src/preview.tsx b/code/frameworks/nextjs/src/preview.tsx index d089aa27f0d9..9f30af9d787d 100644 --- a/code/frameworks/nextjs/src/preview.tsx +++ b/code/frameworks/nextjs/src/preview.tsx @@ -3,7 +3,6 @@ import './config/preview'; import { ImageDecorator } from './images/decorator'; import { RouterDecorator } from './routing/decorator'; import { StyledJsxDecorator } from './styledJsx/decorator'; -import './images/next-image-stub'; import { HeadManagerDecorator } from './head-manager/decorator'; function addNextHeadCount() { diff --git a/code/frameworks/nextjs/src/routing/app-router-provider.tsx b/code/frameworks/nextjs/src/routing/app-router-provider.tsx index cda802a41075..75c6c5629b87 100644 --- a/code/frameworks/nextjs/src/routing/app-router-provider.tsx +++ b/code/frameworks/nextjs/src/routing/app-router-provider.tsx @@ -2,12 +2,13 @@ import React from 'react'; import type { LayoutRouterContext as TLayoutRouterContext, AppRouterContext as TAppRouterContext, + GlobalLayoutRouterContext as TGlobalLayoutRouterContext, } from 'next/dist/shared/lib/app-router-context'; import type { PathnameContext as TPathnameContext, SearchParamsContext as TSearchParamsContext, } from 'next/dist/shared/lib/hooks-client-context'; -import type { FlightRouterState } from 'next/dist/server/app-render'; +import type { FlightRouterState } from 'next/dist/server/app-render/types'; import type { RouteParams } from './types'; /** @@ -21,17 +22,21 @@ let AppRouterContext: typeof TAppRouterContext; let LayoutRouterContext: typeof TLayoutRouterContext; let PathnameContext: typeof TPathnameContext; let SearchParamsContext: typeof TSearchParamsContext; +let GlobalLayoutRouterContext: typeof TGlobalLayoutRouterContext; try { AppRouterContext = require('next/dist/shared/lib/app-router-context').AppRouterContext; LayoutRouterContext = require('next/dist/shared/lib/app-router-context').LayoutRouterContext; PathnameContext = require('next/dist/shared/lib/hooks-client-context').PathnameContext; SearchParamsContext = require('next/dist/shared/lib/hooks-client-context').SearchParamsContext; + GlobalLayoutRouterContext = + require('next/dist/shared/lib/app-router-context').GlobalLayoutRouterContext; } catch { AppRouterContext = React.Fragment as any; LayoutRouterContext = React.Fragment as any; PathnameContext = React.Fragment as any; SearchParamsContext = React.Fragment as any; + GlobalLayoutRouterContext = React.Fragment as any; } type AppRouterProviderProps = { @@ -52,43 +57,63 @@ const getParallelRoutes = (segmentsList: Array<string>): FlightRouterState => { const AppRouterProvider: React.FC<AppRouterProviderProps> = ({ children, action, routeParams }) => { const { pathname, query, segments = [], ...restRouteParams } = routeParams; + const tree: FlightRouterState = [pathname, { children: getParallelRoutes([...segments]) }]; + + // https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/app-router.tsx#L436 return ( - <AppRouterContext.Provider - value={{ - push(...args) { - action('nextNavigation.push')(...args); - }, - replace(...args) { - action('nextNavigation.replace')(...args); - }, - forward(...args) { - action('nextNavigation.forward')(...args); - }, - back(...args) { - action('nextNavigation.back')(...args); - }, - prefetch(...args) { - action('nextNavigation.prefetch')(...args); - }, - refresh: () => { - action('nextNavigation.refresh')(); - }, - ...restRouteParams, - }} - > + <PathnameContext.Provider value={pathname}> <SearchParamsContext.Provider value={new URLSearchParams(query)}> - <LayoutRouterContext.Provider + <GlobalLayoutRouterContext.Provider value={{ - childNodes: new Map(), - tree: [pathname, { children: getParallelRoutes([...segments]) }], - url: pathname, - headRenderedAboveThisLevel: true, + changeByServerResponse() { + // NOOP + }, + buildId: 'storybook', + tree, + focusAndScrollRef: { + apply: false, + hashFragment: null, + segmentPaths: [tree], + }, + nextUrl: pathname, }} > - <PathnameContext.Provider value={pathname}>{children}</PathnameContext.Provider> - </LayoutRouterContext.Provider> + <AppRouterContext.Provider + value={{ + push(...args) { + action('nextNavigation.push')(...args); + }, + replace(...args) { + action('nextNavigation.replace')(...args); + }, + forward(...args) { + action('nextNavigation.forward')(...args); + }, + back(...args) { + action('nextNavigation.back')(...args); + }, + prefetch(...args) { + action('nextNavigation.prefetch')(...args); + }, + refresh: () => { + action('nextNavigation.refresh')(); + }, + ...restRouteParams, + }} + > + <LayoutRouterContext.Provider + value={{ + childNodes: new Map(), + tree, + url: pathname, + }} + > + {children} + </LayoutRouterContext.Provider> + </AppRouterContext.Provider> + </GlobalLayoutRouterContext.Provider> </SearchParamsContext.Provider> - </AppRouterContext.Provider> + </PathnameContext.Provider> ); }; diff --git a/code/frameworks/nextjs/src/utils.ts b/code/frameworks/nextjs/src/utils.ts index 9ba051ab7e9e..c119db2dbff7 100644 --- a/code/frameworks/nextjs/src/utils.ts +++ b/code/frameworks/nextjs/src/utils.ts @@ -94,7 +94,15 @@ export const addScopedAlias = (baseConfig: WebpackConfig, name: string, alias?: * scopedResolve('styled-jsx') === '/some/path/node_modules/styled-jsx' */ export const scopedResolve = (id: string): string => { - const scopedModulePath = require.resolve(id, { paths: [path.resolve()] }); + let scopedModulePath; + + try { + // TODO: Remove in next major release (SB 8.0) and use the statement in the catch block per default instead + scopedModulePath = require.resolve(id, { paths: [path.resolve()] }); + } catch (e) { + scopedModulePath = require.resolve(id); + } + const moduleFolderStrPosition = scopedModulePath.lastIndexOf( id.replace(/\//g /* all '/' occurances */, path.sep) ); diff --git a/code/frameworks/nextjs/template/cli/js/Button.stories.js b/code/frameworks/nextjs/template/cli/js/Button.stories.js index 3bf4ad07b75d..e085f9ed312f 100644 --- a/code/frameworks/nextjs/template/cli/js/Button.stories.js +++ b/code/frameworks/nextjs/template/cli/js/Button.stories.js @@ -1,14 +1,18 @@ import { Button } from './Button'; -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { - backgroundColor: { - control: 'color', - }, + backgroundColor: { control: 'color' }, }, }; diff --git a/code/frameworks/nextjs/template/cli/js/Configure.mdx b/code/frameworks/nextjs/template/cli/js/Configure.mdx new file mode 100644 index 000000000000..e05f151edf74 --- /dev/null +++ b/code/frameworks/nextjs/template/cli/js/Configure.mdx @@ -0,0 +1,446 @@ +import { Meta } from "@storybook/blocks"; +import Image from "next/image"; + +import Github from "./assets/github.svg"; +import Discord from "./assets/discord.svg"; +import Youtube from "./assets/youtube.svg"; +import Tutorials from "./assets/tutorials.svg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; + +export const RightArrow = () => <svg + viewBox="0 0 14 14" + width="8px" + height="14px" + style={{ + marginLeft: '4px', + display: 'inline-block', + shapeRendering: 'inherit', + verticalAlign: 'middle', + fill: 'currentColor', + 'path fill': 'currentColor' + }} +> + <path d="m11.1 7.35-5.5 5.5a.5.5 0 0 1-.7-.7L10.04 7 4.9 1.85a.5.5 0 1 1 .7-.7l5.5 5.5c.2.2.2.5 0 .7Z" /> +</svg> + +<Meta title="Configure your project" /> + +<div className="sb-container"> + <div className='sb-section-title'> + # Configure your project + + Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. + </div> + <div className="sb-section"> + <div className="sb-section-item"> + <Image + src={Styling} + alt="A wall of logos representing different styling technologies" + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + /> + <h4 className="sb-section-item-heading">Add styling and CSS</h4> + <p className="sb-section-item-paragraph">Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/styling-and-css" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Context} + alt="An abstraction representing the composition of data for a component" + /> + <h4 className="sb-section-item-heading">Provide context and mocking</h4> + <p className="sb-section-item-paragraph">Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.</p> + <a + href="https://storybook.js.org/docs/react/writing-stories/decorators#context-for-mocking" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Assets} + alt="A representation of typography and image assets" + /> + <div> + <h4 className="sb-section-item-heading">Load assets and resources</h4> + <p className="sb-section-item-paragraph">To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/images-and-assets" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className="sb-container"> + <div className='sb-section-title'> + # Do more with Storybook + + Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. + </div> + + <div className="sb-section"> + <div className="sb-features-grid"> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Docs} + alt="A screenshot showing the autodocs tag being set, pointing a docs page being generated" + /> + <h4 className="sb-section-item-heading">Autodocs</h4> + <p className="sb-section-item-paragraph">Auto-generate living, + interactive reference documentation from your components and stories.</p> + <a + href="https://storybook.js.org/docs/react/writing-docs/autodocs" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Share} + alt="A browser window showing a Storybook being published to a chromatic.com URL" + /> + <h4 className="sb-section-item-heading">Publish to Chromatic</h4> + <p className="sb-section-item-paragraph">Publish your Storybook to review and collaborate with your entire team.</p> + <a + href="https://storybook.js.org/docs/react/sharing/publish-storybook#publish-storybook-with-chromatic" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={FigmaPlugin} + alt="Windows showing the Storybook plugin in Figma" + /> + <h4 className="sb-section-item-heading">Figma Plugin</h4> + <p className="sb-section-item-paragraph">Embed your stories into Figma to cross-reference the design and live + implementation in one place.</p> + <a + href="https://storybook.js.org/docs/react/sharing/design-integrations#embed-storybook-in-figma-with-the-plugin" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Testing} + alt="Screenshot of tests passing and failing" + /> + <h4 className="sb-section-item-heading">Testing</h4> + <p className="sb-section-item-paragraph">Use stories to test a component in all its variations, no matter how + complex.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/introduction" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Accessibility} + alt="Screenshot of accessibility tests passing and failing" + /> + <h4 className="sb-section-item-heading">Accessibility</h4> + <p className="sb-section-item-paragraph">Automatically test your components for a11y issues as you develop.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/accessibility-testing" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Theming} + alt="Screenshot of Storybook in light and dark mode" + /> + <h4 className="sb-section-item-heading">Theming</h4> + <p className="sb-section-item-paragraph">Theme Storybook's UI to personalize it to your project.</p> + <a + href="https://storybook.js.org/docs/react/configure/theming" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className='sb-addon'> + <div className='sb-addon-text'> + <h4>Addons</h4> + <p className="sb-section-item-paragraph">Integrate your tools with Storybook to connect workflows.</p> + <a + href="https://storybook.js.org/integrations/" + target="_blank" + >Discover all addons<RightArrow /></a> + </div> + <div className='sb-addon-img'> + <Image + width={650} + height={347} + src={AddonLibrary} + alt="Integrate your tools with Storybook to connect workflows." + /> + </div> +</div> + +<div className="sb-section sb-socials"> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Github} + alt="Github logo" + className="sb-explore-image" + /> + Join our contributors building the future of UI development. + + <a + href="https://github.com/storybookjs/storybook" + target="_blank" + >Star on GitHub<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Discord} + alt="Discord logo" + className="sb-explore-image" + /> + <div> + Get support and chat with frontend developers. + + <a + href="https://discord.gg/storybook" + target="_blank" + >Join Discord server<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Youtube} + alt="Youtube logo" + className="sb-explore-image" + /> + <div> + Watch tutorials, feature previews and interviews. + + <a + href="https://www.youtube.com/@chromaticui" + target="_blank" + >Watch on YouTube<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Tutorials} + alt="A book" + className="sb-explore-image" + /> + <p>Follow guided walkthroughs on for key workflows.</p> + + <a + href="https://storybook.js.org/tutorials/" + target="_blank" + >Discover tutorials<RightArrow /></a> + </div> +</div> + +<style> + {` + .sb-container { + margin-bottom: 48px; + } + + .sb-section { + width: 100%; + display: flex; + flex-direction: row; + gap: 20px; + } + + img { + object-fit: cover; + } + + .sb-section-title { + margin-bottom: 32px; + } + + .sb-section a:not(h1 a, h2 a, h3 a) { + font-size: 14px; + } + + .sb-section-item, .sb-grid-item { + flex: 1; + display: flex; + flex-direction: column; + } + + .sb-section-item-heading { + padding-top: 20px !important; + padding-bottom: 5px !important; + margin: 0 !important; + } + .sb-section-item-paragraph { + margin: 0; + padding-bottom: 10px; + } + + .sb-chevron { + margin-left: 5px; + } + + .sb-features-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 32px 20px; + } + + .sb-socials { + display: grid; + grid-template-columns: repeat(4, 1fr); + } + + .sb-socials p { + margin-bottom: 10px; + } + + .sb-explore-image { + max-height: 32px; + align-self: flex-start; + } + + .sb-addon { + width: 100%; + display: flex; + align-items: center; + position: relative; + background-color: #EEF3F8; + border-radius: 5px; + border: 1px solid rgba(0, 0, 0, 0.05); + background: #EEF3F8; + height: 180px; + margin-bottom: 48px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 48px; + max-width: 240px; + } + + .sb-addon-text h4 { + padding-top: 0px; + } + + .sb-addon-img { + position: absolute; + left: 345px; + top: 0; + height: 100%; + width: 200%; + overflow: hidden; + } + + .sb-addon-img img { + width: 650px; + transform: rotate(-15deg); + margin-left: 40px; + margin-top: -72px; + box-shadow: 0 0 1px rgba(255, 255, 255, 0); + backface-visibility: hidden; + } + + @media screen and (max-width: 800px) { + .sb-addon-img { + left: 300px; + } + } + + @media screen and (max-width: 600px) { + .sb-section { + flex-direction: column; + } + + .sb-features-grid { + grid-template-columns: repeat(1, 1fr); + } + + .sb-socials { + grid-template-columns: repeat(2, 1fr); + } + + .sb-addon { + height: 280px; + align-items: flex-start; + padding-top: 32px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 24px; + } + + .sb-addon-img { + right: 0; + left: 0; + top: 130px; + bottom: 0; + overflow: hidden; + height: auto; + width: 124%; + } + + .sb-addon-img img { + width: 1200px; + transform: rotate(-12deg); + margin-left: 0; + margin-top: 48px; + margin-bottom: -40px; + margin-left: -24px; + } + } + `} +</style> diff --git a/code/frameworks/nextjs/template/cli/js/Introduction.mdx b/code/frameworks/nextjs/template/cli/js/Introduction.mdx deleted file mode 100644 index 7055076a5273..000000000000 --- a/code/frameworks/nextjs/template/cli/js/Introduction.mdx +++ /dev/null @@ -1,230 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; - -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; - -<Meta title="Example/Introduction" /> - -<style> - {` - .subheading { - --mediumdark: '#999999'; - font-weight: 700; - font-size: 13px; - color: #999; - letter-spacing: 6px; - line-height: 24px; - text-transform: uppercase; - margin-bottom: 12px; - margin-top: 40px; - } - - .link-list { - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr; - row-gap: 10px; - } - - @media (min-width: 620px) { - .link-list { - row-gap: 20px; - column-gap: 20px; - grid-template-columns: 1fr 1fr; - } - } - - @media all and (-ms-high-contrast:none) { - .link-list { - display: -ms-grid; - -ms-grid-columns: 1fr 1fr; - -ms-grid-rows: 1fr 1fr; - } - } - - .link-item { - display: block; - padding: 20px; - border: 1px solid #00000010; - border-radius: 5px; - transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out; - color: #333333; - display: flex; - align-items: flex-start; - } - - .link-item:hover { - border-color: #1EA7FD50; - transform: translate3d(0, -3px, 0); - box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0; - } - - .link-item:active { - border-color: #1EA7FD; - transform: translate3d(0, 0, 0); - } - - .link-item strong { - font-weight: 700; - display: block; - margin-bottom: 2px; - } - - .link-item-img-wrapper { - height: 40px; - width: 40px; - margin-right: 15px; - flex: none; - } - - .link-item span, - .link-item p { - margin: 0; - font-size: 14px; - line-height: 20px; - } - - .tip { - display: inline-block; - border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; - background: #E7FDD8; - color: #66BF3C; - padding: 4px 12px; - margin-right: 10px; - vertical-align: top; - } - - .tip-wrapper { - font-size: 13px; - line-height: 20px; - margin-top: 40px; - margin-bottom: 40px; - } - - .tip-wrapper code { - font-size: 12px; - display: inline-block; - } - `} -</style> - -# Welcome to Storybook - -Storybook helps you build UI components in isolation from your app's business logic, data, and context. -That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. - -Browse example stories now by navigating to them in the sidebar. -View their code in the `stories` directory to learn how they work. -We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. - -<div className="subheading">Configure</div> - -<div className="link-list"> - <a - className="link-item" - href="https://storybook.js.org/docs/react/addons/addon-types" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Plugin} alt="plugin" /> - </div> - <span> - <strong>Presets for popular tools</strong> - Easy setup for TypeScript, SCSS and more. - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/webpack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={StackAlt} alt="Build" /> - </div> - <span> - <strong>Build configuration</strong> - How to customize webpack and Babel - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/styling-and-css" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Colors} alt="colors" /> - </div> - <span> - <strong>Styling</strong> - How to load and configure CSS libraries - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Flow} alt="flow" /> - </div> - <span> - <strong>Data</strong> - Providers and mocking for data libraries - </span> - </a> -</div> - -<div className="subheading">Learn</div> - -<div className="link-list"> - <a className="link-item" href="https://storybook.js.org/docs" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Repo} alt="repo" /> - </div> - <span> - <strong>Storybook documentation</strong> - Configure, customize, and extend - </span> - </a> - <a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Direction} alt="direction" /> - </div> - <span> - <strong>In-depth guides</strong> - Best practices from leading teams - </span> - </a> - <a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Code} alt="code" /> - </div> - <span> - <strong>GitHub project</strong> - View the source and add issues - </span> - </a> - <a className="link-item" href="https://discord.gg/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Comments} alt="comments" /> - </div> - <span> - <strong>Discord chat</strong> - Chat with maintainers and the community - </span> - </a> -</div> - -<div className="tip-wrapper"> - <span className="tip">Tip</span>Edit the Markdown in <code>stories/Introduction.mdx</code> -</div> diff --git a/code/frameworks/nextjs/template/cli/ts-3-8/Button.stories.ts b/code/frameworks/nextjs/template/cli/ts-3-8/Button.stories.ts index eeb81284b442..7d049116d13f 100644 --- a/code/frameworks/nextjs/template/cli/ts-3-8/Button.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-3-8/Button.stories.ts @@ -2,15 +2,19 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export const meta: Meta<typeof Button> = { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { - backgroundColor: { - control: 'color', - }, + backgroundColor: { control: 'color' }, }, }; diff --git a/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx b/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx new file mode 100644 index 000000000000..e05f151edf74 --- /dev/null +++ b/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx @@ -0,0 +1,446 @@ +import { Meta } from "@storybook/blocks"; +import Image from "next/image"; + +import Github from "./assets/github.svg"; +import Discord from "./assets/discord.svg"; +import Youtube from "./assets/youtube.svg"; +import Tutorials from "./assets/tutorials.svg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; + +export const RightArrow = () => <svg + viewBox="0 0 14 14" + width="8px" + height="14px" + style={{ + marginLeft: '4px', + display: 'inline-block', + shapeRendering: 'inherit', + verticalAlign: 'middle', + fill: 'currentColor', + 'path fill': 'currentColor' + }} +> + <path d="m11.1 7.35-5.5 5.5a.5.5 0 0 1-.7-.7L10.04 7 4.9 1.85a.5.5 0 1 1 .7-.7l5.5 5.5c.2.2.2.5 0 .7Z" /> +</svg> + +<Meta title="Configure your project" /> + +<div className="sb-container"> + <div className='sb-section-title'> + # Configure your project + + Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. + </div> + <div className="sb-section"> + <div className="sb-section-item"> + <Image + src={Styling} + alt="A wall of logos representing different styling technologies" + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + /> + <h4 className="sb-section-item-heading">Add styling and CSS</h4> + <p className="sb-section-item-paragraph">Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/styling-and-css" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Context} + alt="An abstraction representing the composition of data for a component" + /> + <h4 className="sb-section-item-heading">Provide context and mocking</h4> + <p className="sb-section-item-paragraph">Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.</p> + <a + href="https://storybook.js.org/docs/react/writing-stories/decorators#context-for-mocking" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Assets} + alt="A representation of typography and image assets" + /> + <div> + <h4 className="sb-section-item-heading">Load assets and resources</h4> + <p className="sb-section-item-paragraph">To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/images-and-assets" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className="sb-container"> + <div className='sb-section-title'> + # Do more with Storybook + + Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. + </div> + + <div className="sb-section"> + <div className="sb-features-grid"> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Docs} + alt="A screenshot showing the autodocs tag being set, pointing a docs page being generated" + /> + <h4 className="sb-section-item-heading">Autodocs</h4> + <p className="sb-section-item-paragraph">Auto-generate living, + interactive reference documentation from your components and stories.</p> + <a + href="https://storybook.js.org/docs/react/writing-docs/autodocs" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Share} + alt="A browser window showing a Storybook being published to a chromatic.com URL" + /> + <h4 className="sb-section-item-heading">Publish to Chromatic</h4> + <p className="sb-section-item-paragraph">Publish your Storybook to review and collaborate with your entire team.</p> + <a + href="https://storybook.js.org/docs/react/sharing/publish-storybook#publish-storybook-with-chromatic" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={FigmaPlugin} + alt="Windows showing the Storybook plugin in Figma" + /> + <h4 className="sb-section-item-heading">Figma Plugin</h4> + <p className="sb-section-item-paragraph">Embed your stories into Figma to cross-reference the design and live + implementation in one place.</p> + <a + href="https://storybook.js.org/docs/react/sharing/design-integrations#embed-storybook-in-figma-with-the-plugin" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Testing} + alt="Screenshot of tests passing and failing" + /> + <h4 className="sb-section-item-heading">Testing</h4> + <p className="sb-section-item-paragraph">Use stories to test a component in all its variations, no matter how + complex.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/introduction" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Accessibility} + alt="Screenshot of accessibility tests passing and failing" + /> + <h4 className="sb-section-item-heading">Accessibility</h4> + <p className="sb-section-item-paragraph">Automatically test your components for a11y issues as you develop.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/accessibility-testing" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Theming} + alt="Screenshot of Storybook in light and dark mode" + /> + <h4 className="sb-section-item-heading">Theming</h4> + <p className="sb-section-item-paragraph">Theme Storybook's UI to personalize it to your project.</p> + <a + href="https://storybook.js.org/docs/react/configure/theming" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className='sb-addon'> + <div className='sb-addon-text'> + <h4>Addons</h4> + <p className="sb-section-item-paragraph">Integrate your tools with Storybook to connect workflows.</p> + <a + href="https://storybook.js.org/integrations/" + target="_blank" + >Discover all addons<RightArrow /></a> + </div> + <div className='sb-addon-img'> + <Image + width={650} + height={347} + src={AddonLibrary} + alt="Integrate your tools with Storybook to connect workflows." + /> + </div> +</div> + +<div className="sb-section sb-socials"> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Github} + alt="Github logo" + className="sb-explore-image" + /> + Join our contributors building the future of UI development. + + <a + href="https://github.com/storybookjs/storybook" + target="_blank" + >Star on GitHub<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Discord} + alt="Discord logo" + className="sb-explore-image" + /> + <div> + Get support and chat with frontend developers. + + <a + href="https://discord.gg/storybook" + target="_blank" + >Join Discord server<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Youtube} + alt="Youtube logo" + className="sb-explore-image" + /> + <div> + Watch tutorials, feature previews and interviews. + + <a + href="https://www.youtube.com/@chromaticui" + target="_blank" + >Watch on YouTube<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Tutorials} + alt="A book" + className="sb-explore-image" + /> + <p>Follow guided walkthroughs on for key workflows.</p> + + <a + href="https://storybook.js.org/tutorials/" + target="_blank" + >Discover tutorials<RightArrow /></a> + </div> +</div> + +<style> + {` + .sb-container { + margin-bottom: 48px; + } + + .sb-section { + width: 100%; + display: flex; + flex-direction: row; + gap: 20px; + } + + img { + object-fit: cover; + } + + .sb-section-title { + margin-bottom: 32px; + } + + .sb-section a:not(h1 a, h2 a, h3 a) { + font-size: 14px; + } + + .sb-section-item, .sb-grid-item { + flex: 1; + display: flex; + flex-direction: column; + } + + .sb-section-item-heading { + padding-top: 20px !important; + padding-bottom: 5px !important; + margin: 0 !important; + } + .sb-section-item-paragraph { + margin: 0; + padding-bottom: 10px; + } + + .sb-chevron { + margin-left: 5px; + } + + .sb-features-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 32px 20px; + } + + .sb-socials { + display: grid; + grid-template-columns: repeat(4, 1fr); + } + + .sb-socials p { + margin-bottom: 10px; + } + + .sb-explore-image { + max-height: 32px; + align-self: flex-start; + } + + .sb-addon { + width: 100%; + display: flex; + align-items: center; + position: relative; + background-color: #EEF3F8; + border-radius: 5px; + border: 1px solid rgba(0, 0, 0, 0.05); + background: #EEF3F8; + height: 180px; + margin-bottom: 48px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 48px; + max-width: 240px; + } + + .sb-addon-text h4 { + padding-top: 0px; + } + + .sb-addon-img { + position: absolute; + left: 345px; + top: 0; + height: 100%; + width: 200%; + overflow: hidden; + } + + .sb-addon-img img { + width: 650px; + transform: rotate(-15deg); + margin-left: 40px; + margin-top: -72px; + box-shadow: 0 0 1px rgba(255, 255, 255, 0); + backface-visibility: hidden; + } + + @media screen and (max-width: 800px) { + .sb-addon-img { + left: 300px; + } + } + + @media screen and (max-width: 600px) { + .sb-section { + flex-direction: column; + } + + .sb-features-grid { + grid-template-columns: repeat(1, 1fr); + } + + .sb-socials { + grid-template-columns: repeat(2, 1fr); + } + + .sb-addon { + height: 280px; + align-items: flex-start; + padding-top: 32px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 24px; + } + + .sb-addon-img { + right: 0; + left: 0; + top: 130px; + bottom: 0; + overflow: hidden; + height: auto; + width: 124%; + } + + .sb-addon-img img { + width: 1200px; + transform: rotate(-12deg); + margin-left: 0; + margin-top: 48px; + margin-bottom: -40px; + margin-left: -24px; + } + } + `} +</style> diff --git a/code/frameworks/nextjs/template/cli/ts-3-8/Introduction.mdx b/code/frameworks/nextjs/template/cli/ts-3-8/Introduction.mdx deleted file mode 100644 index 7055076a5273..000000000000 --- a/code/frameworks/nextjs/template/cli/ts-3-8/Introduction.mdx +++ /dev/null @@ -1,230 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; - -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; - -<Meta title="Example/Introduction" /> - -<style> - {` - .subheading { - --mediumdark: '#999999'; - font-weight: 700; - font-size: 13px; - color: #999; - letter-spacing: 6px; - line-height: 24px; - text-transform: uppercase; - margin-bottom: 12px; - margin-top: 40px; - } - - .link-list { - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr; - row-gap: 10px; - } - - @media (min-width: 620px) { - .link-list { - row-gap: 20px; - column-gap: 20px; - grid-template-columns: 1fr 1fr; - } - } - - @media all and (-ms-high-contrast:none) { - .link-list { - display: -ms-grid; - -ms-grid-columns: 1fr 1fr; - -ms-grid-rows: 1fr 1fr; - } - } - - .link-item { - display: block; - padding: 20px; - border: 1px solid #00000010; - border-radius: 5px; - transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out; - color: #333333; - display: flex; - align-items: flex-start; - } - - .link-item:hover { - border-color: #1EA7FD50; - transform: translate3d(0, -3px, 0); - box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0; - } - - .link-item:active { - border-color: #1EA7FD; - transform: translate3d(0, 0, 0); - } - - .link-item strong { - font-weight: 700; - display: block; - margin-bottom: 2px; - } - - .link-item-img-wrapper { - height: 40px; - width: 40px; - margin-right: 15px; - flex: none; - } - - .link-item span, - .link-item p { - margin: 0; - font-size: 14px; - line-height: 20px; - } - - .tip { - display: inline-block; - border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; - background: #E7FDD8; - color: #66BF3C; - padding: 4px 12px; - margin-right: 10px; - vertical-align: top; - } - - .tip-wrapper { - font-size: 13px; - line-height: 20px; - margin-top: 40px; - margin-bottom: 40px; - } - - .tip-wrapper code { - font-size: 12px; - display: inline-block; - } - `} -</style> - -# Welcome to Storybook - -Storybook helps you build UI components in isolation from your app's business logic, data, and context. -That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. - -Browse example stories now by navigating to them in the sidebar. -View their code in the `stories` directory to learn how they work. -We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. - -<div className="subheading">Configure</div> - -<div className="link-list"> - <a - className="link-item" - href="https://storybook.js.org/docs/react/addons/addon-types" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Plugin} alt="plugin" /> - </div> - <span> - <strong>Presets for popular tools</strong> - Easy setup for TypeScript, SCSS and more. - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/webpack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={StackAlt} alt="Build" /> - </div> - <span> - <strong>Build configuration</strong> - How to customize webpack and Babel - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/styling-and-css" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Colors} alt="colors" /> - </div> - <span> - <strong>Styling</strong> - How to load and configure CSS libraries - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Flow} alt="flow" /> - </div> - <span> - <strong>Data</strong> - Providers and mocking for data libraries - </span> - </a> -</div> - -<div className="subheading">Learn</div> - -<div className="link-list"> - <a className="link-item" href="https://storybook.js.org/docs" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Repo} alt="repo" /> - </div> - <span> - <strong>Storybook documentation</strong> - Configure, customize, and extend - </span> - </a> - <a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Direction} alt="direction" /> - </div> - <span> - <strong>In-depth guides</strong> - Best practices from leading teams - </span> - </a> - <a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Code} alt="code" /> - </div> - <span> - <strong>GitHub project</strong> - View the source and add issues - </span> - </a> - <a className="link-item" href="https://discord.gg/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Comments} alt="comments" /> - </div> - <span> - <strong>Discord chat</strong> - Chat with maintainers and the community - </span> - </a> -</div> - -<div className="tip-wrapper"> - <span className="tip">Tip</span>Edit the Markdown in <code>stories/Introduction.mdx</code> -</div> diff --git a/code/frameworks/nextjs/template/cli/ts/Button.stories.ts b/code/frameworks/nextjs/template/cli/ts-4-9/Button.stories.ts similarity index 55% rename from code/frameworks/nextjs/template/cli/ts/Button.stories.ts rename to code/frameworks/nextjs/template/cli/ts-4-9/Button.stories.ts index eeb81284b442..7a68cbfec557 100644 --- a/code/frameworks/nextjs/template/cli/ts/Button.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Button.stories.ts @@ -2,20 +2,24 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction -const meta: Meta<typeof Button> = { +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export +const meta = { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { - backgroundColor: { - control: 'color', - }, + backgroundColor: { control: 'color' }, }, -}; +} satisfies Meta<typeof Button>; export default meta; -type Story = StoryObj<typeof Button>; +type Story = StoryObj<typeof meta>; // More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args export const Primary: Story = { diff --git a/code/frameworks/nextjs/template/cli/ts/Button.tsx b/code/frameworks/nextjs/template/cli/ts-4-9/Button.tsx similarity index 100% rename from code/frameworks/nextjs/template/cli/ts/Button.tsx rename to code/frameworks/nextjs/template/cli/ts-4-9/Button.tsx diff --git a/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx b/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx new file mode 100644 index 000000000000..e05f151edf74 --- /dev/null +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx @@ -0,0 +1,446 @@ +import { Meta } from "@storybook/blocks"; +import Image from "next/image"; + +import Github from "./assets/github.svg"; +import Discord from "./assets/discord.svg"; +import Youtube from "./assets/youtube.svg"; +import Tutorials from "./assets/tutorials.svg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; + +export const RightArrow = () => <svg + viewBox="0 0 14 14" + width="8px" + height="14px" + style={{ + marginLeft: '4px', + display: 'inline-block', + shapeRendering: 'inherit', + verticalAlign: 'middle', + fill: 'currentColor', + 'path fill': 'currentColor' + }} +> + <path d="m11.1 7.35-5.5 5.5a.5.5 0 0 1-.7-.7L10.04 7 4.9 1.85a.5.5 0 1 1 .7-.7l5.5 5.5c.2.2.2.5 0 .7Z" /> +</svg> + +<Meta title="Configure your project" /> + +<div className="sb-container"> + <div className='sb-section-title'> + # Configure your project + + Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. + </div> + <div className="sb-section"> + <div className="sb-section-item"> + <Image + src={Styling} + alt="A wall of logos representing different styling technologies" + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + /> + <h4 className="sb-section-item-heading">Add styling and CSS</h4> + <p className="sb-section-item-paragraph">Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/styling-and-css" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Context} + alt="An abstraction representing the composition of data for a component" + /> + <h4 className="sb-section-item-heading">Provide context and mocking</h4> + <p className="sb-section-item-paragraph">Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.</p> + <a + href="https://storybook.js.org/docs/react/writing-stories/decorators#context-for-mocking" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Assets} + alt="A representation of typography and image assets" + /> + <div> + <h4 className="sb-section-item-heading">Load assets and resources</h4> + <p className="sb-section-item-paragraph">To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.</p> + <a + href="https://storybook.js.org/docs/react/configure/images-and-assets" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className="sb-container"> + <div className='sb-section-title'> + # Do more with Storybook + + Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. + </div> + + <div className="sb-section"> + <div className="sb-features-grid"> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Docs} + alt="A screenshot showing the autodocs tag being set, pointing a docs page being generated" + /> + <h4 className="sb-section-item-heading">Autodocs</h4> + <p className="sb-section-item-paragraph">Auto-generate living, + interactive reference documentation from your components and stories.</p> + <a + href="https://storybook.js.org/docs/react/writing-docs/autodocs" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Share} + alt="A browser window showing a Storybook being published to a chromatic.com URL" + /> + <h4 className="sb-section-item-heading">Publish to Chromatic</h4> + <p className="sb-section-item-paragraph">Publish your Storybook to review and collaborate with your entire team.</p> + <a + href="https://storybook.js.org/docs/react/sharing/publish-storybook#publish-storybook-with-chromatic" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={FigmaPlugin} + alt="Windows showing the Storybook plugin in Figma" + /> + <h4 className="sb-section-item-heading">Figma Plugin</h4> + <p className="sb-section-item-paragraph">Embed your stories into Figma to cross-reference the design and live + implementation in one place.</p> + <a + href="https://storybook.js.org/docs/react/sharing/design-integrations#embed-storybook-in-figma-with-the-plugin" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Testing} + alt="Screenshot of tests passing and failing" + /> + <h4 className="sb-section-item-heading">Testing</h4> + <p className="sb-section-item-paragraph">Use stories to test a component in all its variations, no matter how + complex.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/introduction" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Accessibility} + alt="Screenshot of accessibility tests passing and failing" + /> + <h4 className="sb-section-item-heading">Accessibility</h4> + <p className="sb-section-item-paragraph">Automatically test your components for a11y issues as you develop.</p> + <a + href="https://storybook.js.org/docs/react/writing-tests/accessibility-testing" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <Image + width={0} + height={0} + style={{ width: '100%', height: 'auto' }} + src={Theming} + alt="Screenshot of Storybook in light and dark mode" + /> + <h4 className="sb-section-item-heading">Theming</h4> + <p className="sb-section-item-paragraph">Theme Storybook's UI to personalize it to your project.</p> + <a + href="https://storybook.js.org/docs/react/configure/theming" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className='sb-addon'> + <div className='sb-addon-text'> + <h4>Addons</h4> + <p className="sb-section-item-paragraph">Integrate your tools with Storybook to connect workflows.</p> + <a + href="https://storybook.js.org/integrations/" + target="_blank" + >Discover all addons<RightArrow /></a> + </div> + <div className='sb-addon-img'> + <Image + width={650} + height={347} + src={AddonLibrary} + alt="Integrate your tools with Storybook to connect workflows." + /> + </div> +</div> + +<div className="sb-section sb-socials"> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Github} + alt="Github logo" + className="sb-explore-image" + /> + Join our contributors building the future of UI development. + + <a + href="https://github.com/storybookjs/storybook" + target="_blank" + >Star on GitHub<RightArrow /></a> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Discord} + alt="Discord logo" + className="sb-explore-image" + /> + <div> + Get support and chat with frontend developers. + + <a + href="https://discord.gg/storybook" + target="_blank" + >Join Discord server<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={32} + height={32} + layout="fixed" + src={Youtube} + alt="Youtube logo" + className="sb-explore-image" + /> + <div> + Watch tutorials, feature previews and interviews. + + <a + href="https://www.youtube.com/@chromaticui" + target="_blank" + >Watch on YouTube<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <Image + width={33} + height={32} + layout="fixed" + src={Tutorials} + alt="A book" + className="sb-explore-image" + /> + <p>Follow guided walkthroughs on for key workflows.</p> + + <a + href="https://storybook.js.org/tutorials/" + target="_blank" + >Discover tutorials<RightArrow /></a> + </div> +</div> + +<style> + {` + .sb-container { + margin-bottom: 48px; + } + + .sb-section { + width: 100%; + display: flex; + flex-direction: row; + gap: 20px; + } + + img { + object-fit: cover; + } + + .sb-section-title { + margin-bottom: 32px; + } + + .sb-section a:not(h1 a, h2 a, h3 a) { + font-size: 14px; + } + + .sb-section-item, .sb-grid-item { + flex: 1; + display: flex; + flex-direction: column; + } + + .sb-section-item-heading { + padding-top: 20px !important; + padding-bottom: 5px !important; + margin: 0 !important; + } + .sb-section-item-paragraph { + margin: 0; + padding-bottom: 10px; + } + + .sb-chevron { + margin-left: 5px; + } + + .sb-features-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 32px 20px; + } + + .sb-socials { + display: grid; + grid-template-columns: repeat(4, 1fr); + } + + .sb-socials p { + margin-bottom: 10px; + } + + .sb-explore-image { + max-height: 32px; + align-self: flex-start; + } + + .sb-addon { + width: 100%; + display: flex; + align-items: center; + position: relative; + background-color: #EEF3F8; + border-radius: 5px; + border: 1px solid rgba(0, 0, 0, 0.05); + background: #EEF3F8; + height: 180px; + margin-bottom: 48px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 48px; + max-width: 240px; + } + + .sb-addon-text h4 { + padding-top: 0px; + } + + .sb-addon-img { + position: absolute; + left: 345px; + top: 0; + height: 100%; + width: 200%; + overflow: hidden; + } + + .sb-addon-img img { + width: 650px; + transform: rotate(-15deg); + margin-left: 40px; + margin-top: -72px; + box-shadow: 0 0 1px rgba(255, 255, 255, 0); + backface-visibility: hidden; + } + + @media screen and (max-width: 800px) { + .sb-addon-img { + left: 300px; + } + } + + @media screen and (max-width: 600px) { + .sb-section { + flex-direction: column; + } + + .sb-features-grid { + grid-template-columns: repeat(1, 1fr); + } + + .sb-socials { + grid-template-columns: repeat(2, 1fr); + } + + .sb-addon { + height: 280px; + align-items: flex-start; + padding-top: 32px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 24px; + } + + .sb-addon-img { + right: 0; + left: 0; + top: 130px; + bottom: 0; + overflow: hidden; + height: auto; + width: 124%; + } + + .sb-addon-img img { + width: 1200px; + transform: rotate(-12deg); + margin-left: 0; + margin-top: 48px; + margin-bottom: -40px; + margin-left: -24px; + } + } + `} +</style> diff --git a/code/frameworks/nextjs/template/cli/ts/Header.stories.ts b/code/frameworks/nextjs/template/cli/ts-4-9/Header.stories.ts similarity index 87% rename from code/frameworks/nextjs/template/cli/ts/Header.stories.ts rename to code/frameworks/nextjs/template/cli/ts-4-9/Header.stories.ts index 448685eab0eb..b0766a5a4839 100644 --- a/code/frameworks/nextjs/template/cli/ts/Header.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Header.stories.ts @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Header } from './Header'; -const meta: Meta<typeof Header> = { +const meta = { title: 'Example/Header', component: Header, // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs @@ -10,10 +10,10 @@ const meta: Meta<typeof Header> = { // More on how to position stories at: https://storybook.js.org/docs/react/configure/story-layout layout: 'fullscreen', }, -}; +} satisfies Meta<typeof Header>; export default meta; -type Story = StoryObj<typeof Header>; +type Story = StoryObj<typeof meta>; export const LoggedIn: Story = { args: { diff --git a/code/frameworks/nextjs/template/cli/ts/Header.tsx b/code/frameworks/nextjs/template/cli/ts-4-9/Header.tsx similarity index 100% rename from code/frameworks/nextjs/template/cli/ts/Header.tsx rename to code/frameworks/nextjs/template/cli/ts-4-9/Header.tsx diff --git a/code/frameworks/nextjs/template/cli/ts/Page.stories.ts b/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts similarity index 90% rename from code/frameworks/nextjs/template/cli/ts/Page.stories.ts rename to code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts index 0e48941ab149..69852a2bdc00 100644 --- a/code/frameworks/nextjs/template/cli/ts/Page.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts @@ -3,17 +3,17 @@ import { within, userEvent } from '@storybook/testing-library'; import { Page } from './Page'; -const meta: Meta<typeof Page> = { +const meta = { title: 'Example/Page', component: Page, parameters: { // More on how to position stories at: https://storybook.js.org/docs/react/configure/story-layout layout: 'fullscreen', }, -}; +} satisfies Meta<typeof Page>; export default meta; -type Story = StoryObj<typeof Page>; +type Story = StoryObj<typeof meta>; export const LoggedOut: Story = {}; diff --git a/code/frameworks/nextjs/template/cli/ts/Page.tsx b/code/frameworks/nextjs/template/cli/ts-4-9/Page.tsx similarity index 100% rename from code/frameworks/nextjs/template/cli/ts/Page.tsx rename to code/frameworks/nextjs/template/cli/ts-4-9/Page.tsx diff --git a/code/frameworks/nextjs/template/cli/ts/Introduction.mdx b/code/frameworks/nextjs/template/cli/ts/Introduction.mdx deleted file mode 100644 index 2418db1e8772..000000000000 --- a/code/frameworks/nextjs/template/cli/ts/Introduction.mdx +++ /dev/null @@ -1,230 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; - -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; - -<Meta title="Example/Introduction" /> - -<style> - {` - .subheading { - --mediumdark: '#999999'; - font-weight: 900; - font-size: 13px; - color: #999; - letter-spacing: 6px; - line-height: 24px; - text-transform: uppercase; - margin-bottom: 12px; - margin-top: 40px; - } - - .link-list { - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr; - row-gap: 10px; - } - - @media (min-width: 620px) { - .link-list { - row-gap: 20px; - column-gap: 20px; - grid-template-columns: 1fr 1fr; - } - } - - @media all and (-ms-high-contrast:none) { - .link-list { - display: -ms-grid; - -ms-grid-columns: 1fr 1fr; - -ms-grid-rows: 1fr 1fr; - } - } - - .link-item { - display: block; - padding: 20px; - border: 1px solid #00000010; - border-radius: 5px; - transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out; - color: #333333; - display: flex; - align-items: flex-start; - } - - .link-item:hover { - border-color: #1EA7FD50; - transform: translate3d(0, -3px, 0); - box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0; - } - - .link-item:active { - border-color: #1EA7FD; - transform: translate3d(0, 0, 0); - } - - .link-item strong { - font-weight: 700; - display: block; - margin-bottom: 2px; - } - - .link-item-img-wrapper { - height: 40px; - width: 40px; - margin-right: 15px; - flex: none; - } - - .link-item span, - .link-item p { - margin: 0; - font-size: 14px; - line-height: 20px; - } - - .tip { - display: inline-block; - border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; - background: #E7FDD8; - color: #66BF3C; - padding: 4px 12px; - margin-right: 10px; - vertical-align: top; - } - - .tip-wrapper { - font-size: 13px; - line-height: 20px; - margin-top: 40px; - margin-bottom: 40px; - } - - .tip-wrapper code { - font-size: 12px; - display: inline-block; - } - `} -</style> - -# Welcome to Storybook - -Storybook helps you build UI components in isolation from your app's business logic, data, and context. -That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. - -Browse example stories now by navigating to them in the sidebar. -View their code in the `stories` directory to learn how they work. -We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. - -<div className="subheading">Configure</div> - -<div className="link-list"> - <a - className="link-item" - href="https://storybook.js.org/docs/react/addons/addon-types" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Plugin} alt="plugin" /> - </div> - <span> - <strong>Presets for popular tools</strong> - Easy setup for TypeScript, SCSS and more. - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/webpack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={StackAlt} alt="Build" /> - </div> - <span> - <strong>Build configuration</strong> - How to customize webpack and Babel - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/styling-and-css" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Colors} alt="colors" /> - </div> - <span> - <strong>Styling</strong> - How to load and configure CSS libraries - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack" - target="_blank" - > - <div className="link-item-img-wrapper"> - <Image src={Flow} alt="flow" /> - </div> - <span> - <strong>Data</strong> - Providers and mocking for data libraries - </span> - </a> -</div> - -<div className="subheading">Learn</div> - -<div className="link-list"> - <a className="link-item" href="https://storybook.js.org/docs" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Repo} alt="repo" /> - </div> - <span> - <strong>Storybook documentation</strong> - Configure, customize, and extend - </span> - </a> - <a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Direction} alt="direction" /> - </div> - <span> - <strong>In-depth guides</strong> - Best practices from leading teams - </span> - </a> - <a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Code} alt="code" /> - </div> - <span> - <strong>GitHub project</strong> - View the source and add issues - </span> - </a> - <a className="link-item" href="https://discord.gg/storybook" target="_blank"> - <div className="link-item-img-wrapper"> - <Image src={Comments} alt="comments" /> - </div> - <span> - <strong>Discord chat</strong> - Chat with maintainers and the community - </span> - </a> -</div> - -<div className="tip-wrapper"> - <span className="tip">Tip</span>Edit the Markdown in <code>stories/Introduction.mdx</code> -</div> diff --git a/code/frameworks/nextjs/template/stories/Image.stories.jsx b/code/frameworks/nextjs/template/stories/Image.stories.jsx index bf3808282a6f..46ef28363830 100644 --- a/code/frameworks/nextjs/template/stories/Image.stories.jsx +++ b/code/frameworks/nextjs/template/stories/Image.stories.jsx @@ -1,13 +1,14 @@ import React from 'react'; import Image from 'next/image'; +import { waitFor } from '@storybook/testing-library'; -import StackAlt from '../../assets/colors.svg'; +import Accessibility from '../../assets/accessibility.svg'; export default { component: Image, args: { - src: StackAlt, - alt: 'Stack Alt', + src: Accessibility, + alt: 'Accessibility', }, }; @@ -28,6 +29,11 @@ export const BlurredAbsolutePlaceholder = { 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABP5JREFUWEeNlwtz2zgMhEGKsv/k9XFp82xe11763yOJVGcXC4m2czM3GYa0E2s/LACSTi+vv1czM/7CvPpqxY/ejPeS3khmFiPHOiVLHKaZi4ux4j18GpMlS6cALupEQBCKQM4BdnGzjIcJgs//QBxAPQAem55f3yL4PWJIdyCyhlMfPdYZot0cwj3Ayg/5JwHA13paen7pADphxr/n5VI8JQsHCCGQ3gVGLLsxQ3h/LYSn5383B05rwNOws3Z576LOTOduvwfrOd5FtVat4akx0uPTrw8BNuUz23vLsY7hmg7i4ipqM2saiAdruNuirh4ff0bNdb3Qy3vkvfAQwrkHoDxTTZtDCOKrC1bMEkdnsQh/PLyetOGHkXeRAgQAQ84efQcBdUhvFofoulpdm9WGGTA+AJEe7l+i37a2c371tCFKs5zzJjxQNBMi1im7OCudP2aNghJuzZaGdSMEZjpwf/t0UgNdg9DOyLGLnY0BUHlzwVtNDkgEQhBeKkb1tUDgQrq7frwAiIJi5BKAeIFgHk5mOpPzvgltOfcoK0Rrs7lWHwsgqtXarK3N0u23h5Ne8+3Cqxn5RYSMfHCAMgDAx4CBWlA9RAGw0GA/ol0gvFB4WjAvBAFUa83SzdUdAbYMqp28uHpxCRefxwAYhksAFBlthxCiXig+zT4TYqkC+Hq7OdAfJv8lPpZiZShWBBIuRP+jspDb2lwcDkzz7OLzbO/zvAHAoXTz5eYMQL0t2yHAiCFcfPY1QDwNFylA5bPoFpsV9fsEiMl8dhcc4PP1CYD3drYcBYdIKQrx0cbRxd2JHSDcQ297/vvoZ5smRC+AyV2AQ+nm03evge08Tyy4jGqXzWWEoIvTgXHU38pWiNgH4ixB/ukAcy/xycXfp4kwdAAAt399W+OCgMjxILQacxvRQ3gEwHgKUIr/rz53CuDFNyP/Eob4+/vEWkBq6AAA/HIi62n/Lk67Q7wDYQ0UpQB7hc54T4E6gACLTYxeAwB0YKZL6U4ATEGIBwCs7qPfQJCCHkCnoK50noJKcXcAojsEAJZZKXhgCoziGKxqWV8IMNp4kP2aC+oB0TMFvhGxDQHQfIPhDrilwKOm/YCZASAHfgBABQjr3f7CyAkA0cPB03AQULRhKd4xAIjzHymo2Gp7gN0FAMAVOoA2fPz03a9ssh/RM7Iz8QKIzYF9HyB0XEZ1xJ4DzNoDOAfAslhDDTyjDfv8A2AcBeCiu/jBHQEgxnYW6Kp6BlCVAkQM8VnieF2Xyr0ivXy+XvsCzKOihwNHCCryw8HrQXVB8dgFeRfAVQiXjMbIIgXINQYB2H7Kf5wF/2Ar7h0AgKKGuAP4zOjhzlkLbpcRXKRZhNUjxG6HIQDOjN47gCn4+fWW3xVS9urPESEEwwHMo9IhAGxS2ISiA1iEnQOoA4hXRAwItp7WzL9Ow18ESJaw/ar4NgeOR49cAHCAnaH8swBhv+6CBGjeBSxEOUAI7HyKHkD4O9xKb3/feQouAI4uLBciHRRHmgbfA7h/xFc9AngNBADthvii1sMOiPwDAFeyt6s7FSFS4PmnA1v0vQvqDqQKAAPE/weAUuEgsj8c+H11Twdw/AKANXA82EDr5cJBEEzB3oI4Mb0AdR3nNw8vQnegWuvqAABwJFJEBwDgNdA7IOs3gL0LhuJdwBY8c4BfNnDdVgooHiOqn/b7JoSW/QODjTHXhU7hMQAAAABJRU5ErkJggg==', placeholder: 'blur', }, + parameters: { + // ignoring in Chromatic to avoid inconsistent snapshots + // given that the switch from blur to image is quite fast + chromatic: { disableSnapshot: true }, + }, }; export const FilledParent = { @@ -55,6 +61,10 @@ export const Lazy = { width: 50, height: 50, }, + parameters: { + // ignoring in Chromatic to avoid inconsistent snapshots since the image is sometimes not loaded in time + chromatic: { disableSnapshot: true }, + }, decorators: [ (Story) => ( <> @@ -68,6 +78,8 @@ export const Lazy = { export const Eager = { ...Lazy, parameters: { + // ignoring in Chromatic to avoid inconsistent snapshots since the image is sometimes not loaded in time + chromatic: { disableSnapshot: true }, nextjs: { image: { loading: 'eager', diff --git a/code/frameworks/nextjs/template/stories_nextjs-12-js/ImageFuture.stories.jsx b/code/frameworks/nextjs/template/stories_nextjs-12-js/ImageFuture.stories.jsx index 3c65960d585d..aad2e8d56ac9 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-12-js/ImageFuture.stories.jsx +++ b/code/frameworks/nextjs/template/stories_nextjs-12-js/ImageFuture.stories.jsx @@ -1,13 +1,13 @@ import React from 'react'; import Image from 'next/future/image'; -import StackAlt from '../../assets/colors.svg'; +import Accessibility from '../../assets/accessibility.svg'; export default { component: Image, args: { - src: StackAlt, - alt: 'Stack Alt', + src: Accessibility, + alt: 'Accessibility', }, }; @@ -28,6 +28,11 @@ export const BlurredAbsolutePlaceholder = { 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABP5JREFUWEeNlwtz2zgMhEGKsv/k9XFp82xe11763yOJVGcXC4m2czM3GYa0E2s/LACSTi+vv1czM/7CvPpqxY/ejPeS3khmFiPHOiVLHKaZi4ux4j18GpMlS6cALupEQBCKQM4BdnGzjIcJgs//QBxAPQAem55f3yL4PWJIdyCyhlMfPdYZot0cwj3Ayg/5JwHA13paen7pADphxr/n5VI8JQsHCCGQ3gVGLLsxQ3h/LYSn5383B05rwNOws3Z576LOTOduvwfrOd5FtVat4akx0uPTrw8BNuUz23vLsY7hmg7i4ipqM2saiAdruNuirh4ff0bNdb3Qy3vkvfAQwrkHoDxTTZtDCOKrC1bMEkdnsQh/PLyetOGHkXeRAgQAQ84efQcBdUhvFofoulpdm9WGGTA+AJEe7l+i37a2c371tCFKs5zzJjxQNBMi1im7OCudP2aNghJuzZaGdSMEZjpwf/t0UgNdg9DOyLGLnY0BUHlzwVtNDkgEQhBeKkb1tUDgQrq7frwAiIJi5BKAeIFgHk5mOpPzvgltOfcoK0Rrs7lWHwsgqtXarK3N0u23h5Ne8+3Cqxn5RYSMfHCAMgDAx4CBWlA9RAGw0GA/ol0gvFB4WjAvBAFUa83SzdUdAbYMqp28uHpxCRefxwAYhksAFBlthxCiXig+zT4TYqkC+Hq7OdAfJv8lPpZiZShWBBIuRP+jspDb2lwcDkzz7OLzbO/zvAHAoXTz5eYMQL0t2yHAiCFcfPY1QDwNFylA5bPoFpsV9fsEiMl8dhcc4PP1CYD3drYcBYdIKQrx0cbRxd2JHSDcQ297/vvoZ5smRC+AyV2AQ+nm03evge08Tyy4jGqXzWWEoIvTgXHU38pWiNgH4ixB/ukAcy/xycXfp4kwdAAAt399W+OCgMjxILQacxvRQ3gEwHgKUIr/rz53CuDFNyP/Eob4+/vEWkBq6AAA/HIi62n/Lk67Q7wDYQ0UpQB7hc54T4E6gACLTYxeAwB0YKZL6U4ATEGIBwCs7qPfQJCCHkCnoK50noJKcXcAojsEAJZZKXhgCoziGKxqWV8IMNp4kP2aC+oB0TMFvhGxDQHQfIPhDrilwKOm/YCZASAHfgBABQjr3f7CyAkA0cPB03AQULRhKd4xAIjzHymo2Gp7gN0FAMAVOoA2fPz03a9ssh/RM7Iz8QKIzYF9HyB0XEZ1xJ4DzNoDOAfAslhDDTyjDfv8A2AcBeCiu/jBHQEgxnYW6Kp6BlCVAkQM8VnieF2Xyr0ivXy+XvsCzKOihwNHCCryw8HrQXVB8dgFeRfAVQiXjMbIIgXINQYB2H7Kf5wF/2Ar7h0AgKKGuAP4zOjhzlkLbpcRXKRZhNUjxG6HIQDOjN47gCn4+fWW3xVS9urPESEEwwHMo9IhAGxS2ISiA1iEnQOoA4hXRAwItp7WzL9Ow18ESJaw/ar4NgeOR49cAHCAnaH8swBhv+6CBGjeBSxEOUAI7HyKHkD4O9xKb3/feQouAI4uLBciHRRHmgbfA7h/xFc9AngNBADthvii1sMOiPwDAFeyt6s7FSFS4PmnA1v0vQvqDqQKAAPE/weAUuEgsj8c+H11Twdw/AKANXA82EDr5cJBEEzB3oI4Mb0AdR3nNw8vQnegWuvqAABwJFJEBwDgNdA7IOs3gL0LhuJdwBY8c4BfNnDdVgooHiOqn/b7JoSW/QODjTHXhU7hMQAAAABJRU5ErkJggg==', placeholder: 'blur', }, + parameters: { + // ignoring in Chromatic to avoid inconsistent snapshots + // given that the switch from blur to image is quite fast + chromatic: { disableSnapshot: true }, + }, }; export const FilledParent = { diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-js/ImageLegacy.stories.jsx b/code/frameworks/nextjs/template/stories_nextjs-default-js/ImageLegacy.stories.jsx index 772536a7a5f6..b8a781499bd1 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-js/ImageLegacy.stories.jsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-js/ImageLegacy.stories.jsx @@ -1,13 +1,13 @@ import React from 'react'; import Image from 'next/legacy/image'; -import StackAlt from '../../assets/colors.svg'; +import Accessibility from '../../assets/accessibility.svg'; export default { component: Image, args: { - src: StackAlt, - alt: 'Stack Alt', + src: Accessibility, + alt: 'Accessibility', }, }; @@ -28,4 +28,9 @@ export const BlurredAbsolutePlaceholder = { 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABP5JREFUWEeNlwtz2zgMhEGKsv/k9XFp82xe11763yOJVGcXC4m2czM3GYa0E2s/LACSTi+vv1czM/7CvPpqxY/ejPeS3khmFiPHOiVLHKaZi4ux4j18GpMlS6cALupEQBCKQM4BdnGzjIcJgs//QBxAPQAem55f3yL4PWJIdyCyhlMfPdYZot0cwj3Ayg/5JwHA13paen7pADphxr/n5VI8JQsHCCGQ3gVGLLsxQ3h/LYSn5383B05rwNOws3Z576LOTOduvwfrOd5FtVat4akx0uPTrw8BNuUz23vLsY7hmg7i4ipqM2saiAdruNuirh4ff0bNdb3Qy3vkvfAQwrkHoDxTTZtDCOKrC1bMEkdnsQh/PLyetOGHkXeRAgQAQ84efQcBdUhvFofoulpdm9WGGTA+AJEe7l+i37a2c371tCFKs5zzJjxQNBMi1im7OCudP2aNghJuzZaGdSMEZjpwf/t0UgNdg9DOyLGLnY0BUHlzwVtNDkgEQhBeKkb1tUDgQrq7frwAiIJi5BKAeIFgHk5mOpPzvgltOfcoK0Rrs7lWHwsgqtXarK3N0u23h5Ne8+3Cqxn5RYSMfHCAMgDAx4CBWlA9RAGw0GA/ol0gvFB4WjAvBAFUa83SzdUdAbYMqp28uHpxCRefxwAYhksAFBlthxCiXig+zT4TYqkC+Hq7OdAfJv8lPpZiZShWBBIuRP+jspDb2lwcDkzz7OLzbO/zvAHAoXTz5eYMQL0t2yHAiCFcfPY1QDwNFylA5bPoFpsV9fsEiMl8dhcc4PP1CYD3drYcBYdIKQrx0cbRxd2JHSDcQ297/vvoZ5smRC+AyV2AQ+nm03evge08Tyy4jGqXzWWEoIvTgXHU38pWiNgH4ixB/ukAcy/xycXfp4kwdAAAt399W+OCgMjxILQacxvRQ3gEwHgKUIr/rz53CuDFNyP/Eob4+/vEWkBq6AAA/HIi62n/Lk67Q7wDYQ0UpQB7hc54T4E6gACLTYxeAwB0YKZL6U4ATEGIBwCs7qPfQJCCHkCnoK50noJKcXcAojsEAJZZKXhgCoziGKxqWV8IMNp4kP2aC+oB0TMFvhGxDQHQfIPhDrilwKOm/YCZASAHfgBABQjr3f7CyAkA0cPB03AQULRhKd4xAIjzHymo2Gp7gN0FAMAVOoA2fPz03a9ssh/RM7Iz8QKIzYF9HyB0XEZ1xJ4DzNoDOAfAslhDDTyjDfv8A2AcBeCiu/jBHQEgxnYW6Kp6BlCVAkQM8VnieF2Xyr0ivXy+XvsCzKOihwNHCCryw8HrQXVB8dgFeRfAVQiXjMbIIgXINQYB2H7Kf5wF/2Ar7h0AgKKGuAP4zOjhzlkLbpcRXKRZhNUjxG6HIQDOjN47gCn4+fWW3xVS9urPESEEwwHMo9IhAGxS2ISiA1iEnQOoA4hXRAwItp7WzL9Ow18ESJaw/ar4NgeOR49cAHCAnaH8swBhv+6CBGjeBSxEOUAI7HyKHkD4O9xKb3/feQouAI4uLBciHRRHmgbfA7h/xFc9AngNBADthvii1sMOiPwDAFeyt6s7FSFS4PmnA1v0vQvqDqQKAAPE/weAUuEgsj8c+H11Twdw/AKANXA82EDr5cJBEEzB3oI4Mb0AdR3nNw8vQnegWuvqAABwJFJEBwDgNdA7IOs3gL0LhuJdwBY8c4BfNnDdVgooHiOqn/b7JoSW/QODjTHXhU7hMQAAAABJRU5ErkJggg==', placeholder: 'blur', }, + parameters: { + // ignoring in Chromatic to avoid inconsistent snapshots + // given that the switch from blur to image is quite fast + chromatic: { disableSnapshot: true }, + }, }; diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-js/Navigation.stories.jsx b/code/frameworks/nextjs/template/stories_nextjs-default-js/Navigation.stories.jsx index 12b66e3205d2..166567aa456c 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-js/Navigation.stories.jsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-js/Navigation.stories.jsx @@ -2,6 +2,7 @@ import { useRouter, usePathname, useSearchParams, + useParams, useSelectedLayoutSegment, useSelectedLayoutSegments, } from 'next/navigation'; @@ -11,6 +12,7 @@ function Component() { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); + const params = useParams(); const segment = useSelectedLayoutSegment(); const segments = useSelectedLayoutSegments(); @@ -58,6 +60,16 @@ function Component() { ))} </ul> </div> + <div> + params:{' '} + <ul> + {Object.entries(params).map(([key, value]) => ( + <li key={key}> + {key}: {value} + </li> + ))} + </ul> + </div> {routerActions.map(({ cb, name }) => ( <div key={name} style={{ marginBottom: '1em' }}> <button type="button" onClick={cb}> @@ -96,3 +108,17 @@ export const WithSegmentDefined = { }, }, }; + +export const WithSegmentDefinedForParams = { + parameters: { + nextjs: { + appDirectory: true, + navigation: { + segments: [ + ['slug', 'hello'], + ['framework', 'nextjs'], + ], + }, + }, + }, +}; diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx index 8bb209bd9d45..39efad27c256 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx @@ -24,6 +24,7 @@ function Component() { name: 'Prefetch', }, { + // @ts-expect-error (old-api) cb: () => router.push('/push-html', { forceOptimisticNavigation: true }), name: 'Push HTML', }, @@ -32,6 +33,7 @@ function Component() { name: 'Refresh', }, { + // @ts-expect-error (old-api) cb: () => router.replace('/replaced-html', { forceOptimisticNavigation: true }), name: 'Replace', }, diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index a98c975865eb..25f3f46065bf 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,16 +39,17 @@ "types/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@preact/preset-vite": "^2.0.0", - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/preact": "7.1.0-alpha.17" + "@storybook/builder-vite": "workspace:*", + "@storybook/preact": "workspace:*" }, "devDependencies": { "@types/node": "^16.0.0", @@ -72,5 +73,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/preact-vite/src/preset.ts b/code/frameworks/preact-vite/src/preset.ts index aecc5b9a904a..2d4e18d77e90 100644 --- a/code/frameworks/preact-vite/src/preset.ts +++ b/code/frameworks/preact-vite/src/preset.ts @@ -1,11 +1,15 @@ import { hasVitePlugins } from '@storybook/builder-vite'; import type { PresetProperty } from '@storybook/types'; import preact from '@preact/preset-vite'; +import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/preact', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/preact'), }; export const viteFinal: StorybookConfig['viteFinal'] = async (config) => { diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index d0dc2c1f210a..0ce84861e0c7 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -37,20 +37,20 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preact": "7.1.0-alpha.17", - "@storybook/preset-preact-webpack": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preact": "workspace:*", + "@storybook/preset-preact-webpack": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -76,5 +76,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/preact-webpack5/src/preset.ts b/code/frameworks/preact-webpack5/src/preset.ts index 5808ca929166..e815e7884248 100644 --- a/code/frameworks/preact-webpack5/src/preset.ts +++ b/code/frameworks/preact-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-preact-webpack'), + getAbsolutePath('@storybook/preset-preact-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,9 +15,9 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/preact'), + renderer: getAbsolutePath('@storybook/preact'), }; }; diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 50e6bd0e6542..986100d09e17 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,23 +37,23 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.2.1", - "@rollup/pluginutils": "^4.2.0", - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/react": "7.1.0-alpha.17", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "workspace:*", + "@storybook/react": "workspace:*", "@vitejs/plugin-react": "^3.0.1", "ast-types": "^0.14.2", - "magic-string": "^0.27.0", + "magic-string": "^0.30.0", "react-docgen": "6.0.0-alpha.3" }, "devDependencies": { @@ -79,5 +79,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/react-vite/src/preset.ts b/code/frameworks/react-vite/src/preset.ts index 26a577af7900..207f60988ebc 100644 --- a/code/frameworks/react-vite/src/preset.ts +++ b/code/frameworks/react-vite/src/preset.ts @@ -4,11 +4,12 @@ import { hasVitePlugins } from '@storybook/builder-vite'; import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const core: PresetProperty<'core', StorybookConfig> = { - builder: wrapForPnP('@storybook/builder-vite') as '@storybook/builder-vite', - renderer: wrapForPnP('@storybook/react'), + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/react'), }; export const viteFinal: StorybookConfig['viteFinal'] = async (config, { presets }) => { diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 7da20fdad46a..1369b677c3ee 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,29 +37,29 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/preset-react-webpack": "7.1.0-alpha.17", - "@storybook/react": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/preset-react-webpack": "workspace:*", + "@storybook/react": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { - "jest-specific-snapshot": "^7.0.0", - "typescript": "~4.9.3" + "jest-specific-snapshot": "^8.0.0" }, "peerDependencies": { - "@babel/core": "^7.11.5", + "@babel/core": "^7.22.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" }, "peerDependenciesMeta": { "@babel/core": { @@ -82,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/react-webpack5/src/preset.ts b/code/frameworks/react-webpack5/src/preset.ts index b03832ae272f..873d214c597c 100644 --- a/code/frameworks/react-webpack5/src/preset.ts +++ b/code/frameworks/react-webpack5/src/preset.ts @@ -4,10 +4,11 @@ import { dirname, join } from 'path'; import type { PresetProperty, Options } from '@storybook/types'; import type { FrameworkOptions, StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-react-webpack'), + getAbsolutePath('@storybook/preset-react-webpack'), ]; const defaultFrameworkOptions: FrameworkOptions = { @@ -28,7 +29,7 @@ export const frameworkOptions = async ( } if (typeof config === 'undefined') { return { - name: wrapForPnP('@storybook/react-webpack5') as '@storybook/react-webpack5', + name: getAbsolutePath('@storybook/react-webpack5'), options: defaultFrameworkOptions, }; } @@ -48,10 +49,10 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/react'), + renderer: getAbsolutePath('@storybook/react'), }; }; @@ -60,7 +61,7 @@ export const webpack: StorybookConfig['webpack'] = async (config) => { config.resolve.alias = { ...config.resolve?.alias, - '@storybook/react': wrapForPnP('@storybook/react'), + '@storybook/react': getAbsolutePath('@storybook/react'), }; return config; }; diff --git a/code/frameworks/server-webpack5/README.md b/code/frameworks/server-webpack5/README.md index 0afe86f1fef0..fdb20cbe4c57 100644 --- a/code/frameworks/server-webpack5/README.md +++ b/code/frameworks/server-webpack5/README.md @@ -33,7 +33,7 @@ For more information visit: [storybook.js.org](https://storybook.js.org) ## Writing Stories -To write a story, use whatever API is natural for your server-side rendering framework to generate set of JSON or YAML files of stories analogous to CSF files (see the [`server-kitchen-sink`](../../examples/server-kitchen-sink/stories) example for ideas). +To write a story, use whatever API is natural for your server-side rendering framework to generate set of JSON or YAML files of stories analogous to CSF files (see the [`server-kitchen-sink`](../../../test-storybooks/server-kitchen-sink/stories) example for ideas). ```json { diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 30f60095ab19..e066f8229385 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,20 +37,20 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preset-server-webpack": "7.1.0-alpha.17", - "@storybook/server": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preset-server-webpack": "workspace:*", + "@storybook/server": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -73,5 +73,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/server-webpack5/src/preset.ts b/code/frameworks/server-webpack5/src/preset.ts index 852c2a9c9409..0dd7d63814f0 100644 --- a/code/frameworks/server-webpack5/src/preset.ts +++ b/code/frameworks/server-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-server-webpack'), + getAbsolutePath('@storybook/preset-server-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,9 +15,9 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/server'), + renderer: getAbsolutePath('@storybook/server'), }; }; diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 7eaabdc04a02..6c3b2b8bc00b 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,33 +37,32 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/svelte": "7.1.0-alpha.17", - "@sveltejs/vite-plugin-svelte": "^2.0.0", - "magic-string": "^0.27.0", - "svelte": "^3.0.0", + "@storybook/builder-vite": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/svelte": "workspace:*", + "@sveltejs/vite-plugin-svelte": "^2.4.2", + "magic-string": "^0.30.0", "sveltedoc-parser": "^4.2.1", "ts-dedent": "^2.2.0" }, "devDependencies": { "@types/node": "^16.0.0", + "svelte": "^4.0.0", "typescript": "~4.9.3", "vite": "^4.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "svelte": "^3.0.0 || ^4.0.0", "vite": "^3.0.0 || ^4.0.0" }, "engines": { @@ -79,5 +78,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/svelte-vite/src/preset.ts b/code/frameworks/svelte-vite/src/preset.ts index bf7a7f742511..220812cf7c5a 100644 --- a/code/frameworks/svelte-vite/src/preset.ts +++ b/code/frameworks/svelte-vite/src/preset.ts @@ -1,12 +1,16 @@ import { hasVitePlugins } from '@storybook/builder-vite'; import type { PresetProperty } from '@storybook/types'; +import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; import { handleSvelteKit } from './utils'; import { svelteDocgen } from './plugins/svelte-docgen'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/svelte', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/svelte'), }; export const viteFinal: NonNullable<StorybookConfig['viteFinal']> = async (config, options) => { diff --git a/code/frameworks/svelte-vite/src/utils.ts b/code/frameworks/svelte-vite/src/utils.ts index a59ab840ced7..87f2129aeb9f 100644 --- a/code/frameworks/svelte-vite/src/utils.ts +++ b/code/frameworks/svelte-vite/src/utils.ts @@ -1,7 +1,6 @@ import type { PluginOption } from 'vite'; import type { Options } from '@storybook/types'; import dedent from 'ts-dedent'; -import { logger } from '@storybook/node-logger'; import { hasVitePlugins } from '@storybook/builder-vite'; /** @@ -25,8 +24,7 @@ export async function handleSvelteKit(plugins: PluginOption[], options: Options) ]); if (hasSvelteKitPlugins && framework !== '@storybook/sveltekit') { - logger.error( - dedent` + throw new Error(dedent` We've detected a SvelteKit project using the @storybook/svelte-vite framework, which is not supported in Storybook 7.0 Please use the @storybook/sveltekit framework instead. You can migrate automatically by running @@ -34,8 +32,6 @@ export async function handleSvelteKit(plugins: PluginOption[], options: Options) npx storybook@latest automigrate See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#sveltekit-needs-the-storybooksveltekit-framework - ` - ); - throw new Error(); + `); } } diff --git a/code/frameworks/svelte-webpack5/README.md b/code/frameworks/svelte-webpack5/README.md index 6a6202a960e3..d490ff6af11c 100644 --- a/code/frameworks/svelte-webpack5/README.md +++ b/code/frameworks/svelte-webpack5/README.md @@ -24,9 +24,9 @@ You can also build a [static version](https://storybook.js.org/docs/svelte/shari ## TODOs -- [ ] Support `addon-info` -- [ ] Support Svelte markup directly in stories -- [ ] Add Svelte storybook generator -- [ ] Provide stories that show advanced Svelte use cases -- [ ] Hydratable -- [ ] Advanced mount options +- Support `addon-info` +- Support Svelte markup directly in stories +- Add Svelte storybook generator +- Provide stories that show advanced Svelte use cases +- Hydratable +- Advanced mount options diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index a9438b36864a..103b0c11b108 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,31 +37,31 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preset-svelte-webpack": "7.1.0-alpha.17", - "@storybook/svelte": "7.1.0-alpha.17" + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preset-svelte-webpack": "workspace:*", + "@storybook/svelte": "workspace:*" }, "devDependencies": { - "svelte": "^3.48.0", - "svelte-loader": "^3.1.2", + "svelte": "^4.0.0", + "svelte-loader": "^3.1.9", "typescript": "~4.9.3" }, "peerDependencies": { "@babel/core": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "svelte": "^3.48.0", + "svelte": "^3.48.0 || ^4.0.0", "svelte-loader": "*" }, "engines": { @@ -77,5 +77,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/svelte-webpack5/src/preset.ts b/code/frameworks/svelte-webpack5/src/preset.ts index 7486869f3b61..176bce0c0bc5 100644 --- a/code/frameworks/svelte-webpack5/src/preset.ts +++ b/code/frameworks/svelte-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-svelte-webpack'), + getAbsolutePath('@storybook/preset-svelte-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,9 +15,9 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/svelte'), + renderer: getAbsolutePath('@storybook/svelte'), }; }; diff --git a/code/frameworks/sveltekit/README.md b/code/frameworks/sveltekit/README.md index 0777e8fe9ed5..467643ee1ae5 100644 --- a/code/frameworks/sveltekit/README.md +++ b/code/frameworks/sveltekit/README.md @@ -26,10 +26,10 @@ However SvelteKit has some [Kit-specific modules](https://kit.svelte.dev/docs/mo | **Module** | **Status** | **Note** | | ---------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | [`$app/environment`](https://kit.svelte.dev/docs/modules#$app-environment) | ✅ Supported | `version` is always empty in Storybook. | -| [`$app/forms`](https://kit.svelte.dev/docs/modules#$app-forms) | ⏳ Planned for 7.1 | Will use mocks. Tracked in [#20999](https://github.com/storybookjs/storybook/issues/20999) | -| [`$app/navigation`](https://kit.svelte.dev/docs/modules#$app-navigation) | ⏳ Planned for 7.1 | Will use mocks. Tracked in [#20999](https://github.com/storybookjs/storybook/issues/20999) | +| [`$app/forms`](https://kit.svelte.dev/docs/modules#$app-forms) | ⏳ Future | Will use mocks. Tracked in [#20999](https://github.com/storybookjs/storybook/issues/20999) | +| [`$app/navigation`](https://kit.svelte.dev/docs/modules#$app-navigation) | ⏳ Future | Will use mocks. Tracked in [#20999](https://github.com/storybookjs/storybook/issues/20999) | | [`$app/paths`](https://kit.svelte.dev/docs/modules#$app-paths) | ✅ Supported | Requires SvelteKit 1.4.0 or newer | -| [`$app/stores`](https://kit.svelte.dev/docs/modules#$app-stores) | ✅ Supported | Mocks planned for 7.1, so you can set different store values per story. | +| [`$app/stores`](https://kit.svelte.dev/docs/modules#$app-stores) | ✅ Supported | Mocks planned, so you can set different store values per story. | | [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private) | ⛔ Not supported | They are meant to only be available server-side, and Storybook renders all components on the client. | | [`$env/dynamic/public`](https://kit.svelte.dev/docs/modules#$env-dynamic-public) | 🚧 Partially supported | Only supported in development mode. Storybook is built as a static app with no server-side API so cannot dynamically serve content. | | [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private) | ⛔ Not supported | They are meant to only be available server-side, and Storybook renders all components on the client. | diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index f6374c8ee262..65c0126339f1 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for SvelteKit", "keywords": [ "storybook", @@ -40,19 +40,19 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/svelte": "7.1.0-alpha.17", - "@storybook/svelte-vite": "7.1.0-alpha.17" + "@storybook/builder-vite": "workspace:*", + "@storybook/svelte": "workspace:*", + "@storybook/svelte-vite": "workspace:*" }, "devDependencies": { "@types/node": "^16.0.0", @@ -60,6 +60,7 @@ "vite": "^4.0.0" }, "peerDependencies": { + "svelte": "^3.0.0 || ^4.0.0", "vite": "^4.0.0" }, "engines": { @@ -75,5 +76,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/sveltekit/src/preset.ts b/code/frameworks/sveltekit/src/preset.ts index 6c98e344eff4..e92e45079f63 100644 --- a/code/frameworks/sveltekit/src/preset.ts +++ b/code/frameworks/sveltekit/src/preset.ts @@ -2,12 +2,16 @@ import { viteFinal as svelteViteFinal } from '@storybook/svelte-vite/preset'; import type { PresetProperty } from '@storybook/types'; import { withoutVitePlugins } from '@storybook/builder-vite'; +import { dirname, join } from 'path'; import { configOverrides } from './plugins/config-overrides'; import { type StorybookConfig } from './types'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/svelte', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/svelte'), }; export const viteFinal: NonNullable<StorybookConfig['viteFinal']> = async (config, options) => { diff --git a/code/frameworks/vue-vite/package.json b/code/frameworks/vue-vite/package.json index 6efbb0edb423..d06d2f8e7275 100644 --- a/code/frameworks/vue-vite/package.json +++ b/code/frameworks/vue-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue2 and Vite: Develop Vue2 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,21 +37,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/vue": "7.1.0-alpha.17", - "magic-string": "^0.27.0", + "@storybook/builder-vite": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/vue": "workspace:*", + "magic-string": "^0.30.0", "vue-docgen-api": "^4.40.0" }, "devDependencies": { @@ -78,5 +78,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/vue-vite/src/preset.ts b/code/frameworks/vue-vite/src/preset.ts index f047581dd797..bf5b7d45ea5b 100644 --- a/code/frameworks/vue-vite/src/preset.ts +++ b/code/frameworks/vue-vite/src/preset.ts @@ -1,21 +1,22 @@ -import path from 'path'; +import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import { mergeConfig } from 'vite'; import type { StorybookConfig } from './types'; import { vueDocgen } from './plugins/vue-docgen'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { const framework = await options.presets.apply<StorybookConfig['framework']>('framework'); return { ...config, builder: { - name: path.dirname( - require.resolve(path.join('@storybook/builder-vite', 'package.json')) - ) as '@storybook/builder-vite', + name: getAbsolutePath('@storybook/builder-vite'), options: typeof framework === 'string' ? {} : framework?.options.builder || {}, }, - renderer: '@storybook/vue', + renderer: getAbsolutePath('@storybook/vue'), }; }; diff --git a/code/frameworks/vue-webpack5/package.json b/code/frameworks/vue-webpack5/package.json index 040db8a99f80..fb9e2fad0834 100644 --- a/code/frameworks/vue-webpack5/package.json +++ b/code/frameworks/vue-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,20 +37,20 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preset-vue-webpack": "7.1.0-alpha.17", - "@storybook/vue": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preset-vue-webpack": "workspace:*", + "@storybook/vue": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -82,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/vue-webpack5/src/preset.ts b/code/frameworks/vue-webpack5/src/preset.ts index 911ea437f8bd..661053fddefb 100644 --- a/code/frameworks/vue-webpack5/src/preset.ts +++ b/code/frameworks/vue-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-vue-webpack'), + getAbsolutePath('@storybook/preset-vue-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,10 +15,10 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/vue'), + renderer: getAbsolutePath('@storybook/vue'), }; }; diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 9de599b32f65..b128c08736e5 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,21 +37,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/vue3": "7.1.0-alpha.17", + "@storybook/builder-vite": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/vue3": "workspace:*", "@vitejs/plugin-vue": "^4.0.0", - "magic-string": "^0.27.0", + "magic-string": "^0.30.0", "vue-docgen-api": "^4.40.0" }, "devDependencies": { @@ -77,5 +77,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/vue3-vite/src/preset.ts b/code/frameworks/vue3-vite/src/preset.ts index 7af3f31056e7..b987f0381c0b 100644 --- a/code/frameworks/vue3-vite/src/preset.ts +++ b/code/frameworks/vue3-vite/src/preset.ts @@ -1,19 +1,23 @@ import { hasVitePlugins } from '@storybook/builder-vite'; import type { PresetProperty } from '@storybook/types'; import { mergeConfig, type PluginOption } from 'vite'; +import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; import { vueDocgen } from './plugins/vue-docgen'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/vue3', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/vue3'), }; export const viteFinal: StorybookConfig['viteFinal'] = async (config, { presets }) => { const plugins: PluginOption[] = []; // Add vue plugin if not present - if (!(await hasVitePlugins(config.plugins, ['vite:vue']))) { + if (!(config.plugins && (await hasVitePlugins(config.plugins, ['vite:vue'])))) { const { default: vue } = await import('@vitejs/plugin-vue'); plugins.push(vue()); } diff --git a/code/frameworks/vue3-vite/tsconfig.json b/code/frameworks/vue3-vite/tsconfig.json index 5a2a397f2eb4..bbd5d9a38f99 100644 --- a/code/frameworks/vue3-vite/tsconfig.json +++ b/code/frameworks/vue3-vite/tsconfig.json @@ -5,7 +5,7 @@ "types": ["node"], "skipLibCheck": true, "resolveJsonModule": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 528d692336ea..42ed51c28629 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,20 +37,20 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preset-vue3-webpack": "7.1.0-alpha.17", - "@storybook/vue3": "7.1.0-alpha.17", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preset-vue3-webpack": "workspace:*", + "@storybook/vue3": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -79,5 +79,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/vue3-webpack5/src/preset.ts b/code/frameworks/vue3-webpack5/src/preset.ts index 1ace38e86044..0dd1e931ddd4 100644 --- a/code/frameworks/vue3-webpack5/src/preset.ts +++ b/code/frameworks/vue3-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-vue3-webpack'), + getAbsolutePath('@storybook/preset-vue3-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,10 +15,10 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/vue3'), + renderer: getAbsolutePath('@storybook/vue3'), }; }; diff --git a/code/frameworks/vue3-webpack5/tsconfig.json b/code/frameworks/vue3-webpack5/tsconfig.json index 40813306fd49..a7475d986d4d 100644 --- a/code/frameworks/vue3-webpack5/tsconfig.json +++ b/code/frameworks/vue3-webpack5/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "resolveJsonModule": true, "skipLibCheck": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 7a4fc1c8675b..c3f54f4b9496 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -37,21 +37,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/web-components": "7.1.0-alpha.17", - "magic-string": "^0.27.0" + "@storybook/builder-vite": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/web-components": "workspace:*", + "magic-string": "^0.30.0" }, "devDependencies": { "@types/node": "^16.0.0", @@ -74,5 +74,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/web-components-vite/src/preset.ts b/code/frameworks/web-components-vite/src/preset.ts index cd53f7d76283..a3bb7c4d66a2 100644 --- a/code/frameworks/web-components-vite/src/preset.ts +++ b/code/frameworks/web-components-vite/src/preset.ts @@ -1,7 +1,11 @@ import type { PresetProperty } from '@storybook/types'; +import { dirname, join } from 'path'; import type { StorybookConfig } from './types'; +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@storybook/builder-vite', - renderer: '@storybook/web-components', + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@storybook/web-components'), }; diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 298658201514..313240f36100 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", @@ -40,21 +40,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/preset-env": "^7.20.2", - "@storybook/builder-webpack5": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preset-web-components-webpack": "7.1.0-alpha.17", - "@storybook/web-components": "7.1.0-alpha.17", + "@babel/preset-env": "^7.22.9", + "@storybook/builder-webpack5": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/preset-web-components-webpack": "workspace:*", + "@storybook/web-components": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -79,5 +79,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/frameworks/web-components-webpack5/src/preset.ts b/code/frameworks/web-components-webpack5/src/preset.ts index 930e7d3f906b..101539931f27 100644 --- a/code/frameworks/web-components-webpack5/src/preset.ts +++ b/code/frameworks/web-components-webpack5/src/preset.ts @@ -2,10 +2,11 @@ import { dirname, join } from 'path'; import type { PresetProperty } from '@storybook/types'; import type { StorybookConfig } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = <I extends string>(input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const addons: PresetProperty<'addons', StorybookConfig> = [ - wrapForPnP('@storybook/preset-web-components-webpack'), + getAbsolutePath('@storybook/preset-web-components-webpack'), ]; export const core: PresetProperty<'core', StorybookConfig> = async (config, options) => { @@ -14,9 +15,9 @@ export const core: PresetProperty<'core', StorybookConfig> = async (config, opti return { ...config, builder: { - name: wrapForPnP('@storybook/builder-webpack5') as '@storybook/builder-webpack5', + name: getAbsolutePath('@storybook/builder-webpack5'), options: typeof framework === 'string' ? {} : framework.options.builder || {}, }, - renderer: wrapForPnP('@storybook/web-components'), + renderer: getAbsolutePath('@storybook/web-components'), }; }; diff --git a/code/jest.config.base.js b/code/jest.config.base.js index a11bd93617bf..9fdc75f588a9 100644 --- a/code/jest.config.base.js +++ b/code/jest.config.base.js @@ -28,21 +28,25 @@ const modulesToTransform = [ 'decode-named-character-reference', 'estree', 'is-absolute-url', - 'lit', 'lit-html', + 'lit', 'mdast', 'micromark', 'nanoid', + 'node-fetch', 'remark', 'rxjs', + 'data-uri-to-buffer', + 'fetch-blob', + 'formdata-polyfill', 'slash', 'space-separated-tokens', 'stringify-entities', 'unified', 'unist', 'uuid', - 'vfile', 'vfile-message', + 'vfile', 'zwitch', ]; @@ -83,6 +87,8 @@ module.exports = { '/prebuilt/', '/generators/', '/template/', + // The export format used in the following file is not supported by jest. + '/code/frameworks/nextjs/src/next-image-loader-stub.ts', '/__mocks__ /', '/__mockdata__/', '/__mocks-ng-workspace__/', diff --git a/code/jest.config.js b/code/jest.config.js index 2e7ab7cee982..a3527914bcb8 100644 --- a/code/jest.config.js +++ b/code/jest.config.js @@ -3,6 +3,7 @@ module.exports = { '<rootDir>/addons/*', '<rootDir>/frameworks/*', '<rootDir>/lib/*', + '<rootDir>/builders/*', '<rootDir>/renderers/*', '<rootDir>/ui/!(node_modules)*', ], diff --git a/code/lerna.json b/code/lerna.json index 4c1532646963..c4881ba783a9 100644 --- a/code/lerna.json +++ b/code/lerna.json @@ -2,5 +2,5 @@ "npmClient": "yarn", "useWorkspaces": true, "registry": "https://registry.npmjs.org", - "version": "7.1.0-alpha.17" + "version": "7.1.0-alpha.29" } diff --git a/code/lib/builder-vite/src/codegen-set-addon-channel.ts b/code/lib/builder-vite/src/codegen-set-addon-channel.ts deleted file mode 100644 index 233590f43083..000000000000 --- a/code/lib/builder-vite/src/codegen-set-addon-channel.ts +++ /dev/null @@ -1,15 +0,0 @@ -export async function generateAddonSetupCode() { - return ` - import { createChannel as createPostMessageChannel } from '@storybook/channel-postmessage'; - import { createChannel as createWebSocketChannel } from '@storybook/channel-websocket'; - import { addons } from '@storybook/preview-api'; - - const channel = createPostMessageChannel({ page: 'preview' }); - addons.setChannel(channel); - window.__STORYBOOK_ADDONS_CHANNEL__ = channel; - - const serverChannel = createWebSocketChannel({}); - addons.setServerChannel(serverChannel); - window.__STORYBOOK_SERVER_CHANNEL__ = serverChannel; - `.trim(); -} diff --git a/code/lib/builder-webpack5/jest.config.js b/code/lib/builder-webpack5/jest.config.js deleted file mode 100644 index 343e4c7a7f32..000000000000 --- a/code/lib/builder-webpack5/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.node'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/lib/builder-webpack5/src/preview/babel-loader-preview.ts b/code/lib/builder-webpack5/src/preview/babel-loader-preview.ts deleted file mode 100644 index 154200161553..000000000000 --- a/code/lib/builder-webpack5/src/preview/babel-loader-preview.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { getProjectRoot } from '@storybook/core-common'; -import type { TypescriptOptions } from '../types'; - -export const createBabelLoader = ( - options: any, - typescriptOptions: TypescriptOptions, - excludes: string[] = [] -) => { - return { - test: typescriptOptions.skipBabel ? /\.(mjs|jsx?)$/ : /\.(mjs|tsx?|jsx?)$/, - use: [ - { - loader: require.resolve('babel-loader'), - options, - }, - ], - include: [getProjectRoot()], - exclude: [/node_modules/, ...excludes], - }; -}; diff --git a/code/lib/channel-postmessage/src/typings.d.ts b/code/lib/channel-postmessage/src/typings.d.ts deleted file mode 100644 index 5c3e4f56f641..000000000000 --- a/code/lib/channel-postmessage/src/typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare var CHANNEL_OPTIONS: any; diff --git a/code/lib/channel-websocket/package.json b/code/lib/channel-websocket/package.json deleted file mode 100644 index 83a81bbecb83..000000000000 --- a/code/lib/channel-websocket/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "@storybook/channel-websocket", - "version": "7.1.0-alpha.17", - "description": "", - "keywords": [ - "storybook" - ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/channel-websocket", - "bugs": { - "url": "https://github.com/storybookjs/storybook/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/lib/channel-websocket" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "license": "MIT", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "node": "./dist/index.js", - "require": "./dist/index.js", - "import": "./dist/index.mjs" - }, - "./package.json": "./package.json" - }, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**/*", - "README.md", - "*.js", - "*.d.ts" - ], - "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", - "prep": "../../../scripts/prepare/bundle.ts" - }, - "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/global": "^5.0.0", - "telejson": "^7.0.3", - "tiny-invariant": "^1.3.1" - }, - "devDependencies": { - "typescript": "~4.9.3" - }, - "publishConfig": { - "access": "public" - }, - "bundler": { - "entries": [ - "./src/index.ts" - ] - }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" -} diff --git a/code/lib/channel-websocket/src/typings.d.ts b/code/lib/channel-websocket/src/typings.d.ts deleted file mode 100644 index 36dadd3de8aa..000000000000 --- a/code/lib/channel-websocket/src/typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'json-fn'; diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 844e4137c6c7..ac827abaed76 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -27,21 +27,55 @@ "require": "./dist/index.js", "import": "./dist/index.mjs" }, + "./dist/postmessage/index": { + "types": "./dist/postmessage/index.d.ts", + "node": "./dist/postmessage/index.js", + "require": "./dist/postmessage/index.js", + "import": "./dist/postmessage/index.mjs" + }, + "./dist/websocket/index": { + "types": "./dist/websocket/index.d.ts", + "node": "./dist/websocket/index.js", + "require": "./dist/websocket/index.js", + "import": "./dist/websocket/index.mjs" + }, "./package.json": "./package.json" }, "main": "dist/index.js", "module": "dist/index.mjs", "types": "dist/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/index.d.ts" + ], + "dist/postmessage/index": [ + "dist/postmessage/index.d.ts" + ], + "dist/websocket/index": [ + "dist/websocket/index.d.ts" + ] + } + }, "files": [ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, + "dependencies": { + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, "devDependencies": { "typescript": "~4.9.3" }, @@ -50,8 +84,10 @@ }, "bundler": { "entries": [ - "./src/index.ts" + "./src/index.ts", + "./src/postmessage/index.ts", + "./src/websocket/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/channels/src/index.test.ts b/code/lib/channels/src/index.test.ts index 886d2fa20800..8eb319f927fc 100644 --- a/code/lib/channels/src/index.test.ts +++ b/code/lib/channels/src/index.test.ts @@ -19,7 +19,7 @@ describe('Channel', () => { }); it('should not set transport if not passed as an argument', () => { - channel = new Channel(); + channel = new Channel({}); expect(channel.hasTransport).toBeFalsy(); }); @@ -29,7 +29,7 @@ describe('Channel', () => { }); it('should set isAsync to false as default value', () => { - channel = new Channel(); + channel = new Channel({}); expect(channel.isAsync).toBeFalsy(); }); @@ -104,8 +104,11 @@ describe('Channel', () => { listenerOutputData = data; }); const sendSpy = jest.fn(); - // @ts-expect-error (Converted from ts-ignore) - channel.transport.send = sendSpy; + // @ts-expect-error (access private property for testing purposes) + channel.transports.forEach((t) => { + // eslint-disable-next-line no-param-reassign + t.send = sendSpy; + }); channel.emit(eventName, ...listenerInputData); expect(listenerOutputData).toEqual(listenerInputData); expect(sendSpy.mock.calls[0][1]).toEqual({ depth: 1 }); diff --git a/code/lib/channels/src/index.ts b/code/lib/channels/src/index.ts index 9c7425690f05..fff392082cdd 100644 --- a/code/lib/channels/src/index.ts +++ b/code/lib/channels/src/index.ts @@ -1,149 +1,44 @@ -/// <reference types="node" /> +/* eslint-disable @typescript-eslint/triple-slash-reference */ +/// <reference path="./typings.d.ts" /> -export type ChannelHandler = (event: ChannelEvent) => void; +import { global } from '@storybook/global'; +import { Channel } from './main'; +import { PostMessageTransport } from './postmessage'; +import type { ChannelTransport, Config } from './types'; +import { WebsocketTransport } from './websocket'; -export interface ChannelTransport { - send(event: ChannelEvent, options?: any): void; - setHandler(handler: ChannelHandler): void; -} +const { CONFIG_TYPE } = global; -export interface ChannelEvent { - type: string; // eventName - from: string; - args: any[]; -} +export * from './main'; -export interface Listener { - (...args: any[]): void; -} - -interface EventsKeyValue { - [key: string]: Listener[]; -} +export default Channel; -interface ChannelArgs { - transport?: ChannelTransport; - async?: boolean; -} +export { createChannel as createPostMessageChannel, PostMessageTransport } from './postmessage'; +export { createChannel as createWebSocketChannel, WebsocketTransport } from './websocket'; -const generateRandomId = () => { - // generates a random 13 character string - return Math.random().toString(16).slice(2); +type Options = Config & { + extraTransports?: ChannelTransport[]; }; -export class Channel { - readonly isAsync: boolean; - - private sender = generateRandomId(); - - private events: EventsKeyValue = {}; - - private data: Record<string, any> = {}; - - private readonly transport: ChannelTransport | undefined = undefined; - - constructor({ transport, async = false }: ChannelArgs = {}) { - this.isAsync = async; - if (transport) { - this.transport = transport; - this.transport.setHandler((event) => this.handleEvent(event)); - } - } - - get hasTransport() { - return !!this.transport; - } - - addListener(eventName: string, listener: Listener) { - this.events[eventName] = this.events[eventName] || []; - this.events[eventName].push(listener); - } - - emit(eventName: string, ...args: any) { - const event: ChannelEvent = { type: eventName, args, from: this.sender }; - let options = {}; - if (args.length >= 1 && args[0] && args[0].options) { - options = args[0].options; - } - - const handler = () => { - if (this.transport) { - this.transport.send(event, options); - } - this.handleEvent(event); - }; - - if (this.isAsync) { - // todo I'm not sure how to test this - setImmediate(handler); - } else { - handler(); - } - } - - last(eventName: string) { - return this.data[eventName]; - } - - eventNames() { - return Object.keys(this.events); - } - - listenerCount(eventName: string) { - const listeners = this.listeners(eventName); - return listeners ? listeners.length : 0; - } - - listeners(eventName: string): Listener[] | undefined { - const listeners = this.events[eventName]; - return listeners || undefined; - } - - once(eventName: string, listener: Listener) { - const onceListener: Listener = this.onceListener(eventName, listener); - this.addListener(eventName, onceListener); - } - - removeAllListeners(eventName?: string) { - if (!eventName) { - this.events = {}; - } else if (this.events[eventName]) { - delete this.events[eventName]; - } - } - - removeListener(eventName: string, listener: Listener) { - const listeners = this.listeners(eventName); - if (listeners) { - this.events[eventName] = listeners.filter((l) => l !== listener); - } - } +/** + * Creates a new browser channel instance. + * @param {Options} options - The options object. + * @param {Page} options.page - The puppeteer page instance. + * @param {ChannelTransport[]} [options.extraTransports=[]] - An optional array of extra channel transports. + * @returns {Channel} - The new channel instance. + */ +export function createBrowserChannel({ page, extraTransports = [] }: Options): Channel { + const transports: ChannelTransport[] = [new PostMessageTransport({ page }), ...extraTransports]; - on(eventName: string, listener: Listener) { - this.addListener(eventName, listener); - } - - off(eventName: string, listener: Listener) { - this.removeListener(eventName, listener); - } + if (CONFIG_TYPE === 'DEVELOPMENT') { + const protocol = window.location.protocol === 'http:' ? 'ws' : 'wss'; + const { hostname, port } = window.location; + const channelUrl = `${protocol}://${hostname}:${port}/storybook-server-channel`; - private handleEvent(event: ChannelEvent) { - const listeners = this.listeners(event.type); - if (listeners && listeners.length) { - listeners.forEach((fn) => { - fn.apply(event, event.args); - }); - } - this.data[event.type] = event.args; + transports.push(new WebsocketTransport({ url: channelUrl, onError: () => {} })); } - private onceListener(eventName: string, listener: Listener) { - const onceListener: Listener = (...args: any[]) => { - this.removeListener(eventName, onceListener); - return listener(...args); - }; - return onceListener; - } + return new Channel({ transports }); } -export default Channel; +export type { Listener, ChannelEvent, ChannelTransport, ChannelHandler } from './types'; diff --git a/code/lib/channels/src/main.ts b/code/lib/channels/src/main.ts new file mode 100644 index 000000000000..ae8c2220529d --- /dev/null +++ b/code/lib/channels/src/main.ts @@ -0,0 +1,148 @@ +/// <reference types="node" /> + +import type { + ChannelArgs, + ChannelArgsMulti, + EventsKeyValue, + ChannelTransport, + ChannelArgsSingle, + Listener, + ChannelEvent, +} from './types'; + +const isMulti = (args: ChannelArgs): args is ChannelArgsMulti => { + // @ts-expect-error (we guard against this right here) + return args.transports !== undefined; +}; + +const generateRandomId = () => { + // generates a random 13 character string + return Math.random().toString(16).slice(2); +}; + +export class Channel { + readonly isAsync: boolean; + + private sender = generateRandomId(); + + private events: EventsKeyValue = {}; + + private data: Record<string, any> = {}; + + private readonly transports: ChannelTransport[] = []; + + constructor(input: ChannelArgsMulti); + constructor(input: ChannelArgsSingle); + constructor(input: ChannelArgs = {}) { + this.isAsync = input.async || false; + + if (isMulti(input)) { + this.transports = input.transports || []; + + this.transports.forEach((t) => { + t.setHandler((event) => this.handleEvent(event)); + }); + } else { + this.transports = input.transport ? [input.transport] : []; + } + + this.transports.forEach((t) => { + t.setHandler((event) => this.handleEvent(event)); + }); + } + + get hasTransport() { + return this.transports.length > 0; + } + + addListener(eventName: string, listener: Listener) { + this.events[eventName] = this.events[eventName] || []; + this.events[eventName].push(listener); + } + + emit(eventName: string, ...args: any) { + const event: ChannelEvent = { type: eventName, args, from: this.sender }; + let options = {}; + if (args.length >= 1 && args[0] && args[0].options) { + options = args[0].options; + } + + const handler = () => { + this.transports.forEach((t) => { + t.send(event, options); + }); + this.handleEvent(event); + }; + + if (this.isAsync) { + // todo I'm not sure how to test this + setImmediate(handler); + } else { + handler(); + } + } + + last(eventName: string) { + return this.data[eventName]; + } + + eventNames() { + return Object.keys(this.events); + } + + listenerCount(eventName: string) { + const listeners = this.listeners(eventName); + return listeners ? listeners.length : 0; + } + + listeners(eventName: string): Listener[] | undefined { + const listeners = this.events[eventName]; + return listeners || undefined; + } + + once(eventName: string, listener: Listener) { + const onceListener: Listener = this.onceListener(eventName, listener); + this.addListener(eventName, onceListener); + } + + removeAllListeners(eventName?: string) { + if (!eventName) { + this.events = {}; + } else if (this.events[eventName]) { + delete this.events[eventName]; + } + } + + removeListener(eventName: string, listener: Listener) { + const listeners = this.listeners(eventName); + if (listeners) { + this.events[eventName] = listeners.filter((l) => l !== listener); + } + } + + on(eventName: string, listener: Listener) { + this.addListener(eventName, listener); + } + + off(eventName: string, listener: Listener) { + this.removeListener(eventName, listener); + } + + private handleEvent(event: ChannelEvent) { + const listeners = this.listeners(event.type); + if (listeners && listeners.length) { + listeners.forEach((fn) => { + fn.apply(event, event.args); + }); + } + this.data[event.type] = event.args; + } + + private onceListener(eventName: string, listener: Listener) { + const onceListener: Listener = (...args: any[]) => { + this.removeListener(eventName, onceListener); + return listener(...args); + }; + return onceListener; + } +} diff --git a/code/lib/channels/src/postmessage/getEventSourceUrl.ts b/code/lib/channels/src/postmessage/getEventSourceUrl.ts new file mode 100644 index 000000000000..da3f4ec4d2f6 --- /dev/null +++ b/code/lib/channels/src/postmessage/getEventSourceUrl.ts @@ -0,0 +1,44 @@ +import { logger } from '@storybook/client-logger'; + +export const getEventSourceUrl = (event: MessageEvent) => { + const frames: HTMLIFrameElement[] = Array.from( + document.querySelectorAll('iframe[data-is-storybook]') + ); + // try to find the originating iframe by matching it's contentWindow + // This might not be cross-origin safe + const [frame, ...remainder] = frames.filter((element) => { + try { + return element.contentWindow === event.source; + } catch (err) { + // continue + } + + const src = element.getAttribute('src'); + let origin; + + try { + if (!src) { + return false; + } + + ({ origin } = new URL(src, document.location.toString())); + } catch (err) { + return false; + } + return origin === event.origin; + }); + + const src = frame?.getAttribute('src'); + if (src && remainder.length === 0) { + const { protocol, host, pathname } = new URL(src, document.location.toString()); + return `${protocol}//${host}${pathname}`; + } + + if (remainder.length > 0) { + // If we found multiple matches, there's going to be trouble + logger.error('found multiple candidates for event source'); + } + + // If we found no frames of matches + return null; +}; diff --git a/code/lib/channel-postmessage/src/index.ts b/code/lib/channels/src/postmessage/index.ts similarity index 79% rename from code/lib/channel-postmessage/src/index.ts rename to code/lib/channels/src/postmessage/index.ts index 164f26c305ba..312a8d756295 100644 --- a/code/lib/channel-postmessage/src/index.ts +++ b/code/lib/channels/src/postmessage/index.ts @@ -1,24 +1,24 @@ +/* eslint-disable @typescript-eslint/triple-slash-reference */ +/// <reference path="../typings.d.ts" /> + import { global } from '@storybook/global'; import * as EVENTS from '@storybook/core-events'; -import { Channel } from '@storybook/channels'; -import type { ChannelHandler, ChannelEvent, ChannelTransport } from '@storybook/channels'; import { logger, pretty } from '@storybook/client-logger'; import { isJSON, parse, stringify } from 'telejson'; import qs from 'qs'; import invariant from 'tiny-invariant'; +import { Channel } from '../main'; +import type { + ChannelTransport, + BufferedEvent, + ChannelHandler, + Config, + ChannelEvent, +} from '../types'; +import { getEventSourceUrl } from './getEventSourceUrl'; const { document, location } = global; -interface Config { - page: 'manager' | 'preview'; -} - -interface BufferedEvent { - event: ChannelEvent; - resolve: (value?: any) => void; - reject: (reason?: any) => void; -} - export const KEY = 'storybook-channel'; const defaultEventOptions = { allowFunction: true, maxDepth: 25 }; @@ -27,7 +27,7 @@ const defaultEventOptions = { allowFunction: true, maxDepth: 25 }; // that way we can send postMessage to child windows as well, not just iframe // https://stackoverflow.com/questions/6340160/how-to-get-the-references-of-all-already-opened-child-windows -export class PostmsgTransport implements ChannelTransport { +export class PostMessageTransport implements ChannelTransport { private buffer: BufferedEvent[]; private handler?: ChannelHandler; @@ -72,6 +72,7 @@ export class PostmsgTransport implements ChannelTransport { allowFunction, allowSymbol, allowDate, + allowError, allowUndefined, allowClass, maxDepth, @@ -85,6 +86,7 @@ export class PostmsgTransport implements ChannelTransport { allowFunction, allowSymbol, allowDate, + allowError, allowUndefined, allowClass, maxDepth, @@ -242,56 +244,24 @@ export class PostmsgTransport implements ChannelTransport { } } -const getEventSourceUrl = (event: MessageEvent) => { - const frames: HTMLIFrameElement[] = Array.from( - document.querySelectorAll('iframe[data-is-storybook]') - ); - // try to find the originating iframe by matching it's contentWindow - // This might not be cross-origin safe - const [frame, ...remainder] = frames.filter((element) => { - try { - return element.contentWindow === event.source; - } catch (err) { - // continue - } - - const src = element.getAttribute('src'); - let origin; - - try { - if (!src) { - return false; - } - - ({ origin } = new URL(src, document.location.toString())); - } catch (err) { - return false; - } - return origin === event.origin; - }); - - const src = frame?.getAttribute('src'); - if (src && remainder.length === 0) { - const { protocol, host, pathname } = new URL(src, document.location.toString()); - return `${protocol}//${host}${pathname}`; - } - - if (remainder.length > 0) { - // If we found multiple matches, there's going to be trouble - logger.error('found multiple candidates for event source'); - } - - // If we found no frames of matches - return null; -}; +/** + * @deprecated This export is deprecated. Use `PostMessageTransport` instead. This API will be removed in 8.0. + */ +export const PostmsgTransport = PostMessageTransport; /** - * Creates a channel which communicates with an iframe or child window. + * @deprecated This function is deprecated. Use the `createBrowserChannel` factory function from `@storybook/channels` instead. This API will be removed in 8.0. + * @param {Config} config - The configuration object. + * @returns {Channel} The channel instance. */ export function createChannel({ page }: Config): Channel { const transport = new PostmsgTransport({ page }); return new Channel({ transport }); } -// backwards compat with builder-vite +/** + * @deprecated This function is deprecated. Use the `createBrowserChannel` factory function from `@storybook/channels` instead. This API will be removed in 8.0. + * @param {Config} config - The configuration object. + * @returns {Channel} The channel instance. + */ export default createChannel; diff --git a/code/lib/channels/src/types.ts b/code/lib/channels/src/types.ts new file mode 100644 index 000000000000..f2904700cf1d --- /dev/null +++ b/code/lib/channels/src/types.ts @@ -0,0 +1,40 @@ +export interface Config { + page: 'manager' | 'preview'; +} + +export interface BufferedEvent { + event: ChannelEvent; + resolve: (value?: any) => void; + reject: (reason?: any) => void; +} + +export type ChannelHandler = (event: ChannelEvent) => void; + +export interface ChannelTransport { + send(event: ChannelEvent, options?: any): void; + setHandler(handler: ChannelHandler): void; +} + +export interface ChannelEvent { + type: string; // eventName + from: string; + args: any[]; +} + +export interface Listener { + (...args: any[]): void; +} + +export interface EventsKeyValue { + [key: string]: Listener[]; +} + +export type ChannelArgs = ChannelArgsSingle | ChannelArgsMulti; +export interface ChannelArgsSingle { + transport?: ChannelTransport; + async?: boolean; +} +export interface ChannelArgsMulti { + transports: ChannelTransport[]; + async?: boolean; +} diff --git a/code/lib/channels/src/typings.d.ts b/code/lib/channels/src/typings.d.ts new file mode 100644 index 000000000000..459ea6f109e6 --- /dev/null +++ b/code/lib/channels/src/typings.d.ts @@ -0,0 +1,2 @@ +declare var CHANNEL_OPTIONS: any; +declare var CONFIG_TYPE: 'DEVELOPMENT' | 'PRODUCTION'; diff --git a/code/lib/channel-websocket/src/index.ts b/code/lib/channels/src/websocket/index.ts similarity index 71% rename from code/lib/channel-websocket/src/index.ts rename to code/lib/channels/src/websocket/index.ts index 3738fea4eaa0..c07a96ffd71e 100644 --- a/code/lib/channel-websocket/src/index.ts +++ b/code/lib/channels/src/websocket/index.ts @@ -1,9 +1,12 @@ +/* eslint-disable @typescript-eslint/triple-slash-reference */ +/// <reference path="../typings.d.ts" /> + import { global } from '@storybook/global'; -import { Channel } from '@storybook/channels'; -import type { ChannelHandler } from '@storybook/channels'; import { logger } from '@storybook/client-logger'; import { isJSON, parse, stringify } from 'telejson'; import invariant from 'tiny-invariant'; +import { Channel } from '../main'; +import type { ChannelTransport, ChannelHandler } from '../types'; const { WebSocket } = global; @@ -20,12 +23,12 @@ interface CreateChannelArgs { onError?: OnError; } -export class WebsocketTransport { - private socket: WebSocket; +export class WebsocketTransport implements ChannelTransport { + private buffer: string[] = []; private handler?: ChannelHandler; - private buffer: string[] = []; + private socket: WebSocket; private isReady = false; @@ -75,6 +78,14 @@ export class WebsocketTransport { } } +/** + * @deprecated This function is deprecated. Use the `createBrowserChannel` factory function from `@storybook/channels` instead. This API will be removed in 8.0. + * @param {CreateChannelArgs} options - The options for creating the channel. + * @param {string} [options.url] - The URL of the WebSocket server to connect to. + * @param {boolean} [options.async=false] - Whether the channel should be asynchronous. + * @param {OnError} [options.onError] - A function to handle errors that occur during the channel's lifetime. + * @returns {Channel} - The newly created channel. + */ export function createChannel({ url, async = false, diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index e96e98f7360f..63a2425ecf9b 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook CLI", "keywords": [ "storybook" @@ -21,10 +21,10 @@ "license": "MIT", "bin": "./index.js", "dependencies": { - "@storybook/cli": "7.1.0-alpha.17" + "@storybook/cli": "workspace:*" }, "publishConfig": { "access": "public" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index d3711e9239bb..23b6bb60d308 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook CLI", "keywords": [ "storybook" @@ -24,10 +24,10 @@ "storybook": "./index.js" }, "dependencies": { - "@storybook/cli": "7.1.0-alpha.17" + "@storybook/cli": "workspace:*" }, "publishConfig": { "access": "public" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 4043b3538833..31f997910869 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook's CLI - easiest method of adding storybook to your projects", "keywords": [ "cli", @@ -46,26 +46,29 @@ "templates/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts", "test": "jest test/**/*.test.js" }, "dependencies": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/csf-tools": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/telemetry": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/codemod": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-server": "workspace:*", + "@storybook/csf-tools": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/telemetry": "workspace:*", + "@storybook/types": "workspace:*", "@types/semver": "^7.3.4", - "boxen": "^5.1.2", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", "commander": "^6.2.1", "cross-spawn": "^7.0.3", @@ -81,26 +84,26 @@ "globby": "^11.0.2", "jscodeshift": "^0.14.0", "leven": "^3.1.0", + "ora": "^5.4.1", "prettier": "^2.8.0", "prompts": "^2.4.0", "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "shelljs": "^0.8.5", - "simple-update-notifier": "^1.0.0", + "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "devDependencies": { - "@storybook/client-api": "7.1.0-alpha.17", + "@storybook/client-api": "workspace:*", "@types/cross-spawn": "^6.0.2", "@types/prompts": "^2.0.9", "@types/puppeteer-core": "^2.1.0", "@types/semver": "^7.3.4", - "@types/shelljs": "^0.8.7", "@types/util-deprecate": "^1.0.0", + "boxen": "^5.1.2", "slash": "^5.0.0", "strip-json-comments": "^3.1.1", "typescript": "~4.9.3" @@ -115,5 +118,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/cli/rendererAssets/common/Configure.mdx b/code/lib/cli/rendererAssets/common/Configure.mdx new file mode 100644 index 000000000000..40b04abb105a --- /dev/null +++ b/code/lib/cli/rendererAssets/common/Configure.mdx @@ -0,0 +1,364 @@ +import { Meta } from "@storybook/blocks"; + +import Github from "./assets/github.svg"; +import Discord from "./assets/discord.svg"; +import Youtube from "./assets/youtube.svg"; +import Tutorials from "./assets/tutorials.svg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; + +export const RightArrow = () => <svg + viewBox="0 0 14 14" + width="8px" + height="14px" + style={{ + marginLeft: '4px', + display: 'inline-block', + shapeRendering: 'inherit', + verticalAlign: 'middle', + fill: 'currentColor', + 'path fill': 'currentColor' + }} +> + <path d="m11.1 7.35-5.5 5.5a.5.5 0 0 1-.7-.7L10.04 7 4.9 1.85a.5.5 0 1 1 .7-.7l5.5 5.5c.2.2.2.5 0 .7Z" /> +</svg> + +<Meta title="Configure your project" /> + +<div className="sb-container"> + <div className='sb-section-title'> + # Configure your project + + Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. + </div> + <div className="sb-section"> + <div className="sb-section-item"> + <img + src={Styling} + alt="A wall of logos representing different styling technologies" + /> + <h4 className="sb-section-item-heading">Add styling and CSS</h4> + <p className="sb-section-item-paragraph">Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/configure/styling-and-css" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <img + src={Context} + alt="An abstraction representing the composition of data for a component" + /> + <h4 className="sb-section-item-heading">Provide context and mocking</h4> + <p className="sb-section-item-paragraph">Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/writing-stories/decorators#context-for-mocking" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-section-item"> + <img src={Assets} alt="A representation of typography and image assets" /> + <div> + <h4 className="sb-section-item-heading">Load assets and resources</h4> + <p className="sb-section-item-paragraph">To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/configure/images-and-assets" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className="sb-container"> + <div className='sb-section-title'> + # Do more with Storybook + + Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. + </div> + + <div className="sb-section"> + <div className="sb-features-grid"> + <div className="sb-grid-item"> + <img src={Docs} alt="A screenshot showing the autodocs tag being set, pointing a docs page being generated" /> + <h4 className="sb-section-item-heading">Autodocs</h4> + <p className="sb-section-item-paragraph">Auto-generate living, + interactive reference documentation from your components and stories.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/writing-docs/autodocs" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <img src={Share} alt="A browser window showing a Storybook being published to a chromatic.com URL" /> + <h4 className="sb-section-item-heading">Publish to Chromatic</h4> + <p className="sb-section-item-paragraph">Publish your Storybook to review and collaborate with your entire team.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/sharing/publish-storybook#publish-storybook-with-chromatic" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <img src={FigmaPlugin} alt="Windows showing the Storybook plugin in Figma" /> + <h4 className="sb-section-item-heading">Figma Plugin</h4> + <p className="sb-section-item-paragraph">Embed your stories into Figma to cross-reference the design and live + implementation in one place.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/sharing/design-integrations#embed-storybook-in-figma-with-the-plugin" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <img src={Testing} alt="Screenshot of tests passing and failing" /> + <h4 className="sb-section-item-heading">Testing</h4> + <p className="sb-section-item-paragraph">Use stories to test a component in all its variations, no matter how + complex.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/writing-tests/introduction" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <img src={Accessibility} alt="Screenshot of accessibility tests passing and failing" /> + <h4 className="sb-section-item-heading">Accessibility</h4> + <p className="sb-section-item-paragraph">Automatically test your components for a11y issues as you develop.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/writing-tests/accessibility-testing" + target="_blank" + >Learn more<RightArrow /></a> + </div> + <div className="sb-grid-item"> + <img src={Theming} alt="Screenshot of Storybook in light and dark mode" /> + <h4 className="sb-section-item-heading">Theming</h4> + <p className="sb-section-item-paragraph">Theme Storybook's UI to personalize it to your project.</p> + <a + href="https://storybook.js.org/docs/{{renderer}}/configure/theming" + target="_blank" + >Learn more<RightArrow /></a> + </div> + </div> + </div> +</div> +<div className='sb-addon'> + <div className='sb-addon-text'> + <h4>Addons</h4> + <p className="sb-section-item-paragraph">Integrate your tools with Storybook to connect workflows.</p> + <a + href="https://storybook.js.org/integrations/" + target="_blank" + >Discover all addons<RightArrow /></a> + </div> + <div className='sb-addon-img'> + <img src={AddonLibrary} alt="Integrate your tools with Storybook to connect workflows." /> + </div> +</div> + +<div className="sb-section sb-socials"> + <div className="sb-section-item"> + <img src={Github} alt="Github logo" className="sb-explore-image"/> + Join our contributors building the future of UI development. + + <a + href="https://github.com/storybookjs/storybook" + target="_blank" + >Star on GitHub<RightArrow /></a> + </div> + <div className="sb-section-item"> + <img src={Discord} alt="Discord logo" className="sb-explore-image"/> + <div> + Get support and chat with frontend developers. + + <a + href="https://discord.gg/storybook" + target="_blank" + >Join Discord server<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <img src={Youtube} alt="Youtube logo" className="sb-explore-image"/> + <div> + Watch tutorials, feature previews and interviews. + + <a + href="https://www.youtube.com/@chromaticui" + target="_blank" + >Watch on YouTube<RightArrow /></a> + </div> + </div> + <div className="sb-section-item"> + <img src={Tutorials} alt="A book" className="sb-explore-image"/> + <p>Follow guided walkthroughs on for key workflows.</p> + + <a + href="https://storybook.js.org/tutorials/" + target="_blank" + >Discover tutorials<RightArrow /></a> + </div> +</div> + +<style> + {` + .sb-container { + margin-bottom: 48px; + } + + .sb-section { + width: 100%; + display: flex; + flex-direction: row; + gap: 20px; + } + + img { + object-fit: cover; + } + + .sb-section-title { + margin-bottom: 32px; + } + + .sb-section a:not(h1 a, h2 a, h3 a) { + font-size: 14px; + } + + .sb-section-item, .sb-grid-item { + flex: 1; + display: flex; + flex-direction: column; + } + + .sb-section-item-heading { + padding-top: 20px !important; + padding-bottom: 5px !important; + margin: 0 !important; + } + .sb-section-item-paragraph { + margin: 0; + padding-bottom: 10px; + } + + .sb-chevron { + margin-left: 5px; + } + + .sb-features-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 32px 20px; + } + + .sb-socials { + display: grid; + grid-template-columns: repeat(4, 1fr); + } + + .sb-socials p { + margin-bottom: 10px; + } + + .sb-explore-image { + max-height: 32px; + align-self: flex-start; + } + + .sb-addon { + width: 100%; + display: flex; + align-items: center; + position: relative; + background-color: #EEF3F8; + border-radius: 5px; + border: 1px solid rgba(0, 0, 0, 0.05); + background: #EEF3F8; + height: 180px; + margin-bottom: 48px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 48px; + max-width: 240px; + } + + .sb-addon-text h4 { + padding-top: 0px; + } + + .sb-addon-img { + position: absolute; + left: 345px; + top: 0; + height: 100%; + width: 200%; + overflow: hidden; + } + + .sb-addon-img img { + width: 650px; + transform: rotate(-15deg); + margin-left: 40px; + margin-top: -72px; + box-shadow: 0 0 1px rgba(255, 255, 255, 0); + backface-visibility: hidden; + } + + @media screen and (max-width: 800px) { + .sb-addon-img { + left: 300px; + } + } + + @media screen and (max-width: 600px) { + .sb-section { + flex-direction: column; + } + + .sb-features-grid { + grid-template-columns: repeat(1, 1fr); + } + + .sb-socials { + grid-template-columns: repeat(2, 1fr); + } + + .sb-addon { + height: 280px; + align-items: flex-start; + padding-top: 32px; + overflow: hidden; + } + + .sb-addon-text { + padding-left: 24px; + } + + .sb-addon-img { + right: 0; + left: 0; + top: 130px; + bottom: 0; + overflow: hidden; + height: auto; + width: 124%; + } + + .sb-addon-img img { + width: 1200px; + transform: rotate(-12deg); + margin-left: 0; + margin-top: 48px; + margin-bottom: -40px; + margin-left: -24px; + } + } + `} +</style> diff --git a/code/lib/cli/rendererAssets/common/Introduction.mdx b/code/lib/cli/rendererAssets/common/Introduction.mdx deleted file mode 100644 index ff7fc71fbf8a..000000000000 --- a/code/lib/cli/rendererAssets/common/Introduction.mdx +++ /dev/null @@ -1,213 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; - -<Meta title="Example/Introduction" /> - -<style> - {` - .subheading { - --mediumdark: '#999999'; - font-weight: 700; - font-size: 13px; - color: #999; - letter-spacing: 6px; - line-height: 24px; - text-transform: uppercase; - margin-bottom: 12px; - margin-top: 40px; - } - - .link-list { - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr 1fr; - row-gap: 10px; - } - - @media (min-width: 620px) { - .link-list { - row-gap: 20px; - column-gap: 20px; - grid-template-columns: 1fr 1fr; - } - } - - @media all and (-ms-high-contrast:none) { - .link-list { - display: -ms-grid; - -ms-grid-columns: 1fr 1fr; - -ms-grid-rows: 1fr 1fr; - } - } - - .link-item { - display: block; - padding: 20px; - border: 1px solid #00000010; - border-radius: 5px; - transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out; - color: #333333; - display: flex; - align-items: flex-start; - } - - .link-item:hover { - border-color: #1EA7FD50; - transform: translate3d(0, -3px, 0); - box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0; - } - - .link-item:active { - border-color: #1EA7FD; - transform: translate3d(0, 0, 0); - } - - .link-item strong { - font-weight: 700; - display: block; - margin-bottom: 2px; - } - - .link-item img { - height: 40px; - width: 40px; - margin-right: 15px; - flex: none; - } - - .link-item span, - .link-item p { - margin: 0; - font-size: 14px; - line-height: 20px; - } - - .tip { - display: inline-block; - border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; - background: #E7FDD8; - color: #66BF3C; - padding: 4px 12px; - margin-right: 10px; - vertical-align: top; - } - - .tip-wrapper { - font-size: 13px; - line-height: 20px; - margin-top: 40px; - margin-bottom: 40px; - } - - .tip-wrapper code { - font-size: 12px; - display: inline-block; - } - `} -</style> - -# Welcome to Storybook - -Storybook helps you build UI components in isolation from your app's business logic, data, and context. -That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. - -Browse example stories now by navigating to them in the sidebar. -View their code in the `stories` directory to learn how they work. -We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. - -<div className="subheading">Configure</div> - -<div className="link-list"> - <a - className="link-item" - href="https://storybook.js.org/docs/react/addons/addon-types" - target="_blank" - > - <img src={Plugin} alt="plugin" /> - <span> - <strong>Presets for popular tools</strong> - Easy setup for TypeScript, SCSS and more. - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/webpack" - target="_blank" - > - <img src={StackAlt} alt="Build" /> - <span> - <strong>Build configuration</strong> - How to customize webpack and Babel - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/configure/styling-and-css" - target="_blank" - > - <img src={Colors} alt="colors" /> - <span> - <strong>Styling</strong> - How to load and configure CSS libraries - </span> - </a> - <a - className="link-item" - href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack" - target="_blank" - > - <img src={Flow} alt="flow" /> - <span> - <strong>Data</strong> - Providers and mocking for data libraries - </span> - </a> -</div> - -<div className="subheading">Learn</div> - -<div className="link-list"> - <a className="link-item" href="https://storybook.js.org/docs" target="_blank"> - <img src={Repo} alt="repo" /> - <span> - <strong>Storybook documentation</strong> - Configure, customize, and extend - </span> - </a> - <a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank"> - <img src={Direction} alt="direction" /> - <span> - <strong>In-depth guides</strong> - Best practices from leading teams - </span> - </a> - <a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank"> - <img src={Code} alt="code" /> - <span> - <strong>GitHub project</strong> - View the source and add issues - </span> - </a> - <a className="link-item" href="https://discord.gg/storybook" target="_blank"> - <img src={Comments} alt="comments" /> - <span> - <strong>Discord chat</strong> - Chat with maintainers and the community - </span> - </a> -</div> - -<div className="tip-wrapper"> - <span className="tip">Tip</span>Edit the Markdown in{' '} - <code>stories/Introduction.stories.mdx</code> -</div> diff --git a/code/lib/cli/rendererAssets/common/assets/accessibility.png b/code/lib/cli/rendererAssets/common/assets/accessibility.png new file mode 100644 index 000000000000..6ffe6feabdc1 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/accessibility.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/accessibility.svg b/code/lib/cli/rendererAssets/common/assets/accessibility.svg new file mode 100644 index 000000000000..a3288830e348 --- /dev/null +++ b/code/lib/cli/rendererAssets/common/assets/accessibility.svg @@ -0,0 +1,5 @@ +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> + <title>Accessibility + + + \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/addon-library.png b/code/lib/cli/rendererAssets/common/assets/addon-library.png new file mode 100644 index 000000000000..95deb38a88de Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/addon-library.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/assets.png b/code/lib/cli/rendererAssets/common/assets/assets.png new file mode 100644 index 000000000000..cfba6817aeb6 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/assets.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/code-brackets.svg b/code/lib/cli/rendererAssets/common/assets/code-brackets.svg deleted file mode 100644 index 73de94776001..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/code-brackets.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/code-brackets \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/colors.svg b/code/lib/cli/rendererAssets/common/assets/colors.svg deleted file mode 100644 index 17d58d516e14..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/colors.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/colors \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/comments.svg b/code/lib/cli/rendererAssets/common/assets/comments.svg deleted file mode 100644 index 6493a139f523..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/comments.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/comments \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/context.png b/code/lib/cli/rendererAssets/common/assets/context.png new file mode 100644 index 000000000000..e5cd249a2d3a Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/context.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/direction.svg b/code/lib/cli/rendererAssets/common/assets/direction.svg deleted file mode 100644 index 65676ac27229..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/direction.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/direction \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/discord.svg b/code/lib/cli/rendererAssets/common/assets/discord.svg new file mode 100644 index 000000000000..1204df998d0e --- /dev/null +++ b/code/lib/cli/rendererAssets/common/assets/discord.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/code/lib/cli/rendererAssets/common/assets/docs.png b/code/lib/cli/rendererAssets/common/assets/docs.png new file mode 100644 index 000000000000..a749629df9ef Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/docs.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/figma-plugin.png b/code/lib/cli/rendererAssets/common/assets/figma-plugin.png new file mode 100644 index 000000000000..8f79b08cdf28 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/figma-plugin.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/flow.svg b/code/lib/cli/rendererAssets/common/assets/flow.svg deleted file mode 100644 index 8ac27db403c2..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/flow.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/flow \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/github.svg b/code/lib/cli/rendererAssets/common/assets/github.svg new file mode 100644 index 000000000000..158e0268a343 --- /dev/null +++ b/code/lib/cli/rendererAssets/common/assets/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/code/lib/cli/rendererAssets/common/assets/plugin.svg b/code/lib/cli/rendererAssets/common/assets/plugin.svg deleted file mode 100644 index 29e5c690c0a2..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/plugin.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/plugin \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/repo.svg b/code/lib/cli/rendererAssets/common/assets/repo.svg deleted file mode 100644 index f386ee902c1f..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/repo.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/repo \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/share.png b/code/lib/cli/rendererAssets/common/assets/share.png new file mode 100644 index 000000000000..8097a370777a Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/share.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/stackalt.svg b/code/lib/cli/rendererAssets/common/assets/stackalt.svg deleted file mode 100644 index 9b7ad2743506..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/stackalt.svg +++ /dev/null @@ -1 +0,0 @@ -illustration/stackalt \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/styling.png b/code/lib/cli/rendererAssets/common/assets/styling.png new file mode 100644 index 000000000000..d341e8263e40 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/styling.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/testing.png b/code/lib/cli/rendererAssets/common/assets/testing.png new file mode 100644 index 000000000000..d4ac39a0ced9 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/testing.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/theming.png b/code/lib/cli/rendererAssets/common/assets/theming.png new file mode 100644 index 000000000000..1535eb9b8192 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/theming.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/tutorials.svg b/code/lib/cli/rendererAssets/common/assets/tutorials.svg new file mode 100644 index 000000000000..4b2fc7c44b80 --- /dev/null +++ b/code/lib/cli/rendererAssets/common/assets/tutorials.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/code/lib/cli/rendererAssets/common/assets/youtube.svg b/code/lib/cli/rendererAssets/common/assets/youtube.svg new file mode 100644 index 000000000000..33a3a61f611e --- /dev/null +++ b/code/lib/cli/rendererAssets/common/assets/youtube.svg @@ -0,0 +1,4 @@ + + + + diff --git a/code/lib/cli/src/add.ts b/code/lib/cli/src/add.ts index efced649c957..a163e1f1e34f 100644 --- a/code/lib/cli/src/add.ts +++ b/code/lib/cli/src/add.ts @@ -1,56 +1,35 @@ -import path from 'path'; -import fs from 'fs'; -import { sync as spawnSync } from 'cross-spawn'; - import { getStorybookInfo } from '@storybook/core-common'; import { readConfig, writeConfig } from '@storybook/csf-tools'; +import SemVer from 'semver'; -import { commandLog } from './helpers'; import { JsPackageManagerFactory, useNpmWarning, type PackageManagerName, } from './js-package-manager'; +import { getStorybookVersion, isCorePackage } from './utils'; const logger = console; -const LEGACY_CONFIGS = ['addons', 'config', 'presets']; +interface PostinstallOptions { + packageManager: PackageManagerName; +} -const postinstallAddon = async (addonName: string, isOfficialAddon: boolean) => { - let skipMsg = null; - if (!isOfficialAddon) { - skipMsg = 'unofficial addon'; - } else if (!fs.existsSync('.storybook')) { - skipMsg = 'no .storybook config'; - } else { - skipMsg = 'no codmods found'; - LEGACY_CONFIGS.forEach((config) => { - try { - const codemod = require.resolve( - // @ts-expect-error (it is broken) - `${getPackageName(addonName, isOfficialAddon)}/postinstall/${config}.js` - ); - commandLog(`Running postinstall script for ${addonName}`)(); - let configFile = path.join('.storybook', `${config}.ts`); - if (!fs.existsSync(configFile)) { - configFile = path.join('.storybook', `${config}.js`); - if (!fs.existsSync(configFile)) { - fs.writeFileSync(configFile, '', 'utf8'); - } - } - spawnSync('npx', ['jscodeshift', '-t', codemod, configFile], { - stdio: 'inherit', - shell: true, - }); - skipMsg = null; - } catch (err) { - // resolve failed, skip - } - }); - } +const postinstallAddon = async (addonName: string, options: PostinstallOptions) => { + try { + const modulePath = require.resolve(`${addonName}/postinstall`, { paths: [process.cwd()] }); + // eslint-disable-next-line import/no-dynamic-require, global-require + const postinstall = require(modulePath); - if (skipMsg) { - commandLog(`Skipping postinstall for ${addonName}, ${skipMsg}`)(); + try { + logger.log(`Running postinstall script for ${addonName}`); + await postinstall(options); + } catch (e) { + logger.error(`Error running postinstall script for ${addonName}`); + logger.error(e); + } + } catch (e) { + // no postinstall script } }; @@ -83,7 +62,7 @@ export async function add( const packageJson = await packageManager.retrievePackageJson(); const [addonName, versionSpecifier] = getVersionSpecifier(addon); - const { mainConfig, version: storybookVersion } = getStorybookInfo(packageJson); + const { mainConfig } = getStorybookInfo(packageJson); if (!mainConfig) { logger.error('Unable to find storybook main.js config'); return; @@ -97,8 +76,12 @@ export async function add( // add to package.json const isStorybookAddon = addonName.startsWith('@storybook/'); - const version = versionSpecifier || (isStorybookAddon ? storybookVersion : latestVersion); - const addonWithVersion = `${addonName}@${version}`; + const isAddonFromCore = isCorePackage(addonName); + const storybookVersion = await getStorybookVersion(packageManager); + const version = versionSpecifier || (isAddonFromCore ? storybookVersion : latestVersion); + const addonWithVersion = SemVer.valid(version) + ? `${addonName}@^${version}` + : `${addonName}@${version}`; logger.log(`Installing ${addonWithVersion}`); await packageManager.addDependencies({ installAsDevDependencies: true }, [addonWithVersion]); @@ -107,7 +90,7 @@ export async function add( main.appendValueToArray(['addons'], addonName); await writeConfig(main); - if (!options.skipPostinstall) { - await postinstallAddon(addon, isStorybookAddon); + if (!options.skipPostinstall && isStorybookAddon) { + await postinstallAddon(addonName, { packageManager: pkgMgr }); } } diff --git a/code/lib/cli/src/automigrate/fixes/__test__/main-config-with-wrappers.js b/code/lib/cli/src/automigrate/fixes/__test__/main-config-with-wrappers.js new file mode 100644 index 000000000000..7e6280732df5 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/__test__/main-config-with-wrappers.js @@ -0,0 +1,21 @@ +import path from 'path'; + +const wrapForPnp = (packageName) => + path.dirname(require.resolve(path.join(packageName, 'package.json'))); + +const config = { + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + wrapForPnp('@storybook/addon-links'), + wrapForPnp('@storybook/addon-essentials'), + wrapForPnp('@storybook/addon-interactions'), + ], + framework: { + name: wrapForPnp('@storybook/angular'), + options: {}, + }, + docs: { + autodocs: 'tag', + }, +}; +export default config; diff --git a/code/lib/cli/src/automigrate/fixes/__test__/main-config-without-wrappers.js b/code/lib/cli/src/automigrate/fixes/__test__/main-config-without-wrappers.js new file mode 100644 index 000000000000..0979ef60ff60 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/__test__/main-config-without-wrappers.js @@ -0,0 +1,16 @@ +const config = { + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + ], + framework: { + name: '@storybook/angular', + options: {}, + }, + docs: { + autodocs: 'tag', + }, +}; +export default config; diff --git a/code/lib/cli/src/automigrate/fixes/add-react.test.ts b/code/lib/cli/src/automigrate/fixes/add-react.test.ts index 42bb20b60e2e..4602a30d3ecd 100644 --- a/code/lib/cli/src/automigrate/fixes/add-react.test.ts +++ b/code/lib/cli/src/automigrate/fixes/add-react.test.ts @@ -1,3 +1,4 @@ +import type { StorybookConfig } from '@storybook/types'; import type { JsPackageManager, PackageJson } from '../../js-package-manager'; import { addReact } from './add-react'; @@ -5,7 +6,12 @@ const checkAddReact = async (packageJson: PackageJson) => { const packageManager = { retrievePackageJson: async () => ({ dependencies: {}, devDependencies: {}, ...packageJson }), } as JsPackageManager; - return addReact.check({ packageManager }); + + return addReact.check({ + packageManager, + mainConfig: {} as StorybookConfig, + storybookVersion: '7.0.0', + }); }; describe('addReact fix', () => { diff --git a/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.test.ts b/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.test.ts index b376cca15a30..b9066b9c48f2 100644 --- a/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.test.ts +++ b/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.test.ts @@ -1,25 +1,20 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { angularBuildersMultiproject } from './angular-builders-multiproject'; import * as helpers from '../../helpers'; import * as angularHelpers from '../../generators/ANGULAR/helpers'; const checkAngularBuilders = async ({ - packageJson, - main: mainConfig = {}, - storybookVersion = '7.0.0', + packageManager, + mainConfig = {}, }: { - packageJson: PackageJson; - main?: Partial & Record; - storybookVersion?: string; + packageManager: Partial; + mainConfig?: Partial; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - - // mock file system (look at eslint plugin test) - return angularBuildersMultiproject.check({ - packageManager: makePackageManager(packageJson), + packageManager: packageManager as any, + mainConfig: mainConfig as any, + storybookVersion: '7.0.0', }); }; @@ -34,51 +29,69 @@ jest.mock('../../generators/ANGULAR/helpers', () => ({ })); describe('is Nx project', () => { + const packageManager = { + getPackageVersion: () => { + return null; + }, + } as Partial; + beforeEach(() => { - (helpers.isNxProject as any as jest.SpyInstance).mockReturnValue(true); + (helpers.isNxProject as any as jest.SpyInstance).mockResolvedValue(true); }); it('should return null', async () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0' }, - }; - - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect(checkAngularBuilders({ packageManager })).resolves.toBeNull(); }); }); describe('is not Nx project', () => { beforeEach(() => { - (helpers.isNxProject as any as jest.SpyInstance).mockReturnValue(false); + (helpers.isNxProject as any as jest.SpyInstance).mockResolvedValue(false); }); describe('angular builders', () => { afterEach(jest.restoreAllMocks); describe('Angular not found', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0' }, - }; + const packageManager = { + getPackageVersion: jest.fn().mockResolvedValue(null), + } as Partial; it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ packageManager, mainConfig: { framework: '@storybook/angular' } }) + ).resolves.toBeNull(); }); }); describe('Angular < 14.0.0', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0', '@angular/core': '^12.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + if (packageName === '@angular/core') { + return Promise.resolve('12.0.0'); + } + + return null; + }, + } as Partial; it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ packageManager, mainConfig: { framework: '@storybook/angular' } }) + ).resolves.toBeNull(); }); }); describe('Angular >= 14.0.0', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0', '@angular/core': '^15.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + if (packageName === '@angular/core') { + return Promise.resolve('15.0.0'); + } + + return null; + }, + } as Partial; describe('has one Storybook builder defined', () => { beforeEach(() => { @@ -89,7 +102,12 @@ describe('is not Nx project', () => { }); it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toBeNull(); }); }); @@ -106,7 +124,12 @@ describe('is not Nx project', () => { }); it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toBeNull(); }); }); @@ -124,7 +147,12 @@ describe('is not Nx project', () => { }); it('should return an empty object', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toMatchObject({}); + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toMatchObject({}); }); }); }); diff --git a/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.ts b/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.ts index 2cd0a42fa987..229f3aaf9394 100644 --- a/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.ts +++ b/code/lib/cli/src/automigrate/fixes/angular-builders-multiproject.ts @@ -4,6 +4,7 @@ import chalk from 'chalk'; import type { Fix } from '../types'; import { isNxProject } from '../../helpers'; import { AngularJSON } from '../../generators/ANGULAR/helpers'; +import { getFrameworkPackageName } from '../helpers/mainConfigFile'; // eslint-disable-next-line @typescript-eslint/no-empty-interface interface AngularBuildersMultiprojectRunOptions {} @@ -12,25 +13,17 @@ export const angularBuildersMultiproject: Fix throw an error (only supports ng 14) - if (semver.lt(angularCoerced, '14.0.0')) { + const angularVersion = await packageManager.getPackageVersion('@angular/core'); + const frameworkPackageName = getFrameworkPackageName(mainConfig); + + if ( + (await isNxProject()) || + frameworkPackageName !== '@storybook/angular' || + !angularVersion || + semver.lt(angularVersion, '14.0.0') + ) { return null; } diff --git a/code/lib/cli/src/automigrate/fixes/angular-builders.test.ts b/code/lib/cli/src/automigrate/fixes/angular-builders.test.ts index d7505da9e567..8f1f0650deb6 100644 --- a/code/lib/cli/src/automigrate/fixes/angular-builders.test.ts +++ b/code/lib/cli/src/automigrate/fixes/angular-builders.test.ts @@ -1,25 +1,22 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import { angularBuilders } from './angular-builders'; import * as helpers from '../../helpers'; import * as angularHelpers from '../../generators/ANGULAR/helpers'; +import type { JsPackageManager } from '../../js-package-manager'; const checkAngularBuilders = async ({ - packageJson, - main: mainConfig = {}, + packageManager, + mainConfig = {}, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; - main?: Partial & Record; + packageManager: Partial; + mainConfig?: Partial; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - - // mock file system (look at eslint plugin test) - return angularBuilders.check({ - packageManager: makePackageManager(packageJson), + packageManager: packageManager as any, + storybookVersion, + mainConfig: mainConfig as any, }); }; @@ -35,50 +32,70 @@ jest.mock('../../generators/ANGULAR/helpers', () => ({ describe('is Nx project', () => { beforeEach(() => { - (helpers.isNxProject as any as jest.SpyInstance).mockReturnValue(true); + (helpers.isNxProject as any as jest.SpyInstance).mockResolvedValue(true); }); - it('should return null', async () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0' }, - }; + const packageManager = { + getPackageVersion: jest.fn().mockImplementation((packageName) => { + if (packageName === '@angular/core') { + return '12.0.0'; + } + + return null; + }), + } as Partial; - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + it('should return null', async () => { + await expect(checkAngularBuilders({ packageManager })).resolves.toBeNull(); }); }); describe('is not Nx project', () => { beforeEach(() => { - (helpers.isNxProject as any as jest.SpyInstance).mockReturnValue(false); + (helpers.isNxProject as any as jest.SpyInstance).mockResolvedValue(false); }); describe('angular builders', () => { afterEach(jest.restoreAllMocks); describe('Angular not found', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0' }, - }; + const packageManager = { + getPackageVersion: jest.fn().mockReturnValue(null), + } as Partial; it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect(checkAngularBuilders({ packageManager })).resolves.toBeNull(); }); }); describe('Angular < 14.0.0', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0', '@angular/core': '^12.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName: string) => { + if (packageName === '@angular/core') { + return Promise.resolve('12.0.0'); + } + + return null; + }, + } as Partial; it('should throw an Error', async () => { - await expect(checkAngularBuilders({ packageJson })).rejects.toThrowErrorMatchingSnapshot(); + await expect( + checkAngularBuilders({ packageManager, mainConfig: { framework: '@storybook/angular' } }) + ).rejects.toThrowErrorMatchingSnapshot(); }); }); describe('Angular >= 14.0.0', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0', '@angular/core': '^15.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + if (packageName === '@angular/core') { + return Promise.resolve('15.0.0'); + } + + return null; + }, + } as Partial; describe('has one Storybook builder defined', () => { beforeEach(() => { @@ -89,7 +106,12 @@ describe('is not Nx project', () => { }); it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toBeNull(); }); }); @@ -107,7 +129,12 @@ describe('is not Nx project', () => { }); it('should return null', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toBeNull(); + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toBeNull(); }); }); @@ -124,7 +151,12 @@ describe('is not Nx project', () => { }); it('should proceed and return data', async () => { - await expect(checkAngularBuilders({ packageJson })).resolves.toMatchObject({ + await expect( + checkAngularBuilders({ + packageManager, + mainConfig: { framework: '@storybook/angular' }, + }) + ).resolves.toMatchObject({ mainConfig: {}, packageManager: {}, }); diff --git a/code/lib/cli/src/automigrate/fixes/angular-builders.ts b/code/lib/cli/src/automigrate/fixes/angular-builders.ts index 884db5e9f0b6..626723f091ff 100644 --- a/code/lib/cli/src/automigrate/fixes/angular-builders.ts +++ b/code/lib/cli/src/automigrate/fixes/angular-builders.ts @@ -4,10 +4,10 @@ import type { StorybookConfig } from '@storybook/types'; import chalk from 'chalk'; import prompts from 'prompts'; import type { Fix } from '../types'; -import { getStorybookData } from '../helpers/mainConfigFile'; import { isNxProject } from '../../helpers'; import { AngularJSON } from '../../generators/ANGULAR/helpers'; import type { JsPackageManager } from '../../js-package-manager'; +import { getFrameworkPackageName } from '../helpers/mainConfigFile'; interface AngularBuildersRunOptions { mainConfig: StorybookConfig; @@ -17,25 +17,21 @@ interface AngularBuildersRunOptions { export const angularBuilders: Fix = { id: 'angular-builders', - async check({ packageManager, configDir }) { - const packageJSON = await packageManager.retrievePackageJson(); + async check({ packageManager, mainConfig }) { + const angularVersion = await packageManager.getPackageVersion('@angular/core'); - // Skip in case of NX - if (isNxProject(packageJSON)) { - return null; - } - const allDependencies = await packageManager.getAllDependencies(); + const framewworkPackageName = getFrameworkPackageName(mainConfig); - const angularVersion = allDependencies['@angular/core']; - const angularCoerced = semver.coerce(angularVersion)?.version; - - // skip non-angular projects - if (!angularCoerced) { + // Skip in case of NX + if ( + !angularVersion || + (await isNxProject()) || + framewworkPackageName !== '@storybook/angular' + ) { return null; } - // Is Angular version lower than 14? -> throw an error (only supports ng 14) - if (semver.lt(angularCoerced, '14.0.0')) { + if (semver.lt(angularVersion, '14.0.0')) { throw new Error(dedent` ❌ Your project uses Angular < 14.0.0. Storybook 7.0 for Angular requires Angular 14.0.0 or higher. Please upgrade your Angular version to at least version 14.0.0 to use Storybook 7.0 in your project. @@ -55,8 +51,6 @@ export const angularBuilders: Fix = { return null; } - const { mainConfig } = await getStorybookData({ configDir, packageManager }); - return { mainConfig, packageManager, diff --git a/code/lib/cli/src/automigrate/fixes/angular12.test.ts b/code/lib/cli/src/automigrate/fixes/angular12.test.ts deleted file mode 100644 index f0aaaf774b0a..000000000000 --- a/code/lib/cli/src/automigrate/fixes/angular12.test.ts +++ /dev/null @@ -1,130 +0,0 @@ -import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; -import { angular12 } from './angular12'; - -const checkAngular12 = async ({ - packageJson, - main: mainConfig = {}, - storybookVersion = '7.0.0', -}: { - packageJson: PackageJson; - main?: Partial & Record; - storybookVersion?: string; -}) => { - mockStorybookData({ mainConfig, storybookVersion }); - - return angular12.check({ - packageManager: makePackageManager(packageJson), - configDir: '', - }); -}; - -describe('angular12 fix', () => { - afterEach(jest.restoreAllMocks); - - describe('sb < 6.3', () => { - describe('angular12 dependency', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^6.2.0', '@angular/core': '^12.0.0' }, - }; - it('should fail', async () => { - await expect( - checkAngular12({ - packageJson, - storybookVersion: '6.2.0', - }) - ).rejects.toThrow(); - }); - }); - describe('no angular dependency', () => { - const packageJson = { dependencies: { '@storybook/angular': '^6.2.0' } }; - it('should no-op', async () => { - await expect( - checkAngular12({ - packageJson, - main: {}, - }) - ).resolves.toBeFalsy(); - }); - }); - }); - describe('sb 6.3 - 7.0', () => { - describe('angular12 dependency', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^6.3.0', '@angular/core': '^12.0.0' }, - }; - describe('webpack5 builder', () => { - it('should no-op', async () => { - await expect( - checkAngular12({ - packageJson, - main: { core: { builder: 'webpack5' } }, - storybookVersion: '6.3.0', - }) - ).resolves.toBeFalsy(); - }); - }); - describe('custom builder', () => { - it('should no-op', async () => { - await expect( - checkAngular12({ - packageJson, - main: { core: { builder: 'storybook-builder-vite' } }, - }) - ).resolves.toBeFalsy(); - }); - }); - describe('webpack4 builder', () => { - it('should add webpack5 builder', async () => { - await expect( - checkAngular12({ - packageJson, - main: { core: { builder: 'webpack4' } }, - storybookVersion: '6.3.0', - }) - ).resolves.toMatchObject({ - angularVersion: '^12.0.0', - storybookVersion: '6.3.0', - }); - }); - }); - describe('no builder', () => { - it('should add webpack5 builder', async () => { - await expect( - checkAngular12({ - packageJson, - storybookVersion: '6.3.0', - }) - ).resolves.toMatchObject({ - angularVersion: '^12.0.0', - storybookVersion: '6.3.0', - }); - }); - }); - }); - describe('no angular dependency', () => { - it('should no-op', async () => { - await expect( - checkAngular12({ - packageJson: {}, - }) - ).resolves.toBeFalsy(); - }); - }); - }); - describe('sb 7.0+', () => { - describe('angular12 dependency', () => { - const packageJson = { - dependencies: { '@storybook/angular': '^7.0.0-alpha.0', '@angular/core': '^12.0.0' }, - }; - it('should no-op', async () => { - await expect( - checkAngular12({ - packageJson, - }) - ).resolves.toBeFalsy(); - }); - }); - }); -}); diff --git a/code/lib/cli/src/automigrate/fixes/angular12.ts b/code/lib/cli/src/automigrate/fixes/angular12.ts deleted file mode 100644 index c8b98e6b0f00..000000000000 --- a/code/lib/cli/src/automigrate/fixes/angular12.ts +++ /dev/null @@ -1,59 +0,0 @@ -import chalk from 'chalk'; -import { dedent } from 'ts-dedent'; -import semver from 'semver'; -import type { Fix } from '../types'; -import { webpack5 } from './webpack5'; -import { checkWebpack5Builder } from '../helpers/checkWebpack5Builder'; - -interface Angular12RunOptions { - angularVersion: string; - // FIXME angularPresetVersion: string; - storybookVersion: string; -} - -/** - * Is the user upgrading to Angular12? - * - * If so: - * - Run webpack5 fix - */ -export const angular12: Fix = { - id: 'angular12', - - async check({ packageManager, configDir }) { - const allDependencies = await packageManager.getAllDependencies(); - const angularVersion = allDependencies['@angular/core']; - const angularCoerced = semver.coerce(angularVersion)?.version; - - if (!angularCoerced || semver.lt(angularCoerced, '12.0.0')) { - return null; - } - - const builderInfo = await checkWebpack5Builder({ packageManager, configDir }); - return builderInfo ? { angularVersion, ...builderInfo } : null; - }, - - prompt({ angularVersion }) { - const angularFormatted = chalk.cyan(`Angular ${angularVersion}`); - - return dedent` - We've detected you are running ${angularFormatted} which is powered by webpack5. - Your Storybook's main.js files specifies webpack4, which is incompatible. - - In order to work with your version of Angular, we need to install Storybook's ${chalk.cyan( - '@storybook/builder-webpack5' - )}. - - More info: ${chalk.yellow( - 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#angular12-upgrade' - )} - `; - }, - - async run(options) { - return webpack5.run({ - ...options, - result: { webpackVersion: null, ...options.result }, - }); - }, -}; diff --git a/code/lib/cli/src/automigrate/fixes/autodocs-true.test.ts b/code/lib/cli/src/automigrate/fixes/autodocs-true.test.ts index 1876ea7f1e0b..c21de1bd9727 100644 --- a/code/lib/cli/src/automigrate/fixes/autodocs-true.test.ts +++ b/code/lib/cli/src/automigrate/fixes/autodocs-true.test.ts @@ -1,21 +1,19 @@ import type { StorybookConfig } from '@storybook/types'; import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import { makePackageManager } from '../helpers/testing-helpers'; import { autodocsTrue } from './autodocs-true'; const checkAutodocs = async ({ packageJson = {}, main: mainConfig, - storybookVersion = '7.0.0', }: { packageJson?: PackageJson; main: Partial & Record; - storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return autodocsTrue.check({ packageManager: makePackageManager(packageJson), + mainConfig: mainConfig as StorybookConfig, + storybookVersion: '7.0.0', }); }; diff --git a/code/lib/cli/src/automigrate/fixes/autodocs-true.ts b/code/lib/cli/src/automigrate/fixes/autodocs-true.ts index 238c44ebec61..336bd111d39a 100644 --- a/code/lib/cli/src/automigrate/fixes/autodocs-true.ts +++ b/code/lib/cli/src/automigrate/fixes/autodocs-true.ts @@ -4,7 +4,7 @@ import { dedent } from 'ts-dedent'; import type { StorybookConfig } from '@storybook/types'; import type { Fix } from '../types'; -import { getStorybookData, updateMainConfig } from '../helpers/mainConfigFile'; +import { updateMainConfig } from '../helpers/mainConfigFile'; const logger = console; @@ -18,9 +18,7 @@ interface AutodocsTrueFrameworkRunOptions { export const autodocsTrue: Fix = { id: 'autodocsTrue', - async check({ packageManager, configDir }) { - const { mainConfig } = await getStorybookData({ packageManager, configDir }); - + async check({ mainConfig }) { const { docs } = mainConfig; const docsPageToAutodocsMapping = { diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts index 38025e609e32..7354fca3c4a9 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts @@ -3,7 +3,7 @@ import type { StorybookConfig } from '@storybook/types'; import type { PackageJson } from '../../js-package-manager'; import { ansiRegex } from '../helpers/cleanLog'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import { makePackageManager } from '../helpers/testing-helpers'; import type { BareMdxStoriesGlobRunOptions } from './bare-mdx-stories-glob'; import { bareMdxStoriesGlob } from './bare-mdx-stories-glob'; @@ -16,10 +16,10 @@ const checkBareMdxStoriesGlob = async ({ main?: Partial & Record; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return bareMdxStoriesGlob.check({ + mainConfig: mainConfig as StorybookConfig, packageManager: makePackageManager(packageJson), + storybookVersion, }); }; @@ -59,8 +59,8 @@ describe('bare-mdx fix', () => { }; const main = { stories: [ - '../src/**/*.stories.@(js|jsx|ts|tsx)', - { directory: '../**', files: '*.stories.@(js|jsx|ts|tsx)' }, + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', + { directory: '../**', files: '*.stories.@(js|jsx|mjs|ts|tsx)' }, { directory: '../**' }, ], }; diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts index 4091ee9f7ed9..b4f81f08a8fb 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts @@ -2,7 +2,7 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import semver from 'semver'; import type { StoriesEntry } from '@storybook/types'; -import { getStorybookData, updateMainConfig } from '../helpers/mainConfigFile'; +import { updateMainConfig } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; const logger = console; @@ -31,12 +31,7 @@ const getNextGlob = (glob: string) => { export const bareMdxStoriesGlob: Fix = { id: 'bare-mdx-stories-glob', - async check({ packageManager, configDir }) { - const { storybookVersion, mainConfig } = await getStorybookData({ - configDir, - packageManager, - }); - + async check({ storybookVersion, mainConfig }) { if (!semver.gte(storybookVersion, '7.0.0')) { return null; } diff --git a/code/lib/cli/src/automigrate/fixes/builder-vite.test.ts b/code/lib/cli/src/automigrate/fixes/builder-vite.test.ts index 2f54eb0dce7e..20b8f935c0e7 100644 --- a/code/lib/cli/src/automigrate/fixes/builder-vite.test.ts +++ b/code/lib/cli/src/automigrate/fixes/builder-vite.test.ts @@ -1,21 +1,19 @@ import type { StorybookConfig } from '@storybook/types'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import { makePackageManager } from '../helpers/testing-helpers'; import type { PackageJson } from '../../js-package-manager'; import { builderVite } from './builder-vite'; const checkBuilderVite = async ({ packageJson = {}, main: mainConfig, - storybookVersion = '7.0.0', }: { packageJson?: PackageJson; main: Partial & Record; - storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return builderVite.check({ + mainConfig: mainConfig as StorybookConfig, packageManager: makePackageManager(packageJson), + storybookVersion: '7.0.0', }); }; diff --git a/code/lib/cli/src/automigrate/fixes/builder-vite.ts b/code/lib/cli/src/automigrate/fixes/builder-vite.ts index 9fef70b8b9d6..b7ee1317957c 100644 --- a/code/lib/cli/src/automigrate/fixes/builder-vite.ts +++ b/code/lib/cli/src/automigrate/fixes/builder-vite.ts @@ -5,7 +5,7 @@ import { writeConfig } from '@storybook/csf-tools'; import type { Fix } from '../types'; import type { PackageJson } from '../../js-package-manager'; -import { getStorybookData, updateMainConfig } from '../helpers/mainConfigFile'; +import { updateMainConfig } from '../helpers/mainConfigFile'; const logger = console; @@ -26,9 +26,8 @@ interface BuilderViteOptions { export const builderVite: Fix = { id: 'builder-vite', - async check({ configDir, packageManager }) { + async check({ packageManager, mainConfig }) { const packageJson = await packageManager.retrievePackageJson(); - const { mainConfig } = await getStorybookData({ configDir, packageManager }); const builder = mainConfig.core?.builder; const builderName = typeof builder === 'string' ? builder : builder?.name; diff --git a/code/lib/cli/src/automigrate/fixes/cra5.test.ts b/code/lib/cli/src/automigrate/fixes/cra5.test.ts index 24efd73fbc31..15ef6485851d 100644 --- a/code/lib/cli/src/automigrate/fixes/cra5.test.ts +++ b/code/lib/cli/src/automigrate/fixes/cra5.test.ts @@ -1,21 +1,20 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { cra5 } from './cra5'; const checkCra5 = async ({ - packageJson, + packageManager, main: mainConfig, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; + packageManager: any; main?: Partial & Record; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return cra5.check({ - packageManager: makePackageManager(packageJson), + packageManager, + mainConfig: mainConfig as StorybookConfig, + storybookVersion, }); }; @@ -24,24 +23,28 @@ describe('cra5 fix', () => { describe('sb < 6.3', () => { describe('cra5 dependency', () => { - const packageJson = { - dependencies: { '@storybook/react': '^6.2.0', 'react-scripts': '^5.0.0' }, - }; + const packageManager = { + getPackageVersion: jest.fn().mockResolvedValue('5.0.0'), + } as Partial; + it('should fail', async () => { await expect( checkCra5({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).rejects.toThrow(); }); }); describe('no cra5 dependency', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.2.0' } }; + const packageManager = { + getPackageVersion: jest.fn().mockResolvedValue(null), + } as Partial; + it('should no-op', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: {}, }) ).resolves.toBeFalsy(); @@ -50,14 +53,17 @@ describe('cra5 fix', () => { }); describe('sb 6.3 - 7.0', () => { describe('cra5 dependency', () => { - const packageJson = { - dependencies: { '@storybook/react': '^6.3.0', 'react-scripts': '^5.0.0' }, - }; + const packageManager = { + getPackageVersion: () => { + return Promise.resolve('5.0.0'); + }, + } as Partial; + describe('webpack5 builder', () => { it('should no-op', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: { core: { builder: 'webpack5' } }, }) ).resolves.toBeFalsy(); @@ -67,7 +73,7 @@ describe('cra5 fix', () => { it('should no-op', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: { core: { builder: 'storybook-builder-vite' } }, }) ).resolves.toBeFalsy(); @@ -77,12 +83,12 @@ describe('cra5 fix', () => { it('should add webpack5 builder', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: { core: { builder: 'webpack4' } }, storybookVersion: '6.3.0', }) ).resolves.toMatchObject({ - craVersion: '^5.0.0', + craVersion: '5.0.0', storybookVersion: '6.3.0', }); }); @@ -91,36 +97,44 @@ describe('cra5 fix', () => { it('should add webpack5 builder', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: {}, storybookVersion: '6.3.0', }) ).resolves.toMatchObject({ - craVersion: '^5.0.0', + craVersion: '5.0.0', storybookVersion: '6.3.0', }); }); }); }); describe('no cra dependency', () => { + const packageManager = { + getPackageVersion: () => { + return null; + }, + } as Partial; + it('should no-op', async () => { await expect( checkCra5({ - packageJson: {}, + packageManager, main: {}, }) ).resolves.toBeFalsy(); }); }); describe('cra4 dependency', () => { + const packageManager = { + getPackageVersion: () => { + return Promise.resolve('4.0.0'); + }, + } as Partial; + it('should no-op', async () => { await expect( checkCra5({ - packageJson: { - dependencies: { - 'react-scripts': '4', - }, - }, + packageManager, main: {}, }) ).resolves.toBeFalsy(); @@ -129,13 +143,16 @@ describe('cra5 fix', () => { }); describe('sb 7.0+', () => { describe('cra5 dependency', () => { - const packageJson = { - dependencies: { '@storybook/react': '^7.0.0-alpha.0', 'react-scripts': '^5.0.0' }, - }; + const packageManager = { + getPackageVersion: () => { + return Promise.resolve('5.0.0'); + }, + } as Partial; + it('should no-op', async () => { await expect( checkCra5({ - packageJson, + packageManager, main: {}, }) ).resolves.toBeFalsy(); diff --git a/code/lib/cli/src/automigrate/fixes/cra5.ts b/code/lib/cli/src/automigrate/fixes/cra5.ts index 1280a5de3155..d3786cd2d00f 100644 --- a/code/lib/cli/src/automigrate/fixes/cra5.ts +++ b/code/lib/cli/src/automigrate/fixes/cra5.ts @@ -20,16 +20,14 @@ interface CRA5RunOptions { export const cra5: Fix = { id: 'cra5', - async check({ packageManager, configDir }) { - const allDependencies = await packageManager.getAllDependencies(); - const craVersion = allDependencies['react-scripts']; - const craCoerced = semver.coerce(craVersion)?.version; + async check({ packageManager, mainConfig, storybookVersion }) { + const craVersion = await packageManager.getPackageVersion('react-scripts'); - if (!craCoerced || semver.lt(craCoerced, '5.0.0')) { + if (!craVersion || semver.lt(craVersion, '5.0.0')) { return null; } - const builderInfo = await checkWebpack5Builder({ configDir, packageManager }); + const builderInfo = await checkWebpack5Builder({ mainConfig, storybookVersion }); return builderInfo ? { craVersion, ...builderInfo } : null; }, diff --git a/code/lib/cli/src/automigrate/fixes/eslint-plugin.test.ts b/code/lib/cli/src/automigrate/fixes/eslint-plugin.test.ts index 78fdedec90b8..54a527848ae6 100644 --- a/code/lib/cli/src/automigrate/fixes/eslint-plugin.test.ts +++ b/code/lib/cli/src/automigrate/fixes/eslint-plugin.test.ts @@ -41,6 +41,8 @@ const checkEslint = async ({ }); return eslintPlugin.check({ packageManager: makePackageManager(packageJson), + mainConfig: {} as any, + storybookVersion: '7.0.0', }); }; @@ -52,6 +54,7 @@ describe('eslint-plugin fix', () => { await expect( checkEslint({ packageJson, + hasEslint: false, }) ).resolves.toBeFalsy(); }); diff --git a/code/lib/cli/src/automigrate/fixes/eslint-plugin.ts b/code/lib/cli/src/automigrate/fixes/eslint-plugin.ts index 9b461e97d1a7..a34f30e78340 100644 --- a/code/lib/cli/src/automigrate/fixes/eslint-plugin.ts +++ b/code/lib/cli/src/automigrate/fixes/eslint-plugin.ts @@ -1,10 +1,12 @@ import chalk from 'chalk'; import { dedent } from 'ts-dedent'; -import { readConfig, writeConfig } from '@storybook/csf-tools'; -import { readFile, readJson, writeJson } from 'fs-extra'; -import detectIndent from 'detect-indent'; -import { findEslintFile, SUPPORTED_ESLINT_EXTENSIONS } from '../helpers/getEslintInfo'; +import { + configureEslintPlugin, + extractEslintInfo, + findEslintFile, + SUPPORTED_ESLINT_EXTENSIONS, +} from '../helpers/eslintPlugin'; import type { Fix } from '../types'; @@ -25,12 +27,9 @@ export const eslintPlugin: Fix = { id: 'eslintPlugin', async check({ packageManager }) { - const allDependencies = await packageManager.getAllDependencies(); + const { hasEslint, isStorybookPluginInstalled } = await extractEslintInfo(packageManager); - const eslintPluginStorybook = allDependencies['eslint-plugin-storybook']; - const eslintDependency = allDependencies.eslint; - - if (eslintPluginStorybook || !eslintDependency) { + if (isStorybookPluginInstalled || !hasEslint) { return null; } @@ -82,26 +81,8 @@ export const eslintPlugin: Fix = { return; } - logger.info(`✅ Adding Storybook plugin to ${eslintFile}`); if (!dryRun) { - if (eslintFile.endsWith('json')) { - const eslintConfig = (await readJson(eslintFile)) as { extends?: string[] }; - const existingConfigValue = Array.isArray(eslintConfig.extends) - ? eslintConfig.extends - : [eslintConfig.extends]; - eslintConfig.extends = [...(existingConfigValue || []), 'plugin:storybook/recommended']; - - const eslintFileContents = await readFile(eslintFile, 'utf8'); - const spaces = detectIndent(eslintFileContents).amount || 2; - await writeJson(eslintFile, eslintConfig, { spaces }); - } else { - const eslint = await readConfig(eslintFile); - const extendsConfig = eslint.getFieldValue(['extends']) || []; - const existingConfigValue = Array.isArray(extendsConfig) ? extendsConfig : [extendsConfig]; - eslint.setFieldValue(['extends'], [...existingConfigValue, 'plugin:storybook/recommended']); - - await writeConfig(eslint); - } + await configureEslintPlugin(eslintFile, packageManager); } }, }; diff --git a/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts b/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts index 122cb7f7e4f7..46978eba8396 100644 --- a/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts +++ b/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts @@ -1,27 +1,23 @@ /// ; import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import { incompatibleAddons } from './incompatible-addons'; -import * as packageVersions from '../helpers/getActualPackageVersions'; - -jest.mock('../helpers/getActualPackageVersions'); +import type { JsPackageManager } from '../../js-package-manager'; const check = async ({ - packageJson, + packageManager, main: mainConfig = {}, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; + packageManager: Partial; main?: Partial & Record; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return incompatibleAddons.check({ - packageManager: makePackageManager(packageJson), + packageManager: packageManager as any, configDir: '', + mainConfig: mainConfig as any, + storybookVersion, }); }; @@ -29,27 +25,22 @@ describe('incompatible-addons fix', () => { afterEach(jest.restoreAllMocks); it('should show incompatible addons', async () => { - jest.spyOn(packageVersions, 'getActualPackageVersions').mockReturnValueOnce( - Promise.resolve([ - { - name: '@storybook/addon-essentials', - version: '7.0.0', - }, - { - name: '@storybook/addon-info', - version: '5.3.21', - }, - ]) - ); - - const packageJson = { - dependencies: { - '@storybook/addon-essentials': '^7.0.0', - '@storybook/addon-info': '^6.0.0', - }, - }; await expect( - check({ packageJson, main: { addons: ['@storybook/essentials', '@storybook/addon-info'] } }) + check({ + packageManager: { + getPackageVersion(packageName, basePath) { + switch (packageName) { + case '@storybook/addon-essentials': + return Promise.resolve('7.0.0'); + case '@storybook/addon-info': + return Promise.resolve('5.3.21'); + default: + return Promise.resolve(null); + } + }, + }, + main: { addons: ['@storybook/essentials', '@storybook/addon-info'] }, + }) ).resolves.toEqual({ incompatibleAddonList: [ { @@ -61,20 +52,20 @@ describe('incompatible-addons fix', () => { }); it('no-op when there are no incompatible addons', async () => { - jest.spyOn(packageVersions, 'getActualPackageVersions').mockReturnValueOnce( - Promise.resolve([ - { - name: '@storybook/addon-essentials', - version: '7.0.0', - }, - ]) - ); - - const packageJson = { - dependencies: { '@storybook/addon-essentials': '^7.0.0' }, - }; await expect( - check({ packageJson, main: { addons: ['@storybook/essentials'] } }) + check({ + packageManager: { + getPackageVersion(packageName, basePath) { + switch (packageName) { + case '@storybook/addon-essentials': + return Promise.resolve('7.0.0'); + default: + return Promise.resolve(null); + } + }, + }, + main: { addons: ['@storybook/essentials'] }, + }) ).resolves.toBeNull(); }); }); diff --git a/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts b/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts index 5620da7d45e1..3455408f279d 100644 --- a/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts +++ b/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts @@ -1,7 +1,6 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import type { Fix } from '../types'; -import { getStorybookData } from '../helpers/mainConfigFile'; import { getIncompatibleAddons } from '../helpers/getIncompatibleAddons'; interface IncompatibleAddonsOptions { @@ -12,13 +11,8 @@ export const incompatibleAddons: Fix = { id: 'incompatible-addons', promptOnly: true, - async check({ packageManager, configDir }) { - const { mainConfig } = await getStorybookData({ - packageManager, - configDir, - }); - - const incompatibleAddonList = await getIncompatibleAddons(mainConfig); + async check({ mainConfig, packageManager }) { + const incompatibleAddonList = await getIncompatibleAddons(mainConfig, packageManager); return incompatibleAddonList.length > 0 ? { incompatibleAddonList } : null; }, diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index e1f02b510afc..2becfe0b156a 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -2,7 +2,6 @@ import type { Fix } from '../types'; import { cra5 } from './cra5'; import { webpack5 } from './webpack5'; -import { angular12 } from './angular12'; import { vue3 } from './vue3'; import { mdxgfm } from './mdx-gfm'; import { eslintPlugin } from './eslint-plugin'; @@ -19,20 +18,20 @@ import { missingBabelRc } from './missing-babelrc'; import { angularBuilders } from './angular-builders'; import { incompatibleAddons } from './incompatible-addons'; import { angularBuildersMultiproject } from './angular-builders-multiproject'; +import { wrapRequire } from './wrap-require'; export * from '../types'; export const allFixes: Fix[] = [ nodeJsRequirement, + newFrameworks, cra5, webpack5, - angular12, vue3, eslintPlugin, builderVite, sbBinary, sbScripts, - newFrameworks, incompatibleAddons, removedGlobalClientAPIs, mdx1to2, @@ -42,6 +41,7 @@ export const allFixes: Fix[] = [ missingBabelRc, angularBuildersMultiproject, angularBuilders, + wrapRequire, ]; export const initFixes: Fix[] = [missingBabelRc, eslintPlugin]; diff --git a/code/lib/cli/src/automigrate/fixes/mdx-gfm.test.ts b/code/lib/cli/src/automigrate/fixes/mdx-gfm.test.ts index 55ec1971e7c3..45d6704c86ea 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-gfm.test.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-gfm.test.ts @@ -1,6 +1,4 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import { mdxgfm } from './mdx-gfm'; jest.mock('globby', () => ({ @@ -9,28 +7,27 @@ jest.mock('globby', () => ({ })); const check = async ({ - packageJson, + packageManager, main: mainConfig, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; + packageManager: any; main: Partial & Record; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return mdxgfm.check({ - packageManager: makePackageManager(packageJson), + packageManager, configDir: '', + mainConfig: mainConfig as any, + storybookVersion, }); }; describe('no-ops', () => { - const packageJson = {}; test('sb > 7.0', async () => { await expect( check({ - packageJson, + packageManager: {}, main: {}, storybookVersion: '6.2.0', }) @@ -39,7 +36,7 @@ describe('no-ops', () => { test('legacyMdx1', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { features: { legacyMdx1: true, @@ -51,7 +48,7 @@ describe('no-ops', () => { test('with addon docs setup', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { addons: [ { @@ -78,7 +75,7 @@ describe('no-ops', () => { test('with addon migration assistant addon added', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { addons: ['@storybook/addon-mdx-gfm'], }, @@ -88,11 +85,10 @@ describe('no-ops', () => { }); describe('continue', () => { - const packageJson = {}; test('nothing configured at all', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { stories: ['**/*.stories.mdx'], }, @@ -102,7 +98,7 @@ describe('continue', () => { test('unconfigured addon-docs', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { stories: ['**/*.stories.mdx'], addons: [ @@ -124,7 +120,7 @@ describe('continue', () => { test('unconfigured addon-essentials', async () => { await expect( check({ - packageJson, + packageManager: {}, main: { stories: ['**/*.stories.mdx'], addons: ['@storybook/addon-essentials'], @@ -132,4 +128,26 @@ describe('continue', () => { }) ).resolves.toBeTruthy(); }); + test('stories object with directory + files', async () => { + await expect( + check({ + packageManager: {}, + main: { + stories: [{ directory: 'src', titlePrefix: 'src', files: '' }], + addons: ['@storybook/addon-essentials'], + }, + }) + ).resolves.toBeTruthy(); + }); + test('stories object with directory and no files', async () => { + await expect( + check({ + packageManager: {}, + main: { + stories: [{ directory: 'src', titlePrefix: 'src' }], + addons: ['@storybook/addon-essentials'], + }, + }) + ).resolves.toBeTruthy(); + }); }); diff --git a/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts b/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts index 7989b5c1517a..1601dce89572 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts @@ -3,7 +3,8 @@ import semver from 'semver'; import { join } from 'path'; import slash from 'slash'; import glob from 'globby'; -import { getStorybookData, updateMainConfig } from '../helpers/mainConfigFile'; +import { commonGlobOptions } from '@storybook/core-common'; +import { updateMainConfig } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; import { getStorybookVersionSpecifier } from '../../helpers'; @@ -18,9 +19,7 @@ interface Options { export const mdxgfm: Fix = { id: 'github-flavored-markdown-mdx', - async check({ configDir, packageManager }) { - const { mainConfig, storybookVersion } = await getStorybookData({ packageManager, configDir }); - + async check({ configDir, mainConfig, storybookVersion }) { if (!semver.gte(storybookVersion, '7.0.0')) { return null; } @@ -32,12 +31,17 @@ export const mdxgfm: Fix = { return true; } - const pattern = - typeof item === 'string' - ? slash(join(configDir, item)) - : slash(join(configDir, item.directory, item.files)); + let pattern; + + if (typeof item === 'string') { + pattern = slash(join(configDir, item)); + } else if (typeof item === 'object') { + const directory = item.directory || '..'; + const files = item.files || '**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))'; + pattern = slash(join(configDir, directory, files)); + } - const files = await glob(pattern); + const files = await glob(pattern, commonGlobOptions(pattern)); return files.some((f) => f.endsWith('.mdx')); }, Promise.resolve(false)); diff --git a/code/lib/cli/src/automigrate/fixes/missing-babelrc.test.ts b/code/lib/cli/src/automigrate/fixes/missing-babelrc.test.ts index 6ce9aa71cab2..f5306d9b0363 100644 --- a/code/lib/cli/src/automigrate/fixes/missing-babelrc.test.ts +++ b/code/lib/cli/src/automigrate/fixes/missing-babelrc.test.ts @@ -2,9 +2,8 @@ /// ; import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import { missingBabelRc } from './missing-babelrc'; +import type { JsPackageManager } from '../../js-package-manager'; // eslint-disable-next-line global-require, jest/no-mocks-import jest.mock('fs-extra', () => require('../../../../../__mocks__/fs-extra')); @@ -15,9 +14,7 @@ const babelContent = JSON.stringify({ [ '@babel/preset-env', { - targets: { - chrome: 100, - }, + targets: { chrome: 100, safari: 15, firefox: 91 }, }, ], '@babel/preset-typescript', @@ -27,12 +24,14 @@ const babelContent = JSON.stringify({ }); const check = async ({ - packageJson = {}, - main: mainConfig, + packageManager = { + retrievePackageJson: () => ({}), + }, + main: mainConfig = {}, storybookVersion = '7.0.0', extraFiles, }: { - packageJson?: PackageJson; + packageManager?: any; main?: Partial & Record; storybookVersion?: string; extraFiles?: Record; @@ -42,11 +41,30 @@ const check = async ({ require('fs-extra').__setMockFiles(extraFiles); } - mockStorybookData({ mainConfig, storybookVersion }); - - return missingBabelRc.check({ packageManager: makePackageManager(packageJson) }); + return missingBabelRc.check({ + packageManager, + mainConfig: mainConfig as any, + storybookVersion, + }); }; +const packageManager = { + retrievePackageJson: () => + Promise.resolve({ + devDependencies: {}, + dependencies: {}, + }), +} as Partial; + +const packageManagerWithBabelField = { + retrievePackageJson: () => + Promise.resolve({ + devDependencies: {}, + dependencies: {}, + babel: babelContent, + }), +} as Partial; + describe('missing-babelrc fix', () => { afterEach(jest.restoreAllMocks); @@ -55,84 +73,58 @@ describe('missing-babelrc fix', () => { }); it('skips when babelrc config is present', async () => { - const packageJson = { - devDependencies: { - '@storybook/react': '^7.0.0', - '@storybook/react-webpack5': '^7.0.0', - }, - }; - // different babel extensions await expect( check({ + packageManager, extraFiles: { '.babelrc': babelContent }, - packageJson, main: { framework: '@storybook/react' }, }) ).resolves.toBeNull(); await expect( check({ + packageManager, extraFiles: { '.babelrc.json': babelContent }, - packageJson, main: { framework: '@storybook/react' }, }) ).resolves.toBeNull(); await expect( check({ + packageManager, extraFiles: { 'babel.config.json': babelContent }, - packageJson, main: { framework: '@storybook/react' }, }) ).resolves.toBeNull(); - // babel field in package.json await expect( check({ - packageJson: { ...packageJson, babel: babelContent }, + packageManager: packageManagerWithBabelField, main: { framework: '@storybook/react' }, }) ).resolves.toBeNull(); }); it('skips when using a framework that provides babel config', async () => { - const packageJson = { - devDependencies: { - '@storybook/react': '^7.0.0', - '@storybook/nextjs': '^7.0.0', - }, - }; - await expect( - check({ packageJson, main: { framework: '@storybook/nextjs' } }) + check({ main: { framework: '@storybook/nextjs' }, packageManager }) ).resolves.toBeNull(); }); it('skips when using CRA preset', async () => { - const packageJson = { - devDependencies: { - '@storybook/react': '^7.0.0', - '@storybook/react-webpack5': '^7.0.0', - }, - }; - await expect( check({ - packageJson, main: { framework: '@storybook/react', addons: ['@storybook/preset-create-react-app'] }, + packageManager, }) ).resolves.toBeNull(); }); it('prompts when babelrc file is missing and framework does not provide babel config', async () => { - const packageJson = { - devDependencies: { - '@storybook/react': '^7.0.0', - '@storybook/react-webpack5': '^7.0.0', - }, - }; - await expect( - check({ main: { framework: '@storybook/react-webpack5' }, packageJson }) + check({ + packageManager, + main: { framework: '@storybook/react-webpack5' }, + }) ).resolves.toEqual({ needsBabelRc: true, }); diff --git a/code/lib/cli/src/automigrate/fixes/missing-babelrc.ts b/code/lib/cli/src/automigrate/fixes/missing-babelrc.ts index 2e13685fd8b4..5c70808657a6 100644 --- a/code/lib/cli/src/automigrate/fixes/missing-babelrc.ts +++ b/code/lib/cli/src/automigrate/fixes/missing-babelrc.ts @@ -4,7 +4,7 @@ import semver from 'semver'; import { loadPartialConfigAsync } from '@babel/core'; import type { Fix } from '../types'; import { generateStorybookBabelConfigInCWD } from '../../babel-config'; -import { getStorybookData } from '../helpers/mainConfigFile'; +import { getFrameworkPackageName } from '../helpers/mainConfigFile'; interface MissingBabelRcOptions { needsBabelRc: boolean; @@ -23,24 +23,28 @@ const frameworksThatNeedBabelConfig = [ export const missingBabelRc: Fix = { id: 'missing-babelrc', - async check({ configDir, packageManager }) { + async check({ packageManager, mainConfig, storybookVersion }) { const packageJson = await packageManager.retrievePackageJson(); - const { mainConfig, storybookVersion } = await getStorybookData({ configDir, packageManager }); if (!semver.gte(storybookVersion, '7.0.0')) { return null; } - const { framework, addons } = mainConfig; - - const frameworkPackage = typeof framework === 'string' ? framework : framework.name; + const { addons } = mainConfig; const hasCraPreset = - addons && addons.find((addon) => addon === '@storybook/preset-create-react-app'); + addons && + addons.find((addon) => + typeof addon === 'string' + ? addon.endsWith('@storybook/preset-create-react-app') + : addon.name.endsWith('@storybook/preset-create-react-app') + ); + + const frameworkPackageName = getFrameworkPackageName(mainConfig); if ( - frameworkPackage && - frameworksThatNeedBabelConfig.includes(frameworkPackage) && + frameworkPackageName && + frameworksThatNeedBabelConfig.includes(frameworkPackageName) && !hasCraPreset ) { const config = await loadPartialConfigAsync({ @@ -65,20 +69,19 @@ export const missingBabelRc: Fix = { If your project does not have a babel configuration file, we can generate one that's equivalent to the 6.x defaults for you. Keep in mind that this can affect your project if it uses babel, and you may need to make additional changes based on your projects needs. + We can create a ${chalk.blue( + '.babelrc.json' + )} file with some basic configuration and add any necessary package devDependencies. + ${chalk.bold( 'Note:' - )} This automatic setup doesn't work in a monorepo, see the babel documentation for how to setup babel manually: + )} After installing the necessary presets, if it does not work in a monorepo, see the babel documentation for reference: ${chalk.yellow('https://babeljs.io/docs')} - We can create a ${chalk.blue( - '.babelrc.json' - )} file with some basic configuration and add any necessary package devDependencies. - Please see the migration guide for more information: ${chalk.yellow( 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#babel-mode-v7-exclusively' )} - `; }, async run() { diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts index 0938511e53cf..441af07c311f 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts @@ -1,9 +1,8 @@ import type { StorybookConfig } from '@storybook/types'; import * as findUp from 'find-up'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import * as rendererHelpers from '../helpers/detectRenderer'; import { newFrameworks } from './new-frameworks'; +import type { JsPackageManager } from '../../js-package-manager'; jest.mock('find-up'); jest.mock('../helpers/detectRenderer', () => ({ @@ -11,40 +10,70 @@ jest.mock('../helpers/detectRenderer', () => ({ })); const checkNewFrameworks = async ({ - packageJson, + packageManager = {}, main: mainConfig, storybookVersion = '7.0.0', + rendererPackage, }: { - packageJson: PackageJson; - main: Partial & Record; + packageManager?: any; + main?: Partial & Record; storybookVersion?: string; + rendererPackage?: string; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return newFrameworks.check({ - packageManager: makePackageManager(packageJson), + packageManager, + mainConfig: mainConfig as any, + storybookVersion, + rendererPackage, configDir: '', }); }; +const getPackageManager = (packages: Record) => { + return { + getPackageVersion(packageName) { + return new Promise((resolve) => { + Object.entries(packages).forEach(([name, version]) => { + if (packageName === name) { + resolve(version); + } + }); + + resolve(null); + }); + }, + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: packages, + }), + getAllDependencies: () => Promise.resolve(packages), + } as Partial; +}; + describe('new-frameworks fix', () => { describe('should no-op', () => { it('in sb < 7', async () => { - const packageJson = { dependencies: { '@storybook/vue': '^6.2.0' } }; + const packageManager = getPackageManager({ + '@storybook/vue': '6.2.0', + }); + await expect( checkNewFrameworks({ - packageJson, - main: {}, + packageManager, storybookVersion: '6.2.0', }) ).resolves.toBeFalsy(); }); it('in sb 7 with correct structure already', async () => { - const packageJson = { dependencies: { '@storybook/angular': '^7.0.0' } }; + const packageManager = getPackageManager({ + '@storybook/angular': '7.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/angular', }, @@ -55,26 +84,24 @@ describe('new-frameworks fix', () => { describe('should throw an error', () => { it('in sb 7 with no main.js', async () => { - const packageJson = { dependencies: { '@storybook/vue': '^7.0.0' } }; await expect(() => checkNewFrameworks({ - packageJson, main: undefined, }) ).rejects.toBeTruthy(); }); it('in sb 7 with vite < 3', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0', - '@storybook/builder-vite': 'x.y.z', - vite: '^2.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0', + '@storybook/builder-vite': 'x.y.z', + vite: '2.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, + rendererPackage: '@storybook/react', main: { framework: '@storybook/react', core: { @@ -88,16 +115,15 @@ describe('new-frameworks fix', () => { describe('generic new-frameworks migration', () => { it('should update to @storybook/react-webpack5', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/builder-webpack5': '^6.5.9', - '@storybook/manager-webpack5': '^6.5.9', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/builder-webpack5': '6.5.9', + '@storybook/manager-webpack5': '6.5.9', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/react', core: { @@ -133,16 +159,15 @@ describe('new-frameworks fix', () => { }); it('should update to @storybook/react-vite', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/builder-vite': '^0.0.2', - vite: '3.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/builder-vite': '0.0.2', + vite: '3.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/react', core: { @@ -160,16 +185,15 @@ describe('new-frameworks fix', () => { }); it('should update only builders in @storybook/angular', async () => { - const packageJson = { - dependencies: { - '@storybook/angular': '^7.0.0-alpha.0', - '@storybook/builder-webpack5': '^6.5.9', - '@storybook/manager-webpack5': '^6.5.9', - }, - }; + const packageManager = getPackageManager({ + '@storybook/angular': '7.0.0-alpha.0', + '@storybook/builder-webpack5': '6.5.9', + '@storybook/manager-webpack5': '6.5.9', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/angular', core: { @@ -206,16 +230,15 @@ describe('new-frameworks fix', () => { }); it('should update to @storybook/preact-vite', async () => { - const packageJson = { - dependencies: { - '@storybook/preact': '^7.0.0-alpha.0', - '@storybook/builder-vite': '^0.0.2', - vite: '3.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/preact': '7.0.0-alpha.0', + '@storybook/builder-vite': '0.0.2', + vite: '3.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/preact', core: { @@ -233,12 +256,14 @@ describe('new-frameworks fix', () => { }); it('should update correctly when there is no builder', async () => { - const packageJson = { - dependencies: { '@storybook/vue': '^7.0.0', '@storybook/builder-webpack5': '^7.0.0' }, - }; + const packageManager = getPackageManager({ + '@storybook/vue': '7.0.0', + '@storybook/builder-webpack5': '7.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/vue', }, @@ -253,12 +278,14 @@ describe('new-frameworks fix', () => { }); it('should update when there is no framework field in main', async () => { - const packageJson = { - dependencies: { '@storybook/vue': '^7.0.0', '@storybook/manager-webpack5': '^7.0.0' }, - }; + const packageManager = getPackageManager({ + '@storybook/vue': '7.0.0', + '@storybook/manager-webpack5': '7.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: {}, }) ).resolves.toEqual( @@ -272,12 +299,14 @@ describe('new-frameworks fix', () => { }); it('should update when the framework field has a legacy value', async () => { - const packageJson = { - dependencies: { '@storybook/vue': '^7.0.0', '@storybook/manager-webpack5': '^7.0.0' }, - }; + const packageManager = getPackageManager({ + '@storybook/vue': '7.0.0', + '@storybook/manager-webpack5': '7.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: 'vue', }, @@ -296,16 +325,16 @@ describe('new-frameworks fix', () => { // there should be a prompt, which we mock the response const detectRendererSpy = jest.spyOn(rendererHelpers, 'detectRenderer'); detectRendererSpy.mockReturnValueOnce(Promise.resolve('@storybook/react')); - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0', - '@storybook/vue': '^7.0.0', - '@storybook/builder-vite': 'x.y.z', - }, - }; + + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0', + '@storybook/vue': '7.0.0', + '@storybook/builder-vite': 'x.y.z', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { core: { builder: '@storybook/builder-vite', @@ -322,18 +351,16 @@ describe('new-frameworks fix', () => { }); it('should add framework field in main.js when everything is properly configured, but framework field in main.js is missing', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/react-vite': '^7.0.0-alpha.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/react-vite': '7.0.0-alpha.0', + }); // project contains vite.config.js jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('vite.config.js')); await expect( checkNewFrameworks({ - packageJson, + packageManager, main: {}, }) ).resolves.toEqual( @@ -348,21 +375,21 @@ describe('new-frameworks fix', () => { jest .spyOn(rendererHelpers, 'detectRenderer') .mockReturnValueOnce(Promise.resolve('@storybook/web-components')); - const packageJson = { - dependencies: { - '@storybook/addon-essentials': '^7.0.0-beta.48', - '@storybook/vue': '^7.0.0-beta.48', - '@storybook/builder-vite': '^7.0.0-beta.48', - '@storybook/builder-webpack5': '^7.0.0-beta.48', - '@storybook/core-server': '^7.0.0-beta.48', - '@storybook/manager-webpack5': '^6.5.15', - '@storybook/react': '^7.0.0-beta.48', - '@storybook/web-components': '^7.0.0-beta.48', - }, - }; + + const packageManager = getPackageManager({ + '@storybook/addon-essentials': '7.0.0-beta.48', + '@storybook/vue': '7.0.0-beta.48', + '@storybook/builder-vite': '7.0.0-beta.48', + '@storybook/builder-webpack5': '7.0.0-beta.48', + '@storybook/core-server': '7.0.0-beta.48', + '@storybook/manager-webpack5': '6.5.15', + '@storybook/react': '7.0.0-beta.48', + '@storybook/web-components': '7.0.0-beta.48', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { core: { builder: 'webpack5' }, }, @@ -378,61 +405,57 @@ describe('new-frameworks fix', () => { describe('nextjs migration', () => { it('skips in non-Next.js projects', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0', - '@storybook/react-vite': '^7.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0', + '@storybook/react-vite': '7.0.0', + }); + const main = { framework: '@storybook/react-vite', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('skips if project uses Next.js < 12.0.0', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0', - '@storybook/react-webpack5': '^7.0.0', - next: '^11.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0', + '@storybook/react-webpack5': '7.0.0', + next: '11.0.0', + }); + const main = { framework: '@storybook/react', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('skips if project already has @storybook/nextjs set up', async () => { jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('next.config.js')); - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0', - '@storybook/nextjs': '^7.0.0', - next: '^12.0.0', - }, - }; + + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0', + '@storybook/nextjs': '7.0.0', + next: '12.0.0', + }); + const main = { framework: '@storybook/nextjs', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('should update from @storybook/react-webpack5 to @storybook/nextjs', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/react-webpack5': '^7.0.0-alpha.0', - '@storybook/builder-webpack5': '^7.0.0-alpha.0', - next: '^12.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/react-webpack5': '7.0.0-alpha.0', + '@storybook/builder-webpack5': '7.0.0-alpha.0', + next: '12.0.0', + }); jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('next.config.js')); await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: { name: '@storybook/react-webpack5', options: {} }, }, @@ -448,18 +471,17 @@ describe('new-frameworks fix', () => { it('should remove legacy addons', async () => { jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('next.config.js')); - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/react-webpack5': '^7.0.0-alpha.0', - next: '^12.0.0', - 'storybook-addon-next': '^1.0.0', - 'storybook-addon-next-router': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/react-webpack5': '7.0.0-alpha.0', + next: '12.0.0', + 'storybook-addon-next': '1.0.0', + 'storybook-addon-next-router': '1.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: '@storybook/react-webpack5', addons: ['storybook-addon-next', 'storybook-addon-next-router'], @@ -479,17 +501,17 @@ describe('new-frameworks fix', () => { it('should move storybook-addon-next options and reactOptions to frameworkOptions', async () => { jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('next.config.js')); - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/react-webpack5': '^7.0.0-alpha.0', - next: '^12.0.0', - 'storybook-addon-next': '^1.0.0', - }, - }; + + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/react-webpack5': '7.0.0-alpha.0', + next: '12.0.0', + 'storybook-addon-next': '1.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { framework: { name: '@storybook/react-webpack5', options: { fastRefresh: true } }, addons: [ @@ -528,17 +550,17 @@ describe('new-frameworks fix', () => { it('should migrate to @storybook/react-vite in Next.js project that uses vite builder', async () => { jest.spyOn(findUp, 'default').mockReturnValueOnce(Promise.resolve('next.config.js')); - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - '@storybook/builder-vite': '^7.0.0-alpha.0', - next: '^12.0.0', - 'storybook-addon-next': '^1.0.0', - }, - }; + + const packageManager = getPackageManager({ + '@storybook/react': '7.0.0-alpha.0', + '@storybook/builder-vite': '7.0.0-alpha.0', + next: '12.0.0', + 'storybook-addon-next': '1.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { core: { builder: '@storybook/builder-vite', @@ -558,59 +580,55 @@ describe('new-frameworks fix', () => { describe('SvelteKit migration', () => { it('skips in non-SvelteKit projects', async () => { - const packageJson = { - dependencies: { - svelte: '^3.53.1', - '@storybook/svelte': '^7.0.0', - '@storybook/svelte-vite': '^7.0.0', - }, - }; + const packageManager = getPackageManager({ + svelte: '3.53.1', + '@storybook/svelte': '7.0.0', + '@storybook/svelte-vite': '7.0.0', + }); + const main = { framework: '@storybook/svelte-vite', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('skips if project uses SvelteKit < 1.0.0', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - '@storybook/svelte-vite': '^7.0.0', - '@sveltejs/kit': '^0.9.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + '@storybook/svelte-vite': '7.0.0', + '@sveltejs/kit': '0.9.0', + }); + const main = { framework: '@storybook/svelte-vite', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('skips if project already has @storybook/sveltekit set up', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - '@storybook/sveltekit': '^7.0.0', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + '@storybook/sveltekit': '7.0.0', + '@sveltejs/kit': '1.0.0', + }); + const main = { framework: '@storybook/svelte-vite', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toBeFalsy(); + await expect(checkNewFrameworks({ packageManager, main })).resolves.toBeFalsy(); }); it('from @storybook/svelte-vite', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - '@storybook/svelte-vite': '^7.0.0', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + '@storybook/svelte-vite': '7.0.0', + '@sveltejs/kit': '1.0.0', + }); + const main = { framework: '@storybook/svelte-vite', }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toEqual( + await expect(checkNewFrameworks({ packageManager, main })).resolves.toEqual( expect.objectContaining({ dependenciesToAdd: ['@storybook/sveltekit'], dependenciesToRemove: ['@storybook/svelte-vite'], @@ -620,18 +638,17 @@ describe('new-frameworks fix', () => { }); it('from @storybook/svelte framework and @storybook/builder-vite builder', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - '@storybook/builder-vite': '^7.0.0', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + '@storybook/builder-vite': '7.0.0', + '@sveltejs/kit': '1.0.0', + }); + const main = { framework: '@storybook/svelte', core: { builder: '@storybook/builder-vite' }, }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toEqual( + await expect(checkNewFrameworks({ packageManager, main })).resolves.toEqual( expect.objectContaining({ dependenciesToAdd: ['@storybook/sveltekit'], dependenciesToRemove: ['@storybook/builder-vite'], @@ -641,18 +658,17 @@ describe('new-frameworks fix', () => { }); it('from @storybook/svelte framework and storybook-builder-vite builder', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - 'storybook-builder-vite': '^0.2.5', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + 'storybook-builder-vite': '0.2.5', + '@sveltejs/kit': '1.0.0', + }); + const main = { framework: '@storybook/svelte', core: { builder: 'storybook-builder-vite' }, }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toEqual( + await expect(checkNewFrameworks({ packageManager, main })).resolves.toEqual( expect.objectContaining({ dependenciesToAdd: ['@storybook/sveltekit'], dependenciesToRemove: ['storybook-builder-vite'], @@ -662,19 +678,18 @@ describe('new-frameworks fix', () => { }); it('should migrate and remove svelteOptions', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0', - 'storybook-builder-vite': '^0.2.5', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0', + 'storybook-builder-vite': '0.2.5', + '@sveltejs/kit': '1.0.0', + }); + const main = { framework: '@storybook/svelte', core: { builder: 'storybook-builder-vite' }, svelteOptions: { preprocess: 'preprocess' }, }; - await expect(checkNewFrameworks({ packageJson, main })).resolves.toEqual( + await expect(checkNewFrameworks({ packageManager, main })).resolves.toEqual( expect.objectContaining({ dependenciesToAdd: ['@storybook/sveltekit'], dependenciesToRemove: ['storybook-builder-vite'], @@ -685,16 +700,15 @@ describe('new-frameworks fix', () => { }); it('should migrate to @storybook/svelte-webpack5 in SvelteKit project that uses Webpack5 builder', async () => { - const packageJson = { - dependencies: { - '@storybook/svelte': '^7.0.0-alpha.0', - '@storybook/builder-webpack5': '^7.0.0-alpha.0', - '@sveltejs/kit': '^1.0.0', - }, - }; + const packageManager = getPackageManager({ + '@storybook/svelte': '7.0.0-alpha.0', + '@storybook/builder-webpack5': '7.0.0-alpha.0', + '@sveltejs/kit': '1.0.0', + }); + await expect( checkNewFrameworks({ - packageJson, + packageManager, main: { core: { builder: '@storybook/builder-webpack5', diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index d2be64bf877a..cecf3f852df3 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -1,32 +1,27 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; -import findUp from 'find-up'; import semver from 'semver'; import { frameworkPackages, rendererPackages } from '@storybook/core-common'; import type { Preset } from '@storybook/types'; import type { Fix } from '../types'; -import type { PackageJsonWithDepsAndDevDeps } from '../../js-package-manager'; import { getStorybookVersionSpecifier } from '../../helpers'; -import { detectRenderer } from '../helpers/detectRenderer'; import { getNextjsAddonOptions, detectBuilderInfo, packagesMap, } from '../helpers/new-frameworks-utils'; -import { getStorybookData, updateMainConfig } from '../helpers/mainConfigFile'; +import { + getFrameworkPackageName, + getRendererPackageNameFromFramework, + updateMainConfig, +} from '../helpers/mainConfigFile'; +import { detectRenderer } from '../helpers/detectRenderer'; const logger = console; -const nextJsConfigFiles = [ - 'next.config.js', - 'next.config.cjs', - 'next.config.mjs', - 'next.config.ts', -]; interface NewFrameworkRunOptions { mainConfigPath: string; - packageJson: PackageJsonWithDepsAndDevDeps; dependenciesToAdd: string[]; dependenciesToRemove: string[]; hasFrameworkInMainConfig: boolean; @@ -63,48 +58,37 @@ export const newFrameworks: Fix = { id: 'new-frameworks', async check({ - rendererPackage: userDefinedRendererPackage, - configDir: userDefinedConfigDir, + configDir, packageManager, + storybookVersion, + mainConfig, + mainConfigPath, + rendererPackage, }) { - const packageJson = await packageManager.retrievePackageJson(); - const { storybookVersion, mainConfig, mainConfigPath, configDir } = await getStorybookData({ - packageManager, - configDir: userDefinedConfigDir, - }); - if (!semver.gte(storybookVersion, '7.0.0')) { return null; } - const frameworkPackage = - typeof mainConfig.framework === 'string' ? mainConfig.framework : mainConfig.framework?.name; - let hasFrameworkInMainConfig = !!frameworkPackage; - - // if --renderer is passed to the command, just use it. - // Useful for monorepo projects to automate the script without getting prompts - let rendererPackage = userDefinedRendererPackage; - if (!rendererPackage) { - if (frameworkPackage && Object.keys(rendererPackages).includes(frameworkPackage)) { - // at some point in 6.4 we introduced a framework field, but filled with a renderer package - rendererPackage = frameworkPackage; - } else if (frameworkPackage && Object.values(rendererPackages).includes(frameworkPackage)) { - // for scenarios where the value is e.g. "react" instead of "@storybook/react" - rendererPackage = Object.keys(rendererPackages).find( - (k) => rendererPackages[k] === frameworkPackage - ); - hasFrameworkInMainConfig = false; - } else { - // detect the renderer package from the user's dependencies, and if multiple are there (monorepo), prompt the user to choose - rendererPackage = await detectRenderer(packageJson); - } + const packageJson = await packageManager.retrievePackageJson(); + + const frameworkPackageName = getFrameworkPackageName(mainConfig); + + const rendererPackageName = + rendererPackage ?? + (await getRendererPackageNameFromFramework(frameworkPackageName)) ?? + (await detectRenderer(packageJson)); + + let hasFrameworkInMainConfig = !!frameworkPackageName; + + if (frameworkPackageName && !!Object.values(rendererPackages).includes(frameworkPackageName)) { + hasFrameworkInMainConfig = false; } const builderConfig = mainConfig.core?.builder; // bail if we can't detect an official renderer const supportedPackages = Object.keys(packagesMap); - if (!supportedPackages.includes(rendererPackage)) { + if (!supportedPackages.includes(rendererPackageName)) { return null; } @@ -113,17 +97,16 @@ export const newFrameworks: Fix = { const builderInfo = await detectBuilderInfo({ mainConfig, configDir, - packageDependencies: allDependencies, + packageManager, }); // if the user has a new framework already, use it let newFrameworkPackage = Object.keys(frameworkPackages).find( - (pkg) => pkg === frameworkPackage + (pkg) => pkg === frameworkPackageName ); if (!newFrameworkPackage) { - newFrameworkPackage = - packagesMap[rendererPackage] && packagesMap[rendererPackage][builderInfo.name]; + newFrameworkPackage = packagesMap[rendererPackageName]?.[builderInfo.name]; } // bail if there is no framework that matches the renderer + builder @@ -131,7 +114,7 @@ export const newFrameworks: Fix = { return null; } - const renderer = rendererPackages[rendererPackage]; + const renderer = rendererPackages[rendererPackageName]; // @ts-expect-error account for renderer options for packages that supported it: reactOptions, angularOptions. (svelteOptions got removed) let rendererOptions = mainConfig[`${renderer}Options`] || {}; @@ -151,11 +134,15 @@ export const newFrameworks: Fix = { let addonOptions: Record = {}; let metaFramework: string | undefined; - if (rendererPackage === '@storybook/react' && allDependencies.next) { - const nextConfigFile = await findUp(nextJsConfigFiles, { cwd: configDir }); + const nextVersion = await packageManager.getPackageVersion('next'); + const svelteKitVersion = await packageManager.getPackageVersion('@sveltejs/kit'); + const viteVersion = await packageManager.getPackageVersion('vite'); + + if (rendererPackageName === '@storybook/react' && nextVersion) { const nextAddonOptions = getNextjsAddonOptions(mainConfig.addons); + const isNextJsCandidate = - (semver.gte(semver.coerce(allDependencies.next).version, '12.0.0') && nextConfigFile) || + (nextVersion && semver.gte(nextVersion, '12.0.0')) || Object.keys(nextAddonOptions).length > 0; if (isNextJsCandidate) { @@ -184,9 +171,9 @@ export const newFrameworks: Fix = { } } } else if ( - rendererPackage === '@storybook/svelte' && - allDependencies['@sveltejs/kit'] && - semver.gte(semver.coerce(allDependencies['@sveltejs/kit']).version, '1.0.0') + rendererPackageName === '@storybook/svelte' && + svelteKitVersion && + semver.gte(svelteKitVersion, '1.0.0') ) { metaFramework = 'sveltekit'; if (newFrameworkPackage === '@storybook/svelte-vite') { @@ -221,12 +208,12 @@ export const newFrameworks: Fix = { return null; } - if (allDependencies.vite && semver.lt(semver.coerce(allDependencies.vite).version, '3.0.0')) { + if (viteVersion && semver.lt(viteVersion, '3.0.0')) { throw new Error(dedent` ❌ Your project should be upgraded to use the framework package ${chalk.bold( newFrameworkPackage )}, but we detected that you are using Vite ${chalk.bold( - allDependencies.vite + viteVersion )}, which is unsupported in ${chalk.bold( 'Storybook 7.0' )}. Please upgrade Vite to ${chalk.bold('3.0.0 or higher')} and rerun this migration. @@ -248,7 +235,6 @@ export const newFrameworks: Fix = { addonOptions, addonsToRemove, builderInfo, - packageJson, renderer, builderConfig, metaFramework, @@ -436,7 +422,6 @@ export const newFrameworks: Fix = { frameworkPackage, frameworkOptions, builderInfo, - packageJson, renderer, addonsToRemove, }, @@ -445,6 +430,7 @@ export const newFrameworks: Fix = { mainConfigPath, skipInstall, }) { + const packageJson = await packageManager.retrievePackageJson(); if (dependenciesToRemove.length > 0) { logger.info(`✅ Removing dependencies: ${dependenciesToRemove.join(', ')}`); if (!dryRun) { diff --git a/code/lib/cli/src/automigrate/fixes/nodejs-requirement.test.ts b/code/lib/cli/src/automigrate/fixes/nodejs-requirement.test.ts index 5a4f6327e657..d86b266b6081 100644 --- a/code/lib/cli/src/automigrate/fixes/nodejs-requirement.test.ts +++ b/code/lib/cli/src/automigrate/fixes/nodejs-requirement.test.ts @@ -1,15 +1,15 @@ /// ; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; import { nodeJsRequirement } from './nodejs-requirement'; // eslint-disable-next-line global-require, jest/no-mocks-import jest.mock('fs-extra', () => require('../../../../../__mocks__/fs-extra')); const check = async ({ storybookVersion = '7.0.0' }) => { - mockStorybookData({ mainConfig: {}, storybookVersion }); return nodeJsRequirement.check({ - packageManager: makePackageManager({}), + storybookVersion, + packageManager: {} as any, + mainConfig: {} as any, }); }; diff --git a/code/lib/cli/src/automigrate/fixes/nodejs-requirement.ts b/code/lib/cli/src/automigrate/fixes/nodejs-requirement.ts index 276d4b9e1ead..4c3006b7a367 100644 --- a/code/lib/cli/src/automigrate/fixes/nodejs-requirement.ts +++ b/code/lib/cli/src/automigrate/fixes/nodejs-requirement.ts @@ -2,7 +2,6 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import semver from 'semver'; import type { Fix } from '../types'; -import { getStorybookData } from '../helpers/mainConfigFile'; interface NodeJsRequirementOptions { nodeVersion: string; @@ -12,9 +11,7 @@ export const nodeJsRequirement: Fix = { id: 'nodejs-requirement', promptOnly: true, - async check({ packageManager, configDir }) { - const { storybookVersion } = await getStorybookData({ packageManager, configDir }); - + async check({ storybookVersion }) { if (!semver.gte(storybookVersion, '7.0.0')) { return null; } diff --git a/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.test.ts b/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.test.ts index a8fa9d050b9c..27d6fe065f3f 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.test.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.test.ts @@ -8,7 +8,7 @@ import { RemovedAPIs, removedGlobalClientAPIs as migration } from './remove-glob // eslint-disable-next-line global-require, jest/no-mocks-import jest.mock('fs-extra', () => require('../../../../../__mocks__/fs-extra')); -const check = async ({ packageJson = {}, contents }: any) => { +const check = async ({ contents, previewConfigPath }: any) => { if (contents) { // eslint-disable-next-line global-require require('fs-extra').__setMockFiles({ @@ -16,9 +16,15 @@ const check = async ({ packageJson = {}, contents }: any) => { }); } const packageManager = { - retrievePackageJson: async () => ({ dependencies: {}, devDependencies: {}, ...packageJson }), + retrievePackageJson: async () => ({ dependencies: {}, devDependencies: {} }), } as JsPackageManager; - return migration.check({ packageManager }); + + return migration.check({ + packageManager, + mainConfig: {} as any, + storybookVersion: '7.0.0', + previewConfigPath, + }); }; describe('removedGlobalClientAPIs fix', () => { @@ -30,14 +36,18 @@ describe('removedGlobalClientAPIs fix', () => { const contents = ` export const parameters = {}; `; - await expect(check({ contents })).resolves.toBeNull(); + await expect( + check({ contents, previewConfigPath: path.join('.storybook', 'preview.js') }) + ).resolves.toBeNull(); }); it('uses 1 removed API', async () => { const contents = ` import { addParameters } from '@storybook/react'; addParameters({}); `; - await expect(check({ contents })).resolves.toEqual( + await expect( + check({ contents, previewConfigPath: path.join('.storybook', 'preview.js') }) + ).resolves.toEqual( expect.objectContaining({ usedAPIs: [RemovedAPIs.addParameters], }) @@ -49,7 +59,9 @@ describe('removedGlobalClientAPIs fix', () => { addParameters({}); addDecorator((storyFn) => storyFn()); `; - await expect(check({ contents })).resolves.toEqual( + await expect( + check({ contents, previewConfigPath: path.join('.storybook', 'preview.js') }) + ).resolves.toEqual( expect.objectContaining({ usedAPIs: expect.arrayContaining([RemovedAPIs.addParameters, RemovedAPIs.addDecorator]), }) diff --git a/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.ts b/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.ts index 9888b22a6be9..4a1304dae1a6 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-global-client-apis.ts @@ -1,6 +1,5 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; -import { getStorybookInfo } from '@storybook/core-common'; import { readFile } from 'fs-extra'; import type { Fix } from '../types'; @@ -22,13 +21,9 @@ export const removedGlobalClientAPIs: Fix = { id: 'removedglobalclientapis', promptOnly: true, - async check({ packageManager, configDir }) { - const packageJson = await packageManager.retrievePackageJson(); - - const { previewConfig } = getStorybookInfo(packageJson, configDir); - - if (previewConfig) { - const contents = await readFile(previewConfig, 'utf8'); + async check({ previewConfigPath }) { + if (previewConfigPath) { + const contents = await readFile(previewConfigPath, 'utf8'); const usedAPIs = Object.values(RemovedAPIs).reduce((acc, item) => { if (contents.includes(item)) { @@ -40,7 +35,7 @@ export const removedGlobalClientAPIs: Fix = { if (usedAPIs.length) { return { usedAPIs, - previewPath: previewConfig, + previewPath: previewConfigPath, }; } } diff --git a/code/lib/cli/src/automigrate/fixes/sb-binary.test.ts b/code/lib/cli/src/automigrate/fixes/sb-binary.test.ts index b150dc424406..c0326a9620fe 100644 --- a/code/lib/cli/src/automigrate/fixes/sb-binary.test.ts +++ b/code/lib/cli/src/automigrate/fixes/sb-binary.test.ts @@ -1,26 +1,39 @@ -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { sbBinary } from './sb-binary'; const checkStorybookBinary = async ({ - packageJson, + packageManager, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; + packageManager: Partial; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig: {}, storybookVersion }); - return sbBinary.check({ packageManager: makePackageManager(packageJson) }); + return sbBinary.check({ + packageManager: packageManager as any, + storybookVersion, + mainConfig: {} as any, + }); }; describe('storybook-binary fix', () => { describe('sb < 7.0', () => { describe('does nothing', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.2.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('6.2.0'); + default: + return null; + } + }, + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + it('should no-op', async () => { await expect( checkStorybookBinary({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).resolves.toBeFalsy(); @@ -30,25 +43,43 @@ describe('storybook-binary fix', () => { describe('sb >= 7.0', () => { it('should no-op in NX projects', async () => { - const packageJson = { - dependencies: { '@storybook/react': '^7.0.0', '@nrwl/storybook': '^15.7.1' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0'); + case '@nrwl/storybook': + return Promise.resolve('15.7.1'); + default: + return null; + } + }, + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + await expect( checkStorybookBinary({ - packageJson, + packageManager, }) ).resolves.toBeFalsy(); }); it('should add storybook dependency if not present', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + default: + return null; + } }, - }; + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + await expect( checkStorybookBinary({ - packageJson, + packageManager, }) ).resolves.toEqual( expect.objectContaining({ @@ -59,15 +90,23 @@ describe('storybook-binary fix', () => { }); it('should remove sb dependency if it is present', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - sb: '6.5.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + case 'sb': + return Promise.resolve('6.5.0'); + default: + return null; + } }, - }; + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + await expect( checkStorybookBinary({ - packageJson, + packageManager, }) ).resolves.toEqual( expect.objectContaining({ @@ -78,15 +117,23 @@ describe('storybook-binary fix', () => { }); it('should no op if storybook is present and sb is not present', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', - storybook: '^7.0.0-alpha.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + case 'storybook': + return Promise.resolve('7.0.0-alpha.0'); + default: + return null; + } }, - }; + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + await expect( checkStorybookBinary({ - packageJson, + packageManager, }) ).resolves.toBeNull(); }); diff --git a/code/lib/cli/src/automigrate/fixes/sb-binary.ts b/code/lib/cli/src/automigrate/fixes/sb-binary.ts index 22d0283e3de3..276d10c6178a 100644 --- a/code/lib/cli/src/automigrate/fixes/sb-binary.ts +++ b/code/lib/cli/src/automigrate/fixes/sb-binary.ts @@ -4,7 +4,6 @@ import semver from 'semver'; import type { Fix } from '../types'; import { getStorybookVersionSpecifier } from '../../helpers'; import type { PackageJsonWithDepsAndDevDeps } from '../../js-package-manager'; -import { getStorybookData } from '../helpers/mainConfigFile'; interface SbBinaryRunOptions { storybookVersion: string; @@ -25,18 +24,20 @@ const logger = console; export const sbBinary: Fix = { id: 'storybook-binary', - async check({ packageManager, configDir }) { + async check({ packageManager, storybookVersion }) { const packageJson = await packageManager.retrievePackageJson(); - const allDependencies = await packageManager.getAllDependencies(); - const { storybookVersion } = await getStorybookData({ packageManager, configDir }); + + const nrwlStorybookVersion = await packageManager.getPackageVersion('@nrwl/storybook'); + const sbBinaryVersion = await packageManager.getPackageVersion('sb'); + const storybookBinaryVersion = await packageManager.getPackageVersion('storybook'); // Nx provides their own binary, so we don't need to do anything - if (allDependencies['@nrwl/storybook'] || semver.lt(storybookVersion, '7.0.0')) { + if (nrwlStorybookVersion || semver.lt(storybookVersion, '7.0.0')) { return null; } - const hasSbBinary = !!allDependencies.sb; - const hasStorybookBinary = !!allDependencies.storybook; + const hasSbBinary = !!sbBinaryVersion; + const hasStorybookBinary = !!storybookBinaryVersion; if (!hasSbBinary && hasStorybookBinary) { return null; diff --git a/code/lib/cli/src/automigrate/fixes/sb-scripts.test.ts b/code/lib/cli/src/automigrate/fixes/sb-scripts.test.ts index 1e8d4edf71ca..036cb18ba098 100644 --- a/code/lib/cli/src/automigrate/fixes/sb-scripts.test.ts +++ b/code/lib/cli/src/automigrate/fixes/sb-scripts.test.ts @@ -1,16 +1,18 @@ -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { getStorybookScripts, sbScripts } from './sb-scripts'; const checkSbScripts = async ({ - packageJson, + packageManager, storybookVersion = '7.0.0', }: { - packageJson: PackageJson; + packageManager: Partial; storybookVersion?: string; }) => { - mockStorybookData({ mainConfig: {}, storybookVersion }); - return sbScripts.check({ packageManager: makePackageManager(packageJson) }); + return sbScripts.check({ + packageManager: packageManager as any, + storybookVersion, + mainConfig: {} as any, + }); }; describe('getStorybookScripts', () => { @@ -58,11 +60,22 @@ describe('getStorybookScripts', () => { describe('sb-scripts fix', () => { describe('sb < 7.0', () => { describe('does nothing', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.2.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('6.2.0'); + default: + return null; + } + }, + retrievePackageJson: () => Promise.resolve({}), + } as Partial; + it('should no-op', async () => { await expect( checkSbScripts({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).resolves.toBeFalsy(); @@ -72,19 +85,30 @@ describe('sb-scripts fix', () => { describe('sb >= 7.0', () => { describe('with old scripts', () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + default: + return null; + } }, - scripts: { - storybook: 'start-storybook -p 6006', - 'build-storybook': 'build-storybook -o build/storybook', - }, - }; + retrievePackageJson: () => + Promise.resolve({ + scripts: { + storybook: 'start-storybook -p 6006', + 'build-storybook': 'build-storybook -o build/storybook', + }, + dependencies: {}, + devDependencies: {}, + }), + } as Partial; + it('should update scripts to new format', async () => { await expect( checkSbScripts({ - packageJson, + packageManager, }) ).resolves.toEqual( expect.objectContaining({ @@ -105,22 +129,32 @@ describe('sb-scripts fix', () => { describe('with old custom scripts', () => { it('should update scripts to new format', async () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + default: + return null; + } }, - scripts: { - 'storybook:ci': 'yarn start-storybook --ci', - 'storybook:build': 'build-storybook -o build/storybook', - 'storybook:build-mocked': 'MOCKS=true yarn storybook:build', - 'test-storybook:ci': - 'concurrently -k -s first -n "SB,TEST" -c "magenta,blue" "CI=true build-storybook --quiet && npx http-server storybook-static --port 6006 --silent" "wait-on tcp:6006 && yarn test-storybook"', - }, - }; + retrievePackageJson: () => + Promise.resolve({ + scripts: { + 'storybook:ci': 'yarn start-storybook --ci', + 'storybook:build': 'build-storybook -o build/storybook', + 'storybook:build-mocked': 'MOCKS=true yarn storybook:build', + 'test-storybook:ci': + 'concurrently -k -s first -n "SB,TEST" -c "magenta,blue" "CI=true build-storybook --quiet && npx http-server storybook-static --port 6006 --silent" "wait-on tcp:6006 && yarn test-storybook"', + }, + dependencies: {}, + devDependencies: {}, + }), + } as Partial; await expect( checkSbScripts({ - packageJson, + packageManager, }) ).resolves.toEqual( expect.objectContaining({ @@ -142,19 +176,30 @@ describe('sb-scripts fix', () => { }); describe('already containing new scripts', () => { - const packageJson = { - dependencies: { - '@storybook/react': '^7.0.0-alpha.0', + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + default: + return null; + } }, - scripts: { - storybook: 'storybook dev -p 6006', - 'build-storybook': 'storybook build -o build/storybook', - }, - }; + retrievePackageJson: () => + Promise.resolve({ + scripts: { + storybook: 'storybook dev -p 6006', + 'build-storybook': 'storybook build -o build/storybook', + }, + dependencies: {}, + devDependencies: {}, + }), + } as Partial; + it('should no-op', async () => { await expect( checkSbScripts({ - packageJson, + packageManager, }) ).resolves.toBeFalsy(); }); diff --git a/code/lib/cli/src/automigrate/fixes/sb-scripts.ts b/code/lib/cli/src/automigrate/fixes/sb-scripts.ts index b624d494af5a..8471d3c1a6c3 100644 --- a/code/lib/cli/src/automigrate/fixes/sb-scripts.ts +++ b/code/lib/cli/src/automigrate/fixes/sb-scripts.ts @@ -3,7 +3,6 @@ import { dedent } from 'ts-dedent'; import semver from 'semver'; import type { Fix } from '../types'; import type { PackageJsonWithDepsAndDevDeps } from '../../js-package-manager'; -import { getStorybookData } from '../helpers/mainConfigFile'; interface SbScriptsRunOptions { storybookScripts: Record; @@ -71,10 +70,9 @@ export const getStorybookScripts = (allScripts: Record) => { export const sbScripts: Fix = { id: 'sb-scripts', - async check({ packageManager, configDir }) { + async check({ packageManager, storybookVersion }) { const packageJson = await packageManager.retrievePackageJson(); const { scripts = {} } = packageJson; - const { storybookVersion } = await getStorybookData({ packageManager, configDir }); if (semver.lt(storybookVersion, '7.0.0')) { return null; diff --git a/code/lib/cli/src/automigrate/fixes/vue3.test.ts b/code/lib/cli/src/automigrate/fixes/vue3.test.ts index 6c4594d076df..6d7f61d77186 100644 --- a/code/lib/cli/src/automigrate/fixes/vue3.test.ts +++ b/code/lib/cli/src/automigrate/fixes/vue3.test.ts @@ -1,21 +1,21 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { vue3 } from './vue3'; const checkVue3 = async ({ - packageJson, main: mainConfig = {}, storybookVersion = '7.0.0', + packageManager, }: { - packageJson: PackageJson; main?: Partial & Record; + mainConfig?: Partial; storybookVersion?: string; + packageManager?: Partial; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return vue3.check({ - packageManager: makePackageManager(packageJson), + packageManager: packageManager as any, + storybookVersion, + mainConfig: mainConfig as any, }); }; @@ -24,24 +24,43 @@ describe('vue3 fix', () => { describe('sb < 6.3', () => { describe('vue3 dependency', () => { - const packageJson = { - dependencies: { '@storybook/vue': '^6.2.0', vue: '^3.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/vue': + return Promise.resolve('6.2.0'); + case 'vue': + return Promise.resolve('3.0.0'); + default: + return null; + } + }, + } as Partial; + it('should fail', async () => { await expect( checkVue3({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).rejects.toThrow(); }); }); describe('no vue dependency', () => { - const packageJson = { dependencies: { '@storybook/vue': '^6.2.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/vue': + return Promise.resolve('6.2.0'); + default: + return null; + } + }, + } as Partial; it('should no-op', async () => { await expect( checkVue3({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).resolves.toBeFalsy(); @@ -50,14 +69,24 @@ describe('vue3 fix', () => { }); describe('sb 6.3 - 7.0', () => { describe('vue3 dependency', () => { - const packageJson = { - dependencies: { '@storybook/vue': '^6.3.0', vue: '^3.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/vue': + return Promise.resolve('6.3.0'); + case 'vue': + return Promise.resolve('3.0.0'); + default: + return null; + } + }, + } as Partial; + describe('webpack5 builder', () => { it('should no-op', async () => { await expect( checkVue3({ - packageJson, + packageManager, main: { core: { builder: 'webpack5' } }, }) ).resolves.toBeFalsy(); @@ -67,7 +96,7 @@ describe('vue3 fix', () => { it('should no-op', async () => { await expect( checkVue3({ - packageJson, + packageManager, main: { core: { builder: 'storybook-builder-vite' } }, }) ).resolves.toBeFalsy(); @@ -77,12 +106,12 @@ describe('vue3 fix', () => { it('should add webpack5 builder', async () => { await expect( checkVue3({ - packageJson, + packageManager, main: { core: { builder: 'webpack4' } }, storybookVersion: '6.3.0', }) ).resolves.toMatchObject({ - vueVersion: '^3.0.0', + vueVersion: '3.0.0', storybookVersion: '6.3.0', }); }); @@ -91,12 +120,12 @@ describe('vue3 fix', () => { it('should add webpack5 builder', async () => { await expect( checkVue3({ - packageJson, + packageManager, main: {}, storybookVersion: '6.3.0', }) ).resolves.toMatchObject({ - vueVersion: '^3.0.0', + vueVersion: '3.0.0', storybookVersion: '6.3.0', }); }); @@ -104,23 +133,34 @@ describe('vue3 fix', () => { }); describe('no vue dependency', () => { it('should no-op', async () => { + const packageManager = { + getPackageVersion: (packageName) => { + return null; + }, + } as Partial; + await expect( checkVue3({ - packageJson: {}, + packageManager, main: {}, }) ).resolves.toBeFalsy(); }); }); describe('vue2 dependency', () => { + const packageManager = { + getPackageVersion: (packageName) => { + if (packageName === 'vue') { + return Promise.resolve('2.0.0'); + } + return null; + }, + } as Partial; + it('should no-op', async () => { await expect( checkVue3({ - packageJson: { - dependencies: { - vue: '2', - }, - }, + packageManager, main: {}, }) ).resolves.toBeFalsy(); @@ -129,13 +169,23 @@ describe('vue3 fix', () => { }); describe('sb 7.0+', () => { describe('vue3 dependency', () => { - const packageJson = { - dependencies: { '@storybook/vue': '^7.0.0-alpha.0', vue: '^3.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/vue': + return Promise.resolve('7.0.0-alpha.0'); + case 'vue': + return Promise.resolve('3.0.0'); + default: + return null; + } + }, + } as Partial; + it('should no-op', async () => { await expect( checkVue3({ - packageJson, + packageManager, main: {}, }) ).resolves.toBeFalsy(); diff --git a/code/lib/cli/src/automigrate/fixes/vue3.ts b/code/lib/cli/src/automigrate/fixes/vue3.ts index 0d3aaca104af..84bde42d6196 100644 --- a/code/lib/cli/src/automigrate/fixes/vue3.ts +++ b/code/lib/cli/src/automigrate/fixes/vue3.ts @@ -19,16 +19,14 @@ interface Vue3RunOptions { export const vue3: Fix = { id: 'vue3', - async check({ configDir, packageManager }) { - const allDependencies = await packageManager.getAllDependencies(); - const vueVersion = allDependencies.vue; - const vueCoerced = semver.coerce(vueVersion)?.version; + async check({ packageManager, mainConfig, storybookVersion }) { + const vueVersion = await packageManager.getPackageVersion('vue'); - if (!vueCoerced || semver.lt(vueCoerced, '3.0.0')) { + if (!vueVersion || semver.lt(vueVersion, '3.0.0')) { return null; } - const builderInfo = await checkWebpack5Builder({ configDir, packageManager }); + const builderInfo = await checkWebpack5Builder({ mainConfig, storybookVersion }); return builderInfo ? { vueVersion, ...builderInfo } : null; }, diff --git a/code/lib/cli/src/automigrate/fixes/webpack5.test.ts b/code/lib/cli/src/automigrate/fixes/webpack5.test.ts index 15fc94a76800..db03eeb57a08 100644 --- a/code/lib/cli/src/automigrate/fixes/webpack5.test.ts +++ b/code/lib/cli/src/automigrate/fixes/webpack5.test.ts @@ -1,22 +1,22 @@ import type { StorybookConfig } from '@storybook/types'; -import type { PackageJson } from '../../js-package-manager'; -import { makePackageManager, mockStorybookData } from '../helpers/testing-helpers'; +import type { JsPackageManager } from '../../js-package-manager'; import { webpack5 } from './webpack5'; const checkWebpack5 = async ({ - packageJson, + packageManager, main: mainConfig, storybookVersion = '6.3.0', }: { - packageJson: PackageJson; + packageManager: Partial; main?: Partial & Record; storybookVersion?: string; + mainConfig?: Partial; }) => { - mockStorybookData({ mainConfig, storybookVersion }); - return webpack5.check({ - packageManager: makePackageManager(packageJson), + packageManager: packageManager as any, configDir: '', + storybookVersion, + mainConfig: mainConfig as any, }); }; @@ -25,22 +25,44 @@ describe('webpack5 fix', () => { describe('sb < 6.3', () => { describe('webpack5 dependency', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.2.0', webpack: '^5.0.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('6.2.0'); + case 'webpack': + return Promise.resolve('5.0.0'); + default: + return null; + } + }, + } as Partial; + it('should fail', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).rejects.toThrow(); }); }); describe('no webpack5 dependency', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.2.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('6.2.0'); + default: + return null; + } + }, + } as Partial; + it('should no-op', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, storybookVersion: '6.2.0', }) ).resolves.toBeFalsy(); @@ -49,12 +71,24 @@ describe('webpack5 fix', () => { }); describe('sb 6.3 - 7.0', () => { describe('webpack5 dependency', () => { - const packageJson = { dependencies: { '@storybook/react': '^6.3.0', webpack: '^5.0.0' } }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('6.3.0'); + case 'webpack': + return Promise.resolve('5.0.0'); + default: + return null; + } + }, + } as Partial; + describe('webpack5 builder', () => { it('should no-op', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, main: { core: { builder: 'webpack5' } }, }) ).resolves.toBeFalsy(); @@ -64,7 +98,7 @@ describe('webpack5 fix', () => { it('should no-op', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, main: { core: { builder: 'storybook-builder-vite' } }, }) ).resolves.toBeFalsy(); @@ -74,11 +108,11 @@ describe('webpack5 fix', () => { it('should add webpack5 builder', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, main: { core: { builder: 'webpack4' } }, }) ).resolves.toMatchObject({ - webpackVersion: '^5.0.0', + webpackVersion: '5.0.0', storybookVersion: '6.3.0', }); }); @@ -87,34 +121,47 @@ describe('webpack5 fix', () => { it('should add webpack5 builder', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, main: {}, }) ).resolves.toMatchObject({ - webpackVersion: '^5.0.0', + webpackVersion: '5.0.0', storybookVersion: '6.3.0', }); }); }); }); describe('no webpack dependency', () => { + const packageManager = { + getPackageVersion: () => { + return null; + }, + } as Partial; + it('should no-op', async () => { await expect( checkWebpack5({ - packageJson: {}, + packageManager, }) ).resolves.toBeFalsy(); }); }); describe('webpack4 dependency', () => { + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case 'webpack': + return Promise.resolve('4.0.0'); + default: + return null; + } + }, + } as Partial; + it('should no-op', async () => { await expect( checkWebpack5({ - packageJson: { - dependencies: { - webpack: '4', - }, - }, + packageManager, }) ).resolves.toBeFalsy(); }); @@ -122,13 +169,23 @@ describe('webpack5 fix', () => { }); describe('sb 7.0+', () => { describe('webpack5 dependency', () => { - const packageJson = { - dependencies: { '@storybook/react': '^7.0.0-alpha.0', webpack: '^5.0.0' }, - }; + const packageManager = { + getPackageVersion: (packageName) => { + switch (packageName) { + case '@storybook/react': + return Promise.resolve('7.0.0-alpha.0'); + case 'webpack': + return Promise.resolve('5.0.0'); + default: + return null; + } + }, + } as Partial; + it('should no-op', async () => { await expect( checkWebpack5({ - packageJson, + packageManager, main: {}, storybookVersion: '7.0.0', }) diff --git a/code/lib/cli/src/automigrate/fixes/webpack5.ts b/code/lib/cli/src/automigrate/fixes/webpack5.ts index c60dc9f0eed1..bcae50749a1e 100644 --- a/code/lib/cli/src/automigrate/fixes/webpack5.ts +++ b/code/lib/cli/src/automigrate/fixes/webpack5.ts @@ -25,20 +25,17 @@ interface Webpack5RunOptions { export const webpack5: Fix = { id: 'webpack5', - async check({ configDir, packageManager }) { - const allDependencies = (await packageManager.retrievePackageJson()).dependencies; - - const webpackVersion = allDependencies.webpack; - const webpackCoerced = semver.coerce(webpackVersion)?.version; + async check({ configDir, packageManager, mainConfig, storybookVersion }) { + const webpackVersion = await packageManager.getPackageVersion('webpack'); if ( - !webpackCoerced || - semver.lt(webpackCoerced, '5.0.0') || - semver.gte(webpackCoerced, '6.0.0') + !webpackVersion || + semver.lt(webpackVersion, '5.0.0') || + semver.gte(webpackVersion, '6.0.0') ) return null; - const builderInfo = await checkWebpack5Builder({ configDir, packageManager }); + const builderInfo = await checkWebpack5Builder({ mainConfig, storybookVersion }); return builderInfo ? { webpackVersion, ...builderInfo } : null; }, diff --git a/code/lib/cli/src/automigrate/fixes/wrap-require-utils.ts b/code/lib/cli/src/automigrate/fixes/wrap-require-utils.ts new file mode 100644 index 000000000000..c1a33b3119f6 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/wrap-require-utils.ts @@ -0,0 +1,187 @@ +/* eslint-disable no-param-reassign */ +import * as t from '@babel/types'; +import type { ConfigFile } from '@storybook/csf-tools'; + +const defaultRequireWrapperName = 'getAbsolutePath'; + +/** + * Checks if the following node declarations exists in the main config file. + * @example + * const = () => {}; + * function () {} + */ +function doesVariableOrFunctionDeclarationExist(node: t.Node, name: string) { + return ( + (t.isVariableDeclaration(node) && + node.declarations.length === 1 && + t.isVariableDeclarator(node.declarations[0]) && + t.isIdentifier(node.declarations[0].id) && + node.declarations[0].id?.name === name) || + (t.isFunctionDeclaration(node) && t.isIdentifier(node.id) && node.id.name === name) + ); +} + +/** + * Wrap a value with require wrapper. + * @example + * // Before + * { framework: 'react' } + * + * // After + * { framework: wrapForPnp('react') } + */ +function getReferenceToRequireWrapper(config: ConfigFile, value: string) { + return t.callExpression( + t.identifier(getRequireWrapperName(config) ?? defaultRequireWrapperName), + [t.stringLiteral(value)] + ); +} + +/** + * Returns the name of the require wrapper function if it exists in the main config file. + * @returns Name of the require wrapper function. + */ +export function getRequireWrapperName(config: ConfigFile) { + const declarationName = config.getBodyDeclarations().flatMap((node) => + // eslint-disable-next-line no-nested-ternary + doesVariableOrFunctionDeclarationExist(node, 'wrapForPnp') + ? ['wrapForPnp'] + : doesVariableOrFunctionDeclarationExist(node, defaultRequireWrapperName) + ? [defaultRequireWrapperName] + : [] + ); + + if (declarationName.length) { + return declarationName[0]; + } + + return null; +} + +/** + * Check if the node needs to be wrapped with require wrapper. + */ +export function isRequireWrapperNecessary( + node: t.Node, + cb: (node: t.StringLiteral | t.ObjectProperty | t.ArrayExpression) => void = () => {} +) { + if (t.isStringLiteral(node)) { + // value will be converted from StringLiteral to CallExpression. + cb(node); + return true; + } + + if (t.isObjectExpression(node)) { + const nameProperty = node.properties.find( + (property) => + t.isObjectProperty(property) && t.isIdentifier(property.key) && property.key.name === 'name' + ) as t.ObjectProperty; + + if (nameProperty && t.isStringLiteral(nameProperty.value)) { + cb(nameProperty); + return true; + } + } + + if ( + t.isArrayExpression(node) && + node.elements.some((element) => isRequireWrapperNecessary(element)) + ) { + cb(node); + return true; + } + + return false; +} + +/** + * Get all fields that need to be wrapped with require wrapper. + * @returns Array of fields that need to be wrapped with require wrapper. + */ +export function getFieldsForRequireWrapper(config: ConfigFile) { + const frameworkNode = config.getFieldNode(['framework']); + const builderNode = config.getFieldNode(['core', 'builder']); + const rendererNode = config.getFieldNode(['core', 'renderer']); + const addons = config.getFieldNode(['addons']); + + const fieldsWithRequireWrapper = [ + ...(frameworkNode ? [frameworkNode] : []), + ...(builderNode ? [builderNode] : []), + ...(rendererNode ? [rendererNode] : []), + ...(addons && t.isArrayExpression(addons) ? [addons] : []), + ]; + + return fieldsWithRequireWrapper; +} + +/** + * Returns AST for the following function + * @example + * function getAbsolutePath(value) { + * return dirname(require.resolve(join(value, 'package.json'))) + * } + */ +export function getRequireWrapperAsCallExpression( + isConfigTypescript: boolean +): t.FunctionDeclaration { + const functionDeclaration = { + ...t.functionDeclaration( + t.identifier(defaultRequireWrapperName), + [ + { + ...t.identifier('value'), + ...(isConfigTypescript + ? { typeAnnotation: t.tsTypeAnnotation(t.tSStringKeyword()) } + : {}), + }, + ], + t.blockStatement([ + t.returnStatement( + t.callExpression(t.identifier('dirname'), [ + t.callExpression(t.memberExpression(t.identifier('require'), t.identifier('resolve')), [ + t.callExpression(t.identifier('join'), [ + t.identifier('value'), + t.stringLiteral('package.json'), + ]), + ]), + ]) + ), + ]) + ), + ...(isConfigTypescript ? { returnType: t.tSTypeAnnotation(t.tsAnyKeyword()) } : {}), + }; + + t.addComment( + functionDeclaration, + 'leading', + '*\n * This function is used to resolve the absolute path of a package.\n * It is needed in projects that use Yarn PnP or are set up within a monorepo.\n' + ); + + return functionDeclaration; +} + +export function wrapValueWithRequireWrapper(config: ConfigFile, node: t.Node) { + isRequireWrapperNecessary(node, (n) => { + if (t.isStringLiteral(n)) { + const wrapperNode = getReferenceToRequireWrapper(config, n.value); + Object.keys(n).forEach((k: keyof typeof n) => { + delete n[k]; + }); + Object.keys(wrapperNode).forEach((k: keyof typeof wrapperNode) => { + (n as any)[k] = wrapperNode[k]; + }); + } + + if (t.isObjectProperty(n) && t.isStringLiteral(n.value)) { + n.value = getReferenceToRequireWrapper(config, n.value.value) as any; + } + + if (t.isArrayExpression(n)) { + n.elements.forEach((element, index, elements) => { + if (t.isStringLiteral(element)) { + elements[index] = getReferenceToRequireWrapper(config, element.value); + } + }); + } + }); +} diff --git a/code/lib/cli/src/automigrate/fixes/wrap-require.test.ts b/code/lib/cli/src/automigrate/fixes/wrap-require.test.ts new file mode 100644 index 000000000000..e040eb6e29f7 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/wrap-require.test.ts @@ -0,0 +1,77 @@ +import { wrapRequire } from './wrap-require'; +import * as detect from '../../detect'; + +jest.mock('../../detect', () => ({ + ...jest.requireActual('../../detect'), + detectPnp: jest.fn(), +})); + +describe('wrapRequire', () => { + describe('check', () => { + it('should return null if not in a monorepo and pnp is not enabled', async () => { + (detect.detectPnp as any as jest.SpyInstance).mockResolvedValue(false); + + const check = wrapRequire.check({ + packageManager: { + isStorybookInMonorepo: () => false, + }, + storybookVersion: '7.0.0', + mainConfigPath: require.resolve('./__test__/main-config-without-wrappers.js'), + } as any); + + await expect(check).resolves.toBeNull(); + }); + + it('should return the configuration object if in a pnp environment', async () => { + (detect.detectPnp as any as jest.SpyInstance).mockResolvedValue(true); + + const check = wrapRequire.check({ + packageManager: { + isStorybookInMonorepo: () => false, + }, + storybookVersion: '7.0.0', + mainConfigPath: require.resolve('./__test__/main-config-without-wrappers.js'), + } as any); + + await expect(check).resolves.toEqual({ + isConfigTypescript: false, + isPnp: true, + isStorybookInMonorepo: false, + storybookVersion: '7.0.0', + }); + }); + + it('should return the configuration object if in a monorepo environment', async () => { + (detect.detectPnp as any as jest.SpyInstance).mockResolvedValue(false); + + const check = wrapRequire.check({ + packageManager: { + isStorybookInMonorepo: () => true, + }, + storybookVersion: '7.0.0', + mainConfigPath: require.resolve('./__test__/main-config-without-wrappers.js'), + } as any); + + await expect(check).resolves.toEqual({ + isConfigTypescript: false, + isPnp: false, + isStorybookInMonorepo: true, + storybookVersion: '7.0.0', + }); + }); + + it('should return null, if all fields have the require wrapper', async () => { + (detect.detectPnp as any as jest.SpyInstance).mockResolvedValue(true); + + const check = wrapRequire.check({ + packageManager: { + isStorybookInMonorepo: () => true, + }, + storybookVersion: '7.0.0', + mainConfigPath: require.resolve('./__test__/main-config-with-wrappers.js'), + } as any); + + await expect(check).resolves.toBeNull(); + }); + }); +}); diff --git a/code/lib/cli/src/automigrate/fixes/wrap-require.ts b/code/lib/cli/src/automigrate/fixes/wrap-require.ts new file mode 100644 index 000000000000..509b51bae989 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/wrap-require.ts @@ -0,0 +1,86 @@ +import chalk from 'chalk'; +import { dedent } from 'ts-dedent'; +import { readConfig } from '@storybook/csf-tools'; +import type { Fix } from '../types'; +import { detectPnp } from '../../detect'; +import { updateMainConfig } from '../helpers/mainConfigFile'; +import { + getFieldsForRequireWrapper, + getRequireWrapperAsCallExpression, + getRequireWrapperName, + isRequireWrapperNecessary, + wrapValueWithRequireWrapper, +} from './wrap-require-utils'; + +interface WrapRequireRunOptions { + storybookVersion: string; + isStorybookInMonorepo: boolean; + isPnp: boolean; + isConfigTypescript: boolean; +} + +export const wrapRequire: Fix = { + id: 'wrap-require', + + async check({ packageManager, storybookVersion, mainConfigPath }) { + const isStorybookInMonorepo = await packageManager.isStorybookInMonorepo(); + const isPnp = await detectPnp(); + + const config = await readConfig(mainConfigPath); + + if (!isStorybookInMonorepo && !isPnp) { + return null; + } + + if (!getFieldsForRequireWrapper(config).some((node) => isRequireWrapperNecessary(node))) { + return null; + } + + const isConfigTypescript = mainConfigPath.endsWith('.ts') || mainConfigPath.endsWith('.tsx'); + + return { storybookVersion, isStorybookInMonorepo, isPnp, isConfigTypescript }; + }, + + prompt({ storybookVersion, isStorybookInMonorepo }) { + const sbFormatted = chalk.cyan(`Storybook ${storybookVersion}`); + + return dedent`We have detected that you're using ${sbFormatted} in a ${ + isStorybookInMonorepo ? 'monorepo' : 'PnP' + } project. + For Storybook to work correctly, some fields in your main config must be updated. We can do this for you automatically. + + More info: https://storybook.js.org/docs/react/faq#how-do-i-fix-module-resolution-in-special-environments`; + }, + + async run({ dryRun, mainConfigPath, result }) { + return new Promise((resolve, reject) => { + updateMainConfig({ dryRun, mainConfigPath }, (mainConfig) => { + try { + getFieldsForRequireWrapper(mainConfig).forEach((node) => { + wrapValueWithRequireWrapper(mainConfig, node); + }); + + if (getRequireWrapperName(mainConfig) === null) { + if ( + mainConfig.fileName.endsWith('.cjs') || + mainConfig.fileName.endsWith('.cts') || + mainConfig.fileName.endsWith('.cjsx') || + mainConfig.fileName.endsWith('.ctsx') + ) { + mainConfig.setRequireImport(['dirname', 'join'], 'path'); + } else { + mainConfig.setImport(['dirname', 'join'], 'path'); + } + mainConfig.setBodyDeclaration( + getRequireWrapperAsCallExpression(result.isConfigTypescript) + ); + } + + resolve(); + } catch (e) { + reject(e); + } + }); + }); + }, +}; diff --git a/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.test.ts b/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.test.ts new file mode 100644 index 000000000000..51cb622baf42 --- /dev/null +++ b/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.test.ts @@ -0,0 +1,78 @@ +import type { StorybookConfig } from '@storybook/types'; +import { checkWebpack5Builder } from './checkWebpack5Builder'; +import { getBuilderPackageName } from './mainConfigFile'; + +const mockMainConfig: StorybookConfig = { + framework: 'react', + addons: [], + stories: [], +}; + +jest.mock('./mainConfigFile'); + +describe('checkWebpack5Builder', () => { + let loggerWarnSpy: jest.SpyInstance; + let loggerInfoSpy: jest.SpyInstance; + + beforeEach(() => { + loggerWarnSpy = jest.spyOn(console, 'warn').mockImplementation(); + loggerInfoSpy = jest.spyOn(console, 'info').mockImplementation(); + }); + + afterEach(() => { + loggerWarnSpy.mockRestore(); + loggerInfoSpy.mockRestore(); + }); + + it('should return null and log a warning if storybook version is below 6.3.0', async () => { + const result = await checkWebpack5Builder({ + mainConfig: mockMainConfig, + storybookVersion: '6.2.9', + }); + expect(result).toBeNull(); + expect(loggerWarnSpy).toHaveBeenCalledWith(expect.any(String)); + }); + + it('should return null if storybook version is 7.0.0 or above', async () => { + const result = await checkWebpack5Builder({ + mainConfig: mockMainConfig, + storybookVersion: '7.0.0', + }); + expect(result).toBeNull(); + expect(loggerWarnSpy).not.toHaveBeenCalled(); + }); + + it('should return null and log a warning if mainConfig is missing', async () => { + const result = await checkWebpack5Builder({ + mainConfig: undefined, + storybookVersion: '6.3.0', + }); + expect(result).toBeNull(); + expect(loggerWarnSpy).toHaveBeenCalledWith(expect.any(String)); + }); + + it('should return null and log an info message if builderPackageName is found but not "webpack4"', async () => { + jest.mocked(getBuilderPackageName).mockReturnValueOnce('webpack5'); + + const result = await checkWebpack5Builder({ + mainConfig: mockMainConfig, + storybookVersion: '6.3.0', + }); + + expect(result).toBeNull(); + expect(loggerInfoSpy).toHaveBeenCalledWith(expect.any(String)); + }); + + it('should return { storybookVersion } if all checks pass', async () => { + jest.mocked(getBuilderPackageName).mockReturnValueOnce('webpack4'); + + const result = await checkWebpack5Builder({ + mainConfig: mockMainConfig, + storybookVersion: '6.3.0', + }); + + expect(result).toEqual({ storybookVersion: '6.3.0' }); + expect(loggerWarnSpy).not.toHaveBeenCalled(); + expect(loggerInfoSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.ts b/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.ts index b900d40b89bd..8d59d62d0bcc 100644 --- a/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.ts +++ b/code/lib/cli/src/automigrate/helpers/checkWebpack5Builder.ts @@ -1,17 +1,18 @@ import chalk from 'chalk'; import semver from 'semver'; import dedent from 'ts-dedent'; -import type { GetStorybookData } from './mainConfigFile'; -import { getStorybookData } from './mainConfigFile'; +import type { StorybookConfig } from '@storybook/types'; +import { getBuilderPackageName } from './mainConfigFile'; const logger = console; export const checkWebpack5Builder = async ({ - configDir, - packageManager, -}: Parameters[0]) => { - const { mainConfig, storybookVersion } = await getStorybookData({ configDir, packageManager }); - + mainConfig, + storybookVersion, +}: { + mainConfig: StorybookConfig; + storybookVersion: string; +}) => { if (semver.lt(storybookVersion, '6.3.0')) { logger.warn( dedent` @@ -36,9 +37,9 @@ export const checkWebpack5Builder = async ({ return null; } - const builder = mainConfig.core?.builder; - if (builder && builder !== 'webpack4') { - logger.info(`Found builder ${builder}, skipping`); + const builderPackageName = getBuilderPackageName(mainConfig); + if (builderPackageName && builderPackageName !== 'webpack4') { + logger.info(`Found builder ${builderPackageName}, skipping`); return null; } diff --git a/code/lib/cli/src/automigrate/helpers/eslintPlugin.ts b/code/lib/cli/src/automigrate/helpers/eslintPlugin.ts new file mode 100644 index 000000000000..548b0856a74c --- /dev/null +++ b/code/lib/cli/src/automigrate/helpers/eslintPlugin.ts @@ -0,0 +1,104 @@ +import fse, { readFile, readJson, writeJson } from 'fs-extra'; + +import { dedent } from 'ts-dedent'; +import detectIndent from 'detect-indent'; +import { readConfig, writeConfig } from '@storybook/csf-tools'; +import prompts from 'prompts'; +import chalk from 'chalk'; +import type { JsPackageManager } from '../../js-package-manager'; +import { paddedLog } from '../../helpers'; + +export const SUPPORTED_ESLINT_EXTENSIONS = ['js', 'cjs', 'json']; +const UNSUPPORTED_ESLINT_EXTENSIONS = ['yaml', 'yml']; + +export const findEslintFile = () => { + const filePrefix = '.eslintrc'; + const unsupportedExtension = UNSUPPORTED_ESLINT_EXTENSIONS.find((ext: string) => + fse.existsSync(`${filePrefix}.${ext}`) + ); + + if (unsupportedExtension) { + throw new Error(unsupportedExtension); + } + + const extension = SUPPORTED_ESLINT_EXTENSIONS.find((ext: string) => + fse.existsSync(`${filePrefix}.${ext}`) + ); + return extension ? `${filePrefix}.${extension}` : null; +}; + +export async function extractEslintInfo(packageManager: JsPackageManager): Promise<{ + hasEslint: boolean; + isStorybookPluginInstalled: boolean; + eslintConfigFile: string | null; +}> { + const allDependencies = await packageManager.getAllDependencies(); + const packageJson = await packageManager.retrievePackageJson(); + let eslintConfigFile: string | null = null; + + try { + eslintConfigFile = findEslintFile(); + } catch (err) { + // + } + + const isStorybookPluginInstalled = !!allDependencies['eslint-plugin-storybook']; + const hasEslint = allDependencies.eslint || eslintConfigFile || packageJson.eslintConfig; + return { hasEslint, isStorybookPluginInstalled, eslintConfigFile }; +} + +export async function configureEslintPlugin(eslintFile: string, packageManager: JsPackageManager) { + if (eslintFile) { + paddedLog(`Configuring Storybook ESLint plugin at ${eslintFile}`); + if (eslintFile.endsWith('json')) { + const eslintConfig = (await readJson(eslintFile)) as { extends?: string[] }; + const existingConfigValue = Array.isArray(eslintConfig.extends) + ? eslintConfig.extends + : [eslintConfig.extends].filter(Boolean); + eslintConfig.extends = [...(existingConfigValue || []), 'plugin:storybook/recommended']; + + const eslintFileContents = await readFile(eslintFile, 'utf8'); + const spaces = detectIndent(eslintFileContents).amount || 2; + await writeJson(eslintFile, eslintConfig, { spaces }); + } else { + const eslint = await readConfig(eslintFile); + const extendsConfig = eslint.getFieldValue(['extends']) || []; + const existingConfigValue = Array.isArray(extendsConfig) + ? extendsConfig + : [extendsConfig].filter(Boolean); + eslint.setFieldValue( + ['extends'], + [...(existingConfigValue || []), 'plugin:storybook/recommended'] + ); + + await writeConfig(eslint); + } + } else { + paddedLog(`Configuring eslint-plugin-storybook in your package.json`); + const packageJson = await packageManager.retrievePackageJson(); + await packageManager.writePackageJson({ + ...packageJson, + eslintConfig: { + ...packageJson.eslintConfig, + extends: [...(packageJson.eslintConfig?.extends || []), 'plugin:storybook/recommended'], + }, + }); + } +} + +export const suggestESLintPlugin = async (): Promise => { + const { shouldInstall } = await prompts({ + type: 'confirm', + name: 'shouldInstall', + message: dedent` + We have detected that you're using ESLint. Storybook provides a plugin that gives the best experience with Storybook and helps follow best practices: ${chalk.yellow( + 'https://github.com/storybookjs/eslint-plugin-storybook#readme' + )} + + Would you like to install it? + `, + initial: true, + }); + + return shouldInstall; +}; diff --git a/code/lib/cli/src/automigrate/helpers/getActualPackageVersions.ts b/code/lib/cli/src/automigrate/helpers/getActualPackageVersions.ts deleted file mode 100644 index 77f741def3d6..000000000000 --- a/code/lib/cli/src/automigrate/helpers/getActualPackageVersions.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as fs from 'fs-extra'; -import path from 'path'; - -export const getActualPackageVersions = async (packages: string[]) => { - return Promise.all(packages.map(getActualPackageVersion)); -}; - -export const getActualPackageVersion = async (packageName: string) => { - try { - const packageJson = await getActualPackageJson(packageName); - return { - name: packageName, - version: packageJson.version, - }; - } catch (err) { - return { name: packageName, version: null }; - } -}; - -export const getActualPackageJson = async (packageName: string) => { - const resolvedPackageJson = require.resolve(path.join(packageName, 'package.json'), { - paths: [process.cwd()], - }); - const packageJson = await fs.readJson(resolvedPackageJson); - return packageJson; -}; diff --git a/code/lib/cli/src/automigrate/helpers/getEslintInfo.ts b/code/lib/cli/src/automigrate/helpers/getEslintInfo.ts deleted file mode 100644 index 698e2c4bde7e..000000000000 --- a/code/lib/cli/src/automigrate/helpers/getEslintInfo.ts +++ /dev/null @@ -1,20 +0,0 @@ -import fse from 'fs-extra'; - -export const SUPPORTED_ESLINT_EXTENSIONS = ['js', 'cjs', 'json']; -const UNSUPPORTED_ESLINT_EXTENSIONS = ['yaml', 'yml']; - -export const findEslintFile = () => { - const filePrefix = '.eslintrc'; - const unsupportedExtension = UNSUPPORTED_ESLINT_EXTENSIONS.find((ext: string) => - fse.existsSync(`${filePrefix}.${ext}`) - ); - - if (unsupportedExtension) { - throw new Error(unsupportedExtension); - } - - const extension = SUPPORTED_ESLINT_EXTENSIONS.find((ext: string) => - fse.existsSync(`${filePrefix}.${ext}`) - ); - return extension ? `${filePrefix}.${extension}` : null; -}; diff --git a/code/lib/cli/src/automigrate/helpers/getIncompatibleAddons.ts b/code/lib/cli/src/automigrate/helpers/getIncompatibleAddons.ts index fcc4f79e9f4f..d6fc28ed776b 100644 --- a/code/lib/cli/src/automigrate/helpers/getIncompatibleAddons.ts +++ b/code/lib/cli/src/automigrate/helpers/getIncompatibleAddons.ts @@ -1,9 +1,12 @@ import type { StorybookConfig } from '@storybook/types'; import semver from 'semver'; -import { getActualPackageVersions } from './getActualPackageVersions'; import { getAddonNames } from './mainConfigFile'; +import { JsPackageManagerFactory } from '../../js-package-manager'; -export const getIncompatibleAddons = async (mainConfig: StorybookConfig) => { +export const getIncompatibleAddons = async ( + mainConfig: StorybookConfig, + packageManager = JsPackageManagerFactory.getPackageManager() +) => { // TODO: Keep this up to date with https://github.com/storybookjs/storybook/issues/20529 in case more addons get added const incompatibleList = { '@storybook/addon-knobs': '6.4.0', @@ -39,29 +42,29 @@ export const getIncompatibleAddons = async (mainConfig: StorybookConfig) => { return []; } - const addonVersions = await getActualPackageVersions(addons); + const addonVersions = await Promise.all( + addons.map( + async (addon) => + ({ + name: addon, + version: await packageManager.getPackageVersion(addon), + } as { name: keyof typeof incompatibleList; version: string }) + ) + ); const incompatibleAddons: { name: string; version: string }[] = []; - addonVersions.forEach( - ({ - name, - version: installedVersion, - }: { - name: keyof typeof incompatibleList; - version: string; - }) => { - if (installedVersion === null) return; + addonVersions.forEach(({ name, version: installedVersion }) => { + if (installedVersion === null) return; - const addonVersion = incompatibleList[name]; - try { - if (semver.lte(semver.coerce(installedVersion), semver.coerce(addonVersion))) { - incompatibleAddons.push({ name, version: installedVersion }); - } - } catch (err) { - // we tried our best but if we can't compare, we just no-op for that addon + const addonVersion = incompatibleList[name]; + try { + if (semver.lte(semver.coerce(installedVersion), semver.coerce(addonVersion))) { + incompatibleAddons.push({ name, version: installedVersion }); } + } catch (err) { + // we tried our best but if we can't compare, we just no-op for that addon } - ); + }); return incompatibleAddons; }; diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts index 5cfa0122a1bd..9e9d60df35c7 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts @@ -108,8 +108,8 @@ const allowList = [ '@storybook/csf', // see this file for more info: code/lib/preview/src/globals/types.ts '@storybook/addons', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', + '@storybook/channel-postmessage', // @deprecated: remove in 8.0 + '@storybook/channel-websocket', // @deprecated: remove in 8.0 '@storybook/channels', '@storybook/client-api', '@storybook/client-logger', @@ -123,7 +123,7 @@ const allowList = [ '@storybook/components', '@storybook/router', '@storybook/theming', - '@storybook/api', + '@storybook/api', // @deprecated: remove in 8.0 '@storybook/manager-api', ]; diff --git a/code/lib/cli/src/automigrate/helpers/mainConfigFile.test.ts b/code/lib/cli/src/automigrate/helpers/mainConfigFile.test.ts new file mode 100644 index 000000000000..f31ca41f0a0f --- /dev/null +++ b/code/lib/cli/src/automigrate/helpers/mainConfigFile.test.ts @@ -0,0 +1,157 @@ +import { + getBuilderPackageName, + getFrameworkPackageName, + getRendererPackageNameFromFramework, +} from './mainConfigFile'; + +describe('getBuilderPackageName', () => { + it('should return null when mainConfig is undefined or null', () => { + const packageName = getBuilderPackageName(undefined); + expect(packageName).toBeNull(); + + const packageName2 = getBuilderPackageName(null); + expect(packageName2).toBeNull(); + }); + + it('should return null when builder package name or path is not found', () => { + const mainConfig = {}; + + const packageName = getBuilderPackageName(mainConfig as any); + expect(packageName).toBeNull(); + }); + + it('should return builder package name when core.builder is a string', () => { + const builderPackage = '@storybook/builder-webpack5'; + const mainConfig = { + core: { + builder: builderPackage, + }, + }; + + const packageName = getBuilderPackageName(mainConfig as any); + expect(packageName).toBe(builderPackage); + }); + + it('should return builder package name when core.builder.name contains valid builder package name', () => { + const builderPackage = '@storybook/builder-webpack5'; + const packageNameOrPath = `/path/to/${builderPackage}`; + const mainConfig = { + core: { + builder: { name: packageNameOrPath }, + }, + }; + + const packageName = getBuilderPackageName(mainConfig as any); + expect(packageName).toBe(builderPackage); + }); + + it('should return builder package name when core.builder.name contains windows backslash paths', () => { + const builderPackage = '@storybook/builder-webpack5'; + const packageNameOrPath = 'c:\\path\\to\\@storybook\\builder-webpack5'; + const mainConfig = { + core: { + builder: { name: packageNameOrPath }, + }, + }; + + const packageName = getBuilderPackageName(mainConfig as any); + expect(packageName).toBe(builderPackage); + }); + + it(`should return package name or path when core.builder doesn't contain the name of a valid builder package`, () => { + const packageNameOrPath = '@my-org/storybook-builder'; + const mainConfig = { + core: { + builder: packageNameOrPath, + }, + }; + + const packageName = getBuilderPackageName(mainConfig as any); + expect(packageName).toBe(packageNameOrPath); + }); +}); + +describe('getFrameworkPackageName', () => { + it('should return null when mainConfig is undefined or null', () => { + const packageName = getFrameworkPackageName(undefined); + expect(packageName).toBeNull(); + + const packageName2 = getFrameworkPackageName(null); + expect(packageName2).toBeNull(); + }); + + it('should return null when framework package name or path is not found', () => { + const mainConfig = {}; + + const packageName = getFrameworkPackageName(mainConfig as any); + expect(packageName).toBeNull(); + }); + + it('should return framework package name when framework is a string', () => { + const frameworkPackage = '@storybook/react'; + const mainConfig = { + framework: frameworkPackage, + }; + + const packageName = getFrameworkPackageName(mainConfig as any); + expect(packageName).toBe(frameworkPackage); + }); + + it('should return framework package name when framework.name contains valid framework package name', () => { + const frameworkPackage = '@storybook/react-vite'; + const packageNameOrPath = `/path/to/${frameworkPackage}`; + const mainConfig = { + framework: { name: packageNameOrPath }, + }; + + const packageName = getFrameworkPackageName(mainConfig as any); + expect(packageName).toBe(frameworkPackage); + }); + + it('should return builder package name when framework.name contains windows backslash paths', () => { + const builderPackage = '@storybook/react-vite'; + const packageNameOrPath = 'c:\\path\\to\\@storybook\\react-vite'; + const mainConfig = { + framework: { name: packageNameOrPath }, + }; + + const packageName = getFrameworkPackageName(mainConfig as any); + expect(packageName).toBe(builderPackage); + }); + + it(`should return package name or path when framework does not contain the name of a valid framework package`, () => { + const packageNameOrPath = '@my-org/storybook-framework'; + const mainConfig = { + framework: packageNameOrPath, + }; + + const packageName = getFrameworkPackageName(mainConfig as any); + expect(packageName).toBe(packageNameOrPath); + }); +}); + +describe('getRendererPackageNameFromFramework', () => { + it('should return null when given no package name', () => { + const packageName = getRendererPackageNameFromFramework(undefined); + expect(packageName).toBeNull(); + }); + + it('should return the frameworkPackageName if it exists in rendererPackages', () => { + const frameworkPackageName = '@storybook/angular'; + const packageName = getRendererPackageNameFromFramework(frameworkPackageName); + expect(packageName).toBe(frameworkPackageName); + }); + + it('should return the corresponding key of rendererPackages if the value is the same as the frameworkPackageName', () => { + const frameworkPackageName = 'vue'; + const expectedPackageName = '@storybook/vue'; + const packageName = getRendererPackageNameFromFramework(frameworkPackageName); + expect(packageName).toBe(expectedPackageName); + }); + + it('should return null if a frameworkPackageName is known but not available in rendererPackages', () => { + const frameworkPackageName = '@storybook/unknown'; + const packageName = getRendererPackageNameFromFramework(frameworkPackageName); + expect(packageName).toBeNull(); + }); +}); diff --git a/code/lib/cli/src/automigrate/helpers/mainConfigFile.ts b/code/lib/cli/src/automigrate/helpers/mainConfigFile.ts index f843f57097f9..b5325df31ac2 100644 --- a/code/lib/cli/src/automigrate/helpers/mainConfigFile.ts +++ b/code/lib/cli/src/automigrate/helpers/mainConfigFile.ts @@ -1,14 +1,84 @@ -import { getStorybookInfo, loadMainConfig } from '@storybook/core-common'; +import { + getStorybookInfo, + loadMainConfig, + rendererPackages, + frameworkPackages, + builderPackages, +} from '@storybook/core-common'; import type { StorybookConfig } from '@storybook/types'; import type { ConfigFile } from '@storybook/csf-tools'; import { readConfig, writeConfig as writeConfigFile } from '@storybook/csf-tools'; import chalk from 'chalk'; -import semver from 'semver'; import dedent from 'ts-dedent'; +import path from 'path'; import type { JsPackageManager } from '../../js-package-manager'; +import { getStorybookVersion } from '../../utils'; const logger = console; +/** + * Given a Storybook configuration object, retrieves the package name or file path of the framework. + * @param mainConfig - The main Storybook configuration object to lookup. + * @returns - The package name of the framework. If not found, returns null. + */ +export const getFrameworkPackageName = (mainConfig?: StorybookConfig) => { + const packageNameOrPath = + typeof mainConfig?.framework === 'string' ? mainConfig.framework : mainConfig?.framework?.name; + + if (!packageNameOrPath) { + return null; + } + + const normalizedPath = path.normalize(packageNameOrPath).replace(new RegExp(/\\/, 'g'), '/'); + + return ( + Object.keys(frameworkPackages).find((pkg) => normalizedPath.endsWith(pkg)) || packageNameOrPath + ); +}; + +/** + * Given a Storybook configuration object, retrieves the package name or file path of the builder. + * @param mainConfig - The main Storybook configuration object to lookup. + * @returns - The package name of the builder. If not found, returns null. + */ +export const getBuilderPackageName = (mainConfig?: StorybookConfig) => { + const packageNameOrPath = + typeof mainConfig?.core?.builder === 'string' + ? mainConfig.core.builder + : mainConfig?.core?.builder?.name; + + if (!packageNameOrPath) { + return null; + } + + const normalizedPath = path.normalize(packageNameOrPath).replace(new RegExp(/\\/, 'g'), '/'); + + return builderPackages.find((pkg) => normalizedPath.endsWith(pkg)) || packageNameOrPath; +}; + +/** + * Returns a renderer package name given a framework package name. + * @param frameworkPackageName - The package name of the framework to lookup. + * @returns - The corresponding package name in `rendererPackages`. If not found, returns null. + */ +export const getRendererPackageNameFromFramework = (frameworkPackageName: string) => { + if (frameworkPackageName) { + if (Object.keys(rendererPackages).includes(frameworkPackageName)) { + // at some point in 6.4 we introduced a framework field, but filled with a renderer package + return frameworkPackageName; + } + + if (Object.values(rendererPackages).includes(frameworkPackageName)) { + // for scenarios where the value is e.g. "react" instead of "@storybook/react" + return Object.keys(rendererPackages).find( + (k) => rendererPackages[k] === frameworkPackageName + ); + } + } + + return null; +}; + export const getStorybookData = async ({ packageManager, configDir: userDefinedConfigDir, @@ -23,8 +93,7 @@ export const getStorybookData = async ({ configDir: configDirFromScript, previewConfig: previewConfigPath, } = getStorybookInfo(packageJson, userDefinedConfigDir); - const storybookVersion = - storybookVersionSpecifier && semver.coerce(storybookVersionSpecifier)?.version; + const storybookVersion = await getStorybookVersion(packageManager); const configDir = userDefinedConfigDir || configDirFromScript || '.storybook'; @@ -64,7 +133,7 @@ export type GetStorybookData = typeof getStorybookData; */ export const updateMainConfig = async ( { mainConfigPath, dryRun }: { mainConfigPath: string; dryRun: boolean }, - callback: (main: ConfigFile) => Promise + callback: (main: ConfigFile) => Promise | void ) => { try { const main = await readConfig(mainConfigPath); diff --git a/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.test.ts b/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.test.ts index ee691d396f53..a112619717b3 100644 --- a/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.test.ts +++ b/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.test.ts @@ -3,6 +3,7 @@ import { detectBuilderInfo as _getBuilderInfo, getNextjsAddonOptions, } from './new-frameworks-utils'; +import type { JsPackageManager } from '../../js-package-manager'; jest.mock('find-up'); @@ -10,17 +11,17 @@ type GetBuilderInfoParams = Parameters[0]['mainConfig']; const getBuilderInfo = async ({ mainConfig = {}, - packageDependencies = {}, + packageManager = {}, configDir = '.storybook', }: { - mainConfig: Partial; - packageDependencies?: Record; + mainConfig?: Partial; + packageManager?: Partial; configDir?: string; }) => { return _getBuilderInfo({ mainConfig: mainConfig as any, configDir, - packageDependencies, + packageManager: packageManager as any, }); }; @@ -29,7 +30,9 @@ describe('getBuilderInfo', () => { await expect( getBuilderInfo({ mainConfig: { - core: { builder: '@storybook/builder-webpack5' }, + core: { + builder: '@storybook/builder-webpack5', + }, }, }) ).resolves.toEqual({ name: 'webpack5', options: {} }); @@ -54,6 +57,15 @@ describe('getBuilderInfo', () => { it('should infer webpack5 info from framework', async () => { await expect( getBuilderInfo({ + packageManager: { + getPackageVersion: (packageName) => { + if (packageName === '@storybook/react-webpack5') { + return Promise.resolve('1.0.0'); + } + + return Promise.resolve(null); + }, + }, mainConfig: { framework: '@storybook/react-webpack5', }, @@ -204,7 +216,14 @@ describe('getBuilderInfo', () => { await expect( getBuilderInfo({ mainConfig: {}, - packageDependencies: { '@storybook/builder-vite': '^7.0.0' }, + packageManager: { + getPackageVersion: (packageName) => { + if (packageName === '@storybook/builder-vite') { + return Promise.resolve('7.0.0'); + } + return Promise.resolve(null); + }, + }, }) ).resolves.toEqual({ name: 'vite', @@ -218,7 +237,14 @@ describe('getBuilderInfo', () => { await expect( getBuilderInfo({ mainConfig: {}, - packageDependencies: { '@storybook/builder-webpack5': '^7.0.0' }, + packageManager: { + getPackageVersion: (packageName) => { + if (packageName === '@storybook/builder-webpack5') { + return Promise.resolve('7.0.0'); + } + return Promise.resolve(null); + }, + }, }) ).resolves.toEqual({ name: 'webpack5', diff --git a/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.ts b/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.ts index a6640c8bb147..db84aaa3b245 100644 --- a/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.ts +++ b/code/lib/cli/src/automigrate/helpers/new-frameworks-utils.ts @@ -1,6 +1,8 @@ import { frameworkPackages } from '@storybook/core-common'; import type { Preset, StorybookConfig } from '@storybook/types'; import findUp from 'find-up'; +import type { JsPackageManager } from '../../js-package-manager'; +import { getBuilderPackageName, getFrameworkPackageName } from './mainConfigFile'; const logger = console; @@ -62,32 +64,29 @@ type BuilderType = 'vite' | 'webpack5'; export const detectBuilderInfo = async ({ mainConfig, configDir, - packageDependencies, + packageManager, }: { mainConfig: StorybookConfig & { builder?: string | Preset }; configDir: string; - packageDependencies: Record; + packageManager: JsPackageManager; }): Promise<{ name: BuilderType; options: any }> => { - let builderOptions = {}; let builderName: BuilderType; let builderOrFrameworkName; const { core = {}, framework } = mainConfig; const { builder } = core; - if (builder) { - if (typeof builder === 'string') { - builderOrFrameworkName = builder; - } else { - builderOrFrameworkName = builder.name; + const builderPackageName = getBuilderPackageName(mainConfig); + const frameworkPackageName = getFrameworkPackageName(mainConfig); - builderOptions = builder.options || {}; - } + let builderOptions = typeof builder !== 'string' ? builder?.options ?? {} : {}; + + if (builderPackageName) { + builderOrFrameworkName = builderPackageName; } else if (framework) { - const frameworkName = typeof framework === 'string' ? framework : framework.name; - if (Object.keys(frameworkPackages).includes(frameworkName)) { - builderOrFrameworkName = frameworkName; - builderOptions = typeof framework === 'object' ? framework.options?.builder : {}; + if (Object.keys(frameworkPackages).includes(frameworkPackageName)) { + builderOrFrameworkName = frameworkPackageName; + builderOptions = typeof framework === 'object' ? framework.options?.builder ?? {} : {}; } } @@ -112,15 +111,22 @@ export const detectBuilderInfo = async ({ // if builder is still not detected, rely on package dependencies if (!builderOrFrameworkName) { - if ( - packageDependencies['@storybook/builder-vite'] || - packageDependencies['storybook-builder-vite'] - ) { + const storybookBuilderViteVersion = await packageManager.getPackageVersion( + '@storybook/builder-vite' + ); + const storybookBuilderVite2Version = await packageManager.getPackageVersion( + 'storybook-builder-vite' + ); + const storybookBuilderWebpack5Version = await packageManager.getPackageVersion( + '@storybook/builder-webpack5' + ); + const storybookBuilderManagerWebpack5Version = await packageManager.getPackageVersion( + '@storybook/manager-webpack5' + ); + + if (storybookBuilderViteVersion || storybookBuilderVite2Version) { builderOrFrameworkName = 'vite'; - } else if ( - packageDependencies['@storybook/builder-webpack5'] || - packageDependencies['@storybook/manager-webpack5'] - ) { + } else if (storybookBuilderWebpack5Version || storybookBuilderManagerWebpack5Version) { builderOrFrameworkName = 'webpack5'; } } diff --git a/code/lib/cli/src/automigrate/helpers/testing-helpers.ts b/code/lib/cli/src/automigrate/helpers/testing-helpers.ts index 3651fe472caf..f7b206ccb004 100644 --- a/code/lib/cli/src/automigrate/helpers/testing-helpers.ts +++ b/code/lib/cli/src/automigrate/helpers/testing-helpers.ts @@ -1,6 +1,4 @@ import type { JsPackageManager, PackageJson } from '../../js-package-manager'; -import type { GetStorybookData } from './mainConfigFile'; -import * as mainConfigFile from './mainConfigFile'; jest.mock('./mainConfigFile', () => ({ ...jest.requireActual('./mainConfigFile'), @@ -23,21 +21,3 @@ export const makePackageManager = (packageJson: PackageJson) => { }), } as JsPackageManager; }; - -type GetStorybookDataParams = Awaited>; -export const mockStorybookData = ( - mockData: { - mainConfig: Partial & Record; - storybookVersion: GetStorybookDataParams['storybookVersion']; - } & Partial> -) => { - const defaults: Partial = { - configDir: '', - mainConfigPath: '', - }; - - jest.spyOn(mainConfigFile, 'getStorybookData').mockResolvedValueOnce({ - ...defaults, - ...mockData, - } as GetStorybookDataParams); -}; diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 01447e371cd4..3e8e5af0e461 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -8,7 +8,6 @@ import dedent from 'ts-dedent'; import { join } from 'path'; import { getStorybookInfo, loadMainConfig } from '@storybook/core-common'; -import semver from 'semver'; import { JsPackageManagerFactory, useNpmWarning } from '../js-package-manager'; import type { PackageManagerName } from '../js-package-manager'; @@ -16,6 +15,8 @@ import type { Fix, FixId, FixOptions, FixSummary } from './fixes'; import { FixStatus, PreCheckFailure, allFixes } from './fixes'; import { cleanLog } from './helpers/cleanLog'; import { getMigrationSummary } from './helpers/getMigrationSummary'; +import { getStorybookData } from './helpers/mainConfigFile'; +import { getStorybookVersion } from '../utils'; const logger = console; const LOG_FILE_NAME = 'migration-storybook.log'; @@ -157,14 +158,14 @@ export async function runFixes({ const fixResults = {} as Record; const fixSummary: FixSummary = { succeeded: [], failed: {}, manual: [], skipped: [] }; - const { - configDir: inferredConfigDir, - mainConfig: mainConfigPath, - version: storybookVersion, - } = getStorybookInfo(await packageManager.retrievePackageJson(), userSpecifiedConfigDir); + const { configDir: inferredConfigDir, mainConfig: mainConfigPath } = getStorybookInfo( + await packageManager.retrievePackageJson(), + userSpecifiedConfigDir + ); + + const storybookVersion = await getStorybookVersion(packageManager); - const sbVersionCoerced = storybookVersion && semver.coerce(storybookVersion)?.version; - if (!sbVersionCoerced) { + if (!storybookVersion) { logger.info(dedent` [Storybook automigrate] ❌ Unable to determine storybook version so the automigrations will be skipped. 🤔 Are you running automigrate from your project directory? Please specify your Storybook config directory with the --config-dir flag. @@ -211,10 +212,19 @@ export async function runFixes({ let result; try { + const { mainConfig, previewConfigPath } = await getStorybookData({ + configDir, + packageManager, + }); + result = await f.check({ packageManager, configDir, rendererPackage, + mainConfig, + storybookVersion, + previewConfigPath, + mainConfigPath, }); } catch (error) { logger.info(`⚠️ failed to check fix ${chalk.bold(f.id)}`); diff --git a/code/lib/cli/src/automigrate/types.ts b/code/lib/cli/src/automigrate/types.ts index f172af777fc8..740dfa3a0451 100644 --- a/code/lib/cli/src/automigrate/types.ts +++ b/code/lib/cli/src/automigrate/types.ts @@ -1,9 +1,14 @@ +import type { StorybookConfig } from '@storybook/types'; import type { JsPackageManager, PackageManagerName } from '../js-package-manager'; export interface CheckOptions { packageManager: JsPackageManager; rendererPackage?: string; configDir?: string; + mainConfig: StorybookConfig; + storybookVersion: string; + previewConfigPath?: string; + mainConfigPath?: string; } export interface RunOptions { diff --git a/code/lib/cli/src/babel-config.ts b/code/lib/cli/src/babel-config.ts index e97b51f0328d..e24442b4e365 100644 --- a/code/lib/cli/src/babel-config.ts +++ b/code/lib/cli/src/babel-config.ts @@ -2,15 +2,65 @@ import { writeFile, pathExists } from 'fs-extra'; import { logger } from '@storybook/node-logger'; import path from 'path'; import prompts from 'prompts'; -import chalk from 'chalk'; import { JsPackageManagerFactory } from './js-package-manager'; export const generateStorybookBabelConfigInCWD = async () => { const target = process.cwd(); return generateStorybookBabelConfig({ target }); }; + +export const getBabelPresets = ({ typescript, jsx }: { typescript: boolean; jsx: boolean }) => { + const dependencies = ['@babel/preset-env']; + + if (typescript) { + dependencies.push('@babel/preset-typescript'); + } + + if (jsx) { + dependencies.push('@babel/preset-react'); + } + + return dependencies; +}; + +export const writeBabelConfigFile = async ({ + location, + typescript, + jsx, +}: { + location?: string; + typescript: boolean; + jsx: boolean; +}) => { + const fileLocation = location || path.join(process.cwd(), '.babelrc.json'); + + const presets: (string | [string, any])[] = [ + ['@babel/preset-env', { targets: { chrome: 100, safari: 15, firefox: 91 } }], + ]; + + if (typescript) { + presets.push('@babel/preset-typescript'); + } + + if (jsx) { + presets.push('@babel/preset-react'); + } + + const contents = JSON.stringify( + { + sourceType: 'unambiguous', + presets, + plugins: [], + }, + null, + 2 + ); + + await writeFile(fileLocation, contents); +}; + export const generateStorybookBabelConfig = async ({ target }: { target: string }) => { - logger.info(`Generating the storybook default babel config at ${target}`); + logger.info(`Generating the Storybook default babel config at ${target}`); const fileName = '.babelrc.json'; const location = path.join(target, fileName); @@ -31,12 +81,6 @@ export const generateStorybookBabelConfig = async ({ target }: { target: string } } - logger.info( - `The config will contain ${chalk.yellow( - '@babel/preset-env' - )} and you will be prompted for additional presets, if you wish to add them depending on your project needs.` - ); - const { typescript, jsx } = await prompts([ { type: 'confirm', @@ -52,48 +96,13 @@ export const generateStorybookBabelConfig = async ({ target }: { target: string }, ]); - const added = ['@babel/preset-env']; - const presets: (string | [string, any])[] = [['@babel/preset-env', { targets: { chrome: 100 } }]]; - - if (typescript) { - added.push('@babel/preset-typescript'); - presets.push('@babel/preset-typescript'); - } - - if (jsx) { - added.push('@babel/preset-react'); - presets.push('@babel/preset-react'); - } - - const contents = JSON.stringify( - { - sourceType: 'unambiguous', - presets, - plugins: [], - }, - null, - 2 - ); + const dependencies = getBabelPresets({ typescript, jsx }); logger.info(`Writing file to ${location}`); - await writeFile(location, contents); + await writeBabelConfigFile({ location, typescript, jsx }); - const { runInstall } = await prompts({ - type: 'confirm', - initial: true, - name: 'runInstall', - message: `Shall we install the required dependencies now? (${added.join(', ')})`, - }); + const packageManager = JsPackageManagerFactory.getPackageManager(); - if (runInstall) { - logger.info(`Installing dependencies...`); - - const packageManager = JsPackageManagerFactory.getPackageManager(); - - await packageManager.addDependencies({ installAsDevDependencies: true }, added); - } else { - logger.info( - `⚠️ Please remember to install the required dependencies yourself: (${added.join(', ')})` - ); - } + logger.info(`Installing dependencies (${dependencies.join(', ')})`); + await packageManager.addDependencies({ installAsDevDependencies: true }, dependencies); }; diff --git a/code/lib/cli/src/detect.test.ts b/code/lib/cli/src/detect.test.ts index 0136d4991377..7a78fa8fa536 100644 --- a/code/lib/cli/src/detect.test.ts +++ b/code/lib/cli/src/detect.test.ts @@ -1,13 +1,11 @@ import * as fs from 'fs'; import { logger } from '@storybook/node-logger'; -import { getBowerJson } from './helpers'; import { detect, detectFrameworkPreset, detectLanguage } from './detect'; import { ProjectType, SupportedLanguage } from './project_types'; -import type { PackageJsonWithMaybeDeps } from './js-package-manager'; +import type { JsPackageManager, PackageJsonWithMaybeDeps } from './js-package-manager'; jest.mock('./helpers', () => ({ isNxProject: jest.fn(), - getBowerJson: jest.fn(), })); jest.mock('fs', () => ({ @@ -235,54 +233,202 @@ const MOCK_FRAMEWORK_FILES: { ]; describe('Detect', () => { - it(`should return type HTML if html option is passed`, () => { - expect(detect({ dependencies: {} }, { html: true })).toBe(ProjectType.HTML); - }); + it(`should return type HTML if html option is passed`, async () => { + const packageManager = { + retrievePackageJson: () => Promise.resolve({ dependencies: {}, devDependencies: {} }), + getAllDependencies: () => Promise.resolve({}), + getPackageVersion: () => Promise.resolve(null), + } as Partial; - it(`should return type UNDETECTED if neither packageJson or bowerJson exist`, () => { - (getBowerJson as jest.Mock).mockImplementation(() => false); - expect(detect(undefined)).toBe(ProjectType.UNDETECTED); + await expect(detect(packageManager as any, { html: true })).resolves.toBe(ProjectType.HTML); }); - it(`should return language javascript if the TS dependency is present but less than minimum supported`, () => { + it(`should return language javascript if the TS dependency is present but less than minimum supported`, async () => { (logger.warn as jest.MockedFunction).mockClear(); - expect(detectLanguage({ dependencies: { typescript: '1.0.0' } })).toBe( - SupportedLanguage.JAVASCRIPT - ); + + const packageManager = { + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '1.0.0', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '1.0.0', + }), + getPackageVersion: (packageName) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('1.0.0'); + default: + return Promise.resolve(null); + } + }, + } as Partial; + + await expect(detectLanguage(packageManager as any)).resolves.toBe(SupportedLanguage.JAVASCRIPT); expect(logger.warn).toHaveBeenCalledWith( 'Detected TypeScript < 3.8, populating with JavaScript examples' ); }); - it(`should return language typescript-3-8 if the TS dependency is >=3.8 and <4.9`, () => { - expect(detectLanguage({ dependencies: { typescript: '3.8.0' } })).toBe( - SupportedLanguage.TYPESCRIPT_3_8 - ); - expect(detectLanguage({ dependencies: { typescript: '4.8.0' } })).toBe( - SupportedLanguage.TYPESCRIPT_3_8 - ); + it(`should return language typescript-3-8 if the TS dependency is >=3.8 and <4.9`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '3.8.0', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '3.8.0', + }), + getPackageVersion: (packageName: string) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('3.8.0'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.TYPESCRIPT_3_8); + + await expect( + detectLanguage({ + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '4.8.0', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '4.8.0', + }), + getPackageVersion: (packageName: string) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('4.8.0'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.TYPESCRIPT_3_8); }); - it(`should return language typescript-4-9 if the dependency is >TS4.9`, () => { - expect(detectLanguage({ dependencies: { typescript: '4.9.1' } })).toBe( - SupportedLanguage.TYPESCRIPT_4_9 - ); + it(`should return language typescript-4-9 if the dependency is >TS4.9`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '4.9.1', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '4.9.1', + }), + getPackageVersion: (packageName: string) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('4.9.1'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.TYPESCRIPT_4_9); }); - it(`should return language typescript if the dependency is =TS4.9`, () => { - expect(detectLanguage({ dependencies: { typescript: '4.9.0' } })).toBe( - SupportedLanguage.TYPESCRIPT_4_9 - ); + it(`should return language typescript if the dependency is =TS4.9`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '4.9.0', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '4.9.0', + }), + getPackageVersion: (packageName: string) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('4.9.0'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.TYPESCRIPT_4_9); }); - it(`should return language typescript if the dependency is =TS4.9beta`, () => { - expect(detectLanguage({ dependencies: { typescript: '^4.9.0-beta' } })).toBe( - SupportedLanguage.TYPESCRIPT_4_9 - ); + it(`should return language typescript if the dependency is =TS4.9beta`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => + Promise.resolve({ + dependencies: {}, + devDependencies: { + typescript: '4.9.0-beta', + }, + }), + getAllDependencies: () => + Promise.resolve({ + typescript: '4.9.0-beta', + }), + getPackageVersion: (packageName: string) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('4.9.0-beta'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.TYPESCRIPT_3_8); }); - it(`should return language javascript by default`, () => { - expect(detectLanguage()).toBe(SupportedLanguage.JAVASCRIPT); + it(`should return language javascript by default`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => Promise.resolve({ dependencies: {}, devDependencies: {} }), + getAllDependencies: () => Promise.resolve({}), + getPackageVersion: () => { + return Promise.resolve(null); + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.JAVASCRIPT); + }); + + it(`should return language Javascript even when Typescript is detected in the node_modules but not listed as a direct dependency`, async () => { + await expect( + detectLanguage({ + retrievePackageJson: () => Promise.resolve({ dependencies: {}, devDependencies: {} }), + getAllDependencies: () => Promise.resolve({}), + getPackageVersion: (packageName) => { + switch (packageName) { + case 'typescript': + return Promise.resolve('4.9.0'); + default: + return Promise.resolve(null); + } + }, + } as Partial as JsPackageManager) + ).resolves.toBe(SupportedLanguage.JAVASCRIPT); }); describe('detectFrameworkPreset should return', () => { diff --git a/code/lib/cli/src/detect.ts b/code/lib/cli/src/detect.ts index 8f8271ad8e4d..b62288bc82e5 100644 --- a/code/lib/cli/src/detect.ts +++ b/code/lib/cli/src/detect.ts @@ -3,8 +3,7 @@ import findUp from 'find-up'; import semver from 'semver'; import { logger } from '@storybook/node-logger'; -import { pathExistsSync } from 'fs-extra'; -import { join, resolve } from 'path'; +import { resolve } from 'path'; import prompts from 'prompts'; import type { TemplateConfiguration, TemplateMatcher } from './project_types'; import { @@ -14,8 +13,9 @@ import { unsupportedTemplate, CoreBuilder, } from './project_types'; -import { commandLog, getBowerJson, isNxProject } from './helpers'; -import type { JsPackageManager, PackageJson, PackageJsonWithMaybeDeps } from './js-package-manager'; +import { commandLog, isNxProject } from './helpers'; +import type { JsPackageManager, PackageJsonWithMaybeDeps } from './js-package-manager'; +import { HandledError } from './HandledError'; const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs']; const webpackConfigFiles = ['webpack.config.js']; @@ -131,20 +131,28 @@ export async function detectBuilder(packageManager: JsPackageManager, projectTyp return CoreBuilder.Vite; case ProjectType.REACT_SCRIPTS: case ProjectType.ANGULAR: + case ProjectType.REACT_NATIVE: // technically react native doesn't use webpack, we just want to set something case ProjectType.NEXTJS: return CoreBuilder.Webpack5; default: // eslint-disable-next-line no-case-declarations - const { builder } = await prompts({ - type: 'select', - name: 'builder', - message: - 'We were not able to detect the right builder for your project. Please select one:', - choices: [ - { title: 'Vite', value: CoreBuilder.Vite }, - { title: 'Webpack 5', value: CoreBuilder.Webpack5 }, - ], - }); + const { builder } = await prompts( + { + type: 'select', + name: 'builder', + message: + '\nWe were not able to detect the right builder for your project. Please select one:', + choices: [ + { title: 'Vite', value: CoreBuilder.Vite }, + { title: 'Webpack 5', value: CoreBuilder.Webpack5 }, + ], + }, + { + onCancel: () => { + throw new HandledError('Canceled by the user'); + }, + } + ); return builder; } @@ -154,69 +162,65 @@ export function isStorybookInstantiated(configDir = resolve(process.cwd(), '.sto return fs.existsSync(configDir); } -export function detectPnp() { - return pathExistsSync(join(process.cwd(), '.pnp.cjs')); +export async function detectPnp() { + return !!findUp.sync(['.pnp.js', '.pnp.cjs']); } -export function detectLanguage(packageJson?: PackageJson) { +export async function detectLanguage(packageManager: JsPackageManager) { let language = SupportedLanguage.JAVASCRIPT; - // TODO: we may need to also detect whether a jsconfig.json file is present - // in a monorepo root directory - if (!packageJson || fs.existsSync('jsconfig.json')) { + if (fs.existsSync('jsconfig.json')) { return language; } - if ( - hasDependency(packageJson, 'typescript', (version) => - semver.gte(semver.coerce(version), '4.9.0') - ) && - (!hasDependency(packageJson, 'prettier') || - hasDependency(packageJson, 'prettier', (version) => - semver.gte(semver.coerce(version), '2.8.0') - )) && - (!hasDependency(packageJson, '@babel/plugin-transform-typescript') || - hasDependency(packageJson, '@babel/plugin-transform-typescript', (version) => - semver.gte(semver.coerce(version), '7.20.0') - )) && - (!hasDependency(packageJson, '@typescript-eslint/parser') || - hasDependency(packageJson, '@typescript-eslint/parser', (version) => - semver.gte(semver.coerce(version), '5.44.0') - )) && - (!hasDependency(packageJson, 'eslint-plugin-storybook') || - hasDependency(packageJson, 'eslint-plugin-storybook', (version) => - semver.gte(semver.coerce(version), '0.6.8') - )) - ) { - language = SupportedLanguage.TYPESCRIPT_4_9; - } else if ( - hasDependency(packageJson, 'typescript', (version) => - semver.gte(semver.coerce(version), '3.8.0') - ) - ) { - language = SupportedLanguage.TYPESCRIPT_3_8; - } else if ( - hasDependency(packageJson, 'typescript', (version) => - semver.lt(semver.coerce(version), '3.8.0') - ) - ) { - logger.warn('Detected TypeScript < 3.8, populating with JavaScript examples'); + const isTypescriptDirectDependency = await packageManager + .getAllDependencies() + .then((deps) => Boolean(deps['typescript'])); + + const typescriptVersion = await packageManager.getPackageVersion('typescript'); + const prettierVersion = await packageManager.getPackageVersion('prettier'); + const babelPluginTransformTypescriptVersion = await packageManager.getPackageVersion( + '@babel/plugin-transform-typescript' + ); + const typescriptEslintParserVersion = await packageManager.getPackageVersion( + '@typescript-eslint/parser' + ); + + const eslintPluginStorybookVersion = await packageManager.getPackageVersion( + 'eslint-plugin-storybook' + ); + + if (isTypescriptDirectDependency && typescriptVersion) { + if ( + semver.gte(typescriptVersion, '4.9.0') && + (!prettierVersion || semver.gte(prettierVersion, '2.8.0')) && + (!babelPluginTransformTypescriptVersion || + semver.gte(babelPluginTransformTypescriptVersion, '7.20.0')) && + (!typescriptEslintParserVersion || semver.gte(typescriptEslintParserVersion, '5.44.0')) && + (!eslintPluginStorybookVersion || semver.gte(eslintPluginStorybookVersion, '0.6.8')) + ) { + language = SupportedLanguage.TYPESCRIPT_4_9; + } else if (semver.gte(typescriptVersion, '3.8.0')) { + language = SupportedLanguage.TYPESCRIPT_3_8; + } else if (semver.lt(typescriptVersion, '3.8.0')) { + logger.warn('Detected TypeScript < 3.8, populating with JavaScript examples'); + } } return language; } -export function detect( - packageJson: PackageJson, +export async function detect( + packageManager: JsPackageManager, options: { force?: boolean; html?: boolean } = {} ) { - const bowerJson = getBowerJson(); + const packageJson = await packageManager.retrievePackageJson(); - if (!packageJson && !bowerJson) { + if (!packageJson) { return ProjectType.UNDETECTED; } - if (isNxProject(packageJson)) { + if (await isNxProject()) { return ProjectType.NX; } @@ -224,5 +228,5 @@ export function detect( return ProjectType.HTML; } - return detectFrameworkPreset(packageJson || bowerJson); + return detectFrameworkPreset(packageJson); } diff --git a/code/lib/cli/src/dev.ts b/code/lib/cli/src/dev.ts index be90c298d68d..216a15595a73 100644 --- a/code/lib/cli/src/dev.ts +++ b/code/lib/cli/src/dev.ts @@ -3,6 +3,7 @@ import { sync as readUpSync } from 'read-pkg-up'; import { logger, instance as npmLog } from '@storybook/node-logger'; import { buildDevStandalone, withTelemetry } from '@storybook/core-server'; import { cache } from '@storybook/core-common'; +import type { CLIOptions } from '@storybook/types'; function printError(error: any) { // this is a weird bugfix, somehow 'node-pre-gyp' is polluting the npmLog header @@ -35,7 +36,7 @@ function printError(error: any) { logger.line(); } -export const dev = async (cliOptions: any) => { +export const dev = async (cliOptions: CLIOptions) => { process.env.NODE_ENV = process.env.NODE_ENV || 'development'; const options = { @@ -45,8 +46,15 @@ export const dev = async (cliOptions: any) => { ignorePreview: !!cliOptions.previewUrl && !cliOptions.forceBuildPreview, cache, packageJson: readUpSync({ cwd: __dirname }).packageJson, - }; - await withTelemetry('dev', { cliOptions, presetOptions: options, printError }, () => - buildDevStandalone(options) + } as Parameters[0]; + + await withTelemetry( + 'dev', + { + cliOptions, + presetOptions: options as Parameters[1]['presetOptions'], + printError, + }, + () => buildDevStandalone(options) ); }; diff --git a/code/lib/cli/src/dirs.ts b/code/lib/cli/src/dirs.ts index 6f3fa0e06864..1dfc1045b6f5 100644 --- a/code/lib/cli/src/dirs.ts +++ b/code/lib/cli/src/dirs.ts @@ -38,7 +38,7 @@ export async function getRendererDir( const frameworkPackageName = externalFramework?.renderer || externalFramework?.packageName || `@storybook/${renderer}`; - const packageJsonPath = `${frameworkPackageName}/package.json`; + const packageJsonPath = join(frameworkPackageName, 'package.json'); const errors: Error[] = []; diff --git a/code/lib/cli/src/generate.ts b/code/lib/cli/src/generate.ts index 6b71d0d0464f..f12564b0d9c5 100644 --- a/code/lib/cli/src/generate.ts +++ b/code/lib/cli/src/generate.ts @@ -203,11 +203,6 @@ command('dev') .option('--loglevel ', 'Control level of logging during build') .option('--quiet', 'Suppress verbose build output') .option('--no-version-updates', 'Suppress update check', true) - .option( - '--no-release-notes', - 'Suppress automatic redirects to the release notes after upgrading', - true - ) .option('--debug-webpack', 'Display final webpack configurations for debugging purposes') .option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk') .option( @@ -216,6 +211,10 @@ command('dev') ) .option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url') .option('--docs', 'Build a documentation-only site using addon-docs') + .option( + '--initial-path [path]', + 'URL path to be appended when visiting Storybook for the first time' + ) .action(async (options) => { logger.setLevel(program.loglevel); consoleLogger.log(chalk.bold(`${pkg.name} v${pkg.version}`) + chalk.reset('\n')); diff --git a/code/lib/cli/src/generators/ANGULAR/index.ts b/code/lib/cli/src/generators/ANGULAR/index.ts index 665002dfac60..3c4d9a1f0ca9 100644 --- a/code/lib/cli/src/generators/ANGULAR/index.ts +++ b/code/lib/cli/src/generators/ANGULAR/index.ts @@ -13,20 +13,21 @@ const generator: Generator<{ projectName: string }> = async ( options, commandOptions ) => { - const angularVersionFromDependencies = semver.coerce( - (await packageManager.retrievePackageJson()).dependencies['@angular/core'] - )?.version; - - const angularVersionFromDevDependencies = semver.coerce( - (await packageManager.retrievePackageJson()).devDependencies['@angular/core'] - )?.version; - - const angularVersion = angularVersionFromDependencies || angularVersionFromDevDependencies; - const isWebpack5 = semver.gte(angularVersion, '12.0.0'); + const angularVersion = await packageManager.getPackageVersion('@angular/core'); + const isWebpack5 = angularVersion && semver.gte(angularVersion, '12.0.0'); const updatedOptions = isWebpack5 ? { ...options, builder: CoreBuilder.Webpack5 } : options; const angularJSON = new AngularJSON(); + if ( + !angularJSON.projects || + (angularJSON.projects && Object.keys(angularJSON.projects).length === 0) + ) { + throw new Error( + 'Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?' + ); + } + if (angularJSON.projectsWithoutStorybook.length === 0) { throw new Error( 'Every project in your workspace is already set up with Storybook. There is nothing to do!' @@ -34,10 +35,17 @@ const generator: Generator<{ projectName: string }> = async ( } const angularProjectName = await angularJSON.getProjectName(); - paddedLog(`Adding Storybook support to your "${angularProjectName}" project`); - const { root, projectType } = angularJSON.getProjectSettingsByName(angularProjectName); + const angularProject = angularJSON.getProjectSettingsByName(angularProjectName); + + if (!angularProject) { + throw new Error( + `Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.` + ); + } + + const { root, projectType } = angularProject; const { projects } = angularJSON; const useCompodoc = commandOptions.yes ? true : await promptForCompoDocs(); const storybookFolder = root ? `${root}/.storybook` : '.storybook'; @@ -63,7 +71,7 @@ const generator: Generator<{ projectName: string }> = async ( }, 'angular', { - ...(useCompodoc && { extraPackages: ['@compodoc/compodoc'] }), + ...(useCompodoc && { extraPackages: ['@compodoc/compodoc', '@storybook/addon-docs'] }), addScripts: false, componentsDestinationPath: root ? `${root}/src/stories` : undefined, storybookConfigFolder: storybookFolder, diff --git a/code/lib/cli/src/generators/EMBER/index.ts b/code/lib/cli/src/generators/EMBER/index.ts index 255409fd7c48..313dcf8691fd 100644 --- a/code/lib/cli/src/generators/EMBER/index.ts +++ b/code/lib/cli/src/generators/EMBER/index.ts @@ -1,16 +1,23 @@ +import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'ember', { - extraPackages: [ - // babel-plugin-ember-modules-api-polyfill is a peerDep of @storybook/ember - 'babel-plugin-ember-modules-api-polyfill', - // babel-plugin-htmlbars-inline-precompile is a peerDep of @storybook/ember - 'babel-plugin-htmlbars-inline-precompile', - ], - staticDir: 'dist', - }); + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Webpack5 }, + 'ember', + { + extraPackages: [ + // babel-plugin-ember-modules-api-polyfill is a peerDep of @storybook/ember + 'babel-plugin-ember-modules-api-polyfill', + // babel-plugin-htmlbars-inline-precompile is a peerDep of @storybook/ember + 'babel-plugin-htmlbars-inline-precompile', + ], + staticDir: 'dist', + } + ); }; export default generator; diff --git a/code/lib/cli/src/generators/NEXTJS/index.ts b/code/lib/cli/src/generators/NEXTJS/index.ts index 8b9ab6735b4c..2588b387312a 100644 --- a/code/lib/cli/src/generators/NEXTJS/index.ts +++ b/code/lib/cli/src/generators/NEXTJS/index.ts @@ -1,8 +1,18 @@ +import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'react', undefined, 'nextjs'); + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Webpack5 }, + 'react', + { + extraAddons: ['@storybook/addon-onboarding'], + }, + 'nextjs' + ); }; export default generator; diff --git a/code/lib/cli/src/generators/REACT/index.ts b/code/lib/cli/src/generators/REACT/index.ts index c37ebc323f99..208c62bf25d4 100644 --- a/code/lib/cli/src/generators/REACT/index.ts +++ b/code/lib/cli/src/generators/REACT/index.ts @@ -5,11 +5,12 @@ import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { // Add prop-types dependency if not using TypeScript - const language = detectLanguage(); + const language = await detectLanguage(packageManager); const extraPackages = language === SupportedLanguage.JAVASCRIPT ? ['prop-types'] : []; await baseGenerator(packageManager, npmOptions, options, 'react', { extraPackages, + extraAddons: ['@storybook/addon-onboarding'], }); }; diff --git a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts index 1871a13faedb..5a0300c25b5a 100644 --- a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts +++ b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts @@ -25,24 +25,16 @@ const generator: Generator = async (packageManager, npmOptions, options) => { } : {}; - const packageJson = await packageManager.retrievePackageJson(); - const craVersion = semver.coerce(packageJson.dependencies['react-scripts'])?.version; - const isCra5OrHigher = craVersion && semver.gte(craVersion, '5.0.0'); - const updatedOptions = isCra5OrHigher ? { ...options, builder: CoreBuilder.Webpack5 } : options; + const craVersion = await packageManager.getPackageVersion('react-scripts'); - const extraPackages = []; - if (isCra5OrHigher) { - extraPackages.push('webpack'); - // Miscellaneous dependency used in `babel-preset-react-app` but not listed as dep there - extraPackages.push('babel-plugin-named-exports-order'); - // Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode - extraPackages.push('prop-types'); + if (craVersion === null) { + throw new Error(dedent` + It looks like you're trying to initialize Storybook in a CRA project that does not have react-scripts installed. + Please install it and make sure it's of version 5 or higher, which are the versions supported by Storybook 7.0+. + `); } - const version = versions['@storybook/preset-create-react-app']; - const extraAddons = [`@storybook/preset-create-react-app@${version}`]; - - if (!isCra5OrHigher) { + if (!craVersion && semver.gte(craVersion, '5.0.0')) { throw new Error(dedent` Storybook 7.0+ doesn't support react-scripts@<5.0.0. @@ -50,14 +42,32 @@ const generator: Generator = async (packageManager, npmOptions, options) => { `); } - await baseGenerator(packageManager, npmOptions, updatedOptions, 'react', { - extraAddons, - extraPackages, - staticDir: fs.existsSync(path.resolve('./public')) ? 'public' : undefined, - addBabel: false, - addESLint: true, - extraMain, - }); + const extraPackages = []; + extraPackages.push('webpack'); + // Miscellaneous dependency used in `babel-preset-react-app` but not listed as dep there + extraPackages.push('babel-plugin-named-exports-order'); + // Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode + extraPackages.push('prop-types'); + + const version = versions['@storybook/preset-create-react-app']; + const extraAddons = [ + `@storybook/preset-create-react-app@${version}`, + '@storybook/addon-onboarding', + ]; + + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Webpack5 }, + 'react', + { + extraAddons, + extraPackages, + staticDir: fs.existsSync(path.resolve('./public')) ? 'public' : undefined, + skipBabel: true, + extraMain, + } + ); }; export default generator; diff --git a/code/lib/cli/src/generators/SERVER/index.ts b/code/lib/cli/src/generators/SERVER/index.ts index 92bda9526d18..c99b69e4902d 100755 --- a/code/lib/cli/src/generators/SERVER/index.ts +++ b/code/lib/cli/src/generators/SERVER/index.ts @@ -1,10 +1,17 @@ +import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'server', { - extensions: ['json'], - }); + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Webpack5 }, + 'server', + { + extensions: ['json', 'yaml', 'yml'], + } + ); }; export default generator; diff --git a/code/lib/cli/src/generators/SOLID/index.ts b/code/lib/cli/src/generators/SOLID/index.ts index 7dc517f667bb..21347d057682 100644 --- a/code/lib/cli/src/generators/SOLID/index.ts +++ b/code/lib/cli/src/generators/SOLID/index.ts @@ -1,8 +1,16 @@ +import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'solid', {}, 'solid'); + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Vite }, + 'solid', + {}, + 'solid' + ); }; export default generator; diff --git a/code/lib/cli/src/generators/SVELTEKIT/index.ts b/code/lib/cli/src/generators/SVELTEKIT/index.ts index 21565e6a45cc..856d1d04c76b 100644 --- a/code/lib/cli/src/generators/SVELTEKIT/index.ts +++ b/code/lib/cli/src/generators/SVELTEKIT/index.ts @@ -1,8 +1,16 @@ +import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'svelte', undefined, 'sveltekit'); + await baseGenerator( + packageManager, + npmOptions, + { ...options, builder: CoreBuilder.Vite }, + 'svelte', + undefined, + 'sveltekit' + ); }; export default generator; diff --git a/code/lib/cli/src/generators/VUE/index.ts b/code/lib/cli/src/generators/VUE/index.ts index 02878a42c112..c1869a539695 100644 --- a/code/lib/cli/src/generators/VUE/index.ts +++ b/code/lib/cli/src/generators/VUE/index.ts @@ -3,9 +3,10 @@ import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - const extraPackages = options.builder === CoreBuilder.Webpack5 ? ['vue-loader@^15.7.0'] : []; await baseGenerator(packageManager, npmOptions, options, 'vue', { - extraPackages, + extraPackages: async ({ builder }) => { + return builder === CoreBuilder.Webpack5 ? ['vue-loader@^15.7.0'] : []; + }, }); }; diff --git a/code/lib/cli/src/generators/VUE3/index.ts b/code/lib/cli/src/generators/VUE3/index.ts index fa08aa327bdf..63dbddede7b5 100644 --- a/code/lib/cli/src/generators/VUE3/index.ts +++ b/code/lib/cli/src/generators/VUE3/index.ts @@ -3,12 +3,12 @@ import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - const extraPackages = - options.builder === CoreBuilder.Webpack5 - ? ['vue-loader@^17.0.0', '@vue/compiler-sfc@^3.2.0'] - : []; await baseGenerator(packageManager, npmOptions, options, 'vue3', { - extraPackages, + extraPackages: async ({ builder }) => { + return builder === CoreBuilder.Webpack5 + ? ['vue-loader@^17.0.0', '@vue/compiler-sfc@^3.2.0'] + : []; + }, }); }; diff --git a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts index 0bf8bb0ba23b..867bd82b80c2 100644 --- a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts +++ b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts @@ -2,7 +2,9 @@ import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { - await baseGenerator(packageManager, npmOptions, options, 'react'); + await baseGenerator(packageManager, npmOptions, options, 'react', { + extraAddons: ['@storybook/addon-onboarding'], + }); }; export default generator; diff --git a/code/lib/cli/src/generators/baseGenerator.ts b/code/lib/cli/src/generators/baseGenerator.ts index 9a44785b7146..48b2f8affd5b 100644 --- a/code/lib/cli/src/generators/baseGenerator.ts +++ b/code/lib/cli/src/generators/baseGenerator.ts @@ -1,16 +1,25 @@ import path from 'path'; import fse from 'fs-extra'; import { dedent } from 'ts-dedent'; +import ora from 'ora'; import type { NpmOptions } from '../NpmOptions'; import type { SupportedRenderers, SupportedFrameworks, Builder } from '../project_types'; -import { externalFrameworks, CoreBuilder } from '../project_types'; -import { getBabelDependencies, copyTemplateFiles } from '../helpers'; +import { SupportedLanguage, externalFrameworks, CoreBuilder } from '../project_types'; +import { copyTemplateFiles } from '../helpers'; import { configureMain, configurePreview } from './configure'; import type { JsPackageManager } from '../js-package-manager'; import { getPackageDetails } from '../js-package-manager'; -import { generateStorybookBabelConfigInCWD } from '../babel-config'; +import { getBabelPresets, writeBabelConfigFile } from '../babel-config'; import packageVersions from '../versions'; import type { FrameworkOptions, GeneratorOptions } from './types'; +import { + configureEslintPlugin, + extractEslintInfo, + suggestESLintPlugin, +} from '../automigrate/helpers/eslintPlugin'; +import { detectBuilder } from '../detect'; + +const logger = console; const defaultOptions: FrameworkOptions = { extraPackages: [], @@ -19,8 +28,7 @@ const defaultOptions: FrameworkOptions = { addScripts: true, addMainFile: true, addComponents: true, - addBabel: false, - addESLint: false, + skipBabel: false, extraMain: undefined, framework: undefined, extensions: undefined, @@ -54,13 +62,30 @@ const getExternalFramework = (framework: string) => const getFrameworkPackage = (framework: string, renderer: string, builder: string) => { const externalFramework = getExternalFramework(framework); + const storybookBuilder = builder?.replace(/^@storybook\/builder-/, ''); + const storybookFramework = framework?.replace(/^@storybook\//, ''); if (externalFramework === undefined) { - return framework ? `@storybook/${framework}` : `@storybook/${renderer}-${builder}`; + const frameworkPackage = framework + ? `@storybook/${storybookFramework}` + : `@storybook/${renderer}-${storybookBuilder}`; + + if (packageVersions[frameworkPackage as keyof typeof packageVersions]) { + return frameworkPackage; + } + + throw new Error( + dedent` + Could not find framework package: ${frameworkPackage}. + Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook. + ` + ); } if (externalFramework.frameworks !== undefined) { - return externalFramework.frameworks.find((item) => item.match(new RegExp(`-${builder}`))); + return externalFramework.frameworks.find((item) => + item.match(new RegExp(`-${storybookBuilder}`)) + ); } return externalFramework.packageName; @@ -74,14 +99,15 @@ const getRendererPackage = (framework: string, renderer: string) => { return `@storybook/${renderer}`; }; -const wrapForPnp = (packageName: string) => - `%%path.dirname(require.resolve(path.join('${packageName}', 'package.json')))%%`; +const applyRequireWrapper = (packageName: string) => `%%getAbsolutePath('${packageName}')%%`; const getFrameworkDetails = ( renderer: SupportedRenderers, builder: Builder, pnp: boolean, - framework?: SupportedFrameworks + language: SupportedLanguage, + framework?: SupportedFrameworks, + shouldApplyRequireWrapperOnPackageNames?: boolean ): { type: 'framework' | 'renderer'; packages: string[]; @@ -92,13 +118,19 @@ const getFrameworkDetails = ( } => { const frameworkPackage = getFrameworkPackage(framework, renderer, builder); - const frameworkPackagePath = pnp ? wrapForPnp(frameworkPackage) : frameworkPackage; + const frameworkPackagePath = shouldApplyRequireWrapperOnPackageNames + ? applyRequireWrapper(frameworkPackage) + : frameworkPackage; const rendererPackage = getRendererPackage(framework, renderer); - const rendererPackagePath = pnp ? wrapForPnp(rendererPackage) : rendererPackage; + const rendererPackagePath = shouldApplyRequireWrapperOnPackageNames + ? applyRequireWrapper(rendererPackage) + : rendererPackage; const builderPackage = getBuilderDetails(builder); - const builderPackagePath = pnp ? wrapForPnp(builderPackage) : builderPackage; + const builderPackagePath = shouldApplyRequireWrapperOnPackageNames + ? applyRequireWrapper(builderPackage) + : builderPackage; const isExternalFramework = !!getExternalFramework(frameworkPackage); const isKnownFramework = @@ -142,11 +174,26 @@ const hasFrameworkTemplates = (framework?: SupportedFrameworks) => export async function baseGenerator( packageManager: JsPackageManager, npmOptions: NpmOptions, - { language, builder = CoreBuilder.Webpack5, pnp, frameworkPreviewParts }: GeneratorOptions, + { + language, + builder, + pnp, + frameworkPreviewParts, + yes: skipPrompts, + projectType, + }: GeneratorOptions, renderer: SupportedRenderers, options: FrameworkOptions = defaultOptions, framework?: SupportedFrameworks ) { + const isStorybookInMonorepository = packageManager.isStorybookInMonorepo(); + const shouldApplyRequireWrapperOnPackageNames = isStorybookInMonorepository || pnp; + + if (!builder) { + // eslint-disable-next-line no-param-reassign + builder = await detectBuilder(packageManager, projectType); + } + const { extraAddons: extraAddonPackages, extraPackages, @@ -154,8 +201,7 @@ export async function baseGenerator( addScripts, addMainFile, addComponents, - addBabel, - addESLint, + skipBabel, extraMain, extensions, storybookConfigFolder, @@ -171,28 +217,41 @@ export async function baseGenerator( rendererId, framework: frameworkInclude, builder: builderInclude, - } = getFrameworkDetails(renderer, builder, pnp, framework); + } = getFrameworkDetails( + renderer, + builder, + pnp, + language, + framework, + shouldApplyRequireWrapperOnPackageNames + ); + + const extraAddonsToInstall = + typeof extraAddonPackages === 'function' + ? await extraAddonPackages({ + builder: builder || builderInclude, + framework: framework || frameworkInclude, + }) + : extraAddonPackages; // added to main.js const addons = [ '@storybook/addon-links', '@storybook/addon-essentials', - ...stripVersions(extraAddonPackages), - ]; + ...stripVersions(extraAddonsToInstall), + ].filter(Boolean); + // added to package.json const addonPackages = [ '@storybook/addon-links', '@storybook/addon-essentials', '@storybook/blocks', - ...extraAddonPackages, - ]; + ...extraAddonsToInstall, + ].filter(Boolean); if (hasInteractiveStories(rendererId)) { addons.push('@storybook/addon-interactions'); - addonPackages.push( - '@storybook/addon-interactions', - '@storybook/testing-library@^0.0.14-next.1' - ); + addonPackages.push('@storybook/addon-interactions', '@storybook/testing-library@^0.2.0-next.0'); } const files = await fse.readdir(process.cwd()); @@ -222,28 +281,126 @@ export async function baseGenerator( ); } - const packages = [ + const extraPackagesToInstall = + typeof extraPackages === 'function' + ? await extraPackages({ + builder: builder || builderInclude, + framework: framework || frameworkInclude, + }) + : extraPackages; + + const allPackages = [ 'storybook', getExternalFramework(rendererId) ? undefined : `@storybook/${rendererId}`, ...frameworkPackages, ...addonPackages, - ...extraPackages, - ] - .filter(Boolean) - .filter( - (packageToInstall) => !installedDependencies.has(getPackageDetails(packageToInstall)[0]) - ); + ...extraPackagesToInstall, + ].filter(Boolean); + const packages = [...new Set(allPackages)].filter( + (packageToInstall) => !installedDependencies.has(getPackageDetails(packageToInstall)[0]) + ); + + logger.log(); + const versionedPackagesSpinner = ora({ + indent: 2, + text: `Getting the correct version of ${packages.length} packages`, + }).start(); const versionedPackages = await packageManager.getVersionedPackages(packages); + versionedPackagesSpinner.succeed(); + + const depsToInstall = [...versionedPackages]; + + // Add basic babel config for a select few frameworks that need it, if they do not have a babel config file already + if (builder !== CoreBuilder.Vite && !skipBabel) { + const frameworksThatNeedBabelConfig = [ + '@storybook/react-webpack5', + '@storybook/vue-webpack5', + '@storybook/vue3-webpack5', + '@storybook/html-webpack5', + '@storybook/web-components-webpack5', + ]; + const needsBabelConfig = frameworkPackages.find((pkg) => + frameworksThatNeedBabelConfig.includes(pkg) + ); + const hasNoBabelFile = !files.some( + (fname) => fname.startsWith('.babel') || fname.startsWith('babel') + ); + + if (hasNoBabelFile && needsBabelConfig) { + const isTypescript = language !== SupportedLanguage.JAVASCRIPT; + const isReact = rendererId === 'react'; + depsToInstall.push( + ...getBabelPresets({ + typescript: isTypescript, + jsx: isReact, + }) + ); + await writeBabelConfigFile({ + typescript: isTypescript, + jsx: isReact, + }); + } + } + + try { + if (process.env.CI !== 'true') { + const { hasEslint, isStorybookPluginInstalled, eslintConfigFile } = await extractEslintInfo( + packageManager + ); + + if (hasEslint && !isStorybookPluginInstalled) { + if (skipPrompts || (await suggestESLintPlugin())) { + depsToInstall.push('eslint-plugin-storybook'); + await configureEslintPlugin(eslintConfigFile, packageManager); + } + } + } + } catch (err) { + // any failure regarding configuring the eslint plugin should not fail the whole generator + } + + if (depsToInstall.length > 0) { + const addDependenciesSpinner = ora({ + indent: 2, + text: 'Installing Storybook dependencies', + }).start(); + await packageManager.addDependencies({ ...npmOptions, packageJson }, depsToInstall); + addDependenciesSpinner.succeed(); + } await fse.ensureDir(`./${storybookConfigFolder}`); if (addMainFile) { + const prefixes = shouldApplyRequireWrapperOnPackageNames + ? [ + 'import { join, dirname } from "path"', + language === SupportedLanguage.JAVASCRIPT + ? dedent`/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ + function getAbsolutePath(value) { + return dirname(require.resolve(join(value, 'package.json'))) + }` + : dedent`/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ + function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))) + }`, + ] + : []; + await configureMain({ framework: { name: frameworkInclude, options: options.framework || {} }, + prefixes, storybookConfigFolder, docs: { autodocs: 'tag' }, - addons: pnp ? addons.map(wrapForPnp) : addons, + addons: shouldApplyRequireWrapperOnPackageNames + ? addons.map((addon) => applyRequireWrapper(addon)) + : addons, extensions, language, ...(staticDir ? { staticDirs: [path.join('..', staticDir)] } : null), @@ -258,24 +415,12 @@ export async function baseGenerator( }); } - await configurePreview({ frameworkPreviewParts, storybookConfigFolder, language, rendererId }); - - const babelDependencies = - addBabel && builder !== CoreBuilder.Vite - ? await getBabelDependencies(packageManager, packageJson) - : []; - const isNewFolder = !files.some( - (fname) => fname.startsWith('.babel') || fname.startsWith('babel') || fname === 'package.json' - ); - if (isNewFolder) { - await generateStorybookBabelConfigInCWD(); - } - - const depsToInstall = [...versionedPackages, ...babelDependencies]; - - if (depsToInstall.length > 0) { - await packageManager.addDependencies({ ...npmOptions, packageJson }, depsToInstall); - } + await configurePreview({ + frameworkPreviewParts, + storybookConfigFolder, + language, + rendererId, + }); if (addScripts) { await packageManager.addStorybookCommandInScripts({ @@ -283,10 +428,6 @@ export async function baseGenerator( }); } - if (addESLint) { - await packageManager.addESLintConfig(); - } - if (addComponents) { const templateLocation = hasFrameworkTemplates(framework) ? framework : rendererId; await copyTemplateFiles({ diff --git a/code/lib/cli/src/generators/configure.test.ts b/code/lib/cli/src/generators/configure.test.ts index 0c9823bae9ff..c79eea9a253c 100644 --- a/code/lib/cli/src/generators/configure.test.ts +++ b/code/lib/cli/src/generators/configure.test.ts @@ -14,6 +14,7 @@ describe('configureMain', () => { await configureMain({ language: SupportedLanguage.JAVASCRIPT, addons: [], + prefixes: [], storybookConfigFolder: '.storybook', framework: { name: '@storybook/react-vite', @@ -27,7 +28,7 @@ describe('configureMain', () => { expect(mainConfigContent).toMatchInlineSnapshot(` "/** @type { import('@storybook/react-vite').StorybookConfig } */ const config = { - stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [], framework: { name: '@storybook/react-vite', @@ -42,6 +43,7 @@ describe('configureMain', () => { await configureMain({ language: SupportedLanguage.TYPESCRIPT_4_9, addons: [], + prefixes: [], storybookConfigFolder: '.storybook', framework: { name: '@storybook/react-vite', @@ -54,8 +56,9 @@ describe('configureMain', () => { expect(mainConfigPath).toEqual('./.storybook/main.ts'); expect(mainConfigContent).toMatchInlineSnapshot(` "import type { StorybookConfig } from '@storybook/react-vite'; + const config: StorybookConfig = { - stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [], framework: { name: '@storybook/react-vite', @@ -69,6 +72,7 @@ describe('configureMain', () => { test('should handle resolved paths in pnp', async () => { await configureMain({ language: SupportedLanguage.JAVASCRIPT, + prefixes: [], addons: [ "%%path.dirname(require.resolve(path.join('@storybook/addon-links', 'package.json')))%%", "%%path.dirname(require.resolve(path.join('@storybook/addon-essentials', 'package.json')))%%", @@ -90,7 +94,7 @@ describe('configureMain', () => { /** @type { import('@storybook/react-webpack5').StorybookConfig } */ const config = { - stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ path.dirname(require.resolve(path.join('@storybook/addon-links', 'package.json'))), path.dirname(require.resolve(path.join('@storybook/addon-essentials', 'package.json'))), diff --git a/code/lib/cli/src/generators/configure.ts b/code/lib/cli/src/generators/configure.ts index 946637592b03..6001a17b6024 100644 --- a/code/lib/cli/src/generators/configure.ts +++ b/code/lib/cli/src/generators/configure.ts @@ -9,6 +9,7 @@ interface ConfigureMainOptions { staticDirs?: string[]; storybookConfigFolder: string; language: SupportedLanguage; + prefixes: string[]; /** * Extra values for main.js * @@ -51,9 +52,10 @@ const sanitizeFramework = (framework: string) => { export async function configureMain({ addons, - extensions = ['js', 'jsx', 'ts', 'tsx'], + extensions = ['js', 'jsx', 'mjs', 'ts', 'tsx'], storybookConfigFolder, language, + prefixes = [], ...custom }: ConfigureMainOptions) { const srcPath = path.resolve(storybookConfigFolder, '../src'); @@ -67,7 +69,7 @@ export async function configureMain({ const isTypescript = language === SupportedLanguage.TYPESCRIPT_4_9 || language === SupportedLanguage.TYPESCRIPT_3_8; - let mainConfigTemplate = dedent`<>const config<> = <>; + let mainConfigTemplate = dedent`<><>const config<> = <>; export default config;`; const frameworkPackage = sanitizeFramework(custom.framework?.name); @@ -82,6 +84,7 @@ export async function configureMain({ .replace(/%%['"]/g, ''); const imports = []; + const finalPrefixes = [...prefixes]; if (custom.framework?.name.includes('path.dirname(')) { imports.push(`import path from 'path';`); @@ -90,11 +93,12 @@ export async function configureMain({ if (isTypescript) { imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`); } else { - imports.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`); + finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`); } const mainJsContents = mainConfigTemplate - .replace('<>', `${imports.join('\n\n')}\n`) + .replace('<>', `${imports.join('\n\n')}\n\n`) + .replace('<>', finalPrefixes.length > 0 ? `${finalPrefixes.join('\n\n')}\n` : '') .replace('<>', isTypescript ? ': StorybookConfig' : '') .replace('<>', mainContents); diff --git a/code/lib/cli/src/generators/types.ts b/code/lib/cli/src/generators/types.ts index bb62010bbd58..1711505e0bdc 100644 --- a/code/lib/cli/src/generators/types.ts +++ b/code/lib/cli/src/generators/types.ts @@ -8,18 +8,22 @@ export type GeneratorOptions = { builder: Builder; linkable: boolean; pnp: boolean; + projectType: ProjectType; frameworkPreviewParts?: FrameworkPreviewParts; + // skip prompting the user + yes: boolean; }; export interface FrameworkOptions { - extraPackages?: string[]; - extraAddons?: string[]; + extraPackages?: + | string[] + | ((details: { framework: string; builder: string }) => Promise); + extraAddons?: string[] | ((details: { framework: string; builder: string }) => Promise); staticDir?: string; addScripts?: boolean; addMainFile?: boolean; addComponents?: boolean; - addBabel?: boolean; - addESLint?: boolean; + skipBabel?: boolean; extraMain?: any; extensions?: string[]; framework?: Record; diff --git a/code/lib/cli/src/helpers.test.ts b/code/lib/cli/src/helpers.test.ts index 4f5c3d37afee..01897444db11 100644 --- a/code/lib/cli/src/helpers.test.ts +++ b/code/lib/cli/src/helpers.test.ts @@ -20,6 +20,12 @@ jest.mock('fs-extra', () => ({ ensureDir: jest.fn(() => {}), existsSync: jest.fn(), pathExists: jest.fn(), + readFile: jest.fn(() => ''), + writeFile: jest.fn(), +})); + +jest.mock('find-up', () => ({ + sync: jest.fn(), })); jest.mock('path', () => { diff --git a/code/lib/cli/src/helpers.ts b/code/lib/cli/src/helpers.ts index b8cd29253ebd..db5cfb34d1ac 100644 --- a/code/lib/cli/src/helpers.ts +++ b/code/lib/cli/src/helpers.ts @@ -1,11 +1,12 @@ /* eslint-disable no-param-reassign */ -import path, { join } from 'path'; +import chalk from 'chalk'; import fs from 'fs'; import fse from 'fs-extra'; -import chalk from 'chalk'; +import path, { join } from 'path'; import { satisfies } from 'semver'; import stripJsonComments from 'strip-json-comments'; +import findUp from 'find-up'; import { getCliDir, getRendererDir } from './dirs'; import type { JsPackageManager, @@ -18,16 +19,6 @@ import storybookMonorepoPackages from './versions'; const logger = console; -export function getBowerJson() { - const bowerJsonPath = path.resolve('bower.json'); - if (!fs.existsSync(bowerJsonPath)) { - return false; - } - - const jsonContent = fs.readFileSync(bowerJsonPath, 'utf8'); - return JSON.parse(jsonContent); -} - export function readFileAsJson(jsonPath: string, allowComments?: boolean) { const filePath = path.resolve(jsonPath); if (!fs.existsSync(filePath)) { @@ -119,6 +110,7 @@ export function codeLog(codeLines: string[], leftPadAmount?: number) { /** * Detect if any babel dependencies need to be added to the project + * This is currently used by react-native generator * @param {Object} packageJson The current package.json so we can inspect its contents * @returns {Array} Contains the packages and versions that need to be installed * @example @@ -194,6 +186,24 @@ type CopyTemplateFilesOptions = { destination?: string; }; +const frameworkToRenderer: Record = { + angular: 'angular', + ember: 'ember', + html: 'html', + nextjs: 'react', + preact: 'preact', + qwik: 'qwik', + react: 'react', + 'react-native': 'react', + server: 'react', + solid: 'solid', + svelte: 'svelte', + sveltekit: 'svelte', + vue: 'vue', + vue3: 'vue', + 'web-components': 'web-components', +}; + export async function copyTemplateFiles({ packageManager, renderer, @@ -210,7 +220,7 @@ export async function copyTemplateFiles({ }; const templatePath = async () => { const baseDir = await getRendererDir(packageManager, renderer); - const assetsDir = join(baseDir, 'template/cli'); + const assetsDir = join(baseDir, 'template', 'cli'); const assetsLanguage = join(assetsDir, languageFolderMapping[language]); const assetsJS = join(assetsDir, languageFolderMapping[SupportedLanguage.JAVASCRIPT]); @@ -249,11 +259,28 @@ export async function copyTemplateFiles({ const destinationPath = destination ?? (await targetPath()); if (includeCommonAssets) { - await fse.copy(join(getCliDir(), 'rendererAssets/common'), destinationPath, { + await fse.copy(join(getCliDir(), 'rendererAssets', 'common'), destinationPath, { overwrite: true, }); } await fse.copy(await templatePath(), destinationPath, { overwrite: true }); + + if (includeCommonAssets) { + const rendererType = frameworkToRenderer[renderer] || 'react'; + await adjustTemplate(join(destinationPath, 'Configure.mdx'), { renderer: rendererType }); + } +} + +export async function adjustTemplate(templatePath: string, templateData: Record) { + // for now, we're just doing a simple string replace + // in the future we might replace this with a proper templating engine + let template = await fse.readFile(templatePath, 'utf8'); + + Object.keys(templateData).forEach((key) => { + template = template.replaceAll(`{{${key}}}`, `${templateData[key]}`); + }); + + await fse.writeFile(templatePath, template); } // Given a package.json, finds any official storybook package within it @@ -273,6 +300,6 @@ export function getStorybookVersionSpecifier(packageJson: PackageJsonWithDepsAnd return allDeps[storybookPackage]; } -export function isNxProject(packageJSON: PackageJson) { - return !!packageJSON.devDependencies?.nx || fs.existsSync('nx.json'); +export async function isNxProject() { + return findUp.sync('nx.json'); } diff --git a/code/lib/cli/src/initiate.ts b/code/lib/cli/src/initiate.ts index 62797d5db756..e2966a0c1798 100644 --- a/code/lib/cli/src/initiate.ts +++ b/code/lib/cli/src/initiate.ts @@ -1,18 +1,16 @@ +/* eslint-disable no-param-reassign */ import type { PackageJson } from 'read-pkg-up'; import chalk from 'chalk'; import prompts from 'prompts'; import { telemetry } from '@storybook/telemetry'; import { withTelemetry } from '@storybook/core-server'; +import { NxProjectDetectedError } from '@storybook/core-events/server-errors'; import dedent from 'ts-dedent'; +import boxen from 'boxen'; +import { readdirSync } from 'fs-extra'; import { installableProjectTypes, ProjectType } from './project_types'; -import { - detect, - isStorybookInstantiated, - detectLanguage, - detectBuilder, - detectPnp, -} from './detect'; +import { detect, isStorybookInstantiated, detectLanguage, detectPnp } from './detect'; import { commandLog, codeLog, paddedLog } from './helpers'; import angularGenerator from './generators/ANGULAR'; import emberGenerator from './generators/EMBER'; @@ -32,12 +30,10 @@ import qwikGenerator from './generators/QWIK'; import svelteKitGenerator from './generators/SVELTEKIT'; import solidGenerator from './generators/SOLID'; import serverGenerator from './generators/SERVER'; -import type { JsPackageManager } from './js-package-manager'; +import type { JsPackageManager, PackageManagerName } from './js-package-manager'; import { JsPackageManagerFactory, useNpmWarning } from './js-package-manager'; import type { NpmOptions } from './NpmOptions'; -import { automigrate } from './automigrate'; -import type { CommandOptions } from './generators/types'; -import { initFixes } from './automigrate/fixes'; +import type { CommandOptions, GeneratorOptions } from './generators/types'; import { HandledError } from './HandledError'; const logger = console; @@ -52,21 +48,16 @@ const installStorybook = async ( skipInstall: options.skipInstall, }; - let packageJson; - try { - packageJson = await packageManager.readPackageJson(); - } catch (err) { - // - } - - const language = detectLanguage(packageJson); - const pnp = detectPnp(); + const language = await detectLanguage(packageManager); + const pnp = await detectPnp(); - const generatorOptions = { + const generatorOptions: GeneratorOptions = { language, - builder: options.builder || (await detectBuilder(packageManager, projectType)), + builder: options.builder, linkable: !!options.linkable, pnp: pnp || options.usePnp, + yes: options.yes, + projectType: options.type, }; const runGenerator: () => Promise = async () => { @@ -163,11 +154,7 @@ const installStorybook = async ( ); case ProjectType.NX: - throw new Error(dedent` - We have detected Nx in your project. Please use "nx g @nrwl/storybook:configuration" to add Storybook to your project. - - For more information, please see https://nx.dev/packages/storybook - `); + throw new NxProjectDetectedError(); case ProjectType.SOLID: return solidGenerator(packageManager, npmOptions, generatorOptions).then( @@ -201,7 +188,7 @@ const installStorybook = async ( try { return await runGenerator(); } catch (err) { - if (err?.stack) { + if (err?.message !== 'Canceled by the user' && err?.stack) { logger.error(`\n ${chalk.red(err.stack)}`); } throw new HandledError(err); @@ -211,6 +198,7 @@ const installStorybook = async ( const projectTypeInquirer = async ( options: CommandOptions & { yes?: boolean }, packageManager: JsPackageManager + // eslint-disable-next-line consistent-return ) => { const manualAnswer = options.yes ? true @@ -223,7 +211,7 @@ const projectTypeInquirer = async ( ]); if (manualAnswer !== true && manualAnswer.manual) { - const frameworkAnswer = await prompts([ + const { manualFramework } = await prompts([ { type: 'select', name: 'manualFramework', @@ -234,18 +222,79 @@ const projectTypeInquirer = async ( })), }, ]); - return installStorybook(frameworkAnswer.manualFramework, packageManager, options); + + if (manualFramework) { + return installStorybook(manualFramework, packageManager, options); + } } - return Promise.resolve(); + + logger.log(); + logger.log('For more information about installing Storybook: https://storybook.js.org/docs'); + process.exit(0); }; -async function doInitiate(options: CommandOptions, pkg: PackageJson): Promise { +const getEmptyDirMessage = (packageManagerType: PackageManagerName) => { + const generatorCommandsMap = { + vite: { + npm: 'npm create vite@latest', + yarn1: 'yarn create vite', + yarn2: 'yarn create vite', + pnpm: 'pnpm create vite', + }, + angular: { + npm: 'npx -p @angular/cli ng new my-project --package-manager=npm', + yarn1: 'npx -p @angular/cli ng new my-project --package-manager=yarn', + yarn2: 'npx -p @angular/cli ng new my-project --package-manager=yarn', + pnpm: 'npx -p @angular/cli ng new my-project --package-manager=pnpm', + }, + }; + + return dedent` + Storybook cannot be installed into an empty project. We recommend creating a new project with the following: + + 📦 Vite CLI for React/Vue/Web Components => ${chalk.green( + generatorCommandsMap.vite[packageManagerType] + )} + See ${chalk.yellowBright('https://vitejs.dev/guide/#scaffolding-your-first-vite-project')} + + 📦 Angular CLI => ${chalk.green(generatorCommandsMap.angular[packageManagerType])} + See ${chalk.yellowBright('https://angular.io/cli/new')} + + 📦 Any other tooling of your choice + + Once you've created a project, please re-run ${chalk.green( + 'npx storybook@latest init' + )} inside the project root. For more information, see ${chalk.yellowBright( + 'https://storybook.js.org/docs' + )} + + Good luck! 🚀 + `; +}; + +async function doInitiate( + options: CommandOptions, + pkg: PackageJson +): Promise< + | { + shouldRunDev: true; + projectType: ProjectType; + packageManager: JsPackageManager; + storybookCommand: string; + } + | { shouldRunDev: false } +> { let { packageManager: pkgMgr } = options; if (options.useNpm) { useNpmWarning(); pkgMgr = 'npm'; } + + const cwdFolderEntries = readdirSync(process.cwd()); + const isEmptyDir = + cwdFolderEntries.length === 0 || cwdFolderEntries.every((entry) => entry.startsWith('.')); + const packageManager = JsPackageManagerFactory.getPackageManager({ force: pkgMgr }); const welcomeMessage = 'storybook init - the simplest way to add a Storybook to your project.'; logger.log(chalk.inverse(`\n ${welcomeMessage} \n`)); @@ -257,18 +306,27 @@ async function doInitiate(options: CommandOptions, pkg: PackageJson): Promise { - await withTelemetry( + const initiateResult = await withTelemetry( 'init', { cliOptions: options, @@ -361,4 +429,43 @@ export async function initiate(options: CommandOptions, pkg: PackageJson): Promi }, () => doInitiate(options, pkg) ); + + if (initiateResult.shouldRunDev) { + const { projectType, packageManager, storybookCommand } = initiateResult; + logger.log('\nRunning Storybook'); + + try { + const isReactWebProject = + projectType === ProjectType.REACT_SCRIPTS || + projectType === ProjectType.REACT || + projectType === ProjectType.WEBPACK_REACT || + projectType === ProjectType.REACT_PROJECT || + projectType === ProjectType.NEXTJS; + + const flags = []; + + // npm needs extra -- to pass flags to the command + if (packageManager.type === 'npm') { + flags.push('--'); + } + + if (isReactWebProject) { + flags.push('--initial-path=/onboarding'); + } + + flags.push('--quiet'); + + // instead of calling 'dev' automatically, we spawn a subprocess so that it gets + // executed directly in the user's project directory. This avoid potential issues + // with packages running in npxs' node_modules + packageManager.runPackageCommandSync( + storybookCommand.replace(/^yarn /, ''), + flags, + undefined, + 'inherit' + ); + } catch (e) { + // Do nothing here, as the command above will spawn a `storybook dev` process which does the error handling already. Else, the error will get bubbled up and sent to crash reports twice + } + } } diff --git a/code/lib/cli/src/js-package-manager/JsPackageManager.ts b/code/lib/cli/src/js-package-manager/JsPackageManager.ts index 3e0b16a1b25c..1cb3d93ba8c7 100644 --- a/code/lib/cli/src/js-package-manager/JsPackageManager.ts +++ b/code/lib/cli/src/js-package-manager/JsPackageManager.ts @@ -6,7 +6,7 @@ import path from 'path'; import fs from 'fs'; import dedent from 'ts-dedent'; -import { readFile, writeFile } from 'fs-extra'; +import { readFile, readFileSync, writeFile } from 'fs-extra'; import { commandLog } from '../helpers'; import type { PackageJson, PackageJsonWithDepsAndDevDeps } from './PackageJson'; import storybookPackagesVersions from '../versions'; @@ -49,6 +49,13 @@ export abstract class JsPackageManager { public readonly cwd?: string; + public abstract getPackageJSON( + packageName: string, + basePath?: string + ): Promise; + + public abstract getPackageVersion(packageName: string, basePath?: string): Promise; + // NOTE: for some reason yarn prefers the npm registry in // local development, so always use npm async setRegistryURL(url: string) { @@ -66,7 +73,52 @@ export abstract class JsPackageManager { } constructor(options?: JsPackageManagerOptions) { - this.cwd = options?.cwd; + this.cwd = options?.cwd || process.cwd(); + } + + /** Detect whether Storybook gets initialized in a monorepository/workspace environment + * The cwd doesn't have to be the root of the monorepo, it can be a subdirectory + * @returns true, if Storybook is initialized inside a monorepository/workspace + */ + public isStorybookInMonorepo() { + let cwd = process.cwd(); + + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const turboJsonPath = `${cwd}/turbo.json`; + const rushJsonPath = `${cwd}/rush.json`; + + if (fs.existsSync(turboJsonPath) || fs.existsSync(rushJsonPath)) { + return true; + } + + const packageJsonPath = require.resolve(`${cwd}/package.json`); + + // read packagejson with readFileSync + const packageJsonFile = readFileSync(packageJsonPath, 'utf8'); + const packageJson = JSON.parse(packageJsonFile) as PackageJsonWithDepsAndDevDeps; + + if (packageJson.workspaces) { + return true; + } + } catch (err) { + // Package.json not found or invalid in current directory + } + + // Move up to the parent directory + const parentDir = path.dirname(cwd); + + // Check if we have reached the root of the filesystem + if (parentDir === cwd) { + break; + } + + // Update cwd to the parent directory + cwd = parentDir; + } + + return false; } /** @@ -75,22 +127,23 @@ export abstract class JsPackageManager { public async installDependencies() { let done = commandLog('Preparing to install dependencies'); done(); - logger.log(); logger.log(); + logger.log(); + done = commandLog('Installing dependencies'); try { await this.runInstall(); + done(); } catch (e) { done('An error occurred while installing dependencies.'); throw new HandledError(e); } - done(); } packageJsonPath(): string { - return this.cwd ? path.resolve(this.cwd, 'package.json') : path.resolve('package.json'); + return path.resolve(this.cwd, 'package.json'); } async readPackageJson(): Promise { @@ -218,7 +271,7 @@ export abstract class JsPackageManager { try { await this.runAddDeps(dependencies, options.installAsDevDependencies); } catch (e) { - logger.error('An error occurred while installing dependencies.'); + logger.error('\nAn error occurred while installing dependencies:'); logger.log(e.message); throw new HandledError(e); } @@ -236,13 +289,13 @@ export abstract class JsPackageManager { * `@storybook/addon-actions`, * ]); */ - public removeDependencies( + public async removeDependencies( options: { skipInstall?: boolean; packageJson?: PackageJson; }, dependencies: string[] - ): void { + ): Promise { const { skipInstall } = options; if (skipInstall) { @@ -257,10 +310,10 @@ export abstract class JsPackageManager { } }); - this.writePackageJson(packageJson); + await this.writePackageJson(packageJson); } else { try { - this.runRemoveDeps(dependencies); + await this.runRemoveDeps(dependencies); } catch (e) { logger.error('An error occurred while removing dependencies.'); logger.log(e.message); @@ -365,25 +418,6 @@ export abstract class JsPackageManager { }); } - public async addESLintConfig() { - const packageJson = await this.retrievePackageJson(); - await this.writePackageJson({ - ...packageJson, - eslintConfig: { - ...packageJson.eslintConfig, - overrides: [ - ...(packageJson.eslintConfig?.overrides || []), - { - files: ['**/*.stories.*'], - rules: { - 'import/no-anonymous-default-export': 'off', - }, - }, - ], - }, - }); - } - public async addScripts(scripts: Record) { const packageJson = await this.retrievePackageJson(); await this.writePackageJson({ @@ -440,6 +474,7 @@ export abstract class JsPackageManager { stdio?: 'inherit' | 'pipe' ): string; public abstract findInstallations(pattern?: string[]): Promise; + public abstract parseErrorFromLogs(logs?: string): string; public executeCommandSync({ command, @@ -461,6 +496,7 @@ export abstract class JsPackageManager { stdio: stdio ?? 'pipe', encoding: 'utf-8', shell: true, + cleanup: true, env, ...execaOptions, }); @@ -494,6 +530,7 @@ export abstract class JsPackageManager { stdio: stdio ?? 'pipe', encoding: 'utf-8', shell: true, + cleanup: true, env, ...execaOptions, }); diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts index c0c8cb63be52..667f173f99e8 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts @@ -1,5 +1,15 @@ import { NPMProxy } from './NPMProxy'; +// mock createLogStream +jest.mock('../utils', () => ({ + createLogStream: jest.fn(() => ({ + logStream: '', + readLogFile: jest.fn(), + moveLogFile: jest.fn(), + removeLogFile: jest.fn(), + })), +})); + describe('NPM Proxy', () => { let npmProxy: NPMProxy; @@ -426,4 +436,50 @@ describe('NPM Proxy', () => { `); }); }); + + describe('parseErrors', () => { + it('should parse npm errors', () => { + const NPM_RESOLVE_ERROR_SAMPLE = ` + npm ERR! + npm ERR! code ERESOLVE + npm ERR! ERESOLVE unable to resolve dependency tree + npm ERR! + npm ERR! While resolving: before-storybook@1.0.0 + npm ERR! Found: react@undefined + npm ERR! node_modules/react + npm ERR! react@"30" from the root project + `; + + const NPM_TIMEOUT_ERROR_SAMPLE = ` + npm notice + npm notice New major version of npm available! 8.5.0 -> 9.6.7 + npm notice Changelog: + npm notice Run \`npm install -g npm@9.6.7\` to update! + npm notice + npm ERR! code ERR_SOCKET_TIMEOUT + npm ERR! errno ERR_SOCKET_TIMEOUT + npm ERR! network Invalid response body while trying to fetch https://registry.npmjs.org/@storybook%2ftypes: Socket timeout + npm ERR! network This is a problem related to network connectivity. + `; + + expect(npmProxy.parseErrorFromLogs(NPM_RESOLVE_ERROR_SAMPLE)).toEqual( + 'NPM error ERESOLVE - Dependency resolution error.' + ); + expect(npmProxy.parseErrorFromLogs(NPM_TIMEOUT_ERROR_SAMPLE)).toEqual( + 'NPM error ERR_SOCKET_TIMEOUT - Socket timed out.' + ); + }); + + it('should show unknown npm error', () => { + const NPM_ERROR_SAMPLE = ` + npm ERR! + npm ERR! While resolving: before-storybook@1.0.0 + npm ERR! Found: react@undefined + npm ERR! node_modules/react + npm ERR! react@"30" from the root project + `; + + expect(npmProxy.parseErrorFromLogs(NPM_ERROR_SAMPLE)).toEqual(`NPM error`); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.ts b/code/lib/cli/src/js-package-manager/NPMProxy.ts index 5dd0d63bd262..519030d34a59 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.ts @@ -1,8 +1,14 @@ import sort from 'semver/functions/sort'; import { platform } from 'os'; +import dedent from 'ts-dedent'; +import { sync as findUpSync } from 'find-up'; +import { existsSync, readFileSync } from 'fs'; +import path from 'path'; +import semver from 'semver'; import { JsPackageManager } from './JsPackageManager'; import type { PackageJson } from './PackageJson'; import type { InstallationMetadata, PackageMetadata } from './types'; +import { createLogStream } from '../utils'; type NpmDependency = { version: string; @@ -19,6 +25,41 @@ export type NpmListOutput = { dependencies: NpmDependencies; }; +const NPM_ERROR_REGEX = /npm ERR! code (\w+)/; +const NPM_ERROR_CODES = { + E401: 'Authentication failed or is required.', + E403: 'Access to the resource is forbidden.', + E404: 'Requested resource not found.', + EACCES: 'Permission issue.', + EAI_FAIL: 'DNS lookup failed.', + EBADENGINE: 'Engine compatibility check failed.', + EBADPLATFORM: 'Platform not supported.', + ECONNREFUSED: 'Connection refused.', + ECONNRESET: 'Connection reset.', + EEXIST: 'File or directory already exists.', + EINVALIDTYPE: 'Invalid type encountered.', + EISGIT: 'Git operation failed or conflicts with an existing file.', + EJSONPARSE: 'Error parsing JSON data.', + EMISSINGARG: 'Required argument missing.', + ENEEDAUTH: 'Authentication needed.', + ENOAUDIT: 'No audit available.', + ENOENT: 'File or directory does not exist.', + ENOGIT: 'Git not found or failed to run.', + ENOLOCK: 'Lockfile missing.', + ENOSPC: 'Insufficient disk space.', + ENOTFOUND: 'Resource not found.', + EOTP: 'One-time password required.', + EPERM: 'Permission error.', + EPUBLISHCONFLICT: 'Conflict during package publishing.', + ERESOLVE: 'Dependency resolution error.', + EROFS: 'File system is read-only.', + ERR_SOCKET_TIMEOUT: 'Socket timed out.', + ETARGET: 'Package target not found.', + ETIMEDOUT: 'Operation timed out.', + ETOOMANYARGS: 'Too many arguments provided.', + EUNKNOWNTYPE: 'Unknown type encountered.', +}; + export class NPMProxy extends JsPackageManager { readonly type = 'npm'; @@ -40,6 +81,31 @@ export class NPMProxy extends JsPackageManager { return this.executeCommand({ command: 'npm', args: ['--version'] }); } + public async getPackageJSON( + packageName: string, + basePath = this.cwd + ): Promise { + const packageJsonPath = await findUpSync( + (dir) => { + const possiblePath = path.join(dir, 'node_modules', packageName, 'package.json'); + return existsSync(possiblePath) ? possiblePath : undefined; + }, + { cwd: basePath } + ); + + if (!packageJsonPath) { + return null; + } + + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + return packageJson; + } + + public async getPackageVersion(packageName: string, basePath = this.cwd): Promise { + const packageJson = await this.getPackageJSON(packageName, basePath); + return packageJson ? semver.coerce(packageJson.version)?.version ?? null : null; + } + getInstallArgs(): string[] { if (!this.installArgs) { this.installArgs = []; @@ -104,17 +170,34 @@ export class NPMProxy extends JsPackageManager { } protected async runAddDeps(dependencies: string[], installAsDevDependencies: boolean) { + const { logStream, readLogFile, moveLogFile, removeLogFile } = await createLogStream(); let args = [...dependencies]; if (installAsDevDependencies) { args = ['-D', ...args]; } - await this.executeCommand({ - command: 'npm', - args: ['install', ...this.getInstallArgs(), ...args], - stdio: 'inherit', - }); + try { + await this.executeCommand({ + command: 'npm', + args: ['install', ...args, ...this.getInstallArgs()], + stdio: ['ignore', logStream, logStream], + }); + } catch (err) { + const stdout = await readLogFile(); + + const errorMessage = this.parseErrorFromLogs(stdout); + + await moveLogFile(); + + throw new Error( + dedent`${errorMessage} + + Please check the logfile generated at ./storybook.log for troubleshooting and try again.` + ); + } + + await removeLogFile(); } protected async runRemoveDeps(dependencies: string[]) { @@ -191,4 +274,23 @@ export class NPMProxy extends JsPackageManager { infoCommand: 'npm ls --depth=1', }; } + + public parseErrorFromLogs(logs: string): string { + let finalMessage = 'NPM error'; + const match = logs.match(NPM_ERROR_REGEX); + + if (match) { + const errorCode = match[1] as keyof typeof NPM_ERROR_CODES; + if (errorCode) { + finalMessage = `${finalMessage} ${errorCode}`; + } + + const errorMessage = NPM_ERROR_CODES[errorCode]; + if (errorMessage) { + finalMessage = `${finalMessage} - ${errorMessage}`; + } + } + + return finalMessage.trim(); + } } diff --git a/code/lib/cli/src/js-package-manager/PNPMProxy.test.ts b/code/lib/cli/src/js-package-manager/PNPMProxy.test.ts index eb82f1a06465..e59bd7354bcc 100644 --- a/code/lib/cli/src/js-package-manager/PNPMProxy.test.ts +++ b/code/lib/cli/src/js-package-manager/PNPMProxy.test.ts @@ -1,24 +1,24 @@ import { PNPMProxy } from './PNPMProxy'; -describe('NPM Proxy', () => { +describe('PNPM Proxy', () => { let pnpmProxy: PNPMProxy; beforeEach(() => { pnpmProxy = new PNPMProxy(); }); - it('type should be npm', () => { + it('type should be pnpm', () => { expect(pnpmProxy.type).toEqual('pnpm'); }); describe('initPackageJson', () => { - it('should run `npm init -y`', async () => { + it('should run `pnpm init`', async () => { const executeCommandSpy = jest.spyOn(pnpmProxy, 'executeCommand').mockResolvedValueOnce(''); await pnpmProxy.initPackageJson(); expect(executeCommandSpy).toHaveBeenCalledWith( - expect.objectContaining({ command: 'pnpm', args: ['init', '-y'] }) + expect.objectContaining({ command: 'pnpm', args: ['init'] }) ); }); }); @@ -53,7 +53,7 @@ describe('NPM Proxy', () => { }); describe('runScript', () => { - it('should execute script `yarn compodoc -- -e json -d .`', async () => { + it('should execute script `pnpm exec compodoc -- -e json -d .`', async () => { const executeCommandSpy = jest .spyOn(pnpmProxy, 'executeCommand') .mockResolvedValueOnce('7.1.0'); @@ -375,4 +375,30 @@ describe('NPM Proxy', () => { `); }); }); + + describe('parseErrors', () => { + it('should parse pnpm errors', () => { + const PNPM_ERROR_SAMPLE = ` + ERR_PNPM_NO_MATCHING_VERSION No matching version found for react@29.2.0 + + This error happened while installing a direct dependency of /Users/yannbraga/open-source/sandboxes/react-vite/default-js/before-storybook + + The latest release of react is "18.2.0". + `; + + expect(pnpmProxy.parseErrorFromLogs(PNPM_ERROR_SAMPLE)).toEqual( + 'PNPM error ERR_PNPM_NO_MATCHING_VERSION No matching version found for react@29.2.0' + ); + }); + + it('should show unknown pnpm error', () => { + const PNPM_ERROR_SAMPLE = ` + This error happened while installing a direct dependency of /Users/yannbraga/open-source/sandboxes/react-vite/default-js/before-storybook + + The latest release of react is "18.2.0". + `; + + expect(pnpmProxy.parseErrorFromLogs(PNPM_ERROR_SAMPLE)).toEqual(`PNPM error`); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/PNPMProxy.ts b/code/lib/cli/src/js-package-manager/PNPMProxy.ts index 8e8a4dce793e..d435ec397a05 100644 --- a/code/lib/cli/src/js-package-manager/PNPMProxy.ts +++ b/code/lib/cli/src/js-package-manager/PNPMProxy.ts @@ -1,7 +1,13 @@ import { pathExistsSync } from 'fs-extra'; +import dedent from 'ts-dedent'; +import { sync as findUpSync } from 'find-up'; +import path from 'path'; +import fs from 'fs'; +import semver from 'semver'; import { JsPackageManager } from './JsPackageManager'; import type { PackageJson } from './PackageJson'; import type { InstallationMetadata, PackageMetadata } from './types'; +import { createLogStream } from '../utils'; type PnpmDependency = { from: string; @@ -22,6 +28,8 @@ type PnpmListItem = { export type PnpmListOutput = PnpmListItem[]; +const PNPM_ERROR_REGEX = /(ELIFECYCLE|ERR_PNPM_[A-Z_]+)\s+(.*)/i; + export class PNPMProxy extends JsPackageManager { readonly type = 'pnpm'; @@ -37,7 +45,7 @@ export class PNPMProxy extends JsPackageManager { async initPackageJson() { await this.executeCommand({ command: 'pnpm', - args: ['init', '-y'], + args: ['init'], }); } @@ -103,6 +111,58 @@ export class PNPMProxy extends JsPackageManager { } } + public async getPackageJSON( + packageName: string, + basePath = this.cwd + ): Promise { + const pnpapiPath = findUpSync(['.pnp.js', '.pnp.cjs'], { cwd: basePath }); + + if (pnpapiPath) { + try { + // eslint-disable-next-line import/no-dynamic-require, global-require + const pnpApi = require(pnpapiPath); + + const resolvedPath = await pnpApi.resolveToUnqualified(packageName, basePath, { + considerBuiltins: false, + }); + + const pkgLocator = pnpApi.findPackageLocator(resolvedPath); + const pkg = pnpApi.getPackageInformation(pkgLocator); + + const packageJSON = JSON.parse( + fs.readFileSync(path.join(pkg.packageLocation, 'package.json'), 'utf-8') + ); + + return packageJSON; + } catch (error) { + if (error.code !== 'MODULE_NOT_FOUND') { + console.error('Error while fetching package version in PNPM PnP mode:', error); + } + return null; + } + } + + const packageJsonPath = await findUpSync( + (dir) => { + const possiblePath = path.join(dir, 'node_modules', packageName, 'package.json'); + return fs.existsSync(possiblePath) ? possiblePath : undefined; + }, + { cwd: basePath } + ); + + if (!packageJsonPath) { + return null; + } + + return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); + } + + async getPackageVersion(packageName: string, basePath = this.cwd): Promise { + const packageJSON = await this.getPackageJSON(packageName, basePath); + + return packageJSON ? semver.coerce(packageJSON.version)?.version ?? null : null; + } + protected getResolutions(packageJson: PackageJson, versions: Record) { return { overrides: { @@ -126,12 +186,29 @@ export class PNPMProxy extends JsPackageManager { if (installAsDevDependencies) { args = ['-D', ...args]; } + const { logStream, readLogFile, moveLogFile, removeLogFile } = await createLogStream(); - await this.executeCommand({ - command: 'pnpm', - args: ['add', ...args, ...this.getInstallArgs()], - stdio: 'inherit', - }); + try { + await this.executeCommand({ + command: 'pnpm', + args: ['add', ...args, ...this.getInstallArgs()], + stdio: ['ignore', logStream, logStream], + }); + } catch (err) { + const stdout = await readLogFile(); + + const errorMessage = this.parseErrorFromLogs(stdout); + + await moveLogFile(); + + throw new Error( + dedent`${errorMessage} + + Please check the logfile generated at ./storybook.log for troubleshooting and try again.` + ); + } + + await removeLogFile(); } protected async runRemoveDeps(dependencies: string[]) { @@ -212,4 +289,17 @@ export class PNPMProxy extends JsPackageManager { infoCommand: 'pnpm list --depth=1', }; } + + public parseErrorFromLogs(logs: string): string { + let finalMessage = 'PNPM error'; + const match = logs.match(PNPM_ERROR_REGEX); + if (match) { + const [errorCode] = match; + if (errorCode) { + finalMessage = `${finalMessage} ${errorCode}`; + } + } + + return finalMessage.trim(); + } } diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts index fb9edaef3cc0..3edf536f2a96 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts @@ -1,3 +1,4 @@ +import dedent from 'ts-dedent'; import { Yarn1Proxy } from './Yarn1Proxy'; describe('Yarn 1 Proxy', () => { @@ -275,4 +276,29 @@ describe('Yarn 1 Proxy', () => { `); }); }); + + describe('parseErrors', () => { + it('should parse yarn1 errors', () => { + const YARN1_ERROR_SAMPLE = dedent` + yarn add v1.22.19 + [1/4] Resolving packages... + error Couldn't find any versions for "react" that matches "28.2.0" + info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command. + `; + + expect(yarn1Proxy.parseErrorFromLogs(YARN1_ERROR_SAMPLE)).toEqual( + `YARN1 error: Couldn't find any versions for "react" that matches "28.2.0"` + ); + }); + + it('should show unknown yarn1 error', () => { + const YARN1_ERROR_SAMPLE = dedent` + yarn install v1.22.19 + [1/4] 🔍 Resolving packages... + info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command. + `; + + expect(yarn1Proxy.parseErrorFromLogs(YARN1_ERROR_SAMPLE)).toEqual(`YARN1 error`); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts index 00de17ded091..3793b7f54528 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts @@ -1,3 +1,9 @@ +import dedent from 'ts-dedent'; +import { sync as findUpSync } from 'find-up'; +import { existsSync, readFileSync } from 'fs'; +import path from 'path'; +import semver from 'semver'; +import { createLogStream } from '../utils'; import { JsPackageManager } from './JsPackageManager'; import type { PackageJson } from './PackageJson'; import type { InstallationMetadata, PackageMetadata } from './types'; @@ -18,6 +24,8 @@ export type Yarn1ListOutput = { data: Yarn1ListData; }; +const YARN1_ERROR_REGEX = /^error\s(.*)$/gm; + export class Yarn1Proxy extends JsPackageManager { readonly type = 'yarn1'; @@ -55,6 +63,30 @@ export class Yarn1Proxy extends JsPackageManager { return this.executeCommand({ command: `yarn`, args: [command, ...args], cwd }); } + public async getPackageJSON( + packageName: string, + basePath = this.cwd + ): Promise { + const packageJsonPath = await findUpSync( + (dir) => { + const possiblePath = path.join(dir, 'node_modules', packageName, 'package.json'); + return existsSync(possiblePath) ? possiblePath : undefined; + }, + { cwd: basePath } + ); + + if (!packageJsonPath) { + return null; + } + + return JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as Record; + } + + public async getPackageVersion(packageName: string, basePath = this.cwd): Promise { + const packageJson = await this.getPackageJSON(packageName, basePath); + return packageJson ? semver.coerce(packageJson.version)?.version ?? null : null; + } + public async findInstallations(pattern: string[]) { const commandResult = await this.executeCommand({ command: 'yarn', @@ -93,11 +125,29 @@ export class Yarn1Proxy extends JsPackageManager { args = ['-D', ...args]; } - await this.executeCommand({ - command: 'yarn', - args: ['add', ...this.getInstallArgs(), ...args], - stdio: 'inherit', - }); + const { logStream, readLogFile, moveLogFile, removeLogFile } = await createLogStream(); + + try { + await this.executeCommand({ + command: 'yarn', + args: ['add', ...this.getInstallArgs(), ...args], + stdio: ['ignore', logStream, logStream], + }); + } catch (err) { + const stdout = await readLogFile(); + + const errorMessage = this.parseErrorFromLogs(stdout); + + await moveLogFile(); + + throw new Error( + dedent`${errorMessage} + + Please check the logfile generated at ./storybook.log for troubleshooting and try again.` + ); + } + + await removeLogFile(); } protected async runRemoveDeps(dependencies: string[]) { @@ -170,4 +220,18 @@ export class Yarn1Proxy extends JsPackageManager { throw new Error('Something went wrong while parsing yarn output'); } + + public parseErrorFromLogs(logs: string): string { + let finalMessage = 'YARN1 error'; + const match = logs.match(YARN1_ERROR_REGEX); + + if (match) { + const errorMessage = match[0]?.replace(/^error\s(.*)$/, '$1'); + if (errorMessage) { + finalMessage = `${finalMessage}: ${errorMessage}`; + } + } + + return finalMessage.trim(); + } } diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts index f875254a6858..51e5c1235cd4 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts @@ -1,3 +1,4 @@ +import dedent from 'ts-dedent'; import { Yarn2Proxy } from './Yarn2Proxy'; describe('Yarn 2 Proxy', () => { @@ -271,4 +272,37 @@ describe('Yarn 2 Proxy', () => { `); }); }); + + describe('parseErrors', () => { + it('should parse yarn2 errors', () => { + const YARN2_ERROR_SAMPLE = ` + ➤ YN0000: ┌ Resolution step + ➤ YN0001: │ Error: react@npm:28.2.0: No candidates found + at ge (/Users/yannbraga/.cache/node/corepack/yarn/3.5.1/yarn.js:439:8124) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + at async Promise.allSettled (index 8) + at async io (/Users/yannbraga/.cache/node/corepack/yarn/3.5.1/yarn.js:390:10398) + ➤ YN0000: └ Completed in 2s 369ms + ➤ YN0000: Failed with errors in 2s 372ms + ➤ YN0032: fsevents@npm:2.3.2: Implicit dependencies on node-gyp are discouraged + ➤ YN0061: @npmcli/move-file@npm:2.0.1 is deprecated: This functionality has been moved to @npmcli/fs + `; + + expect(yarn2Proxy.parseErrorFromLogs(YARN2_ERROR_SAMPLE)).toEqual( + 'YARN2 error YN0001 - EXCEPTION: react@npm:28.2.0: No candidates found' + ); + }); + + it('should show unknown yarn2 error', () => { + const YARN2_ERROR_SAMPLE = dedent` + ➤ YN0000: ┌ Resolution step + ➤ YN0000: └ Completed in 2s 369ms + ➤ YN0000: Failed with errors in 2s 372ms + ➤ YN0032: fsevents@npm:2.3.2: Implicit dependencies on node-gyp are discouraged + ➤ YN0061: @npmcli/move-file@npm:2.0.1 is deprecated: This functionality has been moved to @npmcli/fs + `; + + expect(yarn2Proxy.parseErrorFromLogs(YARN2_ERROR_SAMPLE)).toEqual(`YARN2 error`); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts index 7005052b0d0a..a4d4484f554e 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts @@ -1,8 +1,71 @@ +import dedent from 'ts-dedent'; +import { sync as findUpSync, sync as syncFindUp } from 'find-up'; +import { existsSync, readFileSync } from 'fs'; +import path from 'path'; +import { PosixFS, VirtualFS, ZipOpenFS } from '@yarnpkg/fslib'; +import { getLibzipSync } from '@yarnpkg/libzip'; +import semver from 'semver'; +import { createLogStream } from '../utils'; import { JsPackageManager } from './JsPackageManager'; import type { PackageJson } from './PackageJson'; import type { InstallationMetadata, PackageMetadata } from './types'; import { parsePackageData } from './util'; +const YARN2_ERROR_REGEX = /(YN\d{4}):.*?Error:\s+(.*)/i; +const YARN2_ERROR_CODES = { + YN0000: 'UNNAMED', + YN0001: 'EXCEPTION', + YN0002: 'MISSING_PEER_DEPENDENCY', + YN0003: 'CYCLIC_DEPENDENCIES', + YN0004: 'DISABLED_BUILD_SCRIPTS', + YN0005: 'BUILD_DISABLED', + YN0006: 'SOFT_LINK_BUILD', + YN0007: 'MUST_BUILD', + YN0008: 'MUST_REBUILD', + YN0009: 'BUILD_FAILED', + YN0010: 'RESOLVER_NOT_FOUND', + YN0011: 'FETCHER_NOT_FOUND', + YN0012: 'LINKER_NOT_FOUND', + YN0013: 'FETCH_NOT_CACHED', + YN0014: 'YARN_IMPORT_FAILED', + YN0015: 'REMOTE_INVALID', + YN0016: 'REMOTE_NOT_FOUND', + YN0017: 'RESOLUTION_PACK', + YN0018: 'CACHE_CHECKSUM_MISMATCH', + YN0019: 'UNUSED_CACHE_ENTRY', + YN0020: 'MISSING_LOCKFILE_ENTRY', + YN0021: 'WORKSPACE_NOT_FOUND', + YN0022: 'TOO_MANY_MATCHING_WORKSPACES', + YN0023: 'CONSTRAINTS_MISSING_DEPENDENCY', + YN0024: 'CONSTRAINTS_INCOMPATIBLE_DEPENDENCY', + YN0025: 'CONSTRAINTS_EXTRANEOUS_DEPENDENCY', + YN0026: 'CONSTRAINTS_INVALID_DEPENDENCY', + YN0027: 'CANT_SUGGEST_RESOLUTIONS', + YN0028: 'FROZEN_LOCKFILE_EXCEPTION', + YN0029: 'CROSS_DRIVE_VIRTUAL_LOCAL', + YN0030: 'FETCH_FAILED', + YN0031: 'DANGEROUS_NODE_MODULES', + YN0032: 'NODE_GYP_INJECTED', + YN0046: 'AUTOMERGE_FAILED_TO_PARSE', + YN0047: 'AUTOMERGE_IMMUTABLE', + YN0048: 'AUTOMERGE_SUCCESS', + YN0049: 'AUTOMERGE_REQUIRED', + YN0050: 'DEPRECATED_CLI_SETTINGS', + YN0059: 'INVALID_RANGE_PEER_DEPENDENCY', + YN0060: 'INCOMPATIBLE_PEER_DEPENDENCY', + YN0061: 'DEPRECATED_PACKAGE', + YN0062: 'INCOMPATIBLE_OS', + YN0063: 'INCOMPATIBLE_CPU', + YN0068: 'UNUSED_PACKAGE_EXTENSION', + YN0069: 'REDUNDANT_PACKAGE_EXTENSION', + YN0071: 'NM_CANT_INSTALL_EXTERNAL_SOFT_LINK', + YN0072: 'NM_PRESERVE_SYMLINKS_REQUIRED', + YN0074: 'NM_HARDLINKS_MODE_DOWNGRADED', + YN0075: 'PROLOG_INSTANTIATION_ERROR', + YN0076: 'INCOMPATIBLE_ARCHITECTURE', + YN0077: 'GHOST_ARCHITECTURE', +}; + // This encompasses both yarn 2 and yarn 3 export class Yarn2Proxy extends JsPackageManager { readonly type = 'yarn2'; @@ -60,6 +123,60 @@ export class Yarn2Proxy extends JsPackageManager { } } + async getPackageJSON(packageName: string, basePath = this.cwd): Promise { + const pnpapiPath = findUpSync(['.pnp.js', '.pnp.cjs'], { cwd: basePath }); + + if (pnpapiPath) { + try { + // eslint-disable-next-line import/no-dynamic-require, global-require + const pnpApi = require(pnpapiPath); + + const resolvedPath = await pnpApi.resolveToUnqualified(packageName, basePath, { + considerBuiltins: false, + }); + + const pkgLocator = pnpApi.findPackageLocator(resolvedPath); + const pkg = pnpApi.getPackageInformation(pkgLocator); + + const zipOpenFs = new ZipOpenFS({ + libzip: getLibzipSync(), + }); + + const virtualFs = new VirtualFS({ baseFs: zipOpenFs }); + const crossFs = new PosixFS(virtualFs); + + const virtualPath = path.join(pkg.packageLocation, 'package.json'); + + return crossFs.readJsonSync(virtualPath); + } catch (error) { + if (error.code !== 'MODULE_NOT_FOUND') { + console.error('Error while fetching package version in Yarn PnP mode:', error); + } + return null; + } + } + + const packageJsonPath = await syncFindUp( + (dir) => { + const possiblePath = path.join(dir, 'node_modules', packageName, 'package.json'); + return existsSync(possiblePath) ? possiblePath : undefined; + }, + { cwd: basePath } + ); + + if (!packageJsonPath) { + return null; + } + + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + return packageJson; + } + + async getPackageVersion(packageName: string, basePath = this.cwd): Promise { + const packageJSON = await this.getPackageJSON(packageName, basePath); + return packageJSON ? semver.coerce(packageJSON.version)?.version ?? null : null; + } + protected getResolutions(packageJson: PackageJson, versions: Record) { return { resolutions: { @@ -84,11 +201,29 @@ export class Yarn2Proxy extends JsPackageManager { args = ['-D', ...args]; } - await this.executeCommand({ - command: 'yarn', - args: ['add', ...this.getInstallArgs(), ...args], - stdio: 'inherit', - }); + const { logStream, readLogFile, moveLogFile, removeLogFile } = await createLogStream(); + + try { + await this.executeCommand({ + command: 'yarn', + args: ['add', ...this.getInstallArgs(), ...args], + stdio: ['ignore', logStream, logStream], + }); + } catch (err) { + const stdout = await readLogFile(); + + const errorMessage = this.parseErrorFromLogs(stdout); + + await moveLogFile(); + + throw new Error( + dedent`${errorMessage} + + Please check the logfile generated at ./storybook.log for troubleshooting and try again.` + ); + } + + await removeLogFile(); } protected async runRemoveDeps(dependencies: string[]) { @@ -153,4 +288,28 @@ export class Yarn2Proxy extends JsPackageManager { infoCommand: 'yarn why', }; } + + public parseErrorFromLogs(logs: string): string { + let finalMessage = 'YARN2 error'; + const match = logs.match(YARN2_ERROR_REGEX); + + if (match) { + const errorCode = match[1] as keyof typeof YARN2_ERROR_CODES; + if (errorCode) { + finalMessage = `${finalMessage} ${errorCode}`; + } + + const errorType = YARN2_ERROR_CODES[errorCode]; + if (errorType) { + finalMessage = `${finalMessage} - ${errorType}`; + } + + const errorMessage = match[2]; + if (errorMessage) { + finalMessage = `${finalMessage}: ${errorMessage}`; + } + } + + return finalMessage.trim(); + } } diff --git a/code/lib/cli/src/link.ts b/code/lib/cli/src/link.ts index cb9d32e99b64..3a61eb02a147 100644 --- a/code/lib/cli/src/link.ts +++ b/code/lib/cli/src/link.ts @@ -1,10 +1,10 @@ import fse from 'fs-extra'; import path from 'path'; -import { sync as spawnSync } from 'cross-spawn'; +import { sync as spawnSync, spawn as spawnAsync } from 'cross-spawn'; import { logger } from '@storybook/node-logger'; -import shell from 'shelljs'; import chalk from 'chalk'; -import type { ExecOptions } from 'shelljs'; + +type ExecOptions = Parameters[2]; interface LinkOptions { target: string; @@ -31,17 +31,14 @@ export const exec = async ( logger.info(command); return new Promise((resolve, reject) => { - const defaultOptions: ExecOptions = { - silent: false, - }; - const child = shell.exec(command, { - ...defaultOptions, + const child = spawnAsync(command, { ...options, - async: true, - silent: false, + shell: true, + stdio: 'pipe', }); - child.stderr.pipe(process.stderr); + child.stderr.pipe(process.stdout); + child.stdout.pipe(process.stdout); child.on('exit', (code) => { if (code === 0) { diff --git a/code/lib/cli/src/project_types.ts b/code/lib/cli/src/project_types.ts index ed6fbc3d7959..25c058dee818 100644 --- a/code/lib/cli/src/project_types.ts +++ b/code/lib/cli/src/project_types.ts @@ -63,8 +63,8 @@ export const SUPPORTED_RENDERERS: SupportedRenderers[] = [ export enum ProjectType { UNDETECTED = 'UNDETECTED', UNSUPPORTED = 'UNSUPPORTED', - REACT_SCRIPTS = 'REACT_SCRIPTS', REACT = 'REACT', + REACT_SCRIPTS = 'REACT_SCRIPTS', REACT_NATIVE = 'REACT_NATIVE', REACT_PROJECT = 'REACT_PROJECT', WEBPACK_REACT = 'WEBPACK_REACT', @@ -275,7 +275,11 @@ export const unsupportedTemplate: TemplateConfiguration = { }, }; -const notInstallableProjectTypes: ProjectType[] = [ProjectType.UNDETECTED, ProjectType.UNSUPPORTED]; +const notInstallableProjectTypes: ProjectType[] = [ + ProjectType.UNDETECTED, + ProjectType.UNSUPPORTED, + ProjectType.NX, +]; export const installableProjectTypes = Object.values(ProjectType) .filter((type) => !notInstallableProjectTypes.includes(type)) diff --git a/code/lib/cli/src/repro-generators/scripts.ts b/code/lib/cli/src/repro-generators/scripts.ts index f47050163209..2aa59fc2ee40 100644 --- a/code/lib/cli/src/repro-generators/scripts.ts +++ b/code/lib/cli/src/repro-generators/scripts.ts @@ -1,9 +1,9 @@ import path from 'path'; -import { readJSON, writeJSON, outputFile } from 'fs-extra'; -import type { ExecOptions } from 'shelljs'; -import shell from 'shelljs'; +import { readJSON, writeJSON, outputFile, remove } from 'fs-extra'; import chalk from 'chalk'; import { command } from 'execa'; +import type spawn from 'cross-spawn'; +import { spawn as spawnAsync } from 'cross-spawn'; import { cra, cra_typescript } from './configs'; import storybookVersions from '../versions'; @@ -42,6 +42,8 @@ interface Configuration { registry?: string; } +type ExecOptions = globalThis.Parameters[2]; + export interface Options extends Parameters { appName: string; creationPath: string; @@ -69,24 +71,21 @@ export const exec = async ( logger.debug(command); return new Promise((resolve, reject) => { - const defaultOptions: ExecOptions = { - silent: false, - }; - const child = shell.exec(command, { - ...defaultOptions, + const child = spawnAsync(command, { ...options, - async: true, - silent: false, + shell: true, + stdio: 'pipe', }); - child.stderr.pipe(process.stderr); + child.stderr.pipe(process.stdout); + child.stdout.pipe(process.stdout); child.on('exit', (code) => { if (code === 0) { resolve(undefined); } else { logger.error(chalk.red(`An error occurred while executing: \`${command}\``)); - logger.log(errorMessage); + logger.info(errorMessage); reject(new Error(`command exited with code: ${code}: `)); } }); @@ -106,7 +105,10 @@ const addLocalPackageResolutions = async ({ cwd }: Options) => { const packageJsonPath = path.join(cwd, 'package.json'); const packageJson = await readJSON(packageJsonPath); const workspaceDir = path.join(__dirname, '..', '..', '..', '..', '..'); - const { stdout } = await command('yarn workspaces list --json', { cwd: workspaceDir }); + const { stdout } = await command('yarn workspaces list --json', { + cwd: workspaceDir, + cleanup: true, + }); const workspaces = JSON.parse(`[${stdout.split('\n').join(',')}]`); @@ -148,7 +150,7 @@ const configureYarn2ForE2E = async ({ cwd }: Options) => { // eslint-disable-next-line @typescript-eslint/no-shadow const command = [ // ⚠️ Need to set registry because Yarn 2 is not using the conf of Yarn 1 (URL is hardcoded in CircleCI config.yml) - `yarn config set npmScopes --json '{ "storybook": { "npmRegistryServer": "http://localhost:6001/" } }'`, + `yarn config set npmRegistryServer http://localhost:6001/`, // Some required magic to be able to fetch deps from local registry `yarn config set unsafeHttpWhitelist --json '["localhost"]'`, // Disable fallback mode to make sure everything is required correctly @@ -221,7 +223,10 @@ const initStorybook = async ({ cwd, autoDetect = true, name, e2e, pnp }: Options const addRequiredDeps = async ({ cwd, additionalDeps }: Options) => { // Remove any lockfile generated without Yarn 2 - shell.rm('-f', path.join(cwd, 'package-lock.json'), path.join(cwd, 'yarn.lock')); + await Promise.all([ + remove(path.join(cwd, 'package-lock.json')), + remove(path.join(cwd, 'yarn.lock')), + ]); // eslint-disable-next-line @typescript-eslint/no-shadow const command = diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index 07b294eec7f5..bbfdaef49ef6 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -6,8 +6,13 @@ export type SkippableTask = | 'test-runner-dev' | 'chromatic' | 'e2e-tests' - | 'e2e-tests-dev'; -export type TemplateKey = keyof typeof baseTemplates | keyof typeof internalTemplates; + | 'e2e-tests-dev' + | 'bench'; + +export type TemplateKey = + | keyof typeof baseTemplates + | keyof typeof internalTemplates + | keyof typeof benchTemplates; export type Cadence = keyof typeof templatesByCadence; export type Template = { @@ -55,7 +60,9 @@ export type Template = { * such as extend main.js, for setting specific feature flags like storyStoreV7, etc. */ modifications?: { + skipTemplateStories?: boolean; mainConfig?: Partial; + disableDocs?: boolean; }; /** * Flag to indicate that this template is a secondary template, which is used mainly to test rather specific features. @@ -67,20 +74,20 @@ export type Template = { const baseTemplates = { 'cra/default-js': { name: 'Create React App (Javascript)', - script: 'npx create-react-app .', + script: 'npx create-react-app {{beforeDir}}', expected: { // TODO: change this to @storybook/cra once that package is created framework: '@storybook/react-webpack5', renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'cra/default-ts': { name: 'Create React App (Typescript)', - script: 'npx create-react-app . --template typescript', + script: 'npx create-react-app {{beforeDir}} --template typescript', // Re-enable once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test'], + skipTasks: ['smoke-test', 'bench'], expected: { // TODO: change this to @storybook/cra once that package is created framework: '@storybook/react-webpack5', @@ -97,7 +104,7 @@ const baseTemplates = { renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'nextjs/default-js': { name: 'Next.js (JavaScript)', @@ -107,7 +114,7 @@ const baseTemplates = { renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'nextjs/default-ts': { name: 'Next.js (TypeScript)', @@ -117,50 +124,52 @@ const baseTemplates = { renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'react-vite/default-js': { name: 'React Vite (JS)', - script: 'npm create vite@latest --yes . -- --template react', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template react', expected: { framework: '@storybook/react-vite', renderer: '@storybook/react', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'react-vite/default-ts': { name: 'React Vite (TS)', - script: 'npm create vite@latest --yes . -- --template react-ts', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template react-ts', expected: { framework: '@storybook/react-vite', renderer: '@storybook/react', builder: '@storybook/builder-vite', }, + skipTasks: ['bench'], }, 'react-webpack/18-ts': { name: 'React 18 Webpack5 (TS)', - script: 'yarn create webpack5-react .', + script: 'yarn create webpack5-react {{beforeDir}}', expected: { framework: '@storybook/react-webpack5', renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'react-webpack/17-ts': { name: 'React 17 Webpack5 (TS)', - script: 'yarn create webpack5-react . --version-react="17" --version-react-dom="17"', + script: + 'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"', expected: { framework: '@storybook/react-webpack5', renderer: '@storybook/react', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'solid-vite/default-js': { name: 'SolidJS Vite (JS)', - script: 'npx degit solidjs/templates/js .', + script: 'npx degit solidjs/templates/js {{beforeDir}}', expected: { framework: 'storybook-solidjs-vite', renderer: 'storybook-solidjs', @@ -168,11 +177,11 @@ const baseTemplates = { }, // TODO: remove this once solid-vite framework is released inDevelopment: true, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'solid-vite/default-ts': { name: 'SolidJS Vite (TS)', - script: 'npx degit solidjs/templates/ts .', + script: 'npx degit solidjs/templates/ts {{beforeDir}}', expected: { framework: 'storybook-solidjs-vite', renderer: 'storybook-solidjs', @@ -180,27 +189,27 @@ const baseTemplates = { }, // TODO: remove this once solid-vite framework is released inDevelopment: true, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'vue3-vite/default-js': { name: 'Vue3 Vite (JS)', - script: 'npm create vite@latest --yes . -- --template vue', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template vue', expected: { framework: '@storybook/vue3-vite', renderer: '@storybook/vue3', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'vue3-vite/default-ts': { name: 'Vue3 Vite (TS)', - script: 'npm create vite@latest --yes . -- --template vue-ts', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template vue-ts', expected: { framework: '@storybook/vue3-vite', renderer: '@storybook/vue3', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'vue2-vite/2.7-js': { name: 'Vue2 Vite (vue 2.7 JS)', @@ -211,209 +220,209 @@ const baseTemplates = { builder: '@storybook/builder-vite', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'html-webpack/default': { name: 'HTML Webpack5', - script: 'yarn create webpack5-html .', + script: 'yarn create webpack5-html {{beforeDir}}', expected: { framework: '@storybook/html-webpack5', renderer: '@storybook/html', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'html-vite/default-js': { name: 'HTML Vite JS', script: - 'npm create vite@latest --yes . -- --template vanilla && echo "export default {}" > vite.config.js', + 'npm create vite@latest --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js', expected: { framework: '@storybook/html-vite', renderer: '@storybook/html', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'html-vite/default-ts': { name: 'HTML Vite TS', script: - 'npm create vite@latest --yes . -- --template vanilla-ts && echo "export default {}" > vite.config.js', + 'npm create vite@latest --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js', expected: { framework: '@storybook/html-vite', renderer: '@storybook/html', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'svelte-vite/default-js': { name: 'Svelte Vite (JS)', - script: 'npm create vite@latest --yes . -- --template svelte', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template svelte', expected: { framework: '@storybook/svelte-vite', renderer: '@storybook/svelte', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'svelte-vite/default-ts': { name: 'Svelte Vite (TS)', - script: 'npm create vite@latest --yes . -- --template svelte-ts', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template svelte-ts', expected: { framework: '@storybook/svelte-vite', renderer: '@storybook/svelte', builder: '@storybook/builder-vite', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'angular-cli/prerelease': { name: 'Angular CLI (Prerelease)', script: - 'npx -p @angular/cli@next ng new angular-v16 --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', + 'npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', expected: { framework: '@storybook/angular', renderer: '@storybook/angular', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'angular-cli/default-ts': { name: 'Angular CLI (latest)', script: - 'npx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', + 'npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', expected: { framework: '@storybook/angular', renderer: '@storybook/angular', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, - 'angular-cli/14-ts': { - name: 'Angular CLI (Version 14)', + 'angular-cli/15-ts': { + name: 'Angular CLI (Version 15)', script: - 'npx -p @angular/cli@14 ng new angular-v14 --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', + 'npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', expected: { framework: '@storybook/angular', renderer: '@storybook/angular', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'svelte-kit/skeleton-js': { name: 'Svelte Kit (JS)', script: - 'yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory=. --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest', + 'yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest', expected: { framework: '@storybook/sveltekit', renderer: '@storybook/svelte', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'svelte-kit/skeleton-ts': { name: 'Svelte Kit (TS)', script: - 'yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory=. --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest', + 'yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest', expected: { framework: '@storybook/sveltekit', renderer: '@storybook/svelte', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'lit-vite/default-js': { name: 'Lit Vite (JS)', script: - 'npm create vite@latest --yes . -- --template lit && echo "export default {}" > vite.config.js', + 'npm create vite@latest --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js', expected: { framework: '@storybook/web-components-vite', renderer: '@storybook/web-components', builder: '@storybook/builder-vite', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'lit-vite/default-ts': { name: 'Lit Vite (TS)', script: - 'npm create vite@latest --yes . -- --template lit-ts && echo "export default {}" > vite.config.js', + 'npm create vite@latest --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js', expected: { framework: '@storybook/web-components-vite', renderer: '@storybook/web-components', builder: '@storybook/builder-vite', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'vue-cli/default-js': { name: 'Vue-CLI (Default JS)', script: - 'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge && echo "module.exports = {}" > webpack.config.js', + 'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', expected: { framework: '@storybook/vue3-webpack5', renderer: '@storybook/vue3', builder: '@storybook/builder-webpack5', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'vue-cli/vue2-default-js': { name: 'Vue-CLI (Vue2 JS)', script: - 'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge --preset="Default (Vue 2)" && echo "module.exports = {}" > webpack.config.js', + 'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge --preset="Default (Vue 2)" && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', expected: { framework: '@storybook/vue-webpack5', renderer: '@storybook/vue', builder: '@storybook/builder-webpack5', }, // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. - skipTasks: ['smoke-test', 'e2e-tests-dev'], + skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, 'preact-webpack5/default-js': { name: 'Preact CLI (Default JS)', script: - 'npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install && echo "module.exports = {}" > webpack.config.js', + 'npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', expected: { framework: '@storybook/preact-webpack5', renderer: '@storybook/preact', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'preact-webpack5/default-ts': { name: 'Preact CLI (Default TS)', script: - 'npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install && echo "module.exports = {}" > webpack.config.js', + 'npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', expected: { framework: '@storybook/preact-webpack5', renderer: '@storybook/preact', builder: '@storybook/builder-webpack5', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'preact-vite/default-js': { name: 'Preact Vite (JS)', - script: 'npm create vite@latest --yes . -- --template preact', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template preact', expected: { framework: '@storybook/preact-vite', renderer: '@storybook/preact', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'preact-vite/default-ts': { name: 'Preact Vite (TS)', - script: 'npm create vite@latest --yes . -- --template preact-ts', + script: 'npm create vite@latest --yes {{beforeDir}} -- --template preact-ts', expected: { framework: '@storybook/preact-vite', renderer: '@storybook/preact', builder: '@storybook/builder-vite', }, - skipTasks: ['e2e-tests-dev'], + skipTasks: ['e2e-tests-dev', 'bench'], }, 'qwik-vite/default-ts': { name: 'Qwik CLI (Default TS)', - script: 'yarn create qwik basic {{beforeDir}} --no-install', + script: 'yarn create qwik basic {{beforeDir}}', // TODO: The community template does not provide standard stories, which is required for e2e tests. Reenable once it does. inDevelopment: true, expected: { @@ -422,7 +431,7 @@ const baseTemplates = { builder: 'storybook-framework-qwik', }, // TODO: The community template does not provide standard stories, which is required for e2e tests. - skipTasks: ['e2e-tests', 'e2e-tests-dev'], + skipTasks: ['e2e-tests', 'e2e-tests-dev', 'bench'], }, } satisfies Record; @@ -444,6 +453,7 @@ const internalTemplates = { }, }, }, + skipTasks: ['bench'], }, 'internal/ssv6-webpack': { ...baseTemplates['cra/default-ts'], @@ -457,17 +467,37 @@ const internalTemplates = { }, }, }, + skipTasks: ['bench'], + }, + 'internal/swc-webpack': { + ...baseTemplates['react-webpack/18-ts'], + name: 'SWC (react-webpack/18-ts)', + isInternal: true, + inDevelopment: true, + modifications: { + mainConfig: { + framework: { + name: '@storybook/react-webpack5', + options: { + builder: { + useSWC: true, + }, + }, + }, + }, + }, + skipTasks: ['bench'], }, 'internal/server-webpack5': { name: 'Server Webpack5', - script: 'yarn init -y', + script: 'yarn init -y && echo "module.exports = {}" > webpack.config.js', expected: { framework: '@storybook/server-webpack5', renderer: '@storybook/server', builder: '@storybook/builder-webpack5', }, isInternal: true, - inDevelopment: true, + skipTasks: ['bench'], }, // 'internal/pnp': { // ...baseTemplates['cra/default-ts'], @@ -478,14 +508,46 @@ const internalTemplates = { // }, } satisfies Record<`internal/${string}`, Template & { isInternal: true }>; +const benchTemplates = { + 'bench/react-vite-default-ts': { + ...baseTemplates['react-vite/default-ts'], + name: 'Bench (react-vite/default-ts)', + isInternal: true, + modifications: { + skipTemplateStories: true, + }, + skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'], + }, + 'bench/react-webpack-18-ts': { + ...baseTemplates['react-webpack/18-ts'], + name: 'Bench (react-webpack/18-ts)', + isInternal: true, + modifications: { + skipTemplateStories: true, + }, + skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'], + }, + 'bench/react-vite-default-ts-nodocs': { + ...baseTemplates['react-vite/default-ts'], + name: 'Bench (react-vite/default-ts, no docs)', + isInternal: true, + modifications: { + skipTemplateStories: true, + disableDocs: true, + }, + skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'], + }, +} satisfies Record<`bench/${string}`, Template & { isInternal: true }>; + export const allTemplates: Record = { ...baseTemplates, ...internalTemplates, + ...benchTemplates, }; -export const ci: TemplateKey[] = ['cra/default-ts', 'react-vite/default-ts']; -export const pr: TemplateKey[] = [ - ...ci, +export const normal: TemplateKey[] = [ + 'cra/default-ts', + 'react-vite/default-ts', 'angular-cli/default-ts', 'vue3-vite/default-ts', 'vue-cli/vue2-default-js', @@ -493,12 +555,15 @@ export const pr: TemplateKey[] = [ 'svelte-vite/default-ts', 'svelte-kit/skeleton-ts', 'nextjs/default-ts', + 'bench/react-vite-default-ts', + 'bench/react-webpack-18-ts', + 'bench/react-vite-default-ts-nodocs', ]; export const merged: TemplateKey[] = [ - ...pr, + ...normal, 'react-webpack/18-ts', 'react-webpack/17-ts', - 'angular-cli/14-ts', + 'angular-cli/15-ts', 'preact-webpack5/default-ts', 'preact-vite/default-ts', 'html-webpack/default', @@ -525,4 +590,4 @@ export const daily: TemplateKey[] = [ 'html-vite/default-js', ]; -export const templatesByCadence = { ci, pr, merged, daily }; +export const templatesByCadence = { normal, merged, daily }; diff --git a/code/lib/cli/src/upgrade.test.ts b/code/lib/cli/src/upgrade.test.ts index 43cb2459d9f8..1110946e0b2b 100644 --- a/code/lib/cli/src/upgrade.test.ts +++ b/code/lib/cli/src/upgrade.test.ts @@ -1,4 +1,4 @@ -import { addExtraFlags, getStorybookVersion, isCorePackage } from './upgrade'; +import { addExtraFlags, addNxPackagesToReject, getStorybookVersion } from './upgrade'; describe.each([ ['│ │ │ ├── @babel/code-frame@7.10.3 deduped', null], @@ -21,20 +21,6 @@ describe.each([ }); }); -describe.each([ - ['@storybook/react', true], - ['@storybook/node-logger', true], - ['@storybook/addon-info', true], - ['@storybook/something-random', true], - ['@storybook/preset-create-react-app', false], - ['@storybook/linter-config', false], - ['@storybook/design-system', false], -])('isCorePackage', (input, output) => { - it(`${input}`, () => { - expect(isCorePackage(input)).toEqual(output); - }); -}); - describe('extra flags', () => { const extraFlags = { 'react-scripts@<5': ['--foo'], @@ -70,3 +56,33 @@ describe('extra flags', () => { ).toEqual([]); }); }); + +describe('addNxPackagesToReject', () => { + it('reject exists and is in regex pattern', () => { + const flags = ['--reject', '/preset-create-react-app/', '--some-flag', 'hello']; + expect(addNxPackagesToReject(flags)).toMatchObject([ + '--reject', + '/(preset-create-react-app|@nrwl/storybook|@nx/storybook)/', + '--some-flag', + 'hello', + ]); + }); + it('reject exists and is in unknown pattern', () => { + const flags = ['--some-flag', 'hello', '--reject', '@storybook/preset-create-react-app']; + expect(addNxPackagesToReject(flags)).toMatchObject([ + '--some-flag', + 'hello', + '--reject', + '@storybook/preset-create-react-app,@nrwl/storybook,@nx/storybook', + ]); + }); + it('reject does not exist', () => { + const flags = ['--some-flag', 'hello']; + expect(addNxPackagesToReject(flags)).toMatchObject([ + '--some-flag', + 'hello', + '--reject', + '@nrwl/storybook,@nx/storybook', + ]); + }); +}); diff --git a/code/lib/cli/src/upgrade.ts b/code/lib/cli/src/upgrade.ts index c76d409e9978..dd31f177df53 100644 --- a/code/lib/cli/src/upgrade.ts +++ b/code/lib/cli/src/upgrade.ts @@ -8,6 +8,7 @@ import type { PackageJsonWithMaybeDeps, PackageManagerName } from './js-package- import { getPackageDetails, JsPackageManagerFactory, useNpmWarning } from './js-package-manager'; import { commandLog } from './helpers'; import { automigrate } from './automigrate'; +import { isCorePackage } from './utils'; type Package = { package: string; @@ -25,33 +26,6 @@ export const getStorybookVersion = (line: string) => { }; }; -const excludeList = [ - '@storybook/addon-bench', - '@storybook/addon-console', - '@storybook/addon-postcss', - '@storybook/babel-plugin-require-context-hook', - '@storybook/bench', - '@storybook/builder-vite', - '@storybook/csf', - '@storybook/design-system', - '@storybook/ember-cli-storybook', - '@storybook/eslint-config-storybook', - '@storybook/expect', - '@storybook/jest', - '@storybook/linter-config', - '@storybook/mdx1-csf', - '@storybook/mdx2-csf', - '@storybook/react-docgen-typescript-plugin', - '@storybook/storybook-deployer', - '@storybook/test-runner', - '@storybook/testing-library', - '@storybook/testing-react', -]; -export const isCorePackage = (pkg: string) => - pkg.startsWith('@storybook/') && - !pkg.startsWith('@storybook/preset-') && - !excludeList.includes(pkg); - const deprecatedPackages = [ { minVersion: '6.0.0-alpha.0', @@ -135,6 +109,28 @@ export const addExtraFlags = ( ); }; +export const addNxPackagesToReject = (flags: string[]) => { + const newFlags = [...flags]; + const index = flags.indexOf('--reject'); + if (index > -1) { + // Try to understand if it's in the format of a regex pattern + if (newFlags[index + 1].endsWith('/') && newFlags[index + 1].startsWith('/')) { + // Remove last and first slash so that I can add the parentheses + newFlags[index + 1] = newFlags[index + 1].substring(1, newFlags[index + 1].length - 1); + newFlags[index + 1] = `/(${newFlags[index + 1]}|@nrwl/storybook|@nx/storybook)/`; + } else { + // Adding the two packages as comma-separated values + // If the existing rejects are in regex format, they will be ignored. + // Maybe we need to find a more robust way to treat rejects? + newFlags[index + 1] = `${newFlags[index + 1]},@nrwl/storybook,@nx/storybook`; + } + } else { + newFlags.push('--reject'); + newFlags.push('@nrwl/storybook,@nx/storybook'); + } + return newFlags; +}; + export interface UpgradeOptions { tag: string; prerelease: boolean; @@ -190,6 +186,7 @@ export const doUpgrade = async ({ flags.push('--target'); flags.push(target); flags = addExtraFlags(EXTRA_FLAGS, flags, await packageManager.retrievePackageJson()); + flags = addNxPackagesToReject(flags); const check = spawnSync('npx', ['npm-check-updates@latest', '/storybook/', ...flags], { stdio: 'pipe', shell: true, diff --git a/code/lib/cli/src/utils.test.ts b/code/lib/cli/src/utils.test.ts new file mode 100644 index 000000000000..6d7dd9fe9eae --- /dev/null +++ b/code/lib/cli/src/utils.test.ts @@ -0,0 +1,21 @@ +import { isCorePackage } from './utils'; + +describe('UTILS', () => { + describe.each([ + ['@storybook/react', true], + ['@storybook/node-logger', true], + ['@storybook/addon-info', true], + ['@storybook/something-random', true], + ['@storybook/preset-create-react-app', false], + ['@storybook/linter-config', false], + ['@storybook/design-system', false], + ['@storybook/addon-styling', false], + ['@storybook/addon-styling-webpack', false], + ['@nx/storybook', false], + ['@nrwl/storybook', false], + ])('isCorePackage', (input, output) => { + it(`It should return "${output}" when given "${input}"`, () => { + expect(isCorePackage(input)).toEqual(output); + }); + }); +}); diff --git a/code/lib/cli/src/utils.ts b/code/lib/cli/src/utils.ts index 4650fd055dcf..b7d9ac811760 100644 --- a/code/lib/cli/src/utils.ts +++ b/code/lib/cli/src/utils.ts @@ -1,3 +1,10 @@ +import type { WriteStream } from 'fs-extra'; +import { move, remove, writeFile, readFile, createWriteStream } from 'fs-extra'; +import { join } from 'path'; +import tempy from 'tempy'; +import { rendererPackages } from '@storybook/core-common'; +import type { JsPackageManager } from './js-package-manager'; + export function parseList(str: string): string[] { return str .split(',') @@ -5,6 +12,19 @@ export function parseList(str: string): string[] { .filter((item) => item.length > 0); } +export async function getStorybookVersion(packageManager: JsPackageManager) { + const packages = ( + await Promise.all( + Object.keys(rendererPackages).map(async (pkg) => ({ + name: pkg, + version: await packageManager.getPackageVersion(pkg), + })) + ) + ).filter(({ version }) => !!version); + + return packages[0]?.version; +} + export function getEnvConfig(program: Record, configEnv: Record): void { Object.keys(configEnv).forEach((fieldName) => { const envVarName = configEnv[fieldName]; @@ -15,3 +35,96 @@ export function getEnvConfig(program: Record, configEnv: Record Promise; + removeLogFile: () => Promise; + clearLogFile: () => Promise; + readLogFile: () => Promise; + logStream: WriteStream; +}> => { + const finalLogPath = join(process.cwd(), logFileName); + const temporaryLogPath = tempy.file({ name: logFileName }); + + const logStream = createWriteStream(temporaryLogPath, { encoding: 'utf8' }); + + return new Promise((resolve, reject) => { + logStream.once('open', () => { + const moveLogFile = async () => move(temporaryLogPath, finalLogPath, { overwrite: true }); + const clearLogFile = async () => writeFile(temporaryLogPath, ''); + const removeLogFile = async () => remove(temporaryLogPath); + const readLogFile = async () => { + return readFile(temporaryLogPath, 'utf8'); + }; + resolve({ logStream, moveLogFile, clearLogFile, removeLogFile, readLogFile }); + }); + logStream.once('error', reject); + }); +}; + +const PACKAGES_EXCLUDED_FROM_CORE = [ + '@storybook/addon-bench', + '@storybook/addon-console', + '@storybook/addon-postcss', + '@storybook/addon-styling', + '@storybook/addon-styling-webpack', + '@storybook/babel-plugin-require-context-hook', + '@storybook/bench', + '@storybook/builder-vite', + '@storybook/csf', + '@storybook/design-system', + '@storybook/ember-cli-storybook', + '@storybook/eslint-config-storybook', + '@storybook/expect', + '@storybook/jest', + '@storybook/linter-config', + '@storybook/mdx1-csf', + '@storybook/mdx2-csf', + '@storybook/react-docgen-typescript-plugin', + '@storybook/storybook-deployer', + '@storybook/test-runner', + '@storybook/testing-library', + '@storybook/testing-react', + '@nrwl/storybook', + '@nx/storybook', +]; +export const isCorePackage = (pkg: string) => + pkg.startsWith('@storybook/') && + !pkg.startsWith('@storybook/preset-') && + !PACKAGES_EXCLUDED_FROM_CORE.includes(pkg); diff --git a/code/lib/cli/src/versions.ts b/code/lib/cli/src/versions.ts index d3f4338ece5b..1fb441cd11fc 100644 --- a/code/lib/cli/src/versions.ts +++ b/code/lib/cli/src/versions.ts @@ -1,96 +1,97 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '7.1.0-alpha.17', - '@storybook/addon-actions': '7.1.0-alpha.17', - '@storybook/addon-backgrounds': '7.1.0-alpha.17', - '@storybook/addon-controls': '7.1.0-alpha.17', - '@storybook/addon-docs': '7.1.0-alpha.17', - '@storybook/addon-essentials': '7.1.0-alpha.17', - '@storybook/addon-highlight': '7.1.0-alpha.17', - '@storybook/addon-interactions': '7.1.0-alpha.17', - '@storybook/addon-jest': '7.1.0-alpha.17', - '@storybook/addon-links': '7.1.0-alpha.17', - '@storybook/addon-mdx-gfm': '7.1.0-alpha.17', - '@storybook/addon-measure': '7.1.0-alpha.17', - '@storybook/addon-outline': '7.1.0-alpha.17', - '@storybook/addon-storyshots': '7.1.0-alpha.17', - '@storybook/addon-storyshots-puppeteer': '7.1.0-alpha.17', - '@storybook/addon-storysource': '7.1.0-alpha.17', - '@storybook/addon-toolbars': '7.1.0-alpha.17', - '@storybook/addon-viewport': '7.1.0-alpha.17', - '@storybook/addons': '7.1.0-alpha.17', - '@storybook/angular': '7.1.0-alpha.17', - '@storybook/api': '7.1.0-alpha.17', - '@storybook/blocks': '7.1.0-alpha.17', - '@storybook/builder-manager': '7.1.0-alpha.17', - '@storybook/builder-vite': '7.1.0-alpha.17', - '@storybook/builder-webpack5': '7.1.0-alpha.17', - '@storybook/channel-postmessage': '7.1.0-alpha.17', - '@storybook/channel-websocket': '7.1.0-alpha.17', - '@storybook/channels': '7.1.0-alpha.17', - '@storybook/cli': '7.1.0-alpha.17', - '@storybook/client-api': '7.1.0-alpha.17', - '@storybook/client-logger': '7.1.0-alpha.17', - '@storybook/codemod': '7.1.0-alpha.17', - '@storybook/components': '7.1.0-alpha.17', - '@storybook/core-client': '7.1.0-alpha.17', - '@storybook/core-common': '7.1.0-alpha.17', - '@storybook/core-events': '7.1.0-alpha.17', - '@storybook/core-server': '7.1.0-alpha.17', - '@storybook/core-webpack': '7.1.0-alpha.17', - '@storybook/csf-plugin': '7.1.0-alpha.17', - '@storybook/csf-tools': '7.1.0-alpha.17', - '@storybook/docs-tools': '7.1.0-alpha.17', - '@storybook/ember': '7.1.0-alpha.17', - '@storybook/html': '7.1.0-alpha.17', - '@storybook/html-vite': '7.1.0-alpha.17', - '@storybook/html-webpack5': '7.1.0-alpha.17', - '@storybook/instrumenter': '7.1.0-alpha.17', - '@storybook/manager': '7.1.0-alpha.17', - '@storybook/manager-api': '7.1.0-alpha.17', - '@storybook/nextjs': '7.1.0-alpha.17', - '@storybook/node-logger': '7.1.0-alpha.17', - '@storybook/postinstall': '7.1.0-alpha.17', - '@storybook/preact': '7.1.0-alpha.17', - '@storybook/preact-vite': '7.1.0-alpha.17', - '@storybook/preact-webpack5': '7.1.0-alpha.17', - '@storybook/preset-create-react-app': '7.1.0-alpha.17', - '@storybook/preset-html-webpack': '7.1.0-alpha.17', - '@storybook/preset-preact-webpack': '7.1.0-alpha.17', - '@storybook/preset-react-webpack': '7.1.0-alpha.17', - '@storybook/preset-server-webpack': '7.1.0-alpha.17', - '@storybook/preset-svelte-webpack': '7.1.0-alpha.17', - '@storybook/preset-vue-webpack': '7.1.0-alpha.17', - '@storybook/preset-vue3-webpack': '7.1.0-alpha.17', - '@storybook/preset-web-components-webpack': '7.1.0-alpha.17', - '@storybook/preview': '7.1.0-alpha.17', - '@storybook/preview-api': '7.1.0-alpha.17', - '@storybook/preview-web': '7.1.0-alpha.17', - '@storybook/react': '7.1.0-alpha.17', - '@storybook/react-dom-shim': '7.1.0-alpha.17', - '@storybook/react-vite': '7.1.0-alpha.17', - '@storybook/react-webpack5': '7.1.0-alpha.17', - '@storybook/router': '7.1.0-alpha.17', - '@storybook/server': '7.1.0-alpha.17', - '@storybook/server-webpack5': '7.1.0-alpha.17', - '@storybook/source-loader': '7.1.0-alpha.17', - '@storybook/store': '7.1.0-alpha.17', - '@storybook/svelte': '7.1.0-alpha.17', - '@storybook/svelte-vite': '7.1.0-alpha.17', - '@storybook/svelte-webpack5': '7.1.0-alpha.17', - '@storybook/sveltekit': '7.1.0-alpha.17', - '@storybook/telemetry': '7.1.0-alpha.17', - '@storybook/theming': '7.1.0-alpha.17', - '@storybook/types': '7.1.0-alpha.17', - '@storybook/vue': '7.1.0-alpha.17', - '@storybook/vue-vite': '7.1.0-alpha.17', - '@storybook/vue-webpack5': '7.1.0-alpha.17', - '@storybook/vue3': '7.1.0-alpha.17', - '@storybook/vue3-vite': '7.1.0-alpha.17', - '@storybook/vue3-webpack5': '7.1.0-alpha.17', - '@storybook/web-components': '7.1.0-alpha.17', - '@storybook/web-components-vite': '7.1.0-alpha.17', - '@storybook/web-components-webpack5': '7.1.0-alpha.17', - sb: '7.1.0-alpha.17', - storybook: '7.1.0-alpha.17', + '@storybook/addon-a11y': '7.4.0-alpha.2', + '@storybook/addon-actions': '7.4.0-alpha.2', + '@storybook/addon-backgrounds': '7.4.0-alpha.2', + '@storybook/addon-controls': '7.4.0-alpha.2', + '@storybook/addon-docs': '7.4.0-alpha.2', + '@storybook/addon-essentials': '7.4.0-alpha.2', + '@storybook/addon-highlight': '7.4.0-alpha.2', + '@storybook/addon-interactions': '7.4.0-alpha.2', + '@storybook/addon-jest': '7.4.0-alpha.2', + '@storybook/addon-links': '7.4.0-alpha.2', + '@storybook/addon-mdx-gfm': '7.4.0-alpha.2', + '@storybook/addon-measure': '7.4.0-alpha.2', + '@storybook/addon-outline': '7.4.0-alpha.2', + '@storybook/addon-themes': '7.4.0-alpha.2', + '@storybook/addon-storyshots': '7.4.0-alpha.2', + '@storybook/addon-storyshots-puppeteer': '7.4.0-alpha.2', + '@storybook/addon-storysource': '7.4.0-alpha.2', + '@storybook/addon-toolbars': '7.4.0-alpha.2', + '@storybook/addon-viewport': '7.4.0-alpha.2', + '@storybook/addons': '7.4.0-alpha.2', + '@storybook/angular': '7.4.0-alpha.2', + '@storybook/api': '7.4.0-alpha.2', + '@storybook/blocks': '7.4.0-alpha.2', + '@storybook/builder-manager': '7.4.0-alpha.2', + '@storybook/builder-vite': '7.4.0-alpha.2', + '@storybook/builder-webpack5': '7.4.0-alpha.2', + '@storybook/channel-postmessage': '7.4.0-alpha.2', + '@storybook/channel-websocket': '7.4.0-alpha.2', + '@storybook/channels': '7.4.0-alpha.2', + '@storybook/cli': '7.4.0-alpha.2', + '@storybook/client-api': '7.4.0-alpha.2', + '@storybook/client-logger': '7.4.0-alpha.2', + '@storybook/codemod': '7.4.0-alpha.2', + '@storybook/components': '7.4.0-alpha.2', + '@storybook/core-client': '7.4.0-alpha.2', + '@storybook/core-common': '7.4.0-alpha.2', + '@storybook/core-events': '7.4.0-alpha.2', + '@storybook/core-server': '7.4.0-alpha.2', + '@storybook/core-webpack': '7.4.0-alpha.2', + '@storybook/csf-plugin': '7.4.0-alpha.2', + '@storybook/csf-tools': '7.4.0-alpha.2', + '@storybook/docs-tools': '7.4.0-alpha.2', + '@storybook/ember': '7.4.0-alpha.2', + '@storybook/html': '7.4.0-alpha.2', + '@storybook/html-vite': '7.4.0-alpha.2', + '@storybook/html-webpack5': '7.4.0-alpha.2', + '@storybook/instrumenter': '7.4.0-alpha.2', + '@storybook/manager': '7.4.0-alpha.2', + '@storybook/manager-api': '7.4.0-alpha.2', + '@storybook/nextjs': '7.4.0-alpha.2', + '@storybook/node-logger': '7.4.0-alpha.2', + '@storybook/postinstall': '7.4.0-alpha.2', + '@storybook/preact': '7.4.0-alpha.2', + '@storybook/preact-vite': '7.4.0-alpha.2', + '@storybook/preact-webpack5': '7.4.0-alpha.2', + '@storybook/preset-create-react-app': '7.4.0-alpha.2', + '@storybook/preset-html-webpack': '7.4.0-alpha.2', + '@storybook/preset-preact-webpack': '7.4.0-alpha.2', + '@storybook/preset-react-webpack': '7.4.0-alpha.2', + '@storybook/preset-server-webpack': '7.4.0-alpha.2', + '@storybook/preset-svelte-webpack': '7.4.0-alpha.2', + '@storybook/preset-vue-webpack': '7.4.0-alpha.2', + '@storybook/preset-vue3-webpack': '7.4.0-alpha.2', + '@storybook/preset-web-components-webpack': '7.4.0-alpha.2', + '@storybook/preview': '7.4.0-alpha.2', + '@storybook/preview-api': '7.4.0-alpha.2', + '@storybook/preview-web': '7.4.0-alpha.2', + '@storybook/react': '7.4.0-alpha.2', + '@storybook/react-dom-shim': '7.4.0-alpha.2', + '@storybook/react-vite': '7.4.0-alpha.2', + '@storybook/react-webpack5': '7.4.0-alpha.2', + '@storybook/router': '7.4.0-alpha.2', + '@storybook/server': '7.4.0-alpha.2', + '@storybook/server-webpack5': '7.4.0-alpha.2', + '@storybook/source-loader': '7.4.0-alpha.2', + '@storybook/store': '7.4.0-alpha.2', + '@storybook/svelte': '7.4.0-alpha.2', + '@storybook/svelte-vite': '7.4.0-alpha.2', + '@storybook/svelte-webpack5': '7.4.0-alpha.2', + '@storybook/sveltekit': '7.4.0-alpha.2', + '@storybook/telemetry': '7.4.0-alpha.2', + '@storybook/theming': '7.4.0-alpha.2', + '@storybook/types': '7.4.0-alpha.2', + '@storybook/vue': '7.4.0-alpha.2', + '@storybook/vue-vite': '7.4.0-alpha.2', + '@storybook/vue-webpack5': '7.4.0-alpha.2', + '@storybook/vue3': '7.4.0-alpha.2', + '@storybook/vue3-vite': '7.4.0-alpha.2', + '@storybook/vue3-webpack5': '7.4.0-alpha.2', + '@storybook/web-components': '7.4.0-alpha.2', + '@storybook/web-components-vite': '7.4.0-alpha.2', + '@storybook/web-components-webpack5': '7.4.0-alpha.2', + sb: '7.4.0-alpha.2', + storybook: '7.4.0-alpha.2', }; diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 916b17723b91..979725dae34b 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -36,10 +36,11 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { @@ -56,5 +57,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 03348ff45a6b..2606573d269e 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" @@ -40,18 +40,26 @@ }, "main": "dist/index.js", "types": "dist/index.d.ts", + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts", + "!src/**/*" + ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/core": "~7.21.0", - "@babel/preset-env": "~7.21.0", - "@babel/types": "~7.21.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/csf-tools": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", + "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -63,11 +71,11 @@ "@types/jscodeshift": "^0.11.6", "ansi-regex": "^5.0.1", "jest": "^29.3.1", - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", "mdast-util-mdx-jsx": "^2.1.2", "mdast-util-mdxjs-esm": "^1.3.1", "remark": "^14.0.2", - "remark-mdx": "^2.2.1", + "remark-mdx": "^2.3.0", "ts-dedent": "^2.2.0", "typescript": "~4.9.3", "unist-util-is": "^5.2.0", @@ -81,7 +89,7 @@ }, "bundler": { "entries": [ - "./src/index.js", + "./src/index.ts", "./src/transforms/add-component-parameters.js", "./src/transforms/csf-2-to-3.ts", "./src/transforms/csf-hoist-story-annotations.js", @@ -97,5 +105,5 @@ "cjs" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/codemod/src/index.js b/code/lib/codemod/src/index.ts similarity index 94% rename from code/lib/codemod/src/index.js rename to code/lib/codemod/src/index.ts index 4809d9f3d200..00473ad0f79a 100644 --- a/code/lib/codemod/src/index.js +++ b/code/lib/codemod/src/index.ts @@ -25,13 +25,13 @@ export function listCodemods() { const renameAsync = promisify(fs.rename); -async function renameFile(file, from, to, { logger }) { +async function renameFile(file: any, from: any, to: any, { logger }: any) { const newFile = file.replace(from, to); logger.log(`Rename: ${file} ${newFile}`); return renameAsync(file, newFile); } -export async function runCodemod(codemod, { glob, logger, dryRun, rename, parser }) { +export async function runCodemod(codemod: any, { glob, logger, dryRun, rename, parser }: any) { const codemods = listCodemods(); if (!codemods.includes(codemod)) { throw new Error(`Unknown codemod ${codemod}. Run --list for options.`); diff --git a/code/lib/codemod/src/transforms/csf-2-to-3.ts b/code/lib/codemod/src/transforms/csf-2-to-3.ts index c0cf079d0235..945f3542b6e8 100644 --- a/code/lib/codemod/src/transforms/csf-2-to-3.ts +++ b/code/lib/codemod/src/transforms/csf-2-to-3.ts @@ -3,11 +3,10 @@ import prettier from 'prettier'; import * as t from '@babel/types'; import { isIdentifier, isTSTypeAnnotation, isTSTypeReference } from '@babel/types'; import type { CsfFile } from '@storybook/csf-tools'; -import { loadCsf } from '@storybook/csf-tools'; +import { loadCsf, printCsf } from '@storybook/csf-tools'; import type { API, FileInfo } from 'jscodeshift'; import type { BabelFile, NodePath } from '@babel/core'; import * as babel from '@babel/core'; -import * as recast from 'recast'; import { upgradeDeprecatedTypes } from './upgrade-deprecated-types'; const logger = console; @@ -202,7 +201,7 @@ export default function transform(info: FileInfo, api: API, options: { parser?: importHelper.removeDeprecatedStoryImport(); removeUnusedTemplates(csf); - let output = recast.print(csf._ast, {}).code; + let output = printCsf(csf).code; try { const prettierConfig = prettier.resolveConfig.sync('.', { editorconfig: true }) || { diff --git a/code/lib/codemod/src/transforms/upgrade-deprecated-types.ts b/code/lib/codemod/src/transforms/upgrade-deprecated-types.ts index 6b76e75b5aa5..f2b2a97bcd09 100644 --- a/code/lib/codemod/src/transforms/upgrade-deprecated-types.ts +++ b/code/lib/codemod/src/transforms/upgrade-deprecated-types.ts @@ -3,8 +3,7 @@ import prettier from 'prettier'; import type { API, FileInfo } from 'jscodeshift'; import type { BabelFile, NodePath } from '@babel/core'; import * as babel from '@babel/core'; -import { loadCsf } from '@storybook/csf-tools'; -import * as recast from 'recast'; +import { loadCsf, printCsf } from '@storybook/csf-tools'; import * as t from '@babel/types'; const logger = console; @@ -24,7 +23,8 @@ function migrateType(oldType: string) { export default function transform(info: FileInfo, api: API, options: { parser?: string }) { // TODO what do I need to with the title? - const fileNode = loadCsf(info.source, { makeTitle: (title) => title })._ast; + const csf = loadCsf(info.source, { makeTitle: (title) => title }); + const fileNode = csf._ast; // @ts-expect-error File is not yet exposed, see https://github.com/babel/babel/issues/11350#issuecomment-644118606 const file: BabelFile = new babel.File( { filename: info.path }, @@ -33,7 +33,7 @@ export default function transform(info: FileInfo, api: API, options: { parser?: upgradeDeprecatedTypes(file); - let output = recast.print(file.path.node).code; + let output = printCsf(csf).code; try { const prettierConfig = prettier.resolveConfig.sync('.', { editorconfig: true }) || { diff --git a/code/lib/core-client/jest.config.js b/code/lib/core-client/jest.config.js deleted file mode 100644 index 4396fbc7010d..000000000000 --- a/code/lib/core-client/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.browser'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 8525bb56334c..2d0193d3e75b 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -36,26 +36,31 @@ "templates/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", + "@types/find-cache-dir": "^3.2.1", "@types/node": "^16.0.0", + "@types/node-fetch": "^2.6.4", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-register": "^3.4.0", - "file-system-cache": "^2.0.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", "glob": "^10.0.0", "handlebars": "^4.7.7", "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", @@ -67,7 +72,7 @@ "@types/picomatch": "^2.3.0", "mock-fs": "^5.2.0", "slash": "^5.0.0", - "type-fest": "^2.19.0", + "type-fest": "~2.19", "typescript": "~4.9.3" }, "publishConfig": { @@ -79,5 +84,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/core-common/src/index.ts b/code/lib/core-common/src/index.ts index 726812b67bb3..7296dc814a2c 100644 --- a/code/lib/core-common/src/index.ts +++ b/code/lib/core-common/src/index.ts @@ -6,6 +6,7 @@ export * from './utils/cache'; export * from './utils/check-addon-order'; export * from './utils/envs'; export * from './utils/findDistEsm'; +export * from './utils/common-glob-options'; export * from './utils/get-builder-options'; export * from './utils/get-framework-name'; export * from './utils/get-renderer-name'; diff --git a/code/lib/core-common/src/utils/__tests__/normalize-stories.test.ts b/code/lib/core-common/src/utils/__tests__/normalize-stories.test.ts index f6583496b1b6..0b857b7a57c1 100644 --- a/code/lib/core-common/src/utils/__tests__/normalize-stories.test.ts +++ b/code/lib/core-common/src/utils/__tests__/normalize-stories.test.ts @@ -2,8 +2,14 @@ /// import { dedent } from 'ts-dedent'; +import { sep } from 'path'; -import { normalizeStoriesEntry } from '../normalize-stories'; +import { InvalidStoriesEntryError } from '@storybook/core-events/server-errors'; +import { + getDirectoryFromWorkingDir, + normalizeStories, + normalizeStoriesEntry, +} from '../normalize-stories'; expect.addSnapshotSerializer({ print: (val: any) => JSON.stringify(val, null, 2), @@ -47,12 +53,12 @@ jest.mock('fs', () => { }; }); -describe('normalizeStoriesEntry', () => { - const options = { - configDir: '/path/to/project/.storybook', - workingDir: '/path/to/project', - }; +const options = { + configDir: '/path/to/project/.storybook', + workingDir: '/path/to/project', +}; +describe('normalizeStoriesEntry', () => { it('direct file path', () => { const specifier = normalizeStoriesEntry('../path/to/file.stories.mdx', options); expect(specifier).toMatchInlineSnapshot(` @@ -230,7 +236,7 @@ describe('normalizeStoriesEntry', () => { { "titlePrefix": "", "directory": ".", - "files": "**/*.@(mdx|stories.@(tsx|ts|jsx|js))", + "files": "**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))", "importPathMatcher": {} } `); @@ -241,7 +247,7 @@ describe('normalizeStoriesEntry', () => { expect(specifier).toMatchInlineSnapshot(` { "titlePrefix": "", - "files": "**/*.@(mdx|stories.@(tsx|ts|jsx|js))", + "files": "**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))", "directory": ".", "importPathMatcher": {} } @@ -265,7 +271,7 @@ describe('normalizeStoriesEntry', () => { expect(specifier).toMatchInlineSnapshot(` { "titlePrefix": "atoms", - "files": "**/*.@(mdx|stories.@(tsx|ts|jsx|js))", + "files": "**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))", "directory": ".", "importPathMatcher": {} } @@ -310,3 +316,20 @@ describe('normalizeStoriesEntry', () => { ]); }); }); + +describe('getDirectoryFromWorkingDir', () => { + it('should return normalized story path', () => { + const normalizedPath = getDirectoryFromWorkingDir({ + configDir: '/path/to/project/.storybook', + workingDir: '/path/to/project', + directory: '/path/to/project/src', + }); + expect(normalizedPath).toBe(`.${sep}src`); + }); +}); + +describe('normalizeStories', () => { + it('should throw InvalidStoriesEntryError for empty entries', () => { + expect(() => normalizeStories([], options)).toThrow(InvalidStoriesEntryError); + }); +}); diff --git a/code/lib/core-common/src/utils/common-glob-options.ts b/code/lib/core-common/src/utils/common-glob-options.ts new file mode 100644 index 000000000000..482ed8630674 --- /dev/null +++ b/code/lib/core-common/src/utils/common-glob-options.ts @@ -0,0 +1,5 @@ +const NODE_MODULES_RE = /node_modules/; + +// Exclude node_modules stories everywhere we call `glob` +export const commonGlobOptions = (glob: string) => + NODE_MODULES_RE.test(glob) ? {} : { ignore: ['**/node_modules/**'] }; diff --git a/code/lib/core-common/src/utils/get-storybook-info.ts b/code/lib/core-common/src/utils/get-storybook-info.ts index e19ccdda9b21..fe183d566b7c 100644 --- a/code/lib/core-common/src/utils/get-storybook-info.ts +++ b/code/lib/core-common/src/utils/get-storybook-info.ts @@ -45,22 +45,24 @@ export const frameworkPackages: Record = { 'storybook-solidjs-vite': 'solid', }; +export const builderPackages = ['@storybook/builder-webpack5', '@storybook/builder-vite']; + const logger = console; const findDependency = ( { dependencies, devDependencies, peerDependencies }: PackageJson, predicate: (entry: [string, string | undefined]) => string -) => [ - Object.entries(dependencies || {}).find(predicate), - Object.entries(devDependencies || {}).find(predicate), - Object.entries(peerDependencies || {}).find(predicate), -]; +) => + [ + Object.entries(dependencies || {}).find(predicate), + Object.entries(devDependencies || {}).find(predicate), + Object.entries(peerDependencies || {}).find(predicate), + ] as const; const getRendererInfo = (packageJson: PackageJson) => { // Pull the viewlayer from dependencies in package.json const [dep, devDep, peerDep] = findDependency(packageJson, ([key]) => rendererPackages[key]); const [pkg, version] = dep || devDep || peerDep || []; - const renderer = pkg ? rendererPackages[pkg] : undefined; if (dep && devDep && dep[0] === devDep[0]) { logger.warn( @@ -75,16 +77,13 @@ const getRendererInfo = (packageJson: PackageJson) => { return { version, - framework: renderer, frameworkPackage: pkg, - renderer, - rendererPackage: pkg, }; }; const validConfigExtensions = ['ts', 'js', 'tsx', 'jsx', 'mjs', 'cjs']; -const findConfigFile = (prefix: string, configDir: string) => { +export const findConfigFile = (prefix: string, configDir: string) => { const filePrefix = path.join(configDir, prefix); const extension = validConfigExtensions.find((ext: string) => fse.existsSync(`${filePrefix}.${ext}`) diff --git a/code/lib/core-common/src/utils/get-storybook-refs.ts b/code/lib/core-common/src/utils/get-storybook-refs.ts index eb956201668d..c0f530531b7e 100644 --- a/code/lib/core-common/src/utils/get-storybook-refs.ts +++ b/code/lib/core-common/src/utils/get-storybook-refs.ts @@ -1,6 +1,7 @@ import { readJSON } from 'fs-extra'; import { dirname, join } from 'path'; import findUp from 'find-up'; +import fetch from 'node-fetch'; import resolveFrom from 'resolve-from'; import { logger } from '@storybook/node-logger'; diff --git a/code/lib/core-common/src/utils/interpret-require.ts b/code/lib/core-common/src/utils/interpret-require.ts index 8ed1c200197f..1f3d47d81993 100644 --- a/code/lib/core-common/src/utils/interpret-require.ts +++ b/code/lib/core-common/src/utils/interpret-require.ts @@ -13,7 +13,10 @@ export function interopRequireDefault(filePath: string) { register({ target: `node${process.version.slice(1)}`, format: 'cjs', - hookIgnoreNodeModules: false, + hookIgnoreNodeModules: true, + // Some frameworks, like Stylus, rely on the 'name' property of classes or functions + // https://github.com/storybookjs/storybook/issues/19049 + keepNames: true, tsconfigRaw: `{ "compilerOptions": { "strict": false, diff --git a/code/lib/core-common/src/utils/normalize-stories.ts b/code/lib/core-common/src/utils/normalize-stories.ts index 7bdfd0bfa1cd..9801fbeae307 100644 --- a/code/lib/core-common/src/utils/normalize-stories.ts +++ b/code/lib/core-common/src/utils/normalize-stories.ts @@ -4,11 +4,12 @@ import * as pico from 'picomatch'; import slash from 'slash'; import type { StoriesEntry, NormalizedStoriesSpecifier } from '@storybook/types'; +import { InvalidStoriesEntryError } from '@storybook/core-events/server-errors'; import { normalizeStoryPath } from './paths'; import { globToRegexp } from './glob-to-regexp'; const DEFAULT_TITLE_PREFIX = ''; -const DEFAULT_FILES = '**/*.@(mdx|stories.@(tsx|ts|jsx|js))'; +const DEFAULT_FILES = '**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))'; const isDirectory = (configDir: string, entry: string) => { try { @@ -100,5 +101,10 @@ interface NormalizeOptions { workingDir: string; } -export const normalizeStories = (entries: StoriesEntry[], options: NormalizeOptions) => - entries.map((entry) => normalizeStoriesEntry(entry, options)); +export const normalizeStories = (entries: StoriesEntry[], options: NormalizeOptions) => { + if (!entries || (Array.isArray(entries) && entries.length === 0)) { + throw new InvalidStoriesEntryError(); + } + + return entries.map((entry) => normalizeStoriesEntry(entry, options)); +}; diff --git a/code/lib/core-common/src/utils/resolve-path-in-sb-cache.ts b/code/lib/core-common/src/utils/resolve-path-in-sb-cache.ts index 7157abdc0257..de88c2e2c00b 100644 --- a/code/lib/core-common/src/utils/resolve-path-in-sb-cache.ts +++ b/code/lib/core-common/src/utils/resolve-path-in-sb-cache.ts @@ -1,5 +1,5 @@ import path from 'path'; -import pkgDir from 'pkg-dir'; +import findCacheDirectory from 'find-cache-dir'; /** * Get the path of the file or directory with input name inside the Storybook cache directory: @@ -10,16 +10,8 @@ import pkgDir from 'pkg-dir'; * @return {string} Absolute path to the file or directory */ export function resolvePathInStorybookCache(fileOrDirectoryName: string): string { - const cwd = process.cwd(); - const projectDir = pkgDir.sync(cwd); - - let cacheDirectory; - - if (!projectDir) { - cacheDirectory = path.resolve(cwd, '.cache/storybook'); - } else { - cacheDirectory = path.resolve(projectDir, 'node_modules/.cache/storybook'); - } + let cacheDirectory = findCacheDirectory({ name: 'storybook' }); + cacheDirectory ||= path.join(process.cwd(), '.cache/storybook'); return path.join(cacheDirectory, fileOrDirectoryName); } diff --git a/code/lib/core-common/src/utils/validate-config.ts b/code/lib/core-common/src/utils/validate-config.ts index 3314a6b3c1a5..39d3f5ff44dc 100644 --- a/code/lib/core-common/src/utils/validate-config.ts +++ b/code/lib/core-common/src/utils/validate-config.ts @@ -1,34 +1,27 @@ import { join } from 'path'; -import { dedent } from 'ts-dedent'; +import { + CouldNotEvaluateFrameworkError, + MissingFrameworkFieldError, + InvalidFrameworkNameError, +} from '@storybook/core-events/server-errors'; import { frameworkPackages } from './get-storybook-info'; const renderers = ['html', 'preact', 'react', 'server', 'svelte', 'vue', 'vue3', 'web-components']; const rendererNames = [...renderers, ...renderers.map((renderer) => `@storybook/${renderer}`)]; -export function validateFrameworkName(frameworkName: string | undefined) { - const automigrateMessage = `Please run 'npx storybook@next automigrate' to automatically fix your config. - - See the migration guide for more information: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api\n`; - +export function validateFrameworkName( + frameworkName: string | undefined +): asserts frameworkName is string { // Throw error if there is no framework field // TODO: maybe this error should not be thrown if we allow empty Storybooks that only use "refs" for composition if (!frameworkName) { - throw new Error(dedent` - Could not find a 'framework' field in Storybook config. - - ${automigrateMessage} - `); + throw new MissingFrameworkFieldError(); } // Account for legacy scenario where the framework was referring to a renderer if (rendererNames.includes(frameworkName)) { - throw new Error(dedent` - Invalid value of '${frameworkName}' in the 'framework' field of Storybook config. - - ${automigrateMessage} - `); + throw new InvalidFrameworkNameError({ frameworkName }); } // If we know about the framework, we don't need to validate it @@ -40,9 +33,6 @@ export function validateFrameworkName(frameworkName: string | undefined) { try { require.resolve(join(frameworkName, 'preset')); } catch (err) { - throw new Error(dedent` - Could not evaluate the ${frameworkName} package from the 'framework' field of Storybook config. - - Are you sure it's a valid package and is installed?`); + throw new CouldNotEvaluateFrameworkError({ frameworkName }); } } diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index e7395d0becd2..c53633ff2547 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Event names used in storybook core", "keywords": [ "storybook" @@ -27,21 +27,59 @@ "require": "./dist/index.js", "import": "./dist/index.mjs" }, + "./preview-errors": { + "types": "./dist/errors/preview-errors.d.ts", + "node": "./dist/errors/preview-errors.js", + "require": "./dist/errors/preview-errors.js", + "import": "./dist/errors/preview-errors.mjs" + }, + "./manager-errors": { + "types": "./dist/errors/manager-errors.d.ts", + "node": "./dist/errors/manager-errors.js", + "require": "./dist/errors/manager-errors.js", + "import": "./dist/errors/manager-errors.mjs" + }, + "./server-errors": { + "types": "./dist/errors/server-errors.d.ts", + "node": "./dist/errors/server-errors.js", + "require": "./dist/errors/server-errors.js", + "import": "./dist/errors/server-errors.mjs" + }, "./package.json": "./package.json" }, "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/index.d.ts" + ], + "preview-errors": [ + "dist/errors/preview-errors.d.ts" + ], + "manager-errors": [ + "dist/errors/manager-errors.d.ts" + ], + "server-errors": [ + "dist/errors/server-errors.d.ts" + ] + } + }, "files": [ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, + "dependencies": { + "ts-dedent": "^2.0.0" + }, "devDependencies": { "typescript": "~4.9.3" }, @@ -50,8 +88,11 @@ }, "bundler": { "entries": [ - "./src/index.ts" + "./src/index.ts", + "./src/errors/preview-errors.ts", + "./src/errors/manager-errors.ts", + "./src/errors/server-errors.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/core-events/src/errors/README.md b/code/lib/core-events/src/errors/README.md new file mode 100644 index 000000000000..291fb5abe779 --- /dev/null +++ b/code/lib/core-events/src/errors/README.md @@ -0,0 +1,156 @@ +# Storybook Errors + +Storybook provides a utility to manage errors thrown from it. Each error is categorized and coded, and there is an ESLint plugin which enforces their usage, instead of throwing generic errors like `throw new Error()`. + +Storybook errors reside in this package and are categorized into: + +1. **[Preview errors](./preview-errors.ts)** + - Errors which occur in the preview part of Storybook (where user code executes) + - e.g. Rendering issues, etc. + - available in `@storybook/core-events/preview-errors` +2. **[Manager errors](./manager-errors.ts)** + - Errors which occur in the manager part of Storybook (manager UI) + - e.g. Sidebar, addons, Storybook UI, Storybook router, etc. + - available in `@storybook/core-events/server-errors` +3. **[Server errors](./server-errors.ts)** + - Errors which occur in node + - e.g. Storybook init command, dev command, builder errors (Webpack, Vite), etc. + - available in `@storybook/core-events/server-errors` + +## How to create errors + +First, **find which file your error should be part of**, based on the criteria above. +Second use the `StorybookError` class to define custom errors with specific codes and categories for use within the Storybook codebase. Below is a detailed documentation for the error properties: + +### Class Structure + +```typescript +import { StorybookError } from './storybook-error'; +export class YourCustomError extends StorybookError { + readonly category: Category; // The category to which the error belongs. Check the source in client-errors.ts or server-errors.ts for reference. + readonly code: number; // The numeric code for the error. + + template(): string { + // A function that returns the error message. + } +} +``` + +### Properties + +| Name | Type | Description | +| ------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| category | `Category` | The category to which the error belongs. | +| code | `number` | The numeric code for the error. | +| template | `() => string` | Function that returns a properly written error message. | +| data | `Object` | Optional. Data associated with the error. Used to provide additional information in the error message or to be passed to telemetry. | +| documentation | `boolean` or `string` | Optional. Should be set to `true` **if the error is documented on the Storybook website**. If defined as string, it should be a custom documentation link. | + +## Usage Example + +```typescript +// Define a custom error with a numeric code and a static error message template. +export class StorybookIndexGenerationError extends StorybookError { + category = Category.Generic; + code = 1; + + template(): string { + return `Storybook failed when generating an index for your stories. Check the stories field in your main.js`; + } +} + +// Define a custom error with a numeric code and a dynamic error message template based on properties from the constructor. +export class InvalidFileExtensionError extends StorybookError { + category = Category.Validation; + code = 2; + documentation = 'https://some-custom-documentation.com/validation-errors'; + + // extra properties are defined in the constructor via a data property, which is available in any class method + // always use this data Object notation! + constructor(public data: { extension: string }) { + super(); + } + + template(): string { + return `Invalid file extension found: ${this.data.extension}.`; + } +} + +// import the errors where you need them, i.e. +import { + StorybookIndexGenerationError, + InvalidFileExtensionError, +} from '@storybook/core-events/server-errors'; + +throw StorybookIndexGenerationError(); +// "SB_Generic_0001: Storybook failed when generating an index for your stories. Check the stories field in your main.js. + +throw InvalidFileExtensionError({ extension: 'mtsx' }); +// "SB_Validation_0002: Invalid file extension found: mtsx. More info: https://some-custom-documentation.com/validation-errors" +``` + +## How to write a proper error message + +Writing clear and informative error messages is crucial for effective debugging and troubleshooting. A well-crafted error message can save developers and users valuable time. Consider the following guidelines: + +- **Be clear and specific:** Provide straightforward error messages that precisely describe the issue. +- **Include relevant context:** Add details about the error's origin and relevant context to aid troubleshooting. +- **Provide guidance for resolution:** Offer actionable steps to resolve the error or suggest potential fixes. +- **Provide documentation links:** Whenever applicable, provide links for users to get guidance or more context to fix their issues. + + + +✅ Here are a few recommended examples: + +Long: + +``` +Couldn't find story matching id 'component--button-primary' after HMR. + - Did you just rename a story? + - Did you remove it from your CSF file? + - Are you sure a story with the id 'component--button-primary' exists? + - Please check the values in the stories field of your main.js config and see if they would match your CSF File. + - Also check the browser console and terminal for potential error messages. +``` + +Medium: + +``` +Addon-docs no longer uses configureJsx or mdxBabelOptions in 7.0. + +To update your configuration, please see migration instructions here: + +https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-addon-docs-manual-babel-configuration +``` + +Short: + +``` +Failed to start Storybook. + +Do you have an error in your \`preview.js\`? Check your Storybook's browser console for errors. +``` + +❌ Here are a few unrecommended examples: + +``` +outputDir is required +``` + +``` +Cannot render story +``` + +``` +no builder configured! +``` + +## What's the motivation for this errors framework? + +Centralizing and categorizing errors offers several advantages: + +Better understanding of what is actually failing: By defining categories, error origins become more evident, easing the debugging process for developers and providing users with actionable insights. + +Improved Telemetry: Aggregating and filtering errors allows better assessment of their impact, which helps in prioritization and tackling the issues. + +Improved Documentation: Categorized errors lead to the creation of a helpful errors page on the Storybook website, benefiting users with better guidance and improving overall accessibility and user experience. diff --git a/code/lib/core-events/src/errors/manager-errors.ts b/code/lib/core-events/src/errors/manager-errors.ts new file mode 100644 index 000000000000..a97c5f8d7035 --- /dev/null +++ b/code/lib/core-events/src/errors/manager-errors.ts @@ -0,0 +1,46 @@ +import { StorybookError } from './storybook-error'; + +/** + * If you can't find a suitable category for your error, create one + * based on the package name/file path of which the error is thrown. + * For instance: + * If it's from @storybook/client-logger, then MANAGER_CLIENT-LOGGER + * + * Categories are prefixed by a logical grouping, e.g. MANAGER_ + * to prevent manager and preview errors from having the same category and error code. + */ +export enum Category { + MANAGER_UNCAUGHT = 'MANAGER_UNCAUGHT', + MANAGER_UI = 'MANAGER_UI', + MANAGER_API = 'MANAGER_API', + MANAGER_CLIENT_LOGGER = 'MANAGER_CLIENT-LOGGER', + MANAGER_CHANNELS = 'MANAGER_CHANNELS', + MANAGER_CORE_EVENTS = 'MANAGER_CORE-EVENTS', + MANAGER_ROUTER = 'MANAGER_ROUTER', + MANAGER_THEMING = 'MANAGER_THEMING', +} + +export class ProviderDoesNotExtendBaseProviderError extends StorybookError { + readonly category = Category.MANAGER_UI; + + readonly code = 1; + + template() { + return `The Provider passed into Storybook's UI is not extended from the base Provider. Please check your Provider implementation.`; + } +} + +export class UncaughtManagerError extends StorybookError { + readonly category = Category.MANAGER_UNCAUGHT; + + readonly code = 1; + + constructor(public error: Error) { + super(error.message); + this.stack = error.stack; + } + + template() { + return this.message; + } +} diff --git a/code/lib/core-events/src/errors/message-reference.png b/code/lib/core-events/src/errors/message-reference.png new file mode 100644 index 000000000000..b829f93689ea Binary files /dev/null and b/code/lib/core-events/src/errors/message-reference.png differ diff --git a/code/lib/core-events/src/errors/preview-errors.ts b/code/lib/core-events/src/errors/preview-errors.ts new file mode 100644 index 000000000000..3a2fe93aecf5 --- /dev/null +++ b/code/lib/core-events/src/errors/preview-errors.ts @@ -0,0 +1,69 @@ +import dedent from 'ts-dedent'; +import { StorybookError } from './storybook-error'; + +/** + * If you can't find a suitable category for your error, create one + * based on the package name/file path of which the error is thrown. + * For instance: + * If it's from @storybook/client-logger, then CLIENT-LOGGER + * + * Categories are prefixed by a logical grouping, e.g. PREVIEW_ or FRAMEWORK_ + * to prevent manager and preview errors from having the same category and error code. + */ +export enum Category { + PREVIEW_CLIENT_LOGGER = 'PREVIEW_CLIENT-LOGGER', + PREVIEW_CHANNELS = 'PREVIEW_CHANNELS', + PREVIEW_CORE_EVENTS = 'PREVIEW_CORE-EVENTS', + PREVIEW_INSTRUMENTER = 'PREVIEW_INSTRUMENTER', + PREVIEW_API = 'PREVIEW_API', + PREVIEW_REACT_DOM_SHIM = 'PREVIEW_REACT-DOM-SHIM', + PREVIEW_ROUTER = 'PREVIEW_ROUTER', + PREVIEW_THEMING = 'PREVIEW_THEMING', + FRAMEWORK_ANGULAR = 'FRAMEWORK_ANGULAR', + FRAMEWORK_EMBER = 'FRAMEWORK_EMBER', + FRAMEWORK_HTML_VITE = 'FRAMEWORK_HTML-VITE', + FRAMEWORK_HTML_WEBPACK5 = 'FRAMEWORK_HTML-WEBPACK5', + FRAMEWORK_NEXTJS = 'FRAMEWORK_NEXTJS', + FRAMEWORK_PREACT_VITE = 'FRAMEWORK_PREACT-VITE', + FRAMEWORK_PREACT_WEBPACK5 = 'FRAMEWORK_PREACT-WEBPACK5', + FRAMEWORK_REACT_VITE = 'FRAMEWORK_REACT-VITE', + FRAMEWORK_REACT_WEBPACK5 = 'FRAMEWORK_REACT-WEBPACK5', + FRAMEWORK_SERVER_WEBPACK5 = 'FRAMEWORK_SERVER-WEBPACK5', + FRAMEWORK_SVELTE_VITE = 'FRAMEWORK_SVELTE-VITE', + FRAMEWORK_SVELTE_WEBPACK5 = 'FRAMEWORK_SVELTE-WEBPACK5', + FRAMEWORK_SVELTEKIT = 'FRAMEWORK_SVELTEKIT', + FRAMEWORK_VUE_VITE = 'FRAMEWORK_VUE-VITE', + FRAMEWORK_VUE_WEBPACK5 = 'FRAMEWORK_VUE-WEBPACK5', + FRAMEWORK_VUE3_VITE = 'FRAMEWORK_VUE3-VITE', + FRAMEWORK_VUE3_WEBPACK5 = 'FRAMEWORK_VUE3-WEBPACK5', + FRAMEWORK_WEB_COMPONENTS_VITE = 'FRAMEWORK_WEB-COMPONENTS-VITE', + FRAMEWORK_WEB_COMPONENTS_WEBPACK5 = 'FRAMEWORK_WEB-COMPONENTS-WEBPACK5', + RENDERER_HTML = 'RENDERER_HTML', + RENDERER_PREACT = 'RENDERER_PREACT', + RENDERER_REACT = 'RENDERER_REACT', + RENDERER_SERVER = 'RENDERER_SERVER', + RENDERER_SVELTE = 'RENDERER_SVELTE', + RENDERER_VUE = 'RENDERER_VUE', + RENDERER_VUE3 = 'RENDERER_VUE3', + RENDERER_WEB_COMPONENTS = 'RENDERER_WEB-COMPONENTS', +} + +export class MissingStoryAfterHmrError extends StorybookError { + readonly category = Category.PREVIEW_API; + + readonly code = 1; + + constructor(public data: { storyId: string }) { + super(); + } + + template() { + return dedent` + Couldn't find story matching id '${this.data.storyId}' after HMR. + - Did you just rename a story? + - Did you remove it from your CSF file? + - Are you sure a story with the id '${this.data.storyId}' exists? + - Please check the values in the stories field of your main.js config and see if they would match your CSF File. + - Also check the browser console and terminal for potential error messages.`; + } +} diff --git a/code/lib/core-events/src/errors/server-errors.ts b/code/lib/core-events/src/errors/server-errors.ts new file mode 100644 index 000000000000..93f7355a3024 --- /dev/null +++ b/code/lib/core-events/src/errors/server-errors.ts @@ -0,0 +1,139 @@ +import dedent from 'ts-dedent'; +import { StorybookError } from './storybook-error'; + +/** + * If you can't find a suitable category for your error, create one + * based on the package name/file path of which the error is thrown. + * For instance: + * If it's from @storybook/node-logger, then NODE-LOGGER + * If it's from a package that is too broad, e.g. @storybook/cli in the init command, then use a combination like CLI_INIT + */ +export enum Category { + CLI = 'CLI', + CLI_INIT = 'CLI_INIT', + CLI_AUTOMIGRATE = 'CLI_AUTOMIGRATE', + CLI_UPGRADE = 'CLI_UPGRADE', + CLI_ADD = 'CLI_ADD', + CODEMOD = 'CODEMOD', + CORE_SERVER = 'CORE-SERVER', + CSF_PLUGIN = 'CSF-PLUGIN', + CSF_TOOLS = 'CSF-TOOLS', + CORE_COMMON = 'CORE-COMMON', + NODE_LOGGER = 'NODE-LOGGER', + TELEMETRY = 'TELEMETRY', + BUILDER_MANAGER = 'BUILDER-MANAGER', + BUILDER_VITE = 'BUILDER-VITE', + BUILDER_WEBPACK5 = 'BUILDER-WEBPACK5', + SOURCE_LOADER = 'SOURCE-LOADER', + POSTINSTALL = 'POSTINSTALL', + DOCS_TOOLS = 'DOCS-TOOLS', + CORE_WEBPACK = 'CORE-WEBPACK', +} + +export class NxProjectDetectedError extends StorybookError { + readonly category = Category.CLI_INIT; + + readonly code = 1; + + public readonly documentation = 'https://nx.dev/packages/storybook'; + + template() { + return dedent` + We have detected Nx in your project. Nx has its own Storybook initializer, so please use it instead. + Run "nx g @nx/storybook:configuration" to add Storybook to your project. + `; + } +} + +export class MissingFrameworkFieldError extends StorybookError { + readonly category = Category.CORE_COMMON; + + readonly code = 1; + + public readonly documentation = + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api'; + + template() { + return dedent` + Could not find a 'framework' field in Storybook config. + + Please run 'npx storybook@next automigrate' to automatically fix your config. + `; + } +} + +export class InvalidFrameworkNameError extends StorybookError { + readonly category = Category.CORE_COMMON; + + readonly code = 2; + + public readonly documentation = + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api'; + + constructor(public data: { frameworkName: string }) { + super(); + } + + template() { + return dedent` + Invalid value of '${this.data.frameworkName}' in the 'framework' field of Storybook config. + + Please run 'npx storybook@next automigrate' to automatically fix your config. + `; + } +} + +export class CouldNotEvaluateFrameworkError extends StorybookError { + readonly category = Category.CORE_COMMON; + + readonly code = 3; + + constructor(public data: { frameworkName: string }) { + super(); + } + + template() { + return dedent` + Could not evaluate the '${this.data.frameworkName}' package from the 'framework' field of Storybook config. + + Are you sure it's a valid package and is installed? + `; + } +} + +export class ConflictingStaticDirConfigError extends StorybookError { + readonly category = Category.CORE_SERVER; + + readonly code = 1; + + public readonly documentation = + 'https://storybook.js.org/docs/react/configure/images-and-assets#serving-static-files-via-storybook-configuration'; + + template() { + return dedent` + Storybook encountered a conflict when trying to serve statics. You have configured both: + * Storybook's option in the config file: 'staticDirs' + * Storybook's (deprecated) CLI flag: '--staticDir' or '-s' + + Please remove the CLI flag from your storybook script and use only the 'staticDirs' option instead. + `; + } +} + +export class InvalidStoriesEntryError extends StorybookError { + readonly category = Category.CORE_COMMON; + + readonly code = 4; + + public readonly documentation = + 'https://storybook.js.org/docs/react/faq#can-i-have-a-storybook-with-no-local-stories'; + + template() { + return dedent` + Storybook could not index your stories. + Your main configuration somehow does not contain a 'stories' field, or it resolved to an empty array. + + Please check your main configuration file and make sure it exports a 'stories' field that is not an empty array. + `; + } +} diff --git a/code/lib/core-events/src/errors/storybook-error.test.ts b/code/lib/core-events/src/errors/storybook-error.test.ts new file mode 100644 index 000000000000..dc26a50f9679 --- /dev/null +++ b/code/lib/core-events/src/errors/storybook-error.test.ts @@ -0,0 +1,64 @@ +import { StorybookError } from './storybook-error'; + +describe('StorybookError', () => { + class TestError extends StorybookError { + category = 'TEST_CATEGORY'; + + code = 123; + + template() { + return 'This is a test error.'; + } + } + + it('should generate the correct error name', () => { + const error = new TestError(); + expect(error.name).toBe('SB_TEST_CATEGORY_0123'); + }); + + it('should generate the correct message without documentation link', () => { + const error = new TestError(); + const expectedMessage = 'This is a test error.'; + expect(error.message).toBe(expectedMessage); + }); + + it('should generate the correct message with internal documentation link', () => { + const error = new TestError(); + error.documentation = true; + const expectedMessage = + 'This is a test error.\n\nMore info: https://storybook.js.org/error/SB_TEST_CATEGORY_0123\n'; + expect(error.message).toBe(expectedMessage); + }); + + it('should generate the correct message with external documentation link', () => { + const error = new TestError(); + error.documentation = 'https://example.com/docs/test-error'; + expect(error.message).toMatchInlineSnapshot(` + "This is a test error. + + More info: https://example.com/docs/test-error + " + `); + }); + + it('should generate the correct message with multiple external documentation links', () => { + const error = new TestError(); + error.documentation = [ + 'https://example.com/docs/first-error', + 'https://example.com/docs/second-error', + ]; + expect(error.message).toMatchInlineSnapshot(` + "This is a test error. + + More info: + - https://example.com/docs/first-error + - https://example.com/docs/second-error + " + `); + }); + + it('should have default documentation value of false', () => { + const error = new TestError(); + expect(error.documentation).toBe(false); + }); +}); diff --git a/code/lib/core-events/src/errors/storybook-error.ts b/code/lib/core-events/src/errors/storybook-error.ts new file mode 100644 index 000000000000..40158190d93a --- /dev/null +++ b/code/lib/core-events/src/errors/storybook-error.ts @@ -0,0 +1,60 @@ +export abstract class StorybookError extends Error { + /** + * Category of the error. Used to classify the type of error, e.g., 'PREVIEW_API'. + */ + abstract readonly category: string; + + /** + * Code representing the error. Used to uniquely identify the error, e.g., 1. + */ + abstract readonly code: number; + + /** + * A properly written error message template for this error. + * @see https://github.com/storybookjs/storybook/blob/next/code/lib/core-events/src/errors/README.md#how-to-write-a-proper-error-message + */ + abstract template(): string; + + /** + * Data associated with the error. Used to provide additional information in the error message or to be passed to telemetry. + */ + public readonly data = {}; + + /** + * Specifies the documentation for the error. + * - If `true`, links to a documentation page on the Storybook website (make sure it exists before enabling). + * - If a string, uses the provided URL for documentation (external or FAQ links). + * - If `false` (default), no documentation link is added. + */ + public documentation: boolean | string | string[] = false; + + /** + * Flag used to easily determine if the error originates from Storybook. + */ + readonly fromStorybook: true = true as const; + + /** + * Overrides the default `Error.name` property in the format: SB__. + */ + get name() { + const paddedCode = String(this.code).padStart(4, '0'); + return `SB_${this.category}_${paddedCode}` as `SB_${this['category']}_${string}`; + } + + /** + * Generates the error message along with additional documentation link (if applicable). + */ + get message() { + let page: string | undefined; + + if (this.documentation === true) { + page = `https://storybook.js.org/error/${this.name}`; + } else if (typeof this.documentation === 'string') { + page = this.documentation; + } else if (Array.isArray(this.documentation)) { + page = `\n${this.documentation.map((doc) => `\t- ${doc}`).join('\n')}`; + } + + return this.template() + (page != null ? `\n\nMore info: ${page}\n` : ''); + } +} diff --git a/code/lib/core-events/src/index.ts b/code/lib/core-events/src/index.ts index b65ebe7dbd07..d8d6c41c01d3 100644 --- a/code/lib/core-events/src/index.ts +++ b/code/lib/core-events/src/index.ts @@ -64,6 +64,12 @@ enum events { SHARED_STATE_SET = 'sharedStateSet', NAVIGATE_URL = 'navigateUrl', UPDATE_QUERY_PARAMS = 'updateQueryParams', + + REQUEST_WHATS_NEW_DATA = 'requestWhatsNewData', + RESULT_WHATS_NEW_DATA = 'resultWhatsNewData', + SET_WHATS_NEW_CACHE = 'setWhatsNewCache', + TOGGLE_WHATS_NEW_NOTIFICATIONS = 'toggleWhatsNewNotifications', + TELEMETRY_ERROR = 'telemetryError', } // Enables: `import Events from ...` @@ -111,7 +117,34 @@ export const { UPDATE_GLOBALS, UPDATE_QUERY_PARAMS, UPDATE_STORY_ARGS, + REQUEST_WHATS_NEW_DATA, + RESULT_WHATS_NEW_DATA, + SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, + TELEMETRY_ERROR, } = events; // Used to break out of the current render without showing a redbox +// eslint-disable-next-line local-rules/no-uncategorized-errors export const IGNORED_EXCEPTION = new Error('ignoredException'); + +export interface WhatsNewCache { + lastDismissedPost?: string; + lastReadPost?: string; +} + +export type WhatsNewData = + | { + status: 'SUCCESS'; + title: string; + url: string; + blogUrl?: string; + publishedAt: string; + excerpt: string; + postIsRead: boolean; + showNotification: boolean; + disableWhatsNewNotifications: boolean; + } + | { + status: 'ERROR'; + }; diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 5a353a8630ca..bbae41b4f414 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -36,6 +36,11 @@ "node": "./dist/presets/common-preset.js", "require": "./dist/presets/common-preset.js" }, + "./dist/presets/common-override-preset": { + "types": "./dist/presets/common-override-preset.d.ts", + "node": "./dist/presets/common-override-preset.js", + "require": "./dist/presets/common-override-preset.js" + }, "./public/favicon.svg": "./public/favicon.svg", "./package.json": "./package.json" }, @@ -47,34 +52,34 @@ "public/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@aw-web-design/x-default-browser": "1.4.88", + "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/builder-manager": "workspace:*", + "@storybook/channels": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.1.0-alpha.17", + "@storybook/csf-tools": "workspace:*", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/telemetry": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/telemetry": "workspace:*", + "@storybook/types": "workspace:*", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", - "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/semver": "^7.3.4", - "better-opn": "^2.1.1", - "boxen": "^5.1.2", + "better-opn": "^3.0.2", "chalk": "^4.1.0", "cli-table3": "^0.6.1", "compression": "^1.7.4", @@ -84,27 +89,31 @@ "globby": "^11.0.2", "ip": "^2.0.0", "lodash": "^4.17.21", - "node-fetch": "^2.6.7", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "serve-favicon": "^2.5.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0", + "util": "^0.12.4", "util-deprecate": "^1.0.2", "watchpack": "^2.2.0", "ws": "^8.2.3" }, "devDependencies": { + "@storybook/addon-docs": "workspace:*", "@types/compression": "^1.7.0", "@types/ip": "^1.1.0", + "@types/node-fetch": "^2.5.7", "@types/serve-favicon": "^2.5.2", "@types/ws": "^8", + "boxen": "^5.1.2", "jest-os-detection": "^1.3.1", - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", + "node-fetch": "^3.3.1", "slash": "^5.0.0", "typescript": "~4.9.3" }, @@ -115,9 +124,10 @@ "entries": [ "./src/index.ts", "./src/presets/babel-cache-preset.ts", - "./src/presets/common-preset.ts" + "./src/presets/common-preset.ts", + "./src/presets/common-override-preset.ts" ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/core-server/src/build-dev.ts b/code/lib/core-server/src/build-dev.ts index 09612746dbfe..7785afdee7b7 100644 --- a/code/lib/core-server/src/build-dev.ts +++ b/code/lib/core-server/src/build-dev.ts @@ -7,7 +7,6 @@ import type { StorybookConfig, } from '@storybook/types'; import { - cache, loadAllPresets, loadMainConfig, resolveAddonName, @@ -15,12 +14,12 @@ import { validateFrameworkName, } from '@storybook/core-common'; import prompts from 'prompts'; +import invariant from 'tiny-invariant'; import { global } from '@storybook/global'; import { telemetry } from '@storybook/telemetry'; import { join, resolve } from 'path'; import { storybookDevServer } from './dev-server'; -import { getReleaseNotesData, getReleaseNotesFailedState } from './utils/release-notes'; import { outputStats } from './utils/output-stats'; import { outputStartupInformation } from './utils/output-startup-information'; import { updateCheck } from './utils/update-check'; @@ -31,18 +30,17 @@ import { warnOnIncompatibleAddons } from './utils/warnOnIncompatibleAddons'; export async function buildDevStandalone( options: CLIOptions & LoadOptions & BuilderOptions ): Promise<{ port: number; address: string; networkAddress: string }> { - const { packageJson, versionUpdates, releaseNotes } = options; - const { version } = packageJson; - - // updateInfo and releaseNotesData are cached, so this is typically pretty fast - const [port, versionCheck, releaseNotesData] = await Promise.all([ + const { packageJson, versionUpdates } = options; + invariant( + packageJson.version !== undefined, + `Expected package.json#version to be defined in the "${packageJson.name}" package}` + ); + // updateInfo are cached, so this is typically pretty fast + const [port, versionCheck] = await Promise.all([ getServerPort(options.port), versionUpdates - ? updateCheck(version) + ? updateCheck(packageJson.version) : Promise.resolve({ success: false, cached: false, data: {}, time: Date.now() }), - releaseNotes - ? getReleaseNotesData(version, cache) - : Promise.resolve(getReleaseNotesFailedState(version)), ]); if (!options.ci && !options.smokeTest && options.port != null && port !== options.port) { @@ -58,7 +56,6 @@ export async function buildDevStandalone( /* eslint-disable no-param-reassign */ options.port = port; options.versionCheck = versionCheck; - options.releaseNotesData = releaseNotesData; options.configType = 'DEVELOPMENT'; options.configDir = resolve(options.configDir); options.outputDir = options.smokeTest @@ -83,35 +80,44 @@ export async function buildDevStandalone( // We hope to remove this in SB8 let presets = await loadAllPresets({ corePresets, - overridePresets: [], + overridePresets: [ + require.resolve('@storybook/core-server/dist/presets/common-override-preset'), + ], ...options, }); const { renderer, builder, disableTelemetry } = await presets.apply('core', {}); + invariant(builder, 'No builder configured in core.builder'); + if (!options.disableTelemetry && !disableTelemetry) { if (versionCheck.success && !versionCheck.cached) { telemetry('version-update'); } } - const builderName = typeof builder === 'string' ? builder : builder?.name; + const builderName = typeof builder === 'string' ? builder : builder.name; const [previewBuilder, managerBuilder] = await Promise.all([ getPreviewBuilder(builderName, options.configDir), getManagerBuilder(), ]); + const resolvedRenderer = renderer && resolveAddonName(options.configDir, renderer, options); + // Load second pass: all presets are applied in order presets = await loadAllPresets({ corePresets: [ require.resolve('@storybook/core-server/dist/presets/common-preset'), ...(managerBuilder.corePresets || []), ...(previewBuilder.corePresets || []), - ...(renderer ? [resolveAddonName(options.configDir, renderer, options)] : []), + ...(resolvedRenderer ? [resolvedRenderer] : []), ...corePresets, require.resolve('@storybook/core-server/dist/presets/babel-cache-preset'), ], - overridePresets: previewBuilder.overridePresets, + overridePresets: [ + ...(previewBuilder.overridePresets || []), + require.resolve('@storybook/core-server/dist/presets/common-override-preset'), + ], ...options, }); @@ -128,11 +134,10 @@ export async function buildDevStandalone( fullOptions ); - const previewTotalTime = previewResult && previewResult.totalTime; - const managerTotalTime = managerResult && managerResult.totalTime; - - const previewStats = previewResult && previewResult.stats; - const managerStats = managerResult && managerResult.stats; + const previewTotalTime = previewResult?.totalTime; + const managerTotalTime = managerResult?.totalTime; + const previewStats = previewResult?.stats; + const managerStats = managerResult?.stats; if (options.webpackStatsJson) { const target = options.webpackStatsJson === true ? options.outputDir : options.webpackStatsJson; @@ -160,15 +165,17 @@ export async function buildDevStandalone( ? frameworkName.split('@storybook/')[1] : frameworkName; - outputStartupInformation({ - updateInfo: versionCheck, - version, - name, - address, - networkAddress, - managerTotalTime, - previewTotalTime, - }); + if (!options.quiet) { + outputStartupInformation({ + updateInfo: versionCheck, + version: packageJson.version, + name, + address, + networkAddress, + managerTotalTime, + previewTotalTime, + }); + } } return { port, address, networkAddress }; } diff --git a/code/lib/core-server/src/build-static.ts b/code/lib/core-server/src/build-static.ts index 8bbfff506316..810c871724fd 100644 --- a/code/lib/core-server/src/build-static.ts +++ b/code/lib/core-server/src/build-static.ts @@ -1,9 +1,7 @@ import chalk from 'chalk'; import { copy, emptyDir, ensureDir } from 'fs-extra'; import { dirname, isAbsolute, join, resolve } from 'path'; -import { dedent } from 'ts-dedent'; import { global } from '@storybook/global'; - import { logger } from '@storybook/node-logger'; import { telemetry, getPrecedingUpgrade } from '@storybook/telemetry'; import type { @@ -22,6 +20,7 @@ import { normalizeStories, resolveAddonName, } from '@storybook/core-common'; +import { ConflictingStaticDirConfigError } from '@storybook/core-events/server-errors'; import isEqual from 'lodash/isEqual.js'; import { outputStats } from './utils/output-stats'; @@ -85,34 +84,43 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption require.resolve('@storybook/core-server/dist/presets/common-preset'), ...corePresets, ], - overridePresets: [], + overridePresets: [ + require.resolve('@storybook/core-server/dist/presets/common-override-preset'), + ], ...options, }); const [previewBuilder, managerBuilder] = await getBuilders({ ...options, presets }); const { renderer } = await presets.apply('core', {}); - + const resolvedRenderer = renderer + ? resolveAddonName(options.configDir, renderer, options) + : undefined; presets = await loadAllPresets({ corePresets: [ require.resolve('@storybook/core-server/dist/presets/common-preset'), ...(managerBuilder.corePresets || []), ...(previewBuilder.corePresets || []), - ...(renderer ? [resolveAddonName(options.configDir, renderer, options)] : []), + ...(resolvedRenderer ? [resolvedRenderer] : []), ...corePresets, require.resolve('@storybook/core-server/dist/presets/babel-cache-preset'), ], - overridePresets: previewBuilder.overridePresets || [], + overridePresets: [ + ...(previewBuilder.overridePresets || []), + require.resolve('@storybook/core-server/dist/presets/common-override-preset'), + ], ...options, }); - const [features, core, staticDirs, storyIndexers, stories, docsOptions] = await Promise.all([ - presets.apply('features'), - presets.apply('core'), - presets.apply('staticDirs'), - presets.apply('storyIndexers', []), - presets.apply('stories'), - presets.apply('docs', {}), - ]); + const [features, core, staticDirs, indexers, deprecatedStoryIndexers, stories, docsOptions] = + await Promise.all([ + presets.apply('features'), + presets.apply('core'), + presets.apply('staticDirs'), + presets.apply('experimental_indexers', []), + presets.apply('storyIndexers', []), + presets.apply('stories'), + presets.apply('docs', {}), + ]); const fullOptions: Options = { ...options, @@ -121,13 +129,7 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption }; if (options.staticDir && !isEqual(staticDirs, defaultStaticDirs)) { - throw new Error(dedent` - Conflict when trying to read staticDirs: - * Storybook's configuration option: 'staticDirs' - * Storybook's CLI flag: '--staticDir' or '-s' - - Choose one of them, but not both. - `); + throw new ConflictingStaticDirConfigError(); } const effects: Promise[] = []; @@ -151,7 +153,8 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption ); effects.push(copy(coreServerPublicDir, options.outputDir)); - let initializedStoryIndexGenerator: Promise = Promise.resolve(undefined); + let initializedStoryIndexGenerator: Promise = + Promise.resolve(undefined); if ((features?.buildStoriesJson || features?.storyStoreV7) && !options.ignorePreview) { const workingDir = process.cwd(); const directories = { @@ -161,7 +164,8 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption const normalizedStories = normalizeStories(stories, directories); const generator = new StoryIndexGenerator(normalizedStories, { ...directories, - storyIndexers, + storyIndexers: deprecatedStoryIndexers, + indexers, docs: docsOptions, storiesV2Compatibility: !features?.storyStoreV7, storyStoreV7: !!features?.storyStoreV7, @@ -171,12 +175,15 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption effects.push( extractStoriesJson( join(options.outputDir, 'stories.json'), - initializedStoryIndexGenerator, + initializedStoryIndexGenerator as Promise, convertToIndexV3 ) ); effects.push( - extractStoriesJson(join(options.outputDir, 'index.json'), initializedStoryIndexGenerator) + extractStoriesJson( + join(options.outputDir, 'index.json'), + initializedStoryIndexGenerator as Promise + ) ); } diff --git a/code/lib/core-server/src/dev-server.ts b/code/lib/core-server/src/dev-server.ts index a66de7bb5a89..2eb1ea420cda 100644 --- a/code/lib/core-server/src/dev-server.ts +++ b/code/lib/core-server/src/dev-server.ts @@ -1,5 +1,6 @@ import express from 'express'; import compression from 'compression'; +import invariant from 'tiny-invariant'; import type { CoreConfig, Options, StorybookConfig } from '@storybook/types'; @@ -29,18 +30,18 @@ export async function storybookDevServer(options: Options) { options.presets.apply('core'), ]); - const serverChannel = getServerChannel(server); + const serverChannel = await options.presets.apply( + 'experimental_serverChannel', + getServerChannel(server) + ); - let indexError: Error; + let indexError: Error | undefined; // try get index generator, if failed, send telemetry without storyCount, then rethrow the error - const initializedStoryIndexGenerator: Promise = getStoryIndexGenerator( - features, - options, - serverChannel - ).catch((err) => { - indexError = err; - return undefined; - }); + const initializedStoryIndexGenerator: Promise = + getStoryIndexGenerator(features ?? {}, options, serverChannel).catch((err) => { + indexError = err; + return undefined; + }); app.use(compression({ level: 1 })); @@ -48,22 +49,24 @@ export async function storybookDevServer(options: Options) { options.extendServer(server); } - app.use(getAccessControlMiddleware(core?.crossOriginIsolated)); + app.use(getAccessControlMiddleware(core?.crossOriginIsolated ?? false)); app.use(getCachingMiddleware()); getMiddleware(options.configDir)(router); app.use(router); - const { port, host } = options; + const { port, host, initialPath } = options; + invariant(port, 'expected options to have a port'); const proto = options.https ? 'https' : 'http'; - const { address, networkAddress } = getServerAddresses(port, host, proto); + const { address, networkAddress } = getServerAddresses(port, host, proto, initialPath); const listening = new Promise((resolve, reject) => { // @ts-expect-error (Following line doesn't match TypeScript signature at all 🤔) server.listen({ port, host }, (error: Error) => (error ? reject(error) : resolve())); }); + invariant(core?.builder, 'no builder configured!'); const builderName = typeof core?.builder === 'string' ? core.builder : core?.builder?.name; const [previewBuilder, managerBuilder] = await Promise.all([ diff --git a/code/lib/core-server/src/presets/common-override-preset.ts b/code/lib/core-server/src/presets/common-override-preset.ts new file mode 100644 index 000000000000..55a55bb0f117 --- /dev/null +++ b/code/lib/core-server/src/presets/common-override-preset.ts @@ -0,0 +1,14 @@ +import type { PresetProperty, StorybookConfig } from '@storybook/types'; + +export const framework: PresetProperty<'framework', StorybookConfig> = async (config) => { + // This will get called with the values from the user's main config, but before + // framework preset from framework packages e.g. react-webpack5 gets called. + // This means we can add default values to the framework config, before it's requested by other packages. + const name = typeof config === 'string' ? config : config?.name; + const options = typeof config === 'string' ? {} : config?.options || {}; + + return { + name, + options, + }; +}; diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index 7b253ac65a86..9d581c307c73 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -1,6 +1,8 @@ -import { pathExists, readFile } from 'fs-extra'; +import fs, { pathExists, readFile } from 'fs-extra'; import { deprecate, logger } from '@storybook/node-logger'; +import { telemetry } from '@storybook/telemetry'; import { + findConfigFile, getDirectoryFromWorkingDir, getPreviewBodyTemplate, getPreviewHeadTemplate, @@ -8,18 +10,32 @@ import { } from '@storybook/core-common'; import type { CLIOptions, - IndexerOptions, - StoryIndexer, CoreConfig, + Indexer, Options, - StorybookConfig, PresetPropertyFn, + StorybookConfig, } from '@storybook/types'; -import { loadCsf } from '@storybook/csf-tools'; +import { printConfig, readConfig, readCsf } from '@storybook/csf-tools'; import { join } from 'path'; import { dedent } from 'ts-dedent'; +import fetch from 'node-fetch'; +import type { Channel } from '@storybook/channels'; +import type { WhatsNewCache, WhatsNewData } from '@storybook/core-events'; +import { + REQUEST_WHATS_NEW_DATA, + RESULT_WHATS_NEW_DATA, + TELEMETRY_ERROR, + SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, +} from '@storybook/core-events'; +import invariant from 'tiny-invariant'; import { parseStaticDir } from '../utils/server-statics'; import { defaultStaticDirs } from '../utils/constants'; +import { sendTelemetryError } from '../withTelemetry'; + +const interpolate = (string: string, data: Record = {}) => + Object.entries(data).reduce((acc, [k, v]) => acc.replace(new RegExp(`%${k}%`, 'g'), v), string); const defaultFavicon = require.resolve('@storybook/core-server/public/favicon.svg'); @@ -29,7 +45,7 @@ export const staticDirs: PresetPropertyFn<'staticDirs'> = async (values = []) => ]; export const favicon = async ( - value: string, + value: string | undefined, options: Pick ) => { if (value) { @@ -179,20 +195,15 @@ export const features = async ( legacyDecoratorFileOrder: false, }); -export const storyIndexers = async (indexers?: StoryIndexer[]) => { - const csfIndexer = async (fileName: string, opts: IndexerOptions) => { - const code = (await readFile(fileName, 'utf-8')).toString(); - return loadCsf(code, { ...opts, fileName }).parse(); - }; - return [ - { - test: /(stories|story)\.[tj]sx?$/, - indexer: csfIndexer, - }, - ...(indexers || []), - ]; +export const csfIndexer: Indexer = { + test: /(stories|story)\.(m?js|ts)x?$/, + index: async (fileName, options) => (await readCsf(fileName, options)).parse().indexInputs, }; +// eslint-disable-next-line @typescript-eslint/naming-convention +export const experimental_indexers: StorybookConfig['experimental_indexers'] = (existingIndexers) => + [csfIndexer].concat(existingIndexers || []); + export const frameworkOptions = async ( _: never, options: Options @@ -217,3 +228,119 @@ export const docs = ( ...docsOptions, docsMode, }); + +export const managerHead = async (_: any, options: Options) => { + const location = join(options.configDir, 'manager-head.html'); + if (await pathExists(location)) { + const contents = readFile(location, 'utf-8'); + const interpolations = options.presets.apply>('env'); + + return interpolate(await contents, await interpolations); + } + + return ''; +}; + +const WHATS_NEW_CACHE = 'whats-new-cache'; +const WHATS_NEW_URL = 'https://storybook.js.org/whats-new/v1'; + +// Grabbed from the implementation: https://github.com/storybookjs/dx-functions/blob/main/netlify/functions/whats-new.ts +type WhatsNewResponse = { + title: string; + url: string; + blogUrl?: string; + publishedAt: string; + excerpt: string; +}; + +type OptionsWithRequiredCache = Exclude & Required>; + +// eslint-disable-next-line @typescript-eslint/naming-convention +export const experimental_serverChannel = async ( + channel: Channel, + options: OptionsWithRequiredCache +) => { + const coreOptions = await options.presets.apply('core'); + + channel.on(SET_WHATS_NEW_CACHE, async (data: WhatsNewCache) => { + const cache: WhatsNewCache = await options.cache.get(WHATS_NEW_CACHE).catch((e) => { + logger.verbose(e); + return {}; + }); + await options.cache.set(WHATS_NEW_CACHE, { ...cache, ...data }); + }); + + channel.on(REQUEST_WHATS_NEW_DATA, async () => { + try { + const post = (await fetch(WHATS_NEW_URL).then(async (response) => { + if (response.ok) return response.json(); + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw response; + })) as WhatsNewResponse; + + const configFileName = findConfigFile('main', options.configDir); + if (!configFileName) + throw new Error(`unable to find storybook main file in ${options.configDir}`); + const main = await readConfig(configFileName); + const disableWhatsNewNotifications = main.getFieldValue([ + 'core', + 'disableWhatsNewNotifications', + ]); + + const cache: WhatsNewCache = (await options.cache.get(WHATS_NEW_CACHE)) ?? {}; + const data = { + ...post, + status: 'SUCCESS', + postIsRead: post.url === cache.lastReadPost, + showNotification: post.url !== cache.lastDismissedPost && post.url !== cache.lastReadPost, + disableWhatsNewNotifications, + } satisfies WhatsNewData; + channel.emit(RESULT_WHATS_NEW_DATA, { data }); + } catch (e) { + logger.verbose(e instanceof Error ? e.message : String(e)); + channel.emit(RESULT_WHATS_NEW_DATA, { + data: { status: 'ERROR' } satisfies WhatsNewData, + }); + } + }); + + channel.on( + TOGGLE_WHATS_NEW_NOTIFICATIONS, + async ({ disableWhatsNewNotifications }: { disableWhatsNewNotifications: boolean }) => { + const isTelemetryEnabled = coreOptions.disableTelemetry !== true; + try { + const mainPath = findConfigFile('main', options.configDir); + invariant(mainPath, `unable to find storybook main file in ${options.configDir}`); + const main = await readConfig(mainPath); + main.setFieldValue(['core', 'disableWhatsNewNotifications'], disableWhatsNewNotifications); + await fs.writeFile(mainPath, printConfig(main).code); + if (isTelemetryEnabled) { + await telemetry('core-config', { disableWhatsNewNotifications }); + } + } catch (error) { + invariant(error instanceof Error); + if (isTelemetryEnabled) { + await sendTelemetryError(error, 'core-config', { + cliOptions: options, + presetOptions: { ...options, corePresets: [], overridePresets: [] }, + skipPrompt: true, + }); + } + } + } + ); + + channel.on(TELEMETRY_ERROR, async (error) => { + const isTelemetryEnabled = coreOptions.disableTelemetry !== true; + + if (isTelemetryEnabled) { + await sendTelemetryError(error, 'browser', { + cliOptions: options, + presetOptions: { ...options, corePresets: [], overridePresets: [] }, + skipPrompt: true, + }); + } + }); + + return channel; +}; diff --git a/code/lib/core-server/src/standalone.ts b/code/lib/core-server/src/standalone.ts index 392f9027a000..bef85d55023d 100644 --- a/code/lib/core-server/src/standalone.ts +++ b/code/lib/core-server/src/standalone.ts @@ -4,7 +4,7 @@ import { buildDevStandalone } from './build-dev'; async function build(options: any = {}, frameworkOptions: any = {}) { const { mode = 'dev' } = options; - const { packageJson } = readUpSync({ cwd: __dirname }); + const packageJson = readUpSync({ cwd: __dirname })?.packageJson; const commonOptions = { ...options, diff --git a/code/lib/core-server/src/typings.d.ts b/code/lib/core-server/src/typings.d.ts index b9b16282161c..7ebf6a02c0b4 100644 --- a/code/lib/core-server/src/typings.d.ts +++ b/code/lib/core-server/src/typings.d.ts @@ -6,10 +6,4 @@ declare module '@aw-web-design/x-default-browser'; declare module '@discoveryjs/json-ext'; declare module 'watchpack'; -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - legacyMdx1?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts new file mode 100644 index 000000000000..882c0a9f5235 --- /dev/null +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts @@ -0,0 +1,1485 @@ +/* eslint-disable @typescript-eslint/no-shadow */ +/// ; + +/** + * @jest-environment node + */ + +import path from 'path'; +import fs from 'fs-extra'; +import { normalizeStoriesEntry } from '@storybook/core-common'; +import type { NormalizedStoriesSpecifier, StoryIndexEntry } from '@storybook/types'; +import { loadCsf, getStorySortParameter } from '@storybook/csf-tools'; +import { toId } from '@storybook/csf'; +import { logger, once } from '@storybook/node-logger'; + +import type { StoryIndexGeneratorOptions } from './StoryIndexGenerator'; +import { StoryIndexGenerator } from './StoryIndexGenerator'; + +jest.mock('@storybook/csf-tools'); +jest.mock('@storybook/csf', () => { + const csf = jest.requireActual('@storybook/csf'); + return { + ...csf, + toId: jest.fn(csf.toId), + }; +}); + +jest.mock('@storybook/node-logger'); + +const toIdMock = toId as jest.Mock>; +const loadCsfMock = loadCsf as jest.Mock>; +const getStorySortParameterMock = getStorySortParameter as jest.Mock< + ReturnType +>; + +const csfIndexer = async (fileName: string, opts: any) => { + const code = (await fs.readFile(fileName, 'utf-8')).toString(); + return loadCsf(code, { ...opts, fileName }).parse(); +}; + +const storiesMdxIndexer = async (fileName: string, opts: any) => { + let code = (await fs.readFile(fileName, 'utf-8')).toString(); + const { compile } = await import('@storybook/mdx2-csf'); + code = await compile(code, {}); + return loadCsf(code, { ...opts, fileName }).parse(); +}; + +const options: StoryIndexGeneratorOptions = { + configDir: path.join(__dirname, '__mockdata__'), + workingDir: path.join(__dirname, '__mockdata__'), + storyIndexers: [ + { test: /\.stories\.mdx$/, indexer: storiesMdxIndexer }, + { test: /\.stories\.(m?js|ts)x?$/, indexer: csfIndexer }, + ], + indexers: [], + storiesV2Compatibility: false, + storyStoreV7: true, + docs: { defaultName: 'docs', autodocs: false }, +}; + +describe('StoryIndexGenerator with deprecated indexer API', () => { + beforeEach(() => { + const actual = jest.requireActual('@storybook/csf-tools'); + loadCsfMock.mockImplementation(actual.loadCsf); + jest.mocked(logger.warn).mockClear(); + jest.mocked(once.warn).mockClear(); + }); + describe('extraction', () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + describe('single file specifier', () => { + it('extracts stories from the right files', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.js', + options + ); + + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); + describe('non-recursive specifier', () => { + it('extracts stories from the right files', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/*/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "nested-button--story-one": Object { + "id": "nested-button--story-one", + "importPath": "./src/nested/Button.stories.ts", + "name": "Story One", + "tags": Array [ + "component-tag", + "story", + ], + "title": "nested/Button", + "type": "story", + }, + "second-nested-g--story-one": Object { + "id": "second-nested-g--story-one", + "importPath": "./src/second-nested/G.stories.ts", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "second-nested/G", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); + describe('recursive specifier', () => { + it('extracts stories from the right files', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + "b--story-one": Object { + "id": "b--story-one", + "importPath": "./src/B.stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "B", + "type": "story", + }, + "d--story-one": Object { + "id": "d--story-one", + "importPath": "./src/D.stories.jsx", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "D", + "type": "story", + }, + "first-nested-deeply-f--story-one": Object { + "id": "first-nested-deeply-f--story-one", + "importPath": "./src/first-nested/deeply/F.stories.js", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "first-nested/deeply/F", + "type": "story", + }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + "type": "story", + }, + "nested-button--story-one": Object { + "id": "nested-button--story-one", + "importPath": "./src/nested/Button.stories.ts", + "name": "Story One", + "tags": Array [ + "component-tag", + "story", + ], + "title": "nested/Button", + "type": "story", + }, + "second-nested-g--story-one": Object { + "id": "second-nested-g--story-one", + "importPath": "./src/second-nested/G.stories.ts", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "second-nested/G", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); + + describe('mdx tagged components', () => { + it('adds docs entry with docs enabled', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/nested/Page.stories.mdx', + options + ); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + }); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "page--docs": Object { + "id": "page--docs", + "importPath": "./src/nested/Page.stories.mdx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "stories-mdx", + "docs", + ], + "title": "Page", + "type": "docs", + }, + "page--story-one": Object { + "id": "page--story-one", + "importPath": "./src/nested/Page.stories.mdx", + "name": "StoryOne", + "tags": Array [ + "stories-mdx", + "story", + ], + "title": "Page", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); + + describe('autodocs', () => { + const autodocsOptions = { + ...options, + docs: { ...options.docs, autodocs: 'tag' as const }, + }; + it('generates an entry per CSF file with the autodocs tag', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + "b--docs": Object { + "id": "b--docs", + "importPath": "./src/B.stories.ts", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "B", + "type": "docs", + }, + "b--story-one": Object { + "id": "b--story-one", + "importPath": "./src/B.stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "B", + "type": "story", + }, + "d--docs": Object { + "id": "d--docs", + "importPath": "./src/D.stories.jsx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "D", + "type": "docs", + }, + "d--story-one": Object { + "id": "d--story-one", + "importPath": "./src/D.stories.jsx", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "D", + "type": "story", + }, + "first-nested-deeply-f--story-one": Object { + "id": "first-nested-deeply-f--story-one", + "importPath": "./src/first-nested/deeply/F.stories.js", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "first-nested/deeply/F", + "type": "story", + }, + "h--docs": Object { + "id": "h--docs", + "importPath": "./src/H.stories.mjs", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "H", + "type": "docs", + }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + "type": "story", + }, + "nested-button--story-one": Object { + "id": "nested-button--story-one", + "importPath": "./src/nested/Button.stories.ts", + "name": "Story One", + "tags": Array [ + "component-tag", + "story", + ], + "title": "nested/Button", + "type": "story", + }, + "second-nested-g--story-one": Object { + "id": "second-nested-g--story-one", + "importPath": "./src/second-nested/G.stories.ts", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "second-nested/G", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + + const autodocsTrueOptions = { + ...autodocsOptions, + docs: { + ...autodocsOptions.docs, + autodocs: true, + }, + }; + it('generates an entry for every CSF file when docsOptions.autodocs = true', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], autodocsTrueOptions); + await generator.initialize(); + + expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` + Array [ + "a--docs", + "a--story-one", + "b--docs", + "b--story-one", + "d--docs", + "d--story-one", + "h--docs", + "h--story-one", + "first-nested-deeply-f--docs", + "first-nested-deeply-f--story-one", + "nested-button--docs", + "nested-button--story-one", + "second-nested-g--docs", + "second-nested-g--story-one", + ] + `); + }); + + it('adds the autodocs tag to the autogenerated docs entries', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], autodocsTrueOptions); + await generator.initialize(); + + const index = await generator.getIndex(); + expect(index.entries['first-nested-deeply-f--docs'].tags).toEqual( + expect.arrayContaining(['autodocs']) + ); + }); + + it('throws an error if you attach a named MetaOf entry which clashes with a tagged autodocs entry', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/B.stories.ts', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/MetaOfClashingDefaultName.mdx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); + await generator.initialize(); + + await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./errors/MetaOfClashingDefaultName.mdx,./src/B.stories.ts"` + ); + }); + + it('throws an error if you attach a unnamed MetaOf entry with the same name as the CSF file that clashes with a tagged autodocs entry', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/B.stories.ts', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/B.mdx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); + await generator.initialize(); + + await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./errors/B.mdx,./src/B.stories.ts"` + ); + }); + + it('allows you to create a second unnamed MetaOf entry that does not clash with autodocs', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/B.stories.ts', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/MetaOfNoName.mdx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "b--docs": Object { + "id": "b--docs", + "importPath": "./src/B.stories.ts", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "B", + "type": "docs", + }, + "b--metaofnoname": Object { + "id": "b--metaofnoname", + "importPath": "./errors/MetaOfNoName.mdx", + "name": "MetaOfNoName", + "storiesImports": Array [ + "./src/B.stories.ts", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "B", + "type": "docs", + }, + "b--story-one": Object { + "id": "b--story-one", + "importPath": "./src/B.stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "B", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + it('allows you to create a second MetaOf entry with a different name to autodocs', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/B.stories.ts', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/MetaOfName.mdx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "b--docs": Object { + "id": "b--docs", + "importPath": "./src/B.stories.ts", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "B", + "type": "docs", + }, + "b--name": Object { + "id": "b--name", + "importPath": "./errors/MetaOfName.mdx", + "name": "name", + "storiesImports": Array [ + "./src/B.stories.ts", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "B", + "type": "docs", + }, + "b--story-one": Object { + "id": "b--story-one", + "importPath": "./src/B.stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "B", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + + it('allows you to override autodocs with MetaOf if it is automatic', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.js', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/A.mdx', + options + ); + + const generator = new StoryIndexGenerator( + [csfSpecifier, docsSpecifier], + autodocsTrueOptions + ); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--docs": Object { + "id": "a--docs", + "importPath": "./errors/A.mdx", + "name": "docs", + "storiesImports": Array [ + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "A", + "type": "docs", + }, + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + + it('generates a combined entry if there are two stories files for the same title', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './duplicate/*.stories.(ts|js|mjs|jsx)', + options + ); + + const generator = new StoryIndexGenerator([specifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "duplicate-a--docs": Object { + "id": "duplicate-a--docs", + "importPath": "./duplicate/A.stories.js", + "name": "docs", + "storiesImports": Array [ + "./duplicate/SecondA.stories.js", + ], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "duplicate/A", + "type": "docs", + }, + "duplicate-a--story-one": Object { + "id": "duplicate-a--story-one", + "importPath": "./duplicate/A.stories.js", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "duplicate/A", + "type": "story", + }, + "duplicate-a--story-two": Object { + "id": "duplicate-a--story-two", + "importPath": "./duplicate/SecondA.stories.js", + "name": "Story Two", + "tags": Array [ + "autodocs", + "story", + ], + "title": "duplicate/A", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + + // https://github.com/storybookjs/storybook/issues/19142 + it('does not generate a docs page entry if there are no stories in the CSF file', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/NoStories.stories.ts', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object {}, + "v": 4, + } + `); + }); + }); + + describe('docs specifier', () => { + it('creates correct docs entries', async () => { + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--metaof": Object { + "id": "a--metaof", + "importPath": "./src/docs2/MetaOf.mdx", + "name": "MetaOf", + "storiesImports": Array [ + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "A", + "type": "docs", + }, + "a--second-docs": Object { + "id": "a--second-docs", + "importPath": "./src/docs2/SecondMetaOf.mdx", + "name": "Second Docs", + "storiesImports": Array [ + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "A", + "type": "docs", + }, + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + "componentreference--docs": Object { + "id": "componentreference--docs", + "importPath": "./src/docs2/ComponentReference.mdx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "ComponentReference", + "type": "docs", + }, + "docs2-yabbadabbadooo--docs": Object { + "id": "docs2-yabbadabbadooo--docs", + "importPath": "./src/docs2/Title.mdx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "docs2/Yabbadabbadooo", + "type": "docs", + }, + "notitle--docs": Object { + "id": "notitle--docs", + "importPath": "./src/docs2/NoTitle.mdx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "NoTitle", + "type": "docs", + }, + }, + "v": 4, + } + `); + }); + + it('does not append title prefix if meta references a CSF file', async () => { + const generator = new StoryIndexGenerator( + [ + storiesSpecifier, + normalizeStoriesEntry( + { directory: './src/docs2', files: '**/*.mdx', titlePrefix: 'titlePrefix' }, + options + ), + ], + options + ); + await generator.initialize(); + + // NOTE: `toMatchInlineSnapshot` on objects sorts the keys, but in actuality, they are + // not sorted by default. + expect(Object.values((await generator.getIndex()).entries).map((e) => e.title)) + .toMatchInlineSnapshot(` + Array [ + "A", + "titlePrefix/ComponentReference", + "A", + "titlePrefix/NoTitle", + "A", + "titlePrefix/docs2/Yabbadabbadooo", + ] + `); + }); + + it('Allows you to override default name for docs files', async () => { + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], { + ...options, + docs: { + ...options.docs, + defaultName: 'Info', + }, + }); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--metaof": Object { + "id": "a--metaof", + "importPath": "./src/docs2/MetaOf.mdx", + "name": "MetaOf", + "storiesImports": Array [ + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "A", + "type": "docs", + }, + "a--second-docs": Object { + "id": "a--second-docs", + "importPath": "./src/docs2/SecondMetaOf.mdx", + "name": "Second Docs", + "storiesImports": Array [ + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "A", + "type": "docs", + }, + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + "componentreference--info": Object { + "id": "componentreference--info", + "importPath": "./src/docs2/ComponentReference.mdx", + "name": "Info", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "ComponentReference", + "type": "docs", + }, + "docs2-yabbadabbadooo--info": Object { + "id": "docs2-yabbadabbadooo--info", + "importPath": "./src/docs2/Title.mdx", + "name": "Info", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "docs2/Yabbadabbadooo", + "type": "docs", + }, + "notitle--info": Object { + "id": "notitle--info", + "importPath": "./src/docs2/NoTitle.mdx", + "name": "Info", + "storiesImports": Array [], + "tags": Array [ + "unattached-mdx", + "docs", + ], + "title": "NoTitle", + "type": "docs", + }, + }, + "v": 4, + } + `); + }); + + it('pulls the attached story file to the front of the list', async () => { + const generator = new StoryIndexGenerator( + [ + normalizeStoriesEntry('./src/A.stories.js', options), + normalizeStoriesEntry('./src/B.stories.ts', options), + normalizeStoriesEntry('./complex/TwoStoryReferences.mdx', options), + ], + options + ); + await generator.initialize(); + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "a--story-one": Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "name": "Story One", + "tags": Array [ + "component-tag", + "story-tag", + "story", + ], + "title": "A", + "type": "story", + }, + "b--story-one": Object { + "id": "b--story-one", + "importPath": "./src/B.stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "B", + "type": "story", + }, + "b--twostoryreferences": Object { + "id": "b--twostoryreferences", + "importPath": "./complex/TwoStoryReferences.mdx", + "name": "TwoStoryReferences", + "storiesImports": Array [ + "./src/B.stories.ts", + "./src/A.stories.js", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "B", + "type": "docs", + }, + }, + "v": 4, + } + `); + }); + }); + + describe('errors', () => { + it('when docs dependencies are missing', async () => { + const generator = new StoryIndexGenerator( + [normalizeStoriesEntry('./src/docs2/MetaOf.mdx', options)], + options + ); + await generator.initialize(); + await expect(() => generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./src/docs2/MetaOf.mdx"` + ); + }); + }); + + describe('warnings', () => { + it('when entries do not match any files', async () => { + const generator = new StoryIndexGenerator( + [normalizeStoriesEntry('./src/docs2/wrong.js', options)], + options + ); + await generator.initialize(); + await generator.getIndex(); + + expect(once.warn).toHaveBeenCalledTimes(1); + const logMessage = jest.mocked(once.warn).mock.calls[0][0]; + expect(logMessage).toContain(`No story files found for the specified pattern`); + }); + }); + + describe('duplicates', () => { + it('errors when two MDX entries reference the same CSF file without a name', async () => { + const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/**/A.mdx', + options + ); + + const generator = new StoryIndexGenerator( + [storiesSpecifier, docsSpecifier, docsErrorSpecifier], + options + ); + await generator.initialize(); + + await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./errors/A.mdx,./errors/duplicate/A.mdx"` + ); + }); + + it('errors when a MDX entry has the same name as a story', async () => { + const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/MetaOfClashingName.mdx', + options + ); + + const generator = new StoryIndexGenerator( + [storiesSpecifier, docsSpecifier, docsErrorSpecifier], + options + ); + await generator.initialize(); + + await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./src/A.stories.js,./errors/MetaOfClashingName.mdx"` + ); + }); + + it('errors when a story has the default docs name', async () => { + const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './errors/A.mdx', + options + ); + + const generator = new StoryIndexGenerator( + [storiesSpecifier, docsSpecifier, docsErrorSpecifier], + { + ...options, + docs: { ...options.docs, defaultName: 'Story One' }, + } + ); + await generator.initialize(); + + await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to index ./src/A.stories.js,./errors/A.mdx"` + ); + }); + it('errors when two duplicate stories exists, with duplicated entries details', async () => { + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], { + ...options, + }); + await generator.initialize(); + const mockEntry: StoryIndexEntry = { + id: 'StoryId', + name: 'StoryName', + title: 'ComponentTitle', + importPath: 'Path', + type: 'story', + }; + expect(() => { + generator.chooseDuplicate(mockEntry, { ...mockEntry, importPath: 'DifferentPath' }); + }).toThrowErrorMatchingInlineSnapshot(`"Duplicate stories with id: StoryId"`); + }); + + it('DOES NOT error when the same MDX file matches two specifiers', async () => { + const generator = new StoryIndexGenerator( + [storiesSpecifier, docsSpecifier, docsSpecifier], + options + ); + await generator.initialize(); + + expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` + Array [ + "a--story-one", + "componentreference--docs", + "a--metaof", + "notitle--docs", + "a--second-docs", + "docs2-yabbadabbadooo--docs", + ] + `); + + expect(logger.warn).not.toHaveBeenCalled(); + }); + + it('DOES NOT throw when the same CSF file matches two specifiers', async () => { + const generator = new StoryIndexGenerator([storiesSpecifier, storiesSpecifier], { + ...options, + }); + await generator.initialize(); + expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` + Array [ + "a--story-one", + ] + `); + + expect(logger.warn).not.toHaveBeenCalled(); + }); + + it('DOES NOT throw when the same CSF file is indexed by both a deprecated and current indexer', async () => { + const generator = new StoryIndexGenerator([storiesSpecifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName, options) => { + const code = (await fs.readFile(fileName, 'utf-8')).toString(); + const csf = loadCsf(code, { ...options, fileName }).parse(); + + // eslint-disable-next-line no-underscore-dangle + return Object.entries(csf._stories).map(([exportName, story]) => ({ + type: 'story', + importPath: fileName, + exportName, + name: story.name, + title: csf.meta.title, + metaId: csf.meta.id, + tags: story.tags ?? csf.meta.tags, + __id: story.id, + })); + }, + }, + ], + }); + await generator.initialize(); + expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` + Array [ + "a--story-one", + ] + `); + + expect(logger.warn).not.toHaveBeenCalled(); + }); + }); + }); + + describe('sorting', () => { + it('runs a user-defined sort function', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); + await generator.initialize(); + + (getStorySortParameter as jest.Mock).mockReturnValueOnce({ + order: ['docs2', 'D', 'B', 'nested', 'A', 'second-nested', 'first-nested/deeply'], + }); + + expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` + Array [ + "docs2-yabbadabbadooo--docs", + "d--story-one", + "b--story-one", + "nested-button--story-one", + "a--metaof", + "a--second-docs", + "a--story-one", + "second-nested-g--story-one", + "componentreference--docs", + "notitle--docs", + "h--story-one", + "first-nested-deeply-f--story-one", + ] + `); + }); + }); + + describe('caching', () => { + describe('no invalidation', () => { + it('does not extract csf files a second time', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + loadCsfMock.mockClear(); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(loadCsfMock).toHaveBeenCalledTimes(7); + + loadCsfMock.mockClear(); + await generator.getIndex(); + expect(loadCsfMock).not.toHaveBeenCalled(); + }); + + it('does not extract docs files a second time', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(6); + + toIdMock.mockClear(); + await generator.getIndex(); + expect(toId).not.toHaveBeenCalled(); + }); + + it('does not call the sort function a second time', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const sortFn = jest.fn(); + getStorySortParameterMock.mockReturnValue(sortFn); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(sortFn).toHaveBeenCalled(); + + sortFn.mockClear(); + await generator.getIndex(); + expect(sortFn).not.toHaveBeenCalled(); + }); + }); + + describe('file changed', () => { + it('calls extract csf file for just the one file', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + loadCsfMock.mockClear(); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(loadCsfMock).toHaveBeenCalledTimes(7); + + generator.invalidate(specifier, './src/B.stories.ts', false); + + loadCsfMock.mockClear(); + await generator.getIndex(); + expect(loadCsfMock).toHaveBeenCalledTimes(1); + }); + + it('calls extract docs file for just the one file', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(6); + + generator.invalidate(docsSpecifier, './src/docs2/Title.mdx', false); + + toIdMock.mockClear(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(1); + }); + + it('calls extract for a csf file and any of its docs dependents', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(6); + + generator.invalidate(storiesSpecifier, './src/A.stories.js', false); + + toIdMock.mockClear(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(3); + }); + + it('does call the sort function a second time', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const sortFn = jest.fn(); + getStorySortParameterMock.mockReturnValue(sortFn); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(sortFn).toHaveBeenCalled(); + + generator.invalidate(specifier, './src/B.stories.ts', false); + + sortFn.mockClear(); + await generator.getIndex(); + expect(sortFn).toHaveBeenCalled(); + }); + }); + + describe('file removed', () => { + it('does not extract csf files a second time', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + loadCsfMock.mockClear(); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(loadCsfMock).toHaveBeenCalledTimes(7); + + generator.invalidate(specifier, './src/B.stories.ts', true); + + loadCsfMock.mockClear(); + await generator.getIndex(); + expect(loadCsfMock).not.toHaveBeenCalled(); + }); + + it('does call the sort function a second time', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + const sortFn = jest.fn(); + getStorySortParameterMock.mockReturnValue(sortFn); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(sortFn).toHaveBeenCalled(); + + generator.invalidate(specifier, './src/B.stories.ts', true); + + sortFn.mockClear(); + await generator.getIndex(); + expect(sortFn).toHaveBeenCalled(); + }); + + it('does not include the deleted stories in results', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/**/*.stories.(ts|js|mjs|jsx)', + options + ); + + loadCsfMock.mockClear(); + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(loadCsfMock).toHaveBeenCalledTimes(7); + + generator.invalidate(specifier, './src/B.stories.ts', true); + + expect(Object.keys((await generator.getIndex()).entries)).not.toContain('b--story-one'); + }); + + it('does not include the deleted docs in results', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(6); + + expect(Object.keys((await generator.getIndex()).entries)).toContain('notitle--docs'); + + generator.invalidate(docsSpecifier, './src/docs2/NoTitle.mdx', true); + + expect(Object.keys((await generator.getIndex()).entries)).not.toContain('notitle--docs'); + }); + + it('cleans up properly on dependent docs deletion', async () => { + const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/A.stories.(ts|js|mjs|jsx)', + options + ); + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/docs2/*.mdx', + options + ); + + const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); + await generator.initialize(); + await generator.getIndex(); + expect(toId).toHaveBeenCalledTimes(6); + + expect(Object.keys((await generator.getIndex()).entries)).toContain('a--metaof'); + + generator.invalidate(docsSpecifier, './src/docs2/MetaOf.mdx', true); + + expect(Object.keys((await generator.getIndex()).entries)).not.toContain('a--metaof'); + + // this will throw if MetaOf is not removed from A's dependents + generator.invalidate(storiesSpecifier, './src/A.stories.js', false); + }); + }); + }); +}); diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts index dda39482fa5d..fad7090789fe 100644 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts @@ -6,16 +6,18 @@ */ import path from 'path'; -import fs from 'fs-extra'; +// @ts-expect-error -- cannot find declaration file +import { createStoriesMdxIndexer } from '@storybook/addon-docs/preset'; import { normalizeStoriesEntry } from '@storybook/core-common'; -import type { NormalizedStoriesSpecifier, StoryIndexer, StoryIndexEntry } from '@storybook/types'; -import { loadCsf, getStorySortParameter } from '@storybook/csf-tools'; +import type { NormalizedStoriesSpecifier, StoryIndexEntry } from '@storybook/types'; +import { readCsf, getStorySortParameter } from '@storybook/csf-tools'; import { toId } from '@storybook/csf'; import { logger, once } from '@storybook/node-logger'; +import type { StoryIndexGeneratorOptions } from './StoryIndexGenerator'; import { StoryIndexGenerator } from './StoryIndexGenerator'; +import { csfIndexer } from '../presets/common-preset'; -jest.mock('@storybook/csf-tools'); jest.mock('@storybook/csf', () => { const csf = jest.requireActual('@storybook/csf'); return { @@ -27,30 +29,25 @@ jest.mock('@storybook/csf', () => { jest.mock('@storybook/node-logger'); const toIdMock = toId as jest.Mock>; -const loadCsfMock = loadCsf as jest.Mock>; +jest.mock('@storybook/csf-tools', () => { + const csfTools = jest.requireActual('@storybook/csf-tools'); + return { + ...csfTools, + readCsf: jest.fn(csfTools.readCsf), + getStorySortParameter: jest.fn(csfTools.getStorySortParameter), + }; +}); + +const readCsfMock = readCsf as jest.Mock>; const getStorySortParameterMock = getStorySortParameter as jest.Mock< ReturnType >; -const csfIndexer = async (fileName: string, opts: any) => { - const code = (await fs.readFile(fileName, 'utf-8')).toString(); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - -const storiesMdxIndexer = async (fileName: string, opts: any) => { - let code = (await fs.readFile(fileName, 'utf-8')).toString(); - const { compile } = await import('@storybook/mdx2-csf'); - code = await compile(code, {}); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - -const options = { +const options: StoryIndexGeneratorOptions = { configDir: path.join(__dirname, '__mockdata__'), workingDir: path.join(__dirname, '__mockdata__'), - storyIndexers: [ - { test: /\.stories\.mdx$/, indexer: storiesMdxIndexer }, - { test: /\.stories\.(js|ts)x?$/, indexer: csfIndexer }, - ] as StoryIndexer[], + storyIndexers: [], + indexers: [csfIndexer, createStoriesMdxIndexer(false)], storiesV2Compatibility: false, storyStoreV7: true, docs: { defaultName: 'docs', autodocs: false }, @@ -58,14 +55,12 @@ const options = { describe('StoryIndexGenerator', () => { beforeEach(() => { - const actual = jest.requireActual('@storybook/csf-tools'); - loadCsfMock.mockImplementation(actual.loadCsf); jest.mocked(logger.warn).mockClear(); jest.mocked(once.warn).mockClear(); }); describe('extraction', () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -91,6 +86,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -103,10 +99,70 @@ describe('StoryIndexGenerator', () => { `); }); }); + describe('single file .story specifier', () => { + it('extracts stories from the right files', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/F.story.ts', + options + ); + + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "f--story-one": Object { + "id": "f--story-one", + "importPath": "./src/F.story.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "F", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); + describe('no prefix stories specifier', () => { + it('extracts stories from the right files', async () => { + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './src/stories.ts', + options + ); + + const generator = new StoryIndexGenerator([specifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "stories--story-one": Object { + "id": "stories--story-one", + "importPath": "./src/stories.ts", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "stories", + "type": "story", + }, + }, + "v": 4, + } + `); + }); + }); describe('non-recursive specifier', () => { it('extracts stories from the right files', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/*/*.stories.(ts|js|jsx)', + './src/*/*.stories.(ts|js|mjs|jsx)', options ); @@ -143,11 +199,10 @@ describe('StoryIndexGenerator', () => { `); }); }); - describe('recursive specifier', () => { it('extracts stories from the right files', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -162,6 +217,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -200,6 +256,17 @@ describe('StoryIndexGenerator', () => { "title": "first-nested/deeply/F", "type": "story", }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + "type": "story", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", @@ -280,7 +347,7 @@ describe('StoryIndexGenerator', () => { }; it('generates an entry per CSF file with the autodocs tag', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -295,6 +362,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -357,6 +425,29 @@ describe('StoryIndexGenerator', () => { "title": "first-nested/deeply/F", "type": "story", }, + "h--docs": Object { + "id": "h--docs", + "importPath": "./src/H.stories.mjs", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "H", + "type": "docs", + }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + "type": "story", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", @@ -393,7 +484,7 @@ describe('StoryIndexGenerator', () => { }; it('generates an entry for every CSF file when docsOptions.autodocs = true', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -408,6 +499,8 @@ describe('StoryIndexGenerator', () => { "b--story-one", "d--docs", "d--story-one", + "h--docs", + "h--story-one", "first-nested-deeply-f--docs", "first-nested-deeply-f--story-one", "nested-button--docs", @@ -420,7 +513,7 @@ describe('StoryIndexGenerator', () => { it('adds the autodocs tag to the autogenerated docs entries', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -629,6 +722,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -643,7 +737,7 @@ describe('StoryIndexGenerator', () => { it('generates a combined entry if there are two stories files for the same title', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './duplicate/*.stories.(ts|js|jsx)', + './duplicate/*.stories.(ts|js|mjs|jsx)', options ); @@ -712,6 +806,47 @@ describe('StoryIndexGenerator', () => { } `); }); + + it('prioritizes using the component id over meta.title for generating its id, if provided. (autodocs)', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './docs-id-generation/A.stories.jsx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier], autodocsOptions); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "my-component-a--docs": Object { + "id": "my-component-a--docs", + "importPath": "./docs-id-generation/A.stories.jsx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "docs", + ], + "title": "A", + "type": "docs", + }, + "my-component-a--story-one": Object { + "id": "my-component-a--story-one", + "importPath": "./docs-id-generation/A.stories.jsx", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "A", + "type": "story", + }, + }, + "v": 4, + } + `); + }); }); describe('docs specifier', () => { @@ -755,6 +890,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -877,6 +1013,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -943,6 +1080,7 @@ describe('StoryIndexGenerator', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -980,6 +1118,53 @@ describe('StoryIndexGenerator', () => { } `); }); + + it('prioritizes using the component id over meta.title for generating its id, if provided. (mdx docs)', async () => { + const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './docs-id-generation/B.stories.jsx', + options + ); + + const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( + './docs-id-generation/B.docs.mdx', + options + ); + + const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], options); + await generator.initialize(); + + expect(await generator.getIndex()).toMatchInlineSnapshot(` + Object { + "entries": Object { + "my-component-b--docs": Object { + "id": "my-component-b--docs", + "importPath": "./docs-id-generation/B.docs.mdx", + "name": "docs", + "storiesImports": Array [ + "./docs-id-generation/B.stories.jsx", + ], + "tags": Array [ + "attached-mdx", + "docs", + ], + "title": "B", + "type": "docs", + }, + "my-component-b--story-one": Object { + "id": "my-component-b--story-one", + "importPath": "./docs-id-generation/B.stories.jsx", + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "B", + "type": "story", + }, + }, + "v": 4, + } + `); + }); }); describe('errors', () => { @@ -1121,7 +1306,7 @@ describe('StoryIndexGenerator', () => { describe('sorting', () => { it('runs a user-defined sort function', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -1132,7 +1317,7 @@ describe('StoryIndexGenerator', () => { const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); await generator.initialize(); - (getStorySortParameter as jest.Mock).mockReturnValueOnce({ + getStorySortParameterMock.mockReturnValueOnce({ order: ['docs2', 'D', 'B', 'nested', 'A', 'second-nested', 'first-nested/deeply'], }); @@ -1148,6 +1333,7 @@ describe('StoryIndexGenerator', () => { "second-nested-g--story-one", "componentreference--docs", "notitle--docs", + "h--story-one", "first-nested-deeply-f--story-one", ] `); @@ -1158,24 +1344,24 @@ describe('StoryIndexGenerator', () => { describe('no invalidation', () => { it('does not extract csf files a second time', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); const generator = new StoryIndexGenerator([specifier], options); await generator.initialize(); await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(6); + expect(readCsfMock).toHaveBeenCalledTimes(7); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); await generator.getIndex(); - expect(loadCsfMock).not.toHaveBeenCalled(); + expect(readCsfMock).not.toHaveBeenCalled(); }); it('does not extract docs files a second time', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -1195,7 +1381,7 @@ describe('StoryIndexGenerator', () => { it('does not call the sort function a second time', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -1215,26 +1401,26 @@ describe('StoryIndexGenerator', () => { describe('file changed', () => { it('calls extract csf file for just the one file', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); const generator = new StoryIndexGenerator([specifier], options); await generator.initialize(); await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(6); + expect(readCsfMock).toHaveBeenCalledTimes(7); generator.invalidate(specifier, './src/B.stories.ts', false); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(1); + expect(readCsfMock).toHaveBeenCalledTimes(1); }); it('calls extract docs file for just the one file', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -1256,7 +1442,7 @@ describe('StoryIndexGenerator', () => { it('calls extract for a csf file and any of its docs dependents', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -1278,7 +1464,7 @@ describe('StoryIndexGenerator', () => { it('does call the sort function a second time', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -1300,26 +1486,26 @@ describe('StoryIndexGenerator', () => { describe('file removed', () => { it('does not extract csf files a second time', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); const generator = new StoryIndexGenerator([specifier], options); await generator.initialize(); await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(6); + expect(readCsfMock).toHaveBeenCalledTimes(7); generator.invalidate(specifier, './src/B.stories.ts', true); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); await generator.getIndex(); - expect(loadCsfMock).not.toHaveBeenCalled(); + expect(readCsfMock).not.toHaveBeenCalled(); }); it('does call the sort function a second time', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); @@ -1339,15 +1525,15 @@ describe('StoryIndexGenerator', () => { it('does not include the deleted stories in results', async () => { const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|jsx)', + './src/**/*.stories.(ts|js|mjs|jsx)', options ); - loadCsfMock.mockClear(); + readCsfMock.mockClear(); const generator = new StoryIndexGenerator([specifier], options); await generator.initialize(); await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(6); + expect(readCsfMock).toHaveBeenCalledTimes(7); generator.invalidate(specifier, './src/B.stories.ts', true); @@ -1356,7 +1542,7 @@ describe('StoryIndexGenerator', () => { it('does not include the deleted docs in results', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( @@ -1378,7 +1564,7 @@ describe('StoryIndexGenerator', () => { it('cleans up properly on dependent docs deletion', async () => { const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|jsx)', + './src/A.stories.(ts|js|mjs|jsx)', options ); const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.ts index 4ed21984da86..d2a195a31463 100644 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.ts +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.ts @@ -19,22 +19,27 @@ import type { V3CompatIndexEntry, StoryId, StoryName, + Indexer, + IndexerOptions, + DeprecatedIndexer, } from '@storybook/types'; import { userOrAutoTitleFromSpecifier, sortStoriesV7 } from '@storybook/preview-api'; -import { normalizeStoryPath } from '@storybook/core-common'; +import { commonGlobOptions, normalizeStoryPath } from '@storybook/core-common'; import { logger, once } from '@storybook/node-logger'; import { getStorySortParameter } from '@storybook/csf-tools'; -import { toId } from '@storybook/csf'; +import { storyNameFromExport, toId } from '@storybook/csf'; import { analyze } from '@storybook/docs-mdx'; import dedent from 'ts-dedent'; import { autoName } from './autoName'; import { IndexingError, MultipleIndexingError } from './IndexingError'; +// Extended type to keep track of the csf meta id so we know the component id when referencing docs in `extractDocs` +type StoryIndexEntryWithMetaId = StoryIndexEntry & { metaId?: string }; /** A .mdx file will produce a docs entry */ type DocsCacheEntry = DocsIndexEntry; /** A *.stories.* file will produce a list of stories and possibly a docs entry */ type StoriesCacheEntry = { - entries: (StoryIndexEntry | DocsIndexEntry)[]; + entries: (StoryIndexEntryWithMetaId | DocsIndexEntry)[]; dependents: Path[]; type: 'stories'; }; @@ -45,6 +50,16 @@ type ErrorEntry = { type CacheEntry = false | StoriesCacheEntry | DocsCacheEntry | ErrorEntry; type SpecifierStoriesCache = Record; +export type StoryIndexGeneratorOptions = { + workingDir: Path; + configDir: Path; + storiesV2Compatibility: boolean; + storyStoreV7: boolean; + storyIndexers: StoryIndexer[]; + indexers: Indexer[]; + docs: DocsOptions; +}; + export const AUTODOCS_TAG = 'autodocs'; export const STORIES_MDX_TAG = 'stories-mdx'; export const PLAY_FN_TAG = 'play-fn'; @@ -94,23 +109,22 @@ export class StoryIndexGenerator { // Cache the last value of `getStoryIndex`. We invalidate (by unsetting) when: // - any file changes, including deletions // - the preview changes [not yet implemented] - private lastIndex?: StoryIndex; + private lastIndex?: StoryIndex | null; // Same as the above but for the error case - private lastError?: Error; + private lastError?: Error | null; constructor( public readonly specifiers: NormalizedStoriesSpecifier[], - public readonly options: { - workingDir: Path; - configDir: Path; - storiesV2Compatibility: boolean; - storyStoreV7: boolean; - storyIndexers: StoryIndexer[]; - docs: DocsOptions; - } + public readonly options: StoryIndexGeneratorOptions ) { this.specifierToCache = new Map(); + if (options.storyIndexers.length > 1) { + // TODO: write migration notes before enabling this warning + // deprecate( + // "'storyIndexers' is deprecated, please use 'indexers' instead. See migration notes at XXX" + // ); + } } async initialize() { @@ -122,7 +136,7 @@ export class StoryIndexGenerator { const fullGlob = slash( path.join(this.options.workingDir, specifier.directory, specifier.files) ); - const files = await glob(fullGlob); + const files = await glob(fullGlob, commonGlobOptions(fullGlob)); if (files.length === 0) { once.warn( @@ -171,6 +185,12 @@ export class StoryIndexGenerator { await Promise.all( this.specifiers.map(async (specifier) => { const entry = this.specifierToCache.get(specifier); + invariant( + entry, + `specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify( + specifier + )}` + ); return Promise.all( Object.keys(entry).map(async (absolutePath) => { if (entry[absolutePath] && !overwrite) return; @@ -185,7 +205,11 @@ export class StoryIndexGenerator { entry[absolutePath] = { type: 'error', - err: new IndexingError(err.message, [relativePath], err.stack), + err: new IndexingError( + err instanceof Error ? err.message : String(err), + [relativePath], + err instanceof Error ? err.stack : undefined + ), }; } }) @@ -213,11 +237,23 @@ export class StoryIndexGenerator { return this.specifiers.flatMap((specifier) => { const cache = this.specifierToCache.get(specifier); + invariant( + cache, + `specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify( + specifier + )}` + ); return Object.values(cache).flatMap((entry): (IndexEntry | ErrorEntry)[] => { if (!entry) return []; if (entry.type === 'docs') return [entry]; if (entry.type === 'error') return [entry]; - return entry.entries; + + return entry.entries.map((item) => { + if (item.type === 'docs') return item; + // Drop the meta id as it isn't part of the index, we just used it for record keeping in `extractDocs` + const { metaId, ...existing } = item; + return existing; + }); }); }); } @@ -240,27 +276,125 @@ export class StoryIndexGenerator { ); } - async extractStories(specifier: NormalizedStoriesSpecifier, absolutePath: Path) { + async extractStories( + specifier: NormalizedStoriesSpecifier, + absolutePath: Path + ): Promise { const relativePath = path.relative(this.options.workingDir, absolutePath); - const entries = [] as IndexEntry[]; const importPath = slash(normalizeStoryPath(relativePath)); - const makeTitle = (userTitle?: string) => { - return userOrAutoTitleFromSpecifier(importPath, specifier, userTitle); + const defaultMakeTitle = (userTitle?: string) => { + const title = userOrAutoTitleFromSpecifier(importPath, specifier, userTitle); + invariant( + title, + "makeTitle created an undefined title. This happens when the fileName doesn't match any specifier from main.js" + ); + return title; }; - const storyIndexer = this.options.storyIndexers.find((indexer) => - indexer.test.exec(absolutePath) - ); - if (!storyIndexer) { - throw new Error(`No matching story indexer found for ${absolutePath}`); + const indexer = (this.options.indexers as StoryIndexer[]) + .concat(this.options.storyIndexers) + .find((ind) => ind.test.exec(absolutePath)); + + invariant(indexer, `No matching indexer found for ${absolutePath}`); + + if (indexer.indexer) { + return this.extractStoriesFromDeprecatedIndexer({ + indexer: indexer.indexer, + indexerOptions: { makeTitle: defaultMakeTitle }, + absolutePath, + importPath, + }); + } + + const indexInputs = await indexer.index(absolutePath, { makeTitle: defaultMakeTitle }); + + const entries: ((StoryIndexEntryWithMetaId | DocsCacheEntry) & { tags: Tag[] })[] = + indexInputs.map((input) => { + const name = input.name ?? storyNameFromExport(input.exportName); + const title = input.title ?? defaultMakeTitle(); + // eslint-disable-next-line no-underscore-dangle + const id = input.__id ?? toId(input.metaId ?? title, storyNameFromExport(input.exportName)); + const tags = (input.tags || []).concat('story'); + + return { + type: 'story', + id, + metaId: input.metaId, + name, + title, + importPath, + tags, + }; + }); + + const { autodocs } = this.options.docs; + // We need a docs entry attached to the CSF file if either: + // a) autodocs is globally enabled + // b) we have autodocs enabled for this file + // c) it is a stories.mdx transpiled to CSF + const hasAutodocsTag = entries.some((entry) => entry.tags.includes(AUTODOCS_TAG)); + const isStoriesMdx = entries.some((entry) => entry.tags.includes(STORIES_MDX_TAG)); + const createDocEntry = + autodocs === true || (autodocs === 'tag' && hasAutodocsTag) || isStoriesMdx; + + if (createDocEntry) { + const name = this.options.docs.defaultName ?? 'Docs'; + const { metaId } = indexInputs[0]; + const { title } = entries[0]; + const tags = indexInputs[0].tags || []; + const id = toId(metaId ?? title, name); + entries.unshift({ + id, + title, + name, + importPath, + type: 'docs', + tags: [...tags, 'docs', ...(!hasAutodocsTag && !isStoriesMdx ? [AUTODOCS_TAG] : [])], + storiesImports: [], + }); } - const csf = await storyIndexer.indexer(absolutePath, { makeTitle }); + + const entriesWithoutDocsOnlyStories = entries.filter( + (entry) => !(entry.type === 'story' && entry.tags.includes('stories-mdx-docsOnly')) + ); + + return { + entries: entriesWithoutDocsOnlyStories, + dependents: [], + type: 'stories', + }; + } + + async extractStoriesFromDeprecatedIndexer({ + indexer, + indexerOptions, + absolutePath, + importPath, + }: { + indexer: DeprecatedIndexer['indexer']; + indexerOptions: IndexerOptions; + absolutePath: Path; + importPath: Path; + }) { + const csf = await indexer(absolutePath, indexerOptions); + + const entries = []; const componentTags = csf.meta.tags || []; csf.stories.forEach(({ id, name, tags: storyTags, parameters }) => { if (!parameters?.docsOnly) { - const tags = [...(storyTags || componentTags), 'story']; - entries.push({ id, title: csf.meta.title, name, importPath, tags, type: 'story' }); + const tags = (csf.meta.tags ?? []).concat(storyTags ?? [], 'story'); + invariant(csf.meta.title); + entries.push({ + id, + title: csf.meta.title, + name, + importPath, + tags, + type: 'story', + // We need to keep track of the csf meta id so we know the component id when referencing docs below in `extractDocs` + metaId: csf.meta.id, + }); } }); @@ -272,8 +406,9 @@ export class StoryIndexGenerator { // a) it is a stories.mdx transpiled to CSF, OR // b) we have docs page enabled for this file if (componentTags.includes(STORIES_MDX_TAG) || autodocsOptedIn) { - const name = this.options.docs.defaultName; - const id = toId(csf.meta.title, name); + const name = this.options.docs.defaultName ?? 'Docs'; + invariant(csf.meta.title, 'expected a title property in csf.meta'); + const id = toId(csf.meta.id || csf.meta.title, name); entries.unshift({ id, title: csf.meta.title, @@ -296,9 +431,10 @@ export class StoryIndexGenerator { async extractDocs(specifier: NormalizedStoriesSpecifier, absolutePath: Path) { const relativePath = path.relative(this.options.workingDir, absolutePath); try { - if (!this.options.storyStoreV7) { - throw new Error(`You cannot use \`.mdx\` files without using \`storyStoreV7\`.`); - } + invariant( + this.options.storyStoreV7, + `You cannot use \`.mdx\` files without using \`storyStoreV7\`.` + ); const normalizedPath = normalizeStoryPath(relativePath); const importPath = slash(normalizedPath); @@ -332,12 +468,12 @@ export class StoryIndexGenerator { // Also, if `result.of` is set, it means that we're using the `` syntax, // so find the `title` defined the file that `meta` points to. - let csfEntry: StoryIndexEntry; + let csfEntry: StoryIndexEntryWithMetaId | undefined; if (result.of) { const absoluteOf = makeAbsolute(result.of, normalizedPath, this.options.workingDir); dependencies.forEach((dep) => { if (dep.entries.length > 0) { - const first = dep.entries.find((e) => e.type !== 'docs') as StoryIndexEntry; + const first = dep.entries.find((e) => e.type !== 'docs') as StoryIndexEntryWithMetaId; if ( path @@ -351,14 +487,15 @@ export class StoryIndexGenerator { sortedDependencies = [dep, ...dependencies.filter((d) => d !== dep)]; }); - if (!csfEntry) - throw new Error( - dedent`Could not find CSF file at path "${result.of}" referenced by \`of={}\` in docs file "${relativePath}". + invariant( + csfEntry, + dedent`Could not find or load CSF file at path "${result.of}" referenced by \`of={}\` in docs file "${relativePath}". - - Does that file exist? - - If so, is it a CSF file (\`.stories.*\`)? - - If so, is it matched by the \`stories\` glob in \`main.js\`?` - ); + - Does that file exist? + - If so, is it a CSF file (\`.stories.*\`)? + - If so, is it matched by the \`stories\` glob in \`main.js\`? + - If so, has the file successfully loaded in Storybook and are its stories visible?` + ); } // Track that we depend on this for easy invalidation later. @@ -368,11 +505,16 @@ export class StoryIndexGenerator { const title = csfEntry?.title || userOrAutoTitleFromSpecifier(importPath, specifier, result.title); - const { defaultName } = this.options.docs; + invariant( + title, + "makeTitle created an undefined title. This happens when a specifier's doesn't have any matches in its fileName" + ); + const defaultName = this.options.docs.defaultName ?? 'Docs'; + const name = result.name || (csfEntry ? autoName(importPath, csfEntry.importPath, defaultName) : defaultName); - const id = toId(title, name); + const id = toId(csfEntry?.metaId || title, name); const docsEntry: DocsCacheEntry = { id, @@ -385,7 +527,7 @@ export class StoryIndexGenerator { }; return docsEntry; } catch (err) { - if (err.source?.match(/mdast-util-mdx-jsx/g)) { + if (err && (err as { source: any }).source?.match(/mdast-util-mdx-jsx/g)) { logger.warn( `💡 This seems to be an MDX2 syntax error. Please refer to the MDX section in the following resource for assistance on how to fix this: ${chalk.yellow( 'https://storybook.js.org/migration-guides/7.0' @@ -497,6 +639,7 @@ export class StoryIndexGenerator { try { const errorEntries = storiesList.filter((entry) => entry.type === 'error'); + if (errorEntries.length) throw new MultipleIndexingError(errorEntries.map((entry) => (entry as ErrorEntry).err)); @@ -511,7 +654,7 @@ export class StoryIndexGenerator { indexEntries[entry.id] = entry; } } catch (err) { - duplicateErrors.push(err); + if (err instanceof IndexingError) duplicateErrors.push(err); } }); if (duplicateErrors.length) throw new MultipleIndexingError(duplicateErrors); @@ -551,9 +694,9 @@ export class StoryIndexGenerator { return this.lastIndex; } catch (err) { - this.lastError = err; - logger.warn(`🚨 ${this.lastError.toString()}`); + this.lastError = err == null || err instanceof Error ? err : undefined; invariant(this.lastError); + logger.warn(`🚨 ${this.lastError.toString()}`); throw this.lastError; } } @@ -561,7 +704,12 @@ export class StoryIndexGenerator { invalidate(specifier: NormalizedStoriesSpecifier, importPath: Path, removed: boolean) { const absolutePath = slash(path.resolve(this.options.workingDir, importPath)); const cache = this.specifierToCache.get(specifier); - + invariant( + cache, + `specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify( + specifier + )}` + ); const cacheEntry = cache[absolutePath]; if (cacheEntry && cacheEntry.type === 'stories') { const { dependents } = cacheEntry; diff --git a/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/A.stories.jsx b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/A.stories.jsx new file mode 100644 index 000000000000..b60660f0ec69 --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/A.stories.jsx @@ -0,0 +1,9 @@ +// Stories for a component with meta.id +const component = {}; +export default { + id: 'my-component-A', + component, + tags: ['autodocs'], +}; + +export const StoryOne = {}; diff --git a/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.docs.mdx b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.docs.mdx new file mode 100644 index 000000000000..c1b5004c4a87 --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.docs.mdx @@ -0,0 +1,7 @@ +import * as Stories from './B.stories'; + + + +# Docs with of + +hello docs diff --git a/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.stories.jsx b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.stories.jsx new file mode 100644 index 000000000000..7cd75992f650 --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/docs-id-generation/B.stories.jsx @@ -0,0 +1,8 @@ +// Stories for a component with meta.id +const component = {}; +export default { + id: 'my-component-B', + component, +}; + +export const StoryOne = {}; diff --git a/code/lib/core-server/src/utils/__mockdata__/src/F.story.ts b/code/lib/core-server/src/utils/__mockdata__/src/F.story.ts new file mode 100644 index 000000000000..bb14d42c7112 --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/src/F.story.ts @@ -0,0 +1,7 @@ +const component = {}; +export default { + component, + tags: ['autodocs'], +}; + +export const StoryOne = {}; diff --git a/code/lib/core-server/src/utils/__mockdata__/src/H.stories.mjs b/code/lib/core-server/src/utils/__mockdata__/src/H.stories.mjs new file mode 100644 index 000000000000..2afb74b5e47c --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/src/H.stories.mjs @@ -0,0 +1,8 @@ +const component = {}; + +export default { + component, + tags: ['autodocs'], +}; + +export const StoryOne = {}; diff --git a/code/lib/core-server/src/utils/__mockdata__/src/stories.ts b/code/lib/core-server/src/utils/__mockdata__/src/stories.ts new file mode 100644 index 000000000000..bb14d42c7112 --- /dev/null +++ b/code/lib/core-server/src/utils/__mockdata__/src/stories.ts @@ -0,0 +1,7 @@ +const component = {}; +export default { + component, + tags: ['autodocs'], +}; + +export const StoryOne = {}; diff --git a/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts b/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts new file mode 100644 index 000000000000..31d15a059b5d --- /dev/null +++ b/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts @@ -0,0 +1,658 @@ +/// ; + +/** + * @jest-environment node + */ + +import path from 'path'; +import { normalizeStoriesEntry } from '@storybook/core-common'; +import type { NormalizedStoriesSpecifier } from '@storybook/types'; + +import type { StoryIndexGeneratorOptions } from '../StoryIndexGenerator'; +import { AUTODOCS_TAG, STORIES_MDX_TAG, StoryIndexGenerator } from '../StoryIndexGenerator'; + +jest.mock('@storybook/node-logger'); + +const options: StoryIndexGeneratorOptions = { + configDir: path.join(__dirname, '..', '__mockdata__'), + workingDir: path.join(__dirname, '..', '__mockdata__'), + storyIndexers: [], + indexers: [], + storiesV2Compatibility: false, + storyStoreV7: true, + docs: { defaultName: 'docs', autodocs: false }, +}; + +describe('story extraction', () => { + it('extracts stories from full indexer inputs', async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + // properties identical to the auto-generated ones, eg. 'StoryOne' -> 'Story One' + { + type: 'story', + importPath: fileName, + exportName: 'StoryOne', + name: 'Story One', + title: 'A', + metaId: 'a', + tags: ['story-tag-from-indexer'], + __id: 'a--story-one', + }, + // properties different from the auto-generated ones, eg. 'StoryOne' -> 'Another Story Name' + { + type: 'story', + importPath: fileName, + exportName: 'StoryOne', + name: 'Another Story Name', + title: 'Custom Title', + metaId: 'custom-id', + tags: ['story-tag-from-indexer'], + __id: 'some-fully-custom-id', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": "a", + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + Object { + "id": "some-fully-custom-id", + "importPath": "./src/A.stories.js", + "metaId": "custom-id", + "name": "Another Story Name", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "Custom Title", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + + it('extracts stories from minimal indexer inputs', async () => { + const relativePath = './src/first-nested/deeply/F.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "f--story-one", + "importPath": "./src/first-nested/deeply/F.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "story", + ], + "title": "F", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + + it('auto-generates title from indexer inputs without title', async () => { + const relativePath = './src/first-nested/deeply/F.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + name: 'Story One', + metaId: 'a', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/first-nested/deeply/F.stories.js", + "metaId": "a", + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "F", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + + it('auto-generates name from indexer inputs without name', async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + title: 'A', + metaId: 'a', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": "a", + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + + it('auto-generates id', async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + // exportName + title -> id + { + exportName: 'StoryOne', + name: 'Story One', + title: 'A', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + // exportName + custom title (ignoring custom name) -> id + { + exportName: 'StoryTwo', + name: 'Custom Name For Second Story', + title: 'Custom Title', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + // exportName + custom metaId (ignoring custom title and name) -> id + { + exportName: 'StoryThree', + metaId: 'custom-meta-id', + title: 'Custom Title', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + Object { + "id": "custom-title--story-two", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Custom Name For Second Story", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "Custom Title", + "type": "story", + }, + Object { + "id": "custom-meta-id--story-three", + "importPath": "./src/A.stories.js", + "metaId": "custom-meta-id", + "name": "Story Three", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "Custom Title", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + + it('auto-generates id, title and name from exportName input', async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); +}); +describe('docs entries from story extraction', () => { + it('adds docs entry when autodocs is globally enabled', async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + docs: { defaultName: 'docs', autodocs: true }, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + name: 'Story One', + title: 'A', + tags: ['story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--docs", + "importPath": "./src/A.stories.js", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "story-tag-from-indexer", + "docs", + "autodocs", + ], + "title": "A", + "type": "docs", + }, + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + it(`adds docs entry when autodocs is "tag" and an entry has the "${AUTODOCS_TAG}" tag`, async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + docs: { defaultName: 'docs', autodocs: 'tag' }, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + name: 'Story One', + title: 'A', + tags: [AUTODOCS_TAG, 'story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--docs", + "importPath": "./src/A.stories.js", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "autodocs", + "story-tag-from-indexer", + "docs", + ], + "title": "A", + "type": "docs", + }, + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "autodocs", + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + it(`DOES NOT adds docs entry when autodocs is false and an entry has the "${AUTODOCS_TAG}" tag`, async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + docs: { defaultName: 'docs', autodocs: false }, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + name: 'Story One', + title: 'A', + tags: [AUTODOCS_TAG, 'story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "autodocs", + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + it(`adds docs entry when an entry has the "${STORIES_MDX_TAG}" tag`, async () => { + const relativePath = './src/A.stories.js'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + docs: { defaultName: 'docs', autodocs: false }, + indexers: [ + { + test: /\.stories\.(m?js|ts)x?$/, + index: async (fileName) => [ + { + exportName: 'StoryOne', + __id: 'a--story-one', + name: 'Story One', + title: 'A', + tags: [STORIES_MDX_TAG, 'story-tag-from-indexer'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "a--docs", + "importPath": "./src/A.stories.js", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "stories-mdx", + "story-tag-from-indexer", + "docs", + ], + "title": "A", + "type": "docs", + }, + Object { + "id": "a--story-one", + "importPath": "./src/A.stories.js", + "metaId": undefined, + "name": "Story One", + "tags": Array [ + "stories-mdx", + "story-tag-from-indexer", + "story", + ], + "title": "A", + "type": "story", + }, + ], + "type": "stories", + } + `); + }); + it(`Only adds a docs entry and not a story entry when an input has the "docsOnly" tag`, async () => { + const relativePath = './src/nested/Page.stories.mdx'; + const absolutePath = path.join(options.workingDir, relativePath); + const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry(relativePath, options); + + const generator = new StoryIndexGenerator([specifier], { + ...options, + docs: { defaultName: 'docs', autodocs: false }, + indexers: [ + { + test: /\.stories\.mdx?$/, + index: async (fileName) => [ + { + exportName: '__page', + __id: 'page--page', + name: 'Page', + title: 'Page', + tags: [STORIES_MDX_TAG, 'stories-mdx-docsOnly'], + importPath: fileName, + type: 'story', + }, + ], + }, + ], + }); + const result = await generator.extractStories(specifier, absolutePath); + + expect(result).toMatchInlineSnapshot(` + Object { + "dependents": Array [], + "entries": Array [ + Object { + "id": "page--docs", + "importPath": "./src/nested/Page.stories.mdx", + "name": "docs", + "storiesImports": Array [], + "tags": Array [ + "stories-mdx", + "stories-mdx-docsOnly", + "docs", + ], + "title": "Page", + "type": "docs", + }, + ], + "type": "stories", + } + `); + }); +}); diff --git a/code/lib/core-server/src/utils/__tests__/release-notes.test.ts b/code/lib/core-server/src/utils/__tests__/release-notes.test.ts deleted file mode 100644 index 71062b7a951b..000000000000 --- a/code/lib/core-server/src/utils/__tests__/release-notes.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { getReleaseNotesData, RELEASE_NOTES_CACHE_KEY } from '../release-notes'; - -describe('getReleaseNotesData', () => { - it('handles errors gracefully', async () => { - const version = '4.0.0'; - // The cache is missing necessary functions. This will cause an error. - const cache = {}; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: version, - showOnFirstLaunch: false, - success: false, - }); - }); - - it('does not show the release notes on first build', async () => { - const version = '4.0.0'; - const set = jest.fn((...args: any[]) => Promise.resolve()); - const cache = { get: () => Promise.resolve([]), set }; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: version, - showOnFirstLaunch: false, - success: true, - }); - expect(set).toHaveBeenCalledWith(RELEASE_NOTES_CACHE_KEY, ['4.0.0']); - }); - - it('shows the release notes after upgrading a major version', async () => { - const version = '4.0.0'; - const set = jest.fn((...args: any[]) => Promise.resolve()); - const cache = { get: () => Promise.resolve(['3.0.0']), set }; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: version, - showOnFirstLaunch: true, - success: true, - }); - expect(set).toHaveBeenCalledWith(RELEASE_NOTES_CACHE_KEY, ['3.0.0', '4.0.0']); - }); - - it('shows the release notes after upgrading a minor version', async () => { - const version = '4.1.0'; - const set = jest.fn((...args: any[]) => Promise.resolve()); - const cache = { get: () => Promise.resolve(['4.0.0']), set }; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: version, - showOnFirstLaunch: true, - success: true, - }); - expect(set).toHaveBeenCalledWith(RELEASE_NOTES_CACHE_KEY, ['4.0.0', '4.1.0']); - }); - - it('transforms patch versions to the closest major.minor version', async () => { - const version = '4.0.1'; - const set = jest.fn((...args: any[]) => Promise.resolve()); - const cache = { get: () => Promise.resolve(['4.0.0']), set }; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: '4.0.0', - showOnFirstLaunch: false, - success: true, - }); - expect(set).not.toHaveBeenCalled(); - }); - - it('does not show release notes when downgrading', async () => { - const version = '3.0.0'; - const set = jest.fn((...args: any[]) => Promise.resolve()); - const cache = { get: () => Promise.resolve(['4.0.0']), set }; - - expect(await getReleaseNotesData(version, cache)).toEqual({ - currentVersion: '3.0.0', - showOnFirstLaunch: false, - success: true, - }); - expect(set).toHaveBeenCalledWith(RELEASE_NOTES_CACHE_KEY, ['4.0.0', '3.0.0']); - }); -}); diff --git a/code/lib/core-server/src/utils/__tests__/server-channel.test.ts b/code/lib/core-server/src/utils/__tests__/server-channel.test.ts new file mode 100644 index 000000000000..786370be0f99 --- /dev/null +++ b/code/lib/core-server/src/utils/__tests__/server-channel.test.ts @@ -0,0 +1,86 @@ +import type { Server } from 'http'; +import { Channel } from '@storybook/channels'; + +import { EventEmitter } from 'events'; +import { stringify } from 'telejson'; +import { getServerChannel, ServerChannelTransport } from '../get-server-channel'; + +describe('getServerChannel', () => { + test('should return a channel', () => { + const server = { on: jest.fn() } as any as Server; + const result = getServerChannel(server); + expect(result).toBeInstanceOf(Channel); + }); + + test('should attach to the http server', () => { + const server = { on: jest.fn() } as any as Server; + getServerChannel(server); + expect(server.on).toHaveBeenCalledWith('upgrade', expect.any(Function)); + }); +}); + +describe('ServerChannelTransport', () => { + test('parses simple JSON', () => { + const server = new EventEmitter() as any as Server; + const socket = new EventEmitter(); + const transport = new ServerChannelTransport(server); + const handler = jest.fn(); + transport.setHandler(handler); + + // @ts-expect-error (an internal API) + transport.socket.emit('connection', socket); + socket.emit('message', '"hello"'); + + expect(handler).toHaveBeenCalledWith('hello'); + }); + test('parses object JSON', () => { + const server = new EventEmitter() as any as Server; + const socket = new EventEmitter(); + const transport = new ServerChannelTransport(server); + const handler = jest.fn(); + transport.setHandler(handler); + + // @ts-expect-error (an internal API) + transport.socket.emit('connection', socket); + socket.emit('message', JSON.stringify({ type: 'hello' })); + + expect(handler).toHaveBeenCalledWith({ type: 'hello' }); + }); + test('supports telejson cyclical data', () => { + const server = new EventEmitter() as any as Server; + const socket = new EventEmitter(); + const transport = new ServerChannelTransport(server); + const handler = jest.fn(); + transport.setHandler(handler); + + // @ts-expect-error (an internal API) + transport.socket.emit('connection', socket); + + const input: any = { a: 1 }; + input.b = input; + socket.emit('message', stringify(input)); + + expect(handler.mock.calls[0][0]).toMatchInlineSnapshot(` + Object { + "a": 1, + "b": [Circular], + } + `); + }); + test('skips telejson classes and functions in data', () => { + const server = new EventEmitter() as any as Server; + const socket = new EventEmitter(); + const transport = new ServerChannelTransport(server); + const handler = jest.fn(); + transport.setHandler(handler); + + // @ts-expect-error (an internal API) + transport.socket.emit('connection', socket); + + const input = { a() {}, b: class {} }; + socket.emit('message', stringify(input)); + + expect(handler.mock.calls[0][0].a).toEqual(expect.any(String)); + expect(handler.mock.calls[0][0].b).toEqual(expect.any(String)); + }); +}); diff --git a/code/lib/core-server/src/utils/copy-all-static-files.ts b/code/lib/core-server/src/utils/copy-all-static-files.ts index 2e6475acc8c2..44f7bf12d31f 100644 --- a/code/lib/core-server/src/utils/copy-all-static-files.ts +++ b/code/lib/core-server/src/utils/copy-all-static-files.ts @@ -22,7 +22,7 @@ export async function copyAllStaticFiles(staticDirs: any[] | undefined, outputDi filter: (_, dest) => !skipPaths.includes(dest), }); } catch (e) { - logger.error(e.message); + if (e instanceof Error) logger.error(e.message); process.exit(-1); } }) @@ -37,7 +37,7 @@ export async function copyAllStaticFilesRelativeToMain( ) { const workingDir = process.cwd(); - return staticDirs.reduce(async (acc, dir) => { + return staticDirs?.reduce(async (acc, dir) => { await acc; const staticDirAndTarget = typeof dir === 'string' ? dir : `${dir.from}:${dir.to}`; diff --git a/code/lib/core-server/src/utils/doTelemetry.ts b/code/lib/core-server/src/utils/doTelemetry.ts index 1a5b62d6ce92..ecb494fc45f5 100644 --- a/code/lib/core-server/src/utils/doTelemetry.ts +++ b/code/lib/core-server/src/utils/doTelemetry.ts @@ -1,3 +1,4 @@ +import invariant from 'tiny-invariant'; import type { CoreConfig, Options, StoryIndex } from '@storybook/types'; import { telemetry, getPrecedingUpgrade } from '@storybook/telemetry'; import { useStorybookMetadata } from './metadata'; @@ -9,17 +10,18 @@ import { sendTelemetryError } from '../withTelemetry'; export async function doTelemetry( core: CoreConfig, - initializedStoryIndexGenerator: Promise, + initializedStoryIndexGenerator: Promise, options: Options ) { if (!core?.disableTelemetry) { initializedStoryIndexGenerator.then(async (generator) => { - let storyIndex: StoryIndex; + let storyIndex: StoryIndex | undefined; try { storyIndex = await generator?.getIndex(); } catch (err) { // If we fail to get the index, treat it as a recoverable error, but send it up to telemetry // as if we crashed. In the future we will revisit this to send a distinct error + if (!(err instanceof Error)) throw new Error('encountered a non-recoverable error'); sendTelemetryError(err, 'dev', { cliOptions: options, presetOptions: { ...options, corePresets: [], overridePresets: [] }, @@ -27,12 +29,16 @@ export async function doTelemetry( return; } const { versionCheck, versionUpdates } = options; + invariant( + !versionUpdates || (versionUpdates && versionCheck), + 'versionCheck should be defined when versionUpdates is true' + ); const payload = { precedingUpgrade: await getPrecedingUpgrade(), }; if (storyIndex) { Object.assign(payload, { - versionStatus: versionUpdates ? versionStatus(versionCheck) : 'disabled', + versionStatus: versionUpdates && versionCheck ? versionStatus(versionCheck) : 'disabled', storyIndex: summarizeIndex(storyIndex), }); } diff --git a/code/lib/core-server/src/utils/get-builders.ts b/code/lib/core-server/src/utils/get-builders.ts index 1b43381c02cc..4a9b9f14daf8 100644 --- a/code/lib/core-server/src/utils/get-builders.ts +++ b/code/lib/core-server/src/utils/get-builders.ts @@ -1,5 +1,6 @@ import type { Builder, CoreConfig, Options } from '@storybook/types'; import { pathToFileURL } from 'node:url'; +import invariant from 'tiny-invariant'; export async function getManagerBuilder(): Promise> { return import('@storybook/builder-manager'); @@ -9,22 +10,18 @@ export async function getPreviewBuilder( builderName: string, configDir: string ): Promise> { - let builderPackage: string; - if (builderName) { - builderPackage = require.resolve( - ['webpack5'].includes(builderName) ? `@storybook/builder-${builderName}` : builderName, - { paths: [configDir] } - ); - } else { - throw new Error('no builder configured!'); - } + const builderPackage = require.resolve( + ['webpack5'].includes(builderName) ? `@storybook/builder-${builderName}` : builderName, + { paths: [configDir] } + ); const previewBuilder = await import(pathToFileURL(builderPackage).href); return previewBuilder; } export async function getBuilders({ presets, configDir }: Options): Promise[]> { const { builder } = await presets.apply('core', {}); - const builderName = typeof builder === 'string' ? builder : builder?.name; + invariant(builder, 'no builder configured!'); + const builderName = typeof builder === 'string' ? builder : builder.name; return Promise.all([getPreviewBuilder(builderName, configDir), getManagerBuilder()]); } diff --git a/code/lib/core-server/src/utils/get-server-channel.ts b/code/lib/core-server/src/utils/get-server-channel.ts index 348a980d0303..1a488afb06c9 100644 --- a/code/lib/core-server/src/utils/get-server-channel.ts +++ b/code/lib/core-server/src/utils/get-server-channel.ts @@ -1,32 +1,59 @@ import WebSocket, { WebSocketServer } from 'ws'; -import { stringify } from 'telejson'; +import { isJSON, parse, stringify } from 'telejson'; +import type { ChannelHandler } from '@storybook/channels'; +import { Channel } from '@storybook/channels'; -type Server = ConstructorParameters[0]['server']; +type Server = NonNullable[0]>['server']>; -export class ServerChannel { - webSocketServer: WebSocketServer; +/** + * This class represents a channel transport that allows for a one-to-many relationship between the server and clients. + * Unlike other channels such as the postmessage and websocket channel implementations, this channel will receive from many clients and any events emitted will be sent out to all connected clients. + */ +export class ServerChannelTransport { + private socket: WebSocketServer; + + private handler?: ChannelHandler; constructor(server: Server) { - this.webSocketServer = new WebSocketServer({ noServer: true }); + this.socket = new WebSocketServer({ noServer: true }); server.on('upgrade', (request, socket, head) => { if (request.url === '/storybook-server-channel') { - this.webSocketServer.handleUpgrade(request, socket, head, (ws) => { - this.webSocketServer.emit('connection', ws, request); + this.socket.handleUpgrade(request, socket, head, (ws) => { + this.socket.emit('connection', ws, request); }); } }); + this.socket.on('connection', (wss) => { + wss.on('message', (raw) => { + const data = raw.toString(); + const event = + typeof data === 'string' && isJSON(data) + ? parse(data, { allowFunction: false, allowClass: false }) + : data; + this.handler?.(event); + }); + }); + } + + setHandler(handler: ChannelHandler) { + this.handler = handler; } - emit(type: string, args: any = []) { - const event = { type, args }; - const data = stringify(event, { maxDepth: 15, allowFunction: true }); - Array.from(this.webSocketServer.clients) + send(event: any) { + const data = stringify(event, { maxDepth: 15, allowFunction: false, allowClass: false }); + + Array.from(this.socket.clients) .filter((c) => c.readyState === WebSocket.OPEN) .forEach((client) => client.send(data)); } } export function getServerChannel(server: Server) { - return new ServerChannel(server); + const transports = [new ServerChannelTransport(server)]; + + return new Channel({ transports, async: true }); } + +// for backwards compatibility +export type ServerChannel = ReturnType; diff --git a/code/lib/core-server/src/utils/getStoryIndexGenerator.ts b/code/lib/core-server/src/utils/getStoryIndexGenerator.ts index c1f75831806c..952edb507824 100644 --- a/code/lib/core-server/src/utils/getStoryIndexGenerator.ts +++ b/code/lib/core-server/src/utils/getStoryIndexGenerator.ts @@ -14,37 +14,40 @@ export async function getStoryIndexGenerator( }, options: Options, serverChannel: ServerChannel -) { - let initializedStoryIndexGenerator: Promise = Promise.resolve(undefined); - if (features?.buildStoriesJson || features?.storyStoreV7) { - const workingDir = process.cwd(); - const directories = { - configDir: options.configDir, - workingDir, - }; - const stories = options.presets.apply('stories'); - const storyIndexers = options.presets.apply('storyIndexers', []); - const docsOptions = options.presets.apply('docs', {}); - const normalizedStories = normalizeStories(await stories, directories); +): Promise { + if (!features?.buildStoriesJson && !features?.storyStoreV7) { + return undefined; + } + const workingDir = process.cwd(); + const directories = { + configDir: options.configDir, + workingDir, + }; + const stories = options.presets.apply('stories'); + const deprecatedStoryIndexers = options.presets.apply('storyIndexers', []); + const indexers = options.presets.apply('experimental_indexers', []); + const docsOptions = options.presets.apply('docs', {}); + const normalizedStories = normalizeStories(await stories, directories); - const generator = new StoryIndexGenerator(normalizedStories, { - ...directories, - storyIndexers: await storyIndexers, - docs: await docsOptions, - workingDir, - storiesV2Compatibility: !features?.storyStoreV7, - storyStoreV7: features?.storyStoreV7, - }); + const generator = new StoryIndexGenerator(normalizedStories, { + ...directories, + storyIndexers: await deprecatedStoryIndexers, + indexers: await indexers, + docs: await docsOptions, + workingDir, + storiesV2Compatibility: !features?.storyStoreV7, + storyStoreV7: features.storyStoreV7 ?? false, + }); - initializedStoryIndexGenerator = generator.initialize().then(() => generator); + const initializedStoryIndexGenerator = generator.initialize().then(() => generator); + + useStoriesJson({ + router, + initializedStoryIndexGenerator, + normalizedStories, + serverChannel, + workingDir, + }); - useStoriesJson({ - router, - initializedStoryIndexGenerator, - normalizedStories, - serverChannel, - workingDir, - }); - } return initializedStoryIndexGenerator; } diff --git a/code/lib/core-server/src/utils/open-in-browser.ts b/code/lib/core-server/src/utils/open-in-browser.ts index 9cb05bbda5ac..f7e7be3d5a70 100644 --- a/code/lib/core-server/src/utils/open-in-browser.ts +++ b/code/lib/core-server/src/utils/open-in-browser.ts @@ -5,14 +5,29 @@ import getDefaultBrowser from '@aw-web-design/x-default-browser'; import { dedent } from 'ts-dedent'; export function openInBrowser(address: string) { + const browserEnvVar = process.env.BROWSER; + const userBrowserIsChrome = + browserEnvVar === 'chrome' || + browserEnvVar === 'chromium' || + browserEnvVar === 'brave' || + browserEnvVar === 'com.brave.browser'; + + const openOptions = browserEnvVar ? { app: { name: browserEnvVar } } : {}; + getDefaultBrowser(async (err: any, res: any) => { try { - if (res && (res.isChrome || res.isChromium || res.identity === 'com.brave.browser')) { + if ( + res && + (res.isChrome || + res.isChromium || + res.identity === 'com.brave.browser' || + userBrowserIsChrome) + ) { // We use betterOpn for Chrome because it is better at handling which chrome tab // or window the preview loads in. betterOpn(address); } else { - await open(address); + await open(address, openOptions); } } catch (error) { logger.error(dedent` diff --git a/code/lib/core-server/src/utils/release-notes.ts b/code/lib/core-server/src/utils/release-notes.ts deleted file mode 100644 index 0aa249113c58..000000000000 --- a/code/lib/core-server/src/utils/release-notes.ts +++ /dev/null @@ -1,64 +0,0 @@ -import semver from 'semver'; -import type { ReleaseNotesData } from '@storybook/types'; - -// We only expect to have release notes available for major and minor releases. -// For this reason, we convert the actual version of the build here so that -// every place that relies on this data can reference the version of the -// release notes that we expect to use. -const getReleaseNotesVersion = (version: string): string => { - const { major, minor } = semver.parse(version); - const { version: releaseNotesVersion } = semver.coerce(`${major}.${minor}`); - return releaseNotesVersion; -}; -export const getReleaseNotesFailedState = (version: string) => { - return { - success: false, - currentVersion: getReleaseNotesVersion(version), - showOnFirstLaunch: false, - }; -}; - -export const RELEASE_NOTES_CACHE_KEY = 'releaseNotesData'; - -export const getReleaseNotesData = async ( - currentVersionToParse: string, - fileSystemCache: any -): Promise => { - let result; - try { - const fromCache = (await fileSystemCache.get('releaseNotesData', []).catch(() => {})) || []; - const releaseNotesVersion = getReleaseNotesVersion(currentVersionToParse); - const versionHasNotBeenSeen = !fromCache.includes(releaseNotesVersion); - - if (versionHasNotBeenSeen) { - await fileSystemCache.set('releaseNotesData', [...fromCache, releaseNotesVersion]); - } - - const sortedHistory = semver.sort(fromCache); - const highestVersionSeenInThePast = sortedHistory.slice(-1)[0]; - - let isUpgrading = false; - let isMajorOrMinorDiff = false; - - if (highestVersionSeenInThePast) { - isUpgrading = semver.gt(releaseNotesVersion, highestVersionSeenInThePast); - const versionDiff = semver.diff(releaseNotesVersion, highestVersionSeenInThePast); - isMajorOrMinorDiff = versionDiff === 'major' || versionDiff === 'minor'; - } - - result = { - success: true, - showOnFirstLaunch: - versionHasNotBeenSeen && - // Only show the release notes if this is not the first time Storybook - // has been built. - !!highestVersionSeenInThePast && - isUpgrading && - isMajorOrMinorDiff, - currentVersion: releaseNotesVersion, - }; - } catch (e) { - result = getReleaseNotesFailedState(currentVersionToParse); - } - return result; -}; diff --git a/code/lib/core-server/src/utils/server-address.test.ts b/code/lib/core-server/src/utils/server-address.test.ts new file mode 100644 index 000000000000..bf7dbd194fcf --- /dev/null +++ b/code/lib/core-server/src/utils/server-address.test.ts @@ -0,0 +1,81 @@ +import detectPort from 'detect-port'; +import { getServerAddresses, getServerPort, getServerChannelUrl } from './server-address'; + +jest.mock('ip'); +jest.mock('detect-port'); +jest.mock('@storybook/node-logger'); + +describe('getServerAddresses', () => { + const port = 3000; + const host = 'localhost'; + const proto = 'http'; + + it('should return server addresses without initial path by default', () => { + const expectedAddress = `${proto}://localhost:${port}/`; + const expectedNetworkAddress = `${proto}://${host}:${port}/`; + + const result = getServerAddresses(port, host, proto); + + expect(result.address).toBe(expectedAddress); + expect(result.networkAddress).toBe(expectedNetworkAddress); + }); + + it('should return server addresses with initial path', () => { + const initialPath = '/foo/bar'; + + const expectedAddress = `${proto}://localhost:${port}/?path=/foo/bar`; + const expectedNetworkAddress = `${proto}://${host}:${port}/?path=/foo/bar`; + + const result = getServerAddresses(port, host, proto, initialPath); + + expect(result.address).toBe(expectedAddress); + expect(result.networkAddress).toBe(expectedNetworkAddress); + }); + + it('should return server addresses with initial path and add slash if missing', () => { + const initialPath = 'foo/bar'; + + const expectedAddress = `${proto}://localhost:${port}/?path=/foo/bar`; + const expectedNetworkAddress = `${proto}://${host}:${port}/?path=/foo/bar`; + + const result = getServerAddresses(port, host, proto, initialPath); + + expect(result.address).toBe(expectedAddress); + expect(result.networkAddress).toBe(expectedNetworkAddress); + }); +}); + +describe('getServerPort', () => { + const port = 3000; + + it('should resolve with a free port', async () => { + const expectedFreePort = 4000; + + (detectPort as jest.Mock).mockResolvedValue(expectedFreePort); + + const result = await getServerPort(port); + + expect(result).toBe(expectedFreePort); + }); +}); + +describe('getServerChannelUrl', () => { + const port = 3000; + it('should return WebSocket URL with HTTP', () => { + const options = { https: false }; + const expectedUrl = `ws://localhost:${port}/storybook-server-channel`; + + const result = getServerChannelUrl(port, options); + + expect(result).toBe(expectedUrl); + }); + + it('should return WebSocket URL with HTTPS', () => { + const options = { https: true }; + const expectedUrl = `wss://localhost:${port}/storybook-server-channel`; + + const result = getServerChannelUrl(port, options); + + expect(result).toBe(expectedUrl); + }); +}); diff --git a/code/lib/core-server/src/utils/server-address.ts b/code/lib/core-server/src/utils/server-address.ts index 54b57b09202d..5e4ae1b18b72 100644 --- a/code/lib/core-server/src/utils/server-address.ts +++ b/code/lib/core-server/src/utils/server-address.ts @@ -3,14 +3,30 @@ import ip from 'ip'; import { logger } from '@storybook/node-logger'; import detectFreePort from 'detect-port'; -export function getServerAddresses(port: number, host: string, proto: string) { +export function getServerAddresses( + port: number, + host: string | undefined, + proto: string, + initialPath?: string +) { + const address = new URL(`${proto}://localhost:${port}/`); + const networkAddress = new URL(`${proto}://${host || ip.address()}:${port}/`); + + if (initialPath) { + const searchParams = `?path=${decodeURIComponent( + initialPath.startsWith('/') ? initialPath : `/${initialPath}` + )}`; + address.search = searchParams; + networkAddress.search = searchParams; + } + return { - address: `${proto}://localhost:${port}/`, - networkAddress: `${proto}://${host || ip.address()}:${port}/`, + address: address.href, + networkAddress: networkAddress.href, }; } -export const getServerPort = (port: number) => +export const getServerPort = (port?: number) => detectFreePort(port).catch((error) => { logger.error(error); process.exit(-1); diff --git a/code/lib/core-server/src/utils/server-statics.ts b/code/lib/core-server/src/utils/server-statics.ts index 96386df1d05a..b2d5a5e3cbce 100644 --- a/code/lib/core-server/src/utils/server-statics.ts +++ b/code/lib/core-server/src/utils/server-statics.ts @@ -1,6 +1,7 @@ import { logger } from '@storybook/node-logger'; import type { Options, StorybookConfig } from '@storybook/types'; import { getDirectoryFromWorkingDir } from '@storybook/core-common'; +import { ConflictingStaticDirConfigError } from '@storybook/core-events/server-errors'; import chalk from 'chalk'; import express from 'express'; import { pathExists } from 'fs-extra'; @@ -12,17 +13,12 @@ import { dedent } from 'ts-dedent'; import { defaultStaticDirs } from './constants'; export async function useStatics(router: any, options: Options) { - const staticDirs = await options.presets.apply('staticDirs'); + const staticDirs = + (await options.presets.apply('staticDirs')) ?? []; const faviconPath = await options.presets.apply('favicon'); if (options.staticDir && !isEqual(staticDirs, defaultStaticDirs)) { - throw new Error(dedent` - Conflict when trying to read staticDirs: - * Storybook's configuration option: 'staticDirs' - * Storybook's CLI flag: '--staticDir' or '-s' - - Choose one of them, but not both. - `); + throw new ConflictingStaticDirConfigError(); } const statics = [ @@ -52,7 +48,7 @@ export async function useStatics(router: any, options: Options) { router.use(targetEndpoint, express.static(staticPath, { index: false })); } catch (e) { - logger.warn(e.message); + if (e instanceof Error) logger.warn(e.message); } }) ); diff --git a/code/lib/core-server/src/utils/stories-json.test.ts b/code/lib/core-server/src/utils/stories-json.test.ts index a36c0bc5c46d..e1f0b1f6d613 100644 --- a/code/lib/core-server/src/utils/stories-json.test.ts +++ b/code/lib/core-server/src/utils/stories-json.test.ts @@ -1,18 +1,20 @@ /// ; -import fs from 'fs-extra'; import type { Router, Request, Response } from 'express'; import Watchpack from 'watchpack'; import path from 'path'; import debounce from 'lodash/debounce.js'; +// @ts-expect-error -- cannot find declaration file +import { createStoriesMdxIndexer } from '@storybook/addon-docs/preset'; import { STORY_INDEX_INVALIDATED } from '@storybook/core-events'; -import type { StoryIndex, StoryIndexer } from '@storybook/types'; -import { loadCsf } from '@storybook/csf-tools'; +import type { StoryIndex } from '@storybook/types'; import { normalizeStoriesEntry } from '@storybook/core-common'; import { useStoriesJson, DEBOUNCE, convertToIndexV3 } from './stories-json'; import type { ServerChannel } from './get-server-channel'; +import type { StoryIndexGeneratorOptions } from './StoryIndexGenerator'; import { StoryIndexGenerator } from './StoryIndexGenerator'; +import { csfIndexer } from '../presets/common-preset'; jest.mock('watchpack'); jest.mock('lodash/debounce'); @@ -24,7 +26,7 @@ const normalizedStories = [ { titlePrefix: '', directory: './src', - files: '**/*.stories.@(ts|js|jsx)', + files: '**/*.stories.@(ts|js|mjs|jsx)', }, { workingDir, configDir: workingDir } ), @@ -38,34 +40,21 @@ const normalizedStories = [ ), ]; -const csfIndexer = async (fileName: string, opts: any) => { - const code = (await fs.readFile(fileName, 'utf-8')).toString(); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - -const storiesMdxIndexer = async (fileName: string, opts: any) => { - let code = (await fs.readFile(fileName, 'utf-8')).toString(); - const { compile } = await import('@storybook/mdx2-csf'); - code = await compile(code, {}); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - const getInitializedStoryIndexGenerator = async ( overrides: any = {}, inputNormalizedStories = normalizedStories ) => { - const generator = new StoryIndexGenerator(inputNormalizedStories, { - storyIndexers: [ - { test: /\.stories\.mdx$/, indexer: storiesMdxIndexer }, - { test: /\.stories\.(js|ts)x?$/, indexer: csfIndexer }, - ] as StoryIndexer[], + const options: StoryIndexGeneratorOptions = { + storyIndexers: [], + indexers: [csfIndexer, createStoriesMdxIndexer(false)], configDir: workingDir, workingDir, storiesV2Compatibility: false, storyStoreV7: true, docs: { defaultName: 'docs', autodocs: false }, ...overrides, - }); + }; + const generator = new StoryIndexGenerator(inputNormalizedStories, options); await generator.initialize(); return generator; }; @@ -151,6 +140,7 @@ describe('useStoriesJson', () => { "importPath": "./src/A.stories.js", "name": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -225,6 +215,17 @@ describe('useStoriesJson', () => { "title": "first-nested/deeply/F", "type": "story", }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "name": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + "type": "story", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", @@ -346,6 +347,7 @@ describe('useStoriesJson', () => { }, "story": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -455,6 +457,23 @@ describe('useStoriesJson', () => { ], "title": "first-nested/deeply/F", }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "kind": "H", + "name": "Story One", + "parameters": Object { + "__id": "h--story-one", + "docsOnly": false, + "fileName": "./src/H.stories.mjs", + }, + "story": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", @@ -562,6 +581,7 @@ describe('useStoriesJson', () => { }, "story": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -617,6 +637,23 @@ describe('useStoriesJson', () => { ], "title": "first-nested/deeply/F", }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "kind": "H", + "name": "Story One", + "parameters": Object { + "__id": "h--story-one", + "docsOnly": false, + "fileName": "./src/H.stories.mjs", + }, + "story": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", @@ -693,12 +730,12 @@ describe('useStoriesJson', () => { expect(send).toHaveBeenCalledTimes(1); expect(send.mock.calls[0][0]).toMatchInlineSnapshot(` "Unable to index files: - - ./src/docs2/ComponentReference.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`. - - ./src/docs2/MetaOf.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`. - - ./src/docs2/NoTitle.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`. - - ./src/docs2/SecondMetaOf.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`. - - ./src/docs2/Template.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`. - - ./src/docs2/Title.mdx: You cannot use \`.mdx\` files without using \`storyStoreV7\`." + - ./src/docs2/ComponentReference.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`. + - ./src/docs2/MetaOf.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`. + - ./src/docs2/NoTitle.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`. + - ./src/docs2/SecondMetaOf.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`. + - ./src/docs2/Template.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`. + - ./src/docs2/Title.mdx: Invariant failed: You cannot use \`.mdx\` files without using \`storyStoreV7\`." `); }); @@ -736,6 +773,7 @@ describe('useStoriesJson', () => { }, "story": "Story One", "tags": Array [ + "component-tag", "story-tag", "story", ], @@ -791,6 +829,23 @@ describe('useStoriesJson', () => { ], "title": "first-nested/deeply/F", }, + "h--story-one": Object { + "id": "h--story-one", + "importPath": "./src/H.stories.mjs", + "kind": "H", + "name": "Story One", + "parameters": Object { + "__id": "h--story-one", + "docsOnly": false, + "fileName": "./src/H.stories.mjs", + }, + "story": "Story One", + "tags": Array [ + "autodocs", + "story", + ], + "title": "H", + }, "nested-button--story-one": Object { "id": "nested-button--story-one", "importPath": "./src/nested/Button.stories.ts", diff --git a/code/lib/core-server/src/utils/stories-json.ts b/code/lib/core-server/src/utils/stories-json.ts index 6ab44e1dcf5b..7070245a6043 100644 --- a/code/lib/core-server/src/utils/stories-json.ts +++ b/code/lib/core-server/src/utils/stories-json.ts @@ -51,7 +51,7 @@ export function useStoriesJson({ res.send(JSON.stringify(index)); } catch (err) { res.status(500); - res.send(err.toString()); + res.send(err instanceof Error ? err.toString() : String(err)); } }); @@ -63,7 +63,7 @@ export function useStoriesJson({ res.send(JSON.stringify(index)); } catch (err) { res.status(500); - res.send(err.toString()); + res.send(err instanceof Error ? err.toString() : String(err)); } }); } diff --git a/code/lib/core-server/src/utils/summarizeIndex.test.ts b/code/lib/core-server/src/utils/summarizeIndex.test.ts index de2a7d64eb8b..8662b0e45716 100644 --- a/code/lib/core-server/src/utils/summarizeIndex.test.ts +++ b/code/lib/core-server/src/utils/summarizeIndex.test.ts @@ -139,6 +139,66 @@ describe('summarizeIndex', () => { "exampleDocsCount": 3, "exampleStoryCount": 8, "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, + "pageStoryCount": 0, + "playStoryCount": 0, + "storiesMdxCount": 0, + "storyCount": 0, + "version": 4, + } + `); + }); + it('onboarding stories', () => { + expect( + summarizeIndex({ + v: 4, + entries: { + 'example-introduction--docs': { + id: 'example-introduction--docs', + title: 'Example/Introduction', + name: 'Docs', + importPath: './src/stories/Introduction.mdx', + storiesImports: [], + type: 'docs', + tags: ['docs'], + }, + 'example-button--docs': { + id: 'example-button--docs', + title: 'Example/Button', + name: 'Docs', + importPath: './src/stories/Button.stories.ts', + type: 'docs', + tags: ['autodocs', 'docs'], + storiesImports: [], + }, + 'example-button--primary': { + id: 'example-button--primary', + title: 'Example/Button', + name: 'Primary', + importPath: './src/stories/Button.stories.ts', + tags: ['autodocs', 'story'], + type: 'story', + }, + 'example-button--warning': { + id: 'example-button--warning', + title: 'Example/Button', + name: 'Warning', + importPath: './src/stories/Button.stories.ts', + tags: ['autodocs', 'story'], + type: 'story', + }, + }, + }) + ).toMatchInlineSnapshot(` + Object { + "autodocsCount": 0, + "componentCount": 0, + "exampleDocsCount": 2, + "exampleStoryCount": 1, + "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 1, "pageStoryCount": 0, "playStoryCount": 0, "storiesMdxCount": 0, @@ -193,6 +253,8 @@ describe('summarizeIndex', () => { "exampleDocsCount": 0, "exampleStoryCount": 0, "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, "pageStoryCount": 0, "playStoryCount": 0, "storiesMdxCount": 0, @@ -248,6 +310,8 @@ describe('summarizeIndex', () => { "exampleDocsCount": 0, "exampleStoryCount": 2, "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, "pageStoryCount": 1, "playStoryCount": 1, "storiesMdxCount": 0, @@ -303,6 +367,8 @@ describe('summarizeIndex', () => { "exampleDocsCount": 0, "exampleStoryCount": 0, "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, "pageStoryCount": 0, "playStoryCount": 0, "storiesMdxCount": 1, @@ -341,11 +407,11 @@ describe('summarizeIndex', () => { tags: ['autodocs', 'story'], type: 'story', }, - 'lib-store-shortcuts--docs': { - id: 'lib-store-shortcuts--docs', - title: 'lib/store/shortcuts', + 'lib-preview-api-shortcuts--docs': { + id: 'lib-preview-api-shortcuts--docs', + title: 'lib/preview-api/shortcuts', name: 'Docs', - importPath: './template-stories/lib/store/shortcuts.stories.ts', + importPath: './template-stories/lib/preview-api/shortcuts.stories.ts', type: 'docs', tags: ['autodocs', 'docs'], storiesImports: [], @@ -359,6 +425,8 @@ describe('summarizeIndex', () => { "exampleDocsCount": 1, "exampleStoryCount": 2, "mdxCount": 0, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, "pageStoryCount": 0, "playStoryCount": 0, "storiesMdxCount": 0, @@ -408,6 +476,8 @@ describe('summarizeIndex', () => { "exampleDocsCount": 1, "exampleStoryCount": 0, "mdxCount": 2, + "onboardingDocsCount": 0, + "onboardingStoryCount": 0, "pageStoryCount": 0, "playStoryCount": 0, "storiesMdxCount": 0, diff --git a/code/lib/core-server/src/utils/summarizeIndex.ts b/code/lib/core-server/src/utils/summarizeIndex.ts index 601455bcfcba..091038cdaccf 100644 --- a/code/lib/core-server/src/utils/summarizeIndex.ts +++ b/code/lib/core-server/src/utils/summarizeIndex.ts @@ -7,11 +7,12 @@ const PAGE_REGEX = /(page|screen)/i; export const isPageStory = (storyId: string) => PAGE_REGEX.test(storyId); /** - * Filter out example stories that are generated by the CLI + * Is this story generated by the CLI */ -const isExampleEntry = (entry: IndexEntry) => { - return [ +const isCLIExampleEntry = (entry: IndexEntry) => + [ 'example-introduction--docs', + 'configure-your-project--docs', 'example-button--docs', 'example-button--primary', 'example-button--secondary', @@ -23,12 +24,22 @@ const isExampleEntry = (entry: IndexEntry) => { 'example-page--logged-in', 'example-page--logged-out', ].includes(entry.id); -}; + +/** + * Is this story part of the CLI generated examples, + * including user-created stories in those files + */ +const isAnyExampleEntry = (entry: IndexEntry) => + entry.id.startsWith('example-button--') || + entry.id.startsWith('example-header--') || + entry.id.startsWith('example-page--'); export function summarizeIndex(storyIndex: StoryIndex) { let storyCount = 0; const componentTitles = new Set(); let exampleStoryCount = 0; + let onboardingStoryCount = 0; + let onboardingDocsCount = 0; let exampleDocsCount = 0; let pageStoryCount = 0; let playStoryCount = 0; @@ -36,9 +47,12 @@ export function summarizeIndex(storyIndex: StoryIndex) { let storiesMdxCount = 0; let mdxCount = 0; Object.values(storyIndex.entries).forEach((entry) => { - if (isExampleEntry(entry)) { + if (isCLIExampleEntry(entry)) { if (entry.type === 'story') exampleStoryCount += 1; if (entry.type === 'docs') exampleDocsCount += 1; + } else if (isAnyExampleEntry(entry)) { + if (entry.type === 'story') onboardingStoryCount += 1; + if (entry.type === 'docs') onboardingDocsCount += 1; } else if (entry.type === 'story') { storyCount += 1; componentTitles.add(entry.title); @@ -69,6 +83,8 @@ export function summarizeIndex(storyIndex: StoryIndex) { mdxCount, exampleStoryCount, exampleDocsCount, + onboardingStoryCount, + onboardingDocsCount, version: storyIndex.v, }; } diff --git a/code/lib/core-server/src/utils/update-check.ts b/code/lib/core-server/src/utils/update-check.ts index f4c463d2e344..2012921921a0 100644 --- a/code/lib/core-server/src/utils/update-check.ts +++ b/code/lib/core-server/src/utils/update-check.ts @@ -37,8 +37,9 @@ export function createUpdateMessage(updateInfo: VersionCheck, version: string): let updateMessage; try { - const suffix = semver.prerelease(updateInfo.data.latest.version) ? '--prerelease' : ''; - const upgradeCommand = `npx storybook@latest upgrade ${suffix}`.trim(); + const isPrerelease = semver.prerelease(updateInfo.data.latest.version); + const suffix = isPrerelease ? '@next upgrade --prerelease' : '@latest upgrade'; + const upgradeCommand = `npx storybook${suffix}`; updateMessage = updateInfo.success && semver.lt(version, updateInfo.data.latest.version) ? dedent` diff --git a/code/lib/core-server/src/utils/watch-story-specifiers.ts b/code/lib/core-server/src/utils/watch-story-specifiers.ts index f7946940ed55..a0d1818be720 100644 --- a/code/lib/core-server/src/utils/watch-story-specifiers.ts +++ b/code/lib/core-server/src/utils/watch-story-specifiers.ts @@ -6,6 +6,7 @@ import glob from 'globby'; import uniq from 'lodash/uniq.js'; import type { NormalizedStoriesSpecifier, Path } from '@storybook/types'; +import { commonGlobOptions } from '@storybook/core-common'; const isDirectory = (directory: Path) => { try { @@ -74,7 +75,7 @@ export function watchStorySpecifiers( path.basename(specifier.files) ); // glob only supports forward slashes - const files = await glob(slash(dirGlob)); + const files = await glob(slash(dirGlob), commonGlobOptions(dirGlob)); files.forEach((filePath) => { const fileImportPath = toImportPath( diff --git a/code/lib/core-server/src/withTelemetry.ts b/code/lib/core-server/src/withTelemetry.ts index c95529533599..0baebb8d97cb 100644 --- a/code/lib/core-server/src/withTelemetry.ts +++ b/code/lib/core-server/src/withTelemetry.ts @@ -4,11 +4,13 @@ import { loadAllPresets, cache } from '@storybook/core-common'; import { telemetry, getPrecedingUpgrade, oneWayHash } from '@storybook/telemetry'; import type { EventType } from '@storybook/telemetry'; import { logger } from '@storybook/node-logger'; +import invariant from 'tiny-invariant'; type TelemetryOptions = { cliOptions: CLIOptions; presetOptions?: Parameters[0]; printError?: (err: any) => void; + skipPrompt?: boolean; }; const promptCrashReports = async () => { @@ -30,18 +32,18 @@ const promptCrashReports = async () => { type ErrorLevel = 'none' | 'error' | 'full'; -async function getErrorLevel({ cliOptions, presetOptions }: TelemetryOptions): Promise { +async function getErrorLevel({ + cliOptions, + presetOptions, + skipPrompt, +}: TelemetryOptions): Promise { if (cliOptions.disableTelemetry) return 'none'; // If we are running init or similar, we just have to go with true here if (!presetOptions) return 'full'; // should we load the preset? - const presets = await loadAllPresets({ - corePresets: [require.resolve('@storybook/core-server/dist/presets/common-preset')], - overridePresets: [], - ...presetOptions, - }); + const presets = await loadAllPresets(presetOptions); // If the user has chosen to enable/disable crash reports in main.js // or disabled telemetry, we can return that @@ -54,6 +56,10 @@ async function getErrorLevel({ cliOptions, presetOptions }: TelemetryOptions): P (await cache.get('enableCrashReports')) ?? (await cache.get('enableCrashreports')); if (valueFromCache !== undefined) return valueFromCache ? 'full' : 'error'; + if (skipPrompt) { + return 'error'; + } + const valueFromPrompt = await promptCrashReports(); if (valueFromPrompt !== undefined) return valueFromPrompt ? 'full' : 'error'; @@ -61,7 +67,7 @@ async function getErrorLevel({ cliOptions, presetOptions }: TelemetryOptions): P } export async function sendTelemetryError( - error: Error, + error: unknown, eventType: EventType, options: TelemetryOptions ) { @@ -75,13 +81,37 @@ export async function sendTelemetryError( if (errorLevel !== 'none') { const precedingUpgrade = await getPrecedingUpgrade(); + invariant( + error instanceof Error, + 'The error passed to sendTelemetryError was not an Error, please only send Errors' + ); + + let storybookErrorProperties = {}; + // if it's an UNCATEGORIZED error, it won't have a coded name, so we just pass the category and source + if ((error as any).category) { + const { category } = error as any; + storybookErrorProperties = { + category, + }; + } + + if ((error as any).fromStorybook) { + const { code, name } = error as any; + storybookErrorProperties = { + ...storybookErrorProperties, + code, + name, + }; + } + await telemetry( 'error', { eventType, precedingUpgrade, error: errorLevel === 'full' ? error : undefined, - errorHash: oneWayHash(error.message || ''), + errorHash: oneWayHash(error.message), + ...storybookErrorProperties, }, { immediate: true, @@ -99,17 +129,39 @@ export async function withTelemetry( eventType: EventType, options: TelemetryOptions, run: () => Promise -): Promise { +): Promise { + let canceled = false; + + async function cancelTelemetry() { + canceled = true; + if (!options.cliOptions.disableTelemetry) { + await telemetry('canceled', { eventType }, { stripMetadata: true, immediate: true }); + } + + process.exit(0); + } + + if (eventType === 'init') { + // We catch Ctrl+C user interactions to be able to detect a cancel event + process.on('SIGINT', cancelTelemetry); + } + if (!options.cliOptions.disableTelemetry) telemetry('boot', { eventType }, { stripMetadata: true }); try { return await run(); - } catch (error) { + } catch (error: any) { + if (canceled) { + return undefined; + } + const { printError = logger.error } = options; printError(error); - await sendTelemetryError(error, eventType, options); + throw error; + } finally { + process.off('SIGINIT', cancelTelemetry); } } diff --git a/code/lib/core-server/tsconfig.json b/code/lib/core-server/tsconfig.json index a6f65038a17b..1dc5a72190bd 100644 --- a/code/lib/core-server/tsconfig.json +++ b/code/lib/core-server/tsconfig.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "skipLibCheck": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 6d5fc5e6db91..905cb09aa5cc 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -36,16 +36,17 @@ "templates/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/core-common": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^16.0.0", "ts-dedent": "^2.0.0" }, @@ -62,5 +63,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index b77d1860e27f..a38f2350b466 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" @@ -36,15 +36,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/csf-tools": "7.1.0-alpha.17", - "unplugin": "^0.10.2" + "@storybook/csf-tools": "workspace:*", + "unplugin": "^1.3.1" }, "devDependencies": { "typescript": "~4.9.3" @@ -64,5 +65,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/csf-plugin/tsconfig.json b/code/lib/csf-plugin/tsconfig.json index a4429176e35f..5b3f3a56a68d 100644 --- a/code/lib/csf-plugin/tsconfig.json +++ b/code/lib/csf-plugin/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "strict": true + "strict": true, + "skipLibCheck": true }, "include": ["src/**/*"] } diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index 9a123b988e40..441a17b1dda1 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" @@ -34,27 +34,28 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/generator": "~7.21.1", - "@babel/parser": "~7.21.2", - "@babel/traverse": "~7.21.2", - "@babel/types": "~7.21.2", + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/types": "workspace:*", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" }, "devDependencies": { "@types/fs-extra": "^11.0.1", - "@types/js-yaml": "^3.12.6", - "js-yaml": "^3.14.1", + "@types/js-yaml": "^4.0.5", + "js-yaml": "^4.1.0", "typescript": "~4.9.3" }, "publishConfig": { @@ -68,5 +69,5 @@ "cjs" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/csf-tools/src/ConfigFile.test.ts b/code/lib/csf-tools/src/ConfigFile.test.ts index 86b6806638da..10b2c5e8d025 100644 --- a/code/lib/csf-tools/src/ConfigFile.test.ts +++ b/code/lib/csf-tools/src/ConfigFile.test.ts @@ -1,7 +1,8 @@ /// ; import { dedent } from 'ts-dedent'; -import { formatConfig, loadConfig } from './ConfigFile'; +import { loadConfig, printConfig } from './ConfigFile'; +import { babelPrint } from './babelParse'; expect.addSnapshotSerializer({ print: (val: any) => val, @@ -16,19 +17,19 @@ const getField = (path: string[], source: string) => { const setField = (path: string[], value: any, source: string) => { const config = loadConfig(source).parse(); config.setFieldValue(path, value); - return formatConfig(config); + return printConfig(config).code; }; const appendToArray = (path: string[], value: any, source: string) => { const config = loadConfig(source).parse(); config.appendValueToArray(path, value); - return formatConfig(config); + return printConfig(config).code; }; const removeField = (path: string[], source: string) => { const config = loadConfig(source).parse(); config.removeField(path); - return formatConfig(config); + return printConfig(config).code; }; describe('ConfigFile', () => { @@ -232,6 +233,7 @@ describe('ConfigFile', () => { ) ).toMatchInlineSnapshot(` export const addons = []; + export const core = { builder: "webpack5" }; @@ -262,11 +264,7 @@ describe('ConfigFile', () => { export const core = { builder: 'webpack4' }; ` ) - ).toMatchInlineSnapshot(` - export const core = { - builder: 'webpack5' - }; - `); + ).toMatchInlineSnapshot(`export const core = { builder: 'webpack5' };`); }); it('found top-level scalar', () => { expect( @@ -289,11 +287,9 @@ describe('ConfigFile', () => { ` ) ).toMatchInlineSnapshot(` - export const core = { - builder: { - name: 'webpack5' - } - }; + export const core = { builder: { + name: 'webpack5' + } }; `); }); it('variable export', () => { @@ -307,9 +303,7 @@ describe('ConfigFile', () => { ` ) ).toMatchInlineSnapshot(` - const coreVar = { - builder: 'webpack5' - }; + const coreVar = { builder: 'webpack5' }; export const core = coreVar; `); }); @@ -328,6 +322,7 @@ describe('ConfigFile', () => { ).toMatchInlineSnapshot(` module.exports = { addons: [], + core: { builder: "webpack5" } @@ -344,12 +339,10 @@ describe('ConfigFile', () => { ` ) ).toMatchInlineSnapshot(` - module.exports = { - core: { - foo: 'bar', - builder: 'webpack5' - } - }; + module.exports = { core: { + foo: 'bar', + builder: 'webpack5' + }}; `); }); it('found scalar', () => { @@ -361,13 +354,7 @@ describe('ConfigFile', () => { module.exports = { core: { builder: 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - core: { - builder: 'webpack5' - } - }; - `); + ).toMatchInlineSnapshot(`module.exports = { core: { builder: 'webpack5' } };`); }); }); @@ -384,6 +371,7 @@ describe('ConfigFile', () => { ).toMatchInlineSnapshot(` export default { addons: [], + core: { builder: "webpack5" } @@ -400,12 +388,10 @@ describe('ConfigFile', () => { ` ) ).toMatchInlineSnapshot(` - export default { - core: { - foo: 'bar', - builder: 'webpack5' - } - }; + export default { core: { + foo: 'bar', + builder: 'webpack5' + }}; `); }); it('found scalar', () => { @@ -417,13 +403,7 @@ describe('ConfigFile', () => { export default { core: { builder: 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - export default { - core: { - builder: 'webpack5' - } - }; - `); + ).toMatchInlineSnapshot(`export default { core: { builder: 'webpack5' } };`); }); }); @@ -438,7 +418,8 @@ describe('ConfigFile', () => { it('more single quotes', () => { expect(setField(['foo', 'bar'], 'baz', `export const stories = ['a', 'b', "c"]`)) .toMatchInlineSnapshot(` - export const stories = ['a', 'b', "c"]; + export const stories = ['a', 'b', "c"] + export const foo = { bar: 'baz' }; @@ -447,7 +428,8 @@ describe('ConfigFile', () => { it('more double quotes', () => { expect(setField(['foo', 'bar'], 'baz', `export const stories = ['a', "b", "c"]`)) .toMatchInlineSnapshot(` - export const stories = ['a', "b", "c"]; + export const stories = ['a', "b", "c"] + export const foo = { bar: "baz" }; @@ -468,9 +450,7 @@ describe('ConfigFile', () => { ) ).toMatchInlineSnapshot(` export default { - core: { - builder: 'webpack5' - }, + core: { builder: 'webpack5' }, addons: ['docs'] }; `); @@ -495,11 +475,7 @@ describe('ConfigFile', () => { export default { addons: ['a11y', 'viewport'] }; ` ) - ).toMatchInlineSnapshot(` - export default { - addons: ['a11y', 'viewport', 'docs'] - }; - `); + ).toMatchInlineSnapshot(`export default { addons: ['a11y', 'viewport', 'docs'] };`); }); it('array of complex values', () => { @@ -511,11 +487,9 @@ describe('ConfigFile', () => { export default { addons: [require.resolve('a11y'), someVariable] }; ` ) - ).toMatchInlineSnapshot(` - export default { - addons: [require.resolve('a11y'), someVariable, 'docs'] - }; - `); + ).toMatchInlineSnapshot( + `export default { addons: [require.resolve('a11y'), someVariable, 'docs'] };` + ); }); }); @@ -539,11 +513,7 @@ describe('ConfigFile', () => { export const core = { foo: 'bar' }; ` ) - ).toMatchInlineSnapshot(` - export const core = { - foo: 'bar' - }; - `); + ).toMatchInlineSnapshot(`export const core = { foo: 'bar' };`); }); it('found scalar', () => { expect( @@ -573,11 +543,7 @@ describe('ConfigFile', () => { export const core = { builder: { name: 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - export const core = { - builder: {} - }; - `); + ).toMatchInlineSnapshot(`export const core = { builder: {} };`); }); it('string literal key', () => { expect( @@ -626,11 +592,7 @@ describe('ConfigFile', () => { module.exports = { addons: [] }; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - addons: [] - }; - `); + ).toMatchInlineSnapshot(`module.exports = { addons: [] };`); }); it('missing field', () => { expect( @@ -640,13 +602,7 @@ describe('ConfigFile', () => { module.exports = { core: { foo: 'bar' }}; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - core: { - foo: 'bar' - } - }; - `); + ).toMatchInlineSnapshot(`module.exports = { core: { foo: 'bar' }};`); }); it('found scalar', () => { expect( @@ -656,11 +612,7 @@ describe('ConfigFile', () => { module.exports = { core: { builder: 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - core: {} - }; - `); + ).toMatchInlineSnapshot(`module.exports = { core: {} };`); }); it('nested scalar', () => { expect( @@ -670,13 +622,7 @@ describe('ConfigFile', () => { module.exports = { core: { builder: { name: 'webpack4' } } }; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - core: { - builder: {} - } - }; - `); + ).toMatchInlineSnapshot(`module.exports = { core: { builder: {} } };`); }); it('string literal key', () => { expect( @@ -686,11 +632,7 @@ describe('ConfigFile', () => { module.exports = { 'core': { 'builder': 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - module.exports = { - 'core': {} - }; - `); + ).toMatchInlineSnapshot(`module.exports = { 'core': {} };`); }); it('root property', () => { expect( @@ -717,11 +659,7 @@ describe('ConfigFile', () => { export default { addons: [] }; ` ) - ).toMatchInlineSnapshot(` - export default { - addons: [] - }; - `); + ).toMatchInlineSnapshot(`export default { addons: [] };`); }); it('missing field', () => { expect( @@ -731,13 +669,7 @@ describe('ConfigFile', () => { export default { core: { foo: 'bar' }}; ` ) - ).toMatchInlineSnapshot(` - export default { - core: { - foo: 'bar' - } - }; - `); + ).toMatchInlineSnapshot(`export default { core: { foo: 'bar' }};`); }); it('found scalar', () => { expect( @@ -747,11 +679,7 @@ describe('ConfigFile', () => { export default { core: { builder: 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - export default { - core: {} - }; - `); + ).toMatchInlineSnapshot(`export default { core: {} };`); }); it('nested scalar', () => { expect( @@ -761,13 +689,7 @@ describe('ConfigFile', () => { export default { core: { builder: { name: 'webpack4' } } }; ` ) - ).toMatchInlineSnapshot(` - export default { - core: { - builder: {} - } - }; - `); + ).toMatchInlineSnapshot(`export default { core: { builder: {} } };`); }); it('string literal key', () => { expect( @@ -777,11 +699,7 @@ describe('ConfigFile', () => { export default { 'core': { 'builder': 'webpack4' } }; ` ) - ).toMatchInlineSnapshot(` - export default { - 'core': {} - }; - `); + ).toMatchInlineSnapshot(`export default { 'core': {} };`); }); it('root property', () => { expect( @@ -810,7 +728,8 @@ describe('ConfigFile', () => { it('more single quotes', () => { expect(setField(['foo', 'bar'], 'baz', `export const stories = ['a', 'b', "c"]`)) .toMatchInlineSnapshot(` - export const stories = ['a', 'b', "c"]; + export const stories = ['a', 'b', "c"] + export const foo = { bar: 'baz' }; @@ -819,7 +738,8 @@ describe('ConfigFile', () => { it('more double quotes', () => { expect(setField(['foo', 'bar'], 'baz', `export const stories = ['a', "b", "c"]`)) .toMatchInlineSnapshot(` - export const stories = ['a', "b", "c"]; + export const stories = ['a', "b", "c"] + export const foo = { bar: "baz" }; @@ -1049,4 +969,173 @@ describe('ConfigFile', () => { expect(config.getNamesFromPath(['addons'])).toBeUndefined(); }); }); + + describe('setImport', () => { + it(`supports setting a default import for a field that does not exist`, () => { + const source = dedent` + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setImport('path', 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + import path from 'path'; + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a default import for a field that does exist`, () => { + const source = dedent` + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setImport('path', 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + import path from 'path'; + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a named import for a field that does not exist`, () => { + const source = dedent` + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setImport(['dirname'], 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + import { dirname } from 'path'; + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a named import for a field where the source already exists`, () => { + const source = dedent` + import { dirname } from 'path'; + + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setImport(['dirname'], 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + import { dirname } from 'path'; + + const config: StorybookConfig = { }; + export default config; + `); + }); + }); + + describe('setRequireImport', () => { + it(`supports setting a default import for a field that does not exist`, () => { + const source = dedent` + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setRequireImport('path', 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + const path = require('path'); + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a default import for a field that does exist`, () => { + const source = dedent` + const path = require('path'); + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setRequireImport('path', 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + const path = require('path'); + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a named import for a field that does not exist`, () => { + const source = dedent` + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setRequireImport(['dirname'], 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + const { + dirname, + } = require('path'); + + const config: StorybookConfig = { }; + export default config; + `); + }); + + it(`supports setting a named import for a field where the source already exists`, () => { + const source = dedent` + const { dirname } = require('path'); + + const config: StorybookConfig = { }; + export default config; + `; + + const config = loadConfig(source).parse(); + config.setRequireImport(['dirname', 'basename'], 'path'); + + // eslint-disable-next-line no-underscore-dangle + const parsed = babelPrint(config._ast); + + expect(parsed).toMatchInlineSnapshot(` + const { + dirname, + basename, + } = require('path'); + + const config: StorybookConfig = { }; + export default config; + `); + }); + }); }); diff --git a/code/lib/csf-tools/src/ConfigFile.ts b/code/lib/csf-tools/src/ConfigFile.ts index 4f0db3e0d74f..e31750a2fed6 100644 --- a/code/lib/csf-tools/src/ConfigFile.ts +++ b/code/lib/csf-tools/src/ConfigFile.ts @@ -6,6 +6,8 @@ import * as t from '@babel/types'; import * as generate from '@babel/generator'; import * as traverse from '@babel/traverse'; +import type { Options } from 'recast'; +import * as recast from 'recast'; import { babelParse } from './babelParse'; const logger = console; @@ -514,6 +516,198 @@ export class ConfigFile { } this.setFieldNode(path, valueNode); } + + getBodyDeclarations() { + return this._ast.program.body; + } + + setBodyDeclaration(declaration: t.Declaration) { + this._ast.program.body.push(declaration); + } + + /** + * Import specifiers for a specific require import + * @param importSpecifiers - The import specifiers to set. If a string is passed in, a default import will be set. Otherwise, an array of named imports will be set + * @param fromImport - The module to import from + * @example + * // const { foo } = require('bar'); + * setRequireImport(['foo'], 'bar'); + * + * // const foo = require('bar'); + * setRequireImport('foo', 'bar'); + * + */ + setRequireImport(importSpecifier: string[] | string, fromImport: string) { + const requireDeclaration = this._ast.program.body.find( + (node) => + t.isVariableDeclaration(node) && + node.declarations.length === 1 && + t.isVariableDeclarator(node.declarations[0]) && + t.isCallExpression(node.declarations[0].init) && + t.isIdentifier(node.declarations[0].init.callee) && + node.declarations[0].init.callee.name === 'require' && + t.isStringLiteral(node.declarations[0].init.arguments[0]) && + node.declarations[0].init.arguments[0].value === fromImport + ) as t.VariableDeclaration | undefined; + + /** + * Returns true, when the given import declaration has the given import specifier + * @example + * // const { foo } = require('bar'); + * hasImportSpecifier(declaration, 'foo'); + */ + const hasRequireSpecifier = (name: string) => + t.isObjectPattern(requireDeclaration?.declarations[0].id) && + requireDeclaration?.declarations[0].id.properties.find( + (specifier) => + t.isObjectProperty(specifier) && + t.isIdentifier(specifier.key) && + specifier.key.name === name + ); + + /** + * Returns true, when the given import declaration has the given default import specifier + * @example + * // import foo from 'bar'; + * hasImportSpecifier(declaration, 'foo'); + */ + const hasDefaultRequireSpecifier = (declaration: t.VariableDeclaration, name: string) => + declaration.declarations.length === 1 && + t.isVariableDeclarator(declaration.declarations[0]) && + t.isIdentifier(declaration.declarations[0].id) && + declaration.declarations[0].id.name === name; + + // if the import specifier is a string, we're dealing with default imports + if (typeof importSpecifier === 'string') { + // If the import declaration with the given source exists + const addDefaultRequireSpecifier = () => { + this._ast.program.body.unshift( + t.variableDeclaration('const', [ + t.variableDeclarator( + t.identifier(importSpecifier), + t.callExpression(t.identifier('require'), [t.stringLiteral(fromImport)]) + ), + ]) + ); + }; + + if (requireDeclaration) { + if (!hasDefaultRequireSpecifier(requireDeclaration, importSpecifier)) { + // If the import declaration hasn't the specified default identifier, we add a new variable declaration + addDefaultRequireSpecifier(); + } + // If the import declaration with the given source doesn't exist + } else { + // Add the import declaration to the top of the file + addDefaultRequireSpecifier(); + } + // if the import specifier is an array, we're dealing with named imports + } else if (requireDeclaration) { + importSpecifier.forEach((specifier) => { + if (!hasRequireSpecifier(specifier)) { + (requireDeclaration.declarations[0].id as t.ObjectPattern).properties.push( + t.objectProperty(t.identifier(specifier), t.identifier(specifier), undefined, true) + ); + } + }); + } else { + this._ast.program.body.unshift( + t.variableDeclaration('const', [ + t.variableDeclarator( + t.objectPattern( + importSpecifier.map((specifier) => + t.objectProperty(t.identifier(specifier), t.identifier(specifier), undefined, true) + ) + ), + t.callExpression(t.identifier('require'), [t.stringLiteral(fromImport)]) + ), + ]) + ); + } + } + + /** + * Set import specifiers for a given import statement. + * @description Does not support setting type imports (yet) + * @param importSpecifiers - The import specifiers to set. If a string is passed in, a default import will be set. Otherwise, an array of named imports will be set + * @param fromImport - The module to import from + * @example + * // import { foo } from 'bar'; + * setImport(['foo'], 'bar'); + * + * // import foo from 'bar'; + * setImport('foo', 'bar'); + * + */ + setImport(importSpecifier: string[] | string, fromImport: string) { + const getNewImportSpecifier = (specifier: string) => + t.importSpecifier(t.identifier(specifier), t.identifier(specifier)); + + /** + * Returns true, when the given import declaration has the given import specifier + * @example + * // import { foo } from 'bar'; + * hasImportSpecifier(declaration, 'foo'); + */ + const hasImportSpecifier = (declaration: t.ImportDeclaration, name: string) => + declaration.specifiers.find( + (specifier) => + t.isImportSpecifier(specifier) && + t.isIdentifier(specifier.imported) && + specifier.imported.name === name + ); + + /** + * Returns true, when the given import declaration has the given default import specifier + * @example + * // import foo from 'bar'; + * hasImportSpecifier(declaration, 'foo'); + */ + const hasDefaultImportSpecifier = (declaration: t.ImportDeclaration, name: string) => + declaration.specifiers.find((specifier) => t.isImportDefaultSpecifier(specifier)); + + const importDeclaration = this._ast.program.body.find( + (node) => t.isImportDeclaration(node) && node.source.value === fromImport + ) as t.ImportDeclaration | undefined; + + // if the import specifier is a string, we're dealing with default imports + if (typeof importSpecifier === 'string') { + // If the import declaration with the given source exists + if (importDeclaration) { + if (!hasDefaultImportSpecifier(importDeclaration, importSpecifier)) { + // If the import declaration hasn't a default specifier, we add it + importDeclaration.specifiers.push( + t.importDefaultSpecifier(t.identifier(importSpecifier)) + ); + } + // If the import declaration with the given source doesn't exist + } else { + // Add the import declaration to the top of the file + this._ast.program.body.unshift( + t.importDeclaration( + [t.importDefaultSpecifier(t.identifier(importSpecifier))], + t.stringLiteral(fromImport) + ) + ); + } + // if the import specifier is an array, we're dealing with named imports + } else if (importDeclaration) { + importSpecifier.forEach((specifier) => { + if (!hasImportSpecifier(importDeclaration, specifier)) { + importDeclaration.specifiers.push(getNewImportSpecifier(specifier)); + } + }); + } else { + this._ast.program.body.unshift( + t.importDeclaration( + importSpecifier.map((specifier) => + t.importSpecifier(t.identifier(specifier), t.identifier(specifier)) + ), + t.stringLiteral(fromImport) + ) + ); + } + } } export const loadConfig = (code: string, fileName?: string) => { @@ -522,8 +716,11 @@ export const loadConfig = (code: string, fileName?: string) => { }; export const formatConfig = (config: ConfigFile) => { - const { code } = generate.default(config._ast, {}); - return code; + return printConfig(config).code; +}; + +export const printConfig = (config: ConfigFile, options: Options = {}) => { + return recast.print(config._ast, options); }; export const readConfig = async (fileName: string) => { @@ -534,5 +731,5 @@ export const readConfig = async (fileName: string) => { export const writeConfig = async (config: ConfigFile, fileName?: string) => { const fname = fileName || config.fileName; if (!fname) throw new Error('Please specify a fileName for writeConfig'); - await fs.writeFile(fname, await formatConfig(config)); + await fs.writeFile(fname, formatConfig(config)); }; diff --git a/code/lib/csf-tools/src/CsfFile.test.ts b/code/lib/csf-tools/src/CsfFile.test.ts index 6250ea1c3696..c57859e3fee5 100644 --- a/code/lib/csf-tools/src/CsfFile.test.ts +++ b/code/lib/csf-tools/src/CsfFile.test.ts @@ -16,12 +16,12 @@ const makeTitle = (userTitle?: string) => { const parse = (code: string, includeParameters?: boolean) => { const { stories, meta } = loadCsf(code, { makeTitle }).parse(); - const filtered = includeParameters - ? stories - : stories.map(({ id, name, parameters, ...rest }) => ({ id, name, ...rest })); + const filtered = includeParameters ? stories : stories.map(({ parameters, ...rest }) => rest); return { meta, stories: filtered }; }; +// + describe('CsfFile', () => { describe('basic', () => { it('args stories', () => { @@ -124,7 +124,7 @@ describe('CsfFile', () => { expect( parse( dedent` - export default { title: 'foo/bar', includeStories: /^Include.*/ }; + export default { title: 'foo/bar', includeStories: ['IncludeA'] }; export const SomeHelper = () => {}; export const IncludeA = () => {}; ` @@ -132,7 +132,8 @@ describe('CsfFile', () => { ).toMatchInlineSnapshot(` meta: title: foo/bar - includeStories: ! /^Include.*/ + includeStories: + - IncludeA stories: - id: foo-bar--include-a name: Include A @@ -199,6 +200,27 @@ describe('CsfFile', () => { `); }); + it('custom parameters.__id', () => { + expect( + parse( + dedent` + export default { title: 'foo/bar', id: 'custom-meta-id' }; + export const JustCustomMetaId = {}; + export const CustomParemetersId = { parameters: { __id: 'custom-id' } }; + ` + ) + ).toMatchInlineSnapshot(` + meta: + title: foo/bar + id: custom-meta-id + stories: + - id: custom-meta-id--just-custom-meta-id + name: Just Custom Meta Id + - id: custom-id + name: Custom Paremeters Id + `); + }); + it('typescript', () => { expect( parse( @@ -225,21 +247,57 @@ describe('CsfFile', () => { expect( parse( dedent` - import type { Meta, StoryFn } from '@storybook/react'; + import type { Meta, StoryFn, StoryObj } from '@storybook/react'; type PropTypes = {}; - export default { title: 'foo/bar/baz' } as Meta; - export const A: StoryFn = () => <>A; - export const B: StoryFn = () => <>B; - ` + export default { title: 'foo/bar' } satisfies Meta; + export const A = { name: 'AA' } satisfies StoryObj; + export const B = ((args) => {}) satisfies StoryFn; + `, + true ) ).toMatchInlineSnapshot(` meta: - title: foo/bar/baz + title: foo/bar stories: - - id: foo-bar-baz--a - name: A - - id: foo-bar-baz--b + - id: foo-bar--a + name: AA + parameters: + __isArgsStory: true + __id: foo-bar--a + - id: foo-bar--b + name: B + parameters: + __isArgsStory: true + __id: foo-bar--b + `); + }); + + it('typescript as', () => { + expect( + parse( + dedent` + import type { Meta, StoryFn, StoryObj } from '@storybook/react'; + type PropTypes = {}; + export default { title: 'foo/bar' } as Meta; + export const A = { name: 'AA' } as StoryObj; + export const B = ((args) => {}) as StoryFn; + `, + true + ) + ).toMatchInlineSnapshot(` + meta: + title: foo/bar + stories: + - id: foo-bar--a + name: AA + parameters: + __isArgsStory: true + __id: foo-bar--a + - id: foo-bar--b name: B + parameters: + __isArgsStory: true + __id: foo-bar--b `); }); @@ -529,10 +587,10 @@ describe('CsfFile', () => { } `) ).toMatchInlineSnapshot(` - meta: - title: Chip - stories: [] - `); + meta: + title: Chip + stories: [] + `); }); }); @@ -1006,4 +1064,135 @@ describe('CsfFile', () => { `); }); }); + + describe('index inputs', () => { + it('generates index inputs', () => { + const { indexInputs } = loadCsf( + dedent` + export default { + id: 'component-id', + title: 'custom foo title', + tags: ['component-tag'] + }; + + export const A = { + play: () => {}, + tags: ['story-tag'], + }; + + export const B = { + play: () => {}, + tags: ['story-tag'], + }; + `, + { makeTitle, fileName: 'foo/bar.stories.js' } + ).parse(); + + expect(indexInputs).toMatchInlineSnapshot(` + - type: story + importPath: foo/bar.stories.js + exportName: A + name: A + title: custom foo title + metaId: component-id + tags: + - component-tag + - story-tag + - play-fn + __id: component-id--a + - type: story + importPath: foo/bar.stories.js + exportName: B + name: B + title: custom foo title + metaId: component-id + tags: + - component-tag + - story-tag + - play-fn + __id: component-id--b + `); + }); + + it('supports custom parameters.__id', () => { + const { indexInputs } = loadCsf( + dedent` + export default { + id: 'component-id', + title: 'custom foo title', + tags: ['component-tag'] + }; + + export const A = { + parameters: { __id: 'custom-story-id' } + }; + `, + { makeTitle, fileName: 'foo/bar.stories.js' } + ).parse(); + + expect(indexInputs).toMatchInlineSnapshot(` + - type: story + importPath: foo/bar.stories.js + exportName: A + name: A + title: custom foo title + metaId: component-id + tags: + - component-tag + __id: custom-story-id + `); + }); + + it('removes duplicate tags', () => { + const { indexInputs } = loadCsf( + dedent` + export default { + title: 'custom foo title', + tags: ['component-tag', 'component-tag-dup', 'component-tag-dup', 'inherit-tag-dup'] + }; + + export const A = { + tags: ['story-tag', 'story-tag-dup', 'story-tag-dup', 'inherit-tag-dup'] + }; + `, + { makeTitle, fileName: 'foo/bar.stories.js' } + ).parse(); + + expect(indexInputs).toMatchInlineSnapshot(` + - type: story + importPath: foo/bar.stories.js + exportName: A + name: A + title: custom foo title + tags: + - component-tag + - component-tag-dup + - inherit-tag-dup + - story-tag + - story-tag-dup + __id: custom-foo-title--a + `); + }); + + it('throws if getting indexInputs without filename option', () => { + const csf = loadCsf( + dedent` + export default { + title: 'custom foo title', + tags: ['component-tag', 'component-tag-dup', 'component-tag-dup', 'inherit-tag-dup'] + }; + + export const A = { + tags: ['story-tag', 'story-tag-dup', 'story-tag-dup', 'inherit-tag-dup'] + }; + `, + { makeTitle } + ).parse(); + + expect(() => csf.indexInputs).toThrowErrorMatchingInlineSnapshot(` + "Cannot automatically create index inputs with CsfFile.indexInputs because the CsfFile instance was created without a the fileName option. + Either add the fileName option when creating the CsfFile instance, or create the index inputs manually." + `); + }); + }); }); diff --git a/code/lib/csf-tools/src/CsfFile.ts b/code/lib/csf-tools/src/CsfFile.ts index bfc9716e425b..15ab39abdc45 100644 --- a/code/lib/csf-tools/src/CsfFile.ts +++ b/code/lib/csf-tools/src/CsfFile.ts @@ -5,10 +5,18 @@ import { dedent } from 'ts-dedent'; import * as t from '@babel/types'; import * as generate from '@babel/generator'; +import * as recast from 'recast'; import * as traverse from '@babel/traverse'; import { toId, isExportStory, storyNameFromExport } from '@storybook/csf'; -import type { Tag, StoryAnnotations, ComponentAnnotations } from '@storybook/types'; +import type { + Tag, + StoryAnnotations, + ComponentAnnotations, + IndexedCSFFile, + IndexInput, +} from '@storybook/types'; +import type { Options } from 'recast'; import { babelParse } from './babelParse'; import { findVarInitialization } from './findVarInitialization'; @@ -167,7 +175,13 @@ export class CsfFile { const node = t.isIdentifier(value) ? findVarInitialization(value.name, this._ast.program) : value; - if (t.isStringLiteral(node)) return node.value; + if (t.isStringLiteral(node)) { + return node.value; + } + if (t.isTSSatisfiesExpression(node) && t.isStringLiteral(node.expression)) { + return node.expression.value; + } + throw new Error(dedent` CSF: unexpected dynamic title ${formatLocation(node, this._fileName)} @@ -186,7 +200,7 @@ export class CsfFile { } else if (['includeStories', 'excludeStories'].includes(p.key.name)) { (meta as any)[p.key.name] = parseIncludeExclude(p.value); } else if (p.key.name === 'component') { - const { code } = generate.default(p.value, {}); + const { code } = recast.print(p.value, {}); meta.component = code; } else if (p.key.name === 'tags') { let node = p.value; @@ -309,33 +323,50 @@ export class CsfFile { } else { self._storyAnnotations[exportName] = {}; } - let parameters; - if (t.isVariableDeclarator(decl) && t.isObjectExpression(decl.init)) { - // eslint-disable-next-line @typescript-eslint/naming-convention - let __isArgsStory = true; // assume default render is an args story + let storyNode; + if (t.isVariableDeclarator(decl)) { + storyNode = + t.isTSAsExpression(decl.init) || t.isTSSatisfiesExpression(decl.init) + ? decl.init.expression + : decl.init; + } else { + storyNode = decl; + } + const parameters: { [key: string]: any } = {}; + if (t.isObjectExpression(storyNode)) { + parameters.__isArgsStory = true; // assume default render is an args story // CSF3 object export - (decl.init.properties as t.ObjectProperty[]).forEach((p) => { + (storyNode.properties as t.ObjectProperty[]).forEach((p) => { if (t.isIdentifier(p.key)) { if (p.key.name === 'render') { - __isArgsStory = isArgsStory(p.value as t.Expression, parent, self); + parameters.__isArgsStory = isArgsStory( + p.value as t.Expression, + parent, + self + ); } else if (p.key.name === 'name' && t.isStringLiteral(p.value)) { name = p.value.value; } else if (p.key.name === 'storyName' && t.isStringLiteral(p.value)) { logger.warn( `Unexpected usage of "storyName" in "${exportName}". Please use "name" instead.` ); + } else if (p.key.name === 'parameters' && t.isObjectExpression(p.value)) { + const idProperty = p.value.properties.find( + (property) => + t.isObjectProperty(property) && + t.isIdentifier(property.key) && + property.key.name === '__id' + ) as t.ObjectProperty | undefined; + if (idProperty) { + parameters.__id = (idProperty.value as t.StringLiteral).value; + } } + self._storyAnnotations[exportName][p.key.name] = p.value; } }); - parameters = { __isArgsStory }; } else { - const fn = t.isVariableDeclarator(decl) ? decl.init : decl; - parameters = { - // __id: toId(self._meta.title, name), - // FIXME: Template.bind({}); - __isArgsStory: isArgsStory(fn as t.Node, parent, self), - }; + parameters.__isArgsStory = isArgsStory(storyNode as t.Node, parent, self); } self._stories[exportName] = { id: 'FIXME', @@ -461,27 +492,31 @@ export class CsfFile { self._meta.tags = [...(self._meta.tags || []), 'play-fn']; } self._stories = entries.reduce((acc, [key, story]) => { - if (isExportStory(key, self._meta as StaticMeta)) { - const id = toId((self._meta?.id || self._meta?.title) as string, storyNameFromExport(key)); - const parameters: Record = { ...story.parameters, __id: id }; - const { includeStories } = self._meta || {}; - if ( - key === '__page' && - (entries.length === 1 || (Array.isArray(includeStories) && includeStories.length === 1)) - ) { - parameters.docsOnly = true; - } - acc[key] = { ...story, id, parameters }; - const { tags, play } = self._storyAnnotations[key]; - if (tags) { - const node = t.isIdentifier(tags) - ? findVarInitialization(tags.name, this._ast.program) - : tags; - acc[key].tags = parseTags(node); - } - if (play) { - acc[key].tags = [...(acc[key].tags || []), 'play-fn']; - } + if (!isExportStory(key, self._meta as StaticMeta)) { + return acc; + } + const id = + story.parameters?.__id ?? + toId((self._meta?.id || self._meta?.title) as string, storyNameFromExport(key)); + const parameters: Record = { ...story.parameters, __id: id }; + + const { includeStories } = self._meta || {}; + if ( + key === '__page' && + (entries.length === 1 || (Array.isArray(includeStories) && includeStories.length === 1)) + ) { + parameters.docsOnly = true; + } + acc[key] = { ...story, id, parameters }; + const { tags, play } = self._storyAnnotations[key]; + if (tags) { + const node = t.isIdentifier(tags) + ? findVarInitialization(tags.name, this._ast.program) + : tags; + acc[key].tags = parseTags(node); + } + if (play) { + acc[key].tags = [...(acc[key].tags || []), 'play-fn']; } return acc; }, {} as Record); @@ -508,7 +543,7 @@ export class CsfFile { } } - return self; + return self as CsfFile & IndexedCSFFile; } public get meta() { @@ -518,6 +553,29 @@ export class CsfFile { public get stories() { return Object.values(this._stories); } + + public get indexInputs(): IndexInput[] { + if (!this._fileName) { + throw new Error( + dedent`Cannot automatically create index inputs with CsfFile.indexInputs because the CsfFile instance was created without a the fileName option. + Either add the fileName option when creating the CsfFile instance, or create the index inputs manually.` + ); + } + return Object.entries(this._stories).map(([exportName, story]) => { + // combine meta and story tags, removing any duplicates + const tags = Array.from(new Set([...(this._meta?.tags ?? []), ...(story.tags ?? [])])); + return { + type: 'story', + importPath: this._fileName, + exportName, + name: story.name, + title: this.meta?.title, + metaId: this.meta?.id, + tags, + __id: story.id, + }; + }); + } } export const loadCsf = (code: string, options: CsfOptions) => { @@ -527,7 +585,9 @@ export const loadCsf = (code: string, options: CsfOptions) => { interface FormatOptions { sourceMaps?: boolean; + preserveStyle?: boolean; } + export const formatCsf = (csf: CsfFile, options: FormatOptions = { sourceMaps: false }) => { const result = generate.default(csf._ast, options); if (options.sourceMaps) { @@ -537,6 +597,13 @@ export const formatCsf = (csf: CsfFile, options: FormatOptions = { sourceMaps: f return code; }; +/** + * Use this function, if you want to preserve styles. Uses recast under the hood. + */ +export const printCsf = (csf: CsfFile, options: Options = {}) => { + return recast.print(csf._ast, options); +}; + export const readCsf = async (fileName: string, options: CsfOptions) => { const code = (await fs.readFile(fileName, 'utf-8')).toString(); return loadCsf(code, { ...options, fileName }); @@ -545,5 +612,5 @@ export const readCsf = async (fileName: string, options: CsfOptions) => { export const writeCsf = async (csf: CsfFile, fileName?: string) => { const fname = fileName || csf._fileName; if (!fname) throw new Error('Please specify a fileName for writeCsf'); - await fs.writeFile(fileName as string, (await formatCsf(csf)) as string); + await fs.writeFile(fileName as string, printCsf(csf).code); }; diff --git a/code/lib/csf-tools/src/babelParse.ts b/code/lib/csf-tools/src/babelParse.ts index 97c292ab21ca..43f49d4c166a 100644 --- a/code/lib/csf-tools/src/babelParse.ts +++ b/code/lib/csf-tools/src/babelParse.ts @@ -36,6 +36,16 @@ export const babelParse = (code: string) => { }); }; +export const babelPrint = (ast: recast.types.ASTNode) => { + return recast.print(ast, { + quote: 'single', + trailingComma: true, + tabWidth: 2, + wrapColumn: 80, + arrowParensAlways: true, + }).code; +}; + export const babelParseExpression = (code: string) => { return babelParser.parseExpression(code, parserOptions); }; diff --git a/code/lib/csf-tools/src/enrichCsf.test.ts b/code/lib/csf-tools/src/enrichCsf.test.ts index 1f202bfb5a3a..a8f5f3aaa09c 100644 --- a/code/lib/csf-tools/src/enrichCsf.test.ts +++ b/code/lib/csf-tools/src/enrichCsf.test.ts @@ -2,9 +2,9 @@ /* eslint-disable no-underscore-dangle */ import { dedent } from 'ts-dedent'; -import { loadCsf, formatCsf } from './CsfFile'; -import { enrichCsf, extractSource } from './enrichCsf'; +import { formatCsf, loadCsf } from './CsfFile'; import type { EnrichCsfOptions } from './enrichCsf'; +import { enrichCsf, extractSource } from './enrichCsf'; expect.addSnapshotSerializer({ print: (val: any) => val, diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 45cc3dd02e91..31628435b746 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" @@ -36,23 +36,24 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-common": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/core-common": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" }, "devDependencies": { - "@babel/core": "^7.12.10", - "jest-specific-snapshot": "^7.0.0", + "@babel/core": "^7.22.9", + "jest-specific-snapshot": "^8.0.0", "require-from-string": "^2.0.2", "typescript": "~4.9.3" }, @@ -64,5 +65,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 7d71c1c77f78..f53e74ff9ff6 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -36,18 +36,19 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17" + "@storybook/preview-api": "workspace:*" }, "devDependencies": { "typescript": "~4.9.3" @@ -60,5 +61,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/instrumenter/src/instrumenter.test.ts b/code/lib/instrumenter/src/instrumenter.test.ts index da65f5498dd7..eadb1f7d5c84 100644 --- a/code/lib/instrumenter/src/instrumenter.test.ts +++ b/code/lib/instrumenter/src/instrumenter.test.ts @@ -37,7 +37,9 @@ global.location = { reload: jest.fn() }; global.HTMLElement = HTMLElement; const storyId = 'kind--story'; -global.window.__STORYBOOK_PREVIEW__ = { selectionStore: { selection: { storyId } } }; +global.window.__STORYBOOK_PREVIEW__ = { + selectionStore: { selection: { storyId, viewMode: 'story' } }, +} as any; const setRenderPhase = (newPhase: string) => addons.getChannel().emit(STORY_RENDER_PHASE_CHANGED, { newPhase, storyId }); diff --git a/code/lib/instrumenter/src/typings.d.ts b/code/lib/instrumenter/src/typings.d.ts index d9ef4b0e849f..cde68861ee72 100644 --- a/code/lib/instrumenter/src/typings.d.ts +++ b/code/lib/instrumenter/src/typings.d.ts @@ -1,11 +1,6 @@ /* eslint-disable no-underscore-dangle, @typescript-eslint/naming-convention */ -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var __STORYBOOK_PREVIEW__: any; declare var __STORYBOOK_ADDON_INTERACTIONS_INSTRUMENTER_STATE__: any; diff --git a/code/lib/manager-api-shim/jest.config.js b/code/lib/manager-api-shim/jest.config.js deleted file mode 100644 index 4396fbc7010d..000000000000 --- a/code/lib/manager-api-shim/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.browser'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 4bf9af993219..7f2566a63dc7 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" @@ -35,27 +35,28 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/router": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "semver": "^7.3.7", "store2": "^2.14.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -78,5 +79,5 @@ "./src/index.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index ef5107c01ef6..ab247114e440 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -53,7 +53,6 @@ import * as channel from './modules/channel'; import * as notifications from './modules/notifications'; import * as settings from './modules/settings'; -import * as releaseNotes from './modules/release-notes'; // eslint-disable-next-line import/no-cycle import * as stories from './modules/stories'; @@ -63,8 +62,10 @@ import * as shortcuts from './modules/shortcuts'; import * as url from './modules/url'; import * as version from './modules/versions'; +import * as whatsnew from './modules/whatsnew'; import * as globals from './modules/globals'; +import type { ModuleFn } from './lib/types'; export * from './lib/shortcut'; @@ -76,14 +77,6 @@ export { ActiveTabs }; export const ManagerContext = createContext({ api: undefined, state: getInitialState({}) }); -export type ModuleArgs = RouterData & - API_ProviderData & { - mode?: 'production' | 'development'; - state: State; - fullAPI: API; - store: Store; - }; - export type State = layout.SubState & stories.SubState & refs.SubState & @@ -91,9 +84,9 @@ export type State = layout.SubState & version.SubState & url.SubState & shortcuts.SubState & - releaseNotes.SubState & settings.SubState & globals.SubState & + whatsnew.SubState & RouterData & API_OptionsData & DeprecatedState & @@ -108,10 +101,10 @@ export type API = addons.SubAPI & layout.SubAPI & notifications.SubAPI & shortcuts.SubAPI & - releaseNotes.SubAPI & settings.SubAPI & version.SubAPI & url.SubAPI & + whatsnew.SubAPI & Other; interface DeprecatedState { @@ -152,28 +145,10 @@ export const combineParameters = (...parameterSets: Parameters[]) => return undefined; }); -interface ModuleWithInit { - init: () => void | Promise; - api: APIType; - state: StateType; -} - -type ModuleWithoutInit = Omit< - ModuleWithInit, - 'init' ->; - -export type ModuleFn = ( - m: ModuleArgs, - options?: any -) => HasInit extends true - ? ModuleWithInit - : ModuleWithoutInit; - class ManagerProvider extends Component { api: API = {} as API; - modules: (ModuleWithInit | ModuleWithoutInit)[]; + modules: ReturnType[]; static displayName = 'Manager'; @@ -183,7 +158,7 @@ class ManagerProvider extends Component { location, path, refId, - viewMode = props.docsOptions.docsMode ? 'docs' : 'story', + viewMode = props.docsOptions.docsMode ? 'docs' : props.viewMode, singleStory, storyId, docsOptions, @@ -213,13 +188,13 @@ class ManagerProvider extends Component { layout, notifications, settings, - releaseNotes, shortcuts, stories, refs, globals, url, version, + whatsnew, ].map((m) => m.init({ ...routeData, ...optionsData, ...apiData, state: this.state, fullAPI: this.api }) ); @@ -418,36 +393,43 @@ const addonStateCache: { // shared state export function useSharedState(stateId: string, defaultState?: S) { const api = useStorybookApi(); - const existingState = api.getAddonState(stateId); + const existingState = api.getAddonState(stateId) || addonStateCache[stateId]; const state = orDefault( existingState, addonStateCache[stateId] ? addonStateCache[stateId] : defaultState ); - const setState = (s: S | API_StateMerger, options?: Options) => { - // set only after the stories are loaded - if (addonStateCache[stateId]) { - addonStateCache[stateId] = s; + + useEffect(() => { + if (api.getAddonState(stateId) === undefined && api.getAddonState(stateId) !== state) { + api.setAddonState(stateId, state).then((s) => { + addonStateCache[stateId] = s; + }); } - api.setAddonState(stateId, s, options); + }, [api]); + + const setState = (s: S | API_StateMerger, options?: Options) => { + const result = api.setAddonState(stateId, s, options); + addonStateCache[stateId] = result; + return result; }; const allListeners = useMemo(() => { const stateChangeHandlers = { - [`${SHARED_STATE_CHANGED}-client-${stateId}`]: (s: S) => setState(s), - [`${SHARED_STATE_SET}-client-${stateId}`]: (s: S) => setState(s), + [`${SHARED_STATE_CHANGED}-client-${stateId}`]: setState, + [`${SHARED_STATE_SET}-client-${stateId}`]: setState, }; const stateInitializationHandlers = { - [SET_STORIES]: () => { + [SET_STORIES]: async () => { const currentState = api.getAddonState(stateId); if (currentState) { addonStateCache[stateId] = currentState; api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, currentState); } else if (addonStateCache[stateId]) { // this happens when HMR - setState(addonStateCache[stateId]); + await setState(addonStateCache[stateId]); api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, addonStateCache[stateId]); } else if (defaultState !== undefined) { // if not HMR, yet the defaults are from the manager - setState(defaultState); + await setState(defaultState); // initialize addonStateCache after first load, so its available for subsequent HMR addonStateCache[stateId] = defaultState; api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, defaultState); @@ -471,9 +453,9 @@ export function useSharedState(stateId: string, defaultState?: S) { const emit = useChannel(allListeners); return [ state, - (newStateOrMerger: S | API_StateMerger, options?: Options) => { - setState(newStateOrMerger, options); - emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`, newStateOrMerger); + async (newStateOrMerger: S | API_StateMerger, options?: Options) => { + const result = await setState(newStateOrMerger, options); + emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`, result); }, ] as [S, (newStateOrMerger: S | API_StateMerger, options?: Options) => void]; } diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index de8dd75c2767..1145ab1826f5 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -8,7 +8,13 @@ import type { Addon_Elements, Addon_Loaders, Addon_Type, + Addon_BaseType, + Addon_PageType, Addon_Types, + Addon_TypesMapping, + Addon_WrapperType, + Addon_SidebarBottomType, + Addon_SidebarTopType, } from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; import { logger } from '@storybook/client-logger'; @@ -21,6 +27,13 @@ export function isSupportedType(type: Addon_Types): boolean { return !!Object.values(Addon_TypesEnum).find((typeVal) => typeVal === type); } +interface DeprecatedAddonWithId { + /** + * @deprecated will be removed in 8.0, when registering addons, please use the addon id as the first argument + */ + id?: string; +} + export class AddonStore { constructor() { this.promise = new Promise((res) => { @@ -36,6 +49,9 @@ export class AddonStore { private channel: Channel | undefined; + /** + * @deprecated will be removed in 8.0 + */ private serverChannel: Channel | undefined; private promise: any; @@ -51,6 +67,9 @@ export class AddonStore { return this.channel; }; + /** + * @deprecated will be removed in 8.0, use getChannel instead + */ getServerChannel = (): Channel => { if (!this.serverChannel) { throw new Error('Accessing non-existent serverChannel'); @@ -63,6 +82,9 @@ export class AddonStore { hasChannel = (): boolean => !!this.channel; + /** + * @deprecated will be removed in 8.0, please use the normal channel instead + */ hasServerChannel = (): boolean => !!this.serverChannel; setChannel = (channel: Channel): void => { @@ -70,29 +92,70 @@ export class AddonStore { this.resolve(); }; + /** + * @deprecated will be removed in 8.0, please use the normal channel instead + */ setServerChannel = (channel: Channel): void => { this.serverChannel = channel; }; - getElements = (type: Addon_Types): Addon_Collection => { + getElements< + T extends + | Addon_Types + | Addon_TypesEnum.experimental_PAGE + | Addon_TypesEnum.experimental_SIDEBAR_BOTTOM + | Addon_TypesEnum.experimental_SIDEBAR_TOP + >(type: T): Addon_Collection { if (!this.elements[type]) { this.elements[type] = {}; } + // @ts-expect-error (Kaspar told me to do this) return this.elements[type]; - }; + } - addPanel = (name: string, options: Addon_Type): void => { - this.add(name, { + /** + * Adds a panel to the addon store. + * @param {string} id - The id of the panel. + * @param {Addon_Type} options - The options for the panel. + * @returns {void} + * + * @deprecated Use the 'add' method instead. + * @example + * addons.add('My Panel', { + * title: 'My Title', + * type: types.PANEL, + * render: () =>
My Content
, + * }); + */ + addPanel = ( + id: string, + options: Omit & DeprecatedAddonWithId + ): void => { + this.add(id, { type: Addon_TypesEnum.PANEL, ...options, }); }; - add = (name: string, addon: Addon_Type) => { + /** + * Adds an addon to the addon store. + * @param {string} id - The id of the addon. + * @param {Addon_Type} addon - The addon to add. + * @returns {void} + */ + add( + id: string, + addon: + | Addon_BaseType + | (Omit & DeprecatedAddonWithId) + | (Omit & DeprecatedAddonWithId) + | (Omit & DeprecatedAddonWithId) + | (Omit & DeprecatedAddonWithId) + ): void { const { type } = addon; const collection = this.getElements(type); - collection[name] = { id: name, ...addon }; - }; + collection[id] = { id, ...addon }; + } setConfig = (value: Addon_Config) => { Object.assign(this.config, value); @@ -107,11 +170,18 @@ export class AddonStore { getConfig = () => this.config; - register = (name: string, registerCallback: (api: API) => void): void => { - if (this.loaders[name]) { - logger.warn(`${name} was loaded twice, this could have bad side-effects`); + /** + * Registers an addon loader function. + * + * @param {string} id - The id of the addon loader. + * @param {(api: API) => void} callback - The function that will be called to register the addon. + * @returns {void} + */ + register = (id: string, callback: (api: API) => void): void => { + if (this.loaders[id]) { + logger.warn(`${id} was loaded twice, this could have bad side-effects`); } - this.loaders[name] = registerCallback; + this.loaders[id] = callback; }; loadAddons = (api: any) => { diff --git a/code/lib/manager-api/src/lib/stories.ts b/code/lib/manager-api/src/lib/stories.ts index 51823a7cfa6b..b48cbd51b877 100644 --- a/code/lib/manager-api/src/lib/stories.ts +++ b/code/lib/manager-api/src/lib/stories.ts @@ -23,7 +23,7 @@ import type { StoryIndexV2, } from '@storybook/types'; // eslint-disable-next-line import/no-cycle -import { type API, combineParameters } from '../index'; +import { type API, combineParameters, type State } from '../index'; import merge from './merge'; const TITLE_PATH_SEPARATOR = /\s*\/\s*/; @@ -45,12 +45,9 @@ export const denormalizeStoryParameters = ({ export const transformSetStoriesStoryDataToStoriesHash = ( data: SetStoriesStoryData, - { provider, docsOptions }: { provider: API_Provider; docsOptions: DocsOptions } + options: ToStoriesHashOptions ) => - transformStoryIndexToStoriesHash(transformSetStoriesStoryDataToPreparedStoryIndex(data), { - provider, - docsOptions, - }); + transformStoryIndexToStoriesHash(transformSetStoriesStoryDataToPreparedStoryIndex(data), options); const transformSetStoriesStoryDataToPreparedStoryIndex = ( stories: SetStoriesStoryData @@ -136,15 +133,16 @@ export const transformStoryIndexV3toV4 = (index: StoryIndexV3): API_PreparedStor }; }; +type ToStoriesHashOptions = { + provider: API_Provider; + docsOptions: DocsOptions; + filters: State['filters']; + status: State['status']; +}; + export const transformStoryIndexToStoriesHash = ( input: API_PreparedStoryIndex | StoryIndexV2 | StoryIndexV3, - { - provider, - docsOptions, - }: { - provider: API_Provider; - docsOptions: DocsOptions; - } + { provider, docsOptions, filters, status }: ToStoriesHashOptions ): API_IndexHash => { if (!input.v) { throw new Error('Composition: Missing stories.json version'); @@ -155,13 +153,25 @@ export const transformStoryIndexToStoriesHash = ( index = index.v === 3 ? transformStoryIndexV3toV4(index as any) : index; index = index as API_PreparedStoryIndex; - const entryValues = Object.values(index.entries); + const entryValues = Object.values(index.entries).filter((entry) => { + let result = true; + + Object.values(filters).forEach((filter) => { + if (result === false) { + return; + } + result = filter({ ...entry, status: status[entry.id] }); + }); + + return result; + }); + const { sidebar = {} } = provider.getConfig(); const { showRoots, collapsedRoots = [], renderLabel } = sidebar; const setShowRoots = typeof showRoots !== 'undefined'; - const storiesHashOutOfOrder = Object.values(entryValues).reduce((acc, item) => { + const storiesHashOutOfOrder = entryValues.reduce((acc, item) => { if (docsOptions.docsMode && item.type !== 'docs') { return acc; } diff --git a/code/lib/manager-api/src/lib/types.tsx b/code/lib/manager-api/src/lib/types.tsx new file mode 100644 index 000000000000..a195f514999e --- /dev/null +++ b/code/lib/manager-api/src/lib/types.tsx @@ -0,0 +1,22 @@ +import type { API_ProviderData } from '@storybook/types'; +import type { RouterData } from '@storybook/router'; + +import type { API, State } from '../index'; +import type Store from '../store'; + +export type ModuleFn = ( + m: ModuleArgs, + options?: any +) => { + init?: () => void | Promise; + api: APIType; + state: StateType; +}; + +export type ModuleArgs = RouterData & + API_ProviderData & { + mode?: 'production' | 'development'; + state: State; + fullAPI: API; + store: Store; + }; diff --git a/code/lib/manager-api/src/modules/addons.ts b/code/lib/manager-api/src/modules/addons.ts index 74c4bb7afb96..0e1d69ca39e5 100644 --- a/code/lib/manager-api/src/modules/addons.ts +++ b/code/lib/manager-api/src/modules/addons.ts @@ -1,6 +1,13 @@ -import type { Addon_Types, API_Collection, API_Panels, API_StateMerger } from '@storybook/types'; +import type { + Addon_BaseType, + Addon_Collection, + Addon_Types, + Addon_TypesMapping, + API_Panels, + API_StateMerger, +} from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; import type { Options } from '../store'; export interface SubState { @@ -9,16 +16,69 @@ export interface SubState { } export interface SubAPI { - getElements: (type: Addon_Types) => API_Collection; + /** + * Returns a collection of elements of a specific type. + * @protected This is used internally in storybook's manager. + * @template T - The type of the elements in the collection. + * @param {Addon_Types | Addon_TypesEnum.experimental_PAGE} type - The type of the elements to retrieve. + * @returns {API_Collection} - A collection of elements of the specified type. + */ + getElements: < + T extends + | Addon_Types + | Addon_TypesEnum.experimental_PAGE + | Addon_TypesEnum.experimental_SIDEBAR_BOTTOM + | Addon_TypesEnum.experimental_SIDEBAR_TOP = Addon_Types + >( + type: T + ) => Addon_Collection; + /** + * Returns a collection of all panels. + * This is the same as calling getElements('panel') + * @protected This is used internally in storybook's manager. + * @deprecated please use getElements('panel') instead. This API will be removed in storybook 8.0. + * @returns {API_Panels} - A collection of all panels. + */ getPanels: () => API_Panels; + /** + * Returns a collection of panels currently enabled for the selected story. + * @protected This is used internally in storybook's manager. + * @deprecated please use getElements('panel') instead, and do the filtering manually. This API will be removed in storybook 8.0. + * @returns {API_Panels} - A collection of all panels. + */ getStoryPanels: () => API_Panels; + /** + * Returns the id of the currently selected panel. + * @returns {string} - The ID of the currently selected panel. + */ getSelectedPanel: () => string; + /** + * Sets the currently selected panel via it's ID. + * @param {string} panelName - The ID of the panel to select. + * @returns {void} + */ setSelectedPanel: (panelName: string) => void; + /** + * Sets the state of an addon with the given ID. + * @template S - The type of the addon state. + * @param {string} addonId - The ID of the addon to set the state for. + * @param {S | API_StateMerger} newStateOrMerger - The new state to set, or a function which receives the current state and returns the new state. + * @param {Options} [options] - Optional options for the state update. + * @deprecated This API might get dropped, if you are using this, please file an issue. + * @returns {Promise} - A promise that resolves with the new state after it has been set. + */ setAddonState( addonId: string, newStateOrMerger: S | API_StateMerger, options?: Options ): Promise; + /** + * Returns the state of an addon with the given ID. + * @template S - The type of the addon state. + * @param {string} addonId - The ID of the addon to get the state for. + * @deprecated This API might get dropped, if you are using this, please file an issue. + * @returns {S} - The state of the addon with the given ID. + */ getAddonState(addonId: string): S; } @@ -40,7 +100,7 @@ export const init: ModuleFn = ({ provider, store, fullAPI }) = getElements: (type) => provider.getElements(type), getPanels: () => api.getElements(Addon_TypesEnum.PANEL), getStoryPanels: () => { - const allPanels = api.getPanels(); + const allPanels = api.getElements(Addon_TypesEnum.PANEL); const { storyId } = store.getState(); const story = fullAPI.getData(storyId); @@ -50,7 +110,7 @@ export const init: ModuleFn = ({ provider, store, fullAPI }) = const { parameters } = story; - const filteredPanels: API_Collection = {}; + const filteredPanels: Addon_Collection = {}; Object.entries(allPanels).forEach(([id, panel]) => { const { paramKey } = panel; if (paramKey && parameters && parameters[paramKey] && parameters[paramKey].disable) { @@ -63,7 +123,7 @@ export const init: ModuleFn = ({ provider, store, fullAPI }) = }, getSelectedPanel: () => { const { selectedPanel } = store.getState(); - return ensurePanel(api.getPanels(), selectedPanel, selectedPanel); + return ensurePanel(api.getElements(Addon_TypesEnum.PANEL), selectedPanel, selectedPanel); }, setSelectedPanel: (panelName) => { store.setState({ selectedPanel: panelName }, { persistence: 'session' }); @@ -93,7 +153,10 @@ export const init: ModuleFn = ({ provider, store, fullAPI }) = return { api, state: { - selectedPanel: ensurePanel(api.getPanels(), store.getState().selectedPanel), + selectedPanel: ensurePanel( + api.getElements(Addon_TypesEnum.PANEL), + store.getState().selectedPanel + ), addons: {}, }, }; diff --git a/code/lib/manager-api/src/modules/channel.ts b/code/lib/manager-api/src/modules/channel.ts index da85ebd6a7f2..c83c342c5253 100644 --- a/code/lib/manager-api/src/modules/channel.ts +++ b/code/lib/manager-api/src/modules/channel.ts @@ -3,15 +3,50 @@ import { STORIES_COLLAPSE_ALL, STORIES_EXPAND_ALL } from '@storybook/core-events import type { Listener } from '@storybook/channels'; import type { API_Provider } from '@storybook/types'; -import type { API, ModuleFn } from '../index'; +import type { API } from '../index'; +import type { ModuleFn } from '../lib/types'; export interface SubAPI { + /** + * Returns the channel object. + * @protected Please do not use, it's for internal use only. + */ getChannel: () => API_Provider['channel']; - on: (type: string, cb: Listener) => () => void; - off: (type: string, cb: Listener) => void; + /** + * Adds a listener to the channel for the given event type. + * Returns a function that can be called to remove the listener. + * @param type - The event type to listen for. If using a core event, import it from `@storybook/core-events`. + * @param handler - The callback function to be called when the event is emitted. + * @returns A function that can be called to remove the listener. + */ + on: (type: string, handler: Listener) => () => void; + /** + * Removes a listener from the channel for the given event type. + * @param type - The event type to remove the listener from. If using a core event, import it from `@storybook/core-events`. + * @param handler - The callback function to be removed. + */ + off: (type: string, handler: Listener) => void; + /** + * Emits an event on the channel for the given event type. + * @param type - The event type to emit. If using a core event, import it from `@storybook/core-events`. + * @param args - The arguments to pass to the event listener. + */ emit: (type: string, ...args: any[]) => void; - once: (type: string, cb: Listener) => void; + /** + * Adds a one-time listener to the channel for the given event type. + * @param type - The event type to listen for. If using a core event, import it from `@storybook/core-events`. + * @param handler - The callback function to be called when the event is emitted. + */ + once: (type: string, handler: Listener) => void; + /** + * Emits an event to collapse all stories in the UI. + * @deprecated Use `emit(STORIES_COLLAPSE_ALL)` instead. This API will be removed in Storybook 8.0. + */ collapseAll: () => void; + /** + * Emits an event to expand all stories in the UI. + * @deprecated Use `emit(STORIES_EXPAND_ALL)` instead. This API will be removed in Storybook 8.0. + */ expandAll: () => void; } @@ -20,13 +55,13 @@ export type SubState = Record; export const init: ModuleFn = ({ provider }) => { const api: SubAPI = { getChannel: () => provider.channel, - on: (type, cb) => { - provider.channel.addListener(type, cb); + on: (type, handler) => { + provider.channel.on(type, handler); - return () => provider.channel.removeListener(type, cb); + return () => provider.channel.off(type, handler); }, - off: (type, cb) => provider.channel.removeListener(type, cb), - once: (type, cb) => provider.channel.once(type, cb), + off: (type, handler) => provider.channel.off(type, handler), + once: (type, handler) => provider.channel.once(type, handler), emit: (type, data, ...args) => { if ( data?.options?.target && @@ -40,9 +75,8 @@ export const init: ModuleFn = ({ provider }) => { } provider.channel.emit(type, data, ...args); }, - collapseAll: () => { - provider.channel.emit(STORIES_COLLAPSE_ALL, {}); + api.emit(STORIES_COLLAPSE_ALL, {}); }, expandAll: () => { api.emit(STORIES_EXPAND_ALL); diff --git a/code/lib/manager-api/src/modules/globals.ts b/code/lib/manager-api/src/modules/globals.ts index 14d68f8cbaa7..393deb58c4a2 100644 --- a/code/lib/manager-api/src/modules/globals.ts +++ b/code/lib/manager-api/src/modules/globals.ts @@ -3,7 +3,7 @@ import { logger } from '@storybook/client-logger'; import { dequal as deepEqual } from 'dequal'; import type { SetGlobalsPayload, Globals, GlobalTypes } from '@storybook/types'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; // eslint-disable-next-line import/no-cycle import { getEventMetadata } from '../lib/events'; @@ -14,12 +14,25 @@ export interface SubState { } export interface SubAPI { + /** + * Returns the current global data object. + * @returns {Globals} The current global data object. + */ getGlobals: () => Globals; + /** + * Returns the current global types object. + * @returns {GlobalTypes} The current global types object. + */ getGlobalTypes: () => GlobalTypes; + /** + * Updates the current global data object with the provided new global data object. + * @param {Globals} newGlobals - The new global data object to update with. + * @returns {void} + */ updateGlobals: (newGlobals: Globals) => void; } -export const init: ModuleFn = ({ store, fullAPI }) => { +export const init: ModuleFn = ({ store, fullAPI, provider }) => { const api: SubAPI = { getGlobals() { return store.getState().globals; @@ -29,7 +42,7 @@ export const init: ModuleFn = ({ store, fullAPI }) => { }, updateGlobals(newGlobals) { // Only emit the message to the local ref - fullAPI.emit(UPDATE_GLOBALS, { + provider.channel.emit(UPDATE_GLOBALS, { globals: newGlobals, options: { target: 'storybook-preview-iframe', @@ -49,8 +62,9 @@ export const init: ModuleFn = ({ store, fullAPI }) => { } }; - const initModule = () => { - fullAPI.on(GLOBALS_UPDATED, function handleGlobalsUpdated({ globals }: { globals: Globals }) { + provider.channel.on( + GLOBALS_UPDATED, + function handleGlobalsUpdated({ globals }: { globals: Globals }) { const { ref } = getEventMetadata(this, fullAPI); if (!ref) { @@ -60,10 +74,13 @@ export const init: ModuleFn = ({ store, fullAPI }) => { 'received a GLOBALS_UPDATED from a non-local ref. This is not currently supported.' ); } - }); + } + ); - // Emitted by the preview on initialization - fullAPI.on(SET_GLOBALS, function handleSetStories({ globals, globalTypes }: SetGlobalsPayload) { + // Emitted by the preview on initialization + provider.channel.on( + SET_GLOBALS, + function handleSetStories({ globals, globalTypes }: SetGlobalsPayload) { const { ref } = getEventMetadata(this, fullAPI); const currentGlobals = store.getState()?.globals; @@ -80,12 +97,11 @@ export const init: ModuleFn = ({ store, fullAPI }) => { ) { api.updateGlobals(currentGlobals); } - }); - }; + } + ); return { api, state, - init: initModule, }; }; diff --git a/code/lib/manager-api/src/modules/layout.ts b/code/lib/manager-api/src/modules/layout.ts index 8c23956e7380..f37e51e19942 100644 --- a/code/lib/manager-api/src/modules/layout.ts +++ b/code/lib/manager-api/src/modules/layout.ts @@ -7,7 +7,8 @@ import type { ThemeVars } from '@storybook/theming'; import type { API_Layout, API_PanelPositions, API_UI } from '@storybook/types'; import merge from '../lib/merge'; -import type { State, ModuleFn } from '../index'; +import type { State } from '../index'; +import type { ModuleFn } from '../lib/types'; const { document } = global; @@ -25,11 +26,35 @@ export interface SubState { } export interface SubAPI { + /** + * Toggles the fullscreen mode of the Storybook UI. + * @param toggled - Optional boolean value to set the fullscreen mode to. If not provided, it will toggle the current state. + */ toggleFullscreen: (toggled?: boolean) => void; + /** + * Toggles the visibility of the panel in the Storybook UI. + * @param toggled - Optional boolean value to set the panel visibility to. If not provided, it will toggle the current state. + */ togglePanel: (toggled?: boolean) => void; + /** + * Toggles the position of the panel in the Storybook UI. + * @param position - Optional string value to set the panel position to. If not provided, it will toggle between 'bottom' and 'right'. + */ togglePanelPosition: (position?: API_PanelPositions) => void; + /** + * Toggles the visibility of the navigation bar in the Storybook UI. + * @param toggled - Optional boolean value to set the navigation bar visibility to. If not provided, it will toggle the current state. + */ toggleNav: (toggled?: boolean) => void; + /** + * Toggles the visibility of the toolbar in the Storybook UI. + * @param toggled - Optional boolean value to set the toolbar visibility to. If not provided, it will toggle the current state. + */ toggleToolbar: (toggled?: boolean) => void; + /** + * Sets the options for the Storybook UI. + * @param options - An object containing the options to set. + */ setOptions: (options: any) => void; } @@ -260,7 +285,7 @@ export const init: ModuleFn = ({ store, provider, singleStory, fullAPI }) => { state: merge(api.getInitialOptions(), persisted), init: () => { api.setOptions(merge(api.getInitialOptions(), persisted)); - fullAPI.on(SET_CONFIG, () => { + provider.channel.on(SET_CONFIG, () => { api.setOptions(merge(api.getInitialOptions(), persisted)); }); }, diff --git a/code/lib/manager-api/src/modules/notifications.ts b/code/lib/manager-api/src/modules/notifications.ts index 7ef95a3862bf..83e95d3928ca 100644 --- a/code/lib/manager-api/src/modules/notifications.ts +++ b/code/lib/manager-api/src/modules/notifications.ts @@ -1,12 +1,25 @@ import type { API_Notification } from '@storybook/types'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; export interface SubState { notifications: API_Notification[]; } +/** + * The API for managing notifications. + */ export interface SubAPI { + /** + * Adds a new notification to the list of notifications. + * If a notification with the same ID already exists, it will be replaced. + * @param notification - The notification to add. + */ addNotification: (notification: API_Notification) => void; + + /** + * Removes a notification from the list of notifications and calls the onClear callback. + * @param id - The ID of the notification to remove. + */ clearNotification: (id: string) => void; } @@ -28,7 +41,7 @@ export const init: ModuleFn = ({ store }) => { const notification = notifications.find((n) => n.id === id); if (notification && notification.onClear) { - notification.onClear(); + notification.onClear({ dismissed: false }); } }, }; diff --git a/code/lib/manager-api/src/modules/provider.ts b/code/lib/manager-api/src/modules/provider.ts index edcfc16a2ce3..c150bf90bf8b 100644 --- a/code/lib/manager-api/src/modules/provider.ts +++ b/code/lib/manager-api/src/modules/provider.ts @@ -1,11 +1,11 @@ -import type { API_Provider } from '@storybook/types'; -import type { API, ModuleFn } from '../index'; +import type { API_IframeRenderer } from '@storybook/types'; +import type { ModuleFn } from '../lib/types'; export interface SubAPI { - renderPreview?: API_Provider['renderPreview']; + renderPreview?: API_IframeRenderer; } -export const init: ModuleFn = ({ provider, fullAPI }) => { +export const init: ModuleFn = ({ provider, fullAPI }) => { return { api: provider.renderPreview ? { renderPreview: provider.renderPreview } : {}, state: {}, diff --git a/code/lib/manager-api/src/modules/refs.ts b/code/lib/manager-api/src/modules/refs.ts index 4d74127c9fe1..02884665cf5a 100644 --- a/code/lib/manager-api/src/modules/refs.ts +++ b/code/lib/manager-api/src/modules/refs.ts @@ -15,7 +15,7 @@ import { transformStoryIndexToStoriesHash, } from '../lib/stories'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; const { location, fetch } = global; @@ -27,12 +27,47 @@ export interface SubState { } export interface SubAPI { + /** + * Finds a composed ref by its source. + * @param {string} source - The source/URL of the composed ref. + * @returns {API_ComposedRef} - The composed ref object. + */ findRef: (source: string) => API_ComposedRef; + /** + * Sets a composed ref by its ID and data. + * @param {string} id - The ID of the composed ref. + * @param {API_SetRefData} data - The data to set for the composed ref. + * @param {boolean} [ready] - Whether the composed ref is ready. + */ setRef: (id: string, data: API_SetRefData, ready?: boolean) => void; + /** + * Updates a composed ref by its ID and update object. + * @param {string} id - The ID of the composed ref. + * @param {API_ComposedRefUpdate} ref - The update object for the composed ref. + */ updateRef: (id: string, ref: API_ComposedRefUpdate) => void; + /** + * Gets all composed refs. + * @returns {API_Refs} - The composed refs object. + */ getRefs: () => API_Refs; + /** + * Checks if a composed ref is valid. + * @param {API_SetRefData} ref - The composed ref to check. + * @returns {Promise} - A promise that resolves when the check is complete. + */ checkRef: (ref: API_SetRefData) => Promise; + /** + * Changes the version of a composed ref by its ID and URL. + * @param {string} id - The ID of the composed ref. + * @param {string} url - The new URL for the composed ref. + */ changeRefVersion: (id: string, url: string) => void; + /** + * Changes the state of a composed ref by its ID and previewInitialized flag. + * @param {string} id - The ID of the composed ref. + * @param {boolean} previewInitialized - The new previewInitialized flag for the composed ref. + */ changeRefState: (id: string, previewInitialized: boolean) => void; } @@ -119,7 +154,7 @@ const map = ( return input; }; -export const init: ModuleFn = ( +export const init: ModuleFn = ( { store, provider, singleStory, docsOptions = {} }, { runCheck = true } = {} ) => { @@ -248,10 +283,15 @@ export const init: ModuleFn = ( if (setStoriesData) { index = transformSetStoriesStoryDataToStoriesHash( map(setStoriesData, ref, { storyMapper }), - { provider, docsOptions } + { provider, docsOptions, filters: {}, status: {} } ); } else if (storyIndex) { - index = transformStoryIndexToStoriesHash(storyIndex, { provider, docsOptions }); + index = transformStoryIndexToStoriesHash(storyIndex, { + provider, + docsOptions, + filters: {}, + status: {}, + }); } if (index) index = addRefIds(index, ref); diff --git a/code/lib/manager-api/src/modules/release-notes.ts b/code/lib/manager-api/src/modules/release-notes.ts deleted file mode 100644 index d1546a6f47ce..000000000000 --- a/code/lib/manager-api/src/modules/release-notes.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { global } from '@storybook/global'; -import type { API_ReleaseNotes } from '@storybook/types'; -import memoize from 'memoizerific'; - -import type { ModuleFn } from '../index'; - -const { RELEASE_NOTES_DATA } = global; - -const getReleaseNotesData = memoize(1)((): API_ReleaseNotes => { - try { - return { ...(JSON.parse(RELEASE_NOTES_DATA) || {}) }; - } catch (e) { - return {}; - } -}); - -export interface SubAPI { - releaseNotesVersion: () => string; - setDidViewReleaseNotes: () => void; - showReleaseNotesOnLaunch: () => boolean; -} - -export interface SubState { - releaseNotesViewed: string[]; -} - -export const init: ModuleFn = ({ store }) => { - const releaseNotesData = getReleaseNotesData(); - const getReleaseNotesViewed = () => { - const { releaseNotesViewed: persistedReleaseNotesViewed } = store.getState(); - return persistedReleaseNotesViewed || []; - }; - - const api: SubAPI = { - releaseNotesVersion: () => releaseNotesData.currentVersion, - setDidViewReleaseNotes: () => { - const releaseNotesViewed = getReleaseNotesViewed(); - - if (!releaseNotesViewed.includes(releaseNotesData.currentVersion)) { - store.setState( - { releaseNotesViewed: [...releaseNotesViewed, releaseNotesData.currentVersion] }, - { persistence: 'permanent' } - ); - } - }, - showReleaseNotesOnLaunch: () => { - // The currentVersion will only exist for dev builds - if (!releaseNotesData.currentVersion) return false; - const releaseNotesViewed = getReleaseNotesViewed(); - const didViewReleaseNotes = releaseNotesViewed.includes(releaseNotesData.currentVersion); - const showReleaseNotesOnLaunch = releaseNotesData.showOnFirstLaunch && !didViewReleaseNotes; - return showReleaseNotesOnLaunch; - }, - }; - - return { state: { releaseNotesViewed: [] }, api }; -}; diff --git a/code/lib/manager-api/src/modules/settings.ts b/code/lib/manager-api/src/modules/settings.ts index 452b216d8153..4c850f9aca1a 100644 --- a/code/lib/manager-api/src/modules/settings.ts +++ b/code/lib/manager-api/src/modules/settings.ts @@ -1,10 +1,30 @@ -import type { API_Settings } from '@storybook/types'; -import type { ModuleFn } from '../index'; +import type { API_Settings, StoryId } from '@storybook/types'; +import type { ModuleFn } from '../lib/types'; export interface SubAPI { - changeSettingsTab: (tab: string) => void; + storeSelection: () => void; + retrieveSelection: () => StoryId; + /** + * Changes the active settings tab. + * @param path - The path of the settings page to navigate to. The path NOT should include the `/settings` prefix. + * @example changeSettingsTab(`about`). + */ + changeSettingsTab: (path: string) => void; + /** + * Closes the settings screen and returns to the last tracked story or the first story. + */ closeSettings: () => void; + /** + * Checks if the settings screen is currently active. + * @returns A boolean indicating whether the settings screen is active. + */ isSettingsScreenActive: () => boolean; + /** + * Navigates to the specified settings page. + * @param path - The path of the settings page to navigate to. The path should include the `/settings` prefix. + * @example navigateToSettingsPage(`/settings/about`). + * @deprecated Use `changeSettingsTab` instead. + */ navigateToSettingsPage: (path: string) => Promise; } @@ -29,8 +49,8 @@ export const init: ModuleFn = ({ store, navigate, fullAPI }) = fullAPI.selectFirstStory(); } }, - changeSettingsTab: (tab: string) => { - navigate(`/settings/${tab}`); + changeSettingsTab: (path: string) => { + navigate(`/settings/${path}`); }, isSettingsScreenActive, navigateToSettingsPage: async (path) => { @@ -44,7 +64,22 @@ export const init: ModuleFn = ({ store, navigate, fullAPI }) = navigate(path); }, + retrieveSelection() { + const { settings } = store.getState(); + + return settings.lastTrackedStoryId; + }, + storeSelection: async () => { + const { storyId, settings } = store.getState(); + + await store.setState({ + settings: { ...settings, lastTrackedStoryId: storyId }, + }); + }, }; - return { state: { settings: { lastTrackedStoryId: null } }, api }; + return { + state: { settings: { lastTrackedStoryId: null } }, + api, + }; }; diff --git a/code/lib/manager-api/src/modules/shortcuts.ts b/code/lib/manager-api/src/modules/shortcuts.ts index 8c7af4f146ce..6d1dc4814c43 100644 --- a/code/lib/manager-api/src/modules/shortcuts.ts +++ b/code/lib/manager-api/src/modules/shortcuts.ts @@ -2,7 +2,7 @@ import { global } from '@storybook/global'; import { FORCE_REMOUNT, PREVIEW_KEYDOWN } from '@storybook/core-events'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; import type { KeyboardEventLike } from '../lib/shortcut'; import { shortcutMatchesShortcut, eventToShortcut } from '../lib/shortcut'; @@ -23,19 +23,70 @@ export interface SubState { } export interface SubAPI { + /** + * Returns the current shortcuts. + */ getShortcutKeys(): API_Shortcuts; + /** + * Returns the default shortcuts. + */ getDefaultShortcuts(): API_Shortcuts | API_AddonShortcutDefaults; + /** + * Returns the shortcuts for addons. + */ getAddonsShortcuts(): API_AddonShortcuts; + /** + * Returns the labels for addon shortcuts. + */ getAddonsShortcutLabels(): API_AddonShortcutLabels; + /** + * Returns the default shortcuts for addons. + */ getAddonsShortcutDefaults(): API_AddonShortcutDefaults; + /** + * Sets the shortcuts to the given value. + * @param shortcuts The new shortcuts to set. + * @returns A promise that resolves to the new shortcuts. + */ setShortcuts(shortcuts: API_Shortcuts): Promise; + /** + * Sets the shortcut for the given action to the given value. + * @param action The action to set the shortcut for. + * @param value The new shortcut to set. + * @returns A promise that resolves to the new shortcut. + */ setShortcut(action: API_Action, value: API_KeyCollection): Promise; + /** + * Sets the shortcut for the given addon to the given value. + * @param addon The addon to set the shortcut for. + * @param shortcut The new shortcut to set. + * @returns A promise that resolves to the new addon shortcut. + */ setAddonShortcut(addon: string, shortcut: API_AddonShortcut): Promise; + /** + * Restores all default shortcuts. + * @returns A promise that resolves to the new shortcuts. + */ restoreAllDefaultShortcuts(): Promise; + /** + * Restores the default shortcut for the given action. + * @param action The action to restore the default shortcut for. + * @returns A promise that resolves to the new shortcut. + */ restoreDefaultShortcut(action: API_Action): Promise; + /** + * Handles a keydown event. + * @param event The event to handle. + */ handleKeydownEvent(event: KeyboardEventLike): void; - handleShortcutFeature(feature: API_Action): void; + /** + * Handles a shortcut feature. + * @param feature The feature to handle. + * @param event The event to handle. + */ + handleShortcutFeature(feature: API_Action, event: KeyboardEventLike): void; } + export type API_KeyCollection = string[]; export interface API_Shortcuts { @@ -102,7 +153,7 @@ function focusInInput(event: KeyboardEvent) { return /input|textarea/i.test(target.tagName) || target.getAttribute('contenteditable') !== null; } -export const init: ModuleFn = ({ store, fullAPI }) => { +export const init: ModuleFn = ({ store, fullAPI, provider }) => { const api: SubAPI = { // Getting and setting shortcuts getShortcutKeys(): API_Shortcuts { @@ -168,14 +219,12 @@ export const init: ModuleFn = ({ store, fullAPI }) => { shortcutMatchesShortcut(shortcut, shortcuts[feature]) ); if (matchedFeature) { - // Event.prototype.preventDefault is missing when received from the MessageChannel. - if (event?.preventDefault) event.preventDefault(); - api.handleShortcutFeature(matchedFeature); + api.handleShortcutFeature(matchedFeature, event); } }, // warning: event might not have a full prototype chain because it may originate from the channel - handleShortcutFeature(feature) { + handleShortcutFeature(feature, event) { const { layout: { isFullscreen, showNav, showPanel }, ui: { enableShortcuts }, @@ -184,6 +233,8 @@ export const init: ModuleFn = ({ store, fullAPI }) => { if (!enableShortcuts) { return; } + // Event.prototype.preventDefault is missing when received from the MessageChannel. + if (event?.preventDefault) event.preventDefault(); switch (feature) { case 'escape': { if (isFullscreen) { @@ -347,13 +398,13 @@ export const init: ModuleFn = ({ store, fullAPI }) => { // Listen for keydown events in the manager document.addEventListener('keydown', (event: KeyboardEvent) => { if (!focusInInput(event)) { - fullAPI.handleKeydownEvent(event); + api.handleKeydownEvent(event); } }); // Also listen to keydown events sent over the channel - fullAPI.on(PREVIEW_KEYDOWN, (data: { event: KeyboardEventLike }) => { - fullAPI.handleKeydownEvent(data.event); + provider.channel.on(PREVIEW_KEYDOWN, (data: { event: KeyboardEventLike }) => { + api.handleKeydownEvent(data.event); }); }; diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 0d8b7b87659c..c69e5e23cdb5 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -18,6 +18,10 @@ import type { StoryPreparedPayload, DocsPreparedPayload, API_DocsEntry, + API_ViewMode, + API_StatusState, + API_StatusUpdate, + API_FilterFunction, } from '@storybook/types'; import { PRELOAD_ENTRIES, @@ -35,6 +39,8 @@ import { CURRENT_STORY_WAS_SET, STORY_MISSING, DOCS_PREPARED, + SET_CURRENT_STORY, + SET_CONFIG, } from '@storybook/core-events'; import { logger } from '@storybook/client-logger'; @@ -49,7 +55,8 @@ import { addPreparedStories, } from '../lib/stories'; -import type { ComposedRef, ModuleFn } from '../index'; +import type { ComposedRef } from '../index'; +import type { ModuleFn } from '../lib/types'; const { FEATURES, fetch } = global; const STORY_INDEX_PATH = './index.json'; @@ -57,51 +64,214 @@ const STORY_INDEX_PATH = './index.json'; type Direction = -1 | 1; type ParameterName = string; -type ViewMode = 'story' | 'info' | 'settings' | string | undefined; type StoryUpdate = Partial< Pick >; + type DocsUpdate = Partial>; export interface SubState extends API_LoadedRefData { storyId: StoryId; - viewMode: ViewMode; + internal_index?: API_PreparedStoryIndex; + viewMode: API_ViewMode; + status: API_StatusState; + filters: Record; } export interface SubAPI { + /** + * The `storyId` method is a reference to the `toId` function from `@storybook/csf`, which is used to generate a unique ID for a story. + * This ID is used to identify a specific story in the Storybook index. + * + * @type {typeof toId} + */ storyId: typeof toId; + /** + * Resolves a story, docs, component or group ID to its corresponding hash entry in the index. + * + * @param {StoryId} storyId - The ID of the story to resolve. + * @param {string} [refsId] - The ID of the refs to use for resolving the story. + * @returns {API_HashEntry} - The hash entry corresponding to the given story ID. + */ resolveStory: (storyId: StoryId, refsId?: string) => API_HashEntry; + /** + * Selects the first story to display in the Storybook UI. + * + * @returns {void} + */ selectFirstStory: () => void; + /** + * Selects a story to display in the Storybook UI. + * + * @param {string} [kindOrId] - The kind or ID of the story to select. + * @param {StoryId} [story] - The ID of the story to select. + * @param {Object} [obj] - An optional object containing additional options. + * @param {string} [obj.ref] - The ref ID of the story to select. + * @param {API_ViewMode} [obj.viewMode] - The view mode to display the story in. + * @returns {void} + */ selectStory: ( kindOrId?: string, - story?: string, - obj?: { ref?: string; viewMode?: ViewMode } + story?: StoryId, + obj?: { ref?: string; viewMode?: API_ViewMode } ) => void; + /** + * Returns the current story's data, including its ID, kind, name, and parameters. + * + * @returns {API_LeafEntry} The current story's data. + */ getCurrentStoryData: () => API_LeafEntry; + /** + * Sets the prepared story index to the given value. + * + * @param {API_PreparedStoryIndex} index - The prepared story index to set. + * @returns {Promise} A promise that resolves when the prepared story index has been set. + */ setIndex: (index: API_PreparedStoryIndex) => Promise; + + /** + * Jumps to the next or previous component in the index. + * + * @param {Direction} direction - The direction to jump. Use -1 to jump to the previous component, and 1 to jump to the next component. + * @returns {void} + */ jumpToComponent: (direction: Direction) => void; + /** + * Jumps to the next or previous story in the story index. + * + * @param {Direction} direction - The direction to jump. Use -1 to jump to the previous story, and 1 to jump to the next story. + * @returns {void} + */ jumpToStory: (direction: Direction) => void; + /** + * Returns the data for the given story ID and optional ref ID. + * + * @param {StoryId} storyId - The ID of the story to retrieve data for. + * @param {string} [refId] - The ID of the ref to retrieve data for. If not provided, retrieves data for the default ref. + * @returns {API_LeafEntry} The data for the given story ID and optional ref ID. + */ getData: (storyId: StoryId, refId?: string) => API_LeafEntry; + /** + * Returns a boolean indicating whether the given story ID and optional ref ID have been prepared. + * + * @param {StoryId} storyId - The ID of the story to check. + * @param {string} [refId] - The ID of the ref to check. If not provided, checks all refs for the given story ID. + * @returns {boolean} A boolean indicating whether the given story ID and optional ref ID have been prepared. + */ isPrepared: (storyId: StoryId, refId?: string) => boolean; + /** + * Returns the parameters for the given story ID and optional ref ID. + * + * @param {StoryId | { storyId: StoryId; refId: string }} storyId - The ID of the story to retrieve parameters for, or an object containing the story ID and ref ID. + * @param {ParameterName} [parameterName] - The name of the parameter to retrieve. If not provided, returns all parameters. + * @returns {API_StoryEntry['parameters'] | any} The parameters for the given story ID and optional ref ID. + */ getParameters: ( storyId: StoryId | { storyId: StoryId; refId: string }, parameterName?: ParameterName ) => API_StoryEntry['parameters'] | any; + /** + * Returns the current value of the specified parameter for the currently selected story. + * + * @template S - The type of the parameter value. + * @param {ParameterName} [parameterName] - The name of the parameter to retrieve. If not provided, returns all parameters. + * @returns {S} The value of the specified parameter for the currently selected story. + */ getCurrentParameter(parameterName?: ParameterName): S; + /** + * Updates the arguments for the given story with the provided new arguments. + * + * @param {API_StoryEntry} story - The story to update the arguments for. + * @param {Args} newArgs - The new arguments to set for the story. + * @returns {void} + */ updateStoryArgs(story: API_StoryEntry, newArgs: Args): void; + /** + * Resets the arguments for the given story to their initial values. + * + * @param {API_StoryEntry} story - The story to reset the arguments for. + * @param {string[]} [argNames] - An optional array of argument names to reset. If not provided, all arguments will be reset. + * @returns {void} + */ resetStoryArgs: (story: API_StoryEntry, argNames?: string[]) => void; + /** + * Finds the leaf entry for the given story ID in the given story index. + * + * @param {API_IndexHash} index - The story index to search for the leaf entry in. + * @param {StoryId} storyId - The ID of the story to find the leaf entry for. + * @returns {API_LeafEntry} The leaf entry for the given story ID, or null if no leaf entry was found. + */ findLeafEntry(index: API_IndexHash, storyId: StoryId): API_LeafEntry; + /** + * Finds the leaf story ID for the given component or group ID in the given index. + * + * @param {API_IndexHash} index - The story index to search for the leaf story ID in. + * @param {StoryId} storyId - The ID of the story to find the leaf story ID for. + * @returns {StoryId} The ID of the leaf story, or null if no leaf story was found. + */ findLeafStoryId(index: API_IndexHash, storyId: StoryId): StoryId; + /** + * Finds the ID of the sibling story in the given direction for the given story ID in the given story index. + * + * @param {StoryId} storyId - The ID of the story to find the sibling of. + * @param {API_IndexHash} index - The story index to search for the sibling in. + * @param {Direction} direction - The direction to search for the sibling in. + * @param {boolean} toSiblingGroup - When true, skips over leafs within the same group. + * @returns {StoryId} The ID of the sibling story, or null if no sibling was found. + */ findSiblingStoryId( storyId: StoryId, index: API_IndexHash, direction: Direction, toSiblingGroup: boolean // when true, skip over leafs within the same group ): StoryId; + /** + * Fetches the story index from the server. + * + * @returns {Promise} A promise that resolves when the index has been fetched. + */ fetchIndex: () => Promise; + /** + * Updates the story with the given ID with the provided update object. + * + * @param {StoryId} storyId - The ID of the story to update. + * @param {StoryUpdate} update - An object containing the updated story information. + * @param {API_ComposedRef} [ref] - The composed ref of the story to update. + * @returns {Promise} A promise that resolves when the story has been updated. + */ updateStory: (storyId: StoryId, update: StoryUpdate, ref?: API_ComposedRef) => Promise; + /** + * Updates the documentation for the given story ID with the given update object. + * + * @param {StoryId} storyId - The ID of the story to update. + * @param {DocsUpdate} update - An object containing the updated documentation information. + * @param {API_ComposedRef} [ref] - The composed ref of the story to update. + * @returns {Promise} A promise that resolves when the documentation has been updated. + */ updateDocs: (storyId: StoryId, update: DocsUpdate, ref?: API_ComposedRef) => Promise; + /** + * Sets the preview as initialized. + * + * @param {ComposedRef} [ref] - The composed ref of the story to set as initialized. + * @returns {Promise} A promise that resolves when the preview has been set as initialized. + */ setPreviewInitialized: (ref?: ComposedRef) => Promise; + /** + * Updates the status of a collection of stories. + * + * @param {string} addonId - The ID of the addon to update. + * @param {StatusUpdate} update - An object containing the updated status information. + * @returns {Promise} A promise that resolves when the status has been updated. + */ + experimental_updateStatus: (addonId: string, update: API_StatusUpdate) => Promise; + /** + * Updates the filtering of the index. + * + * @param {string} addonId - The ID of the addon to update. + * @param {API_FilterFunction} filterFunction - A function that returns a boolean based on the story, index and status. + * @returns {Promise} A promise that resolves when the state has been updated. + */ + experimental_setFilter: (addonId: string, filterFunction: API_FilterFunction) => Promise; } const removedOptions = ['enableShortcuts', 'theme', 'showRoots']; @@ -121,7 +291,7 @@ function removeRemovedOptions = Record = ({ +export const init: ModuleFn = ({ fullAPI, store, navigate, @@ -311,7 +481,7 @@ export const init: ModuleFn = ({ }, updateStoryArgs: (story, updatedArgs) => { const { id: storyId, refId } = story; - fullAPI.emit(UPDATE_STORY_ARGS, { + provider.channel.emit(UPDATE_STORY_ARGS, { storyId, updatedArgs, options: { target: refId }, @@ -319,7 +489,7 @@ export const init: ModuleFn = ({ }, resetStoryArgs: (story, argNames?: [string]) => { const { id: storyId, refId } = story; - fullAPI.emit(RESET_STORY_ARGS, { + provider.channel.emit(RESET_STORY_ARGS, { storyId, argNames, options: { target: refId }, @@ -338,7 +508,7 @@ export const init: ModuleFn = ({ return; } - await fullAPI.setIndex(storyIndex); + await api.setIndex(storyIndex); } catch (err) { await store.setState({ indexError: err }); } @@ -346,16 +516,19 @@ export const init: ModuleFn = ({ // The story index we receive on SET_INDEX is "prepared" in that it has parameters // The story index we receive on fetchStoryIndex is not, but all the prepared fields are optional // so we can cast one to the other easily enough - setIndex: async (storyIndex: API_PreparedStoryIndex) => { - const newHash = transformStoryIndexToStoriesHash(storyIndex, { + setIndex: async (input) => { + const { index: oldHash, status, filters } = store.getState(); + const newHash = transformStoryIndexToStoriesHash(input, { provider, docsOptions, + status, + filters, }); // Now we need to patch in the existing prepared stories - const oldHash = store.getState().index; + const output = addPreparedStories(newHash, oldHash); - await store.setState({ index: addPreparedStories(newHash, oldHash), indexError: undefined }); + await store.setState({ internal_index: input, index: output, indexError: undefined }); }, updateStory: async ( storyId: StoryId, @@ -399,174 +572,216 @@ export const init: ModuleFn = ({ await fullAPI.updateRef(refId, { index }); } }, - setPreviewInitialized: async (ref?: ComposedRef): Promise => { + setPreviewInitialized: async (ref) => { if (!ref) { store.setState({ previewInitialized: true }); } else { fullAPI.updateRef(ref.id, { previewInitialized: true }); } }, + + /* EXPERIMENTAL APIs */ + experimental_updateStatus: async (id, update) => { + const { status, internal_index: index } = store.getState(); + const newStatus = { ...status }; + + Object.entries(update).forEach(([storyId, value]) => { + newStatus[storyId] = { ...(newStatus[storyId] || {}) }; + newStatus[storyId][id] = value; + }); + + await store.setState({ status: newStatus }, { persistence: 'session' }); + await api.setIndex(index); + }, + experimental_setFilter: async (id, filterFunction) => { + const { internal_index: index } = store.getState(); + await store.setState({ filters: { ...store.getState().filters, [id]: filterFunction } }); + await api.setIndex(index); + }, }; - const initModule = async () => { - // On initial load, the local iframe will select the first story (or other "selection specifier") - // and emit STORY_SPECIFIED with the id. We need to ensure we respond to this change. - fullAPI.on( - STORY_SPECIFIED, - function handler({ - storyId, - viewMode, - }: { - storyId: string; - viewMode: ViewMode; - [k: string]: any; - }) { - const { sourceType } = getEventMetadata(this, fullAPI); - - if (sourceType === 'local') { - if (fullAPI.isSettingsScreenActive()) return; - - // Special case -- if we are already at the story being specified (i.e. the user started at a given story), - // we don't need to change URL. See https://github.com/storybookjs/storybook/issues/11677 - const state = store.getState(); - if (state.storyId !== storyId || state.viewMode !== viewMode) { + // On initial load, the local iframe will select the first story (or other "selection specifier") + // and emit STORY_SPECIFIED with the id. We need to ensure we respond to this change. + provider.channel.on( + STORY_SPECIFIED, + function handler({ + storyId, + viewMode, + }: { + storyId: string; + viewMode: API_ViewMode; + [k: string]: any; + }) { + const { sourceType } = getEventMetadata(this, fullAPI); + + if (sourceType === 'local') { + const state = store.getState(); + const isCanvasRoute = + state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs'; + const stateHasSelection = state.viewMode && state.storyId; + const stateSelectionDifferent = state.viewMode !== viewMode || state.storyId !== storyId; + /** + * When storybook starts, we want to navigate to the first story. + * But there are a few exceptions: + * - If the current storyId and viewMode are already set/correct. + * - If the user has navigated away already. + * - If the user started storybook with a specific page-URL like "/settings/about" + */ + if (isCanvasRoute) { + if (stateHasSelection && stateSelectionDifferent) { + // The manager state is correct, the preview state is lagging behind + provider.channel.emit(SET_CURRENT_STORY, { + storyId: state.storyId, + viewMode: state.viewMode, + }); + } else if (stateSelectionDifferent) { + // The preview state is correct, the manager state is lagging behind navigate(`/${viewMode}/${storyId}`); } } } - ); + } + ); + + // The CURRENT_STORY_WAS_SET event is the best event to use to tell if a ref is ready. + // Until the ref has a selection, it will not render anything (e.g. while waiting for + // the preview.js file or the index to load). Once it has a selection, it will render its own + // preparing spinner. + provider.channel.on(CURRENT_STORY_WAS_SET, function handler() { + const { ref } = getEventMetadata(this, fullAPI); + api.setPreviewInitialized(ref); + }); - // The CURRENT_STORY_WAS_SET event is the best event to use to tell if a ref is ready. - // Until the ref has a selection, it will not render anything (e.g. while waiting for - // the preview.js file or the index to load). Once it has a selection, it will render its own - // preparing spinner. - fullAPI.on(CURRENT_STORY_WAS_SET, function handler() { - const { ref } = getEventMetadata(this, fullAPI); - fullAPI.setPreviewInitialized(ref); - }); + provider.channel.on(STORY_CHANGED, function handler() { + const { sourceType } = getEventMetadata(this, fullAPI); - fullAPI.on(STORY_CHANGED, function handler() { - const { sourceType } = getEventMetadata(this, fullAPI); + if (sourceType === 'local') { + const options = api.getCurrentParameter('options'); - if (sourceType === 'local') { - const options = fullAPI.getCurrentParameter('options'); - - if (options) { - fullAPI.setOptions(removeRemovedOptions(options)); - } + if (options) { + fullAPI.setOptions(removeRemovedOptions(options)); } - }); + } + }); - fullAPI.on(STORY_PREPARED, function handler({ id, ...update }: StoryPreparedPayload) { - const { ref, sourceType } = getEventMetadata(this, fullAPI); - fullAPI.updateStory(id, { ...update, prepared: true }, ref); + provider.channel.on(STORY_PREPARED, function handler({ id, ...update }: StoryPreparedPayload) { + const { ref, sourceType } = getEventMetadata(this, fullAPI); + api.updateStory(id, { ...update, prepared: true }, ref); - if (!ref) { - if (!store.getState().hasCalledSetOptions) { - const { options } = update.parameters; - fullAPI.setOptions(removeRemovedOptions(options)); - store.setState({ hasCalledSetOptions: true }); - } + if (!ref) { + if (!store.getState().hasCalledSetOptions) { + const { options } = update.parameters; + fullAPI.setOptions(removeRemovedOptions(options)); + store.setState({ hasCalledSetOptions: true }); } + } - if (sourceType === 'local') { - const { storyId, index, refId } = store.getState(); - - // create a list of related stories to be preloaded - const toBePreloaded = Array.from( - new Set([ - api.findSiblingStoryId(storyId, index, 1, true), - api.findSiblingStoryId(storyId, index, -1, true), - ]) - ).filter(Boolean); - - fullAPI.emit(PRELOAD_ENTRIES, { - ids: toBePreloaded, - options: { target: refId }, - }); - } - }); + if (sourceType === 'local') { + const { storyId, index, refId } = store.getState(); - fullAPI.on(DOCS_PREPARED, function handler({ id, ...update }: DocsPreparedPayload) { - const { ref } = getEventMetadata(this, fullAPI); - fullAPI.updateStory(id, { ...update, prepared: true }, ref); - }); + // create a list of related stories to be preloaded + const toBePreloaded = Array.from( + new Set([ + api.findSiblingStoryId(storyId, index, 1, true), + api.findSiblingStoryId(storyId, index, -1, true), + ]) + ).filter(Boolean); - fullAPI.on(SET_INDEX, function handler(index: API_PreparedStoryIndex) { - const { ref } = getEventMetadata(this, fullAPI); + provider.channel.emit(PRELOAD_ENTRIES, { + ids: toBePreloaded, + options: { target: refId }, + }); + } + }); - if (!ref) { - fullAPI.setIndex(index); - const options = fullAPI.getCurrentParameter('options'); - fullAPI.setOptions(removeRemovedOptions(options)); - } else { - fullAPI.setRef(ref.id, { ...ref, storyIndex: index }, true); - } - }); + provider.channel.on(DOCS_PREPARED, function handler({ id, ...update }: DocsPreparedPayload) { + const { ref } = getEventMetadata(this, fullAPI); + api.updateStory(id, { ...update, prepared: true }, ref); + }); + + provider.channel.on(SET_INDEX, function handler(index: API_PreparedStoryIndex) { + const { ref } = getEventMetadata(this, fullAPI); + + if (!ref) { + api.setIndex(index); + const options = api.getCurrentParameter('options'); + fullAPI.setOptions(removeRemovedOptions(options)); + } else { + fullAPI.setRef(ref.id, { ...ref, storyIndex: index }, true); + } + }); + + // For composition back-compatibilty + provider.channel.on(SET_STORIES, function handler(data: SetStoriesPayload) { + const { ref } = getEventMetadata(this, fullAPI); + const setStoriesData = data.v ? denormalizeStoryParameters(data) : data.stories; + + if (!ref) { + throw new Error('Cannot call SET_STORIES for local frame'); + } else { + fullAPI.setRef(ref.id, { ...ref, setStoriesData }, true); + } + }); - // For composition back-compatibilty - fullAPI.on(SET_STORIES, function handler(data: SetStoriesPayload) { + provider.channel.on( + SELECT_STORY, + function handler({ + kind, + title = kind, + story, + name = story, + storyId, + ...rest + }: { + kind?: StoryKind; + title?: ComponentTitle; + story?: StoryName; + name?: StoryName; + storyId: string; + viewMode: API_ViewMode; + }) { const { ref } = getEventMetadata(this, fullAPI); - const setStoriesData = data.v ? denormalizeStoryParameters(data) : data.stories; if (!ref) { - throw new Error('Cannot call SET_STORIES for local frame'); + fullAPI.selectStory(storyId || title, name, rest); } else { - fullAPI.setRef(ref.id, { ...ref, setStoriesData }, true); - } - }); - - fullAPI.on( - SELECT_STORY, - function handler({ - kind, - title = kind, - story, - name = story, - storyId, - ...rest - }: { - kind?: StoryKind; - title?: ComponentTitle; - story?: StoryName; - name?: StoryName; - storyId: string; - viewMode: ViewMode; - }) { - const { ref } = getEventMetadata(this, fullAPI); - - if (!ref) { - fullAPI.selectStory(storyId || title, name, rest); - } else { - fullAPI.selectStory(storyId || title, name, { ...rest, ref: ref.id }); - } - } - ); - - fullAPI.on( - STORY_ARGS_UPDATED, - function handleStoryArgsUpdated({ storyId, args }: { storyId: StoryId; args: Args }) { - const { ref } = getEventMetadata(this, fullAPI); - fullAPI.updateStory(storyId, { args }, ref); + fullAPI.selectStory(storyId || title, name, { ...rest, ref: ref.id }); } - ); + } + ); - // When there's a preview error, we don't show it in the manager, but simply - fullAPI.on(CONFIG_ERROR, function handleConfigError(err) { + provider.channel.on( + STORY_ARGS_UPDATED, + function handleStoryArgsUpdated({ storyId, args }: { storyId: StoryId; args: Args }) { const { ref } = getEventMetadata(this, fullAPI); - fullAPI.setPreviewInitialized(ref); - }); + api.updateStory(storyId, { args }, ref); + } + ); - fullAPI.on(STORY_MISSING, function handleConfigError(err) { - const { ref } = getEventMetadata(this, fullAPI); - fullAPI.setPreviewInitialized(ref); - }); + // When there's a preview error, we don't show it in the manager, but simply + provider.channel.on(CONFIG_ERROR, function handleConfigError(err) { + const { ref } = getEventMetadata(this, fullAPI); + api.setPreviewInitialized(ref); + }); - if (FEATURES?.storyStoreV7) { - provider.serverChannel?.on(STORY_INDEX_INVALIDATED, () => fullAPI.fetchIndex()); - await fullAPI.fetchIndex(); + provider.channel.on(STORY_MISSING, function handleConfigError(err) { + const { ref } = getEventMetadata(this, fullAPI); + api.setPreviewInitialized(ref); + }); + + provider.channel.on(SET_CONFIG, () => { + const config = provider.getConfig(); + if (config?.sidebar?.filters) { + store.setState({ + filters: { + ...store.getState().filters, + ...config?.sidebar?.filters, + }, + }); } - }; + }); + + const config = provider.getConfig(); return { api, @@ -575,7 +790,14 @@ export const init: ModuleFn = ({ viewMode: initialViewMode, hasCalledSetOptions: false, previewInitialized: false, + status: {}, + filters: config?.sidebar?.filters || {}, + }, + init: async () => { + if (FEATURES?.storyStoreV7) { + provider.channel.on(STORY_INDEX_INVALIDATED, () => api.fetchIndex()); + await api.fetchIndex(); + } }, - init: initModule, }; }; diff --git a/code/lib/manager-api/src/modules/url.ts b/code/lib/manager-api/src/modules/url.ts index 7dc77ecec077..c6cfc5abbd80 100644 --- a/code/lib/manager-api/src/modules/url.ts +++ b/code/lib/manager-api/src/modules/url.ts @@ -11,7 +11,7 @@ import { dequal as deepEqual } from 'dequal'; import { global } from '@storybook/global'; import type { API_Layout, API_UI } from '@storybook/types'; -import type { ModuleArgs, ModuleFn } from '../index'; +import type { ModuleArgs, ModuleFn } from '../lib/types'; const { window: globalWindow } = global; @@ -74,9 +74,33 @@ export interface QueryParams { [key: string]: string | null; } +/** + * SubAPI for managing URL navigation and state. + */ export interface SubAPI { + /** + * Navigate to a new URL. + * @param {string} url - The URL to navigate to. + * @param {NavigateOptions} options - Options for the navigation. + * @returns {void} + */ navigateUrl: (url: string, options: NavigateOptions) => void; + /** + * Get the value of a query parameter from the current URL. + * @param {string} key - The key of the query parameter to get. + * @returns {string | undefined} The value of the query parameter, or undefined if it does not exist. + */ getQueryParam: (key: string) => string | undefined; + /** + * Returns an object containing the current state of the URL. + * @returns {{ + * queryParams: QueryParams, + * path: string, + * viewMode?: string, + * storyId?: string, + * url: string + * }} An object containing the current state of the URL. + */ getUrlState: () => { queryParams: QueryParams; path: string; @@ -84,10 +108,17 @@ export interface SubAPI { storyId?: string; url: string; }; + /** + * Set the query parameters for the current URL. + * @param {QueryParams} input - An object containing the query parameters to set. + * @returns {void} + */ setQueryParams: (input: QueryParams) => void; } -export const init: ModuleFn = ({ store, navigate, state, provider, fullAPI, ...rest }) => { +export const init: ModuleFn = (moduleArgs) => { + const { store, navigate, provider, fullAPI } = moduleArgs; + const navigateTo = ( path: string, queryParams: Record = {}, @@ -124,61 +155,56 @@ export const init: ModuleFn = ({ store, navigate, state, provider, fullAPI, ...r }; if (!deepEqual(customQueryParams, update)) { store.setState({ customQueryParams: update }); - fullAPI.emit(UPDATE_QUERY_PARAMS, update); + provider.channel.emit(UPDATE_QUERY_PARAMS, update); } }, navigateUrl(url, options) { - navigate(url, { ...options, plain: true }); + navigate(url, { plain: true, ...options }); }, }; - const initModule = () => { - // Sets `args` parameter in URL, omitting any args that have their initial value or cannot be unserialized safely. - const updateArgsParam = () => { - const { path, queryParams, viewMode } = fullAPI.getUrlState(); - if (viewMode !== 'story') return; - - const currentStory = fullAPI.getCurrentStoryData(); - if (currentStory?.type !== 'story') return; - - const { args, initialArgs } = currentStory; - const argsString = buildArgsParam(initialArgs, args); - navigateTo(path, { ...queryParams, args: argsString }, { replace: true }); - api.setQueryParams({ args: argsString }); - }; - - fullAPI.on(SET_CURRENT_STORY, () => updateArgsParam()); - - let handleOrId: any; - fullAPI.on(STORY_ARGS_UPDATED, () => { - if ('requestIdleCallback' in globalWindow) { - if (handleOrId) globalWindow.cancelIdleCallback(handleOrId); - handleOrId = globalWindow.requestIdleCallback(updateArgsParam, { timeout: 1000 }); - } else { - if (handleOrId) clearTimeout(handleOrId); - setTimeout(updateArgsParam, 100); - } - }); + /** + * Sets `args` parameter in URL, omitting any args that have their initial value or cannot be unserialized safely. + */ + const updateArgsParam = () => { + const { path, queryParams, viewMode } = api.getUrlState(); + if (viewMode !== 'story') return; - fullAPI.on(GLOBALS_UPDATED, ({ globals, initialGlobals }) => { - const { path, queryParams } = fullAPI.getUrlState(); - const globalsString = buildArgsParam(initialGlobals, globals); - navigateTo(path, { ...queryParams, globals: globalsString }, { replace: true }); - api.setQueryParams({ globals: globalsString }); - }); + const currentStory = fullAPI.getCurrentStoryData(); + if (currentStory?.type !== 'story') return; + + const { args, initialArgs } = currentStory; + const argsString = buildArgsParam(initialArgs, args); + navigateTo(path, { ...queryParams, args: argsString }, { replace: true }); + api.setQueryParams({ args: argsString }); + }; - fullAPI.on(NAVIGATE_URL, (url: string, options: NavigateOptions) => { - fullAPI.navigateUrl(url, options); - }); + provider.channel.on(SET_CURRENT_STORY, () => updateArgsParam()); - if (fullAPI.showReleaseNotesOnLaunch()) { - navigate('/settings/release-notes'); + let handleOrId: any; + provider.channel.on(STORY_ARGS_UPDATED, () => { + if ('requestIdleCallback' in globalWindow) { + if (handleOrId) globalWindow.cancelIdleCallback(handleOrId); + handleOrId = globalWindow.requestIdleCallback(updateArgsParam, { timeout: 1000 }); + } else { + if (handleOrId) clearTimeout(handleOrId); + setTimeout(updateArgsParam, 100); } - }; + }); + + provider.channel.on(GLOBALS_UPDATED, ({ globals, initialGlobals }) => { + const { path, queryParams } = api.getUrlState(); + const globalsString = buildArgsParam(initialGlobals, globals); + navigateTo(path, { ...queryParams, globals: globalsString }, { replace: true }); + api.setQueryParams({ globals: globalsString }); + }); + + provider.channel.on(NAVIGATE_URL, (url: string, options: NavigateOptions) => { + api.navigateUrl(url, options); + }); return { api, - state: initialUrlSupport({ store, navigate, state, provider, fullAPI, ...rest }), - init: initModule, + state: initialUrlSupport(moduleArgs), }; }; diff --git a/code/lib/manager-api/src/modules/versions.ts b/code/lib/manager-api/src/modules/versions.ts index 0ea85ae6d919..2d90a14fcd69 100644 --- a/code/lib/manager-api/src/modules/versions.ts +++ b/code/lib/manager-api/src/modules/versions.ts @@ -5,7 +5,7 @@ import memoize from 'memoizerific'; import type { API_UnknownEntries, API_Version, API_Versions } from '@storybook/types'; import { version as currentVersion } from '../version'; -import type { ModuleFn } from '../index'; +import type { ModuleFn } from '../lib/types'; const { VERSIONCHECK } = global; @@ -24,12 +24,27 @@ const getVersionCheckData = memoize(1)((): API_Versions => { }); export interface SubAPI { + /** + * Returns the current version of the Storybook Manager. + * + * @returns {API_Version} The current version of the Storybook Manager. + */ getCurrentVersion: () => API_Version; + /** + * Returns the latest version of the Storybook Manager. + * + * @returns {API_Version} The latest version of the Storybook Manager. + */ getLatestVersion: () => API_Version; + /** + * Checks if an update is available for the Storybook Manager. + * + * @returns {boolean} True if an update is available, false otherwise. + */ versionUpdateAvailable: () => boolean; } -export const init: ModuleFn = ({ store, mode, fullAPI }) => { +export const init: ModuleFn = ({ store }) => { const { dismissedVersionNotification } = store.getState(); const state = { @@ -97,34 +112,6 @@ export const init: ModuleFn = ({ store, mode, fullAPI }) => { await store.setState({ versions: { ...versions, latest, next }, }); - - if (api.versionUpdateAvailable()) { - const latestVersion = api.getLatestVersion().version; - const diff = semver.diff(versions.current.version, versions.latest.version); - - if ( - latestVersion !== dismissedVersionNotification && - diff !== 'patch' && - !semver.prerelease(latestVersion) && - mode !== 'production' - ) { - fullAPI.addNotification({ - id: 'update', - link: '/settings/about', - content: { - headline: `Storybook ${latestVersion} is available!`, - subHeadline: `Your current version is: ${versions.current.version}`, - }, - icon: { name: 'book' }, - onClear() { - store.setState( - { dismissedVersionNotification: latestVersion }, - { persistence: 'permanent' } - ); - }, - }); - } - } }; return { init: initModule, state, api }; diff --git a/code/lib/manager-api/src/modules/whatsnew.ts b/code/lib/manager-api/src/modules/whatsnew.ts new file mode 100644 index 000000000000..6ee90558bc7c --- /dev/null +++ b/code/lib/manager-api/src/modules/whatsnew.ts @@ -0,0 +1,108 @@ +import { global } from '@storybook/global'; +import type { WhatsNewCache, WhatsNewData } from '@storybook/core-events'; +import { + REQUEST_WHATS_NEW_DATA, + RESULT_WHATS_NEW_DATA, + SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, +} from '@storybook/core-events'; +import type { ModuleFn } from '../lib/types'; + +export type SubState = { + whatsNewData?: WhatsNewData; +}; + +export type SubAPI = { + isWhatsNewUnread(): boolean; + whatsNewHasBeenRead(): void; + toggleWhatsNewNotifications(): void; +}; + +const WHATS_NEW_NOTIFICATION_ID = 'whats-new'; + +export const init: ModuleFn = ({ fullAPI, store, provider }) => { + const state: SubState = { + whatsNewData: undefined, + }; + + function setWhatsNewState(newState: WhatsNewData) { + store.setState({ whatsNewData: newState }); + state.whatsNewData = newState; + } + + const api: SubAPI = { + isWhatsNewUnread() { + return state.whatsNewData?.status === 'SUCCESS' && !state.whatsNewData.postIsRead; + }, + whatsNewHasBeenRead() { + if (state.whatsNewData?.status === 'SUCCESS') { + setWhatsNewCache({ lastReadPost: state.whatsNewData.url }); + setWhatsNewState({ ...state.whatsNewData, postIsRead: true }); + fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID); + } + }, + toggleWhatsNewNotifications() { + if (state.whatsNewData?.status === 'SUCCESS') { + setWhatsNewState({ + ...state.whatsNewData, + disableWhatsNewNotifications: !state.whatsNewData.disableWhatsNewNotifications, + }); + provider.channel.emit(TOGGLE_WHATS_NEW_NOTIFICATIONS, { + disableWhatsNewNotifications: state.whatsNewData.disableWhatsNewNotifications, + }); + } + }, + }; + + function getLatestWhatsNewPost(): Promise { + provider.channel.emit(REQUEST_WHATS_NEW_DATA); + + return new Promise((resolve) => + provider.channel.once(RESULT_WHATS_NEW_DATA, ({ data }: { data: WhatsNewData }) => + resolve(data) + ) + ); + } + + function setWhatsNewCache(cache: WhatsNewCache): void { + provider.channel.emit(SET_WHATS_NEW_CACHE, cache); + } + + const initModule = async () => { + // The server channel doesn't exist in production, and we don't want to show what's new in production storybooks. + if (global.CONFIG_TYPE !== 'DEVELOPMENT') { + return; + } + + const whatsNewData = await getLatestWhatsNewPost(); + setWhatsNewState(whatsNewData); + + const urlState = fullAPI.getUrlState(); + const isOnboardingView = + urlState?.path === '/onboarding' || urlState.queryParams?.onboarding === 'true'; + + if ( + !isOnboardingView && + whatsNewData.status === 'SUCCESS' && + !whatsNewData.disableWhatsNewNotifications && + whatsNewData.showNotification + ) { + fullAPI.addNotification({ + id: WHATS_NEW_NOTIFICATION_ID, + link: '/settings/whats-new', + content: { + headline: whatsNewData.excerpt, + subHeadline: "Click to learn what's new in Storybook", + }, + icon: { name: 'hearthollow' }, + onClear({ dismissed }) { + if (dismissed) { + setWhatsNewCache({ lastDismissedPost: whatsNewData.url }); + } + }, + }); + } + }; + + return { init: initModule, state, api }; +}; diff --git a/code/lib/manager-api/src/tests/globals.test.ts b/code/lib/manager-api/src/tests/globals.test.ts index babd449131b2..1f51a113935a 100644 --- a/code/lib/manager-api/src/tests/globals.test.ts +++ b/code/lib/manager-api/src/tests/globals.test.ts @@ -1,9 +1,10 @@ import { EventEmitter } from 'events'; import { SET_STORIES, SET_GLOBALS, UPDATE_GLOBALS, GLOBALS_UPDATED } from '@storybook/core-events'; -import type { ModuleArgs, API } from '../index'; +import type { API } from '../index'; import type { SubAPI } from '../modules/globals'; import { init as initModule } from '../modules/globals'; +import type { ModuleArgs } from '../lib/types'; const { logger } = require('@storybook/client-logger'); const { getEventMetadata } = require('../lib/events'); @@ -27,7 +28,8 @@ function createMockStore() { describe('globals API', () => { it('sets a sensible initialState', () => { const store = createMockStore(); - const { state } = initModule({ store } as unknown as ModuleArgs); + const channel = new EventEmitter(); + const { state } = initModule({ store, provider: { channel } } as unknown as ModuleArgs); expect(state).toEqual({ globals: {}, @@ -36,13 +38,15 @@ describe('globals API', () => { }); it('set global args on SET_GLOBALS', () => { - const api = Object.assign(new EventEmitter(), { findRef: jest.fn() }); + const channel = new EventEmitter(); const store = createMockStore(); - const { state, init } = initModule({ store, fullAPI: api } as unknown as ModuleArgs); + const { state } = initModule({ + store, + provider: { channel }, + } as unknown as ModuleArgs); store.setState(state); - init(); - api.emit(SET_GLOBALS, { + channel.emit(SET_GLOBALS, { globals: { a: 'b' }, globalTypes: { a: { type: { name: 'string' } } }, }); @@ -53,26 +57,34 @@ describe('globals API', () => { }); it('ignores SET_STORIES from other refs', () => { - const api = Object.assign(new EventEmitter(), { findRef: jest.fn() }); + const channel = new EventEmitter(); + const api = { findRef: jest.fn() }; const store = createMockStore(); - const { state, init } = initModule({ store, fullAPI: api } as unknown as ModuleArgs); + const { state } = initModule({ + store, + fullAPI: api, + provider: { channel }, + } as unknown as ModuleArgs); store.setState(state); - init(); getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'ref' } }); - api.emit(SET_STORIES, { globals: { a: 'b' } }); + channel.emit(SET_STORIES, { globals: { a: 'b' } }); expect(store.getState()).toEqual({ globals: {}, globalTypes: {} }); }); it('ignores SET_GLOBALS from other refs', () => { - const api = Object.assign(new EventEmitter(), { findRef: jest.fn() }); + const api = { findRef: jest.fn() }; + const channel = new EventEmitter(); const store = createMockStore(); - const { state, init } = initModule({ store, fullAPI: api } as unknown as ModuleArgs); + const { state } = initModule({ + store, + fullAPI: api, + provider: { channel }, + } as unknown as ModuleArgs); store.setState(state); - init(); getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'ref' } }); - api.emit(SET_GLOBALS, { + channel.emit(SET_GLOBALS, { globals: { a: 'b' }, globalTypes: { a: { type: { name: 'string' } } }, }); @@ -80,48 +92,56 @@ describe('globals API', () => { }); it('updates the state when the preview emits GLOBALS_UPDATED', () => { - const api = Object.assign(new EventEmitter(), { findRef: jest.fn() }); + const channel = new EventEmitter(); + const api = { findRef: jest.fn() }; const store = createMockStore(); - const { state, init } = initModule({ store, fullAPI: api } as unknown as ModuleArgs); + const { state } = initModule({ + store, + fullAPI: api, + provider: { channel }, + } as unknown as ModuleArgs); store.setState(state); - init(); - - api.emit(GLOBALS_UPDATED, { globals: { a: 'b' } }); + channel.emit(GLOBALS_UPDATED, { globals: { a: 'b' } }); expect(store.getState()).toEqual({ globals: { a: 'b' }, globalTypes: {} }); - api.emit(GLOBALS_UPDATED, { globals: { a: 'c' } }); + channel.emit(GLOBALS_UPDATED, { globals: { a: 'c' } }); expect(store.getState()).toEqual({ globals: { a: 'c' }, globalTypes: {} }); // SHOULD NOT merge global args - api.emit(GLOBALS_UPDATED, { globals: { d: 'e' } }); + channel.emit(GLOBALS_UPDATED, { globals: { d: 'e' } }); expect(store.getState()).toEqual({ globals: { d: 'e' }, globalTypes: {} }); }); it('ignores GLOBALS_UPDATED from other refs', () => { - const api = Object.assign(new EventEmitter(), { findRef: jest.fn() }); + const channel = new EventEmitter(); + const api = { findRef: jest.fn() }; const store = createMockStore(); - const { state, init } = initModule({ store, fullAPI: api } as unknown as ModuleArgs); + const { state } = initModule({ + store, + fullAPI: api, + provider: { channel }, + } as unknown as ModuleArgs); store.setState(state); - init(); - getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'ref' } }); logger.warn.mockClear(); - api.emit(GLOBALS_UPDATED, { globals: { a: 'b' } }); + channel.emit(GLOBALS_UPDATED, { globals: { a: 'b' } }); expect(store.getState()).toEqual({ globals: {}, globalTypes: {} }); expect(logger.warn).toHaveBeenCalled(); }); it('emits UPDATE_GLOBALS when updateGlobals is called', () => { - const fullAPI = { emit: jest.fn(), on: jest.fn() } as unknown as API; + const channel = new EventEmitter(); + const fullAPI = {} as unknown as API; const store = createMockStore(); - const { init, api } = initModule({ store, fullAPI } as unknown as ModuleArgs); - - init(); + const listener = jest.fn(); + channel.on(UPDATE_GLOBALS, listener); + const { api } = initModule({ store, fullAPI, provider: { channel } } as unknown as ModuleArgs); (api as SubAPI).updateGlobals({ a: 'b' }); - expect(fullAPI.emit).toHaveBeenCalledWith(UPDATE_GLOBALS, { + + expect(listener).toHaveBeenCalledWith({ globals: { a: 'b' }, options: { target: 'storybook-preview-iframe' }, }); diff --git a/code/lib/manager-api/src/tests/mockStoriesEntries.ts b/code/lib/manager-api/src/tests/mockStoriesEntries.ts new file mode 100644 index 000000000000..703b6e6efb76 --- /dev/null +++ b/code/lib/manager-api/src/tests/mockStoriesEntries.ts @@ -0,0 +1,129 @@ +import type { StoryIndex, API_PreparedStoryIndex } from '@storybook/types'; + +export const mockEntries: StoryIndex['entries'] = { + 'component-a--docs': { + type: 'docs', + id: 'component-a--docs', + title: 'Component A', + name: 'Docs', + importPath: './path/to/component-a.ts', + storiesImports: [], + }, + 'component-a--story-1': { + type: 'story', + id: 'component-a--story-1', + title: 'Component A', + name: 'Story 1', + importPath: './path/to/component-a.ts', + }, + 'component-a--story-2': { + type: 'story', + id: 'component-a--story-2', + title: 'Component A', + name: 'Story 2', + importPath: './path/to/component-a.ts', + }, + 'component-b--story-3': { + type: 'story', + id: 'component-b--story-3', + title: 'Component B', + name: 'Story 3', + importPath: './path/to/component-b.ts', + }, +}; +export const docsEntries: StoryIndex['entries'] = { + 'component-a--page': { + type: 'story', + id: 'component-a--page', + title: 'Component A', + name: 'Page', + importPath: './path/to/component-a.ts', + }, + 'component-a--story-2': { + type: 'story', + id: 'component-a--story-2', + title: 'Component A', + name: 'Story 2', + importPath: './path/to/component-a.ts', + }, + 'component-b-docs': { + type: 'docs', + id: 'component-b--docs', + title: 'Component B', + name: 'Docs', + importPath: './path/to/component-b.ts', + storiesImports: [], + tags: ['stories-mdx'], + }, + 'component-c--story-4': { + type: 'story', + id: 'component-c--story-4', + title: 'Component c', + name: 'Story 4', + importPath: './path/to/component-c.ts', + }, +}; +export const navigationEntries: StoryIndex['entries'] = { + 'a--1': { + type: 'story', + title: 'a', + name: '1', + id: 'a--1', + importPath: './a.ts', + }, + 'a--2': { + type: 'story', + title: 'a', + name: '2', + id: 'a--2', + importPath: './a.ts', + }, + 'b-c--1': { + type: 'story', + title: 'b/c', + name: '1', + id: 'b-c--1', + importPath: './b/c.ts', + }, + 'b-d--1': { + type: 'story', + title: 'b/d', + name: '1', + id: 'b-d--1', + importPath: './b/d.ts', + }, + 'b-d--2': { + type: 'story', + title: 'b/d', + name: '2', + id: 'b-d--2', + importPath: './b/d.ts', + }, + 'custom-id--1': { + type: 'story', + title: 'b/e', + name: '1', + id: 'custom-id--1', + importPath: './b/.ts', + }, +}; +export const preparedEntries: API_PreparedStoryIndex['entries'] = { + 'a--1': { + type: 'story', + title: 'a', + name: '1', + parameters: {}, + id: 'a--1', + args: { a: 'b' }, + importPath: './a.ts', + }, + 'b--1': { + type: 'story', + title: 'b', + name: '1', + parameters: {}, + id: 'b--1', + args: { x: 'y' }, + importPath: './b.ts', + }, +}; diff --git a/code/lib/manager-api/src/tests/stories.test.ts b/code/lib/manager-api/src/tests/stories.test.ts index 4e6e7081db24..0ee0c9be4ebb 100644 --- a/code/lib/manager-api/src/tests/stories.test.ts +++ b/code/lib/manager-api/src/tests/stories.test.ts @@ -16,27 +16,26 @@ import { import { EventEmitter } from 'events'; import { global } from '@storybook/global'; -import { Channel } from '@storybook/channels'; - -import type { API_StoryEntry, StoryIndex, API_PreparedStoryIndex } from '@storybook/types'; -import { getEventMetadata } from '../lib/events'; +import type { API_StoryEntry } from '@storybook/types'; +import { getEventMetadata as getEventMetadataOriginal } from '../lib/events'; import { init as initStories } from '../modules/stories'; import type Store from '../store'; -import type { ModuleArgs } from '..'; - -function mockChannel() { - const transport = { - setHandler: () => {}, - send: () => {}, - }; - - return new Channel({ transport }); -} +import type { API, State } from '..'; +import { mockEntries, docsEntries, preparedEntries, navigationEntries } from './mockStoriesEntries'; +import type { ModuleArgs } from '../lib/types'; const mockGetEntries = jest.fn(); +const fetch = global.fetch as jest.Mock>; +const getEventMetadata = getEventMetadataOriginal as unknown as jest.Mock< + ReturnType +>; + +const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); -jest.mock('../lib/events'); +jest.mock('../lib/events', () => ({ + getEventMetadata: jest.fn(() => ({ sourceType: 'local' })), +})); jest.mock('@storybook/global', () => ({ global: { ...globalThis, @@ -46,41 +45,7 @@ jest.mock('@storybook/global', () => ({ }, })); -const getEventMetadataMock = getEventMetadata as ReturnType; - -const mockEntries: StoryIndex['entries'] = { - 'component-a--docs': { - type: 'docs', - id: 'component-a--docs', - title: 'Component A', - name: 'Docs', - importPath: './path/to/component-a.ts', - storiesImports: [], - }, - 'component-a--story-1': { - type: 'story', - id: 'component-a--story-1', - title: 'Component A', - name: 'Story 1', - importPath: './path/to/component-a.ts', - }, - 'component-a--story-2': { - type: 'story', - id: 'component-a--story-2', - title: 'Component A', - name: 'Story 2', - importPath: './path/to/component-a.ts', - }, - 'component-b--story-3': { - type: 'story', - id: 'component-b--story-3', - title: 'Component B', - name: 'Story 3', - importPath: './path/to/component-b.ts', - }, -}; - -function createMockStore(initialState = {}) { +function createMockStore(initialState: Partial = {}) { let state = initialState; return { getState: jest.fn(() => state), @@ -90,61 +55,52 @@ function createMockStore(initialState = {}) { }), } as any as Store; } - -function initStoriesAndSetState({ store, ...options }: any) { - const { state, ...result } = initStories({ store, ...options } as any); - - store?.setState(state); - - return { state, ...result }; +function createMockProvider() { + return { + getConfig: jest.fn().mockReturnValue({}), + channel: new EventEmitter(), + }; +} +function createMockModuleArgs({ + fullAPI = {}, + initialState = {}, +}: { + fullAPI?: Partial>; + initialState?: Partial; +}) { + const navigate = jest.fn(); + const store = createMockStore({ filters: {}, status: {}, ...initialState }); + const provider = createMockProvider(); + + return { navigate, store, provider, fullAPI }; } - -const provider = { getConfig: jest.fn().mockReturnValue({}), serverChannel: mockChannel() }; - -beforeEach(() => { - provider.getConfig.mockReset().mockReturnValue({}); - provider.serverChannel = mockChannel(); - mockGetEntries.mockReset().mockReturnValue(mockEntries); - - (global.fetch as jest.Mock>).mockReset().mockReturnValue( - Promise.resolve({ - status: 200, - ok: true, - json: () => ({ v: 4, entries: mockGetEntries() }), - } as any as Response) - ); - - getEventMetadataMock.mockReturnValue({ sourceType: 'local' } as any); - getEventMetadataMock.mockReturnValue({ sourceType: 'local' } as any); -}); describe('stories API', () => { it('sets a sensible initialState', () => { - const { state } = initStoriesAndSetState({ - storyId: 'id', - viewMode: 'story', - } as ModuleArgs); - - expect(state).toEqual({ - previewInitialized: false, + const moduleArgs = createMockModuleArgs({}); + const { state } = initStories({ + ...(moduleArgs as unknown as ModuleArgs), storyId: 'id', viewMode: 'story', - hasCalledSetOptions: false, }); + + expect(state).toEqual( + expect.objectContaining({ + previewInitialized: false, + storyId: 'id', + viewMode: 'story', + hasCalledSetOptions: false, + }) + ); }); describe('setIndex', () => { it('sets the initial set of stories in the stories hash', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: mockEntries }); const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doesn't guarantee it expect(Object.keys(index)).toEqual([ 'component-a', @@ -159,7 +115,6 @@ describe('stories API', () => { id: 'component-a', children: ['component-a--docs', 'component-a--story-1', 'component-a--story-2'], }); - expect(index['component-a--docs']).toMatchObject({ type: 'docs', id: 'component-a--docs', @@ -169,7 +124,6 @@ describe('stories API', () => { storiesImports: [], prepared: false, }); - expect(index['component-a--story-1']).toMatchObject({ type: 'story', id: 'component-a--story-1', @@ -182,15 +136,10 @@ describe('stories API', () => { (index['component-a--story-1'] as API_StoryEntry as API_StoryEntry).args ).toBeUndefined(); }); - it('trims whitespace of group/component names (which originate from the kind)', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: { @@ -204,7 +153,6 @@ describe('stories API', () => { }, }); const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doesn't guarantee it expect(Object.keys(index)).toEqual([ 'design-system', @@ -225,15 +173,10 @@ describe('stories API', () => { name: ' My Story ', // story name is kept as-is, because it's set directly on the story }); }); - it('moves rootless stories to the front of the list', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: { @@ -248,7 +191,6 @@ describe('stories API', () => { }, }); const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doesn't guarantee it expect(Object.keys(index)).toEqual([ 'component-a', @@ -267,15 +209,10 @@ describe('stories API', () => { children: ['root-first'], }); }); - it('sets roots when showRoots = true', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; provider.getConfig.mockReturnValue({ sidebar: { showRoots: true } }); api.setIndex({ v: 4, @@ -289,9 +226,7 @@ describe('stories API', () => { }, }, }); - const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(index)).toEqual(['a', 'a-b', 'a-b--1']); expect(index.a).toMatchObject({ @@ -313,15 +248,10 @@ describe('stories API', () => { title: 'a/b', }); }); - it('does not put bare stories into a root when showRoots = true', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; provider.getConfig.mockReturnValue({ sidebar: { showRoots: true } }); api.setIndex({ v: 4, @@ -335,9 +265,7 @@ describe('stories API', () => { }, }, }); - const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(index)).toEqual(['a', 'a--1']); expect(index.a).toMatchObject({ @@ -353,17 +281,12 @@ describe('stories API', () => { name: '1', }); }); - // Stories can get out of order for a few reasons -- see reproductions on // https://github.com/storybookjs/storybook/issues/5518 it('does the right thing for out of order stories', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; provider.getConfig.mockReturnValue({ sidebar: { showRoots: true } }); api.setIndex({ v: 4, @@ -373,9 +296,7 @@ describe('stories API', () => { 'a--2': { type: 'story', title: 'a', name: '2', id: 'a--2', importPath: './a.ts' }, }, }); - const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(index)).toEqual(['a', 'a--1', 'a--2', 'b', 'b--1']); expect(index.a).toMatchObject({ @@ -383,23 +304,17 @@ describe('stories API', () => { id: 'a', children: ['a--1', 'a--2'], }); - expect(index.b).toMatchObject({ type: 'component', id: 'b', children: ['b--1'], }); }); - // Entries on the SET_STORIES event will be prepared it('handles properly prepared stories', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: { @@ -414,9 +329,7 @@ describe('stories API', () => { }, }, }); - const { index } = store.getState(); - expect(index['prepared--story']).toMatchObject({ type: 'story', id: 'prepared--story', @@ -428,19 +341,13 @@ describe('stories API', () => { args: { arg: 'exists' }, }); }); - it('retains prepared-ness of stories', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { setOptions: jest.fn() }); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - init(); - + const fullAPI = { setOptions: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; api.setIndex({ v: 4, entries: mockEntries }); - - fullAPI.emit(STORY_PREPARED, { + provider.channel.emit(STORY_PREPARED, { id: 'component-a--story-1', parameters: { a: 'b' }, args: { c: 'd' }, @@ -452,9 +359,7 @@ describe('stories API', () => { parameters: { a: 'b' }, args: { c: 'd' }, }); - api.setIndex({ v: 4, entries: mockEntries }); - // Let the promise/await chain resolve await new Promise((r) => setTimeout(r, 0)); expect(store.getState().index['component-a--story-1'] as API_StoryEntry).toMatchObject({ @@ -465,51 +370,13 @@ describe('stories API', () => { }); describe('docs entries', () => { - const docsEntries: StoryIndex['entries'] = { - 'component-a--page': { - type: 'story', - id: 'component-a--page', - title: 'Component A', - name: 'Page', - importPath: './path/to/component-a.ts', - }, - 'component-a--story-2': { - type: 'story', - id: 'component-a--story-2', - title: 'Component A', - name: 'Story 2', - importPath: './path/to/component-a.ts', - }, - 'component-b-docs': { - type: 'docs', - id: 'component-b--docs', - title: 'Component B', - name: 'Docs', - importPath: './path/to/component-b.ts', - storiesImports: [], - tags: ['stories-mdx'], - }, - 'component-c--story-4': { - type: 'story', - id: 'component-c--story-4', - title: 'Component c', - name: 'Story 4', - importPath: './path/to/component-c.ts', - }, - }; - it('handles docs entries', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: docsEntries }); - const { index } = store.getState(); - // We need exact key ordering, even if in theory JS doesn't guarantee it expect(Object.keys(index)).toEqual([ 'component-a', @@ -525,26 +392,16 @@ describe('stories API', () => { expect(index['component-b--docs'].type).toBe('docs'); expect(index['component-c--story-4'].type).toBe('story'); }); - describe('when DOCS_MODE = true', () => { it('strips out story entries', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter()); - - const { api } = initStoriesAndSetState({ - store, - navigate, - provider, - fullAPI, + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories({ + ...(moduleArgs as unknown as ModuleArgs), docsOptions: { docsMode: true }, - } as any); - Object.assign(fullAPI, api); - + }); + const { store } = moduleArgs; api.setIndex({ v: 4, entries: docsEntries }); - const { index } = store.getState(); - expect(Object.keys(index)).toEqual(['component-b', 'component-b--docs']); }); }); @@ -553,219 +410,197 @@ describe('stories API', () => { describe('SET_INDEX event', () => { it('calls setIndex w/ the data', () => { - const fullAPI = Object.assign(new EventEmitter()); - const navigate = jest.fn(); - const store = createMockStore(); - - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api, { - setIndex: jest.fn(), - setOptions: jest.fn(), - }); - init(); - - fullAPI.emit(SET_INDEX, { v: 4, entries: mockEntries }); - - expect(fullAPI.setIndex).toHaveBeenCalled(); + const fullAPI = { setOptions: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; + + provider.channel.emit(SET_INDEX, { v: 4, entries: mockEntries }); + expect(store.getState().index).toEqual( + expect.objectContaining({ + 'component-a': expect.any(Object), + 'component-a--docs': expect.any(Object), + 'component-a--story-1': expect.any(Object), + }) + ); }); - it('calls setOptions w/ first story parameter', () => { - const fullAPI = Object.assign(new EventEmitter()); - const navigate = jest.fn(); - const store = createMockStore(); - - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api, { - setIndex: jest.fn(), - setOptions: jest.fn(), + const fullAPI = { setOptions: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; + + // HACK api to effectively mock getCurrentParameter + Object.assign(api, { getCurrentParameter: jest.fn().mockReturnValue('options'), }); - init(); - - fullAPI.emit(SET_INDEX, { v: 4, entries: mockEntries }); + provider.channel.emit(SET_INDEX, { v: 4, entries: mockEntries }); expect(fullAPI.setOptions).toHaveBeenCalledWith('options'); }); }); describe('fetchIndex', () => { it('deals with 500 errors', async () => { - const navigate = jest.fn(); - const store = createMockStore({}); - const fullAPI = Object.assign(new EventEmitter(), {}); - - (global.fetch as jest.Mock>).mockReturnValue( + fetch.mockReturnValue( Promise.resolve({ status: 500, text: async () => new Error('sorting error'), } as any as Response) ); - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + const moduleArgs = createMockModuleArgs({}); + const { init } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; await init(); const { indexError } = store.getState(); expect(indexError).toBeDefined(); }); + it('watches for the INVALIDATE event and re-fetches -- and resets the hash', async () => { + fetch.mockReturnValue( + Promise.resolve({ + status: 200, + ok: true, + json: () => ({ + v: 4, + entries: { + 'component-a--story-1': { + type: 'story', + id: 'component-a--story-1', + title: 'Component A', + name: 'Story 1', + importPath: './path/to/component-a.ts', + }, + }, + }), + } as any as Response) + ); - it('watches for the INVALIDATE event and refetches -- and resets the hash', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { - setIndex: jest.fn(), - }); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + const moduleArgs = createMockModuleArgs({}); + const { init } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; - (global.fetch as jest.Mock>).mockClear(); await init(); - expect(global.fetch as jest.Mock>).toHaveBeenCalledTimes(1); - - (global.fetch as jest.Mock>).mockClear(); - mockGetEntries.mockReturnValueOnce({ - 'component-a--story-1': { - type: 'story', - id: 'component-a--story-1', - title: 'Component A', - name: 'Story 1', - importPath: './path/to/component-a.ts', - }, - }); - provider.serverChannel.emit(STORY_INDEX_INVALIDATED); - expect(global.fetch).toHaveBeenCalledTimes(1); - // Let the promise/await chain resolve - await new Promise((r) => setTimeout(r, 0)); - const { index } = store.getState(); + expect(fetch).toHaveBeenCalledTimes(1); + provider.channel.emit(STORY_INDEX_INVALIDATED); + expect(global.fetch).toHaveBeenCalledTimes(2); + + // this side-effect is in an un-awaited promise. + await wait(16); + const { index } = store.getState(); expect(Object.keys(index)).toEqual(['component-a', 'component-a--story-1']); }); - it('clears 500 errors when invalidated', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { - setIndex: jest.fn(), - }); - - (global.fetch as jest.Mock>).mockReturnValueOnce( + fetch.mockReturnValueOnce( Promise.resolve({ status: 500, text: async () => new Error('sorting error'), } as any as Response) ); - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + const moduleArgs = createMockModuleArgs({}); + const { init } = initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; await init(); const { indexError } = store.getState(); expect(indexError).toBeDefined(); - (global.fetch as jest.Mock>).mockClear(); - mockGetEntries.mockReturnValueOnce({ - 'component-a--story-1': { - type: 'story', - id: 'component-a--story-1', - title: 'Component A', - name: 'Story 1', - importPath: './path/to/component-a.ts', - }, - }); - provider.serverChannel.emit(STORY_INDEX_INVALIDATED); - expect(global.fetch).toHaveBeenCalledTimes(1); + fetch.mockReturnValueOnce( + Promise.resolve({ + status: 200, + ok: true, + json: () => ({ + v: 4, + entries: { + 'component-a--story-1': { + type: 'story', + id: 'component-a--story-1', + title: 'Component A', + name: 'Story 1', + importPath: './path/to/component-a.ts', + }, + }, + }), + } as any as Response) + ); + + provider.channel.emit(STORY_INDEX_INVALIDATED); + expect(global.fetch).toHaveBeenCalledTimes(2); + + // this side-effect is in an un-awaited promise. + await wait(16); - // Let the promise/await chain resolve - await new Promise((r) => setTimeout(r, 0)); const { index, indexError: newIndexError } = store.getState(); expect(newIndexError).not.toBeDefined(); - expect(Object.keys(index)).toEqual(['component-a', 'component-a--story-1']); }); }); describe('STORY_SPECIFIED event', () => { it('navigates to the story', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { - isSettingsScreenActive() { - return false; - }, - }); - const store = createMockStore({}); - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - Object.assign(fullAPI, api); - init(); - fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); + const moduleArgs = createMockModuleArgs({ initialState: { path: '/' } }); + initStories(moduleArgs as unknown as ModuleArgs); + const { navigate, provider } = moduleArgs; + provider.channel.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - it('DOES not navigate if the story was already selected', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { - isSettingsScreenActive() { - return true; - }, - }); - const store = createMockStore({ viewMode: 'story', storyId: 'a--1' }); - initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); + const moduleArgs = createMockModuleArgs({ initialState: { path: '/story/a--1' } }); + initStories(moduleArgs as unknown as ModuleArgs); + const { navigate, provider } = moduleArgs; + provider.channel.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); expect(navigate).not.toHaveBeenCalled(); }); - it('DOES not navigate if a settings page was selected', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { - isSettingsScreenActive() { - return true; - }, - }); - const store = createMockStore({ viewMode: 'settings', storyId: 'about' }); - initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const moduleArgs = createMockModuleArgs({ initialState: { path: '/settings/about' } }); + initStories(moduleArgs as unknown as ModuleArgs); + const { navigate, provider } = moduleArgs; - fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); + provider.channel.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); + expect(navigate).not.toHaveBeenCalled(); + }); + it('DOES not navigate if a custom page was selected', async () => { + const moduleArgs = createMockModuleArgs({ initialState: { path: '/custom/page' } }); + initStories(moduleArgs as unknown as ModuleArgs); + const { navigate, provider } = moduleArgs; + provider.channel.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); expect(navigate).not.toHaveBeenCalled(); }); }); describe('CURRENT_STORY_WAS_SET event', () => { it('sets previewInitialized', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter()); - const store = createMockStore({}); - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - Object.assign(fullAPI, api); - await init(); - fullAPI.emit(CURRENT_STORY_WAS_SET, { id: 'a--1' }); + const moduleArgs = createMockModuleArgs({}); + initStories(moduleArgs as unknown as ModuleArgs); + const { store, provider } = moduleArgs; + provider.channel.emit(CURRENT_STORY_WAS_SET, { id: 'a--1' }); expect(store.getState().previewInitialized).toBe(true); }); - it('sets a ref to previewInitialized', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { updateRef: jest.fn() }); - const store = createMockStore(); - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - Object.assign(fullAPI, api); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; + provider.channel.emit(CURRENT_STORY_WAS_SET, { id: 'a--1' }); - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', - ref: { id: 'refId', index: { 'a--1': { args: { a: 'b' } } } }, - } as any); - await init(); - fullAPI.emit(CURRENT_STORY_WAS_SET, { id: 'a--1' }); - + refId: 'refId', + source: '', + sourceLocation: '', + type: '', + ref: { id: 'refId', index: { 'a--1': { args: { a: 'b' } } } } as any, + }); + provider.channel.emit(CURRENT_STORY_WAS_SET, { id: 'a--1' }); expect(fullAPI.updateRef.mock.calls.length).toBe(1); - expect(fullAPI.updateRef.mock.calls[0][1]).toEqual({ previewInitialized: true, }); @@ -773,86 +608,53 @@ describe('stories API', () => { }); describe('args handling', () => { - const parameters = {}; - const preparedEntries: API_PreparedStoryIndex['entries'] = { - 'a--1': { - type: 'story', - title: 'a', - name: '1', - parameters, - id: 'a--1', - args: { a: 'b' }, - importPath: './a.ts', - }, - 'b--1': { - type: 'story', - title: 'b', - name: '1', - parameters, - id: 'b--1', - args: { x: 'y' }, - importPath: './b.ts', - }, - }; - it('changes args properly, per story when receiving STORY_ARGS_UPDATED', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = new EventEmitter(); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - const { setIndex } = Object.assign(fullAPI, api); - setIndex({ v: 4, entries: preparedEntries }); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; + api.setIndex({ v: 4, entries: preparedEntries }); const { index } = store.getState(); expect((index['a--1'] as API_StoryEntry).args).toEqual({ a: 'b' }); expect((index['b--1'] as API_StoryEntry).args).toEqual({ x: 'y' }); - - init(); - fullAPI.emit(STORY_ARGS_UPDATED, { storyId: 'a--1', args: { foo: 'bar' } }); - + provider.channel.emit(STORY_ARGS_UPDATED, { storyId: 'a--1', args: { foo: 'bar' } }); const { index: changedIndex } = store.getState(); expect((changedIndex['a--1'] as API_StoryEntry).args).toEqual({ foo: 'bar' }); expect((changedIndex['b--1'] as API_StoryEntry).args).toEqual({ x: 'y' }); }); - it('changes reffed args properly, per story when receiving STORY_ARGS_UPDATED', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = new EventEmitter(); - - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api, { - updateRef: jest.fn(), - }); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - init(); - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', - ref: { id: 'refId', index: { 'a--1': { args: { a: 'b' } } } }, - } as any); - fullAPI.emit(STORY_ARGS_UPDATED, { storyId: 'a--1', args: { foo: 'bar' } }); - expect((fullAPI as any).updateRef).toHaveBeenCalledWith('refId', { + refId: 'refId', + source: '', + sourceLocation: '', + type: '', + ref: { id: 'refId', index: { 'a--1': { args: { a: 'b' } } } } as any, + }); + provider.channel.emit(STORY_ARGS_UPDATED, { storyId: 'a--1', args: { foo: 'bar' } }); + expect(fullAPI.updateRef).toHaveBeenCalledWith('refId', { index: { 'a--1': { args: { foo: 'bar' } } }, }); }); - it('updateStoryArgs emits UPDATE_STORY_ARGS to the local frame and does not change anything', () => { - const navigate = jest.fn(); - const emit = jest.fn(); - const on = jest.fn(); - const fullAPI = { emit, on }; - const store = createMockStore(); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - const { setIndex } = Object.assign(fullAPI, api); - setIndex({ v: 4, entries: preparedEntries }); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - init(); + const listener = jest.fn(); + provider.channel.on(UPDATE_STORY_ARGS, listener); + api.setIndex({ v: 4, entries: preparedEntries }); api.updateStoryArgs({ id: 'a--1' } as API_StoryEntry, { foo: 'bar' }); - expect(emit).toHaveBeenCalledWith(UPDATE_STORY_ARGS, { + + expect(listener).toHaveBeenCalledWith({ storyId: 'a--1', updatedArgs: { foo: 'bar' }, options: { @@ -864,23 +666,18 @@ describe('stories API', () => { expect((index['a--1'] as API_StoryEntry).args).toEqual({ a: 'b' }); expect((index['b--1'] as API_StoryEntry).args).toEqual({ x: 'y' }); }); - it('updateStoryArgs emits UPDATE_STORY_ARGS to the right frame', () => { - const navigate = jest.fn(); - const emit = jest.fn(); - const on = jest.fn(); - const fullAPI = { emit, on }; - const store = createMockStore(); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - const { setIndex } = Object.assign(fullAPI, api); - setIndex({ v: 4, entries: preparedEntries }); - - init(); + const listener = jest.fn(); + provider.channel.on(UPDATE_STORY_ARGS, listener); + api.setIndex({ v: 4, entries: preparedEntries }); api.updateStoryArgs({ id: 'a--1', refId: 'refId' } as API_StoryEntry, { foo: 'bar' }); - expect(emit).toHaveBeenCalledWith(UPDATE_STORY_ARGS, { + expect(listener).toHaveBeenCalledWith({ storyId: 'a--1', updatedArgs: { foo: 'bar' }, options: { @@ -888,22 +685,18 @@ describe('stories API', () => { }, }); }); - it('refId to the local frame and does not change anything', () => { - const navigate = jest.fn(); - const emit = jest.fn(); - const on = jest.fn(); - const fullAPI = { emit, on }; - const store = createMockStore(); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - const { setIndex } = Object.assign(fullAPI, api); - setIndex({ v: 4, entries: preparedEntries }); - init(); - + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; + const listener = jest.fn(); + provider.channel.on(RESET_STORY_ARGS, listener); + + api.setIndex({ v: 4, entries: preparedEntries }); api.resetStoryArgs({ id: 'a--1' } as API_StoryEntry, ['foo']); - expect(emit).toHaveBeenCalledWith(RESET_STORY_ARGS, { + + expect(listener).toHaveBeenCalledWith({ storyId: 'a--1', argNames: ['foo'], options: { @@ -915,22 +708,18 @@ describe('stories API', () => { expect((index['a--1'] as API_StoryEntry).args).toEqual({ a: 'b' }); expect((index['b--1'] as API_StoryEntry).args).toEqual({ x: 'y' }); }); - it('resetStoryArgs emits RESET_STORY_ARGS to the right frame', () => { - const navigate = jest.fn(); - const emit = jest.fn(); - const on = jest.fn(); - const fullAPI = { emit, on }; - const store = createMockStore(); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - - const { setIndex } = Object.assign(fullAPI, api); - setIndex({ v: 4, entries: preparedEntries }); - init(); + const listener = jest.fn(); + provider.channel.on(RESET_STORY_ARGS, listener); + api.setIndex({ v: 4, entries: preparedEntries }); api.resetStoryArgs({ id: 'a--1', refId: 'refId' } as API_StoryEntry, ['foo']); - expect(emit).toHaveBeenCalledWith(RESET_STORY_ARGS, { + expect(listener).toHaveBeenCalledWith({ storyId: 'a--1', argNames: ['foo'], options: { @@ -940,268 +729,156 @@ describe('stories API', () => { }); }); - const navigationEntries: StoryIndex['entries'] = { - 'a--1': { - type: 'story', - title: 'a', - name: '1', - id: 'a--1', - importPath: './a.ts', - }, - 'a--2': { - type: 'story', - title: 'a', - name: '2', - id: 'a--2', - importPath: './a.ts', - }, - 'b-c--1': { - type: 'story', - title: 'b/c', - name: '1', - id: 'b-c--1', - importPath: './b/c.ts', - }, - 'b-d--1': { - type: 'story', - title: 'b/d', - name: '1', - id: 'b-d--1', - importPath: './b/d.ts', - }, - 'b-d--2': { - type: 'story', - title: 'b/d', - name: '2', - id: 'b-d--2', - importPath: './b/d.ts', - }, - 'custom-id--1': { - type: 'story', - title: 'b/e', - name: '1', - id: 'custom-id--1', - importPath: './b/.ts', - }, - }; - describe('jumpToStory', () => { it('works forward', () => { - const navigate = jest.fn(); - const store = createMockStore(); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - const { - api: { setIndex, jumpToStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToStory(1); - jumpToStory(1); expect(navigate).toHaveBeenCalledWith('/story/a--2'); }); - it('works backwards', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--2', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--2', storyId: 'a--2', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToStory(-1); - jumpToStory(-1); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - it('does nothing if you are at the last story and go forward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToStory }, - } = initStoriesAndSetState({ - store, + const initialState = { + path: '/story/custom-id--1', storyId: 'custom-id--1', viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToStory(1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToStory(1); expect(navigate).not.toHaveBeenCalled(); }); - it('does nothing if you are at the first story and go backward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToStory(-1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToStory(-1); expect(navigate).not.toHaveBeenCalled(); }); - it('does nothing if you have not selected a story', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToStory }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); - - jumpToStory(1); + // @ts-expect-error (storyId type is maybe wrong?) + const initialState = { path: '/story', storyId: undefined, viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToStory(1); expect(navigate).not.toHaveBeenCalled(); }); }); describe('findSiblingStoryId', () => { it('works forward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const storyId = 'a--1'; - const { - api: { setIndex, findSiblingStoryId }, - } = initStoriesAndSetState({ store, navigate, storyId, viewMode: 'story', provider } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; - const result = findSiblingStoryId(storyId, store.getState().index, 1, false); + api.setIndex({ v: 4, entries: navigationEntries }); + const result = api.findSiblingStoryId('a--1', store.getState().index, 1, false); expect(result).toBe('a--2'); }); it('works forward toSiblingGroup', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const storyId = 'a--1'; - const { - api: { setIndex, findSiblingStoryId }, - } = initStoriesAndSetState({ store, navigate, storyId, viewMode: 'story', provider } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; - const result = findSiblingStoryId(storyId, store.getState().index, 1, true); + api.setIndex({ v: 4, entries: navigationEntries }); + const result = api.findSiblingStoryId('a--1', store.getState().index, 1, true); expect(result).toBe('b-c--1'); }); }); describe('jumpToComponent', () => { it('works forward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToComponent }, - } = initStoriesAndSetState({ - store, - navigate, - storyId: 'a--1', - viewMode: 'story', - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToComponent(1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToComponent(1); expect(navigate).toHaveBeenCalledWith('/story/b-c--1'); }); - it('works backwards', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToComponent }, - } = initStoriesAndSetState({ - store, - navigate, + const initialState = { + path: '/story/b-c--1', storyId: 'b-c--1', viewMode: 'story', - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToComponent(-1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToComponent(-1); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - it('does nothing if you are in the last component and go forward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToComponent }, - } = initStoriesAndSetState({ - store, - navigate, + const initialState = { + path: '/story/custom-id--1', storyId: 'custom-id--1', viewMode: 'story', - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToComponent(1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToComponent(1); expect(navigate).not.toHaveBeenCalled(); }); - it('does nothing if you are at the first component and go backward', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { setIndex, jumpToComponent }, - } = initStoriesAndSetState({ - store, - navigate, - storyId: 'a--2', - viewMode: 'story', - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--2', storyId: 'a--2', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - jumpToComponent(-1); + api.setIndex({ v: 4, entries: navigationEntries }); + api.jumpToComponent(-1); expect(navigate).not.toHaveBeenCalled(); }); }); - describe('selectStory', () => { it('navigates', () => { - const navigate = jest.fn(); - const store = createMockStore({ storyId: 'a--1', viewMode: 'story' }); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); - - selectStory('a--2'); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('a--2'); expect(navigate).toHaveBeenCalledWith('/story/a--2'); }); - it('sets view mode to docs if doc-level component is selected', () => { - const navigate = jest.fn(); - const store = createMockStore({ storyId: 'a--1', viewMode: 'docs' }); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ + const initialState = { path: '/docs/a--1', storyId: 'a--1', viewMode: 'docs' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: { ...navigationEntries, @@ -1215,194 +892,129 @@ describe('stories API', () => { }, }, }); - - selectStory('intro'); + api.selectStory('intro'); expect(navigate).toHaveBeenCalledWith('/docs/intro--docs'); }); - - describe('legacy api', () => { + describe('deprecated api', () => { it('allows navigating to a combination of title + name', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); - - selectStory('a', '2'); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('a', '2'); expect(navigate).toHaveBeenCalledWith('/story/a--2'); }); - it('allows navigating to a given name (in the current component)', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); - - selectStory(undefined, '2'); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory(undefined, '2'); expect(navigate).toHaveBeenCalledWith('/story/a--2'); }); }); - it('allows navigating away from the settings pages', () => { - const navigate = jest.fn(); - const store = createMockStore({ storyId: 'a--1', viewMode: 'settings' }); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); - - selectStory('a--2'); + const initialState = { path: '/settings/a--1', storyId: 'a--1', viewMode: 'settings' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; + + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('a--2'); expect(navigate).toHaveBeenCalledWith('/story/a--2'); }); - it('allows navigating to first story in component on call by component id', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('a'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('a'); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - it('allows navigating to first story in group on call by group id', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('b'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('b'); expect(navigate).toHaveBeenCalledWith('/story/b-c--1'); }); - it('allows navigating to first story in component on call by title', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--1', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('A'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('A'); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - it('allows navigating to the first story of the current component if passed nothing', () => { - const navigate = jest.fn(); - const store = createMockStore(); - const { - api: { setIndex, selectStory }, - } = initStoriesAndSetState({ - store, - storyId: 'a--2', - viewMode: 'story', - navigate, - provider, - } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory(); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory(); expect(navigate).toHaveBeenCalledWith('/story/a--1'); }); - describe('component permalinks', () => { it('allows navigating to kind/storyname (legacy api)', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { selectStory, setIndex }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('b/e', '1'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('b/e', '1'); expect(navigate).toHaveBeenCalledWith('/story/custom-id--1'); }); - it('allows navigating to component permalink/storyname (legacy api)', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { selectStory, setIndex }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('custom-id', '1'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('custom-id', '1'); expect(navigate).toHaveBeenCalledWith('/story/custom-id--1'); }); - it('allows navigating to first story in kind on call by kind', () => { - const navigate = jest.fn(); - const store = createMockStore(); - - const { - api: { selectStory, setIndex }, - } = initStoriesAndSetState({ store, navigate, provider } as any); - setIndex({ v: 4, entries: navigationEntries }); + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { navigate } = moduleArgs; - selectStory('b/e'); + api.setIndex({ v: 4, entries: navigationEntries }); + api.selectStory('b/e'); expect(navigate).toHaveBeenCalledWith('/story/custom-id--1'); }); }); }); - describe('STORY_PREPARED', () => { it('prepares the story', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { - setStories: jest.fn(), - setOptions: jest.fn(), - }); + const fullAPI = { setOptions: jest.fn() }; + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState, fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + api.setIndex({ v: 4, entries: mockEntries }); - await init(); - fullAPI.emit(STORY_PREPARED, { + provider.channel.emit(STORY_PREPARED, { id: 'component-a--story-1', parameters: { a: 'b' }, args: { c: 'd' }, }); - const { index } = store.getState(); expect(index['component-a--story-1']).toMatchObject({ type: 'story', @@ -1415,54 +1027,42 @@ describe('stories API', () => { args: { c: 'd' }, }); }); - it('sets options the first time it is called', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { - setStories: jest.fn(), - setOptions: jest.fn(), - }); + const fullAPI = { setOptions: jest.fn() }; + const initialState = { path: '/story/a--1', storyId: 'a--1', viewMode: 'story' }; + const moduleArgs = createMockModuleArgs({ initialState, fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + api.setIndex({ v: 4, entries: mockEntries }); - await init(); - fullAPI.emit(STORY_PREPARED, { + provider.channel.emit(STORY_PREPARED, { id: 'component-a--story-1', parameters: { options: 'options' }, }); - expect(fullAPI.setOptions).toHaveBeenCalledWith('options'); fullAPI.setOptions.mockClear(); - fullAPI.emit(STORY_PREPARED, { + + provider.channel.emit(STORY_PREPARED, { id: 'component-a--story-1', parameters: { options: 'options2' }, }); - expect(fullAPI.setOptions).not.toHaveBeenCalled(); }); }); - describe('DOCS_PREPARED', () => { it('prepares the docs entry', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), { - setStories: jest.fn(), - setOptions: jest.fn(), - }); + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + api.setIndex({ v: 4, entries: mockEntries }); - await init(); - fullAPI.emit(DOCS_PREPARED, { + provider.channel.emit(DOCS_PREPARED, { id: 'component-a--docs', parameters: { a: 'b' }, }); - const { index } = store.getState(); expect(index['component-a--docs']).toMatchObject({ type: 'docs', @@ -1475,100 +1075,75 @@ describe('stories API', () => { }); }); }); - describe('CONFIG_ERROR', () => { it('sets previewInitialized to true, local', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), {}); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - await init(); - - fullAPI.emit(CONFIG_ERROR, { message: 'Failed to run configure' }); + api.setIndex({ v: 4, entries: mockEntries }); + provider.channel.emit(CONFIG_ERROR, { message: 'Failed to run configure' }); const { previewInitialized } = store.getState(); expect(previewInitialized).toBe(true); }); - it('sets previewInitialized to true, ref', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { updateRef: jest.fn() }); - const store = createMockStore(); - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - Object.assign(fullAPI, api); + api.setIndex({ v: 4, entries: mockEntries }); - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'refId', stories: { 'a--1': { args: { a: 'b' } } } }, } as any); - await init(); - fullAPI.emit(CONFIG_ERROR, { message: 'Failed to run configure' }); - + provider.channel.emit(CONFIG_ERROR, { message: 'Failed to run configure' }); expect(fullAPI.updateRef.mock.calls.length).toBe(1); expect(fullAPI.updateRef.mock.calls[0][1]).toEqual({ previewInitialized: true, }); }); }); - describe('STORY_MISSING', () => { it('sets previewInitialized to true, local', async () => { - const navigate = jest.fn(); - const store = createMockStore(); - const fullAPI = Object.assign(new EventEmitter(), {}); - - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api); - - await init(); - - fullAPI.emit(STORY_MISSING, { message: 'Failed to run configure' }); + const moduleArgs = createMockModuleArgs({}); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; + provider.channel.emit(STORY_MISSING, { message: 'Failed to run configure' }); const { previewInitialized } = store.getState(); expect(previewInitialized).toBe(true); }); - it('sets previewInitialized to true, ref', async () => { - const navigate = jest.fn(); - const fullAPI = Object.assign(new EventEmitter(), { updateRef: jest.fn() }); - const store = createMockStore(); - const { api, init } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const fullAPI = { updateRef: jest.fn() }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider } = moduleArgs; - Object.assign(fullAPI, api); - - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'refId', stories: { 'a--1': { args: { a: 'b' } } } }, } as any); - await init(); - fullAPI.emit(STORY_MISSING, { message: 'Failed to run configure' }); - + provider.channel.emit(STORY_MISSING, { message: 'Failed to run configure' }); expect(fullAPI.updateRef.mock.calls.length).toBe(1); expect(fullAPI.updateRef.mock.calls[0][1]).toEqual({ previewInitialized: true, }); }); }); - describe('v2 SET_STORIES event', () => { it('normalizes parameters and calls setRef for external stories', () => { - const fullAPI = Object.assign(new EventEmitter()); - const navigate = jest.fn(); - const store = createMockStore(); - - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api, { - setIndex: jest.fn(), + const fullAPI = { findRef: jest.fn(), setRef: jest.fn(), - }); - init(); + }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'ref' }, } as any); @@ -1578,9 +1153,8 @@ describe('stories API', () => { kindParameters: { a: { kind: 'kind' } }, stories: { 'a--1': { kind: 'a', parameters: { story: 'story' } } }, }; - fullAPI.emit(SET_STORIES, setStoriesPayload); - - expect(fullAPI.setIndex).not.toHaveBeenCalled(); + provider.channel.emit(SET_STORIES, setStoriesPayload); + expect(store.getState().index).toBeUndefined(); expect(fullAPI.setRef).toHaveBeenCalledWith( 'ref', { @@ -1595,28 +1169,23 @@ describe('stories API', () => { }); describe('legacy (v1) SET_STORIES event', () => { it('calls setRef with stories', () => { - const fullAPI = Object.assign(new EventEmitter()); - const navigate = jest.fn(); - const store = createMockStore(); - - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); - Object.assign(fullAPI, api, { - setIndex: jest.fn(), + const fullAPI = { findRef: jest.fn(), setRef: jest.fn(), - }); - init(); + }; + const moduleArgs = createMockModuleArgs({ fullAPI }); + initStories(moduleArgs as unknown as ModuleArgs); + const { provider, store } = moduleArgs; - getEventMetadataMock.mockReturnValueOnce({ + getEventMetadata.mockReturnValueOnce({ sourceType: 'external', ref: { id: 'ref' }, } as any); const setStoriesPayload = { stories: { 'a--1': {} }, }; - fullAPI.emit(SET_STORIES, setStoriesPayload); - - expect(fullAPI.setIndex).not.toHaveBeenCalled(); + provider.channel.emit(SET_STORIES, setStoriesPayload); + expect(store.getState().index).toBeUndefined(); expect(fullAPI.setRef).toHaveBeenCalledWith( 'ref', { @@ -1629,4 +1198,296 @@ describe('stories API', () => { ); }); }); + describe('experimental_updateStatus', () => { + it('is included in the initial state', () => { + const moduleArgs = createMockModuleArgs({}); + const { state } = initStories(moduleArgs as unknown as ModuleArgs); + + expect(state).toEqual( + expect.objectContaining({ + status: {}, + }) + ); + }); + it('updates a story', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: mockEntries }); + + await expect( + api.experimental_updateStatus('a-addon-id', { + 'a-story-id': { + status: 'pending', + title: 'an addon title', + description: 'an addon description', + }, + }) + ).resolves.not.toThrow(); + expect(store.getState().status).toMatchInlineSnapshot(` + Object { + "a-story-id": Object { + "a-addon-id": Object { + "description": "an addon description", + "status": "pending", + "title": "an addon title", + }, + }, + } + `); + }); + it('updates multiple stories', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: mockEntries }); + + await expect( + api.experimental_updateStatus('a-addon-id', { + 'a-story-id': { + status: 'pending', + title: 'an addon title', + description: 'an addon description', + }, + 'another-story-id': { status: 'success', title: 'a addon title', description: '' }, + }) + ).resolves.not.toThrow(); + expect(store.getState().status).toMatchInlineSnapshot(` + Object { + "a-story-id": Object { + "a-addon-id": Object { + "description": "an addon description", + "status": "pending", + "title": "an addon title", + }, + }, + "another-story-id": Object { + "a-addon-id": Object { + "description": "", + "status": "success", + "title": "a addon title", + }, + }, + } + `); + }); + }); + describe('experimental_setFilter', () => { + it('is included in the initial state', async () => { + const moduleArgs = createMockModuleArgs({}); + const { state, api } = initStories(moduleArgs as unknown as ModuleArgs); + + await api.setIndex({ v: 4, entries: mockEntries }); + + expect(state).toEqual( + expect.objectContaining({ + filters: {}, + }) + ); + }); + it('updates state', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: mockEntries }); + + api.experimental_setFilter('myCustomFilter', () => true); + + expect(store.getState()).toEqual( + expect.objectContaining({ + filters: { + myCustomFilter: expect.any(Function), + }, + }) + ); + }); + + it('can filter', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: navigationEntries }); + await api.experimental_setFilter('myCustomFilter', (item) => item.id.startsWith('a')); + + const { index } = store.getState(); + + expect(index).toMatchInlineSnapshot(` + Object { + "a": Object { + "children": Array [ + "a--1", + "a--2", + ], + "depth": 0, + "id": "a", + "isComponent": true, + "isLeaf": false, + "isRoot": false, + "name": "a", + "parent": undefined, + "renderLabel": undefined, + "type": "component", + }, + "a--1": Object { + "depth": 1, + "id": "a--1", + "importPath": "./a.ts", + "isComponent": false, + "isLeaf": true, + "isRoot": false, + "kind": "a", + "name": "1", + "parent": "a", + "prepared": false, + "renderLabel": undefined, + "title": "a", + "type": "story", + }, + "a--2": Object { + "depth": 1, + "id": "a--2", + "importPath": "./a.ts", + "isComponent": false, + "isLeaf": true, + "isRoot": false, + "kind": "a", + "name": "2", + "parent": "a", + "prepared": false, + "renderLabel": undefined, + "title": "a", + "type": "story", + }, + } + `); + }); + + it('can filter on status', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: navigationEntries }); + await api.experimental_setFilter( + 'myCustomFilter', + (item) => + item.status !== undefined && + Object.values(item.status).some((v) => v.status === 'pending') + ); + + // empty, because there are no stories with status + expect(store.getState().index).toMatchInlineSnapshot(`Object {}`); + + // setting status should update the index + await api.experimental_updateStatus('a-addon-id', { + 'a--1': { + status: 'pending', + title: 'an addon title', + description: 'an addon description', + }, + 'a--2': { status: 'success', title: 'a addon title', description: '' }, + }); + + expect(store.getState().index).toMatchInlineSnapshot(` + Object { + "a": Object { + "children": Array [ + "a--1", + ], + "depth": 0, + "id": "a", + "isComponent": true, + "isLeaf": false, + "isRoot": false, + "name": "a", + "parent": undefined, + "renderLabel": undefined, + "type": "component", + }, + "a--1": Object { + "depth": 1, + "id": "a--1", + "importPath": "./a.ts", + "isComponent": false, + "isLeaf": true, + "isRoot": false, + "kind": "a", + "name": "1", + "parent": "a", + "prepared": false, + "renderLabel": undefined, + "title": "a", + "type": "story", + }, + } + `); + }); + + it('persists filter when index is updated', async () => { + const moduleArgs = createMockModuleArgs({}); + const { api } = initStories(moduleArgs as unknown as ModuleArgs); + const { store } = moduleArgs; + + await api.setIndex({ v: 4, entries: navigationEntries }); + await api.experimental_setFilter('myCustomFilter', (item) => item.id.startsWith('a')); + + await api.setIndex({ v: 4, entries: navigationEntries }); + + const { index } = store.getState(); + + expect(index).toMatchInlineSnapshot(` + Object { + "a": Object { + "children": Array [ + "a--1", + "a--2", + ], + "depth": 0, + "id": "a", + "isComponent": true, + "isLeaf": false, + "isRoot": false, + "name": "a", + "parent": undefined, + "renderLabel": undefined, + "type": "component", + }, + "a--1": Object { + "depth": 1, + "id": "a--1", + "importPath": "./a.ts", + "isComponent": false, + "isLeaf": true, + "isRoot": false, + "kind": "a", + "name": "1", + "parent": "a", + "prepared": false, + "renderLabel": undefined, + "title": "a", + "type": "story", + }, + "a--2": Object { + "depth": 1, + "id": "a--2", + "importPath": "./a.ts", + "isComponent": false, + "isLeaf": true, + "isRoot": false, + "kind": "a", + "name": "2", + "parent": "a", + "prepared": false, + "renderLabel": undefined, + "title": "a", + "type": "story", + }, + } + `); + }); + }); }); diff --git a/code/lib/manager-api/src/tests/url.test.js b/code/lib/manager-api/src/tests/url.test.js index 6f4362d27bda..33cf4a1872c1 100644 --- a/code/lib/manager-api/src/tests/url.test.js +++ b/code/lib/manager-api/src/tests/url.test.js @@ -2,6 +2,7 @@ import qs from 'qs'; import { SET_CURRENT_STORY, GLOBALS_UPDATED, UPDATE_QUERY_PARAMS } from '@storybook/core-events'; +import EventEmitter from 'events'; import { init as initURL } from '../modules/url'; jest.mock('@storybook/client-logger'); @@ -17,7 +18,7 @@ describe('initial state', () => { const { state: { layout }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(layout).toEqual({ isFullscreen: true }); }); @@ -28,7 +29,7 @@ describe('initial state', () => { const { state: { layout }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(layout).toEqual({ showNav: false }); }); @@ -39,7 +40,7 @@ describe('initial state', () => { const { state: { ui }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(ui).toEqual({ enableShortcuts: false }); }); @@ -50,7 +51,7 @@ describe('initial state', () => { const { state: { layout }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(layout).toEqual({ panelPosition: 'bottom' }); }); @@ -61,7 +62,7 @@ describe('initial state', () => { const { state: { layout }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(layout).toEqual({ panelPosition: 'right' }); }); @@ -72,7 +73,7 @@ describe('initial state', () => { const { state: { layout }, - } = initURL({ navigate, state: { location } }); + } = initURL({ navigate, state: { location }, provider: { channel: new EventEmitter() } }); expect(layout).toEqual({ showPanel: false }); }); @@ -88,18 +89,23 @@ describe('queryParams', () => { }, getState: () => state, }; - const fullAPI = { emit: jest.fn() }; + const channel = new EventEmitter(); const { api } = initURL({ state: { location: { search: '' } }, navigate: jest.fn(), store, - fullAPI, + provider: { channel }, }); + const listener = jest.fn(); + + channel.on(UPDATE_QUERY_PARAMS, listener); + api.setQueryParams({ foo: 'bar' }); expect(api.getQueryParam('foo')).toEqual('bar'); - expect(fullAPI.emit).toHaveBeenCalledWith(UPDATE_QUERY_PARAMS, { foo: 'bar' }); + + expect(listener).toHaveBeenCalledWith({ foo: 'bar' }); }); }); @@ -120,14 +126,6 @@ describe('initModule', () => { }); const fullAPI = { - callbacks: {}, - on(event, fn) { - this.callbacks[event] = this.callbacks[event] || []; - this.callbacks[event].push(fn); - }, - emit(event, ...args) { - this.callbacks[event]?.forEach((cb) => cb(...args)); - }, showReleaseNotesOnLaunch: jest.fn(), }; @@ -140,19 +138,22 @@ describe('initModule', () => { store.setState(storyState('test--story')); const navigate = jest.fn(); - - const { api, init } = initURL({ store, state: { location: {} }, navigate, fullAPI }); - Object.assign(fullAPI, api, { - getCurrentStoryData: () => ({ - type: 'story', - args: { a: 1, b: 2 }, - initialArgs: { a: 1, b: 1 }, - isLeaf: true, + const channel = new EventEmitter(); + initURL({ + store, + provider: { channel }, + state: { location: {} }, + navigate, + fullAPI: Object.assign(fullAPI, { + getCurrentStoryData: () => ({ + type: 'story', + args: { a: 1, b: 2 }, + initialArgs: { a: 1, b: 1 }, + isLeaf: true, + }), }), }); - init(); - - fullAPI.emit(SET_CURRENT_STORY); + channel.emit(SET_CURRENT_STORY); expect(navigate).toHaveBeenCalledWith( '/story/test--story&args=b:2', expect.objectContaining({ replace: true }) @@ -164,12 +165,10 @@ describe('initModule', () => { store.setState(storyState('test--story')); const navigate = jest.fn(); + const channel = new EventEmitter(); + initURL({ store, provider: { channel }, state: { location: {} }, navigate, fullAPI }); - const { api, init } = initURL({ store, state: { location: {} }, navigate, fullAPI }); - Object.assign(fullAPI, api); - init(); - - fullAPI.emit(GLOBALS_UPDATED, { globals: { a: 2 }, initialGlobals: { a: 1, b: 1 } }); + channel.emit(GLOBALS_UPDATED, { globals: { a: 2 }, initialGlobals: { a: 1, b: 1 } }); expect(navigate).toHaveBeenCalledWith( '/story/test--story&globals=a:2;b:!undefined', expect.objectContaining({ replace: true }) @@ -180,32 +179,27 @@ describe('initModule', () => { it('adds url params alphabetically', async () => { store.setState({ ...storyState('test--story'), customQueryParams: { full: 1 } }); const navigate = jest.fn(); - - const { api, init } = initURL({ store, state: { location: {} }, navigate, fullAPI }); - Object.assign(fullAPI, api, { - getCurrentStoryData: () => ({ type: 'story', args: { a: 1 }, isLeaf: true }), + const channel = new EventEmitter(); + const { api } = initURL({ + store, + provider: { channel }, + state: { location: {} }, + navigate, + fullAPI: Object.assign(fullAPI, { + getCurrentStoryData: () => ({ type: 'story', args: { a: 1 }, isLeaf: true }), + }), }); - init(); - fullAPI.emit(GLOBALS_UPDATED, { globals: { g: 2 } }); + channel.emit(GLOBALS_UPDATED, { globals: { g: 2 } }); expect(navigate).toHaveBeenCalledWith( '/story/test--story&full=1&globals=g:2', expect.objectContaining({ replace: true }) ); - fullAPI.emit(SET_CURRENT_STORY); + channel.emit(SET_CURRENT_STORY); expect(navigate).toHaveBeenCalledWith( '/story/test--story&args=a:1&full=1&globals=g:2', expect.objectContaining({ replace: true }) ); }); - - it('navigates to release notes when needed', () => { - fullAPI.showReleaseNotesOnLaunch.mockReturnValueOnce(true); - - const navigate = jest.fn(); - initURL({ store, state: { location: {} }, navigate, fullAPI }).init(); - - expect(navigate).toHaveBeenCalledWith('/settings/release-notes'); - }); }); diff --git a/code/lib/manager-api/src/tests/versions.test.js b/code/lib/manager-api/src/tests/versions.test.js index d92809ab65a1..004221a3d076 100644 --- a/code/lib/manager-api/src/tests/versions.test.js +++ b/code/lib/manager-api/src/tests/versions.test.js @@ -70,7 +70,6 @@ describe('versions API', () => { const store = createMockStore(); const { state: initialState, init } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); store.setState(initialState); store.setState.mockReset(); @@ -86,102 +85,6 @@ describe('versions API', () => { }); }); - describe('notifications', () => { - it('sets an update notification right away in the init function', async () => { - const store = createMockStore(); - const addNotification = jest.fn(); - const { init, state: initialState } = initVersions({ - store, - fullAPI: { addNotification }, - }); - store.setState(initialState); - - await init(); - expect(addNotification).toHaveBeenCalled(); - }); - - it('does not set an update notification if it has been dismissed', async () => { - const store = createMockStore(); - store.setState({ dismissedVersionNotification: '5.2.3' }); - const { - init, - api, - state: initialState, - } = initVersions({ - store, - fullAPI: { addNotification: jest.fn() }, - }); - store.setState(initialState); - - const addNotification = jest.fn(); - await init(); - expect(addNotification).not.toHaveBeenCalled(); - }); - - it('does not set an update notification if the latest version is a patch', async () => { - const store = createMockStore(); - const { - init, - api, - state: initialState, - } = initVersions({ - store, - fullAPI: { addNotification: jest.fn() }, - }); - store.setState({ - ...initialState, - versions: { ...initialState.versions, current: { version: '5.2.1' } }, - }); - - const addNotification = jest.fn(); - await init(); - expect(addNotification).not.toHaveBeenCalled(); - }); - - it('does not set an update notification in production mode', async () => { - const store = createMockStore(); - const { - init, - api, - state: initialState, - } = initVersions({ - store, - fullAPI: { addNotification: jest.fn() }, - }); - store.setState(initialState); - - const addNotification = jest.fn(); - await init(); - expect(addNotification).not.toHaveBeenCalled(); - }); - - it('persists a dismissed notification', async () => { - const store = createMockStore(); - let notification; - const addNotification = jest.fn().mockImplementation((n) => { - notification = n; - }); - - const { - init, - api, - state: initialState, - } = initVersions({ - store, - fullAPI: { addNotification }, - }); - store.setState(initialState); - - await init(); - - notification.onClear(); - expect(store.setState).toHaveBeenCalledWith( - { dismissedVersionNotification: '5.2.3' }, - { persistence: 'permanent' } - ); - }); - }); - it('getCurrentVersion works', async () => { const store = createMockStore(); const { @@ -190,7 +93,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); store.setState(initialState); @@ -209,7 +111,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); store.setState(initialState); @@ -229,7 +130,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); store.setState({ ...initialState, @@ -253,7 +153,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); store.setState({ ...initialState, @@ -277,7 +176,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); await init(); @@ -302,7 +200,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); await init(); @@ -327,7 +224,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); await init(); @@ -346,14 +242,7 @@ describe('versions API', () => { it('from older prerelease version', async () => { const store = createMockStore(); - const { - init, - api, - state: initialState, - } = initVersions({ - store, - fullAPI: { addNotification: jest.fn() }, - }); + const { init, api, state: initialState } = initVersions({ store }); await init(); @@ -377,7 +266,6 @@ describe('versions API', () => { state: initialState, } = initVersions({ store, - fullAPI: { addNotification: jest.fn() }, }); await init(); diff --git a/code/lib/manager-api/src/typings.d.ts b/code/lib/manager-api/src/typings.d.ts index 6b9d1aed3768..1d0d8d33ff0e 100644 --- a/code/lib/manager-api/src/typings.d.ts +++ b/code/lib/manager-api/src/typings.d.ts @@ -1,14 +1,8 @@ /* eslint-disable no-underscore-dangle, @typescript-eslint/naming-convention */ -declare var RELEASE_NOTES_DATA: any; declare var __STORYBOOK_ADDONS_MANAGER: any; -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; - +declare var CONFIG_TYPE: string; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var REFS: any; declare var VERSIONCHECK: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index d8e64565391e..71da909fc64e 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '7.1.0-alpha.17'; +export const version = '7.4.0-alpha.2'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 658b16e75177..52efe3cbde65 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -24,32 +24,29 @@ ".": { "types": "./dist/index.d.ts", "node": "./dist/index.js", - "require": "./dist/index.js", - "import": "./dist/index.mjs" + "require": "./dist/index.js" }, "./package.json": "./package.json" }, "main": "dist/index.js", - "module": "dist/index.mjs", "types": "dist/index.d.ts", "files": [ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, - "dependencies": { + "devDependencies": { "@types/npmlog": "^4.1.2", + "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", "npmlog": "^5.0.1", - "pretty-hrtime": "^1.0.3" - }, - "devDependencies": { - "@types/pretty-hrtime": "^1.0.0", + "pretty-hrtime": "^1.0.3", "typescript": "~4.9.3" }, "publishConfig": { @@ -58,7 +55,10 @@ "bundler": { "entries": [ "./src/index.ts" + ], + "formats": [ + "cjs" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/node-logger/src/index.test.ts b/code/lib/node-logger/src/index.test.ts index 40188dbc8ceb..3cda41501ed0 100644 --- a/code/lib/node-logger/src/index.test.ts +++ b/code/lib/node-logger/src/index.test.ts @@ -1,12 +1,28 @@ -import { info, warn, error } from 'npmlog'; +import { info, warn } from 'npmlog'; import { logger } from '.'; +globalThis.console = { log: jest.fn() } as any; + jest.mock('npmlog', () => ({ info: jest.fn(), warn: jest.fn(), error: jest.fn(), + levels: { + silly: -Infinity, + verbose: 1000, + info: 2000, + timing: 2500, + http: 3000, + notice: 3500, + warn: 4000, + error: 5000, + silent: Infinity, + }, + level: 'info', })); +// + describe('node-logger', () => { it('should have an info method', () => { const message = 'information'; @@ -21,6 +37,13 @@ describe('node-logger', () => { it('should have an error method', () => { const message = 'error message'; logger.error(message); - expect(error).toHaveBeenCalledWith('', message); + expect(globalThis.console.log).toHaveBeenCalledWith(expect.stringMatching('message')); + }); + it('should format errors', () => { + const message = new Error('A complete disaster'); + logger.error(message); + expect(globalThis.console.log).toHaveBeenCalledWith( + expect.stringMatching('A complete disaster') + ); }); }); diff --git a/code/lib/node-logger/src/index.ts b/code/lib/node-logger/src/index.ts index 4cade02d29b1..4ca3550cfba2 100644 --- a/code/lib/node-logger/src/index.ts +++ b/code/lib/node-logger/src/index.ts @@ -25,12 +25,28 @@ export const logger = { plain: (message: string): void => console.log(message), line: (count = 1): void => console.log(`${Array(count - 1).fill('\n')}`), warn: (message: string): void => npmLog.warn('', message), - error: (message: string): void => npmLog.error('', message), trace: ({ message, time }: { message: string; time: [number, number] }): void => npmLog.info('', `${message} (${colors.purple(prettyTime(time))})`), setLevel: (level = 'info'): void => { npmLog.level = level; }, + error: (message: Error | string): void => { + if (npmLog.levels[npmLog.level] < npmLog.levels.error) { + let msg: string; + + if (message instanceof Error && message.stack) { + msg = message.stack.toString(); + } else { + msg = message.toString(); + } + + console.log( + msg + .replace(message.toString(), chalk.red(message.toString())) + .replaceAll(process.cwd(), '.') + ); + } + }, }; export { npmLog as instance }; diff --git a/code/lib/postinstall/package.json b/code/lib/postinstall/package.json index 056a4676adcd..073d6aa3e82a 100644 --- a/code/lib/postinstall/package.json +++ b/code/lib/postinstall/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/postinstall", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook addons postinstall utilities", "keywords": [ "api", @@ -37,15 +37,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { "jest": "^29.3.1", - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", "jscodeshift": "^0.14.0", "typescript": "~4.9.3" }, @@ -57,5 +58,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/preview-api/README-core-client.md b/code/lib/preview-api/README-core-client.md index e7a5c89882c8..c77706dc0cae 100644 --- a/code/lib/preview-api/README-core-client.md +++ b/code/lib/preview-api/README-core-client.md @@ -11,4 +11,4 @@ A framework calls the `start(renderToCanvas, { render, decorateStory })` functio The `start` function will return a `configure()` function, which can be re-exported to be used in `preview.js` (deprecated), or automatically by the `main.js:stories` field to: - return a list of CSF files -- [deprecated] make calls to the `storiesOf` API. +- `deprecated` make calls to the `storiesOf` API. diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 6f4a3d027346..da9d2d75578a 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -60,20 +60,20 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/types": "workspace:*", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -84,8 +84,8 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@jest/globals": "^26.6.2", - "@storybook/core-common": "7.1.0-alpha.17", + "@jest/globals": "^29.5.0", + "@storybook/core-common": "workspace:*", "ansi-to-html": "^0.6.11", "react": "^16.14.0", "slash": "^5.0.0" @@ -103,5 +103,5 @@ "./src/store.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/preview-api/src/modules/addons/hooks.ts b/code/lib/preview-api/src/modules/addons/hooks.ts index e695938a444d..e7a747d571f1 100644 --- a/code/lib/preview-api/src/modules/addons/hooks.ts +++ b/code/lib/preview-api/src/modules/addons/hooks.ts @@ -70,7 +70,7 @@ export class HooksContext init() { this.hookListsMap = new WeakMap(); this.mountedDecorators = new Set(); - this.prevMountedDecorators = this.mountedDecorators; + this.prevMountedDecorators = new Set(); this.currentHooks = []; this.nextHookIndex = 0; this.currentPhase = 'NONE'; @@ -191,7 +191,7 @@ export const applyHooks = ); return (context) => { const { hooks } = context as { hooks: HooksContext }; - hooks.prevMountedDecorators = hooks.mountedDecorators; + hooks.prevMountedDecorators ??= new Set(); hooks.mountedDecorators = new Set([storyFn, ...decorators]); hooks.currentContext = context; hooks.hasUpdates = false; @@ -299,11 +299,36 @@ function useMemoLike(name: string, nextCreate: () => T, deps: any[] | undefin return memoizedState; } -/* Returns a memoized value, see https://reactjs.org/docs/hooks-reference.html#usememo */ +/** + * Returns a memoized value. + * @template T The type of the memoized value. + * @param {() => T} nextCreate A function that returns the memoized value. + * @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the memoized value will be recomputed. + * @returns {T} The memoized value. + * @example + * const memoizedValue = useMemo(() => { + * return doExpensiveCalculation(a, b); + * }, [a, b]); + */ export function useMemo(nextCreate: () => T, deps?: any[]): T { return useMemoLike('useMemo', nextCreate, deps); } +/** Returns a memoized callback. + * + * @template T The type of the callback function. + * @param {T} callback The callback function to memoize. + * @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the memoized callback will be recomputed. + * @returns {T} The memoized callback. + * + * @example + * const memoizedCallback = useCallback( + * () => { + * doSomething(a, b); + * }, + * [a, b], + * ); + */ /* Returns a memoized callback, see https://reactjs.org/docs/hooks-reference.html#usecallback */ export function useCallback(callback: T, deps?: any[]): T { return useMemoLike('useCallback', () => callback, deps); @@ -313,6 +338,17 @@ function useRefLike(name: string, initialValue: T): { current: T } { return useMemoLike(name, () => ({ current: initialValue }), []); } +/** + * Returns a mutable ref object. + * + * @template T The type of the ref object. + * @param {T} initialValue The initial value of the ref object. + * @returns {{ current: T }} The mutable ref object. + * + * @example + * const ref = useRef(0); + * ref.current = 1; + */ /* Returns a mutable ref object, see https://reactjs.org/docs/hooks-reference.html#useref */ export function useRef(initialValue: T): { current: T } { return useRefLike('useRef', initialValue); @@ -349,14 +385,58 @@ function useStateLike( return [stateRef.current, setState]; } -/* Returns a stateful value, and a function to update it, see https://reactjs.org/docs/hooks-reference.html#usestate */ +/** + * Returns a stateful value and a function to update it. + * + * @template S The type of the state. + * @param {(() => S) | S} initialState The initial state value or a function that returns the initial state value. + * @returns {[S, (update: ((prevState: S) => S) | S) => void]} An array containing the current state value and a function to update it. + * + * @example + * const [count, setCount] = useState(0); + * setCount(count + 1); + */ export function useState( initialState: (() => S) | S ): [S, (update: ((prevState: S) => S) | S) => void] { return useStateLike('useState', initialState); } -/* A redux-like alternative to useState, see https://reactjs.org/docs/hooks-reference.html#usereducer */ +/** + * A redux-like alternative to useState. + * + * @template S The type of the state. + * @template A The type of the action. + * @param {(state: S, action: A) => S} reducer The reducer function that returns the new state. + * @param {S | I} initialArg The initial state value or the initial argument for the init function. + * @param {(initialArg: I) => S} [init] An optional function that returns the initial state value. + * @returns {[S, (action: A) => void]} An array containing the current state value and a function to dispatch actions. + * + * @example + * const initialState = { count: 0 }; + * + * function reducer(state, action) { + * switch (action.type) { + * case 'increment': + * return { count: state.count + 1 }; + * case 'decrement': + * return { count: state.count - 1 }; + * default: + * throw new Error(); + * } + * } + * + * function Counter() { + * const [state, dispatch] = useReducer(reducer, initialState); + * return ( + * <> + * Count: {state.count} + * + * + * + * ); + * } + */ export function useReducer( reducer: (state: S, action: A) => S, initialState: S @@ -377,10 +457,22 @@ export function useReducer( return [state, dispatch]; } -/* - Triggers a side effect, see https://reactjs.org/docs/hooks-reference.html#usestate - Effects are triggered synchronously after rendering the story -*/ +/** + * Triggers a side effect, see https://reactjs.org/docs/hooks-reference.html#usestate + * Effects are triggered synchronously after rendering the story + * + * @param {() => (() => void) | void} create A function that creates the effect. It should return a cleanup function, or nothing. + * @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the effect will be re-run. + * @returns {void} + * + * @example + * useEffect(() => { + * // Do something after rendering the story + * return () => { + * // Do something when the component unmounts or the effect is re-run + * }; + * }, [dependency1, dependency2]); + */ export function useEffect(create: () => (() => void) | void, deps?: any[]): void { const hooks = getHooksContextOrThrow(); const effect = useMemoLike('useEffect', () => ({ create }), deps); @@ -397,7 +489,18 @@ export interface EventMap { [eventId: string]: Listener; } -/* Accepts a map of Storybook channel event listeners, returns an emit function */ +/** + * Subscribes to events emitted by the Storybook channel and returns a function to emit events. + * + * @param {EventMap} eventMap A map of event listeners to subscribe to. + * @param {any[]} [deps=[]] An optional array of dependencies. If any of the dependencies change, the event listeners will be re-subscribed. + * @returns {(...args: any[]) => void} A function to emit events to the Storybook channel. + * + * @example + * // Subscribe to an event and emit it + * const emit = useChannel({ 'my-event': (arg1, arg2) => console.log(arg1, arg2) }); + * emit('my-event', 'Hello', 'world!'); + */ export function useChannel(eventMap: EventMap, deps: any[] = []) { const channel = addons.getChannel(); @@ -413,7 +516,18 @@ export function useChannel(eventMap: EventMap, deps: any[] = []) { return useCallback(channel.emit.bind(channel), [channel]); } -/* Returns current story context */ +/** + * Returns the current story context, including the story's ID, parameters, and other metadata. + * + * @template TRenderer The type of the story's renderer. + * @template TArgs The type of the story's args. + * @returns {StoryContext} The current story context. + * + * @example + * const { id, parameters } = useStoryContext(); + * console.log(`Current story ID: ${id}`); + * console.log(`Current story parameters: ${JSON.stringify(parameters)}`); + */ export function useStoryContext< TRenderer extends Renderer, TArgs extends Args = Args @@ -426,7 +540,19 @@ export function useStoryContext< return currentContext; } -/* Returns current value of a story parameter */ +/** + * Returns the value of a specific parameter for the current story, or a default value if the parameter is not set. + * + * @template S The type of the parameter value. + * @param {string} parameterKey The key of the parameter to retrieve. + * @param {S} [defaultValue] An optional default value to return if the parameter is not set. + * @returns {S | undefined} The value of the parameter, or the default value if the parameter is not set. + * + * @example + * // Retrieve the value of a parameter named "myParam" + * const myParamValue = useParameter('myParam', 'default value'); + * console.log(`The value of myParam is: ${myParamValue}`); + */ export function useParameter(parameterKey: string, defaultValue?: S): S | undefined { const { parameters } = useStoryContext(); if (parameterKey) { @@ -435,7 +561,18 @@ export function useParameter(parameterKey: string, defaultValue?: S): S | und return undefined; } -/* Returns current value of story args */ +/** + * Returns the current args for the story, and functions to update and reset them. + * + * @template TArgs The type of the story's args. + * @returns {[TArgs, (newArgs: Partial) => void, (argNames?: (keyof TArgs)[]) => void]} An array containing the current args, a function to update them, and a function to reset them. + * + * @example + * const [args, updateArgs, resetArgs] = useArgs<{ name: string, age: number }>(); + * console.log(`Current args: ${JSON.stringify(args)}`); + * updateArgs({ name: 'John' }); + * resetArgs(['name']); + */ export function useArgs(): [ TArgs, (newArgs: Partial) => void, @@ -457,7 +594,16 @@ export function useArgs(): [ return [args as TArgs, updateArgs, resetArgs]; } -/* Returns current value of global args */ +/** + * Returns the current global args for the story, and a function to update them. + * + * @returns {[Args, (newGlobals: Args) => void]} An array containing the current global args, and a function to update them. + * + * @example + * const [globals, updateGlobals] = useGlobals(); + * console.log(`Current globals: ${JSON.stringify(globals)}`); + * updateGlobals({ theme: 'dark' }); + */ export function useGlobals(): [Args, (newGlobals: Args) => void] { const channel = addons.getChannel(); const { globals } = useStoryContext(); diff --git a/code/lib/preview-api/src/modules/addons/main.ts b/code/lib/preview-api/src/modules/addons/main.ts index dec90e0f2ab7..5b663fe0f435 100644 --- a/code/lib/preview-api/src/modules/addons/main.ts +++ b/code/lib/preview-api/src/modules/addons/main.ts @@ -12,6 +12,9 @@ export class AddonStore { private channel: Channel | undefined; + /** + * @deprecated will be removed in 8.0, please use channel instead + */ private serverChannel: Channel | undefined; private promise: any; @@ -29,6 +32,9 @@ export class AddonStore { return this.channel; }; + /** + * @deprecated will be removed in 8.0, please use getChannel instead + */ getServerChannel = (): Channel => { if (!this.serverChannel) { throw new Error('Accessing non-existent serverChannel'); @@ -41,6 +47,9 @@ export class AddonStore { hasChannel = (): boolean => !!this.channel; + /** + * @deprecated will be removed in 8.0, please use the normal channel instead + */ hasServerChannel = (): boolean => !!this.serverChannel; setChannel = (channel: Channel): void => { @@ -48,6 +57,9 @@ export class AddonStore { this.resolve(); }; + /** + * @deprecated will be removed in 8.0, please use the normal channel instead + */ setServerChannel = (channel: Channel): void => { this.serverChannel = channel; }; diff --git a/code/lib/preview-api/src/modules/addons/make-decorator.ts b/code/lib/preview-api/src/modules/addons/make-decorator.ts index 8735eeda006f..7dc23881fcae 100644 --- a/code/lib/preview-api/src/modules/addons/make-decorator.ts +++ b/code/lib/preview-api/src/modules/addons/make-decorator.ts @@ -9,6 +9,28 @@ export interface MakeDecoratorOptions { wrapper: Addon_StoryWrapper; } +/** + * Creates a Storybook decorator function that can be used to wrap stories with additional functionality. + * + * @param {MakeDecoratorOptions} options - The options for the decorator. + * @param {string} options.name - The name of the decorator. + * @param {string} options.parameterName - The name of the parameter that will be used to pass options to the decorator. + * @param {Addon_StoryWrapper} options.wrapper - The function that will be used to wrap the story. + * @param {boolean} [options.skipIfNoParametersOrOptions=false] - Whether to skip the decorator if no options or parameters are provided. + * @returns {MakeDecoratorResult} A function that can be used as a Storybook decorator. + * + * @example + * const myDecorator = makeDecorator({ + * name: 'My Decorator', + * parameterName: 'myDecorator', + * wrapper: (storyFn, context, { options }) => { + * const { myOption } = options; + * return
{storyFn()}
; + * }, + * }); + * + * export const decorators = [myDecorator]; + */ export const makeDecorator = ({ name, parameterName, diff --git a/code/lib/preview-api/src/modules/core-client/start.test.ts b/code/lib/preview-api/src/modules/core-client/start.test.ts index 21fe956a7ad2..b114e640f50a 100644 --- a/code/lib/preview-api/src/modules/core-client/start.test.ts +++ b/code/lib/preview-api/src/modules/core-client/start.test.ts @@ -37,7 +37,9 @@ jest.mock('@storybook/global', () => ({ // console.log(global); -jest.mock('@storybook/channel-postmessage', () => ({ createChannel: () => mockChannel })); +jest.mock('@storybook/channels', () => ({ + createBrowserChannel: () => mockChannel, +})); jest.mock('@storybook/client-logger'); jest.mock('react-dom'); diff --git a/code/lib/preview-api/src/modules/core-client/start.ts b/code/lib/preview-api/src/modules/core-client/start.ts index 8e6f1529fa77..f9c389f71e8f 100644 --- a/code/lib/preview-api/src/modules/core-client/start.ts +++ b/code/lib/preview-api/src/modules/core-client/start.ts @@ -1,7 +1,7 @@ /* eslint-disable no-underscore-dangle, @typescript-eslint/naming-convention */ import { global } from '@storybook/global'; import type { Renderer, ArgsStoryFn, Path, ProjectAnnotations } from '@storybook/types'; -import { createChannel } from '@storybook/channel-postmessage'; +import { createBrowserChannel } from '@storybook/channels'; import { FORCE_RE_RENDER } from '@storybook/core-events'; import { addons } from '../../addons'; import { PreviewWeb } from '../../preview-web'; @@ -17,26 +17,63 @@ const removedApi = (name: string) => () => { }; interface CoreClient_RendererImplementation { + /** + * A function that applies decorators to a story. + * @template TRenderer The type of renderer used by the Storybook client API. + * @type {ProjectAnnotations['applyDecorators']} + */ decorateStory?: ProjectAnnotations['applyDecorators']; + /** + * A function that renders a story with args. + * @template TRenderer The type of renderer used by the Storybook client API. + * @type {ArgsStoryFn} + */ render?: ArgsStoryFn; } interface CoreClient_ClientAPIFacade { - /* deprecated */ + /** + * The old way of adding stories at runtime. + * @deprecated This method is deprecated and will be removed in a future version. + */ storiesOf: (...args: any[]) => never; - /* deprecated */ + /** + * The old way of retrieving the list of stories at runtime. + * @deprecated This method is deprecated and will be removed in a future version. + */ raw: (...args: any[]) => never; } interface CoreClient_StartReturnValue { - /* deprecated */ + /** + * Forces a re-render of all stories in the Storybook preview. + * This function emits the `FORCE_RE_RENDER` event to the Storybook channel. + * @deprecated This method is deprecated and will be removed in a future version. + * @returns {void} + */ forceReRender: () => void; - /* deprecated */ + /** + * The old way of setting up storybook with runtime configuration. + * @deprecated This method is deprecated and will be removed in a future version. + * @returns {void} + */ configure: any; - /* deprecated */ + /** + * @deprecated This property is deprecated and will be removed in a future version. + * @type {ClientApi | CoreClient_ClientAPIFacade} + */ clientApi: ClientApi | CoreClient_ClientAPIFacade; } +/** + * Initializes the Storybook preview API. + * @template TRenderer The type of renderer used by the Storybook client API. + * @param {ProjectAnnotations['renderToCanvas']} renderToCanvas A function that renders a story to a canvas. + * @param {CoreClient_RendererImplementation} [options] Optional configuration options for the renderer implementation. + * @param {ProjectAnnotations['applyDecorators']} [options.decorateStory] A function that applies decorators to a story. + * @param {ArgsStoryFn} [options.render] A function that renders a story with arguments. + * @returns {CoreClient_StartReturnValue} An object containing functions and objects related to the Storybook preview API. + */ export function start( renderToCanvas: ProjectAnnotations['renderToCanvas'], { decorateStory, render }: CoreClient_RendererImplementation = {} @@ -57,7 +94,7 @@ export function start( }; } - const channel = createChannel({ page: 'preview' }); + const channel = createBrowserChannel({ page: 'preview' }); addons.setChannel(channel); const clientApi = global?.__STORYBOOK_CLIENT_API__ || new ClientApi(); diff --git a/code/lib/preview-api/src/modules/preview-web/Preview.tsx b/code/lib/preview-api/src/modules/preview-web/Preview.tsx index cde068b7b9dc..638cf8126b61 100644 --- a/code/lib/preview-api/src/modules/preview-web/Preview.tsx +++ b/code/lib/preview-api/src/modules/preview-web/Preview.tsx @@ -43,6 +43,9 @@ const STORY_INDEX_PATH = './index.json'; export type MaybePromise = Promise | T; export class Preview { + /** + * @deprecated will be removed in 8.0, please use channel instead + */ serverChannel?: Channel; storyStore: StoryStore; @@ -96,8 +99,7 @@ export class Preview { } setupListeners() { - this.serverChannel?.on(STORY_INDEX_INVALIDATED, this.onStoryIndexChanged.bind(this)); - + this.channel.on(STORY_INDEX_INVALIDATED, this.onStoryIndexChanged.bind(this)); this.channel.on(UPDATE_GLOBALS, this.onUpdateGlobals.bind(this)); this.channel.on(UPDATE_STORY_ARGS, this.onUpdateArgs.bind(this)); this.channel.on(RESET_STORY_ARGS, this.onResetArgs.bind(this)); diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.integration.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.integration.test.ts index 926f5a544733..805c5e7cb1b6 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.integration.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.integration.test.ts @@ -24,7 +24,10 @@ import { // - ie. from`renderToCanvas()` (stories) or`ReactDOM.render()` (docs) in. // This file lets them rip. -jest.mock('@storybook/channel-postmessage', () => ({ createChannel: () => mockChannel })); +jest.mock('@storybook/channels', () => ({ + ...jest.requireActual('@storybook/channels'), + createBrowserChannel: () => mockChannel, +})); jest.mock('@storybook/client-logger'); jest.mock('./WebView'); diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts index 1a0188c1e55e..41e735ebfddb 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts @@ -1601,27 +1601,62 @@ describe('PreviewWeb', () => { }); describe('if called before the preview is initialized', () => { - it('still renders the selected story, once ready', async () => { + it('works when there was no selection specifier', async () => { document.location.search = ''; // We intentionally are *not* awaiting here new PreviewWeb().initialize({ importFn, getProjectAnnotations }); - emitter.emit(SET_CURRENT_STORY, { + emitter.emit(SET_CURRENT_STORY, { storyId: 'component-one--b', viewMode: 'story' }); + + await waitForEvents([STORY_RENDERED]); + + // Check we don't render the default "story missing" UI / emit the default message + expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING); + + // We of course should emit for the selected story + expect(mockChannel.emit).toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { storyId: 'component-one--b', viewMode: 'story', }); + expect(history.replaceState).toHaveBeenCalledWith( + {}, + '', + 'pathname?id=component-one--b&viewMode=story' + ); + expect(mockChannel.emit).toHaveBeenCalledWith(STORY_RENDERED, 'component-one--b'); + }); + + it('works when there was a selection specifier', async () => { + document.location.search = '?id=component-one--a'; + + const initialized = new PreviewWeb().initialize({ + importFn, + getProjectAnnotations, + }); + emitter.emit(SET_CURRENT_STORY, { storyId: 'component-one--b', viewMode: 'story' }); + + await initialized; await waitForEvents([STORY_RENDERED]); - expect(mockChannel.emit).toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { - storyId: 'component-one--b', + + // If we emitted CURRENT_STORY_WAS_SET for the original selection, the manager might + // get confused, so check that we don't + expect(mockChannel.emit).not.toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { + storyId: 'component-one--a', viewMode: 'story', }); + // Double check this doesn't happen either + expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING); + expect(history.replaceState).toHaveBeenCalledWith( {}, '', 'pathname?id=component-one--b&viewMode=story' ); - expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING, 'component-one--b'); + expect(mockChannel.emit).toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { + storyId: 'component-one--b', + viewMode: 'story', + }); expect(mockChannel.emit).toHaveBeenCalledWith(STORY_RENDERED, 'component-one--b'); }); }); diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx index 01f8172ad18c..ca30544d7c49 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx @@ -130,6 +130,13 @@ export class PreviewWithSelection extends Preview extends Preview extends Preview { this.showMain(); this.showDocs(); this.applyLayout('fullscreen'); + + document.documentElement.scrollTop = 0; + document.documentElement.scrollLeft = 0; + return this.docsRoot(); } diff --git a/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.test.ts b/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.test.ts index b36c08ede673..a45c15db2751 100644 --- a/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.test.ts @@ -5,7 +5,7 @@ import type { StoryStore } from '../../store'; import { DocsContext } from './DocsContext'; import { csfFileParts } from './test-utils'; -const channel = new Channel(); +const channel = new Channel({}); const renderStoryToElement = jest.fn(); describe('referenceCSFFile', () => { diff --git a/code/lib/preview-api/src/modules/preview-web/render/CsfDocsRender.test.ts b/code/lib/preview-api/src/modules/preview-web/render/CsfDocsRender.test.ts index 94f6b0920d70..b492a27e6506 100644 --- a/code/lib/preview-api/src/modules/preview-web/render/CsfDocsRender.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/render/CsfDocsRender.test.ts @@ -34,7 +34,7 @@ it('throws PREPARE_ABORTED if torndown during prepare', async () => { }; const render = new CsfDocsRender( - new Channel(), + new Channel({}), mockStore as unknown as StoryStore, entry, {} as RenderContextCallbacks @@ -63,7 +63,7 @@ it('attached immediately', async () => { } as unknown as StoryStore; const render = new CsfDocsRender( - new Channel(), + new Channel({}), store, entry, {} as RenderContextCallbacks diff --git a/code/lib/preview-api/src/modules/preview-web/render/MdxDocsRender.test.ts b/code/lib/preview-api/src/modules/preview-web/render/MdxDocsRender.test.ts index dbdfad5c06e6..d6676ee26a98 100644 --- a/code/lib/preview-api/src/modules/preview-web/render/MdxDocsRender.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/render/MdxDocsRender.test.ts @@ -33,7 +33,7 @@ it('throws PREPARE_ABORTED if torndown during prepare', async () => { }; const render = new MdxDocsRender( - new Channel(), + new Channel({}), mockStore as unknown as StoryStore, entry, {} as RenderContextCallbacks @@ -62,7 +62,7 @@ describe('attaching', () => { it('is not attached if you do not call setMeta', async () => { const render = new MdxDocsRender( - new Channel(), + new Channel({}), store, entry, {} as RenderContextCallbacks @@ -76,7 +76,7 @@ describe('attaching', () => { it('is attached if you call referenceMeta with attach=true', async () => { const render = new MdxDocsRender( - new Channel(), + new Channel({}), store, entry, {} as RenderContextCallbacks diff --git a/code/lib/preview-api/src/modules/preview-web/render/StoryRender.test.ts b/code/lib/preview-api/src/modules/preview-web/render/StoryRender.test.ts index b95cbe5d3383..96b0032f2361 100644 --- a/code/lib/preview-api/src/modules/preview-web/render/StoryRender.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/render/StoryRender.test.ts @@ -33,7 +33,7 @@ describe('StoryRender', () => { }; const render = new StoryRender( - new Channel(), + new Channel({}), mockStore as unknown as StoryStore, jest.fn(), {} as any, @@ -63,7 +63,7 @@ describe('StoryRender', () => { }; const render = new StoryRender( - new Channel(), + new Channel({}), { getStoryContext: () => ({}) } as any, jest.fn() as any, {} as any, @@ -90,7 +90,7 @@ describe('StoryRender', () => { }; const render = new StoryRender( - new Channel(), + new Channel({}), { getStoryContext: () => ({}) } as any, jest.fn() as any, {} as any, diff --git a/code/lib/preview-api/src/modules/store/StoryIndexStore.test.ts b/code/lib/preview-api/src/modules/store/StoryIndexStore.test.ts index a898ecd1b06c..c906d7a21a75 100644 --- a/code/lib/preview-api/src/modules/store/StoryIndexStore.test.ts +++ b/code/lib/preview-api/src/modules/store/StoryIndexStore.test.ts @@ -154,7 +154,7 @@ describe('StoryIndexStore', () => { const store = new StoryIndexStore(storyIndex); expect(() => store.storyIdToEntry('random')).toThrow( - /Couldn't find story matching 'random'/ + /Couldn't find story matching id 'random'/ ); }); }); diff --git a/code/lib/preview-api/src/modules/store/StoryIndexStore.ts b/code/lib/preview-api/src/modules/store/StoryIndexStore.ts index 8731f3d495e1..03e8a129b9bf 100644 --- a/code/lib/preview-api/src/modules/store/StoryIndexStore.ts +++ b/code/lib/preview-api/src/modules/store/StoryIndexStore.ts @@ -1,4 +1,3 @@ -import { dedent } from 'ts-dedent'; import type { IndexEntry, Path, @@ -8,6 +7,7 @@ import type { ComponentTitle, } from '@storybook/types'; import memoize from 'memoizerific'; +import { MissingStoryAfterHmrError } from '@storybook/core-events/preview-errors'; export type StorySpecifier = StoryId | { name: StoryName; title: ComponentTitle } | '*'; @@ -49,11 +49,7 @@ export class StoryIndexStore { storyIdToEntry(storyId: StoryId): IndexEntry { const storyEntry = this.entries[storyId]; if (!storyEntry) { - throw new Error(dedent`Couldn't find story matching '${storyId}' after HMR. - - Did you remove it from your CSF file? - - Are you sure a story with that id exists? - - Please check your entries field of your main.js config. - - Also check the browser console and terminal for error messages.`); + throw new MissingStoryAfterHmrError({ storyId }); } return storyEntry; diff --git a/code/lib/preview-api/src/modules/store/csf/normalizeInputTypes.test.ts b/code/lib/preview-api/src/modules/store/csf/normalizeInputTypes.test.ts index c06939e9cc59..5cdb504e94eb 100644 --- a/code/lib/preview-api/src/modules/store/csf/normalizeInputTypes.test.ts +++ b/code/lib/preview-api/src/modules/store/csf/normalizeInputTypes.test.ts @@ -9,7 +9,7 @@ describe('normalizeInputType', () => { { name: 'name', type: { name: 'string' }, - control: { type: 'string' }, + control: { type: 'text' }, description: 'description', defaultValue: 'defaultValue', }, @@ -18,7 +18,7 @@ describe('normalizeInputType', () => { ).toEqual({ name: 'name', type: { name: 'string' }, - control: { type: 'string' }, + control: { type: 'text' }, description: 'description', defaultValue: 'defaultValue', }); @@ -29,7 +29,7 @@ describe('normalizeInputType', () => { normalizeInputType( { type: 'string', - control: 'string', + control: 'text', description: 'description', defaultValue: 'defaultValue', }, @@ -38,7 +38,7 @@ describe('normalizeInputType', () => { ).toEqual({ name: 'arg', type: { name: 'string' }, - control: { type: 'string' }, + control: { type: 'text' }, description: 'description', defaultValue: 'defaultValue', }); diff --git a/code/lib/preview-api/src/modules/store/csf/testing-utils/index.ts b/code/lib/preview-api/src/modules/store/csf/testing-utils/index.ts index 40fcddcb6e35..10468737e6dc 100644 --- a/code/lib/preview-api/src/modules/store/csf/testing-utils/index.ts +++ b/code/lib/preview-api/src/modules/store/csf/testing-utils/index.ts @@ -10,7 +10,7 @@ import type { Store_CSFExports, StoryContext, Parameters, - PreparedStoryFn, + ComposedStoryFn, } from '@storybook/types'; import { HooksContext } from '../../../addons'; @@ -36,7 +36,7 @@ export function composeStory = GLOBAL_STORYBOOK_PROJECT_ANNOTATIONS as ProjectAnnotations, defaultConfig: ProjectAnnotations = {}, exportsName?: string -): PreparedStoryFn> { +): ComposedStoryFn> { if (storyAnnotations === undefined) { throw new Error('Expected a story but received undefined.'); } @@ -73,22 +73,25 @@ export function composeStory) => { - const context: Partial = { - ...story, - hooks: new HooksContext(), - globals: defaultGlobals, - args: { ...story.initialArgs, ...extraArgs }, - }; - - return story.unboundStoryFn(prepareContext(context as StoryContext)); - }; - - composedStory.storyName = storyName; - composedStory.args = story.initialArgs as Partial; - composedStory.play = story.playFunction as ComposedStoryPlayFn>; - composedStory.parameters = story.parameters as Parameters; - composedStory.id = story.id; + const composedStory: ComposedStoryFn> = Object.assign( + (extraArgs?: Partial) => { + const context: Partial = { + ...story, + hooks: new HooksContext(), + globals: defaultGlobals, + args: { ...story.initialArgs, ...extraArgs }, + }; + + return story.unboundStoryFn(prepareContext(context as StoryContext)); + }, + { + storyName, + args: story.initialArgs as Partial, + play: story.playFunction as ComposedStoryPlayFn>, + parameters: story.parameters as Parameters, + id: story.id, + } + ); return composedStory; } diff --git a/code/lib/preview-api/src/modules/store/hooks.test.ts b/code/lib/preview-api/src/modules/store/hooks.test.ts index bbd72f95b0a5..655a41249b4f 100644 --- a/code/lib/preview-api/src/modules/store/hooks.test.ts +++ b/code/lib/preview-api/src/modules/store/hooks.test.ts @@ -147,6 +147,25 @@ describe('Preview hooks', () => { run(story, [decorator]); expect(effect).toHaveBeenCalledTimes(1); }); + it('handles decorator conditionally rendering the story', () => { + const effect = jest.fn(); + const story = () => { + useEffect(effect, []); + }; + const decorator = (storyFn: any) => { + const [counter, setCounter] = useState(0); + useEffect(() => { + setCounter((prevCounter) => prevCounter + 1); + }, [counter]); + if (counter % 2 === 1) storyFn(); + return 'placeholder while waiting'; + }; + run(story, [decorator]); + run(story, [decorator]); + run(story, [decorator]); + run(story, [decorator]); + expect(effect).toHaveBeenCalledTimes(2); + }); it('retriggers the effect if some of the deps are changed', () => { const effect = jest.fn(); let counter = 0; diff --git a/code/lib/preview-api/src/modules/store/hooks.ts b/code/lib/preview-api/src/modules/store/hooks.ts index 0fee97ba8893..29762cec575a 100644 --- a/code/lib/preview-api/src/modules/store/hooks.ts +++ b/code/lib/preview-api/src/modules/store/hooks.ts @@ -33,6 +33,17 @@ export { useGlobals, }; +/** + * @param {string} sharedId - The ID of the shared state. + * @param {S} [defaultState] - The default state of the shared state. + * @deprecated This API might get dropped, if you are using this, please file an issue. + * @returns {[S, (s: S) => void]} - A tuple containing the current state and a function to update the state. + * @example + * const [state, setState] = useSharedState('my-addon', { count: 0 }); + * console.log(state); // { count: 0 } + * setState({ count: 1 }); + * console.log(state); // { count: 1 } + */ export function useSharedState(sharedId: string, defaultState?: S): [S, (s: S) => void] { const channel = addons.getChannel(); @@ -69,6 +80,17 @@ export function useSharedState(sharedId: string, defaultState?: S): [S, (s: S ]; } +/** + * @param {string} sharedId - The ID of the shared state. + * @param {S} [defaultState] - The default state of the shared state. + * @deprecated This API might get dropped, if you are using this, please file an issue. + * @returns {[S, (s: S) => void]} - A tuple containing the current state and a function to update the state. + * @example + * const [state, setState] = useSharedState('my-addon', { count: 0 }); + * console.log(state); // { count: 0 } + * setState({ count: 1 }); + * console.log(state); // { count: 1 } + */ export function useAddonState(addonId: string, defaultState?: S): [S, (s: S) => void] { return useSharedState(addonId, defaultState); } diff --git a/code/lib/preview-api/src/typings.d.ts b/code/lib/preview-api/src/typings.d.ts index ff6233a2b547..bedefed4b9a8 100644 --- a/code/lib/preview-api/src/typings.d.ts +++ b/code/lib/preview-api/src/typings.d.ts @@ -7,15 +7,7 @@ declare module 'better-opn'; declare module 'open'; declare module '@aw-web-design/x-default-browser'; -declare var FEATURES: - | { - storyStoreV7?: boolean; - storyStoreV7MdxErrors?: boolean; - argTypeTargetsV7?: boolean; - legacyMdx1?: boolean; - legacyDecoratorFileOrder?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var STORIES: any; declare var DOCS_OPTIONS: any; @@ -32,6 +24,7 @@ declare var __STORYBOOK_PREVIEW__: import('./modules/preview-web/PreviewWeb').Pr declare var __STORYBOOK_STORY_STORE__: any; declare var STORYBOOK_HOOKS_CONTEXT: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; +declare var sendTelemetryError: (error: any) => void; declare module 'ansi-to-html'; declare class AnsiToHtml { diff --git a/code/lib/store/template/stories/argMapping.stories.ts b/code/lib/preview-api/template/stories/argMapping.stories.ts similarity index 97% rename from code/lib/store/template/stories/argMapping.stories.ts rename to code/lib/preview-api/template/stories/argMapping.stories.ts index 655647660c9d..d5fa145700a7 100644 --- a/code/lib/store/template/stories/argMapping.stories.ts +++ b/code/lib/preview-api/template/stories/argMapping.stories.ts @@ -22,7 +22,7 @@ export default { decorators: [ (storyFn: PartialStoryFn, context: StoryContext) => { return storyFn({ - args: { object: context.args }, + args: { object: { ...context.args } }, }); }, ], diff --git a/code/lib/store/template/stories/argTypes.stories.ts b/code/lib/preview-api/template/stories/argTypes.stories.ts similarity index 96% rename from code/lib/store/template/stories/argTypes.stories.ts rename to code/lib/preview-api/template/stories/argTypes.stories.ts index 93b9540ebb40..e0d2115d10ae 100644 --- a/code/lib/store/template/stories/argTypes.stories.ts +++ b/code/lib/preview-api/template/stories/argTypes.stories.ts @@ -8,7 +8,7 @@ export default { // Compose all the argTypes into `object`, so the pre component only needs a single prop decorators: [ (storyFn: PartialStoryFn, context: StoryContext) => - storyFn({ args: { object: context.argTypes } }), + storyFn({ args: { object: { ...context.argTypes } } }), ], argTypes: { componentArg: { type: 'string' }, diff --git a/code/lib/store/template/stories/args.stories.ts b/code/lib/preview-api/template/stories/args.stories.ts similarity index 96% rename from code/lib/store/template/stories/args.stories.ts rename to code/lib/preview-api/template/stories/args.stories.ts index 7c80ddb679ec..aa9719c4bf2c 100644 --- a/code/lib/store/template/stories/args.stories.ts +++ b/code/lib/preview-api/template/stories/args.stories.ts @@ -20,7 +20,8 @@ export default { decorators: [ (storyFn: PartialStoryFn, context: StoryContext) => { const { argNames } = context.parameters; - const object = argNames ? pick(context.args, argNames) : context.args; + const args = { ...context.args }; + const object = argNames ? pick(args, argNames) : args; return storyFn({ args: { object } }); }, ], diff --git a/code/lib/store/template/stories/autotitle.stories.ts b/code/lib/preview-api/template/stories/autotitle.stories.ts similarity index 85% rename from code/lib/store/template/stories/autotitle.stories.ts rename to code/lib/preview-api/template/stories/autotitle.stories.ts index b5286ba9ffa8..253c91dc5e6a 100644 --- a/code/lib/store/template/stories/autotitle.stories.ts +++ b/code/lib/preview-api/template/stories/autotitle.stories.ts @@ -9,6 +9,6 @@ export default { export const Default = { play: async ({ title }: PlayFunctionContext) => { - await expect(title).toBe('lib/store/autotitle'); + await expect(title).toBe('lib/preview-api/autotitle'); }, }; diff --git a/code/lib/store/template/stories/component-play.stories.ts b/code/lib/preview-api/template/stories/component-play.stories.ts similarity index 100% rename from code/lib/store/template/stories/component-play.stories.ts rename to code/lib/preview-api/template/stories/component-play.stories.ts diff --git a/code/lib/preview-api/template/stories/decorators.stories.ts b/code/lib/preview-api/template/stories/decorators.stories.ts new file mode 100644 index 000000000000..a36eb100a739 --- /dev/null +++ b/code/lib/preview-api/template/stories/decorators.stories.ts @@ -0,0 +1,66 @@ +import { global as globalThis } from '@storybook/global'; +import type { + ArgsStoryFn, + PartialStoryFn, + PlayFunctionContext, + StoryContext, +} from '@storybook/types'; +import { within } from '@storybook/testing-library'; +import { expect } from '@storybook/jest'; +import { useEffect } from '@storybook/preview-api'; +import { STORY_ARGS_UPDATED, UPDATE_STORY_ARGS, RESET_STORY_ARGS } from '@storybook/core-events'; + +export default { + component: globalThis.Components.Pre, + parameters: { useProjectDecorator: true }, + decorators: [ + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { ...context.args, text: `component ${context.args['text']}` } }), + ], +}; + +export const Inheritance = { + decorators: [ + (storyFn: PartialStoryFn, context: StoryContext) => + storyFn({ args: { ...context.args, text: `story ${context.args['text']}` } }), + ], + args: { + text: 'starting', + }, + play: async ({ canvasElement }: PlayFunctionContext) => { + const canvas = within(canvasElement); + await expect(canvas.getByTestId('pre').innerText).toEqual('story component project starting'); + }, +}; + +// NOTE this story is currently broken in Chromatic for both Vue2/Vue3 +// Issue: https://github.com/storybookjs/storybook/issues/22945 +export const Hooks = { + decorators: [ + // decorator that uses hooks + (storyFn: PartialStoryFn, context: StoryContext) => { + useEffect(() => {}); + return storyFn({ args: { ...context.args, text: `story ${context.args['text']}` } }); + }, + // conditional decorator, runs before the above + (storyFn: PartialStoryFn, context: StoryContext) => + context.args.condition + ? storyFn() + : (context.originalStoryFn as ArgsStoryFn)(context.args, context), + ], + args: { + text: 'text', + condition: true, + }, + play: async ({ id, args }: PlayFunctionContext) => { + const channel = globalThis.__STORYBOOK_ADDONS_CHANNEL__; + await channel.emit(RESET_STORY_ARGS, { storyId: id }); + await new Promise((resolve) => channel.once(STORY_ARGS_UPDATED, resolve)); + + await channel.emit(UPDATE_STORY_ARGS, { + storyId: id, + updatedArgs: { condition: false }, + }); + await new Promise((resolve) => channel.once(STORY_ARGS_UPDATED, resolve)); + }, +}; diff --git a/code/lib/store/template/stories/exportOrder.stories.ts b/code/lib/preview-api/template/stories/exportOrder.stories.ts similarity index 100% rename from code/lib/store/template/stories/exportOrder.stories.ts rename to code/lib/preview-api/template/stories/exportOrder.stories.ts diff --git a/code/lib/store/template/stories/global.d.ts b/code/lib/preview-api/template/stories/global.d.ts similarity index 100% rename from code/lib/store/template/stories/global.d.ts rename to code/lib/preview-api/template/stories/global.d.ts diff --git a/code/lib/store/template/stories/globals.stories.ts b/code/lib/preview-api/template/stories/globals.stories.ts similarity index 96% rename from code/lib/store/template/stories/globals.stories.ts rename to code/lib/preview-api/template/stories/globals.stories.ts index 625c14829e9e..436fd40d0008 100644 --- a/code/lib/store/template/stories/globals.stories.ts +++ b/code/lib/preview-api/template/stories/globals.stories.ts @@ -22,6 +22,7 @@ export const Inheritance = { }; export const Events = { + parameters: { chromatic: { disableSnapshot: true } }, // Just pass the "foo" global to the pre decorators: [ (storyFn: PartialStoryFn, context: StoryContext) => diff --git a/code/lib/store/template/stories/hooks.stories.ts b/code/lib/preview-api/template/stories/hooks.stories.ts similarity index 100% rename from code/lib/store/template/stories/hooks.stories.ts rename to code/lib/preview-api/template/stories/hooks.stories.ts diff --git a/code/lib/store/template/stories/import.js b/code/lib/preview-api/template/stories/import.js similarity index 100% rename from code/lib/store/template/stories/import.js rename to code/lib/preview-api/template/stories/import.js diff --git a/code/lib/preview-api/template/stories/indexer.stories.ts b/code/lib/preview-api/template/stories/indexer.stories.ts new file mode 100644 index 000000000000..645b6a14b3f7 --- /dev/null +++ b/code/lib/preview-api/template/stories/indexer.stories.ts @@ -0,0 +1,24 @@ +import { expect } from '@storybook/jest'; +import { global as globalThis } from '@storybook/global'; +import type { PlayFunctionContext } from '@storybook/types'; + +export default { + component: globalThis.Components.Pre, + args: { text: 'Check that id assertions in interaction tests are passing' }, + id: 'indexer-custom-meta-id', +}; + +export const Default = { + play: async ({ id }: PlayFunctionContext) => { + await expect(id).toBe('indexer-custom-meta-id--default'); + }, +}; + +export const CustomParametersId = { + parameters: { + __id: 'custom-id', + }, + play: async ({ id }: PlayFunctionContext) => { + await expect(id).toBe('custom-id'); + }, +}; diff --git a/code/lib/store/template/stories/interleavedExports.stories.ts b/code/lib/preview-api/template/stories/interleavedExports.stories.ts similarity index 100% rename from code/lib/store/template/stories/interleavedExports.stories.ts rename to code/lib/preview-api/template/stories/interleavedExports.stories.ts diff --git a/code/lib/store/template/stories/layout.stories.ts b/code/lib/preview-api/template/stories/layout.stories.ts similarity index 100% rename from code/lib/store/template/stories/layout.stories.ts rename to code/lib/preview-api/template/stories/layout.stories.ts diff --git a/code/lib/store/template/stories/loaders.stories.ts b/code/lib/preview-api/template/stories/loaders.stories.ts similarity index 100% rename from code/lib/store/template/stories/loaders.stories.ts rename to code/lib/preview-api/template/stories/loaders.stories.ts diff --git a/code/lib/store/template/stories/names.stories.ts b/code/lib/preview-api/template/stories/names.stories.ts similarity index 100% rename from code/lib/store/template/stories/names.stories.ts rename to code/lib/preview-api/template/stories/names.stories.ts diff --git a/code/lib/store/template/stories/parameters.stories.ts b/code/lib/preview-api/template/stories/parameters.stories.ts similarity index 100% rename from code/lib/store/template/stories/parameters.stories.ts rename to code/lib/preview-api/template/stories/parameters.stories.ts diff --git a/code/lib/store/template/stories/preview.ts b/code/lib/preview-api/template/stories/preview.ts similarity index 100% rename from code/lib/store/template/stories/preview.ts rename to code/lib/preview-api/template/stories/preview.ts diff --git a/code/lib/store/template/stories/rendering.stories.ts b/code/lib/preview-api/template/stories/rendering.stories.ts similarity index 100% rename from code/lib/store/template/stories/rendering.stories.ts rename to code/lib/preview-api/template/stories/rendering.stories.ts diff --git a/code/lib/store/template/stories/shortcuts.stories.ts b/code/lib/preview-api/template/stories/shortcuts.stories.ts similarity index 93% rename from code/lib/store/template/stories/shortcuts.stories.ts rename to code/lib/preview-api/template/stories/shortcuts.stories.ts index cd4de4adb820..87e2db24a22a 100644 --- a/code/lib/store/template/stories/shortcuts.stories.ts +++ b/code/lib/preview-api/template/stories/shortcuts.stories.ts @@ -18,6 +18,6 @@ export const KeydownDuringPlay = { const button = await within(canvasElement).findByText('Submit'); await userEvent.type(button, 's'); - expect(previewKeydown).not.toBeCalled(); + await expect(previewKeydown).not.toBeCalled(); }, }; diff --git a/code/lib/store/template/stories/tags.stories.ts b/code/lib/preview-api/template/stories/tags.stories.ts similarity index 100% rename from code/lib/store/template/stories/tags.stories.ts rename to code/lib/preview-api/template/stories/tags.stories.ts diff --git a/code/lib/store/template/stories/title.stories.ts b/code/lib/preview-api/template/stories/title.stories.ts similarity index 85% rename from code/lib/store/template/stories/title.stories.ts rename to code/lib/preview-api/template/stories/title.stories.ts index 0374288d3ed7..860955da6410 100644 --- a/code/lib/store/template/stories/title.stories.ts +++ b/code/lib/preview-api/template/stories/title.stories.ts @@ -10,6 +10,6 @@ export default { export const Default = { play: async ({ title }: PlayFunctionContext) => { - await expect(title).toBe('lib/store/manual title'); + await expect(title).toBe('lib/preview-api/manual title'); }, }; diff --git a/code/lib/store/template/stories/unicode.stories.ts b/code/lib/preview-api/template/stories/unicode.stories.ts similarity index 100% rename from code/lib/store/template/stories/unicode.stories.ts rename to code/lib/preview-api/template/stories/unicode.stories.ts diff --git a/code/lib/preview-web/jest.config.js b/code/lib/preview-web/jest.config.js deleted file mode 100644 index 4396fbc7010d..000000000000 --- a/code/lib/preview-web/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.browser'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index a4c8f2375ee9..097bc0e89ae8 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -48,19 +48,19 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/esm-bundle.ts" }, "devDependencies": { - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channel-websocket": "7.1.0-alpha.17", - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "workspace:*", "typescript": "~4.9.3" }, "publishConfig": { @@ -74,5 +74,5 @@ "./src/globals.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/preview/src/globals/runtime.ts b/code/lib/preview/src/globals/runtime.ts index 2be746a12f15..ad078c4afa8d 100644 --- a/code/lib/preview/src/globals/runtime.ts +++ b/code/lib/preview/src/globals/runtime.ts @@ -1,9 +1,10 @@ -import * as CHANNEL_POSTMESSAGE from '@storybook/channel-postmessage'; -import * as CHANNEL_WEBSOCKET from '@storybook/channel-websocket'; +import * as CHANNEL_POSTMESSAGE from '@storybook/channels/dist/postmessage/index'; +import * as CHANNEL_WEBSOCKET from '@storybook/channels/dist/websocket/index'; import * as CHANNELS from '@storybook/channels'; import * as CLIENT_LOGGER from '@storybook/client-logger'; import * as CORE_EVENTS from '@storybook/core-events'; import * as PREVIEW_API from '@storybook/preview-api'; +import * as GLOBAL from '@storybook/global'; // DEPRECATED, remove in 8.0 import * as ADDONS from '@storybook/preview-api/dist/addons'; @@ -16,12 +17,13 @@ import type { globals } from './types'; // Here we map the name of a module to their VALUE in the global scope. export const values: Required> = { - '@storybook/channel-postmessage': CHANNEL_POSTMESSAGE, - '@storybook/channel-websocket': CHANNEL_WEBSOCKET, + '@storybook/channel-postmessage': CHANNEL_POSTMESSAGE, // @deprecated: remove in 8.0 + '@storybook/channel-websocket': CHANNEL_WEBSOCKET, // @deprecated: remove in 8.0 '@storybook/channels': CHANNELS, '@storybook/client-logger': CLIENT_LOGGER, '@storybook/core-events': CORE_EVENTS, '@storybook/preview-api': PREVIEW_API, + '@storybook/global': GLOBAL, // DEPRECATED, remove in 8.0 '@storybook/addons': ADDONS, diff --git a/code/lib/preview/src/globals/types.ts b/code/lib/preview/src/globals/types.ts index 182e384604e1..40ed603cd598 100644 --- a/code/lib/preview/src/globals/types.ts +++ b/code/lib/preview/src/globals/types.ts @@ -1,8 +1,9 @@ // Here we map the name of a module to their NAME in the global scope. export const globals = { '@storybook/addons': '__STORYBOOK_MODULE_ADDONS__', - '@storybook/channel-postmessage': '__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__', - '@storybook/channel-websocket': '__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__', + '@storybook/global': '__STORYBOOK_MODULE_GLOBAL__', + '@storybook/channel-postmessage': '__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__', // @deprecated: remove in 8.0 + '@storybook/channel-websocket': '__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__', // @deprecated: remove in 8.0 '@storybook/channels': '__STORYBOOK_MODULE_CHANNELS__', '@storybook/client-api': '__STORYBOOK_MODULE_CLIENT_API__', '@storybook/client-logger': '__STORYBOOK_MODULE_CLIENT_LOGGER__', diff --git a/code/lib/preview/src/runtime.ts b/code/lib/preview/src/runtime.ts index 5e890a133a55..7785e42df8c9 100644 --- a/code/lib/preview/src/runtime.ts +++ b/code/lib/preview/src/runtime.ts @@ -1,3 +1,6 @@ +import { TELEMETRY_ERROR } from '@storybook/core-events'; +import { global } from '@storybook/global'; + import { values } from './globals/runtime'; import { globals } from './globals/types'; @@ -5,5 +8,23 @@ const getKeys = Object.keys as (obj: T) => Array; // Apply all the globals getKeys(globals).forEach((key) => { - (globalThis as any)[globals[key]] = values[key]; + (global as any)[globals[key]] = values[key]; +}); + +global.sendTelemetryError = (error: any) => { + const channel = global.__STORYBOOK_ADDONS_CHANNEL__; + channel.emit(TELEMETRY_ERROR, error); +}; + +// handle all uncaught StorybookError at the root of the application and log to telemetry if applicable +global.addEventListener('error', (args: any) => { + const error = args.error || args; + if (error.fromStorybook) { + global.sendTelemetryError(error); + } +}); +global.addEventListener('unhandledrejection', ({ reason }: any) => { + if (reason.fromStorybook) { + global.sendTelemetryError(reason); + } }); diff --git a/code/lib/preview/src/typings.d.ts b/code/lib/preview/src/typings.d.ts index bfd9e55123ff..a816c261fa72 100644 --- a/code/lib/preview/src/typings.d.ts +++ b/code/lib/preview/src/typings.d.ts @@ -1 +1,5 @@ +/* eslint-disable @typescript-eslint/naming-convention */ declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; + +declare var __STORYBOOK_ADDONS_CHANNEL__: any; +declare var sendTelemetryError: (error: any) => void; diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index c6c00a4b8ce1..536b11e5e036 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "", "keywords": [ "storybook" @@ -46,14 +46,15 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { - "@storybook/types": "7.1.0-alpha.17", + "@storybook/types": "workspace:*", "typescript": "~4.9.3" }, "peerDependencies": { @@ -70,5 +71,5 @@ "./src/react-18.tsx" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 4447a07a351e..781912d06708 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Core Storybook Router", "keywords": [ "storybook" @@ -41,14 +41,15 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -74,5 +75,5 @@ "./src/utils.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 4005dc4b7804..118077b9c007 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -1,6 +1,6 @@ import { global } from '@storybook/global'; import React, { useCallback } from 'react'; -import type { ReactNode } from 'react'; +import type { ReactNode, ReactElement, ComponentProps } from 'react'; import * as R from 'react-router-dom'; import { ToggleVisibility } from './visibility'; @@ -16,23 +16,33 @@ interface MatchingData { interface LocationProps { children: (renderData: RenderData) => any; } -interface MatchProps { + +interface MatchPropsStartsWith { path: string; startsWith: boolean; children: (matchingData: MatchingData) => ReactNode; } -interface RouteProps { +interface MatchPropsDefault { + path: RegExp; + startsWith: false; + children: (matchingData: MatchingData) => ReactNode; +} + +interface RoutePropsStartsWith { path: string; startsWith?: boolean; hideOnly?: boolean; children: ReactNode; } +interface RoutePropsDefault { + path: RegExp; + startsWith?: false; + hideOnly?: boolean; + children: ReactNode; +} const getBase = () => `${document.location.pathname}?`; -// const queryNavigate: NavigateFn = (to: string | number, options?: NavigateOptions<{}>) => -// typeof to === 'number' ? navigate(to) : navigate(`${getBase()}path=${to}`, options); - export const useNavigate = () => { const navigate = R.useNavigate(); @@ -53,7 +63,9 @@ export const useNavigate = () => { }, []); }; -// A component that will navigate to a new location/path when clicked +/** + * A component that will navigate to a new location/path when clicked + */ export const Link = ({ to, children, ...rest }: LinkProps) => ( {children} @@ -61,8 +73,10 @@ export const Link = ({ to, children, ...rest }: LinkProps) => ( ); Link.displayName = 'QueryLink'; -// A render-prop component where children is called with a location -// and will be called whenever it changes when it changes +/** + * A render-prop component where children is called with a location + * and will be called whenever it changes when it changes + */ export const Location = ({ children }: LocationProps) => { const location = R.useLocation(); const { path, singleStory } = queryFromString(location.search); @@ -71,7 +85,7 @@ export const Location = ({ children }: LocationProps) => { return ( <> {children({ - path, + path: path || '/', location, viewMode, storyId, @@ -83,33 +97,58 @@ export const Location = ({ children }: LocationProps) => { }; Location.displayName = 'QueryLocation'; -// A render-prop component for rendering when a certain path is hit. -// It's immensely similar to `Location` but it receives an addition data property: `match`. -// match has a truthy value when the path is hit. -export const Match = ({ children, path: targetPath, startsWith = false }: MatchProps) => ( - - {({ path: urlPath, ...rest }) => - children({ - match: getMatch(urlPath, targetPath, startsWith), - ...rest, - }) - } - -); +/** + * A render-prop component for rendering when a certain path is hit. + * It's immensely similar to `Location` but it receives an addition data property: `match`. + * match has a truthy value when the path is hit. + */ +function Match(props: MatchPropsStartsWith): ReactElement; +function Match(props: MatchPropsDefault): ReactElement; +function Match({ + children, + path: targetPath, + startsWith = false, +}: MatchPropsStartsWith | MatchPropsDefault) { + return ( + + {({ path: urlPath, ...rest }) => + children({ + match: getMatch(urlPath, targetPath, startsWith), + ...rest, + }) + } + + ); +} Match.displayName = 'QueryMatch'; -// A component to conditionally render children based on matching a target path -export const Route = ({ path, children, startsWith = false, hideOnly = false }: RouteProps) => ( - - {({ match }) => { - if (hideOnly) { - return ; - } - return match ? children : null; - }} - -); +/** + * A component to conditionally render children based on matching a target path + */ +function Route(props: RoutePropsDefault): ReactElement; +function Route(props: RoutePropsStartsWith): ReactElement; +function Route(input: RoutePropsDefault | RoutePropsStartsWith) { + const { children, hideOnly, ...rest } = input; + if (rest.startsWith === undefined) { + rest.startsWith = false; + } + + const matchProps = rest as Omit, 'children'>; + + return ( + + {({ match }) => { + if (hideOnly) { + return ; + } + return match ? children : null; + }} + + ); +} Route.displayName = 'Route'; +export { Route, Match }; + export const LocationProvider: typeof R.BrowserRouter = (...args) => R.BrowserRouter(...args); export const BaseLocationProvider: typeof R.Router = (...args) => R.Router(...args); diff --git a/code/lib/router/src/utils.ts b/code/lib/router/src/utils.ts index ab5941cab4ca..94d1d6860538 100644 --- a/code/lib/router/src/utils.ts +++ b/code/lib/router/src/utils.ts @@ -158,8 +158,11 @@ export const stringifyQuery = (query: Query) => type Match = { path: string }; export const getMatch = memoize(1000)( - (current: string, target: string, startsWith = true): Match | null => { + (current: string, target: string | RegExp, startsWith = true): Match | null => { if (startsWith) { + if (typeof target !== 'string') { + throw new Error('startsWith only works with string targets'); + } const startsWithTarget = current && current.startsWith(target); if (startsWithTarget) { return { path: current }; diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 99094dca38b5..9495a137c18f 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Source loader", "keywords": [ "lib", @@ -37,21 +37,22 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@storybook/csf": "^0.1.0", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/types": "workspace:*", "estraverse": "^5.2.0", "lodash": "^4.17.21", "prettier": "^2.8.0" }, "devDependencies": { - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", "typescript": "~4.9.3" }, "peerDependencies": { @@ -67,5 +68,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/store/jest.config.js b/code/lib/store/jest.config.js deleted file mode 100644 index 343e4c7a7f32..000000000000 --- a/code/lib/store/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.node'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/lib/store/template/stories/decorators.stories.ts b/code/lib/store/template/stories/decorators.stories.ts deleted file mode 100644 index 1e07554ad9e3..000000000000 --- a/code/lib/store/template/stories/decorators.stories.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { global as globalThis } from '@storybook/global'; -import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/jest'; - -export default { - component: globalThis.Components.Pre, - parameters: { useProjectDecorator: true }, - decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => - storyFn({ args: { ...context.args, text: `component ${context.args['text']}` } }), - ], -}; - -export const Inheritance = { - decorators: [ - (storyFn: PartialStoryFn, context: StoryContext) => - storyFn({ args: { ...context.args, text: `story ${context.args['text']}` } }), - ], - args: { - text: 'starting', - }, - play: async ({ canvasElement }: PlayFunctionContext) => { - const canvas = within(canvasElement); - await expect(canvas.getByTestId('pre').innerText).toEqual('story component project starting'); - }, -}; diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index 8e2f69654920..22fa64bb7b48 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" @@ -36,24 +36,26 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-common": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-common": "workspace:*", + "@storybook/csf-tools": "workspace:*", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", "fs-extra": "^11.1.0", - "isomorphic-unfetch": "^3.1.0", - "nanoid": "^3.3.1", "read-pkg-up": "^7.0.1" }, "devDependencies": { + "nanoid": "^4.0.2", + "node-fetch": "^3.3.1", "typescript": "~4.9.3" }, "publishConfig": { @@ -65,5 +67,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/telemetry/src/get-framework-info.test.ts b/code/lib/telemetry/src/get-framework-info.test.ts new file mode 100644 index 000000000000..4120aaf92879 --- /dev/null +++ b/code/lib/telemetry/src/get-framework-info.test.ts @@ -0,0 +1,54 @@ +import type { StorybookConfig } from '@storybook/types'; +import path from 'path'; +import { getFrameworkInfo } from './get-framework-info'; +import { getActualPackageJson } from './package-json'; + +jest.mock('./package-json', () => ({ + getActualPackageJson: jest.fn(), +})); + +describe('getFrameworkInfo', () => { + it('should return an empty object if mainConfig.framework is undefined', async () => { + const result = await getFrameworkInfo({} as StorybookConfig); + expect(result).toEqual({}); + }); + + it('should return an empty object if mainConfig.framework name is undefined', async () => { + const result = await getFrameworkInfo({ framework: {} } as StorybookConfig); + expect(result).toEqual({}); + }); + + it('should call getActualPackageJson with the correct package name', async () => { + const packageName = '@storybook/react'; + const framework = { name: packageName }; + await getFrameworkInfo({ framework } as StorybookConfig); + expect(getActualPackageJson).toHaveBeenCalledWith(packageName); + }); + + it('should resolve the framework package json correctly and strip project paths in the metadata', async () => { + const packageName = `${process.cwd()}/@storybook/react`.split('/').join(path.sep); + const framework = { name: packageName }; + const frameworkPackageJson = { + name: packageName, + dependencies: { + '@storybook/react': '7.0.0', + '@storybook/builder-vite': '7.0.0', + }, + }; + + (getActualPackageJson as jest.Mock).mockResolvedValueOnce(frameworkPackageJson); + + const result = await getFrameworkInfo({ framework } as StorybookConfig); + + expect(getActualPackageJson).toHaveBeenCalledWith(packageName); + + expect(result).toEqual({ + framework: { + name: '$SNIP/@storybook/react'.split('/').join(path.sep), + options: undefined, + }, + builder: '@storybook/builder-vite', + renderer: '@storybook/react', + }); + }); +}); diff --git a/code/lib/telemetry/src/get-framework-info.ts b/code/lib/telemetry/src/get-framework-info.ts index 4f465c7f0b2f..6716aa314510 100644 --- a/code/lib/telemetry/src/get-framework-info.ts +++ b/code/lib/telemetry/src/get-framework-info.ts @@ -1,4 +1,7 @@ import type { PackageJson, StorybookConfig } from '@storybook/types'; +import path from 'path'; +import { frameworkPackages } from '@storybook/core-common'; +import { cleanPaths } from './sanitize'; import { getActualPackageJson } from './package-json'; const knownRenderers = [ @@ -30,20 +33,44 @@ function findMatchingPackage(packageJson: PackageJson, suffixes: string[]) { return suffixes.map((suffix) => `@storybook/${suffix}`).find((pkg) => allDependencies[pkg]); } +export const getFrameworkPackageName = (packageNameOrPath: string) => { + const normalizedPath = path.normalize(packageNameOrPath).replace(new RegExp(/\\/, 'g'), '/'); + + const knownFramework = Object.keys(frameworkPackages).find((pkg) => normalizedPath.endsWith(pkg)); + + return knownFramework || cleanPaths(packageNameOrPath).replace(/.*node_modules[\\/]/, ''); +}; + export async function getFrameworkInfo(mainConfig: StorybookConfig) { - const { framework: frameworkInput } = mainConfig; + if (!mainConfig?.framework) { + return {}; + } - if (!frameworkInput) return {}; + const rawName = + typeof mainConfig.framework === 'string' ? mainConfig.framework : mainConfig.framework?.name; + if (!rawName) { + return {}; + } - const framework = typeof frameworkInput === 'string' ? { name: frameworkInput } : frameworkInput; + const frameworkPackageJson = await getActualPackageJson(rawName); - const frameworkPackageJson = await getActualPackageJson(framework.name); + if (!frameworkPackageJson) { + return {}; + } const builder = findMatchingPackage(frameworkPackageJson, knownBuilders); const renderer = findMatchingPackage(frameworkPackageJson, knownRenderers); + // parse framework name and strip off pnp paths etc. + const sanitizedFrameworkName = getFrameworkPackageName(rawName); + const frameworkOptions = + typeof mainConfig.framework === 'object' ? mainConfig.framework.options : {}; + return { - framework, + framework: { + name: sanitizedFrameworkName, + options: frameworkOptions, + }, builder, renderer, }; diff --git a/code/lib/telemetry/src/sanitize.test.ts b/code/lib/telemetry/src/sanitize.test.ts index 2f8f5b2267f7..f5b3a742d3e6 100644 --- a/code/lib/telemetry/src/sanitize.test.ts +++ b/code/lib/telemetry/src/sanitize.test.ts @@ -73,10 +73,10 @@ describe(`Errors Helpers`, () => { const mockCwd = jest.spyOn(process, `cwd`).mockImplementation(() => cwdMockPath); - const errorMessage = `This path ${fullPath} is a test ${fullPath}`; + const errorMessage = `This path should be sanitized ${fullPath}`; expect(cleanPaths(errorMessage, `/`)).toBe( - `This path $SNIP/${filePath} is a test $SNIP/${filePath}` + `This path should be sanitized $SNIP/${filePath}` ); mockCwd.mockRestore(); } @@ -90,10 +90,10 @@ describe(`Errors Helpers`, () => { const mockCwd = jest.spyOn(process, `cwd`).mockImplementation(() => cwdMockPath); - const errorMessage = `This path ${fullPath} is a test ${fullPath}`; + const errorMessage = `This path should be sanitized ${fullPath}`; expect(cleanPaths(errorMessage, `\\`)).toBe( - `This path $SNIP\\${filePath} is a test $SNIP\\${filePath}` + `This path should be sanitized $SNIP\\${filePath}` ); mockCwd.mockRestore(); } diff --git a/code/lib/telemetry/src/storybook-metadata.test.ts b/code/lib/telemetry/src/storybook-metadata.test.ts index 609cee560c14..ab64dc26e9a1 100644 --- a/code/lib/telemetry/src/storybook-metadata.test.ts +++ b/code/lib/telemetry/src/storybook-metadata.test.ts @@ -47,209 +47,326 @@ jest.mock('detect-package-manager', () => ({ getNpmVersion: () => '3.1.1', })); -describe('sanitizeAddonName', () => { - const originalSep = path.sep; +const originalSep = path.sep; + +describe('storybook-metadata', () => { + let cwdSpy: jest.SpyInstance; beforeEach(() => { // @ts-expect-error the property is read only but we can change it for testing purposes path.sep = originalSep; }); - test('special addon names', () => { - const addonNames = [ - '@storybook/preset-create-react-app', - 'storybook-addon-deprecated/register', - 'storybook-addon-ends-with-js/register.js', - '@storybook/addon-knobs/preset', - '@storybook/addon-ends-with-js/preset.js', - '@storybook/addon-postcss/dist/index.js', - '../local-addon/register.js', - '../../', - ].map(sanitizeAddonName); - - expect(addonNames).toEqual([ - '@storybook/preset-create-react-app', - 'storybook-addon-deprecated', - 'storybook-addon-ends-with-js', - '@storybook/addon-knobs', - '@storybook/addon-ends-with-js', - '@storybook/addon-postcss', - '../local-addon', - '../../', - ]); + afterEach(() => { + cwdSpy?.mockRestore(); + // @ts-expect-error the property is read only but we can change it for testing purposes + path.sep = originalSep; }); - test('Windows paths', () => { - // @ts-expect-error the property is read only but we can change it for testing purposes - path.sep = '\\'; - const cwdMockPath = `C:\\Users\\username\\storybook-app`; - jest.spyOn(process, `cwd`).mockImplementationOnce(() => cwdMockPath); + describe('sanitizeAddonName', () => { + test('special addon names', () => { + const addonNames = [ + '@storybook/preset-create-react-app', + 'storybook-addon-deprecated/register', + 'storybook-addon-ends-with-js/register.js', + '@storybook/addon-knobs/preset', + '@storybook/addon-ends-with-js/preset.js', + '@storybook/addon-postcss/dist/index.js', + '../local-addon/register.js', + '../../', + ].map(sanitizeAddonName); - expect(sanitizeAddonName(`${cwdMockPath}\\local-addon\\themes.js`)).toEqual( - '$SNIP\\local-addon\\themes' - ); - }); + expect(addonNames).toEqual([ + '@storybook/preset-create-react-app', + 'storybook-addon-deprecated', + 'storybook-addon-ends-with-js', + '@storybook/addon-knobs', + '@storybook/addon-ends-with-js', + '@storybook/addon-postcss', + '../local-addon', + '../../', + ]); + }); - test('Linux paths', () => { - // @ts-expect-error the property is read only but we can change it for testing purposes - path.sep = '/'; - const cwdMockPath = `/Users/username/storybook-app`; - jest.spyOn(process, `cwd`).mockImplementationOnce(() => cwdMockPath); + test('Windows paths', () => { + // @ts-expect-error the property is read only but we can change it for testing purposes + path.sep = '\\'; + const cwdMockPath = `C:\\Users\\username\\storybook-app`; + cwdSpy = jest.spyOn(process, `cwd`).mockReturnValueOnce(cwdMockPath); - expect(sanitizeAddonName(`${cwdMockPath}/local-addon/themes.js`)).toEqual( - '$SNIP/local-addon/themes' - ); + expect(sanitizeAddonName(`${cwdMockPath}\\local-addon\\themes.js`)).toEqual( + '$SNIP\\local-addon\\themes' + ); + }); + + test('Linux paths', () => { + // @ts-expect-error the property is read only but we can change it for testing purposes + path.sep = '/'; + const cwdMockPath = `/Users/username/storybook-app`; + cwdSpy = jest.spyOn(process, `cwd`).mockReturnValue(cwdMockPath); + + expect(sanitizeAddonName(`${cwdMockPath}/local-addon/themes.js`)).toEqual( + '$SNIP/local-addon/themes' + ); + }); }); -}); -describe('await computeStorybookMetadata', () => { - test('should return frameworkOptions from mainjs', async () => { - const reactResult = await computeStorybookMetadata({ - packageJson: packageJsonMock, - mainConfig: { - ...mainJsMock, - framework: { + describe('computeStorybookMetadata', () => { + describe('pnp paths', () => { + test('should parse pnp paths for known frameworks', async () => { + const unixResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: '/Users/foo/storybook/.yarn/__virtual__/@storybook-react-vite-virtual-769c990b9/0/cache/@storybook-react-vite-npm-7.1.0-alpha.38-512b-a23.zip/node_modules/@storybook/react-vite', + options: { + fastRefresh: false, + }, + }, + }, + }); + + expect(unixResult.framework).toEqual({ name: '@storybook/react-vite', - options: { - fastRefresh: false, + options: { fastRefresh: false }, + }); + + const windowsResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: 'C:\\Users\\foo\\storybook\\.yarn\\__virtual__\\@storybook-react-vite-virtual-769c990b9\\0\\cache\\@storybook-react-vite-npm-7.1.0-alpha.38-512b-a23.zip\\node_modules\\@storybook\\react-vite', + options: { + fastRefresh: false, + }, + }, }, - }, - }, - }); + }); + + expect(windowsResult.framework).toEqual({ + name: '@storybook/react-vite', + options: { fastRefresh: false }, + }); + }); - expect(reactResult.framework).toEqual({ - name: '@storybook/react-vite', - options: { fastRefresh: false }, + test('should parse pnp paths for unknown frameworks', async () => { + const unixResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: '/Users/foo/my-project/.yarn/__virtual__/@storybook-react-vite-virtual-769c990b9/0/cache/@storybook-react-rust-npm-7.1.0-alpha.38-512b-a23.zip/node_modules/storybook-react-rust', + }, + }, + }); + + expect(unixResult.framework).toEqual({ + name: 'storybook-react-rust', + }); + + const windowsResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: 'C:\\Users\\foo\\my-project\\.yarn\\__virtual__\\@storybook-react-vite-virtual-769c990b9\\0\\cache\\@storybook-react-rust-npm-7.1.0-alpha.38-512b-a23.zip\\node_modules\\storybook-react-rust', + }, + }, + }); + + expect(windowsResult.framework).toEqual({ + name: 'storybook-react-rust', + }); + }); + + test('should sanitize pnp paths for local frameworks', async () => { + // @ts-expect-error the property is read only but we can change it for testing purposes + path.sep = '/'; + cwdSpy = jest.spyOn(process, 'cwd').mockReturnValue('/Users/foo/my-projects'); + + const unixResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: '/Users/foo/my-projects/.storybook/some-local-framework', + }, + }, + }); + + expect(unixResult.framework).toEqual({ + name: '$SNIP/.storybook/some-local-framework', + }); + + // @ts-expect-error the property is read only but we can change it for testing purposes + path.sep = '\\'; + cwdSpy = jest.spyOn(process, 'cwd').mockReturnValue('C:\\Users\\foo\\my-project'); + const windowsResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: 'C:\\Users\\foo\\my-project\\.storybook\\some-local-framework', + }, + }, + }); + + expect(windowsResult.framework).toEqual({ + name: '$SNIP\\.storybook\\some-local-framework', + }); + }); }); - const angularResult = await computeStorybookMetadata({ - packageJson: packageJsonMock, - mainConfig: { - ...mainJsMock, - framework: { - name: '@storybook/angular', - options: { - enableIvy: true, - enableNgcc: true, + test('should return frameworkOptions from mainjs', async () => { + const reactResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: '@storybook/react-vite', + options: { + fastRefresh: false, + }, }, }, - }, - }); + }); - expect(angularResult.framework).toEqual({ - name: '@storybook/angular', - options: { enableIvy: true, enableNgcc: true }, - }); - }); + expect(reactResult.framework).toEqual({ + name: '@storybook/react-vite', + options: { fastRefresh: false }, + }); - test('should separate storybook packages and addons', async () => { - const result = await computeStorybookMetadata({ - packageJson: { - ...packageJsonMock, - devDependencies: { - '@storybook/react': 'x.y.z', - '@storybook/addon-essentials': 'x.x.x', - '@storybook/addon-knobs': 'x.x.y', - 'storybook-addon-deprecated': 'x.x.z', + const angularResult = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: { + name: '@storybook/angular', + options: { + enableIvy: true, + enableNgcc: true, + }, + }, }, - }, - mainConfig: { - ...mainJsMock, - addons: [ - '@storybook/addon-essentials', - 'storybook-addon-deprecated/register', - '@storybook/addon-knobs/preset', - ], - }, + }); + + expect(angularResult.framework).toEqual({ + name: '@storybook/angular', + options: { enableIvy: true, enableNgcc: true }, + }); }); - expect(result.addons).toMatchInlineSnapshot(` - Object { - "@storybook/addon-essentials": Object { - "options": undefined, - "version": "x.x.x", - }, - "@storybook/addon-knobs": Object { - "options": undefined, - "version": "x.x.x", - }, - "storybook-addon-deprecated": Object { - "options": undefined, - "version": "x.x.x", - }, - } - `); - expect(result.storybookPackages).toMatchInlineSnapshot(` - Object { - "@storybook/react": Object { - "version": "x.x.x", + test('should separate storybook packages and addons', async () => { + const result = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + devDependencies: { + '@storybook/react': 'x.y.z', + '@storybook/addon-essentials': 'x.x.x', + '@storybook/addon-knobs': 'x.x.y', + 'storybook-addon-deprecated': 'x.x.z', + }, + } as PackageJson, + mainConfig: { + ...mainJsMock, + addons: [ + '@storybook/addon-essentials', + 'storybook-addon-deprecated/register', + '@storybook/addon-knobs/preset', + ], }, - } - `); - }); + }); - test('should return user specified features', async () => { - const features = { - storyStoreV7: true, - }; - - const result = await computeStorybookMetadata({ - packageJson: packageJsonMock, - mainConfig: { - ...mainJsMock, - features, - }, + expect(result.addons).toMatchInlineSnapshot(` + Object { + "@storybook/addon-essentials": Object { + "options": undefined, + "version": "x.x.x", + }, + "@storybook/addon-knobs": Object { + "options": undefined, + "version": "x.x.x", + }, + "storybook-addon-deprecated": Object { + "options": undefined, + "version": "x.x.x", + }, + } + `); + expect(result.storybookPackages).toMatchInlineSnapshot(` + Object { + "@storybook/react": Object { + "version": "x.x.x", + }, + } + `); }); - expect(result.features).toEqual(features); - }); + test('should return user specified features', async () => { + const features = { + storyStoreV7: true, + }; - test('should infer builder and renderer from framework package.json', async () => { - expect( - await computeStorybookMetadata({ + const result = await computeStorybookMetadata({ packageJson: packageJsonMock, mainConfig: { ...mainJsMock, - framework: '@storybook/react-vite', + features, }, - }) - ).toMatchObject({ - framework: { name: '@storybook/react-vite' }, - renderer: '@storybook/react', - builder: '@storybook/builder-vite', + }); + + expect(result.features).toEqual(features); }); - }); - test('should return the number of refs', async () => { - const res = await computeStorybookMetadata({ - packageJson: packageJsonMock, - mainConfig: { - ...mainJsMock, - refs: { - a: { title: '', url: '' }, - b: { title: '', url: '' }, - }, - }, + test('should infer builder and renderer from framework package.json', async () => { + expect( + await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + framework: '@storybook/react-vite', + }, + }) + ).toMatchObject({ + framework: { name: '@storybook/react-vite' }, + renderer: '@storybook/react', + builder: '@storybook/builder-vite', + }); }); - expect(res.refCount).toEqual(2); - }); - test.each(Object.entries(metaFrameworks))( - 'should detect the supported metaframework: %s', - async (metaFramework, name) => { + test('should return the number of refs', async () => { const res = await computeStorybookMetadata({ - packageJson: { - ...packageJsonMock, - dependencies: { - [metaFramework]: 'x.x.x', + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + refs: { + a: { title: '', url: '' }, + b: { title: '', url: '' }, }, }, - mainConfig: mainJsMock, }); - expect(res.metaFramework).toEqual({ - name, - packageName: metaFramework, - version: 'x.x.x', - }); - } - ); + expect(res.refCount).toEqual(2); + }); + + test.each(Object.entries(metaFrameworks))( + 'should detect the supported metaframework: %s', + async (metaFramework, name) => { + const res = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + dependencies: { + [metaFramework]: 'x.x.x', + }, + } as PackageJson, + mainConfig: mainJsMock, + }); + expect(res.metaFramework).toEqual({ + name, + packageName: metaFramework, + version: 'x.x.x', + }); + } + ); + }); }); diff --git a/code/lib/telemetry/src/storybook-metadata.ts b/code/lib/telemetry/src/storybook-metadata.ts index d17294256497..01a54d9c9ec0 100644 --- a/code/lib/telemetry/src/storybook-metadata.ts +++ b/code/lib/telemetry/src/storybook-metadata.ts @@ -7,6 +7,7 @@ import { getProjectRoot, } from '@storybook/core-common'; import type { StorybookConfig, PackageJson } from '@storybook/types'; +import { readConfig } from '@storybook/csf-tools'; import type { StorybookMetadata, Dependency, StorybookAddon } from './types'; import { getActualPackageVersion, getActualPackageVersions } from './package-json'; @@ -160,6 +161,16 @@ export const computeStorybookMetadata = async ({ const hasStorybookEslint = !!allDependencies['eslint-plugin-storybook']; const storybookInfo = getStorybookInfo(packageJson); + + const { previewConfig } = storybookInfo; + if (previewConfig) { + const config = await readConfig(previewConfig); + const usesGlobals = !!( + config.getFieldNode(['globals']) || config.getFieldNode(['globalTypes']) + ); + metadata.preview = { ...metadata.preview, usesGlobals }; + } + const storybookVersion = storybookPackages[storybookInfo.frameworkPackage]?.version; return { diff --git a/code/lib/telemetry/src/telemetry.test.ts b/code/lib/telemetry/src/telemetry.test.ts index 5a45a53eb4c4..3c58187785df 100644 --- a/code/lib/telemetry/src/telemetry.test.ts +++ b/code/lib/telemetry/src/telemetry.test.ts @@ -1,10 +1,10 @@ /// ; -import fetch from 'isomorphic-unfetch'; +import fetch from 'node-fetch'; import { sendTelemetry } from './telemetry'; -jest.mock('isomorphic-unfetch'); +jest.mock('node-fetch'); jest.mock('./event-cache', () => { return { set: jest.fn() }; }); diff --git a/code/lib/telemetry/src/telemetry.ts b/code/lib/telemetry/src/telemetry.ts index a1ef5546db5a..090e58cf1240 100644 --- a/code/lib/telemetry/src/telemetry.ts +++ b/code/lib/telemetry/src/telemetry.ts @@ -1,4 +1,6 @@ -import originalFetch from 'isomorphic-unfetch'; +/// + +import originalFetch from 'node-fetch'; import retry from 'fetch-retry'; import { nanoid } from 'nanoid'; import type { Options, TelemetryData } from './types'; @@ -8,7 +10,7 @@ import { getSessionId } from './session-id'; const URL = process.env.STORYBOOK_TELEMETRY_URL || 'https://storybook.js.org/event-log'; -const fetch = retry(originalFetch); +const fetch = retry(originalFetch as any); let tasks: Promise[] = []; diff --git a/code/lib/telemetry/src/types.ts b/code/lib/telemetry/src/types.ts index d33b89677343..35266814dff7 100644 --- a/code/lib/telemetry/src/types.ts +++ b/code/lib/telemetry/src/types.ts @@ -9,9 +9,12 @@ export type EventType = | 'build' | 'upgrade' | 'init' + | 'browser' + | 'canceled' | 'error' | 'error-metadata' - | 'version-update'; + | 'version-update' + | 'core-config'; export interface Dependency { version: string | undefined; @@ -52,6 +55,9 @@ export type StorybookMetadata = { hasCustomBabel?: boolean; features?: StorybookConfig['features']; refCount?: number; + preview?: { + usesGlobals?: boolean; + }; }; export interface Payload { diff --git a/code/lib/telemetry/tsconfig.json b/code/lib/telemetry/tsconfig.json index a4429176e35f..7378641b0d33 100644 --- a/code/lib/telemetry/tsconfig.json +++ b/code/lib/telemetry/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "strict": true + "strict": true, + "types": ["node"] }, "include": ["src/**/*"] } diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 90ff18124812..dbdb97937c84 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -41,15 +41,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -80,5 +81,5 @@ ], "post": "./scripts/fix-theme-type-export.ts" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/theming/scripts/fix-theme-type-export.ts b/code/lib/theming/scripts/fix-theme-type-export.ts index 9e5ff7cb5973..d036e9bad40f 100644 --- a/code/lib/theming/scripts/fix-theme-type-export.ts +++ b/code/lib/theming/scripts/fix-theme-type-export.ts @@ -7,7 +7,7 @@ const run = async () => { const target = join(process.cwd(), 'dist', 'index.d.ts'); const contents = await readFile(target, 'utf8'); - const footer = contents.includes('// devmode') + const footer = contents.includes('// dev-mode') ? `export { StorybookTheme as Theme } from '../src/index';` : dedent` interface Theme extends StorybookTheme {} diff --git a/code/lib/types/README.md b/code/lib/types/README.md index 3fc5cbe80885..1035e9e1b693 100644 --- a/code/lib/types/README.md +++ b/code/lib/types/README.md @@ -3,6 +3,6 @@ Storybook types exports only typescript types for storybook usage. It exports typescript enums, which do have a runtime implementation. -But it should not export any implementation such as classes, method, function or constants. +But it should not export any implementation such as classes, methods, functions or constants. It also has no dependencies, all the types it exports are bundled in. diff --git a/code/lib/types/package.json b/code/lib/types/package.json index fdb5177f755f..2cca8688ce9c 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Core Storybook TS Types", "keywords": [ "storybook" @@ -36,17 +36,19 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" + "@types/react": "^16.14.34", + "file-system-cache": "2.3.0" }, "devDependencies": { "@storybook/csf": "^0.1.0", @@ -61,5 +63,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/lib/types/src/index.ts b/code/lib/types/src/index.ts index dadfe53704a4..756b3d2634cb 100644 --- a/code/lib/types/src/index.ts +++ b/code/lib/types/src/index.ts @@ -7,6 +7,6 @@ export * from './modules/api'; export * from './modules/docs'; export * from './modules/api-stories'; -export * from './modules/storyIndex'; +export * from './modules/indexer'; export * from './modules/composedStory'; export * from './modules/channelApi'; diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 424fa80579c5..e5ec1bb2c3f3 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -1,7 +1,16 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import type { + FC, + PropsWithChildren, + ReactElement, + ReactNode, + ValidationMap, + WeakValidationMap, +} from 'react'; import type { RenderData as RouterData } from '../../../router/src/types'; import type { ThemeVars } from '../../../theming/src/types'; +import type { API_SidebarOptions } from './api'; import type { Args, ArgsStoryFn as ArgsStoryFnForFramework, @@ -18,9 +27,14 @@ import type { StoryKind, StoryName, } from './csf'; -import type { IndexEntry } from './storyIndex'; +import type { IndexEntry } from './indexer'; -export type Addon_Types = Addon_TypesEnum | string; +export type Addon_Types = Exclude< + Addon_TypesEnum, + | Addon_TypesEnum.experimental_PAGE + | Addon_TypesEnum.experimental_SIDEBAR_BOTTOM + | Addon_TypesEnum.experimental_SIDEBAR_TOP +>; export interface Addon_ArgType extends InputType { defaultValue?: TArg; @@ -122,9 +136,10 @@ export interface Addon_AddStoryArgs { parameters: Parameters; } -export interface Addon_ClientApiAddon extends Addon_Type { +export type Addon_ClientApiAddon = Addon_Type & { apply: (a: Addon_StoryApi, b: any[]) => any; -} +}; + export interface Addon_ClientApiAddons { [key: string]: Addon_ClientApiAddon; } @@ -162,7 +177,11 @@ export type Addon_BaseDecorators = Array< (story: () => StoryFnReturnType, context: Addon_StoryContext) => StoryFnReturnType >; -export interface Addon_BaseAnnotations { +export interface Addon_BaseAnnotations< + TArgs, + StoryFnReturnType, + TRenderer extends Renderer = Renderer +> { /** * Dynamic data that are provided (and possibly updated by) Storybook and its addons. * @see [Arg story inputs](https://storybook.js.org/docs/react/api/csf#args-story-inputs) @@ -171,7 +190,7 @@ export interface Addon_BaseAnnotations { /** * ArgTypes encode basic metadata for args, such as `name`, `description`, `defaultValue` for an arg. These get automatically filled in by Storybook Docs. - * @see [Control annotations](https://github.com/storybookjs/storybook/blob/91e9dee33faa8eff0b342a366845de7100415367/addons/controls/README.md#control-annotations) + * @see [Arg types](https://storybook.js.org/docs/react/api/arg-types) */ argTypes?: Addons_ArgTypes; @@ -192,12 +211,12 @@ export interface Addon_BaseAnnotations { /** * Define a custom render function for the story(ies). If not passed, a default render function by the framework will be used. */ - render?: (args: TArgs, context: Addon_StoryContext) => StoryFnReturnType; + render?: (args: TArgs, context: Addon_StoryContext) => StoryFnReturnType; /** * Function that is executed after the story is rendered. */ - play?: (context: Addon_StoryContext) => Promise | void; + play?: (context: Addon_StoryContext) => Promise | void; } export interface Addon_Annotations @@ -293,35 +312,204 @@ export type BaseStory = | Addon_BaseStoryObject; export interface Addon_RenderOptions { - active?: boolean; - key?: string; + active: boolean; + /** + * @deprecated You should not use key anymore as of Storybook 7.2 this render method is invoked as a React component. + * This property will be removed in 8.0. + * */ + key?: unknown; } +/** + * @deprecated This type is deprecated and will be removed in 8.0. + */ export type ReactJSXElement = { type: any; props: any; key: any; }; -export interface Addon_Type { - title: (() => string) | string | ReactJSXElement; - type?: Addon_Types; +export type Addon_Type = + | Addon_BaseType + | Addon_PageType + | Addon_WrapperType + | Addon_SidebarBottomType + | Addon_SidebarTopType; +export interface Addon_BaseType { + /** + * The title of the addon. + * This can be a simple string, but it can also be a React.FunctionComponent or a React.ReactElement. + */ + title: FCWithoutChildren | ReactNode; + /** + * The type of the addon. + * @example Addon_TypesEnum.PANEL + */ + type: Exclude< + Addon_Types, + | Addon_TypesEnum.PREVIEW + | Addon_TypesEnum.experimental_PAGE + | Addon_TypesEnum.experimental_SIDEBAR_BOTTOM + | Addon_TypesEnum.experimental_SIDEBAR_TOP + >; + /** + * The unique id of the addon. + * @warn This will become non-optional in 8.0 + * + * This needs to be globally unique, so we recommend prefixing it with your org name or npm package name. + * + * Do not prefix with `storybook`, this is reserved for core storybook feature and core addons. + * + * @example 'my-org-name/my-addon-name' + */ id?: string; + /** + * This component will wrap your `render` function. + * + * With it you can determine if you want your addon to be rendered or not. + * + * This is to facilitate addons keeping state, and keep listening for events even when they are not currently on screen/rendered. + */ route?: (routeOptions: RouterData) => string; + /** + * This will determine the value of `active` prop of your render function. + */ match?: (matchOptions: RouterData) => boolean; - render: (renderOptions: Addon_RenderOptions) => any | null; + /** + * The actual contents of your addon. + * + * This is called as a function, so if you want to use hooks, + * your function needs to return a JSX.Element within which components are rendered + */ + render: (renderOptions: Partial) => ReactElement | null; + /** + * @unstable + */ paramKey?: string; + /** + * @unstable + */ disabled?: boolean; + /** + * @unstable + */ hidden?: boolean; } +/** + * This is a copy of FC from react/index.d.ts, but has the PropsWithChildren type removed + * this is correct and more type strict, and future compatible with React.FC in React 18+ + * + * @deprecated This type is deprecated and will be removed in 8.0. (assuming the manager uses React 18 is out by then) + */ +interface FCWithoutChildren

{ + (props: P, context?: any): ReactElement | null; + propTypes?: WeakValidationMap

| undefined; + contextTypes?: ValidationMap | undefined; + defaultProps?: Partial

| undefined; + displayName?: string | undefined; +} + +export interface Addon_PageType { + type: Addon_TypesEnum.experimental_PAGE; + /** + * The unique id of the page. + */ + id: string; + /** + * The URL to navigate to when Storybook needs to navigate to this page. + */ + url: string; + /** + * The title is used in mobile mode to represent the page in the navigation. + */ + title: FCWithoutChildren | string | ReactElement | ReactNode; + /** + * The main content of the addon, a function component without any props. + * Storybook will render your component always. + * + * If you want to render your component only when the URL matches, use the `Route` component. + * @example + * import { Route } from '@storybook/router'; + * + * render: () => { + * return ( + * + * + * + * ); + * }; + */ + render: FCWithoutChildren; +} + +export interface Addon_WrapperType { + type: Addon_TypesEnum.PREVIEW; + /** + * The unique id of the page. + */ + id: string; + /** + * A React.FunctionComponent that wraps the story. + * + * This component must accept a children prop, and render it. + */ + render: FC< + PropsWithChildren<{ + index: number; + children: ReactNode; + id: string; + storyId: StoryId; + active: boolean; + }> + >; +} +export interface Addon_SidebarBottomType { + type: Addon_TypesEnum.experimental_SIDEBAR_BOTTOM; + /** + * The unique id of the tool. + */ + id: string; + /** + * A React.FunctionComponent. + */ + render: FCWithoutChildren; +} + +export interface Addon_SidebarTopType { + type: Addon_TypesEnum.experimental_SIDEBAR_TOP; + /** + * The unique id of the tool. + */ + id: string; + /** + * A React.FunctionComponent. + */ + render: FCWithoutChildren; +} + +type Addon_TypeBaseNames = Exclude< + Addon_TypesEnum, + | Addon_TypesEnum.PREVIEW + | Addon_TypesEnum.experimental_PAGE + | Addon_TypesEnum.experimental_SIDEBAR_BOTTOM + | Addon_TypesEnum.experimental_SIDEBAR_TOP +>; + +export interface Addon_TypesMapping extends Record { + [Addon_TypesEnum.PREVIEW]: Addon_WrapperType; + [Addon_TypesEnum.experimental_PAGE]: Addon_PageType; + [Addon_TypesEnum.experimental_SIDEBAR_BOTTOM]: Addon_SidebarBottomType; + [Addon_TypesEnum.experimental_SIDEBAR_TOP]: Addon_SidebarTopType; +} + export type Addon_Loader = (api: API) => void; export interface Addon_Loaders { [key: string]: Addon_Loader; } -export interface Addon_Collection { - [key: string]: Addon_Type; +export interface Addon_Collection { + [key: string]: T; } export interface Addon_Elements { [key: string]: Addon_Collection; @@ -334,14 +522,51 @@ export interface Addon_Config { toolbar?: { [id: string]: Addon_ToolbarConfig; }; + sidebar?: API_SidebarOptions; [key: string]: any; } export enum Addon_TypesEnum { + /** + * This API is used to create a tab the toolbar above the canvas, This API might be removed in the future. + * @unstable + */ TAB = 'tab', + /** + * This adds panels to the addons side panel. + */ PANEL = 'panel', + /** + * This adds items in the toolbar above the canvas - on the left side. + */ TOOL = 'tool', + /** + * This adds items in the toolbar above the canvas - on the right side. + */ TOOLEXTRA = 'toolextra', + /** + * This adds wrapper components around the canvas/iframe component storybook renders. + * @unstable this API is not stable yet, and is likely to change in 8.0. + */ PREVIEW = 'preview', + /** + * This adds pages that render instead of the canvas. + * @unstable + */ + experimental_PAGE = 'page', + /** + * This adds items in the bottom of the sidebar. + * @unstable + */ + experimental_SIDEBAR_BOTTOM = 'sidebar-bottom', + /** + * This adds items in the top of the sidebar. + * @unstable This will get replaced with a new API in 8.0, use at your own risk. + */ + experimental_SIDEBAR_TOP = 'sidebar-top', + + /** + * @deprecated This property does nothing, and will be removed in Storybook 8.0. + */ NOTES_ELEMENT = 'notes-element', } diff --git a/code/lib/types/src/modules/api-stories.ts b/code/lib/types/src/modules/api-stories.ts index 7cfd32b22284..3df42dd812ec 100644 --- a/code/lib/types/src/modules/api-stories.ts +++ b/code/lib/types/src/modules/api-stories.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import type { DocsOptions } from './core-common'; import type { Args, ArgTypes, Parameters, ComponentTitle, StoryId, Path, Tag } from './csf'; -import type { IndexEntry } from './storyIndex'; +import type { IndexEntry } from './indexer'; export interface API_BaseEntry { id: StoryId; @@ -130,7 +130,7 @@ export interface API_IndexHash { } // We used to received a bit more data over the channel on the SET_STORIES event, including // the full parameters for each story. -type API_PreparedIndexEntry = IndexEntry & { +export type API_PreparedIndexEntry = IndexEntry & { parameters?: Parameters; argTypes?: ArgTypes; args?: Args; @@ -172,3 +172,19 @@ export interface API_Versions { next?: API_Version; current?: API_Version; } + +export type API_StatusValue = 'pending' | 'success' | 'error' | 'warn' | 'unknown'; + +export interface API_StatusObject { + status: API_StatusValue; + title: string; + description: string; + data?: any; +} + +export type API_StatusState = Record>; +export type API_StatusUpdate = Record; + +export type API_FilterFunction = ( + item: API_PreparedIndexEntry & { status: Record } +) => boolean; diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index b9ed52477190..53fa99965b55 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -1,21 +1,20 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import type { ReactElement } from 'react'; import type { RenderData } from '../../../router/src/types'; import type { Channel } from '../../../channels/src'; import type { ThemeVars } from '../../../theming/src/types'; -import type { ViewMode } from './csf'; import type { DocsOptions } from './core-common'; -import type { API_HashEntry, API_IndexHash } from './api-stories'; +import type { API_FilterFunction, API_HashEntry, API_IndexHash } from './api-stories'; import type { SetStoriesStory, SetStoriesStoryData } from './channelApi'; -import type { Addon_Type } from './addons'; -import type { StoryIndex } from './storyIndex'; +import type { Addon_BaseType, Addon_Collection, Addon_RenderOptions, Addon_Type } from './addons'; +import type { StoryIndex } from './indexer'; -export type API_ViewMode = 'story' | 'info' | 'settings' | 'page' | undefined | string; +type OrString = T | (string & {}); -export interface API_RenderOptions { - active: boolean; - key: string; -} +export type API_ViewMode = OrString<'story' | 'docs' | 'settings'> | undefined; + +export type API_RenderOptions = Addon_RenderOptions; export interface API_RouteOptions { storyId: string; @@ -30,13 +29,20 @@ export interface API_MatchOptions { path: string; } +/** + * @deprecated this is synonymous with `Addon_Type`. This interface will be removed in 8.0 + */ export type API_Addon = Addon_Type; -export interface API_Collection { - [key: string]: T; -} +/** + * @deprecated this is synonymous with `Addon_Collection`. This interface will be removed in 8.0 + */ +export type API_Collection = Addon_Collection; -export type API_Panels = API_Collection; +/** + * @deprecated This interface will be removed in 8.0 + */ +export type API_Panels = Addon_Collection; export type API_StateMerger = (input: S) => S; @@ -47,6 +53,9 @@ export interface API_ProviderData { export interface API_Provider { channel?: Channel; + /** + * @deprecated will be removed in 8.0, please use channel instead + */ serverChannel?: Channel; renderPreview?: API_IframeRenderer; handleAPI(api: API): void; @@ -61,12 +70,12 @@ export interface API_Provider { export type API_IframeRenderer = ( storyId: string, - viewMode: ViewMode, + viewMode: API_ViewMode, id: string, baseUrl: string, scale: number, queryParams: Record -) => any; +) => ReactElement | null; export interface API_UIOptions { name?: string; @@ -88,7 +97,7 @@ export interface API_Layout { showTabs: boolean; showToolbar: boolean; /** - * @deprecated + * @deprecated, will be removed in 8.0 - this API no longer works */ isToolshown?: boolean; } @@ -104,10 +113,18 @@ export type API_ActiveTabsType = 'sidebar' | 'canvas' | 'addons'; export interface API_SidebarOptions { showRoots?: boolean; + filters?: Record; collapsedRoots?: string[]; renderLabel?: (item: API_HashEntry) => any; } +interface OnClearOptions { + /** + * True when the user dismissed the notification. + */ + dismissed: boolean; +} + export interface API_Notification { id: string; link: string; @@ -115,12 +132,11 @@ export interface API_Notification { headline: string; subHeadline?: string | any; }; - icon?: { name: string; color?: string; }; - onClear?: () => void; + onClear?: (options: OnClearOptions) => void; } type API_Versions = Record; diff --git a/code/lib/types/src/modules/channelApi.ts b/code/lib/types/src/modules/channelApi.ts index 0fe35baf824a..b58129999e21 100644 --- a/code/lib/types/src/modules/channelApi.ts +++ b/code/lib/types/src/modules/channelApi.ts @@ -1,3 +1,4 @@ +import type { API_ViewMode } from './api'; import type { Args, ArgTypes, @@ -5,7 +6,6 @@ import type { Parameters, StoryId, StoryKind, - ViewMode, Globals, GlobalTypes, } from './csf'; @@ -23,7 +23,7 @@ export interface SetStoriesStory { [optionName: string]: any; }; docsOnly?: boolean; - viewMode?: ViewMode; + viewMode?: API_ViewMode; [parameterName: string]: any; }; argTypes?: ArgTypes; diff --git a/code/lib/types/src/modules/composedStory.ts b/code/lib/types/src/modules/composedStory.ts index ce31138bac20..f02a30187a38 100644 --- a/code/lib/types/src/modules/composedStory.ts +++ b/code/lib/types/src/modules/composedStory.ts @@ -8,8 +8,8 @@ import type { ComponentAnnotations, Parameters, StoryAnnotations, + StoryAnnotationsOrFn, StoryContext, - StoryFn, } from './csf'; import type { ProjectAnnotations } from './story'; @@ -22,6 +22,15 @@ export type Store_CSFExports) // or PrimaryButton() + * PrimaryButton.play({ canvasElement: container }) + */ export type ComposedStoryPlayContext = Partial< StoryContext & Pick, 'canvasElement'> >; @@ -30,40 +39,52 @@ export type ComposedStoryPlayFn ) => Promise | void; -export type PreparedStoryFn = AnnotatedStoryFn< - TRenderer, - TArgs -> & { play: ComposedStoryPlayFn; args: TArgs; id: StoryId }; - -export type ComposedStory = - | StoryFn - | StoryAnnotations; +/** + * A story function with partial args, used internally by composeStory + */ +export type PartialArgsStoryFn = ( + args?: TArgs +) => (TRenderer & { + T: TArgs; +})['storyResult']; /** - * T represents the whole ES module of a stories file. K of T means named exports (basically the Story type) - * 1. pick the keys K of T that have properties that are Story - * 2. infer the actual prop type for each Story - * 3. reconstruct Story with Partial. Story -> Story> + * A story that got recomposed for portable stories, containing all the necessary data to be rendered in external environments + */ +export type ComposedStoryFn< + TRenderer extends Renderer = Renderer, + TArgs = Args +> = PartialArgsStoryFn & { + play: ComposedStoryPlayFn; + args: TArgs; + id: StoryId; + storyName: string; + parameters: Parameters; +}; +/** + * Based on a module of stories, it returns all stories within it, filtering non-stories + * Each story will have partial props, as their props should be handled when composing stories */ export type StoriesWithPartialProps = { - // @TODO once we can use Typescript 4.0 do this to exclude nonStory exports: - // replace [K in keyof TModule] with [K in keyof TModule as TModule[K] extends ComposedStory ? K : never] - [K in keyof TModule]: TModule[K] extends ComposedStory - ? PreparedStoryFn> + // T represents the whole ES module of a stories file. K of T means named exports (basically the Story type) + // 1. pick the keys K of T that have properties that are Story + // 2. infer the actual prop type for each Story + // 3. reconstruct Story with Partial. Story -> Story> + [K in keyof TModule as TModule[K] extends StoryAnnotationsOrFn + ? K + : never]: TModule[K] extends StoryAnnotationsOrFn + ? ComposedStoryFn> : unknown; }; +/** + * Type used for integrators of portable stories, as reference when creating their own composeStory function + */ export interface ComposeStoryFn { ( storyAnnotations: AnnotatedStoryFn | StoryAnnotations, componentAnnotations: ComponentAnnotations, projectAnnotations: ProjectAnnotations, exportsName?: string - ): { - (extraArgs: Partial): TRenderer['storyResult']; - storyName: string; - args: Args; - play: ComposedStoryPlayFn; - parameters: Parameters; - }; + ): ComposedStoryFn; } diff --git a/code/lib/types/src/modules/core-common.ts b/code/lib/types/src/modules/core-common.ts index f45ee3b1d00c..45d94e585eb3 100644 --- a/code/lib/types/src/modules/core-common.ts +++ b/code/lib/types/src/modules/core-common.ts @@ -6,7 +6,7 @@ import type { TransformOptions } from '@babel/core'; import type { Router } from 'express'; import type { Server } from 'http'; import type { PackageJson as PackageJsonFromTypeFest } from 'type-fest'; -import type { StoriesEntry, StoryIndexer } from './storyIndex'; +import type { StoriesEntry, Indexer, StoryIndexer } from './indexer'; /** * ⚠️ This file contains internal WIP types they MUST NOT be exported outside this package for now! @@ -38,6 +38,11 @@ export interface CoreConfig { * @see https://storybook.js.org/telemetry */ disableTelemetry?: boolean; + + /** + * Disables notifications for Storybook updates. + */ + disableWhatsNewNotifications?: boolean; /** * Enable crash reports to be sent to Storybook telemetry * @see https://storybook.js.org/telemetry @@ -104,12 +109,6 @@ export interface VersionCheck { time: number; } -export interface ReleaseNotesData { - success: boolean; - currentVersion: string; - showOnFirstLaunch: boolean; -} - export interface Stats { toJson: () => any; } @@ -139,6 +138,7 @@ export interface CLIOptions { disableTelemetry?: boolean; enableCrashReports?: boolean; host?: string; + initialPath?: string; /** * @deprecated Use 'staticDirs' Storybook Configuration option instead */ @@ -155,7 +155,6 @@ export interface CLIOptions { loglevel?: string; quiet?: boolean; versionUpdates?: boolean; - releaseNotes?: boolean; docs?: boolean; debugWebpack?: boolean; webpackStatsJson?: string | boolean; @@ -170,7 +169,6 @@ export interface BuilderOptions { docsMode?: boolean; features?: StorybookConfig['features']; versionCheck?: VersionCheck; - releaseNotesData?: ReleaseNotesData; disableWebpackDefaults?: boolean; serverChannelUrl?: string; } @@ -237,7 +235,7 @@ export type Entry = string; type CoreCommon_StorybookRefs = Record< string, - { title: string; url: string } | { disable: boolean } + { title: string; url: string } | { disable: boolean; expanded?: boolean } >; export type DocsOptions = { @@ -371,9 +369,15 @@ export interface StorybookConfig { /** * Process CSF files for the story index. + * @soonDeprecated use {@link experimental_indexers} instead */ storyIndexers?: PresetValue; + /** + * Process CSF files for the story index. + */ + experimental_indexers?: PresetValue; + /** * Docs related features in index generation */ @@ -389,13 +393,20 @@ export interface StorybookConfig { previewBody?: PresetValue; /** - * Programatically override the preview's main page template. + * Programmatically override the preview's main page template. * This should return a reference to a file containing an `.ejs` template * that will be interpolated with environment variables. * * @example '.storybook/index.ejs' */ previewMainTemplate?: string; + + /** + * Programmatically modify the preview head/body HTML. + * The managerHead function accept a string, + * which is the existing head content, and return a modified string. + */ + managerHead?: PresetValue; } export type PresetValue = T | ((config: T, options: Options) => T | Promise); diff --git a/code/lib/types/src/modules/csf.ts b/code/lib/types/src/modules/csf.ts index ea5c13668bfd..b72b0a42af5a 100644 --- a/code/lib/types/src/modules/csf.ts +++ b/code/lib/types/src/modules/csf.ts @@ -60,13 +60,19 @@ export type { Tag, } from '@storybook/csf'; -export type ViewMode = ViewModeBase | 'story' | 'info' | 'settings' | string | undefined; +type OrString = T | (string & {}); + +export type ViewMode = OrString | undefined; type Layout = 'centered' | 'fullscreen' | 'padded' | 'none'; export interface StorybookParameters { options?: Addon_OptionsParameter; - /** The layout property defines basic styles added to the preview body where the story is rendered. If you pass 'none', no styles are applied. */ + /** + * The layout property defines basic styles added to the preview body where the story is rendered. + * + * If you pass `none`, no styles are applied. + */ layout?: Layout; } diff --git a/code/lib/types/src/modules/indexer.ts b/code/lib/types/src/modules/indexer.ts new file mode 100644 index 000000000000..ccd1ddaef206 --- /dev/null +++ b/code/lib/types/src/modules/indexer.ts @@ -0,0 +1,174 @@ +import type { StoryId, ComponentTitle, StoryName, Parameters, Tag, Path } from './csf'; + +type ExportName = string; +type MetaId = string; + +interface StoriesSpecifier { + /** + * When auto-titling, what to prefix all generated titles with (default: '') + */ + titlePrefix?: string; + /** + * Where to start looking for story files + */ + directory: string; + /** + * What does the filename of a story file look like? + * (a glob, relative to directory, no leading `./`) + * If unset, we use `** / *.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))` (no spaces) + */ + files?: string; +} + +export type StoriesEntry = string | StoriesSpecifier; + +export type NormalizedStoriesSpecifier = Required & { + /* + * Match the "importPath" of a file (e.g. `./src/button/Button.stories.js') + * relative to the current working directory. + */ + importPathMatcher: RegExp; +}; + +export interface IndexerOptions { + makeTitle: (userTitle?: string) => string; +} + +export interface IndexedStory { + id: string; + name: string; + tags?: Tag[]; + parameters?: Parameters; +} +export interface IndexedCSFFile { + meta: { id?: string; title?: string; tags?: Tag[] }; + stories: IndexedStory[]; +} + +/** + * FIXME: This is a temporary type to allow us to deprecate the old indexer API. + * We should remove this type and the deprecated indexer API in 8.0. + */ +type BaseIndexer = { + /** + * A regular expression that should match all files to be handled by this indexer + */ + test: RegExp; +}; + +/** + * An indexer describes which filenames it handles, and how to index each individual file - turning it into an entry in the index. + */ +export type Indexer = BaseIndexer & { + /** + * Indexes a file containing stories or docs. + * @param fileName The name of the file to index. + * @param options {@link IndexerOptions} for indexing the file. + * @returns A promise that resolves to an array of {@link IndexInput} objects. + */ + index: (fileName: string, options: IndexerOptions) => Promise; + /** + * @soonDeprecated Use {@link index} instead + */ + indexer?: never; +}; + +export type DeprecatedIndexer = BaseIndexer & { + indexer: (fileName: string, options: IndexerOptions) => Promise; + index?: never; +}; + +/** + * @soonDeprecated Use {@link Indexer} instead + */ +export type StoryIndexer = Indexer | DeprecatedIndexer; + +export interface BaseIndexEntry { + id: StoryId; + name: StoryName; + title: ComponentTitle; + tags?: Tag[]; + importPath: Path; +} +export type StoryIndexEntry = BaseIndexEntry & { + type: 'story'; +}; + +export type DocsIndexEntry = BaseIndexEntry & { + storiesImports: Path[]; + type: 'docs'; +}; + +export type IndexEntry = StoryIndexEntry | DocsIndexEntry; + +/** + * The base input for indexing a story or docs entry. + */ +export type BaseIndexInput = { + /** The file to import from e.g. the story file. */ + importPath: Path; + /** The name of the export to import. */ + exportName: ExportName; + /** The name of the entry, auto-generated from {@link exportName} if unspecified. */ + name?: StoryName; + /** The location in the sidebar, auto-generated from {@link importPath} if unspecified. */ + title?: ComponentTitle; + /** + * The custom id optionally set at `meta.id` if it needs to differ from the id generated via {@link title}. + * If unspecified, the meta id will be auto-generated from {@link title}. + * If specified, the meta in the CSF file _must_ have a matching id set at `meta.id`, to be correctly matched. + */ + metaId?: MetaId; + /** Tags for filtering entries in Storybook and its tools. */ + tags?: Tag[]; + /** + * The id of the entry, auto-generated from {@link title}/{@link metaId} and {@link exportName} if unspecified. + * If specified, the story in the CSF file _must_ have a matching id set at `parameters.__id`, to be correctly matched. + * Only use this if you need to override the auto-generated id. + */ + __id?: StoryId; +}; + +/** + * The input for indexing a story entry. + */ +export type StoryIndexInput = BaseIndexInput & { + type: 'story'; +}; + +/** + * The input for indexing a docs entry. + */ +export type DocsIndexInput = BaseIndexInput & { + type: 'docs'; + /** Paths to story files that must be pre-loaded for this docs entry. */ + storiesImports?: Path[]; +}; + +export type IndexInput = StoryIndexInput | DocsIndexInput; + +export interface V3CompatIndexEntry extends Omit { + kind: ComponentTitle; + story: StoryName; + parameters: Parameters; +} + +export interface StoryIndexV2 { + v: number; + stories: Record< + StoryId, + Omit & { + name?: StoryName; + } + >; +} + +export interface StoryIndexV3 { + v: number; + stories: Record; +} + +export interface StoryIndex { + v: number; + entries: Record; +} diff --git a/code/lib/types/src/modules/storyIndex.ts b/code/lib/types/src/modules/storyIndex.ts deleted file mode 100644 index 2bb774b0eb6b..000000000000 --- a/code/lib/types/src/modules/storyIndex.ts +++ /dev/null @@ -1,92 +0,0 @@ -import type { StoryId, ComponentTitle, StoryName, Parameters, Tag, Path } from './csf'; - -interface StoriesSpecifier { - /** - * When auto-titling, what to prefix all generated titles with (default: '') - */ - titlePrefix?: string; - /** - * Where to start looking for story files - */ - directory: string; - /** - * What does the filename of a story file look like? - * (a glob, relative to directory, no leading `./`) - * If unset, we use `** / *.@(mdx|stories.@(mdx|tsx|ts|jsx|js))` (no spaces) - */ - files?: string; -} - -export type StoriesEntry = string | StoriesSpecifier; - -export type NormalizedStoriesSpecifier = Required & { - /* - * Match the "importPath" of a file (e.g. `./src/button/Button.stories.js') - * relative to the current working directory. - */ - importPathMatcher: RegExp; -}; - -export interface IndexerOptions { - makeTitle: (userTitle?: string) => string; -} - -export interface IndexedStory { - id: string; - name: string; - tags?: Tag[]; - parameters?: Parameters; -} -export interface IndexedCSFFile { - meta: { title?: string; tags?: Tag[] }; - stories: IndexedStory[]; -} - -export interface StoryIndexer { - test: RegExp; - indexer: (fileName: string, options: IndexerOptions) => Promise; -} - -export interface BaseIndexEntry { - id: StoryId; - name: StoryName; - title: ComponentTitle; - tags?: Tag[]; - importPath: Path; -} -export type StoryIndexEntry = BaseIndexEntry & { - type: 'story'; -}; - -export type DocsIndexEntry = BaseIndexEntry & { - storiesImports: Path[]; - type: 'docs'; -}; - -export type IndexEntry = StoryIndexEntry | DocsIndexEntry; - -export interface V3CompatIndexEntry extends Omit { - kind: ComponentTitle; - story: StoryName; - parameters: Parameters; -} - -export interface StoryIndexV2 { - v: number; - stories: Record< - StoryId, - Omit & { - name?: StoryName; - } - >; -} - -export interface StoryIndexV3 { - v: number; - stories: Record; -} - -export interface StoryIndex { - v: number; - entries: Record; -} diff --git a/code/nx.json b/code/nx.json index 9535629090ca..40580396505c 100644 --- a/code/nx.json +++ b/code/nx.json @@ -14,7 +14,7 @@ }, "tasksRunnerOptions": { "default": { - "runner": "@nrwl/nx-cloud", + "runner": "nx-cloud", "options": { "cacheableOperations": ["prep"], "accessToken": "NGVmYTkxMmItYzY3OS00MjkxLTk1ZDktZDFmYTFmNmVlNGY4fHJlYWQ=", @@ -29,13 +29,29 @@ }, "targetDefaults": { "build": { - "dependsOn": [{ "projects": "dependencies", "target": "build" }] + "dependsOn": [ + { + "target": "build", + "dependencies": true + } + ] }, "package": { - "dependsOn": [{ "projects": "dependencies", "target": "package" }] + "dependsOn": [ + { + "target": "package", + "dependencies": true + } + ] }, "prep": { - "dependsOn": [{ "projects": "dependencies", "target": "prep", "params": "forward" }], + "dependsOn": [ + { + "target": "prep", + "params": "forward", + "dependencies": true + } + ], "outputs": ["{projectRoot}/dist"] } } diff --git a/code/package.json b/code/package.json index c62e79d97d5e..196be495bf4a 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", @@ -17,6 +17,8 @@ "addons/*", "frameworks/*", "lib/*", + "deprecated/*", + "builders/*", "ui/*", "presets/*", "renderers/*" @@ -32,7 +34,6 @@ "danger": "danger", "generate-sandboxes": "ts-node --swc ../scripts/sandbox/generate.ts", "github-release": "github-release-from-changelog", - "linear-export": "ts-node --swc --project=../scripts/tsconfig.json ../scripts/linear-export.ts", "lint": "yarn lint:js && yarn lint:md", "lint:ejs": "ejslint **/*.ejs", "lint:js": "yarn lint:js:cmd . --quiet", @@ -78,28 +79,27 @@ "defaults" ], "resolutions": { - "@playwright/test": "1.32.3", + "@playwright/test": "1.36.0", "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/experimental-utils": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "eslint": "^8.28.0", - "playwright": "1.32.3", - "serialize-javascript": "^3.1.0" + "playwright": "1.36.0", + "playwright-core": "1.36.0", + "serialize-javascript": "^3.1.0", + "type-fest": "~2.19" }, "dependencies": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.20.1", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", "@emotion/jest": "^11.10.0", "@jest/globals": "^29.3.1", - "@linear/sdk": "^1.21.0", - "@nrwl/cli": "^15.4.5", - "@nrwl/nx-cloud": "^15.0.2", - "@nrwl/workspace": "^15.4.5", - "@playwright/test": "1.32.3", + "@nx/workspace": "16.2.1", + "@playwright/test": "1.36.0", "@storybook/addon-a11y": "workspace:*", "@storybook/addon-actions": "workspace:*", "@storybook/addon-backgrounds": "workspace:*", @@ -151,7 +151,7 @@ "@storybook/html-vite": "workspace:*", "@storybook/html-webpack5": "workspace:*", "@storybook/instrumenter": "workspace:*", - "@storybook/jest": "future", + "@storybook/jest": "next", "@storybook/linter-config": "^3.1.2", "@storybook/manager": "workspace:*", "@storybook/manager-api": "workspace:*", @@ -184,7 +184,7 @@ "@storybook/svelte": "workspace:*", "@storybook/svelte-webpack5": "workspace:*", "@storybook/telemetry": "workspace:*", - "@storybook/testing-library": "future", + "@storybook/testing-library": "next", "@storybook/theming": "workspace:*", "@storybook/types": "workspace:*", "@storybook/vue": "workspace:*", @@ -213,39 +213,39 @@ "@typescript-eslint/experimental-utils": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", "@vitejs/plugin-react": "^2.1.0", - "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.1.0", "babel-loader": "^9.1.2", "chromatic": "6.11.2", "concurrently": "^5.3.0", "cross-env": "^7.0.3", - "danger": "^10.6.2", - "esbuild": "^0.17.0", + "danger": "^11.2.6", + "esbuild": "^0.18.0", "esbuild-loader": "^3.0.0", "esbuild-plugin-alias": "^0.2.1", "eslint": "^8.28.0", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.26.0", + "eslint-plugin-local-rules": "portal:../scripts/eslint-plugin-local-rules", "eslint-plugin-react": "^7.31.10", "eslint-plugin-storybook": "^0.6.6", "fs-extra": "^11.1.0", "github-release-from-changelog": "^2.1.1", "glob": "^10.0.0", - "http-server": "^0.12.3", + "http-server": "^14.1.1", "husky": "^4.3.7", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "jest-image-snapshot": "^6.0.0", - "jest-junit": "^14.0.1", + "jest-junit": "^16.0.0", "jest-os-detection": "^1.3.1", "jest-serializer-html": "^7.1.0", "jest-watch-typeahead": "^2.2.1", "lerna": "^6.4.0", - "lint-staged": "^10.5.4", + "lint-staged": "^13.2.2", "lodash": "^4.17.21", - "node-gyp": "^8.4.0", - "nx": "^15.4.5", - "playwright": "1.32.3", + "node-gyp": "^9.3.1", + "nx": "16.2.1", + "nx-cloud": "16.0.5", "prettier": "2.8.0", "process": "^0.11.10", "raf": "^3.4.1", @@ -259,7 +259,7 @@ "util": "^0.12.4", "vite": "^4.0.0", "vite-plugin-turbosnap": "^1.0.1", - "wait-on": "^5.2.1" + "wait-on": "^7.0.1" }, "dependenciesMeta": { "ejs": { @@ -285,7 +285,7 @@ "built": false } }, - "packageManager": "yarn@3.3.0", + "packageManager": "yarn@3.5.1", "engines": { "node": ">=16.0.0" }, @@ -325,10 +325,6 @@ [ "dependencies", "Dependency Upgrades" - ], - [ - "other", - "Other" ] ] } diff --git a/code/playwright.config.ts b/code/playwright.config.ts index 71ca6340d87d..129c1aac537d 100644 --- a/code/playwright.config.ts +++ b/code/playwright.config.ts @@ -1,5 +1,4 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; +import { defineConfig, devices } from '@playwright/test'; /** * Read environment variables from file. @@ -10,7 +9,7 @@ import { devices } from '@playwright/test'; /** * See https://playwright.dev/docs/test-configuration. */ -const config: PlaywrightTestConfig = { +export default defineConfig({ testDir: './e2e-tests', /* Maximum time one test can run for. */ timeout: 30 * 1000, @@ -112,6 +111,4 @@ const config: PlaywrightTestConfig = { // command: 'npm run start', // port: 3000, // }, -}; - -export default config; +}); diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index b85d293bc256..1eb7e78f3483 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Create React App preset", "keywords": [ "storybook" @@ -41,23 +41,24 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/types": "workspace:*", "@types/babel__core": "^7.1.7", "babel-plugin-react-docgen": "^4.1.0", "pnp-webpack-plugin": "^1.7.0", "semver": "^7.3.5" }, "devDependencies": { - "@storybook/node-logger": "7.1.0-alpha.17", + "@storybook/node-logger": "workspace:*", "@types/node": "^16.0.0", "typescript": "~4.9.3" }, @@ -76,5 +77,5 @@ "cjs" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/create-react-app/src/helpers/mergePlugins.ts b/code/presets/create-react-app/src/helpers/mergePlugins.ts index d315a29f24cb..4c3ff84ead18 100644 --- a/code/presets/create-react-app/src/helpers/mergePlugins.ts +++ b/code/presets/create-react-app/src/helpers/mergePlugins.ts @@ -1,7 +1,7 @@ -import type { WebpackPluginInstance } from 'webpack'; +import type { Configuration } from 'webpack'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; -export const mergePlugins = (...args: WebpackPluginInstance[]): WebpackPluginInstance[] => +export const mergePlugins = (...args: Configuration['plugins']): Configuration['plugins'] => args.reduce((plugins, plugin) => { if ( plugins.some( @@ -23,4 +23,4 @@ export const mergePlugins = (...args: WebpackPluginInstance[]): WebpackPluginIns }); } return [...plugins, updatedPlugin]; - }, [] as WebpackPluginInstance[]); + }, [] as Configuration['plugins']); diff --git a/code/presets/create-react-app/src/index.ts b/code/presets/create-react-app/src/index.ts index c772598f74a4..e480e438ef91 100644 --- a/code/presets/create-react-app/src/index.ts +++ b/code/presets/create-react-app/src/index.ts @@ -108,7 +108,7 @@ const webpack = async ( : []; // NOTE: This is code replicated from - // https://github.com/storybookjs/storybook/blob/89830ad76384faeaeb0c19df3cb44232cdde261b/lib/builder-webpack5/src/preview/base-webpack.config.ts#L45-L53 + // https://github.com/storybookjs/storybook/blob/89830ad76384faeaeb0c19df3cb44232cdde261b/builders/builder-webpack5/src/preview/base-webpack.config.ts#L45-L53 // as we are not applying SB's default webpack config here. // We need to figure out a better way to apply various layers of webpack config; perhaps // these options need to be in a separate preset. diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 2c9978e87440..21d6dccaa3a4 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -41,14 +41,15 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-alpha.17", + "@storybook/core-webpack": "workspace:*", "@types/node": "^16.0.0", "html-loader": "^3.1.0", "webpack": "5" @@ -71,5 +72,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 4d7ae7b7b045..573dec779a7f 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -41,16 +41,17 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.21.0", - "@babel/preset-typescript": "^7.21.0", - "@storybook/core-webpack": "7.1.0-alpha.17", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@storybook/core-webpack": "workspace:*", "@types/node": "^16.0.0" }, "devDependencies": { @@ -73,5 +74,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/preact-webpack/src/index.ts b/code/presets/preact-webpack/src/index.ts index 76c50e0affb0..758012bf73ab 100644 --- a/code/presets/preact-webpack/src/index.ts +++ b/code/presets/preact-webpack/src/index.ts @@ -3,7 +3,8 @@ import type { StorybookConfig } from './types'; export * from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = (input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; export const babel: StorybookConfig['babelDefault'] = (config) => { return { @@ -38,10 +39,10 @@ export const webpackFinal: StorybookConfig['webpackFinal'] = (config) => { ...config.resolve, alias: { ...(config.resolve?.alias || {}), - react: wrapForPnP('preact/compat'), - 'react-dom/test-utils': wrapForPnP('preact/test-utils'), - 'react-dom': wrapForPnP('preact/compat'), - 'react/jsx-runtime': wrapForPnP('preact/jsx-runtime'), + react: getAbsolutePath('preact/compat'), + 'react-dom/test-utils': getAbsolutePath('preact/test-utils'), + 'react-dom': getAbsolutePath('preact/compat'), + 'react/jsx-runtime': getAbsolutePath('preact/jsx-runtime'), }, }, }; diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index efe8db5df45c..d61c44306e2b 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" @@ -56,20 +56,21 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@babel/preset-flow": "^7.18.6", - "@babel/preset-react": "^7.18.6", + "@babel/preset-flow": "^7.22.5", + "@babel/preset-react": "^7.22.5", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", - "@storybook/react": "7.1.0-alpha.17", + "@storybook/core-webpack": "workspace:*", + "@storybook/docs-tools": "workspace:*", + "@storybook/node-logger": "workspace:*", + "@storybook/react": "workspace:*", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", @@ -84,7 +85,7 @@ "typescript": "~4.9.3" }, "peerDependencies": { - "@babel/core": "^7.11.5", + "@babel/core": "^7.22.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, @@ -111,5 +112,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/react-webpack/src/framework-preset-react-docs.ts b/code/presets/react-webpack/src/framework-preset-react-docs.ts index b08a3e427d4f..eb0d3ed5f9e3 100644 --- a/code/presets/react-webpack/src/framework-preset-react-docs.ts +++ b/code/presets/react-webpack/src/framework-preset-react-docs.ts @@ -1,4 +1,3 @@ -import ReactDocgenTypescriptPlugin from '@storybook/react-docgen-typescript-plugin'; import { hasDocsOrControls } from '@storybook/docs-tools'; import type { StorybookConfig } from './types'; @@ -43,11 +42,13 @@ export const webpackFinal: StorybookConfig['webpackFinal'] = async (config, opti return config; } + const { ReactDocgenTypeScriptPlugin } = await import('@storybook/react-docgen-typescript-plugin'); + return { ...config, plugins: [ ...(config.plugins || []), - new ReactDocgenTypescriptPlugin({ + new ReactDocgenTypeScriptPlugin({ ...reactDocgenTypescriptOptions, // We *need* this set so that RDT returns default values in the same format as react-docgen savePropValueAsString: true, diff --git a/code/presets/react-webpack/src/framework-preset-react.ts b/code/presets/react-webpack/src/framework-preset-react.ts index 9b0aeaad314d..e913a32b5332 100644 --- a/code/presets/react-webpack/src/framework-preset-react.ts +++ b/code/presets/react-webpack/src/framework-preset-react.ts @@ -6,7 +6,8 @@ import { logger } from '@storybook/node-logger'; import type { Options, Preset } from '@storybook/core-webpack'; import type { StorybookConfig, ReactOptions } from './types'; -const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'package.json'))); +const getAbsolutePath = (input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; const applyFastRefresh = async (options: Options) => { const isDevelopment = options.configType === 'DEVELOPMENT'; @@ -26,7 +27,7 @@ export const babel: StorybookConfig['babel'] = async (config, options) => { ], }; }; -const storybookReactDirName = wrapForPnP('@storybook/preset-react-webpack'); +const storybookReactDirName = getAbsolutePath('@storybook/preset-react-webpack'); // TODO: improve node_modules detection const context = storybookReactDirName.includes('node_modules') ? join(storybookReactDirName, '../../') // Real life case, already in node_modules diff --git a/code/presets/react-webpack/src/types.ts b/code/presets/react-webpack/src/types.ts index fd9f5e0cd37f..fb3b0d4a7db7 100644 --- a/code/presets/react-webpack/src/types.ts +++ b/code/presets/react-webpack/src/types.ts @@ -31,7 +31,7 @@ export type TypescriptOptions = TypescriptOptionsBase & { * Configures `react-docgen-typescript-plugin` * * @default - * @see https://github.com/storybookjs/storybook/blob/next/code/lib/builder-webpack5/src/config/defaults.js#L4-L6 + * @see https://github.com/storybookjs/storybook/blob/next/code/builders/builder-webpack5/src/config/defaults.js#L4-L6 */ reactDocgenTypescriptOptions: ReactDocgenTypescriptOptions; }; diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 785ea5adc720..7ec7c6bcf885 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -46,17 +46,18 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-server": "7.1.0-alpha.17", - "@storybook/core-webpack": "7.1.0-alpha.17", + "@storybook/core-server": "workspace:*", + "@storybook/core-webpack": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/server": "7.1.0-alpha.17", + "@storybook/server": "workspace:*", "@types/node": "^16.0.0", "safe-identifier": "^0.4.1", "ts-dedent": "^2.0.0", @@ -64,9 +65,9 @@ }, "devDependencies": { "fs-extra": "^11.1.0", - "jest-specific-snapshot": "^7.0.0", + "jest-specific-snapshot": "^8.0.0", "typescript": "~4.9.3", - "yaml": "^1.10.0" + "yaml": "^2.3.1" }, "engines": { "node": ">=16.0.0" @@ -81,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/server-webpack/src/index.ts b/code/presets/server-webpack/src/index.ts index d37d8ee34345..eb5aaf1d04de 100644 --- a/code/presets/server-webpack/src/index.ts +++ b/code/presets/server-webpack/src/index.ts @@ -16,7 +16,10 @@ export const webpack: StorybookConfig['webpack'] = (config) => { test: /\.stories\.ya?ml/, use: [ require.resolve('@storybook/preset-server-webpack/dist/loader'), - require.resolve('yaml-loader'), + { + loader: require.resolve('yaml-loader'), + options: { asJSON: true }, + }, ], }, ]; diff --git a/code/presets/server-webpack/src/loader.ts b/code/presets/server-webpack/src/loader.ts index 1dd4b6b155ef..dc0ebba43d6e 100644 --- a/code/presets/server-webpack/src/loader.ts +++ b/code/presets/server-webpack/src/loader.ts @@ -5,7 +5,8 @@ export default (content: string) => { const after = compileCsfModule(JSON.parse(content)); return after; } catch (e) { - // + // for debugging + console.log(content, e); } return content; }; diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index a49d796cadac..a2edea524c99 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -56,26 +56,27 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/node-logger": "7.1.0-alpha.17", + "@storybook/core-webpack": "workspace:*", + "@storybook/node-logger": "workspace:*", "sveltedoc-parser": "^4.2.1", "ts-dedent": "^2.0.0" }, "devDependencies": { - "svelte": "^3.31.2", - "svelte-loader": "^3.1.2", + "svelte": "^4.0.0", + "svelte-loader": "^3.1.9", "typescript": "~4.9.3" }, "peerDependencies": { "@babel/core": "*", - "svelte": "^3.1.0", + "svelte": "^3.1.0 || ^4.0.0", "svelte-loader": "*" }, "engines": { @@ -93,5 +94,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/vue-webpack/package.json b/code/presets/vue-webpack/package.json index 003cd43bb93e..691b37f0511d 100644 --- a/code/presets/vue-webpack/package.json +++ b/code/presets/vue-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -51,15 +51,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/core-webpack": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@types/node": "^16.0.0", "ts-loader": "^9.2.8", "vue-docgen-api": "^4.44.23", @@ -95,5 +96,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index ca00d0ad66bc..474ee3a2b5a4 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -51,15 +51,16 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/core-webpack": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@types/node": "^16.0.0", "ts-loader": "^9.2.8", "vue-docgen-api": "^4.46.0", @@ -92,5 +93,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/presets/vue3-webpack/src/framework-preset-vue3-docs.ts b/code/presets/vue3-webpack/src/framework-preset-vue3-docs.ts index 5bdbd97ff75d..b3fd1c028be7 100644 --- a/code/presets/vue3-webpack/src/framework-preset-vue3-docs.ts +++ b/code/presets/vue3-webpack/src/framework-preset-vue3-docs.ts @@ -16,7 +16,7 @@ export const webpackFinal: StorybookConfig['webpackFinal'] = (config, options) = } }); - config.module.rules.push({ + config.module?.rules?.push({ test: /\.vue$/, loader: require.resolve('vue-docgen-loader', { paths: [require.resolve('@storybook/preset-vue3-webpack')], @@ -24,7 +24,7 @@ export const webpackFinal: StorybookConfig['webpackFinal'] = (config, options) = enforce: 'post', options: { docgenOptions: { - alias: config.resolve.alias, + alias: config.resolve?.alias, ...vueDocgenOptions, }, }, diff --git a/code/presets/vue3-webpack/src/framework-preset-vue3.ts b/code/presets/vue3-webpack/src/framework-preset-vue3.ts index 8ce312123208..df7f684be456 100644 --- a/code/presets/vue3-webpack/src/framework-preset-vue3.ts +++ b/code/presets/vue3-webpack/src/framework-preset-vue3.ts @@ -6,7 +6,7 @@ export const webpack: StorybookConfig['webpack'] = (config) => { return { ...config, plugins: [ - ...config.plugins, + ...(config.plugins ?? []), new VueLoaderPlugin(), new DefinePlugin({ __VUE_OPTIONS_API__: JSON.stringify(true), @@ -16,7 +16,7 @@ export const webpack: StorybookConfig['webpack'] = (config) => { module: { ...config.module, rules: [ - ...config.module.rules, + ...(config.module?.rules ?? []), { test: /\.vue$/, loader: require.resolve('vue-loader'), @@ -51,9 +51,9 @@ export const webpack: StorybookConfig['webpack'] = (config) => { }, resolve: { ...config.resolve, - extensions: [...config.resolve.extensions, '.vue'], + extensions: [...(config.resolve?.extensions ?? []), '.vue'], alias: { - ...config.resolve.alias, + ...config.resolve?.alias, vue$: require.resolve('vue/dist/vue.esm-bundler.js'), }, }, diff --git a/code/presets/vue3-webpack/tsconfig.json b/code/presets/vue3-webpack/tsconfig.json index 40813306fd49..a7475d986d4d 100644 --- a/code/presets/vue3-webpack/tsconfig.json +++ b/code/presets/vue3-webpack/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "resolveJsonModule": true, "skipLibCheck": true, - "strict": false + "strict": true }, "include": ["src/**/*"] } diff --git a/code/presets/web-components-webpack/package.json b/code/presets/web-components-webpack/package.json index 2d18c5446e72..bca248c37661 100644 --- a/code/presets/web-components-webpack/package.json +++ b/code/presets/web-components-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-web-components-webpack", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", @@ -44,17 +44,18 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/preset-env": "^7.20.2", - "@storybook/core-webpack": "7.1.0-alpha.17", + "@babel/preset-env": "^7.22.9", + "@storybook/core-webpack": "workspace:*", "@types/node": "^16.0.0", "babel-loader": "^7.0.0 || ^8.0.0 || ^9.0.0", "babel-plugin-bundled-import-meta": "^0.3.1" @@ -78,5 +79,5 @@ ], "platform": "node" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index 09f169dd3332..7c7b5030d35b 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook HTML renderer", "keywords": [ "storybook" @@ -38,21 +38,22 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/core-client": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -74,5 +75,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/html/template/components/Form.js b/code/renderers/html/template/components/Form.js index f2f239cbff70..823a89f49b99 100644 --- a/code/renderers/html/template/components/Form.js +++ b/code/renderers/html/template/components/Form.js @@ -2,30 +2,32 @@ export const Form = ({ onSuccess }) => { const container = document.createElement('div'); - const getInnerHTML = ({ complete }) => ` + const getInnerHTML = ({ complete, value }) => `

${complete ? '

Completed!!

' : ''} `; - container.innerHTML = getInnerHTML({ complete: false }); + container.innerHTML = getInnerHTML({ complete: false, value: '' }); const form = container.querySelector('form'); form.addEventListener('submit', (e) => { e.preventDefault(); + const { value } = form.querySelector('input'); // Store the current value + setTimeout(() => { - container.innerHTML = getInnerHTML({ complete: true }); + container.innerHTML = getInnerHTML({ complete: true, value }); }, 500); setTimeout(() => { - container.innerHTML = getInnerHTML({ complete: false }); + container.innerHTML = getInnerHTML({ complete: false, value }); }, 1500); - onSuccess(e); + onSuccess(value); }); return container; diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index eceaccf844a1..540d1d160ec6 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Preact renderer", "keywords": [ "storybook" @@ -38,20 +38,21 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-alpha.17", + "@storybook/core-client": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -74,5 +75,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/preact/template/components/Form.jsx b/code/renderers/preact/template/components/Form.jsx index f12e905f0dba..fb58cbb10508 100644 --- a/code/renderers/preact/template/components/Form.jsx +++ b/code/renderers/preact/template/components/Form.jsx @@ -24,7 +24,7 @@ export const Form = ({ onSuccess }) => { data-testid="value" value={value} required - onChange={(event) => setValue(event.target.value)} + onInput={(event) => setValue(event.target.value)} /> diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 2f888983c65d..50243cff2c6a 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook React renderer", "keywords": [ "storybook" @@ -42,49 +42,50 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-client": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/react-dom-shim": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/react-dom-shim": "workspace:*", + "@storybook/types": "workspace:*", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^16.0.0", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", "acorn-walk": "^7.2.0", - "escodegen": "^2.0.0", + "escodegen": "^2.1.0", "html-tags": "^3.1.0", "lodash": "^4.17.21", "prop-types": "^15.7.2", "react-element-to-jsx-string": "^15.0.0", "ts-dedent": "^2.0.0", - "type-fest": "^2.19.0", + "type-fest": "~2.19", "util-deprecate": "^1.0.2" }, "devDependencies": { - "@babel/core": "^7.20.2", + "@babel/core": "^7.22.9", "@types/util-deprecate": "^1.0.0", - "expect-type": "^0.14.2", - "jest-specific-snapshot": "^7.0.0", - "require-from-string": "^2.0.2", - "typescript": "~4.9.3" + "expect-type": "^0.15.0", + "jest-specific-snapshot": "^8.0.0", + "require-from-string": "^2.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" }, "peerDependenciesMeta": { "typescript": { @@ -105,5 +106,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/react/src/testing-api.ts b/code/renderers/react/src/testing-api.ts index 6d9d0dab3588..545147fab2db 100644 --- a/code/renderers/react/src/testing-api.ts +++ b/code/renderers/react/src/testing-api.ts @@ -6,7 +6,7 @@ import { import type { Args, ProjectAnnotations, - ComposedStory, + StoryAnnotationsOrFn, Store_CSFExports, StoriesWithPartialProps, } from '@storybook/types'; @@ -24,12 +24,12 @@ import type { ReactRenderer } from './types'; *```jsx * // setup.js (for jest) * import { setProjectAnnotations } from '@storybook/react'; - * import * as projectAnnotations from './.storybook/preview'; + * import projectAnnotations from './.storybook/preview'; * * setProjectAnnotations(projectAnnotations); *``` * - * @param projectAnnotations - e.g. (import * as projectAnnotations from '../.storybook/preview') + * @param projectAnnotations - e.g. (import projectAnnotations from '../.storybook/preview') */ export function setProjectAnnotations( projectAnnotations: ProjectAnnotations | ProjectAnnotations[] @@ -81,13 +81,13 @@ const defaultProjectAnnotations: ProjectAnnotations = { * @param [exportsName] - in case your story does not contain a name and you want it to have a name. */ export function composeStory( - story: ComposedStory, + story: StoryAnnotationsOrFn, componentAnnotations: Meta, projectAnnotations?: ProjectAnnotations, exportsName?: string ) { return originalComposeStory( - story as ComposedStory, + story as StoryAnnotationsOrFn, componentAnnotations, projectAnnotations, defaultProjectAnnotations, diff --git a/code/renderers/react/template/cli/js/Button.stories.js b/code/renderers/react/template/cli/js/Button.stories.js index e5c48b131329..e085f9ed312f 100644 --- a/code/renderers/react/template/cli/js/Button.stories.js +++ b/code/renderers/react/template/cli/js/Button.stories.js @@ -1,10 +1,16 @@ import { Button } from './Button'; -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { backgroundColor: { control: 'color' }, }, diff --git a/code/renderers/react/template/cli/ts-3-8/Button.stories.ts b/code/renderers/react/template/cli/ts-3-8/Button.stories.ts index bb3e5c10b1a6..7d049116d13f 100644 --- a/code/renderers/react/template/cli/ts-3-8/Button.stories.ts +++ b/code/renderers/react/template/cli/ts-3-8/Button.stories.ts @@ -6,6 +6,10 @@ import { Button } from './Button'; const meta: Meta = { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], // More on argTypes: https://storybook.js.org/docs/react/api/argtypes @@ -17,9 +21,8 @@ const meta: Meta = { export default meta; type Story = StoryObj; -// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args +// More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args export const Primary: Story = { - // More on args: https://storybook.js.org/docs/react/writing-stories/args args: { primary: true, label: 'Button', diff --git a/code/renderers/react/template/cli/ts-3-8/Header.stories.ts b/code/renderers/react/template/cli/ts-3-8/Header.stories.ts index a68af827aed4..d317636cab13 100644 --- a/code/renderers/react/template/cli/ts-3-8/Header.stories.ts +++ b/code/renderers/react/template/cli/ts-3-8/Header.stories.ts @@ -1,4 +1,5 @@ import type { Meta, StoryObj } from '@storybook/react'; + import { Header } from './Header'; const meta: Meta = { diff --git a/code/renderers/react/template/cli/ts-4-9/Button.stories.ts b/code/renderers/react/template/cli/ts-4-9/Button.stories.ts index 00fabaeb532b..7a68cbfec557 100644 --- a/code/renderers/react/template/cli/ts-4-9/Button.stories.ts +++ b/code/renderers/react/template/cli/ts-4-9/Button.stories.ts @@ -2,11 +2,17 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export const meta = { title: 'Example/Button', component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { backgroundColor: { control: 'color' }, }, diff --git a/code/renderers/react/template/cli/ts-4-9/Header.stories.ts b/code/renderers/react/template/cli/ts-4-9/Header.stories.ts index b0766a5a4839..458391a3501e 100644 --- a/code/renderers/react/template/cli/ts-4-9/Header.stories.ts +++ b/code/renderers/react/template/cli/ts-4-9/Header.stories.ts @@ -1,4 +1,5 @@ import type { Meta, StoryObj } from '@storybook/react'; + import { Header } from './Header'; const meta = { diff --git a/code/renderers/react/template/stories/ts-argtypes.stories.tsx b/code/renderers/react/template/stories/ts-argtypes.stories.tsx index 21eb492d30e7..f2b29752c276 100644 --- a/code/renderers/react/template/stories/ts-argtypes.stories.tsx +++ b/code/renderers/react/template/stories/ts-argtypes.stories.tsx @@ -1,10 +1,12 @@ import React, { useState } from 'react'; import mapValues from 'lodash/mapValues.js'; import { PureArgsTable as ArgsTable } from '@storybook/blocks'; +import type { StoryObj } from '@storybook/react'; import type { Args, Parameters, StoryContext } from '@storybook/types'; import { inferControls } from '@storybook/preview-api'; import { ThemeProvider, themes, convert } from '@storybook/theming'; +import { within } from '@storybook/testing-library'; import { component as TsFunctionComponentComponent } from './docgen-components/ts-function-component/input'; import { component as TsFunctionComponentInlineDefaultsComponent } from './docgen-components/ts-function-component-inline-defaults/input'; import { component as TsReactFcGenericsComponent } from './docgen-components/8143-ts-react-fc-generics/input'; @@ -76,6 +78,27 @@ export const TsComponentProps = { parameters: { component: TsComponentPropsCompo export const TsJsdoc = { parameters: { component: TsJsdocComponent } }; -export const TsTypes = { parameters: { component: TsTypesComponent } }; +const addChromaticIgnore = async (element: HTMLElement) => { + const row = element.parentElement?.parentElement; + if (row?.nodeName === 'TR') { + row.setAttribute('data-chromatic', 'ignore'); + } else { + throw new Error('the DOM structure changed, please update this test'); + } +}; + +export const TsTypes: StoryObj = { + parameters: { component: TsTypesComponent }, + play: async ({ canvasElement }) => { + // This play function's sole purpose is to add a "chromatic ignore" region to flaky rows. + const canvas = within(canvasElement); + const funcCell = await canvas.findByText('funcWithArgsAndReturns'); + addChromaticIgnore(funcCell); + const namedNumericCell = await canvas.findByText('namedNumericLiteralUnion'); + addChromaticIgnore(namedNumericCell); + const inlinedNumericCell = await canvas.findByText('inlinedNumericLiteralUnion'); + addChromaticIgnore(inlinedNumericCell); + }, +}; export const TsHtml = { parameters: { component: TsHtmlComponent } }; diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 82048a3bd4a5..47157d77b3cd 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Server renderer", "keywords": [ "storybook" @@ -43,24 +43,27 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-alpha.17", + "@storybook/core-client": "workspace:*", "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "@types/fs-extra": "^11.0.1", "fs-extra": "^11.1.0", - "ts-dedent": "^2.0.0" + "ts-dedent": "^2.0.0", + "yaml": "^2.3.1" }, "devDependencies": { "typescript": "~4.9.3" @@ -79,5 +82,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/server/src/preset.ts b/code/renderers/server/src/preset.ts index fced651731c3..23effa83e67f 100644 --- a/code/renderers/server/src/preset.ts +++ b/code/renderers/server/src/preset.ts @@ -1,33 +1,36 @@ import fs from 'fs-extra'; -import { toId } from '@storybook/csf'; -import type { StaticMeta } from '@storybook/csf-tools'; -import type { IndexerOptions, IndexedStory, StoryIndexer } from '@storybook/types'; +import yaml from 'yaml'; +import type { StorybookConfig, Tag, StoryName, ComponentTitle } from '@storybook/types'; -export const storyIndexers = (indexers: StoryIndexer[] | null) => { - const jsonIndexer = async (fileName: string, opts: IndexerOptions) => { - const json = await fs.readJson(fileName, 'utf-8'); - const meta: StaticMeta = { - title: json.title, - }; - const stories: IndexedStory[] = json.stories.map((story: { name: string }) => { - const id = toId(meta.title, story.name); - const { name } = story; - const indexedStory: IndexedStory = { - id, - name, - }; - return indexedStory; - }); - return { - meta, - stories, - }; - }; - return [ - { - test: /(stories|story)\.json$/, - indexer: jsonIndexer, - }, - ...(indexers || []), - ]; +type FileContent = { + title: ComponentTitle; + tags?: Tag[]; + stories: { name: StoryName; tags?: Tag[] }[]; }; + +// eslint-disable-next-line @typescript-eslint/naming-convention +export const experimental_indexers: StorybookConfig['experimental_indexers'] = ( + existingIndexers +) => [ + { + test: /(stories|story)\.(json|ya?ml)$/, + index: async (fileName) => { + const content: FileContent = fileName.endsWith('.json') + ? await fs.readJson(fileName, 'utf-8') + : yaml.parse((await fs.readFile(fileName, 'utf-8')).toString()); + + return content.stories.map((story) => { + const tags = Array.from(new Set([...(content.tags ?? []), ...(story.tags ?? [])])); + return { + importPath: fileName, + exportName: story.name, + name: story.name, + title: content.title, + tags, + type: 'story', + }; + }); + }, + }, + ...(existingIndexers || []), +]; diff --git a/code/renderers/server/template/cli/button.stories.json b/code/renderers/server/template/cli/button.stories.json index f42672368f8c..70e92311502b 100644 --- a/code/renderers/server/template/cli/button.stories.json +++ b/code/renderers/server/template/cli/button.stories.json @@ -15,6 +15,7 @@ "control": { "type": "select", "options": ["small", "medium", "large"] } } }, + "tags": ["autodocs"], "stories": [ { "name": "Primary", diff --git a/code/renderers/server/template/cli/page.stories.json b/code/renderers/server/template/cli/page.stories.json deleted file mode 100644 index abbc4e809188..000000000000 --- a/code/renderers/server/template/cli/page.stories.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Example/Page", - "parameters": { - "server": { - "url": "https://storybook-server-demo.netlify.app/api", - "id": "page" - } - }, - "stories": [ - { - "name": "LoggedIn", - "args": { "user": {} } - }, - { - "name": "LoggedOut" - } - ] -} diff --git a/code/renderers/server/template/cli/page.stories.yaml b/code/renderers/server/template/cli/page.stories.yaml new file mode 100644 index 000000000000..08915865c89d --- /dev/null +++ b/code/renderers/server/template/cli/page.stories.yaml @@ -0,0 +1,10 @@ +title: "Example/Page" +parameters: + server: + url: "https://storybook-server-demo.netlify.app/api" + id: "page" +stories: + - name: "LoggedIn" + args: + user: {} + - name: "LoggedOut" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index 27a010a2f4c6..f75fadbad627 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Svelte renderer", "keywords": [ "storybook" @@ -42,34 +42,35 @@ "files": [ "dist/**/*", "templates/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json", + "check": "svelte-check", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-client": "workspace:*", + "@storybook/core-events": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "sveltedoc-parser": "^4.2.1", - "type-fest": "2.19.0" + "type-fest": "~2.19" }, "devDependencies": { - "expect-type": "^0.14.2", - "svelte": "^3.31.2", - "svelte-check": "^2.9.2", - "typescript": "~4.9.3" + "expect-type": "^0.15.0", + "svelte": "^4.0.0", + "svelte-check": "^3.4.3", + "typescript": "^5.0.4" }, "peerDependencies": { - "svelte": "^3.1.0" + "svelte": "^3.1.0 || ^4.0.0" }, "engines": { "node": ">=16.0.0" @@ -84,5 +85,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/svelte/src/public-types.ts b/code/renderers/svelte/src/public-types.ts index 4bd30feb1c38..3e5abbb28678 100644 --- a/code/renderers/svelte/src/public-types.ts +++ b/code/renderers/svelte/src/public-types.ts @@ -12,7 +12,7 @@ import type { ProjectAnnotations, } from '@storybook/types'; -import type { ComponentProps, ComponentType, SvelteComponentTyped } from 'svelte'; +import type { ComponentType, ComponentProps, SvelteComponentTyped } from 'svelte'; import type { SetOptional, Simplify } from 'type-fest'; import type { SvelteRenderer } from './types'; diff --git a/code/renderers/svelte/template/components/Form.svelte b/code/renderers/svelte/template/components/Form.svelte index 467c31d4974b..3b2f7a5b9d97 100644 --- a/code/renderers/svelte/template/components/Form.svelte +++ b/code/renderers/svelte/template/components/Form.svelte @@ -26,8 +26,8 @@
{#if complete}

Completed!!

{/if} -
+ \ No newline at end of file diff --git a/code/renderers/vue/package.json b/code/renderers/vue/package.json index 2a68a99012c4..a15d81a51791 100644 --- a/code/renderers/vue/package.json +++ b/code/renderers/vue/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Vue renderer", "keywords": [ "storybook" @@ -38,29 +38,30 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { "check": "vue-tsc --noEmit", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-client": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", "ts-dedent": "^2.0.0", - "type-fest": "2.19.0" + "type-fest": "~2.19" }, "devDependencies": { "typescript": "~4.9.3", "vue": "2.6.14", - "vue-tsc": "^1.0.9" + "vue-tsc": "latest" }, "peerDependencies": { "@babel/core": "*", @@ -86,5 +87,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/vue/src/docs/sourceDecorator.ts b/code/renderers/vue/src/docs/sourceDecorator.ts index 24c4fe3c4ddb..becc96802860 100644 --- a/code/renderers/vue/src/docs/sourceDecorator.ts +++ b/code/renderers/vue/src/docs/sourceDecorator.ts @@ -4,7 +4,7 @@ import { addons } from '@storybook/preview-api'; import { logger } from '@storybook/client-logger'; import { SourceType, SNIPPET_RENDERED } from '@storybook/docs-tools'; -import type { ComponentOptions } from 'vue'; +import { type ComponentOptions } from 'vue'; import type Vue from 'vue'; import type { StoryContext } from '../types'; @@ -24,46 +24,47 @@ export const skipSourceRender = (context: StoryContext) => { export const sourceDecorator = (storyFn: any, context: StoryContext) => { const story = storyFn(); + const source = ''; // See ../react/jsxDecorator.tsx - if (skipSourceRender(context)) { + const skip = skipSourceRender(context); + if (skip) { return story; } const channel = addons.getChannel(); const storyComponent = getStoryComponent(story.options.STORYBOOK_WRAPS); + const generateSource = (vueInstance: any) => { + try { + // console.log('updateSource():', vueInstance.$vnode); + const storyNode = lookupStoryInstance(vueInstance, storyComponent); + if (!storyNode) { + logger.warn(`Failed to find story component in the rendered tree: ${storyComponent}`); + return; + } + // eslint-disable-next-line no-param-reassign + vueInstance.source = vnodeToString(storyNode._vnode); + } catch (e) { + logger.warn(`Failed to generate dynamic story source: ${e}`); + } + }; return { components: { Story: story, }, - // We need to wait until the wrapper component to be mounted so Vue runtime - // struct VNode tree. We get `this._vnode == null` if switch to `created` - // lifecycle hook. + data() { + return { source }; + }, + updated() { + generateSource(this); + }, mounted() { - // Theoretically this does not happens but we need to check it. - // @ts-expect-error TS says it is called $vnode - if (!this._vnode) { - return; - } - - try { - const storyNode = lookupStoryInstance(this, storyComponent); - - // @ts-expect-error TS says it is called $vnode - const code = vnodeToString(storyNode._vnode); - - const { id, unmappedArgs } = context; - channel.emit(SNIPPET_RENDERED, { - id, - args: unmappedArgs, - source: ``, - format: 'vue', - }); - } catch (e) { - logger.warn(`Failed to generate dynamic story source: ${e}`); - } + this.$watch('source', (val) => + channel.emit(SNIPPET_RENDERED, context.id, ``, 'vue') + ); + generateSource(this); }, template: '', } as ComponentOptions & ThisType; diff --git a/code/renderers/vue/template/components/Form.vue b/code/renderers/vue/template/components/Form.vue index fc46f159e337..2375a381eb7a 100644 --- a/code/renderers/vue/template/components/Form.vue +++ b/code/renderers/vue/template/components/Form.vue @@ -2,7 +2,13 @@

Completed!!

@@ -27,9 +33,6 @@ export default { }, methods: { - setValue(event) { - this.value = event.target.value; - }, onSubmit() { this.onSuccess(this.value); setTimeout(() => { diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 5f81b12886e1..692bc1324e93 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" @@ -38,33 +38,38 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { "check": "vue-tsc --noEmit", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/core-client": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", + "lodash": "^4.17.21", "ts-dedent": "^2.0.0", - "type-fest": "2.19.0" + "type-fest": "~2.19", + "vue-component-type-helpers": "latest" }, "devDependencies": { "@digitak/esrun": "^3.2.2", "@types/prettier": "2.7.2", + "@vue/compiler-core": "^3.3.4", "@vue/vue3-jest": "29", "typescript": "~4.9.3", "vue": "^3.2.47", - "vue-tsc": "^1.2.0" + "vue-tsc": "latest" }, "peerDependencies": { + "@vue/compiler-core": "^3.0.0", "vue": "^3.0.0" }, "engines": { @@ -80,5 +85,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/vue3/src/decorateStory.ts b/code/renderers/vue3/src/decorateStory.ts index df9f6bb16d6c..0835bad6da18 100644 --- a/code/renderers/vue3/src/decorateStory.ts +++ b/code/renderers/vue3/src/decorateStory.ts @@ -48,10 +48,10 @@ export function decorateStory( let story: VueRenderer['storyResult'] | undefined; const decoratedStory: VueRenderer['storyResult'] = decorator((update) => { - story = decorated({ - ...context, - ...sanitizeStoryContextUpdate(update), - }); + const sanitizedUpdate = sanitizeStoryContextUpdate(update); + // update the args in a reactive way + if (update) sanitizedUpdate.args = Object.assign(context.args, sanitizedUpdate.args); + story = decorated({ ...context, ...sanitizedUpdate }); return story; }, context); diff --git a/code/renderers/vue3/src/docs/sourceDecorator.test.ts b/code/renderers/vue3/src/docs/sourceDecorator.test.ts index d3189e9eb767..ec59ae61c9b3 100644 --- a/code/renderers/vue3/src/docs/sourceDecorator.test.ts +++ b/code/renderers/vue3/src/docs/sourceDecorator.test.ts @@ -1,95 +1,300 @@ import { describe, expect, test } from '@jest/globals'; -import type { Args } from '@storybook/types'; -import { generateSource } from './sourceDecorator'; + +import { + mapAttributesAndDirectives, + generateAttributesSource, + attributeSource, + htmlEventAttributeToVueEventAttribute as htmlEventToVueEvent, +} from './sourceDecorator'; expect.addSnapshotSerializer({ print: (val: any) => val, test: (val: unknown) => typeof val === 'string', }); -function generateArgTypes(args: Args, slotProps: string[] | undefined) { - return Object.keys(args).reduce((acc, prop) => { - acc[prop] = { table: { category: slotProps?.includes(prop) ? 'slots' : 'props' } }; - return acc; - }, {} as Record); -} -function generateForArgs(args: Args, slotProps: string[] | undefined = undefined) { - return generateSource({ name: 'Component' }, args, generateArgTypes(args, slotProps), true); -} -function generateMultiComponentForArgs(args: Args, slotProps: string[] | undefined = undefined) { - return generateSource( - [{ name: 'Component' }, { name: 'Component' }], - args, - generateArgTypes(args, slotProps), - true - ); -} -describe('generateSource Vue3', () => { - test('boolean true', () => { - expect(generateForArgs({ booleanProp: true })).toMatchInlineSnapshot( - `` - ); +describe('Vue3: sourceDecorator->mapAttributesAndDirective()', () => { + test('camelCase boolean Arg', () => { + expect(mapAttributesAndDirectives({ camelCaseBooleanArg: true })).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: camel-case-boolean-arg, + loc: Object { + source: camel-case-boolean-arg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: true, + }, + }, + loc: Object { + source: :camel-case-boolean-arg="true", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('boolean false', () => { - expect(generateForArgs({ booleanProp: false })).toMatchInlineSnapshot( - `` - ); + test('camelCase string Arg', () => { + expect(mapAttributesAndDirectives({ camelCaseStringArg: 'foo' })).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: camel-case-string-arg, + loc: Object { + source: camel-case-string-arg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: foo, + }, + }, + loc: Object { + source: camel-case-string-arg="foo", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('null property', () => { - expect(generateForArgs({ nullProp: null })).toMatchInlineSnapshot( - `` - ); + test('boolean arg', () => { + expect(mapAttributesAndDirectives({ booleanarg: true })).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: booleanarg, + loc: Object { + source: booleanarg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: true, + }, + }, + loc: Object { + source: :booleanarg="true", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('string property', () => { - expect(generateForArgs({ stringProp: 'mystr' })).toMatchInlineSnapshot( - `` - ); + test('string arg', () => { + expect(mapAttributesAndDirectives({ stringarg: 'bar' })).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: stringarg, + loc: Object { + source: stringarg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: bar, + }, + }, + loc: Object { + source: stringarg="bar", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('number property', () => { - expect(generateForArgs({ numberProp: 42 })).toMatchInlineSnapshot( - `` - ); + test('number arg', () => { + expect(mapAttributesAndDirectives({ numberarg: 2023 })).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: numberarg, + loc: Object { + source: numberarg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: 2023, + }, + }, + loc: Object { + source: :numberarg="2023", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('object property', () => { - expect(generateForArgs({ objProp: { x: true } })).toMatchInlineSnapshot( - `` - ); + test('camelCase boolean, string, and number Args', () => { + expect( + mapAttributesAndDirectives({ + camelCaseBooleanArg: true, + camelCaseStringArg: 'foo', + cameCaseNumberArg: 2023, + }) + ).toMatchInlineSnapshot(` + Array [ + Object { + arg: Object { + content: camel-case-boolean-arg, + loc: Object { + source: camel-case-boolean-arg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: true, + }, + }, + loc: Object { + source: :camel-case-boolean-arg="true", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + Object { + arg: Object { + content: camel-case-string-arg, + loc: Object { + source: camel-case-string-arg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: foo, + }, + }, + loc: Object { + source: camel-case-string-arg="foo", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + Object { + arg: Object { + content: came-case-number-arg, + loc: Object { + source: came-case-number-arg, + }, + }, + exp: Object { + isStatic: false, + loc: Object { + source: 2023, + }, + }, + loc: Object { + source: :came-case-number-arg="2023", + }, + modifiers: Array [ + , + ], + name: bind, + type: 6, + }, + ] + `); }); - test('multiple properties', () => { - expect(generateForArgs({ a: 1, b: 2 })).toMatchInlineSnapshot(``); +}); + +describe('Vue3: sourceDecorator->generateAttributesSource()', () => { + test('camelCase boolean Arg', () => { + expect( + generateAttributesSource( + mapAttributesAndDirectives({ camelCaseBooleanArg: true }), + { camelCaseBooleanArg: true }, + [{ camelCaseBooleanArg: { type: 'boolean' } }] as any + ) + ).toMatchInlineSnapshot(`:camel-case-boolean-arg="true"`); }); - test('1 slot property', () => { - expect(generateForArgs({ content: 'xyz', myProp: 'abc' }, ['content'])).toMatchInlineSnapshot(` - - {{ content }} - - `); + test('camelCase string Arg', () => { + expect( + generateAttributesSource( + mapAttributesAndDirectives({ camelCaseStringArg: 'foo' }), + { camelCaseStringArg: 'foo' }, + [{ camelCaseStringArg: { type: 'string' } }] as any + ) + ).toMatchInlineSnapshot(`camel-case-string-arg="foo"`); }); - test('multiple slot property with second slot value not set', () => { - expect(generateForArgs({ content: 'xyz', myProp: 'abc' }, ['content', 'footer'])) - .toMatchInlineSnapshot(` - - {{ content }} - - `); + + test('camelCase boolean, string, and number Args', () => { + expect( + generateAttributesSource( + mapAttributesAndDirectives({ + camelCaseBooleanArg: true, + camelCaseStringArg: 'foo', + cameCaseNumberArg: 2023, + }), + { + camelCaseBooleanArg: true, + camelCaseStringArg: 'foo', + cameCaseNumberArg: 2023, + }, + [] as any + ) + ).toMatchInlineSnapshot( + `:camel-case-boolean-arg="true" camel-case-string-arg="foo" :came-case-number-arg="2023"` + ); }); - test('multiple slot property with second slot value is set', () => { - expect(generateForArgs({ content: 'xyz', footer: 'foo', myProp: 'abc' }, ['content', 'footer'])) - .toMatchInlineSnapshot(` - - - - - `); +}); + +describe('Vue3: sourceDecorator->attributeSoure()', () => { + test('camelCase boolean Arg', () => { + expect(attributeSource('stringArg', 'foo')).toMatchInlineSnapshot(`stringArg="foo"`); }); - // test mutil components - test('multi component with boolean true', () => { - expect(generateMultiComponentForArgs({ booleanProp: true })).toMatchInlineSnapshot(` - - - `); + + test('html event attribute should convert to vue event directive', () => { + expect(attributeSource('onClick', () => {})).toMatchInlineSnapshot(`v-on:click='()=>({})'`); + expect(attributeSource('onclick', () => {})).toMatchInlineSnapshot(`v-on:click='()=>({})'`); + }); + test('normal html attribute should not convert to vue event directive', () => { + expect(attributeSource('on-click', () => {})).toMatchInlineSnapshot(`on-click='()=>({})'`); }); - test('component is not set', () => { - expect(generateSource(null, {}, {})).toBeNull(); + test('htmlEventAttributeToVueEventAttribute onEv => v-on:', () => { + const htmlEventAttributeToVueEventAttribute = (attribute: string) => { + return htmlEventToVueEvent(attribute); + }; + expect(/^on[A-Za-z]/.test('onClick')).toBeTruthy(); + expect(htmlEventAttributeToVueEventAttribute('onclick')).toMatchInlineSnapshot(`v-on:click`); + expect(htmlEventAttributeToVueEventAttribute('onClick')).toMatchInlineSnapshot(`v-on:click`); + expect(htmlEventAttributeToVueEventAttribute('onChange')).toMatchInlineSnapshot(`v-on:change`); + expect(htmlEventAttributeToVueEventAttribute('onFocus')).toMatchInlineSnapshot(`v-on:focus`); + expect(htmlEventAttributeToVueEventAttribute('on-focus')).toMatchInlineSnapshot(`on-focus`); }); }); diff --git a/code/renderers/vue3/src/docs/sourceDecorator.ts b/code/renderers/vue3/src/docs/sourceDecorator.ts index 4331324b796a..5c1e9e51b0e5 100644 --- a/code/renderers/vue3/src/docs/sourceDecorator.ts +++ b/code/renderers/vue3/src/docs/sourceDecorator.ts @@ -1,22 +1,31 @@ +/* eslint-disable no-eval */ /* eslint-disable no-underscore-dangle */ -import { addons, useEffect } from '@storybook/preview-api'; +import { addons } from '@storybook/preview-api'; import type { ArgTypes, Args, StoryContext, Renderer } from '@storybook/types'; import { SourceType, SNIPPET_RENDERED } from '@storybook/docs-tools'; -// eslint-disable-next-line import/no-extraneous-dependencies -import parserHTML from 'prettier/parser-html'; +import type { + ElementNode, + AttributeNode, + DirectiveNode, + TextNode, + InterpolationNode, + TemplateChildNode, +} from '@vue/compiler-core'; +import { baseParse } from '@vue/compiler-core'; +import type { ConcreteComponent, FunctionalComponent, VNode } from 'vue'; +import { h, isVNode, watch } from 'vue'; +import { kebabCase } from 'lodash'; +import { + attributeSource, + htmlEventAttributeToVueEventAttribute, + omitEvent, + evalExp, + replaceValueWithRef, + generateExpression, +} from './utils'; -// eslint-disable-next-line import/no-extraneous-dependencies -import { isArray } from '@vue/shared'; - -type ArgEntries = [string, any][]; -type Attribute = { - name: string; - value: string; - sourceSpan?: any; - valueSpan?: any; -} & Record; /** * Check if the sourcecode should be generated. * @@ -25,6 +34,7 @@ type Attribute = { const skipSourceRender = (context: StoryContext) => { const sourceParams = context?.parameters.docs?.source; const isArgsStory = context?.parameters.__isArgsStory; + const isDocsViewMode = context?.viewMode === 'docs'; // always render if the user forces it if (sourceParams?.type === SourceType.DYNAMIC) { @@ -33,92 +43,94 @@ const skipSourceRender = (context: StoryContext) => { // never render if the user is forcing the block to render code, or // if the user provides code, or if it's not an args story. - return !isArgsStory || sourceParams?.code || sourceParams?.type === SourceType.CODE; + return ( + !isDocsViewMode || !isArgsStory || sourceParams?.code || sourceParams?.type === SourceType.CODE + ); }; -/** - * Extract a component name. - * - * @param component Component - */ -function getComponentNameAndChildren(component: any): { - name: string | null; - children: any; - attributes: any; -} { - return { - name: component?.name || component?.__name || component?.__docgenInfo?.__name || null, - children: component?.children || null, - attributes: component?.attributes || component?.attrs || null, - }; -} /** * * @param _args * @param argTypes * @param byRef */ -function generateAttributesSource(_args: Args, argTypes: ArgTypes, byRef?: boolean): string { - // create a copy of the args object to avoid modifying the original - const args = { ..._args }; - // filter out keys that are children or slots, and convert event keys to the proper format - const argsKeys = Object.keys(args) - .filter( - (key: any) => - ['children', 'slots'].indexOf(argTypes[key]?.table?.category) === -1 || !argTypes[key] // remove slots and children - ) - .map((key) => { - const akey = - argTypes[key]?.table?.category !== 'events' // is event - ? key - .replace(/([A-Z])/g, '-$1') - .replace(/^on-/, 'v-on:') - .replace(/^:/, '') - .toLowerCase() - : `v-on:${key}`; - args[akey] = args[key]; - return akey; +export function generateAttributesSource( + tempArgs: (AttributeNode | DirectiveNode)[], + args: Args, + argTypes: ArgTypes, + byRef?: boolean +): string { + return Object.keys(tempArgs) + .map((key: any) => { + const source = tempArgs[key].loc.source.replace(/\$props/g, 'args'); + const argKey = (tempArgs[key] as DirectiveNode).arg?.loc.source; + return byRef && argKey + ? replaceValueWithRef(source, args, argKey) + : evalExp(source, omitEvent(args)); }) - .filter((key, index, self) => self.indexOf(key) === index); // remove duplicated keys - - const camelCase = (str: string) => str.replace(/-([a-z])/g, (g) => g[1].toUpperCase()); - const source = argsKeys - .map((key) => - generateAttributeSource( - byRef && !key.includes(':') ? `:${key}` : key, - byRef && !key.includes(':') ? camelCase(key) : args[key], - argTypes[key] - ) - ) .join(' '); - - return source; } - -function generateAttributeSource( - key: string, - value: Args[keyof Args], - argType: ArgTypes[keyof ArgTypes] -): string { - if (!value) { - return ''; - } - - if (value === true) { - return key; - } - - if (key.startsWith('v-on:')) { - return `${key}='() => {}'`; - } - - if (typeof value === 'string') { - return `${key}='${value}'`; - } - - return `:${key}='${JSON.stringify(value)}'`; +/** + * map attributes and directives + * @param props + */ +function mapAttributesAndDirectives(props: Args) { + const tranformKey = (key: string) => (key.startsWith('on') ? key : kebabCase(key)); + return Object.keys(props).map( + (key) => + ({ + name: 'bind', + type: ['v-', '@', 'v-on'].includes(key) ? 7 : 6, // 6 is attribute, 7 is directive + arg: { content: tranformKey(key), loc: { source: tranformKey(key) } }, // attribute name or directive name (v-bind, v-on, v-model) + loc: { source: attributeSource(tranformKey(key), props[key]) }, // attribute value or directive value + exp: { isStatic: false, loc: { source: props[key] } }, // directive expression + modifiers: [''], + } as unknown as AttributeNode) + ); } +/** + * map slots + * @param slotsArgs + */ +function mapSlots( + slotsArgs: Args, + generateComponentSource: any, + slots: { name: string; scoped?: boolean; bindings?: { name: string }[] }[] +): TextNode[] { + return Object.keys(slotsArgs).map((key) => { + const slot = slotsArgs[key]; + let slotContent = ''; + + const scropedArgs = slots + .find((s) => s.name === key && s.scoped) + ?.bindings?.map((b) => b.name) + .join(','); + + if (typeof slot === 'string') { + slotContent = slot; + } else if (typeof slot === 'function') { + slotContent = generateExpression(slot); + } else if (isVNode(slot)) { + slotContent = generateComponentSource(slot); + } else if (typeof slot === 'object' && !isVNode(slot)) { + slotContent = JSON.stringify(slot); + } + const bindingsString = scropedArgs ? `="{${scropedArgs}}"` : ''; + slotContent = slot ? `` : ``; + + return { + type: 2, + content: slotContent, + loc: { + source: slotContent, + start: { offset: 0, line: 1, column: 0 }, + end: { offset: 0, line: 1, column: 0 }, + }, + }; + }); + // TODO: handle other cases (array, object, html,etc) +} /** * * @param args generate script setup from args @@ -136,35 +148,34 @@ function generateScriptSetup(args: Args, argTypes: ArgTypes, components: any[]): return ``; } /** - * get component templates one or more + * get template components one or more * @param renderFn */ -function getTemplates(renderFn: any): [] { +function getTemplateComponents( + renderFn: any, + context?: StoryContext +): (TemplateChildNode | VNode)[] { try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - const ast = parserHTML.parsers.vue.parse(renderFn.toString()); - let components = ast.children?.filter( - ({ name: _name = '', type: _type = '' }) => - _name && !['template', 'script', 'style', 'slot'].includes(_name) && _type === 'element' - ); - if (!isArray(components)) { - return []; - } - components = components.map( - ({ attrs: attributes = [], name: Name = '', children: Children = [] }) => { - return { - name: Name, - attrs: attributes, - children: Children, - }; - } - ); - return components; + const originalStoryFn = renderFn; + + const storyFn = originalStoryFn ? originalStoryFn(context?.args, context) : context?.component; + const story = typeof storyFn === 'function' ? storyFn() : storyFn; + + const { template } = story; + + if (!template) return [h(story, context?.args)]; + return getComponents(template); } catch (e) { - // console.error(e); + console.log('error', e); + return []; } - return []; +} + +function getComponents(template: string): (TemplateChildNode | VNode)[] { + const ast = baseParse(template); + const components = ast?.children; + if (!components) return []; + return components; } /** @@ -175,141 +186,133 @@ function getTemplates(renderFn: any): [] { * @param argTypes ArgTypes * @param slotProp Prop used to simulate a slot */ -export function generateSource( - compOrComps: any, - args: Args, - argTypes: ArgTypes, - byRef?: boolean | undefined -): string | null { - if (!compOrComps) return null; - const generateComponentSource = (component: any): string | null => { - const { name, children, attributes } = getComponentNameAndChildren(component); - if (!name) { - return ''; +export function generateTemplateSource( + componentOrNodes: (ConcreteComponent | TemplateChildNode)[] | TemplateChildNode | VNode, + { args, argTypes }: { args: Args; argTypes: ArgTypes }, + byRef = false +) { + const isElementNode = (node: any) => node && node.type === 1; + const isInterpolationNode = (node: any) => node && node.type === 5; + const isTextNode = (node: any) => node && node.type === 2; + + const generateComponentSource = ( + componentOrNode: ConcreteComponent | TemplateChildNode | VNode + ) => { + if (isElementNode(componentOrNode)) { + const { tag: name, props: attributes, children } = componentOrNode as ElementNode; + const childSources: string = + typeof children === 'string' + ? children + : children.map((child: TemplateChildNode) => generateComponentSource(child)).join(''); + const props = generateAttributesSource(attributes, args, argTypes, byRef); + + return childSources === '' + ? `<${name} ${props} />` + : `<${name} ${props}>${childSources}`; } - const argsIn = attributes ? getArgsInAttrs(args, attributes) : args; // keep only args that are in attributes - const props = generateAttributesSource(argsIn, argTypes, byRef); - const slotArgs = Object.entries(argsIn).filter( - ([arg]) => argTypes[arg]?.table?.category === 'slots' - ); - const slotProps = Object.entries(argTypes).filter( - ([arg]) => argTypes[arg]?.table?.category === 'slots' - ); - if (slotArgs && slotArgs.length > 0) { - const namedSlotContents = createNamedSlots(slotArgs, slotProps, byRef); - return `<${name} ${props}>\n${namedSlotContents}\n`; + if (isTextNode(componentOrNode)) { + const { content } = componentOrNode as TextNode; + return content; } - - if (children && children.length > 0) { - const childrenSource = children.map((child: any) => { - return generateSource( - typeof child.value === 'string' ? getTemplates(child.value) : child.value, - args, - argTypes, - byRef - ); - }); - - if (childrenSource.join('').trim() === '') return `<${name} ${props}/>`; - - const isNativeTag = - name.includes('template') || - name.match(/^[a-z]/) || - (name === 'Fragment' && !name.includes('-')); - - return `<${name} ${isNativeTag ? '' : props}>\n${childrenSource}\n`; + if (isInterpolationNode(componentOrNode)) { + const { content } = componentOrNode as InterpolationNode; + const expValue = evalExp(content.loc.source, args); + if (expValue === content.loc.source) return `{{${expValue}}}`; + return eval(expValue); + } + if (isVNode(componentOrNode)) { + const vnode = componentOrNode as VNode; + const { props, type, children } = vnode; + const slotsProps = typeof children === 'string' ? undefined : (children as Args); + const componentSlots = (type as any)?.__docgenInfo?.slots; + + const attrsProps = slotsProps + ? Object.fromEntries( + Object.entries(props ?? {}) + .filter(([key, value]) => !slotsProps[key] && !['class', 'style'].includes(key)) + .map(([key, value]) => [key, value]) + ) + : props; + const attributes = mapAttributesAndDirectives(attrsProps ?? {}); + const slotArgs = Object.fromEntries( + Object.entries(props ?? {}).filter(([key, value]) => slotsProps?.[key]) + ); + // eslint-disable-next-line no-nested-ternary + const childSources: string = children + ? typeof children === 'string' + ? children + : mapSlots(slotArgs as Args, generateComponentSource, componentSlots ?? []) + .map((child) => child.content) + .join('') + : ''; + console.log(' vnode ', vnode, ' childSources ', childSources, ' attributes ', attributes); + const name = + typeof type === 'string' + ? type + : (type as FunctionalComponent).name || + (type as ConcreteComponent).__name || + (type as any).__docgenInfo?.displayName; + const propsSource = generateAttributesSource(attributes, args, argTypes, byRef); + return childSources.trim() === '' + ? `<${name} ${propsSource}/>` + : `<${name} ${propsSource}>${childSources}`; } - return `<${name} ${props}/>`; + return null; }; - // get one component or multiple - const components = isArray(compOrComps) ? compOrComps : [compOrComps]; - const source = Object.keys(components) - .map((key: any) => `${generateComponentSource(components[key])}`) - .join(`\n`); - return source; -} - -/** - * create Named Slots content in source - * @param slotProps - * @param slotArgs - */ - -function createNamedSlots(slotArgs: ArgEntries, slotProps: ArgEntries, byRef?: boolean) { - if (!slotArgs) return ''; - const many = slotProps.length > 1; - return slotArgs - .map(([key, value]) => { - const content = !byRef ? JSON.stringify(value) : `{{ ${key} }}`; - return many ? ` ` : ` ${content}`; - }) - .join('\n'); -} - -function getArgsInAttrs(args: Args, attributes: Attribute[]) { - return Object.keys(args).reduce((acc, prop) => { - if (attributes?.find((attr: any) => attr.name === 'v-bind')) { - acc[prop] = args[prop]; - } - const attribute = attributes?.find( - (attr: any) => attr.name === prop || attr.name === `:${prop}` - ); - if (attribute) { - acc[prop] = attribute.name === `:${prop}` ? args[prop] : attribute.value; - } - if (Object.keys(acc).length === 0) { - attributes?.forEach((attr: any) => { - acc[attr.name] = JSON.parse(JSON.stringify(attr.value)); - }); - } - return acc; - }, {} as Record); + const componentsOrNodes = Array.isArray(componentOrNodes) ? componentOrNodes : [componentOrNodes]; + const source = componentsOrNodes + .map((componentOrNode) => generateComponentSource(componentOrNode)) + .join(' '); + return source || null; } -/** - * format prettier for vue - * @param source - */ - /** * source decorator. * @param storyFn Fn * @param context StoryContext */ export const sourceDecorator = (storyFn: any, context: StoryContext) => { - const channel = addons.getChannel(); const skip = skipSourceRender(context); const story = storyFn(); - let source: string; - - useEffect(() => { - if (!skip && source) { - const { id, unmappedArgs } = context; - channel.emit(SNIPPET_RENDERED, { id, args: unmappedArgs, source, format: 'vue' }); - } - }); - - if (skip) { - return story; - } - - const { args = {}, component: ctxtComponent, argTypes = {} } = context || {}; - const components = getTemplates(context?.originalStoryFn); + watch( + () => context.args, + () => { + if (!skip) { + generateSource(context); + } + }, + { immediate: true, deep: true } + ); + return story; +}; - const storyComponent = components.length ? components : ctxtComponent; +export function generateSource(context: StoryContext) { + const channel = addons.getChannel(); + const { args = {}, argTypes = {}, id } = context || {}; + const storyComponents = getTemplateComponents(context?.originalStoryFn, context); const withScript = context?.parameters?.docs?.source?.withScriptSetup || false; - const generatedScript = withScript ? generateScriptSetup(args, argTypes, components) : ''; - const generatedTemplate = generateSource(storyComponent, args, argTypes, withScript); + const generatedScript = withScript ? generateScriptSetup(args, argTypes, storyComponents) : ''; + const generatedTemplate = generateTemplateSource(storyComponents, context, withScript); if (generatedTemplate) { - source = `${generatedScript}\n `; + const source = `${generatedScript}\n `; + channel.emit(SNIPPET_RENDERED, { id, args, source, format: 'vue' }); + return source; } - - return story; + return null; +} +// export local function for testing purpose +export { + generateScriptSetup, + getTemplateComponents as getComponentsFromRenderFn, + getComponents as getComponentsFromTemplate, + mapAttributesAndDirectives, + attributeSource, + htmlEventAttributeToVueEventAttribute, }; diff --git a/code/renderers/vue3/src/docs/utils.ts b/code/renderers/vue3/src/docs/utils.ts new file mode 100644 index 000000000000..707feb46e58f --- /dev/null +++ b/code/renderers/vue3/src/docs/utils.ts @@ -0,0 +1,91 @@ +import type { Args } from '@storybook/types'; +import type { FunctionalComponent } from 'vue'; + +/** + * omit event args + * @param args + */ +const omitEvent = (args: Args): Args => + args + ? Object.fromEntries(Object.entries(args).filter(([key, value]) => !key.startsWith('on'))) + : {}; + +const displayObject = (obj: any): string | boolean | number => { + if (obj && typeof obj === 'object') { + return `{${Object.keys(obj) + .map((key) => `${key}:${displayObject(obj[key])}`) + .join(',')}}`; + } + if (typeof obj === 'string') return `'${obj}'`; + return obj?.toString(); +}; +const htmlEventAttributeToVueEventAttribute = (key: string) => { + return /^on[A-Za-z]/.test(key) ? key.replace(/^on/, 'v-on:').toLowerCase() : key; +}; + +const directiveSource = (key: string, value: unknown) => + key.includes('on') + ? `${htmlEventAttributeToVueEventAttribute(key)}='()=>({})'` + : `${key}="${value}"`; + +const attributeSource = (key: string, value: unknown, dynamic?: boolean) => + // convert html event key to vue event key + ['boolean', 'number', 'object'].includes(typeof value) || // dynamic value + (dynamic && ['style', 'class'].includes(key)) // dynamic style or class + ? `:${key}="${displayObject(value)}"` + : directiveSource(key, value); + +const evalExp = (argExpValue: any, args: Args): any => { + let evalVal = argExpValue; + if (evalVal && /v-bind="(\w+)"/.test(evalVal)) + return evalVal.replace(/"(\w+)"/g, `"${displayObject(args)}"`); + + Object.keys(args).forEach((akey) => { + const regexMatch = new RegExp(`(\\w+)\\.${akey}`, 'g'); + const regexTarget = new RegExp(`(\\w+)\\.${akey}`, 'g'); + if (regexMatch.test(evalVal)) { + evalVal = evalVal.replace(regexTarget, displayObject(args[akey])); + } + }); + + return evalVal; +}; + +const replaceValueWithRef = (source: string, args: Args, ref: string) => { + const value = ref ? args[ref] : 'args'; + + const bindValue = () => { + const argsRef = Object.fromEntries(Object.entries(args).map(([key]) => [key, key])); + return (displayObject(argsRef) as string).replace(/'/g, ''); + }; + + const regexMatch = new RegExp(`="${value}"`, 'g'); + return source.replace(regexMatch, `="${ref ?? bindValue()}"`); +}; + +/** + * + * replace function curly brackets and return with empty string ex: () => { return `${text} , ${year}` } => `${text} , ${year}` + * + * @param slot + * @returns + * */ + +function generateExpression(slot: FunctionalComponent): string { + let body = slot.toString().split('=>')[1].trim().replace('return', '').trim(); + if (body.startsWith('{') && body.endsWith('}')) { + body = body.substring(1, body.length - 1).trim(); + } + return `{{${body}}}`; +} + +export { + omitEvent, + displayObject, + htmlEventAttributeToVueEventAttribute, + directiveSource, + attributeSource, + evalExp, + replaceValueWithRef, + generateExpression, +}; diff --git a/code/renderers/vue3/src/globals.ts b/code/renderers/vue3/src/globals.ts index 58d62a43b4b6..adb3949bd3e1 100644 --- a/code/renderers/vue3/src/globals.ts +++ b/code/renderers/vue3/src/globals.ts @@ -1,5 +1,10 @@ import { global } from '@storybook/global'; +import type { App } from 'vue'; +import type { StoryContext } from './public-types'; const { window: globalWindow } = global; globalWindow.STORYBOOK_ENV = 'vue3'; +globalWindow.PLUGINS_SETUP_FUNCTIONS ||= new Set< + (app: App, context: StoryContext) => unknown +>(); diff --git a/code/renderers/vue3/src/index.ts b/code/renderers/vue3/src/index.ts index 0c37ede8d826..6987cefb0c8e 100644 --- a/code/renderers/vue3/src/index.ts +++ b/code/renderers/vue3/src/index.ts @@ -6,4 +6,10 @@ export * from './public-api'; export * from './public-types'; // optimization: stop HMR propagation in webpack -if (typeof module !== 'undefined') module?.hot?.decline(); +try { + if (module?.hot?.decline) { + module.hot.decline(); + } +} catch (e) { + /* do nothing */ +} diff --git a/code/renderers/vue3/src/public-types.test.ts b/code/renderers/vue3/src/public-types.test.ts index 2ba7859eb9d0..910361b2b629 100644 --- a/code/renderers/vue3/src/public-types.test.ts +++ b/code/renderers/vue3/src/public-types.test.ts @@ -3,14 +3,15 @@ import type { ComponentAnnotations, StoryAnnotations } from '@storybook/types'; import { expectTypeOf } from 'expect-type'; import type { SetOptional } from 'type-fest'; import { h } from 'vue'; -import type { ComponentOptions, FunctionalComponent, VNodeChild } from 'vue'; -import type { Decorator, Meta, StoryObj } from './public-types'; +import type { ComponentPropsAndSlots, Decorator, Meta, StoryObj } from './public-types'; import type { VueRenderer } from './types'; import BaseLayout from './__tests__/BaseLayout.vue'; import Button from './__tests__/Button.vue'; import DecoratorTsVue from './__tests__/Decorator.vue'; import Decorator2TsVue from './__tests__/Decorator2.vue'; +type ButtonProps = ComponentPropsAndSlots; + describe('Meta', () => { test('Generic parameter of Meta can be a component', () => { const meta: Meta = { @@ -18,17 +19,7 @@ describe('Meta', () => { args: { label: 'good', disabled: false }, }; - expectTypeOf(meta).toEqualTypeOf< - ComponentAnnotations< - VueRenderer, - { - readonly disabled: boolean; - readonly label: string; - onMyChangeEvent?: (id: number) => any; - onMyClickEvent?: (id: number) => any; - } - > - >(); + expectTypeOf(meta).toEqualTypeOf>(); }); test('Generic parameter of Meta can be the props of the component', () => { @@ -66,13 +57,6 @@ describe('Meta', () => { }); describe('StoryObj', () => { - type ButtonProps = { - readonly disabled: boolean; - readonly label: string; - onMyChangeEvent?: ((id: number) => any) | undefined; - onMyClickEvent?: ((id: number) => any) | undefined; - }; - test('✅ Required args may be provided partial in meta and the story', () => { const meta = satisfies>()({ component: Button, @@ -123,15 +107,9 @@ describe('StoryObj', () => { type ThemeData = 'light' | 'dark'; -type ComponentProps = Component extends ComponentOptions - ? P - : Component extends FunctionalComponent - ? P - : never; - describe('Story args can be inferred', () => { test('Correct args are inferred when type is widened for render function', () => { - type Props = ComponentProps & { theme: ThemeData }; + type Props = ButtonProps & { theme: ThemeData }; const meta = satisfies>()({ component: Button, @@ -153,7 +131,7 @@ describe('Story args can be inferred', () => { ) => h(DecoratorTsVue, { decoratorArg }, h(storyFn())); test('Correct args are inferred when type is widened for decorators', () => { - type Props = ComponentProps & { decoratorArg: string }; + type Props = ButtonProps & { decoratorArg: string }; const meta = satisfies>()({ component: Button, @@ -168,7 +146,10 @@ describe('Story args can be inferred', () => { }); test('Correct args are inferred when type is widened for multiple decorators', () => { - type Props = ComponentProps & { decoratorArg: string; decoratorArg2: string }; + type Props = ButtonProps & { + decoratorArg: string; + decoratorArg2: string; + }; const secondDecorator: Decorator<{ decoratorArg2: string }> = ( storyFn, @@ -208,12 +189,7 @@ test('Infer type of slots', () => { }, }; - type Props = { - readonly otherProp: boolean; - header?: ((headerProps: { title: string }) => any) | VNodeChild; - default?: ((defaultProps: {}) => any) | VNodeChild; - footer?: ((footerProps: {}) => any) | VNodeChild; - }; + type Props = ComponentPropsAndSlots; type Expected = StoryAnnotations; expectTypeOf(Basic).toEqualTypeOf(); diff --git a/code/renderers/vue3/src/public-types.ts b/code/renderers/vue3/src/public-types.ts index 9af4cd3b3114..51e58dc0b089 100644 --- a/code/renderers/vue3/src/public-types.ts +++ b/code/renderers/vue3/src/public-types.ts @@ -6,13 +6,14 @@ import type { ComponentAnnotations, DecoratorFunction, LoaderFunction, + ProjectAnnotations, StoryAnnotations, StoryContext as GenericStoryContext, StrictArgs, - ProjectAnnotations, } from '@storybook/types'; -import type { SetOptional, Simplify, RemoveIndexSignature } from 'type-fest'; -import type { ComponentOptions, ConcreteComponent, FunctionalComponent, VNodeChild } from 'vue'; +import type { Constructor, RemoveIndexSignature, SetOptional, Simplify } from 'type-fest'; +import type { FunctionalComponent, VNodeChild } from 'vue'; +import type { ComponentProps, ComponentSlots } from 'vue-component-type-helpers'; import type { VueRenderer } from './types'; export type { Args, ArgTypes, Parameters, StrictArgs } from '@storybook/types'; @@ -49,7 +50,7 @@ export type StoryObj = TMetaOrCmpOrArgs extends { args?: infer DefaultArgs; } ? Simplify< - ComponentProps & ArgsFromMeta + ComponentPropsAndSlots & ArgsFromMeta > extends infer TArgs ? StoryAnnotations< VueRenderer, @@ -59,24 +60,18 @@ export type StoryObj = TMetaOrCmpOrArgs extends { : never : StoryAnnotations>; -type ExtractSlots = C extends new (...args: any[]) => { $slots: infer T } - ? AllowNonFunctionSlots>> - : unknown; +type ExtractSlots = AllowNonFunctionSlots>>>; type AllowNonFunctionSlots = { [K in keyof Slots]: Slots[K] | VNodeChild; }; -export type ComponentProps = C extends ComponentOptions - ? P & ExtractSlots - : C extends FunctionalComponent - ? P - : unknown; +export type ComponentPropsAndSlots = ComponentProps & ExtractSlots; -type ComponentPropsOrProps = TCmpOrArgs extends ConcreteComponent - ? unknown extends ComponentProps - ? TCmpOrArgs - : ComponentProps +type ComponentPropsOrProps = TCmpOrArgs extends Constructor + ? ComponentPropsAndSlots + : TCmpOrArgs extends FunctionalComponent + ? ComponentPropsAndSlots : TCmpOrArgs; /** diff --git a/code/renderers/vue3/src/render.ts b/code/renderers/vue3/src/render.ts index 552438220600..cf27f67357c8 100644 --- a/code/renderers/vue3/src/render.ts +++ b/code/renderers/vue3/src/render.ts @@ -1,9 +1,9 @@ +/* eslint-disable local-rules/no-uncategorized-errors */ /* eslint-disable no-param-reassign */ import type { App } from 'vue'; import { createApp, h, reactive, isVNode, isReactive } from 'vue'; import type { ArgsStoryFn, RenderContext } from '@storybook/types'; import type { Args, StoryContext } from '@storybook/csf'; - import type { StoryFnVueReturnType, StoryID, VueRenderer } from './types'; export const render: ArgsStoryFn = (props, context) => { @@ -14,21 +14,20 @@ export const render: ArgsStoryFn = (props, context) => { ); } - return () => h(Component, props, generateSlots(context)); + return () => h(Component, props, getSlots(props, context)); }; -// set of setup functions that will be called when story is created -const setupFunctions = new Set<(app: App, storyContext?: StoryContext) => void>(); -/** add a setup function to set that will be call when story is created a d - * - * @param fn - */ -export const setup = (fn: (app: App, storyContext?: StoryContext) => void) => { - setupFunctions.add(fn); +export const setup = (fn: (app: App, storyContext?: StoryContext) => unknown) => { + globalThis.PLUGINS_SETUP_FUNCTIONS ??= new Set(); + globalThis.PLUGINS_SETUP_FUNCTIONS.add(fn); }; -const runSetupFunctions = (app: App, storyContext: StoryContext) => { - setupFunctions.forEach((fn) => fn(app, storyContext)); +const runSetupFunctions = async ( + app: App, + storyContext: StoryContext +): Promise => { + if (globalThis && globalThis.PLUGINS_SETUP_FUNCTIONS) + await Promise.all([...globalThis.PLUGINS_SETUP_FUNCTIONS].map((fn) => fn(app, storyContext))); }; const map = new Map< @@ -36,11 +35,10 @@ const map = new Map< { vueApp: ReturnType; reactiveArgs: Args; - reactiveSlots?: Args; } >(); -export function renderToCanvas( +export async function renderToCanvas( { storyFn, forceRemount, showMain, showException, storyContext, id }: RenderContext, canvasElement: VueRenderer['canvasElement'] ) { @@ -82,7 +80,7 @@ export function renderToCanvas( }); vueApp.config.errorHandler = (e: unknown) => showException(e as Error); - runSetupFunctions(vueApp, storyContext); + await runSetupFunctions(vueApp, storyContext); vueApp.mount(canvasElement); showMain(); @@ -93,20 +91,16 @@ export function renderToCanvas( /** * generate slots for default story without render function template - * @param context */ - -function generateSlots(context: StoryContext) { +function getSlots(props: Args, context: StoryContext) { const { argTypes } = context; - const slots = Object.entries(argTypes) - .filter(([key, value]) => argTypes[key]?.table?.category === 'slots') - .map(([key, value]) => { - const slotValue = context.args[key]; - return [key, typeof slotValue === 'function' ? slotValue : () => slotValue]; - }); - - return reactive(Object.fromEntries(slots)); + const slots = Object.entries(props) + .filter(([key]) => argTypes[key]?.table?.category === 'slots') + .map(([key, value]) => [key, typeof value === 'function' ? value : () => value]); + + return Object.fromEntries(slots); } + /** * get the args from the root element props if it is a vnode otherwise from the context * @param element is the root element of the story diff --git a/code/renderers/vue3/src/types.ts b/code/renderers/vue3/src/types.ts index 8526a6035165..1094f6780625 100644 --- a/code/renderers/vue3/src/types.ts +++ b/code/renderers/vue3/src/types.ts @@ -1,5 +1,5 @@ -import type { StoryContext as StoryContextBase, WebRenderer } from '@storybook/types'; -import type { ConcreteComponent } from 'vue'; +import { type StoryContext as StoryContextBase, type WebRenderer } from '@storybook/types'; +import type { App, ConcreteComponent } from 'vue'; export type { RenderContext } from '@storybook/types'; @@ -14,6 +14,8 @@ export type StoryFnVueReturnType = ConcreteComponent; export type StoryContext = StoryContextBase; +export type StorybookVueApp = { vueApp: App; storyContext: StoryContext }; + /** * @deprecated Use `VueRenderer` instead. */ diff --git a/code/renderers/vue3/src/typings.d.ts b/code/renderers/vue3/src/typings.d.ts index f4beceae1d63..d477e85e2a29 100644 --- a/code/renderers/vue3/src/typings.d.ts +++ b/code/renderers/vue3/src/typings.d.ts @@ -1 +1,2 @@ declare var STORYBOOK_ENV: 'vue3'; +declare var PLUGINS_SETUP_FUNCTIONS = new Set<(app, context) => unknown>(); diff --git a/code/renderers/vue3/template/components/Form.vue b/code/renderers/vue3/template/components/Form.vue index fc46f159e337..e867030f0917 100644 --- a/code/renderers/vue3/template/components/Form.vue +++ b/code/renderers/vue3/template/components/Form.vue @@ -2,7 +2,7 @@

Completed!!

@@ -27,9 +27,6 @@ export default { }, methods: { - setValue(event) { - this.value = event.target.value; - }, onSubmit() { this.onSuccess(this.value); setTimeout(() => { diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts index f3403375c924..2c0319724491 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts @@ -1,3 +1,6 @@ +/// +/// + import { expect } from '@storybook/jest'; import type { Meta, StoryObj } from '@storybook/vue3'; import { within } from '@storybook/testing-library'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/SourceDecorator.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/SourceDecorator.stories.ts new file mode 100644 index 000000000000..4a5a8613069e --- /dev/null +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/SourceDecorator.stories.ts @@ -0,0 +1,46 @@ +import type { Meta, StoryObj } from '@storybook/vue3'; + +import GlobalUsage from './GlobalUsage.vue'; +import GlobalSetup from './GlobalSetup.vue'; + +const meta: Meta = { + component: GlobalUsage, + argTypes: {}, + tags: ['autodocs'], +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const MultiComponents: Story = { + args: { + label: 'Button', + size: 'large', + backgroundColor: '#aa00ff', + btn1Args: { label: 'Button 10', size: 'small', backgroundColor: '#aa00ff' }, + }, + render(args: any) { + return { + components: { GlobalUsage, GlobalSetup }, + setup() { + return { args }; + }, + template: `
+ +
+ +   +
+

Complex Story Custom template



+ + +
Multiple + Components
+
+ + +
+
`, + }; + }, +}; diff --git a/code/renderers/vue3/tsconfig.json b/code/renderers/vue3/tsconfig.json index 6063e7e89bd2..d5b59e915abb 100644 --- a/code/renderers/vue3/tsconfig.json +++ b/code/renderers/vue3/tsconfig.json @@ -4,8 +4,10 @@ "strict": true, "resolveJsonModule": true, "skipLibCheck": true, - "allowJs": true, - "types": ["jest", "testing-library__jest-dom"] + "allowJs": true + }, + "vueCompilerOptions": { + "target": 3 }, "include": ["src/**/*", "src/**/*.vue", "template/**/*", "template/**/*.vue"] } diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 24214acb7cc8..6c1758039764 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook web-components renderer", "keywords": [ "lit", @@ -41,23 +41,25 @@ "types": "dist/index.d.ts", "files": [ "dist/**/*", - "template/**/*", + "template/cli/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/core-client": "7.1.0-alpha.17", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/client-logger": "workspace:*", + "@storybook/core-client": "workspace:*", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/types": "workspace:*", + "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0" }, "devDependencies": { @@ -84,5 +86,5 @@ ], "platform": "browser" }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/renderers/web-components/src/docs/__testfixtures__/lit-element-demo-card/properties.snapshot b/code/renderers/web-components/src/docs/__testfixtures__/lit-element-demo-card/properties.snapshot index 127bc8704a4a..7f1b194d16b6 100644 --- a/code/renderers/web-components/src/docs/__testfixtures__/lit-element-demo-card/properties.snapshot +++ b/code/renderers/web-components/src/docs/__testfixtures__/lit-element-demo-card/properties.snapshot @@ -84,7 +84,7 @@ Object { }, }, "type": Object { - "name": "void", + "name": "boolean", }, }, "backSide": Object { @@ -126,7 +126,7 @@ Object { "name": "header", "required": false, "table": Object { - "category": "properties", + "category": "attributes", "defaultValue": Object { "summary": "\\"Your Message\\"", }, @@ -152,7 +152,7 @@ Object { "name": "rows", "required": false, "table": Object { - "category": "properties", + "category": "attributes", "defaultValue": Object { "summary": "[]", }, diff --git a/code/renderers/web-components/src/docs/config.ts b/code/renderers/web-components/src/docs/config.ts index 038094f94884..3597f99cd4cc 100644 --- a/code/renderers/web-components/src/docs/config.ts +++ b/code/renderers/web-components/src/docs/config.ts @@ -2,10 +2,11 @@ import type { Addon_DecoratorFunction, ArgTypesEnhancer } from '@storybook/types import { SourceType, enhanceArgTypes } from '@storybook/docs-tools'; import { extractArgTypes, extractComponentDescription } from './custom-elements'; import { sourceDecorator } from './sourceDecorator'; +import type { StoryFnHtmlReturnType } from '../types'; -export const decorators: Addon_DecoratorFunction[] = [sourceDecorator]; +export const decorators: Addon_DecoratorFunction[] = [sourceDecorator]; -export const parameters: {} = { +export const parameters: object = { docs: { extractArgTypes, extractComponentDescription, diff --git a/code/renderers/web-components/src/docs/custom-elements.test.ts b/code/renderers/web-components/src/docs/custom-elements.test.ts index 7ad642756d32..edbffc37994b 100644 --- a/code/renderers/web-components/src/docs/custom-elements.test.ts +++ b/code/renderers/web-components/src/docs/custom-elements.test.ts @@ -1,6 +1,5 @@ /* eslint-disable no-underscore-dangle */ import { global } from '@storybook/global'; - import { extractArgTypes } from './custom-elements'; import customElementsManifest from './__testfixtures__/custom-elements.json'; @@ -17,9 +16,9 @@ describe('extractArgTypes', () => { describe('events', () => { it('should map to an action event handler', () => { - const { onSbHeaderCreateAccount } = extractArgTypes('sb-header'); + const extractedArgType = extractArgTypes('sb-header'); - expect(onSbHeaderCreateAccount).toEqual({ + expect(extractedArgType?.onSbHeaderCreateAccount).toEqual({ name: 'onSbHeaderCreateAccount', action: { name: 'sb-header:createAccount' }, table: { disable: true }, @@ -27,9 +26,9 @@ describe('extractArgTypes', () => { }); it('should map to a regular item', () => { - const { 'sb-header:createAccount': item } = extractArgTypes('sb-header'); + const extractedArgType = extractArgTypes('sb-header'); - expect(item).toEqual({ + expect(extractedArgType?.['sb-header:createAccount']).toEqual({ name: 'sb-header:createAccount', required: false, description: 'Event send when user clicks on create account button', diff --git a/code/renderers/web-components/src/docs/custom-elements.ts b/code/renderers/web-components/src/docs/custom-elements.ts index 66743bfdd7a8..eaa9f3436bd1 100644 --- a/code/renderers/web-components/src/docs/custom-elements.ts +++ b/code/renderers/web-components/src/docs/custom-elements.ts @@ -1,3 +1,4 @@ +import invariant from 'tiny-invariant'; import type { InputType, ArgTypes } from '@storybook/types'; import { logger } from '@storybook/client-logger'; import { getCustomElements, isValidComponent, isValidMetaData } from '..'; @@ -39,8 +40,19 @@ interface Declaration { } function mapItem(item: TagItem, category: string): InputType { - const type = - category === 'properties' ? { name: item.type?.text || item.type } : { name: 'void' }; + let type; + switch (category) { + case 'attributes': + case 'properties': + type = { name: item.type?.text || item.type }; + break; + case 'slots': + type = { name: 'string' }; + break; + default: + type = { name: 'void' }; + break; + } return { name: item.name, @@ -80,6 +92,7 @@ function mapData(data: TagItem[], category: string) { switch (category) { case 'events': mapEvent(item).forEach((argType) => { + invariant(argType.name, `${argType} should have a name property.`); acc[argType.name] = argType; }); break; @@ -137,13 +150,13 @@ export const extractArgTypesFromElements = (tagName: string, customElements: Cus const metaData = getMetaData(tagName, customElements); return ( metaData && { - ...mapData(metaData.attributes, 'attributes'), - ...mapData(metaData.members, 'properties'), - ...mapData(metaData.properties, 'properties'), - ...mapData(metaData.events, 'events'), - ...mapData(metaData.slots, 'slots'), - ...mapData(metaData.cssProperties, 'css custom properties'), - ...mapData(metaData.cssParts, 'css shadow parts'), + ...mapData(metaData.members ?? [], 'properties'), + ...mapData(metaData.properties ?? [], 'properties'), + ...mapData(metaData.attributes ?? [], 'attributes'), + ...mapData(metaData.events ?? [], 'events'), + ...mapData(metaData.slots ?? [], 'slots'), + ...mapData(metaData.cssProperties ?? [], 'css custom properties'), + ...mapData(metaData.cssParts ?? [], 'css shadow parts'), } ); }; diff --git a/code/renderers/web-components/src/render.ts b/code/renderers/web-components/src/render.ts index f031cd4dc2b5..5445648cb51e 100644 --- a/code/renderers/web-components/src/render.ts +++ b/code/renderers/web-components/src/render.ts @@ -44,7 +44,7 @@ export function renderToCanvas( if (forceRemount || !canvasElement.querySelector('[id="root-inner"]')) { canvasElement.innerHTML = '
'; } - const renderTo = canvasElement.querySelector('[id="root-inner"]'); + const renderTo = canvasElement.querySelector('[id="root-inner"]') as HTMLElement; litRender(element, renderTo); simulatePageLoad(canvasElement); diff --git a/code/renderers/web-components/template/stories/custom-elements.json b/code/renderers/web-components/template/stories/custom-elements.json index 7389e1bab99b..6bdc06ce7a23 100644 --- a/code/renderers/web-components/template/stories/custom-elements.json +++ b/code/renderers/web-components/template/stories/custom-elements.json @@ -51,8 +51,8 @@ ], "slots": [ { - "description": "This is an unnamed slot (the default slot)", - "name": "" + "name": "prefix", + "description": "Label prefix" } ], "members": [ diff --git a/code/renderers/web-components/template/stories/demo-wc-card.stories.js b/code/renderers/web-components/template/stories/demo-wc-card.stories.js index 0e5dd11f3e68..193a961c6bce 100644 --- a/code/renderers/web-components/template/stories/demo-wc-card.stories.js +++ b/code/renderers/web-components/template/stories/demo-wc-card.stories.js @@ -3,14 +3,22 @@ import './demo-wc-card'; export default { component: 'demo-wc-card', + render: ({ backSide, header, rows, prefix }) => + html` + ${prefix}A simple card + `, }; -const Template = ({ backSide, header, rows }) => - html` - A simple card - `; +export const Front = { + args: { backSide: false, header: undefined, rows: [] }, +}; + +export const Back = { + args: { backSide: true, header: undefined, rows: [] }, +}; -export const Front = Template.bind({}); -Front.args = { backSide: false, header: undefined, rows: [] }; +export const Prefix = { + args: { backSide: false, prefix: 'prefix:', header: 'my header', rows: [] }, +}; diff --git a/code/renderers/web-components/template/stories/demo-wc-card/DemoWcCard.js b/code/renderers/web-components/template/stories/demo-wc-card/DemoWcCard.js index 89e29d06fc92..4c8cee3a7c6c 100644 --- a/code/renderers/web-components/template/stories/demo-wc-card/DemoWcCard.js +++ b/code/renderers/web-components/template/stories/demo-wc-card/DemoWcCard.js @@ -69,7 +69,7 @@ export class DemoWcCard extends LitElement {
-
${this.header}
+
${this.header}
${this.rows.length === 0 diff --git a/code/renderers/web-components/tsconfig.json b/code/renderers/web-components/tsconfig.json index 78720cd739c8..d5dc307ae91d 100644 --- a/code/renderers/web-components/tsconfig.json +++ b/code/renderers/web-components/tsconfig.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "resolveJsonModule": true, - "strict": false + "strict": true }, "include": ["src/**/*", "template/**/*"] } diff --git a/code/tsconfig.json b/code/tsconfig.json index e28f13442121..26de1b5ba684 100644 --- a/code/tsconfig.json +++ b/code/tsconfig.json @@ -10,7 +10,7 @@ "moduleResolution": "Node", "target": "ES2020", "module": "CommonJS", - "skipLibCheck": false, + "skipLibCheck": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, diff --git a/code/ui/.storybook/main.ts b/code/ui/.storybook/main.ts index 5a624947b125..5f979898a5c2 100644 --- a/code/ui/.storybook/main.ts +++ b/code/ui/.storybook/main.ts @@ -6,18 +6,17 @@ import type { StorybookConfig } from '../../frameworks/react-vite'; const isBlocksOnly = process.env.STORYBOOK_BLOCKS_ONLY === 'true'; const allStories = [ - '../../lib/cli/rendererAssets/common/Introduction.stories.mdx', { directory: '../manager/src', - titlePrefix: '@storybook-manager', + titlePrefix: '@manager', }, { - directory: '../components/src', - titlePrefix: '@storybook-components', + directory: '../components/src/components', + titlePrefix: '@components', }, { directory: '../blocks/src', - titlePrefix: '@storybook-blocks', + titlePrefix: '@blocks', }, ]; @@ -40,8 +39,8 @@ const allStories = [ * src/components/ColorPalette.tsx - IGNORED, not story */ const blocksOnlyStories = [ - '../blocks/src/@(blocks|controls|examples)/!(internal)/**/*.@(mdx|stories.@(tsx|ts|jsx|js))', - '../blocks/src/@(blocks|controls|examples)/*.@(mdx|stories.@(tsx|ts|jsx|js))', + '../blocks/src/@(blocks|controls|examples)/!(internal)/**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))', + '../blocks/src/@(blocks|controls|examples)/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))', ]; const config: StorybookConfig = { @@ -51,6 +50,7 @@ const config: StorybookConfig = { '@storybook/addon-essentials', '@storybook/addon-interactions', '@storybook/addon-storysource', + '@storybook/addon-designs', ], framework: { name: '@storybook/react-vite', diff --git a/code/ui/.storybook/manager.ts b/code/ui/.storybook/manager.tsx similarity index 67% rename from code/ui/.storybook/manager.ts rename to code/ui/.storybook/manager.tsx index 1ac61cf4d375..7cdbda8d32e9 100644 --- a/code/ui/.storybook/manager.ts +++ b/code/ui/.storybook/manager.tsx @@ -1,4 +1,5 @@ -import { addons } from '@storybook/manager-api'; +import React from 'react'; +import { addons, types } from '@storybook/manager-api'; import startCase from 'lodash/startCase.js'; addons.setConfig({ diff --git a/code/ui/.storybook/preview.tsx b/code/ui/.storybook/preview.tsx index ed08e0fd9886..c89c15e85db4 100644 --- a/code/ui/.storybook/preview.tsx +++ b/code/ui/.storybook/preview.tsx @@ -64,18 +64,19 @@ const ThemeStack = styled.div( const PlayFnNotice = styled.div( { position: 'absolute', - bottom: '1rem', - right: '1rem', - border: '1px solid #ccc', - borderRadius: '5px', - padding: '1rem', - fontSize: '12px', + top: 0, + left: 0, + width: '100%', + borderBottom: '1px solid #ccc', + padding: '3px 8px', + fontSize: '10px', + fontWeight: 'bold', '> *': { display: 'block', }, }, ({ theme }) => ({ - background: theme.background.content, + background: '#fffbd9', color: theme.color.defaultText, }) ); @@ -219,10 +220,15 @@ export const decorators = [ {!parameters.theme && isChromatic() && playFunction && ( - - Detected play function. - Rendering in a single theme - + <> + + + Detected play function in Chromatic. Rendering only light theme to avoid + multiple play functions in the same story. + + +
+ )} @@ -271,6 +277,7 @@ export const parameters = { }, docs: { theme: themes.light, + toc: {}, }, controls: { presetColors: [ diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index 0d01d78c2ad5..2956fd10dbdd 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Storybook Doc Blocks", "keywords": [ "storybook" @@ -36,24 +36,25 @@ "dist/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.1.0-alpha.17", + "@storybook/docs-tools": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/preview-api": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/preview-api": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -62,12 +63,13 @@ "memoizerific": "^1.11.3", "polished": "^4.2.2", "react-colorful": "^5.1.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "devDependencies": { - "@storybook/addon-actions": "7.1.0-alpha.17", + "@storybook/addon-actions": "workspace:*", "@types/color-convert": "^2.0.0" }, "peerDependencies": { @@ -82,5 +84,5 @@ "./src/index.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/ui/blocks/src/blocks/Description.stories.tsx b/code/ui/blocks/src/blocks/Description.stories.tsx index a8f6bac08fd5..a00a22f7a0b5 100644 --- a/code/ui/blocks/src/blocks/Description.stories.tsx +++ b/code/ui/blocks/src/blocks/Description.stories.tsx @@ -12,7 +12,6 @@ const meta: Meta = { parameters: { controls: { include: [], - hideNoControlsWarning: true, }, // workaround for https://github.com/storybookjs/storybook/issues/20505 docs: { source: { type: 'code' } }, diff --git a/code/ui/blocks/src/blocks/DocsContainer.tsx b/code/ui/blocks/src/blocks/DocsContainer.tsx index 8640f06a68f1..07b855295f10 100644 --- a/code/ui/blocks/src/blocks/DocsContainer.tsx +++ b/code/ui/blocks/src/blocks/DocsContainer.tsx @@ -9,6 +9,7 @@ import type { DocsContextProps } from './DocsContext'; import { DocsContext } from './DocsContext'; import { SourceContainer } from './SourceContainer'; import { scrollToElement } from './utils'; +import { TableOfContents } from '../components/TableOfContents'; const { document, window: globalWindow } = global; @@ -22,6 +23,16 @@ export const DocsContainer: FC> = ({ theme, children, }) => { + let toc; + + try { + const meta = context.resolveOf('meta', ['meta']); + toc = meta.preparedMeta.parameters?.docs?.toc; + } catch (err) { + // No meta, falling back to project annotations + toc = context?.projectAnnotations?.parameters?.docs?.toc; + } + useEffect(() => { let url; try { @@ -44,7 +55,11 @@ export const DocsContainer: FC> = ({ - {children} + : null} + > + {children} + diff --git a/code/ui/blocks/src/blocks/DocsPage.stories.tsx b/code/ui/blocks/src/blocks/DocsPage.stories.tsx index b65768ef1f3d..c52674e31c41 100644 --- a/code/ui/blocks/src/blocks/DocsPage.stories.tsx +++ b/code/ui/blocks/src/blocks/DocsPage.stories.tsx @@ -5,6 +5,9 @@ const meta = { component: DocsPage, parameters: { docsStyles: true, + chromatic: { + disableSnapshot: true, + }, }, } satisfies Meta; diff --git a/code/ui/blocks/src/blocks/Meta.tsx b/code/ui/blocks/src/blocks/Meta.tsx index c651bc06f87f..a54023160387 100644 --- a/code/ui/blocks/src/blocks/Meta.tsx +++ b/code/ui/blocks/src/blocks/Meta.tsx @@ -5,7 +5,7 @@ import type { BaseAnnotations, ModuleExports } from '@storybook/types'; import { Anchor } from './Anchor'; import { DocsContext } from './DocsContext'; -type MetaProps = BaseAnnotations & { of?: ModuleExports }; +type MetaProps = BaseAnnotations & { of?: ModuleExports; title?: string }; /** * This component is used to declare component metadata in docs diff --git a/code/ui/blocks/src/blocks/SourceContainer.tsx b/code/ui/blocks/src/blocks/SourceContainer.tsx index a2359ea103a2..c24b320c4330 100644 --- a/code/ui/blocks/src/blocks/SourceContainer.tsx +++ b/code/ui/blocks/src/blocks/SourceContainer.tsx @@ -1,7 +1,6 @@ import type { FC, Context, PropsWithChildren } from 'react'; import React, { createContext, useEffect, useState } from 'react'; -import { dequal as deepEqual } from 'dequal'; import type { Channel } from '@storybook/channels'; import { SNIPPET_RENDERED } from '@storybook/docs-tools'; @@ -64,11 +63,14 @@ export const SourceContainer: FC> = ({ : idOrEvent; const hash = args ? argsHash(args) : UNKNOWN_ARGS_HASH; - - // optimization: if the source is the same, ignore the incoming event - if (sources[id] && sources[id][hash] && sources[id][hash].code === source) { - return; - } + // FIXME: In SB8.0 when we remove the Source block deprecations, + // we should restore this optimizationand make the Source block + // smarter about understanding when its args change. + // + // See https://github.com/storybookjs/storybook/pull/22807 + // + // optimization: don't update if the source is the same + // if (deepEqual(currentSource, { code: source, format })) return; setSources((current) => { const newSources = { @@ -79,10 +81,7 @@ export const SourceContainer: FC> = ({ }, }; - if (!deepEqual(current, newSources)) { - return newSources; - } - return current; + return newSources; }); }; diff --git a/code/ui/blocks/src/blocks/external/ExternalPreview.ts b/code/ui/blocks/src/blocks/external/ExternalPreview.ts index 4f5b557518a5..52d8e90378d7 100644 --- a/code/ui/blocks/src/blocks/external/ExternalPreview.ts +++ b/code/ui/blocks/src/blocks/external/ExternalPreview.ts @@ -36,7 +36,7 @@ export class ExternalPreview extends Prev private moduleExportsByImportPath: Record = {}; constructor(public projectAnnotations: ProjectAnnotations) { - super(new Channel()); + super(new Channel({})); this.initialize({ getStoryIndex: () => this.storyIndex, diff --git a/code/ui/blocks/src/components/ArgsTable/ArgControl.tsx b/code/ui/blocks/src/components/ArgsTable/ArgControl.tsx index eb548636159f..be9b7e1c8a46 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgControl.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgControl.tsx @@ -1,6 +1,7 @@ import type { FC } from 'react'; import React, { useCallback, useState, useEffect } from 'react'; +import { Link } from '@storybook/components'; import { BooleanControl, ColorControl, @@ -18,6 +19,7 @@ export interface ArgControlProps { row: ArgType; arg: any; updateArgs: (args: Args) => void; + isHovered: boolean; } const Controls: Record = { @@ -40,7 +42,7 @@ const Controls: Record = { const NoControl = () => <>-; -export const ArgControl: FC = ({ row, arg, updateArgs }) => { +export const ArgControl: FC = ({ row, arg, updateArgs, isHovered }) => { const { key, control } = row; const [isFocused, setFocused] = useState(false); @@ -63,7 +65,18 @@ export const ArgControl: FC = ({ row, arg, updateArgs }) => { const onBlur = useCallback(() => setFocused(false), []); const onFocus = useCallback(() => setFocused(true), []); - if (!control || control.disable) return ; + if (!control || control.disable) + return isHovered ? ( + + Setup controls + + ) : ( + + ); // row.name is a display name and not a suitable DOM input id or name - i might contain whitespace etc. // row.key is a hash key and therefore a much safer choice diff --git a/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx b/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx index ea5f856c0027..d6f02f4dc2a7 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx @@ -1,5 +1,5 @@ import type { FC } from 'react'; -import React from 'react'; +import React, { useState } from 'react'; import Markdown from 'markdown-to-jsx'; import { transparentize } from 'polished'; import { styled } from '@storybook/theming'; @@ -76,6 +76,7 @@ const StyledTd = styled.td<{ expandable: boolean }>(({ theme, expandable }) => ( })); export const ArgRow: FC = (props) => { + const [isHovered, setIsHovered] = useState(false); const { row, updateArgs, compact, expandable, initialExpandedArgs } = props; const { name, description } = row; const table = (row.table || {}) as TableAnnotation; @@ -85,7 +86,7 @@ export const ArgRow: FC = (props) => { const hasDescription = description != null && description !== ''; return ( - + setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}> {name} {required ? * : null} @@ -118,7 +119,7 @@ export const ArgRow: FC = (props) => { )} {updateArgs ? ( - + ) : null} diff --git a/code/ui/blocks/src/components/ArgsTable/ArgsTable.stories.tsx b/code/ui/blocks/src/components/ArgsTable/ArgsTable.stories.tsx index 6220c2a895cb..39ed63dc6299 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgsTable.stories.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgsTable.stories.tsx @@ -1,18 +1,22 @@ import React from 'react'; import { action } from '@storybook/addon-actions'; import { styled } from '@storybook/theming'; +import type { Meta, StoryObj } from '@storybook/react'; import { ArgsTable, ArgsTableError } from './ArgsTable'; -import { NoControlsWarning } from './NoControlsWarning'; import * as ArgRow from './ArgRow.stories'; -export default { +const meta = { component: ArgsTable, title: 'Components/ArgsTable/ArgsTable', args: { updateArgs: action('updateArgs'), resetArgs: action('resetArgs'), }, -}; +} satisfies Meta; + +export default meta; +type Story = StoryObj; + const propsSection = { category: 'props ', }; @@ -58,15 +62,14 @@ export const InAddonPanel = { decorators: [(storyFn: any) => {storyFn()}], }; -export const InAddonPanelWithWarning = { - render: (args: any) => ( - <> - - - - ), - // @ts-expect-error (not strict) - args: { ...InAddonPanel.args, updateArgs: null }, +export const InAddonPanelNoControls = { + render: (args: any) => , + args: { + rows: { + stringType: { ...stringType, control: false }, + numberType: { ...numberType, control: false }, + }, + }, decorators: InAddonPanel.decorators, }; @@ -141,8 +144,19 @@ export const Error = { }; export const Empty = { + args: {}, + parameters: { + layout: 'centered', + }, +}; + +export const EmptyInsideAddonPanel: Story = { args: { - rows: {}, + isLoading: false, + inAddonPanel: true, + }, + parameters: { + layout: 'centered', }, }; diff --git a/code/ui/blocks/src/components/ArgsTable/ArgsTable.tsx b/code/ui/blocks/src/components/ArgsTable/ArgsTable.tsx index a54dc89d95f5..120cc7a21368 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgsTable.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgsTable.tsx @@ -5,177 +5,164 @@ import { styled } from '@storybook/theming'; import { transparentize } from 'polished'; import { includeConditionalArg } from '@storybook/csf'; import { once } from '@storybook/client-logger'; -import { IconButton, Icons, Link, ResetWrapper } from '@storybook/components'; +import { IconButton, Icons, ResetWrapper, Link } from '@storybook/components'; import { ArgRow } from './ArgRow'; import { SectionRow } from './SectionRow'; import type { ArgType, ArgTypes, Args, Globals } from './types'; // eslint-disable-next-line import/no-cycle import { EmptyBlock } from '..'; +import { Skeleton } from './Skeleton'; +import { Empty } from './Empty'; export const TableWrapper = styled.table<{ compact?: boolean; inAddonPanel?: boolean; isLoading?: boolean; -}>( - ({ theme, compact, inAddonPanel }) => ({ - '&&': { - // Resets for cascading/system styles - borderSpacing: 0, - color: theme.color.defaultText, - - 'td, th': { - padding: 0, - border: 'none', - verticalAlign: 'top', - textOverflow: 'ellipsis', - }, - // End Resets +}>(({ theme, compact, inAddonPanel }) => ({ + '&&': { + // Resets for cascading/system styles + borderSpacing: 0, + color: theme.color.defaultText, + + 'td, th': { + padding: 0, + border: 'none', + verticalAlign: 'top', + textOverflow: 'ellipsis', + }, + // End Resets - fontSize: theme.typography.size.s2 - 1, - lineHeight: '20px', - textAlign: 'left', - width: '100%', + fontSize: theme.typography.size.s2 - 1, + lineHeight: '20px', + textAlign: 'left', + width: '100%', - // Margin collapse - marginTop: inAddonPanel ? 0 : 25, - marginBottom: inAddonPanel ? 0 : 40, + // Margin collapse + marginTop: inAddonPanel ? 0 : 25, + marginBottom: inAddonPanel ? 0 : 40, - 'thead th:first-of-type, td:first-of-type': { - // intentionally specify thead here - width: '25%', - }, + 'thead th:first-of-type, td:first-of-type': { + // intentionally specify thead here + width: '25%', + }, - 'th:first-of-type, td:first-of-type': { - paddingLeft: 20, - }, + 'th:first-of-type, td:first-of-type': { + paddingLeft: 20, + }, - 'th:nth-of-type(2), td:nth-of-type(2)': { - ...(compact - ? null - : { - // Description column - width: '35%', - }), - }, + 'th:nth-of-type(2), td:nth-of-type(2)': { + ...(compact + ? null + : { + // Description column + width: '35%', + }), + }, - 'td:nth-of-type(3)': { - ...(compact - ? null - : { - // Defaults column - width: '15%', - }), - }, + 'td:nth-of-type(3)': { + ...(compact + ? null + : { + // Defaults column + width: '15%', + }), + }, - 'th:last-of-type, td:last-of-type': { - paddingRight: 20, - ...(compact - ? null - : { - // Controls column - width: '25%', - }), - }, + 'th:last-of-type, td:last-of-type': { + paddingRight: 20, + ...(compact + ? null + : { + // Controls column + width: '25%', + }), + }, + + th: { + color: + theme.base === 'light' + ? transparentize(0.25, theme.color.defaultText) + : transparentize(0.45, theme.color.defaultText), + paddingTop: 10, + paddingBottom: 10, + paddingLeft: 15, + paddingRight: 15, + }, - th: { - color: - theme.base === 'light' - ? transparentize(0.25, theme.color.defaultText) - : transparentize(0.45, theme.color.defaultText), - paddingTop: 10, - paddingBottom: 10, + td: { + paddingTop: '10px', + paddingBottom: '10px', + + '&:not(:first-of-type)': { paddingLeft: 15, paddingRight: 15, }, - td: { - paddingTop: '10px', - paddingBottom: '10px', - - '&:not(:first-of-type)': { - paddingLeft: 15, - paddingRight: 15, - }, - - '&:last-of-type': { - paddingRight: 20, - }, + '&:last-of-type': { + paddingRight: 20, }, + }, - // Makes border alignment consistent w/other DocBlocks - marginLeft: inAddonPanel ? 0 : 1, - marginRight: inAddonPanel ? 0 : 1, - - tbody: { - // Safari doesn't love shadows on tbody so we need to use a shadow filter. In order to do this, - // the table cells all need to be solid so they have a background color applied. - // I wasn't sure what kinds of content go in these tables so I was extra specific with selectors - // to avoid unexpected surprises. - ...(inAddonPanel - ? null - : { - filter: - theme.base === 'light' - ? `drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.10))` - : `drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.20))`, - }), - - '> tr > *': { - // For filter to work properly, the table cells all need to be opaque. - background: theme.background.content, - borderTop: `1px solid ${theme.appBorderColor}`, - }, - - ...(inAddonPanel - ? null - : { - // This works and I don't know why. :) - '> tr:first-of-type > *': { - borderBlockStart: `1px solid ${theme.appBorderColor}`, - }, - '> tr:last-of-type > *': { - borderBlockEnd: `1px solid ${theme.appBorderColor}`, - }, - '> tr > *:first-of-type': { - borderInlineStart: `1px solid ${theme.appBorderColor}`, - }, - '> tr > *:last-of-type': { - borderInlineEnd: `1px solid ${theme.appBorderColor}`, - }, - - // Thank you, Safari, for making me write code like this. - '> tr:first-of-type > td:first-of-type': { - borderTopLeftRadius: theme.appBorderRadius, - }, - '> tr:first-of-type > td:last-of-type': { - borderTopRightRadius: theme.appBorderRadius, - }, - '> tr:last-of-type > td:first-of-type': { - borderBottomLeftRadius: theme.appBorderRadius, - }, - '> tr:last-of-type > td:last-of-type': { - borderBottomRightRadius: theme.appBorderRadius, - }, - }), + // Makes border alignment consistent w/other DocBlocks + marginLeft: inAddonPanel ? 0 : 1, + marginRight: inAddonPanel ? 0 : 1, + + tbody: { + // Safari doesn't love shadows on tbody so we need to use a shadow filter. In order to do this, + // the table cells all need to be solid so they have a background color applied. + // I wasn't sure what kinds of content go in these tables so I was extra specific with selectors + // to avoid unexpected surprises. + ...(inAddonPanel + ? null + : { + filter: + theme.base === 'light' + ? `drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.10))` + : `drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.20))`, + }), + + '> tr > *': { + // For filter to work properly, the table cells all need to be opaque. + background: theme.background.content, + borderTop: `1px solid ${theme.appBorderColor}`, }, - // End awesome table styling + + ...(inAddonPanel + ? null + : { + // This works and I don't know why. :) + '> tr:first-of-type > *': { + borderBlockStart: `1px solid ${theme.appBorderColor}`, + }, + '> tr:last-of-type > *': { + borderBlockEnd: `1px solid ${theme.appBorderColor}`, + }, + '> tr > *:first-of-type': { + borderInlineStart: `1px solid ${theme.appBorderColor}`, + }, + '> tr > *:last-of-type': { + borderInlineEnd: `1px solid ${theme.appBorderColor}`, + }, + + // Thank you, Safari, for making me write code like this. + '> tr:first-of-type > td:first-of-type': { + borderTopLeftRadius: theme.appBorderRadius, + }, + '> tr:first-of-type > td:last-of-type': { + borderTopRightRadius: theme.appBorderRadius, + }, + '> tr:last-of-type > td:first-of-type': { + borderBottomLeftRadius: theme.appBorderRadius, + }, + '> tr:last-of-type > td:last-of-type': { + borderBottomRightRadius: theme.appBorderRadius, + }, + }), }, - }), - ({ isLoading, theme }) => - isLoading - ? { - 'th span, td span, td button': { - display: 'inline', - backgroundColor: theme.appBorderColor, - animation: `${theme.animation.glow} 1.5s ease-in-out infinite`, - color: 'transparent', - boxShadow: 'none', - borderRadius: 0, - }, - } - : {} -); + // End awesome table styling + }, +})); const StyledIconButton = styled(IconButton as any)(({ theme }) => ({ color: theme.barTextColor, @@ -212,38 +199,20 @@ export interface ArgsTableOptionProps { isLoading?: boolean; sort?: SortType; } -export interface ArgsTableDataProps { +interface ArgsTableDataProps { rows: ArgTypes; args?: Args; globals?: Globals; } -export interface ArgsTableErrorProps { +interface ArgsTableErrorProps { error: ArgsTableError; } + export interface ArgsTableLoadingProps { - isLoading: true; + isLoading: boolean; } -const rowLoadingData = (key: string) => ({ - key, - name: 'propertyName', - description: 'This is a short description', - control: { type: 'text' }, - table: { - type: { summary: 'summary' }, - defaultValue: { summary: 'defaultValue' }, - }, -}); - -export const argsTableLoadingData: ArgsTableDataProps = { - rows: { - row1: rowLoadingData('row1'), - row2: rowLoadingData('row2'), - row3: rowLoadingData('row3'), - }, -}; - export type ArgsTableProps = ArgsTableOptionProps & (ArgsTableDataProps | ArgsTableErrorProps | ArgsTableLoadingProps); @@ -337,10 +306,21 @@ const safeIncludeConditionalArg = (row: ArgType, args: Args, globals: Globals) = * ArgDefs, usually derived from docgen info for the component. */ export const ArgsTable: FC = (props) => { + const { + updateArgs, + resetArgs, + compact, + inAddonPanel, + initialExpandedArgs, + sort = 'none', + isLoading, + } = props; + if ('error' in props) { + const { error } = props; return ( - {props.error}  + {error}  Read the docs @@ -348,17 +328,11 @@ export const ArgsTable: FC = (props) => { ); } - const { - updateArgs, - resetArgs, - compact, - inAddonPanel, - initialExpandedArgs, - sort = 'none', - } = props; - const isLoading = 'isLoading' in props; - const { rows, args, globals } = 'rows' in props ? props : argsTableLoadingData; + // If the story is loading, show a skeleton + // This happen when you load the manager and the story is not yet loaded + if (isLoading) return ; + const { rows, args, globals } = 'rows' in props && props; const groups = groupRows( pickBy( rows, @@ -367,20 +341,12 @@ export const ArgsTable: FC = (props) => { sort ); - if ( - groups.ungrouped.length === 0 && - Object.entries(groups.sections).length === 0 && - Object.entries(groups.ungroupedSubsections).length === 0 - ) { - return ( - - No inputs found for this component.  - - Read the docs - - - ); - } + // If there are no controls, show the empty state + const hasNoUngrouped = groups.ungrouped.length === 0; + const hasNoSections = Object.entries(groups.sections).length === 0; + const hasNoUngroupedSubsections = Object.entries(groups.ungroupedSubsections).length === 0; + if (hasNoUngrouped && hasNoSections && hasNoUngroupedSubsections) + return ; let colSpan = 1; if (updateArgs) colSpan += 1; @@ -391,11 +357,7 @@ export const ArgsTable: FC = (props) => { return ( - + diff --git a/code/ui/blocks/src/components/ArgsTable/Empty.tsx b/code/ui/blocks/src/components/ArgsTable/Empty.tsx new file mode 100644 index 000000000000..7fa211bffc0e --- /dev/null +++ b/code/ui/blocks/src/components/ArgsTable/Empty.tsx @@ -0,0 +1,114 @@ +import type { FC } from 'react'; +import React, { useEffect, useState } from 'react'; +import { styled } from '@storybook/theming'; +import { Icons, Link } from '@storybook/components'; + +interface EmptyProps { + inAddonPanel?: boolean; +} + +const Wrapper = styled.div<{ inAddonPanel?: boolean }>(({ inAddonPanel, theme }) => ({ + height: inAddonPanel ? '100%' : 'auto', + display: 'flex', + border: inAddonPanel ? 'none' : `1px solid ${theme.appBorderColor}`, + borderRadius: inAddonPanel ? 0 : theme.appBorderRadius, + padding: inAddonPanel ? 0 : 40, + alignItems: 'center', + justifyContent: 'center', + flexDirection: 'column', + gap: 15, + background: theme.background.content, + boxShadow: 'rgba(0, 0, 0, 0.10) 0 1px 3px 0', +})); + +const Content = styled.div({ + display: 'flex', + flexDirection: 'column', + gap: 4, + maxWidth: 415, +}); + +const Title = styled.div(({ theme }) => ({ + fontWeight: theme.typography.weight.bold, + fontSize: theme.typography.size.s2 - 1, + textAlign: 'center', + color: theme.textColor, +})); + +const Description = styled.div(({ theme }) => ({ + fontWeight: theme.typography.weight.regular, + fontSize: theme.typography.size.s2 - 1, + textAlign: 'center', + color: theme.textMutedColor, +})); + +const Links = styled.div(({ theme }) => ({ + display: 'flex', + fontSize: theme.typography.size.s2 - 1, + gap: 25, +})); + +const Divider = styled.div(({ theme }) => ({ + width: 1, + height: 16, + backgroundColor: theme.appBorderColor, +})); + +export const Empty: FC = ({ inAddonPanel }) => { + const [isLoading, setIsLoading] = useState(true); + + // We are adding a small delay to avoid flickering when the story is loading. + // It takes a bit of time for the controls to appear, so we don't want + // to show the empty state for a split second. + useEffect(() => { + const load = setTimeout(() => { + setIsLoading(false); + }, 100); + + return () => clearTimeout(load); + }, []); + + if (isLoading) return null; + + return ( + + + + {inAddonPanel + ? 'Interactive story playground' + : "Args table with interactive controls couldn't be auto-generated"} + + + Controls give you an easy to use interface to test your components. Set your story args + and you'll see controls appearing here automatically. + + + + {inAddonPanel && ( + <> + + Watch 5m video + + + + Read docs + + + )} + {!inAddonPanel && ( + + Learn how to set that up + + )} + + + ); +}; diff --git a/code/ui/blocks/src/components/ArgsTable/NoControlsWarning.tsx b/code/ui/blocks/src/components/ArgsTable/NoControlsWarning.tsx deleted file mode 100644 index 5347cad17d42..000000000000 --- a/code/ui/blocks/src/components/ArgsTable/NoControlsWarning.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { styled } from '@storybook/theming'; -import { Link } from '@storybook/components'; - -const NoControlsWrapper = styled.div(({ theme }) => ({ - background: theme.background.warning, - color: theme.color.darkest, - padding: '10px 15px', - lineHeight: '20px', - boxShadow: `${theme.appBorderColor} 0 -1px 0 0 inset`, -})); - -export const NoControlsWarning = () => ( - - This story is not configured to handle controls.{' '} - - Learn how to add controls - - -); diff --git a/code/ui/blocks/src/components/ArgsTable/Skeleton.tsx b/code/ui/blocks/src/components/ArgsTable/Skeleton.tsx new file mode 100644 index 000000000000..ebdcbbc2d673 --- /dev/null +++ b/code/ui/blocks/src/components/ArgsTable/Skeleton.tsx @@ -0,0 +1,97 @@ +import { styled } from '@storybook/theming'; +import type { FC } from 'react'; +import React from 'react'; + +const Row = styled.div(({ theme }) => ({ + display: 'flex', + gap: 16, + borderBottom: `1px solid ${theme.appBorderColor}`, + + '&:last-child': { + borderBottom: 0, + }, +})); + +const Column = styled.div<{ numColumn: number }>(({ numColumn }) => ({ + display: 'flex', + flexDirection: 'column', + flex: numColumn || 1, + gap: 5, + padding: '12px 20px', +})); + +const SkeletonText = styled.div<{ width?: number | string; height?: number }>( + ({ theme, width, height }) => ({ + animation: `${theme.animation.glow} 1.5s ease-in-out infinite`, + background: theme.appBorderColor, + width: width || '100%', + height: height || 16, + borderRadius: 3, + }) +); + +const columnWidth = [2, 4, 2, 2]; + +export const Skeleton: FC = () => ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/code/ui/blocks/src/components/ArgsTable/index.ts b/code/ui/blocks/src/components/ArgsTable/index.ts index 421acb17e863..e3b1f1528205 100644 --- a/code/ui/blocks/src/components/ArgsTable/index.ts +++ b/code/ui/blocks/src/components/ArgsTable/index.ts @@ -3,4 +3,3 @@ export * from './types'; export * from './ArgsTable'; export * from './TabbedArgsTable'; -export * from './NoControlsWarning'; diff --git a/code/ui/blocks/src/components/DocsPage.stories.tsx b/code/ui/blocks/src/components/DocsPage.stories.tsx index e7ab2d64220d..8ae13eb51846 100644 --- a/code/ui/blocks/src/components/DocsPage.stories.tsx +++ b/code/ui/blocks/src/components/DocsPage.stories.tsx @@ -1,5 +1,4 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ -import type { ComponentProps } from 'react'; import React from 'react'; import { Global, css } from '@storybook/theming'; import { Source, ArgsTable } from '.'; @@ -43,7 +42,6 @@ export const Loading = () => ( - )} /> ); diff --git a/code/ui/blocks/src/components/DocsPage.tsx b/code/ui/blocks/src/components/DocsPage.tsx index 6b097e66063e..112025269863 100644 --- a/code/ui/blocks/src/components/DocsPage.tsx +++ b/code/ui/blocks/src/components/DocsPage.tsx @@ -1,9 +1,9 @@ +import type { FC } from 'react'; +import React from 'react'; +import { transparentize } from 'polished'; import { withReset } from '@storybook/components'; import type { CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; -import { transparentize } from 'polished'; -import type { FC } from 'react'; -import React from 'react'; /** * This selector styles all raw elements inside the DocsPage like this example with a `
`: @@ -429,16 +429,19 @@ export const DocsWrapper = styled.div(({ theme }) => ({ padding: '4rem 20px', minHeight: '100vh', boxSizing: 'border-box', + gap: '3rem', [`@media (min-width: ${breakpoint}px)`]: {}, })); interface DocsPageWrapperProps { children?: React.ReactNode; + toc?: React.ReactNode; } -export const DocsPageWrapper: FC = ({ children }) => ( +export const DocsPageWrapper: FC = ({ children, toc }) => ( {children} + {toc} ); diff --git a/code/ui/blocks/src/components/Source.tsx b/code/ui/blocks/src/components/Source.tsx index 4d72f2f45aed..996a392e4fc6 100644 --- a/code/ui/blocks/src/components/Source.tsx +++ b/code/ui/blocks/src/components/Source.tsx @@ -1,27 +1,26 @@ import type { ComponentProps, FunctionComponent } from 'react'; +import { ThemeProvider, convert, ignoreSsrWarning, styled, themes } from '@storybook/theming'; + import React from 'react'; -import { styled, ThemeProvider, convert, themes, ignoreSsrWarning } from '@storybook/theming'; import { SyntaxHighlighter } from '@storybook/components'; - +import type { SyntaxHighlighterProps } from '@storybook/components'; import { EmptyBlock } from './EmptyBlock'; -const StyledSyntaxHighlighter: typeof SyntaxHighlighter = styled(SyntaxHighlighter)( - ({ theme }) => ({ - // DocBlocks-specific styling and overrides - fontSize: `${theme.typography.size.s2 - 1}px`, - lineHeight: '19px', - margin: '25px 0 40px', - borderRadius: theme.appBorderRadius, - boxShadow: - theme.base === 'light' - ? 'rgba(0, 0, 0, 0.10) 0 1px 3px 0' - : 'rgba(0, 0, 0, 0.20) 0 2px 5px 0', - 'pre.prismjs': { - padding: 20, - background: 'inherit', - }, - }) -); +const StyledSyntaxHighlighter: React.FunctionComponent = styled( + SyntaxHighlighter +)(({ theme }) => ({ + // DocBlocks-specific styling and overrides + fontSize: `${theme.typography.size.s2 - 1}px`, + lineHeight: '19px', + margin: '25px 0 40px', + borderRadius: theme.appBorderRadius, + boxShadow: + theme.base === 'light' ? 'rgba(0, 0, 0, 0.10) 0 1px 3px 0' : 'rgba(0, 0, 0, 0.20) 0 2px 5px 0', + 'pre.prismjs': { + padding: 20, + background: 'inherit', + }, +})); export enum SourceError { NO_STORY = 'There\u2019s no story here.', diff --git a/code/ui/blocks/src/components/TableOfContents.tsx b/code/ui/blocks/src/components/TableOfContents.tsx new file mode 100644 index 000000000000..892f1e137f20 --- /dev/null +++ b/code/ui/blocks/src/components/TableOfContents.tsx @@ -0,0 +1,181 @@ +import React, { useEffect } from 'react'; +import type { FC, ReactElement } from 'react'; +import { styled } from '@storybook/theming'; +import tocbot from 'tocbot'; + +export interface TocParameters { + /** CSS selector for the container to search for headings. */ + contentsSelector?: string; + + /** + * When true, hide the TOC. We still show the empty container + * (as opposed to showing nothing at all) because it affects the + * page layout and we want to preserve the layout across pages. + */ + disable?: boolean; + + /** CSS selector to match headings to list in the TOC. */ + headingSelector?: string; + + /** Headings that match the ignoreSelector will be skipped. */ + ignoreSelector?: string; + + /** Custom title ReactElement or string to display above the TOC. */ + title?: ReactElement | string | null; + + /** + * TocBot options, not guaranteed to be available in future versions. + * @see tocbot docs {@link https://tscanlin.github.io/tocbot/#usage} + */ + unsafeTocbotOptions?: tocbot.IStaticOptions; +} + +const Wrapper = styled.div(({ theme }) => ({ + width: '10rem', + + '@media (max-width: 768px)': { + display: 'none', + }, +})); + +const Content = styled.div(({ theme }) => ({ + position: 'fixed', + top: 0, + width: '10rem', + paddingTop: '4rem', + + fontFamily: theme.typography.fonts.base, + fontSize: theme.typography.size.s2, + + WebkitFontSmoothing: 'antialiased', + MozOsxFontSmoothing: 'grayscale', + WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)', + WebkitOverflowScrolling: 'touch', + + '& *': { + boxSizing: 'border-box', + }, + + '& > .toc-wrapper > .toc-list': { + paddingLeft: 0, + borderLeft: `solid 2px ${theme.color.mediumlight}`, + + '.toc-list': { + paddingLeft: 0, + borderLeft: `solid 2px ${theme.color.mediumlight}`, + + '.toc-list': { + paddingLeft: 0, + borderLeft: `solid 2px ${theme.color.mediumlight}`, + }, + }, + }, + '& .toc-list-item': { + position: 'relative', + listStyleType: 'none', + marginLeft: 20, + paddingTop: 3, + paddingBottom: 3, + }, + '& .toc-list-item::before': { + content: '""', + position: 'absolute', + height: '100%', + top: 0, + left: 0, + transform: `translateX(calc(-2px - 20px))`, + borderLeft: `solid 2px ${theme.color.mediumdark}`, + opacity: 0, + transition: 'opacity 0.2s', + }, + '& .toc-list-item.is-active-li::before': { + opacity: 1, + }, + '& .toc-list-item > a': { + color: theme.color.defaultText, + textDecoration: 'none', + }, + '& .toc-list-item.is-active-li > a': { + fontWeight: 600, + color: theme.color.secondary, + textDecoration: 'none', + }, +})); + +const Heading = styled.p(({ theme }) => ({ + fontWeight: 600, + fontSize: '0.875em', + color: theme.textColor, + textTransform: 'uppercase', + marginBottom: 10, +})); + +type TableOfContentsProps = React.PropsWithChildren< + TocParameters & { + className?: string; + } +>; + +const OptionalTitle: FC<{ title: TableOfContentsProps['title'] }> = ({ title }) => { + if (title === null) { + return null; + } + if (typeof title === 'string') { + return {title}; + } + return title; +}; + +export const TableOfContents = ({ + title, + disable, + headingSelector, + contentsSelector, + ignoreSelector, + unsafeTocbotOptions, +}: TableOfContentsProps) => { + useEffect(() => { + const configuration = { + tocSelector: '.toc-wrapper', + contentSelector: contentsSelector ?? '.sbdocs-content', + headingSelector: headingSelector ?? 'h3', + ignoreSelector: ignoreSelector ?? '.skip-toc', + headingsOffset: 40, + scrollSmoothOffset: -40, + /** + * Ignore headings that did not + * come from the main markdown code. + */ + // ignoreSelector: ':not(.sbdocs), .hide-from-toc', + orderedList: false, + /** + * Prevent default linking behavior, + * leaving only the smooth scrolling. + */ + onClick: () => false, + ...unsafeTocbotOptions, + }; + + /** + * Wait for the DOM to be ready. + */ + const timeout = setTimeout(() => tocbot.init(configuration), 100); + return () => { + clearTimeout(timeout); + tocbot.destroy(); + }; + }, [disable]); + + return ( + <> + + {!disable ? ( + + +
+ + ) : null} + + + ); +}; diff --git a/code/ui/blocks/src/controls/Object.tsx b/code/ui/blocks/src/controls/Object.tsx index d1dbd5525299..11c51f8f6392 100644 --- a/code/ui/blocks/src/controls/Object.tsx +++ b/code/ui/blocks/src/controls/Object.tsx @@ -52,7 +52,7 @@ const Wrapper = styled.div(({ theme }) => ({ '.rejt-plus-menu': { marginLeft: 5, }, - '.rejt-object-node > span > *': { + '.rejt-object-node > span > *, .rejt-array-node > span > *': { position: 'relative', zIndex: 2, }, diff --git a/code/ui/blocks/src/controls/Range.tsx b/code/ui/blocks/src/controls/Range.tsx index 5892e6edf193..26b900e9441c 100644 --- a/code/ui/blocks/src/controls/Range.tsx +++ b/code/ui/blocks/src/controls/Range.tsx @@ -220,7 +220,7 @@ export const RangeControl: FC = ({ {...{ name, value, min, max, step, onFocus, onBlur }} /> - {`${hasValue ? value.toFixed(numberOFDecimalsPlaces) : '--'}`} / {max} + {hasValue ? value.toFixed(numberOFDecimalsPlaces) : '--'} / {max} ); diff --git a/code/ui/blocks/src/controls/react-editable-json-tree/JsonNodes.tsx b/code/ui/blocks/src/controls/react-editable-json-tree/JsonNodes.tsx index 541a2423d6d1..99e9d048f8af 100644 --- a/code/ui/blocks/src/controls/react-editable-json-tree/JsonNodes.tsx +++ b/code/ui/blocks/src/controls/react-editable-json-tree/JsonNodes.tsx @@ -391,7 +391,7 @@ export class JsonArray extends Component { {data.map((item, index) => ( CSSObject = (theme: Theme) => ({ - 'html.os-html, html.os-html>.os-host': { - display: 'block', - overflow: 'hidden', - boxSizing: 'border-box', - height: '100%!important' as any as '100%', - width: '100%!important' as any as '100%', - minWidth: '100%!important' as any as '100%', - minHeight: '100%!important' as any as '100%', - margin: '0!important' as any as 0, - position: 'absolute!important' as any as 'absolute', - }, - 'html.os-html>.os-host>.os-padding': { - position: 'absolute', - }, - 'body.os-dragging, body.os-dragging *': { - cursor: 'default', - }, - '.os-host, .os-host-textarea': { - position: 'relative', - overflow: 'visible!important' as any as 'visible', - flexDirection: 'column', - flexWrap: 'nowrap', - justifyContent: 'flex-start', - alignContent: 'flex-start', - alignItems: 'flex-start', - }, - '.os-host-flexbox': { - overflow: 'hidden!important' as any as 'hidden', - display: 'flex', - }, - '.os-host-flexbox>.os-size-auto-observer': { - height: 'inherit!important' as any as 'inherit', - }, - '.os-host-flexbox>.os-content-glue': { - flexGrow: 1, - flexShrink: 0, - }, - '.os-host-flexbox>.os-size-auto-observer, .os-host-flexbox>.os-content-glue': { - minHeight: 0, - minWidth: 0, - flexGrow: 0, - flexShrink: 1, - flexBasis: 'auto', - }, - '#os-dummy-scrollbar-size': { - position: 'fixed', - opacity: 0, - visibility: 'hidden', - overflow: 'scroll', - height: 500, - width: 500, - }, - '#os-dummy-scrollbar-size>div': { - width: '200%', - height: '200%', - margin: 10, - }, - '#os-dummy-scrollbar-size, .os-viewport': {}, - '.os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size, .os-viewport-native-scrollbars-invisible.os-viewport': - { - scrollbarWidth: 'none!important' as any as 'none', - }, - '.os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar-corner, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar-corner': - { - display: 'none!important' as any as 'none', - width: '0!important' as any as 0, - height: '0!important' as any as 0, - visibility: 'hidden!important' as any as 'hidden', - background: '0 0!important', - }, - '.os-content-glue': { - boxSizing: 'inherit', - maxHeight: '100%', - maxWidth: '100%', - width: '100%', - pointerEvents: 'none', - }, - '.os-padding': { - boxSizing: 'inherit', - direction: 'inherit', - position: 'absolute', - overflow: 'visible', - padding: 0, - margin: 0, - left: 0, - top: 0, - bottom: 0, - right: 0, - width: 'auto!important' as any as 'auto', - height: 'auto!important' as any as 'auto', - zIndex: 1, - }, - '.os-host-overflow>.os-padding': { - overflow: 'hidden', - }, - '.os-viewport': { - direction: 'inherit!important' as any as 'inherit', - boxSizing: 'inherit!important' as any as 'inherit', - resize: 'none!important' as any as 'none', - outline: '0!important' as any as 0, - position: 'absolute', - overflow: 'hidden', - top: 0, - left: 0, - bottom: 0, - right: 0, - padding: 0, - margin: 0, - }, - '.os-content-arrange': { - position: 'absolute', - zIndex: -1, - minHeight: 1, - minWidth: 1, - pointerEvents: 'none', - }, - '.os-content': { - direction: 'inherit', - boxSizing: 'border-box!important' as any as 'border-box', - position: 'relative', - display: 'block', - height: '100%', - width: '100%', - visibility: 'visible', - }, - '.os-content:before, .os-content:after': { - content: "''", - display: 'table', - width: 0, - height: 0, - lineHeight: 0, - fontSize: 0, - }, - '.os-content>.os-textarea': { - boxSizing: 'border-box!important' as any as 'border-box', - direction: 'inherit!important' as any as 'inherit', - background: '0 0!important', - outline: '0 transparent!important', - overflow: 'hidden!important' as any as 'hidden', - position: 'absolute!important' as any as 'absolute', - display: 'block!important' as any as 'block', - top: '0!important' as any as 0, - left: '0!important' as any as 0, - margin: '0!important' as any as 0, - borderRadius: '0!important' as any as 0, - float: 'none!important' as any as 'none', - filter: 'none!important' as any as 'none', - border: '0!important' as any as 0, - resize: 'none!important' as any as 'none', - transform: 'none!important' as any as 'none', - maxWidth: 'none!important' as any as 'none', - maxHeight: 'none!important' as any as 'none', - boxShadow: 'none!important' as any as 'none', - perspective: 'none!important' as any as 'none', - opacity: '1!important' as any as 1, - zIndex: '1!important' as any as 1, - clip: 'auto!important' as any as 'auto', - verticalAlign: 'baseline!important' as any as 'baseline', - padding: 0, - }, - '.os-host-rtl>.os-padding>.os-viewport>.os-content>.os-textarea': { - right: '0!important' as any as 0, - }, - '.os-content>.os-textarea-cover': { - zIndex: -1, - pointerEvents: 'none', - }, - '.os-content>.os-textarea[wrap=off]': { - whiteSpace: 'pre!important' as any as 'pre', - margin: '0!important' as any as 0, - }, - '.os-text-inherit': { - fontFamily: 'inherit', - fontSize: 'inherit', - fontWeight: 'inherit', - fontStyle: 'inherit', - fontVariant: 'inherit', - textTransform: 'inherit', - textDecoration: 'inherit', - textIndent: 'inherit', - textAlign: 'inherit', - textShadow: 'inherit', - textOverflow: 'inherit', - letterSpacing: 'inherit', - wordSpacing: 'inherit', - lineHeight: 'inherit', - unicodeBidi: 'inherit', - direction: 'inherit', - color: 'inherit', - cursor: 'text', - }, - '.os-resize-observer, .os-resize-observer-host': { - boxSizing: 'inherit', - display: 'block', - opacity: 0, - position: 'absolute', - top: 0, - left: 0, - height: '100%', - width: '100%', - overflow: 'hidden', - pointerEvents: 'none', - zIndex: -1, - }, - '.os-resize-observer-host': { - padding: 'inherit', - border: 'inherit', - borderColor: 'transparent', - borderStyle: 'solid', - boxSizing: 'border-box', - }, - '.os-resize-observer-host:after': { - content: "''", - }, - '.os-resize-observer-host>.os-resize-observer, .os-resize-observer-host:after': { - height: '200%', - width: '200%', - padding: 'inherit', - border: 'inherit', - margin: 0, - display: 'block', - boxSizing: 'content-box', - }, - '.os-resize-observer.observed, object.os-resize-observer': { - boxSizing: 'border-box!important' as any as 'border-box', - }, - '.os-size-auto-observer': { - boxSizing: 'inherit!important' as any as 'inherit', - height: '100%', - width: 'inherit', - maxWidth: 1, - position: 'relative', - float: 'left', - maxHeight: 1, - overflow: 'hidden', - zIndex: -1, - padding: 0, - margin: 0, - pointerEvents: 'none', - flexGrow: 'inherit', - flexShrink: 0, - flexBasis: 0, - }, - '.os-size-auto-observer>.os-resize-observer': { - width: '1000%', - height: '1000%', - minHeight: 1, - minWidth: 1, - }, - '.os-resize-observer-item': { - position: 'absolute', - top: 0, - right: 0, - bottom: 0, - left: 0, - overflow: 'hidden', - zIndex: -1, - opacity: 0, - direction: 'ltr!important' as any as 'ltr', - flex: 'none!important' as any as 'none', - }, - '.os-resize-observer-item-final': { - position: 'absolute', - left: 0, - top: 0, - transition: 'none!important' as any as 'none', - flex: 'none!important' as any as 'none', - }, - '.os-resize-observer': { - animationDuration: '.001s', - animationName: `${hsResizeObserverDummyAnimation}`, - }, - '.os-host-transition>.os-scrollbar, .os-host-transition>.os-scrollbar-corner': { - transition: 'opacity .3s,visibility .3s,top .3s,right .3s,bottom .3s,left .3s', - }, - 'html.os-html>.os-host>.os-scrollbar': { - position: 'absolute', - zIndex: 999999, - }, - '.os-scrollbar, .os-scrollbar-corner': { - position: 'absolute', - opacity: 1, - zIndex: 1, - }, - '.os-scrollbar-corner': { - bottom: 0, - right: 0, - height: 10, - width: 10, - backgroundColor: 'transparent', - }, - '.os-scrollbar': { - pointerEvents: 'none', - padding: 2, - boxSizing: 'border-box', - background: 0, - }, - '.os-scrollbar-track': { - pointerEvents: 'auto', - position: 'relative', - height: '100%', - width: '100%', - padding: '0!important' as any as 0, - border: '0!important' as any as 0, - }, - '.os-scrollbar-handle': { - pointerEvents: 'auto', - position: 'absolute', - width: '100%', - height: '100%', - }, - '.os-scrollbar-handle-off, .os-scrollbar-track-off': { - pointerEvents: 'none', - }, - '.os-scrollbar.os-scrollbar-unusable, .os-scrollbar.os-scrollbar-unusable *': { - pointerEvents: 'none!important' as any as 'none', - }, - '.os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle': { - opacity: '0!important' as any as 0, - }, - '.os-scrollbar-horizontal': { - bottom: 0, - left: 0, - right: 10, - height: 10, - }, - '.os-scrollbar-vertical': { - top: 0, - right: 0, - bottom: 10, - width: 10, - }, - '.os-host-rtl>.os-scrollbar-horizontal': { - right: 0, - }, - '.os-host-rtl>.os-scrollbar-vertical': { - right: 'auto', - left: 0, - }, - '.os-host-rtl>.os-scrollbar-corner': { - right: 'auto', - left: 0, - }, - '.os-scrollbar-auto-hidden, .os-padding+.os-scrollbar-corner, .os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-corner, .os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal, .os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-corner, .os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical+.os-scrollbar-corner, .os-scrollbar-horizontal+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner': - { - opacity: 0, - visibility: 'hidden', - pointerEvents: 'none', - }, - '.os-scrollbar-corner-resize-both': { - cursor: 'nwse-resize', - }, - '.os-host-rtl>.os-scrollbar-corner-resize-both': { - cursor: 'nesw-resize', - }, - '.os-scrollbar-corner-resize-horizontal': { - cursor: 'ew-resize', - }, - '.os-scrollbar-corner-resize-vertical': { - cursor: 'ns-resize', - }, - '.os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize': { - cursor: 'default', - }, - '.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-vertical': { - top: 0, - bottom: 0, - }, - '.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal, .os-host-rtl.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal': - { - right: 0, - left: 0, - }, - '.os-scrollbar:hover, .os-scrollbar-corner.os-scrollbar-corner-resize': { - opacity: '1!important' as any as 1, - visibility: 'visible!important' as any as 'visible', - }, - '.os-scrollbar-corner.os-scrollbar-corner-resize': { - backgroundImage: - 'linear-gradient(135deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.4) 100%)', - backgroundRepeat: 'no-repeat', - backgroundPosition: '100% 100%', - pointerEvents: 'auto!important' as any as 'auto', - }, - '.os-host-rtl>.os-scrollbar-corner.os-scrollbar-corner-resize': { - transform: 'scale(-1,1)', - }, - '.os-host-overflow': { - overflow: 'hidden!important' as any as 'hidden', - }, - '.os-theme-dark.os-host-rtl>.os-scrollbar-horizontal': { - left: 10, - right: 0, - }, - '.os-scrollbar.os-scrollbar-unusable': { - background: 0, - }, - '.os-scrollbar>.os-scrollbar-track': { - background: 0, - }, - '.os-scrollbar-horizontal>.os-scrollbar-track>.os-scrollbar-handle': { - minWidth: 30, - }, - '.os-scrollbar-vertical>.os-scrollbar-track>.os-scrollbar-handle': { - minHeight: 30, - }, - '.os-theme-dark.os-host-transition>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle': { - transition: 'background-color .3s', - }, - '.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle, .os-scrollbar>.os-scrollbar-track': { - borderRadius: 10, - }, - '.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle': { - background: theme.textMutedColor, - opacity: 0.5, - }, - '.os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle': { - opacity: 0.6, - }, - '.os-scrollbar-horizontal .os-scrollbar-handle:before, .os-scrollbar-vertical .os-scrollbar-handle:before': - { - content: "''", - position: 'absolute', - left: 0, - right: 0, - top: 0, - bottom: 0, - display: 'block', - }, - '.os-theme-dark.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal .os-scrollbar-handle:before, .os-theme-dark.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical .os-scrollbar-handle:before': - { - display: 'none', - }, - '.os-scrollbar-horizontal .os-scrollbar-handle:before': { - top: -6, - bottom: -2, - }, - '.os-scrollbar-vertical .os-scrollbar-handle:before': { - left: -6, - right: -2, - }, - '.os-host-rtl.os-scrollbar-vertical .os-scrollbar-handle:before': { - right: -6, - left: -2, - }, -}); - -const GlobalScrollAreaStyles = () => ; - -export default GlobalScrollAreaStyles; diff --git a/code/ui/components/src/ScrollArea/OverlayScrollbars.tsx b/code/ui/components/src/ScrollArea/OverlayScrollbars.tsx deleted file mode 100644 index a2514a27a51a..000000000000 --- a/code/ui/components/src/ScrollArea/OverlayScrollbars.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import type { HTMLAttributes, FC } from 'react'; -import React, { useRef, useEffect } from 'react'; -import OverlayScrollbars from 'overlayscrollbars'; - -interface OverlayScrollbarsComponentProps extends HTMLAttributes { - children?: any; - options?: OverlayScrollbars.Options; - extensions?: OverlayScrollbars.Extensions; -} - -/** - * Using overlayscrollbars-react component results use the esm modules - * which doesn't go through babel leading to IE 11 uncompatibility - * A PR is submitted that may fix this: - * https://github.com/KingSora/OverlayScrollbars/pull/218 - * */ - -export const OverlayScrollbarsComponent: FC = ({ - options = {}, - extensions, - className, - children, - ...rest -}) => { - const osTargetRef = useRef(); - const osInstance = useRef(); - - useEffect(() => { - osInstance.current = OverlayScrollbars(osTargetRef.current, options, extensions); - mergeHostClassNames(osInstance.current, className); - return () => { - if (OverlayScrollbars.valid(osInstance.current)) { - osInstance.current.destroy(); - osInstance.current = null; - } - }; - }, []); - - useEffect(() => { - if (OverlayScrollbars.valid(osInstance.current)) { - osInstance.current.options(options); - } - }, [options]); - - useEffect(() => { - if (OverlayScrollbars.valid(osInstance.current)) { - mergeHostClassNames(osInstance.current, className); - } - }, [className]); - - return ( -
-
-
-
-
{children}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ); -}; - -function mergeHostClassNames(osInstance: OverlayScrollbars, className: string) { - if (OverlayScrollbars.valid(osInstance)) { - const { host } = osInstance.getElements(); - const regex = new RegExp( - `(^os-host([-_].+|)$)|${osInstance.options().className.replace(/\s/g, '$|')}$`, - 'g' - ); - const osClassNames = host.className - .split(' ') - .filter((name) => name.match(regex)) - .join(' '); - - host.className = `${osClassNames} ${className || ''}`; - } -} - -export default OverlayScrollbarsComponent; diff --git a/code/ui/components/src/Zoom/browserSupportsCssZoom.ts b/code/ui/components/src/Zoom/browserSupportsCssZoom.ts deleted file mode 100644 index 43ff5b9004cf..000000000000 --- a/code/ui/components/src/Zoom/browserSupportsCssZoom.ts +++ /dev/null @@ -1,13 +0,0 @@ -export function browserSupportsCssZoom(): boolean { - try { - // First checks if Safari is being used, because Safari supports zoom, but it's buggy: https://developer.mozilla.org/en-US/docs/Web/CSS/zoom#browser_compatibility - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - return false; - } - - // Next check if the browser supports zoom styling - return global.CSS?.supports('zoom: 1'); - } catch (error) { - return false; - } -} diff --git a/code/ui/components/src/ActionBar/ActionBar.stories.tsx b/code/ui/components/src/components/ActionBar/ActionBar.stories.tsx similarity index 100% rename from code/ui/components/src/ActionBar/ActionBar.stories.tsx rename to code/ui/components/src/components/ActionBar/ActionBar.stories.tsx diff --git a/code/ui/components/src/ActionBar/ActionBar.tsx b/code/ui/components/src/components/ActionBar/ActionBar.tsx similarity index 100% rename from code/ui/components/src/ActionBar/ActionBar.tsx rename to code/ui/components/src/components/ActionBar/ActionBar.tsx diff --git a/code/ui/components/src/Badge/Badge.stories.tsx b/code/ui/components/src/components/Badge/Badge.stories.tsx similarity index 100% rename from code/ui/components/src/Badge/Badge.stories.tsx rename to code/ui/components/src/components/Badge/Badge.stories.tsx diff --git a/code/ui/components/src/Badge/Badge.tsx b/code/ui/components/src/components/Badge/Badge.tsx similarity index 100% rename from code/ui/components/src/Badge/Badge.tsx rename to code/ui/components/src/components/Badge/Badge.tsx diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/components/Button/Button.stories.tsx similarity index 100% rename from code/ui/components/src/Button/Button.stories.tsx rename to code/ui/components/src/components/Button/Button.stories.tsx diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/components/Button/Button.tsx similarity index 100% rename from code/ui/components/src/Button/Button.tsx rename to code/ui/components/src/components/Button/Button.tsx diff --git a/code/ui/components/src/Colors/SideBySide.tsx b/code/ui/components/src/components/Colors/SideBySide.tsx similarity index 100% rename from code/ui/components/src/Colors/SideBySide.tsx rename to code/ui/components/src/components/Colors/SideBySide.tsx diff --git a/code/ui/components/src/Colors/colorpalette.mdx b/code/ui/components/src/components/Colors/colorpalette.mdx similarity index 100% rename from code/ui/components/src/Colors/colorpalette.mdx rename to code/ui/components/src/components/Colors/colorpalette.mdx diff --git a/code/ui/components/src/ErrorFormatter/ErrorFormatter.stories.tsx b/code/ui/components/src/components/ErrorFormatter/ErrorFormatter.stories.tsx similarity index 100% rename from code/ui/components/src/ErrorFormatter/ErrorFormatter.stories.tsx rename to code/ui/components/src/components/ErrorFormatter/ErrorFormatter.stories.tsx diff --git a/code/ui/components/src/ErrorFormatter/ErrorFormatter.tsx b/code/ui/components/src/components/ErrorFormatter/ErrorFormatter.tsx similarity index 100% rename from code/ui/components/src/ErrorFormatter/ErrorFormatter.tsx rename to code/ui/components/src/components/ErrorFormatter/ErrorFormatter.tsx diff --git a/code/ui/components/src/Loader/Loader.stories.tsx b/code/ui/components/src/components/Loader/Loader.stories.tsx similarity index 100% rename from code/ui/components/src/Loader/Loader.stories.tsx rename to code/ui/components/src/components/Loader/Loader.stories.tsx diff --git a/code/ui/components/src/Loader/Loader.tsx b/code/ui/components/src/components/Loader/Loader.tsx similarity index 100% rename from code/ui/components/src/Loader/Loader.tsx rename to code/ui/components/src/components/Loader/Loader.tsx diff --git a/code/ui/components/src/components/ScrollArea/GlobalScrollAreaStyles.tsx b/code/ui/components/src/components/ScrollArea/GlobalScrollAreaStyles.tsx new file mode 100644 index 000000000000..a7650a8f922f --- /dev/null +++ b/code/ui/components/src/components/ScrollArea/GlobalScrollAreaStyles.tsx @@ -0,0 +1,497 @@ +import React from 'react'; +import { Global } from '@storybook/theming'; +import type { Theme, CSSObject } from '@storybook/theming'; + +export const getScrollAreaStyles: (theme: Theme) => CSSObject = (theme: Theme) => + ({ + '.os-size-observer,\n.os-size-observer-listener': { + direction: 'inherit', + pointerEvents: 'none', + overflow: 'hidden', + visibility: 'hidden', + boxSizing: 'border-box', + }, + '.os-size-observer,\n.os-size-observer-listener,\n.os-size-observer-listener-item,\n.os-size-observer-listener-item-final': + { + writingMode: 'horizontal-tb', + position: 'absolute', + left: '0', + top: '0', + }, + '.os-size-observer': { + zIndex: -1, + contain: 'strict', + display: 'flex', + flexDirection: 'row', + flexWrap: 'nowrap', + padding: 'inherit', + border: 'inherit', + boxSizing: 'inherit', + margin: '-133px', + top: '0', + right: '0', + bottom: '0', + left: '0', + transform: 'scale(0.1)', + }, + '.os-size-observer::before': { + content: '""', + flex: 'none', + boxSizing: 'inherit', + padding: '10px', + width: '10px', + height: '10px', + }, + '.os-size-observer-appear': { + animation: 'os-size-observer-appear-animation 1ms forwards', + }, + '.os-size-observer-listener': { + boxSizing: 'border-box', + position: 'relative', + flex: 'auto', + padding: 'inherit', + border: 'inherit', + margin: '-133px', + transform: 'scale(10)', + }, + '.os-size-observer-listener.ltr': { marginRight: '-266px', marginLeft: '0' }, + '.os-size-observer-listener.rtl': { marginLeft: '-266px', marginRight: '0' }, + '.os-size-observer-listener:empty::before': { + content: '""', + width: '100%', + height: '100%', + }, + '.os-size-observer-listener:empty::before, .os-size-observer-listener > .os-size-observer-listener-item': + { + display: 'block', + position: 'relative', + padding: 'inherit', + border: 'inherit', + boxSizing: 'content-box', + flex: 'auto', + }, + '.os-size-observer-listener-scroll': { + boxSizing: 'border-box', + display: 'flex', + }, + '.os-size-observer-listener-item': { + right: '0', + bottom: '0', + overflow: 'hidden', + direction: 'ltr', + flex: 'none', + }, + '.os-size-observer-listener-item-final': { transition: 'none' }, + '@keyframes os-size-observer-appear-animation': { + from: { cursor: 'auto' }, + to: { cursor: 'none' }, + }, + '.os-trinsic-observer': { + flex: 'none', + boxSizing: 'border-box', + position: 'relative', + maxWidth: '0px', + maxHeight: '1px', + padding: '0', + margin: '0', + border: 'none', + overflow: 'hidden', + zIndex: -1, + height: '0', + top: 'calc(100% + 1px)', + contain: 'strict', + }, + '.os-trinsic-observer:not(:empty)': { + height: 'calc(100% + 1px)', + top: '-1px', + }, + '.os-trinsic-observer:not(:empty) > .os-size-observer': { + width: '1000%', + height: '1000%', + minHeight: '1px', + minWidth: '1px', + }, + '.os-environment': { + '--os-custom-prop': '-1', + position: 'fixed', + opacity: 0, + visibility: 'hidden', + overflow: 'scroll', + height: '200px', + width: '200px', + zIndex: 'var(--os-custom-prop)', + }, + '.os-environment div': { width: '200%', height: '200%', margin: '10px 0' }, + '.os-environment.os-environment-flexbox-glue': { + display: 'flex', + flexDirection: 'row', + flexWrap: 'nowrap', + height: 'auto', + width: 'auto', + minHeight: '200px', + minWidth: '200px', + }, + '.os-environment.os-environment-flexbox-glue div': { + flex: 'auto', + width: 'auto', + height: 'auto', + maxHeight: '100%', + maxWidth: '100%', + margin: '0', + }, + '.os-environment.os-environment-flexbox-glue-max': { maxHeight: '200px' }, + '.os-environment.os-environment-flexbox-glue-max div': { + overflow: 'visible', + }, + '.os-environment.os-environment-flexbox-glue-max div::before': { + content: '""', + display: 'block', + height: '999px', + width: '999px', + }, + '.os-environment,\n[data-overlayscrollbars-viewport]': { + msOverflowStyle: 'scrollbar !important', + }, + '[data-overlayscrollbars-initialize],\n[data-overlayscrollbars~=scrollbarHidden],\n[data-overlayscrollbars-viewport~=scrollbarHidden],\n.os-scrollbar-hidden.os-environment': + { + scrollbarWidth: 'none !important', + }, + '[data-overlayscrollbars-initialize]::-webkit-scrollbar,\n[data-overlayscrollbars-initialize]::-webkit-scrollbar-corner,\n[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar,\n[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar-corner,\n[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,\n[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,\n.os-scrollbar-hidden.os-environment::-webkit-scrollbar,\n.os-scrollbar-hidden.os-environment::-webkit-scrollbar-corner': + { + WebkitAppearance: 'none !important', + appearance: 'none !important', + display: 'none !important', + width: '0 !important', + height: '0 !important', + }, + '[data-overlayscrollbars-initialize]': { overflow: 'auto' }, + 'html[data-overlayscrollbars],\nhtml.os-scrollbar-hidden,\nhtml.os-scrollbar-hidden > body': { + boxSizing: 'border-box', + margin: '0', + width: '100%', + height: '100%', + }, + 'html[data-overlayscrollbars] > body': { overflow: 'visible' }, + '[data-overlayscrollbars~=host]': { position: 'relative' }, + '[data-overlayscrollbars~=host],\n[data-overlayscrollbars-padding]': { + display: 'flex', + flexDirection: 'row !important', + flexWrap: 'nowrap !important', + }, + '[data-overlayscrollbars-padding],\n[data-overlayscrollbars-viewport]': { + boxSizing: 'inherit', + position: 'relative', + flex: 'auto !important', + height: 'auto', + width: '100%', + padding: '0', + margin: '0', + border: 'none', + zIndex: 0, + overflow: 'hidden', + }, + '[data-overlayscrollbars-viewport]': { '--os-vaw': '0', '--os-vah': '0' }, + '[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]::before': { + content: '""', + position: 'absolute', + pointerEvents: 'none', + zIndex: -1, + minWidth: '1px', + minHeight: '1px', + width: 'var(--os-vaw)', + height: 'var(--os-vah)', + }, + '[data-overlayscrollbars~=host],\n[data-overlayscrollbars~=viewport]': { + overflow: 'hidden', + }, + '[data-overlayscrollbars~=overflowVisible],\n[data-overlayscrollbars-padding~=overflowVisible],\n[data-overlayscrollbars-viewport~=overflowVisible]': + { + overflow: 'visible', + }, + '[data-overlayscrollbars-overflow-x=hidden]': { + overflowX: 'hidden', + overflowY: 'hidden', + }, + '[data-overlayscrollbars-overflow-x=scroll]': { overflowX: 'scroll' }, + '[data-overlayscrollbars-overflow-y=scroll]': { overflowY: 'scroll' }, + '[data-overlayscrollbars~=scrollbarPressed],\n[data-overlayscrollbars~=scrollbarPressed] [data-overlayscrollbars-viewport]': + { + scrollBehavior: 'auto !important', + }, + '[data-overlayscrollbars-content]': { boxSizing: 'inherit' }, + '[data-overlayscrollbars-grid],\n[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]': + { + display: 'grid', + gridTemplate: '1fr/1fr', + }, + '[data-overlayscrollbars-grid] > [data-overlayscrollbars-padding],\n[data-overlayscrollbars-grid] > [data-overlayscrollbars-viewport],\n[data-overlayscrollbars-grid] > [data-overlayscrollbars-padding] > [data-overlayscrollbars-viewport]': + { + height: 'auto !important', + width: 'auto !important', + }, + '.os-scrollbar': { + contain: ['size layout', 'size layout style'], + transition: + 'opacity 0.15s, visibility 0.15s, top 0.15s, right 0.15s, bottom 0.15s, left 0.15s', + pointerEvents: 'none', + position: 'absolute', + opacity: 0, + visibility: 'hidden', + '--os-size': '0', + '--os-padding-perpendicular': '0', + '--os-padding-axis': '0', + '--os-track-border-radius': '0', + '--os-track-bg': 'none', + '--os-track-bg-hover': 'none', + '--os-track-bg-active': 'none', + '--os-track-border': 'none', + '--os-track-border-hover': 'none', + '--os-track-border-active': 'none', + '--os-handle-border-radius': '0', + '--os-handle-bg': 'none', + '--os-handle-bg-hover': 'none', + '--os-handle-bg-active': 'none', + '--os-handle-border': 'none', + '--os-handle-border-hover': 'none', + '--os-handle-border-active': 'none', + '--os-handle-min-size': '33px', + '--os-handle-max-size': 'none', + '--os-handle-perpendicular-size': '100%', + '--os-handle-perpendicular-size-hover': '100%', + '--os-handle-perpendicular-size-active': '100%', + '--os-handle-interactive-area-offset': '0', + }, + 'body > .os-scrollbar': { position: 'fixed', zIndex: 99999 }, + '.os-scrollbar-transitionless': { transition: 'none' }, + '.os-scrollbar-track': { + position: 'relative', + direction: 'ltr !important', + padding: '0 !important', + border: 'none !important', + }, + '.os-scrollbar-handle': { position: 'absolute' }, + '.os-scrollbar-track,\n.os-scrollbar-handle': { + pointerEvents: 'none', + width: '100%', + height: '100%', + }, + '.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track,\n.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle': + { + pointerEvents: 'auto', + touchAction: 'none', + }, + '.os-scrollbar-horizontal': { + bottom: '0', + left: '0', + padding: 'var(--os-padding-perpendicular) var(--os-padding-axis)', + right: 'var(--os-size)', + height: 'var(--os-size)', + }, + '.os-scrollbar-vertical': { + top: '0', + right: '0', + padding: 'var(--os-padding-axis) var(--os-padding-perpendicular)', + bottom: 'var(--os-size)', + width: 'var(--os-size)', + }, + '.os-scrollbar-rtl.os-scrollbar-horizontal': { right: '0' }, + '.os-scrollbar-rtl.os-scrollbar-vertical': { right: 'auto', left: '0' }, + '.os-scrollbar-visible,\n.os-scrollbar-interaction.os-scrollbar-visible': { + opacity: 1, + visibility: 'visible', + }, + '.os-scrollbar-auto-hidden': { opacity: 0, visibility: 'hidden' }, + '.os-scrollbar-unusable,\n.os-scrollbar-unusable *,\n.os-scrollbar-wheel,\n.os-scrollbar-wheel *': + { + pointerEvents: 'none !important', + }, + '.os-scrollbar-unusable .os-scrollbar-handle': { opacity: '0 !important' }, + '.os-scrollbar-horizontal .os-scrollbar-handle': { + bottom: '0', + minWidth: 'var(--os-handle-min-size)', + maxWidth: 'var(--os-handle-max-size)', + height: 'var(--os-handle-perpendicular-size)', + transition: 'opacity 0.15s, background-color 0.15s, border-color 0.15s, height 0.15s', + }, + '.os-scrollbar-vertical .os-scrollbar-handle': { + right: '0', + minHeight: 'var(--os-handle-min-size)', + maxHeight: 'var(--os-handle-max-size)', + width: 'var(--os-handle-perpendicular-size)', + transition: 'opacity 0.15s, background-color 0.15s, border-color 0.15s, width 0.15s', + }, + '.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle': { + right: 'auto', + left: '0', + }, + '.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,\n.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl': + { + left: '0', + right: '0', + }, + '.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,\n.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl': + { + top: '0', + bottom: '0', + }, + '.os-scrollbar .os-scrollbar-track': { + border: 'var(--os-track-border)', + borderRadius: 'var(--os-track-border-radius)', + background: 'var(--os-track-bg)', + transition: 'opacity 0.15s, background-color 0.15s, border-color 0.15s', + }, + '.os-scrollbar .os-scrollbar-track:hover': { + border: 'var(--os-track-border-hover)', + background: 'var(--os-track-bg-hover)', + }, + '.os-scrollbar .os-scrollbar-track:active': { + border: 'var(--os-track-border-active)', + background: 'var(--os-track-bg-active)', + }, + '.os-scrollbar .os-scrollbar-handle': { + border: 'var(--os-handle-border)', + borderRadius: 'var(--os-handle-border-radius)', + background: theme.textMutedColor, + opacity: 0.5, + }, + '.os-scrollbar .os-scrollbar-handle:before': { + content: '""', + position: 'absolute', + left: '0', + right: '0', + top: '0', + bottom: '0', + display: 'block', + }, + '.os-scrollbar .os-scrollbar-handle:hover': { + border: 'var(--os-handle-border-hover)', + opacity: 0.6, + }, + '.os-scrollbar .os-scrollbar-handle:active': { + border: 'var(--os-handle-border-active)', + background: 'var(--os-handle-bg-active)', + }, + '.os-scrollbar-horizontal.os-scrollbar-rtl': { + left: 'var(--os-size)', + right: '0', + }, + '.os-scrollbar-horizontal .os-scrollbar-handle:before': { + top: 'calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1)', + bottom: 'calc(var(--os-padding-perpendicular) * -1)', + }, + '.os-scrollbar-horizontal:hover .os-scrollbar-handle': { + height: 'var(--os-handle-perpendicular-size-hover)', + }, + '.os-scrollbar-horizontal:active .os-scrollbar-handle': { + height: 'var(--os-handle-perpendicular-size-active)', + }, + '.os-scrollbar-vertical .os-scrollbar-handle:before': { + left: 'calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1)', + right: 'calc(var(--os-padding-perpendicular) * -1)', + }, + '.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before': { + right: + 'calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1)', + left: 'calc(var(--os-padding-perpendicular) * -1)', + }, + '.os-scrollbar-vertical:hover .os-scrollbar-handle': { + width: 'var(--os-handle-perpendicular-size-hover)', + }, + '.os-scrollbar-vertical:active .os-scrollbar-handle': { + width: 'var(--os-handle-perpendicular-size-active)', + }, + '[data-overlayscrollbars~=updating] > .os-scrollbar,\n.os-theme-none.os-scrollbar': { + display: 'none !important', + }, + '.os-theme-dark,\n.os-theme-light': { + boxSizing: 'border-box', + '--os-size': '10px', + '--os-padding-perpendicular': '2px', + '--os-padding-axis': '2px', + '--os-track-border-radius': '10px', + '--os-handle-interactive-area-offset': '4px', + '--os-handle-border-radius': '10px', + }, + '.os-theme-dark': { + '--os-handle-bg': 'rgba(0, 0, 0, 0.44)', + '--os-handle-bg-hover': 'rgba(0, 0, 0, 0.55)', + '--os-handle-bg-active': 'rgba(0, 0, 0, 0.66)', + }, + '.os-theme-light': { + '--os-handle-bg': 'rgba(255, 255, 255, 0.44)', + '--os-handle-bg-hover': 'rgba(255, 255, 255, 0.55)', + '--os-handle-bg-active': 'rgba(255, 255, 255, 0.66)', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar .os-scrollbar-handle, .os-no-css-vars.os-theme-light.os-scrollbar .os-scrollbar-handle': + { + borderRadius: '10px', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar .os-scrollbar-track, .os-no-css-vars.os-theme-light.os-scrollbar .os-scrollbar-track': + { + borderRadius: '10px', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-horizontal, .os-no-css-vars.os-theme-light.os-scrollbar-horizontal': + { + padding: '2px 2px', + right: '10px', + height: '10px', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-horizontal.os-scrollbar-rtl, .os-no-css-vars.os-theme-light.os-scrollbar-horizontal.os-scrollbar-rtl': + { + left: '10px', + right: '0', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-horizontal .os-scrollbar-handle, .os-no-css-vars.os-theme-light.os-scrollbar-horizontal .os-scrollbar-handle': + { + minWidth: '33px', + maxWidth: 'none', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-horizontal .os-scrollbar-handle:before, .os-no-css-vars.os-theme-light.os-scrollbar-horizontal .os-scrollbar-handle:before': + { + top: 'calc((\n 2px + 4px\n ) * -1)', + bottom: 'calc(2px * -1)', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-vertical, .os-no-css-vars.os-theme-light.os-scrollbar-vertical': + { + padding: '2px 2px', + bottom: '10px', + width: '10px', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-vertical .os-scrollbar-handle, .os-no-css-vars.os-theme-light.os-scrollbar-vertical .os-scrollbar-handle': + { + minHeight: '33px', + maxHeight: 'none', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-vertical .os-scrollbar-handle:before, .os-no-css-vars.os-theme-light.os-scrollbar-vertical .os-scrollbar-handle:before': + { + left: 'calc((\n 2px + 4px\n ) * -1)', + right: 'calc(2px * -1)', + }, + '.os-no-css-vars.os-theme-dark.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before, .os-no-css-vars.os-theme-light.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before': + { + right: 'calc((\n 2px + 4px\n ) * -1)', + left: 'calc(2px * -1)', + }, + '.os-no-css-vars.os-theme-dark .os-scrollbar-handle': { + background: 'rgba(0, 0, 0, 0.44)', + }, + '.os-no-css-vars.os-theme-dark:hover .os-scrollbar-handle': { + background: 'rgba(0, 0, 0, 0.55)', + }, + '.os-no-css-vars.os-theme-dark:active .os-scrollbar-handle': { + background: 'rgba(0, 0, 0, 0.66)', + }, + '.os-no-css-vars.os-theme-light .os-scrollbar-handle': { + background: 'rgba(255, 255, 255, 0.44)', + }, + '.os-no-css-vars.os-theme-light:hover .os-scrollbar-handle': { + background: 'rgba(255, 255, 255, 0.55)', + }, + '.os-no-css-vars.os-theme-light:active .os-scrollbar-handle': { + background: 'rgba(255, 255, 255, 0.66)', + }, + } as any as CSSObject); + +const GlobalScrollAreaStyles = () => ; + +export default GlobalScrollAreaStyles; diff --git a/code/ui/components/src/components/ScrollArea/OverlayScrollbars.tsx b/code/ui/components/src/components/ScrollArea/OverlayScrollbars.tsx new file mode 100644 index 000000000000..c5043032448c --- /dev/null +++ b/code/ui/components/src/components/ScrollArea/OverlayScrollbars.tsx @@ -0,0 +1,5 @@ +import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; + +export const OverlayScrollbars = OverlayScrollbarsComponent; + +export default OverlayScrollbarsComponent; diff --git a/code/ui/components/src/ScrollArea/ScrollArea.stories.tsx b/code/ui/components/src/components/ScrollArea/ScrollArea.stories.tsx similarity index 98% rename from code/ui/components/src/ScrollArea/ScrollArea.stories.tsx rename to code/ui/components/src/components/ScrollArea/ScrollArea.stories.tsx index 85d3e8aa7522..e4a7a09e7dc2 100644 --- a/code/ui/components/src/ScrollArea/ScrollArea.stories.tsx +++ b/code/ui/components/src/components/ScrollArea/ScrollArea.stories.tsx @@ -51,9 +51,11 @@ export const Vertical = () => ( export const Horizontal = () => ( - {list((i) => ( - {i} - ))} +
+ {list((i) => ( + {i} + ))} +
); diff --git a/code/ui/components/src/ScrollArea/ScrollArea.tsx b/code/ui/components/src/components/ScrollArea/ScrollArea.tsx similarity index 87% rename from code/ui/components/src/ScrollArea/ScrollArea.tsx rename to code/ui/components/src/components/ScrollArea/ScrollArea.tsx index 46d989742b10..51a0f5786679 100644 --- a/code/ui/components/src/ScrollArea/ScrollArea.tsx +++ b/code/ui/components/src/components/ScrollArea/ScrollArea.tsx @@ -8,7 +8,11 @@ const OverlayScrollbars = lazy(() => import('./OverlayScrollbars')); const Scroller: FC = ({ horizontal, vertical, ...props }) => ( }> - + ); diff --git a/code/ui/components/src/Zoom/Zoom.stories.tsx b/code/ui/components/src/components/Zoom/Zoom.stories.tsx similarity index 100% rename from code/ui/components/src/Zoom/Zoom.stories.tsx rename to code/ui/components/src/components/Zoom/Zoom.stories.tsx diff --git a/code/ui/components/src/Zoom/Zoom.tsx b/code/ui/components/src/components/Zoom/Zoom.tsx similarity index 100% rename from code/ui/components/src/Zoom/Zoom.tsx rename to code/ui/components/src/components/Zoom/Zoom.tsx diff --git a/code/ui/components/src/Zoom/ZoomElement.tsx b/code/ui/components/src/components/Zoom/ZoomElement.tsx similarity index 66% rename from code/ui/components/src/Zoom/ZoomElement.tsx rename to code/ui/components/src/components/Zoom/ZoomElement.tsx index e880637a30b7..8293d9a7f031 100644 --- a/code/ui/components/src/Zoom/ZoomElement.tsx +++ b/code/ui/components/src/components/Zoom/ZoomElement.tsx @@ -2,23 +2,13 @@ import type { ReactElement } from 'react'; import React, { useEffect, useRef, useState, useCallback } from 'react'; import useResizeObserver from 'use-resize-observer'; import { styled } from '@storybook/theming'; -import { browserSupportsCssZoom } from './browserSupportsCssZoom'; - -const hasBrowserSupportForCssZoom = browserSupportsCssZoom(); const ZoomElementWrapper = styled.div<{ scale: number; elementHeight: number }>( - ({ scale = 1, elementHeight }) => - hasBrowserSupportForCssZoom - ? { - '> *': { - zoom: 1 / scale, - }, - } - : { - height: elementHeight || 'auto', - transformOrigin: 'top left', - transform: `scale(${1 / scale})`, - } + ({ scale = 1, elementHeight }) => ({ + height: elementHeight || 'auto', + transformOrigin: 'top left', + transform: `scale(${1 / scale})`, + }) ); type ZoomProps = { @@ -52,10 +42,7 @@ export function ZoomElement({ scale, children }: ZoomProps) { return ( -
+
{children}
diff --git a/code/ui/components/src/Zoom/ZoomIFrame.tsx b/code/ui/components/src/components/Zoom/ZoomIFrame.tsx similarity index 74% rename from code/ui/components/src/Zoom/ZoomIFrame.tsx rename to code/ui/components/src/components/Zoom/ZoomIFrame.tsx index 255a39c414b5..3101364bd861 100644 --- a/code/ui/components/src/Zoom/ZoomIFrame.tsx +++ b/code/ui/components/src/components/Zoom/ZoomIFrame.tsx @@ -1,6 +1,5 @@ import type { RefObject, ReactElement } from 'react'; import { Component } from 'react'; -import { browserSupportsCssZoom } from './browserSupportsCssZoom'; export type IZoomIFrameProps = { scale: number; @@ -36,19 +35,12 @@ export class ZoomIFrame extends Component { setIframeInnerZoom(scale: number) { try { - if (browserSupportsCssZoom()) { - Object.assign(this.iframe.contentDocument.body.style, { - zoom: 1 / scale, - minHeight: `calc(100vh / ${1 / scale})`, - }); - } else { - Object.assign(this.iframe.contentDocument.body.style, { - width: `${scale * 100}%`, - height: `${scale * 100}%`, - transform: `scale(${1 / scale})`, - transformOrigin: 'top left', - }); - } + Object.assign(this.iframe.contentDocument.body.style, { + width: `${scale * 100}%`, + height: `${scale * 100}%`, + transform: `scale(${1 / scale})`, + transformOrigin: 'top left', + }); } catch (e) { this.setIframeZoom(scale); } diff --git a/code/ui/components/src/addon-panel/addon-panel.tsx b/code/ui/components/src/components/addon-panel/addon-panel.tsx similarity index 100% rename from code/ui/components/src/addon-panel/addon-panel.tsx rename to code/ui/components/src/components/addon-panel/addon-panel.tsx diff --git a/code/ui/components/src/bar/bar.tsx b/code/ui/components/src/components/bar/bar.tsx similarity index 100% rename from code/ui/components/src/bar/bar.tsx rename to code/ui/components/src/components/bar/bar.tsx diff --git a/code/ui/components/src/bar/button.stories.tsx b/code/ui/components/src/components/bar/button.stories.tsx similarity index 100% rename from code/ui/components/src/bar/button.stories.tsx rename to code/ui/components/src/components/bar/button.stories.tsx diff --git a/code/ui/components/src/bar/button.tsx b/code/ui/components/src/components/bar/button.tsx similarity index 100% rename from code/ui/components/src/bar/button.tsx rename to code/ui/components/src/components/bar/button.tsx diff --git a/code/ui/components/src/bar/separator.tsx b/code/ui/components/src/components/bar/separator.tsx similarity index 100% rename from code/ui/components/src/bar/separator.tsx rename to code/ui/components/src/components/bar/separator.tsx diff --git a/code/ui/components/src/brand/StorybookIcon.stories.tsx b/code/ui/components/src/components/brand/StorybookIcon.stories.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookIcon.stories.tsx rename to code/ui/components/src/components/brand/StorybookIcon.stories.tsx diff --git a/code/ui/components/src/brand/StorybookIcon.tsx b/code/ui/components/src/components/brand/StorybookIcon.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookIcon.tsx rename to code/ui/components/src/components/brand/StorybookIcon.tsx diff --git a/code/ui/components/src/brand/StorybookLogo.stories.tsx b/code/ui/components/src/components/brand/StorybookLogo.stories.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookLogo.stories.tsx rename to code/ui/components/src/components/brand/StorybookLogo.stories.tsx diff --git a/code/ui/components/src/brand/StorybookLogo.tsx b/code/ui/components/src/components/brand/StorybookLogo.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookLogo.tsx rename to code/ui/components/src/components/brand/StorybookLogo.tsx diff --git a/code/ui/components/src/components/clipboard/ClipboardCode.tsx b/code/ui/components/src/components/clipboard/ClipboardCode.tsx new file mode 100644 index 000000000000..577a6674f5d4 --- /dev/null +++ b/code/ui/components/src/components/clipboard/ClipboardCode.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { color, styled, typography } from '@storybook/theming'; + +const Code = styled.pre` + line-height: 18px; + padding: 11px 1rem; + white-space: pre-wrap; + background: rgba(0, 0, 0, 0.05); + color: ${color.darkest}; + border-radius: 3px; + margin: 1rem 0; + width: 100%; + display: block; + overflow: hidden; + font-family: ${typography.fonts.mono}; + font-size: ${typography.size.s2 - 1}px; +`; + +interface ClipboardCodeProps { + code: string; +} + +export const ClipboardCode = ({ code, ...props }: ClipboardCodeProps) => ( + + {code} + +); diff --git a/code/ui/components/src/form/field/field.tsx b/code/ui/components/src/components/form/field/field.tsx similarity index 100% rename from code/ui/components/src/form/field/field.tsx rename to code/ui/components/src/components/form/field/field.tsx diff --git a/code/ui/components/src/form/form.stories.tsx b/code/ui/components/src/components/form/form.stories.tsx similarity index 100% rename from code/ui/components/src/form/form.stories.tsx rename to code/ui/components/src/components/form/form.stories.tsx diff --git a/code/ui/components/src/form/index.tsx b/code/ui/components/src/components/form/index.tsx similarity index 100% rename from code/ui/components/src/form/index.tsx rename to code/ui/components/src/components/form/index.tsx diff --git a/code/ui/components/src/form/input/input.tsx b/code/ui/components/src/components/form/input/input.tsx similarity index 98% rename from code/ui/components/src/form/input/input.tsx rename to code/ui/components/src/components/form/input/input.tsx index cc21c5447ad3..83d99e4d8a8d 100644 --- a/code/ui/components/src/form/input/input.tsx +++ b/code/ui/components/src/components/form/input/input.tsx @@ -32,6 +32,12 @@ const styles = ({ theme }: { theme: Theme }): CSSObject => ({ fontSize: theme.typography.size.s2 - 1, lineHeight: '20px', padding: '6px 10px', // 32 + boxSizing: 'border-box', + height: 32, + + '&[type="file"]': { + height: 'auto', + }, '&:focus': { boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, diff --git a/code/ui/components/src/icon/icon.stories.tsx b/code/ui/components/src/components/icon/icon.stories.tsx similarity index 100% rename from code/ui/components/src/icon/icon.stories.tsx rename to code/ui/components/src/components/icon/icon.stories.tsx diff --git a/code/ui/components/src/icon/icon.tsx b/code/ui/components/src/components/icon/icon.tsx similarity index 100% rename from code/ui/components/src/icon/icon.tsx rename to code/ui/components/src/components/icon/icon.tsx diff --git a/code/ui/components/src/icon/icons.tsx b/code/ui/components/src/components/icon/icons.tsx similarity index 100% rename from code/ui/components/src/icon/icons.tsx rename to code/ui/components/src/components/icon/icons.tsx diff --git a/code/ui/components/src/icon/svg.tsx b/code/ui/components/src/components/icon/svg.tsx similarity index 100% rename from code/ui/components/src/icon/svg.tsx rename to code/ui/components/src/components/icon/svg.tsx diff --git a/code/ui/components/src/placeholder/placeholder.stories.tsx b/code/ui/components/src/components/placeholder/placeholder.stories.tsx similarity index 100% rename from code/ui/components/src/placeholder/placeholder.stories.tsx rename to code/ui/components/src/components/placeholder/placeholder.stories.tsx diff --git a/code/ui/components/src/placeholder/placeholder.tsx b/code/ui/components/src/components/placeholder/placeholder.tsx similarity index 100% rename from code/ui/components/src/placeholder/placeholder.tsx rename to code/ui/components/src/components/placeholder/placeholder.tsx diff --git a/code/ui/components/src/shared/animation.ts b/code/ui/components/src/components/shared/animation.ts similarity index 100% rename from code/ui/components/src/shared/animation.ts rename to code/ui/components/src/components/shared/animation.ts diff --git a/code/ui/components/src/spaced/Spaced.stories.tsx b/code/ui/components/src/components/spaced/Spaced.stories.tsx similarity index 100% rename from code/ui/components/src/spaced/Spaced.stories.tsx rename to code/ui/components/src/components/spaced/Spaced.stories.tsx diff --git a/code/ui/components/src/spaced/Spaced.tsx b/code/ui/components/src/components/spaced/Spaced.tsx similarity index 100% rename from code/ui/components/src/spaced/Spaced.tsx rename to code/ui/components/src/components/spaced/Spaced.tsx diff --git a/code/ui/components/src/syntaxhighlighter/formatter.test.ts b/code/ui/components/src/components/syntaxhighlighter/formatter.test.ts similarity index 100% rename from code/ui/components/src/syntaxhighlighter/formatter.test.ts rename to code/ui/components/src/components/syntaxhighlighter/formatter.test.ts diff --git a/code/ui/components/src/syntaxhighlighter/formatter.ts b/code/ui/components/src/components/syntaxhighlighter/formatter.ts similarity index 100% rename from code/ui/components/src/syntaxhighlighter/formatter.ts rename to code/ui/components/src/components/syntaxhighlighter/formatter.ts diff --git a/code/ui/components/src/components/syntaxhighlighter/lazy-syntaxhighlighter.tsx b/code/ui/components/src/components/syntaxhighlighter/lazy-syntaxhighlighter.tsx new file mode 100644 index 000000000000..822034aca219 --- /dev/null +++ b/code/ui/components/src/components/syntaxhighlighter/lazy-syntaxhighlighter.tsx @@ -0,0 +1,72 @@ +import React, { Suspense, lazy } from 'react'; + +import type { ComponentProps } from 'react'; +import type ReactSyntaxHighlighter from './syntaxhighlighter'; + +let languages: Parameters[] = []; +let Comp: typeof ReactSyntaxHighlighter | null = null; + +const LazySyntaxHighlighter = lazy(async () => { + const { SyntaxHighlighter } = await import('./syntaxhighlighter'); + + if (languages.length > 0) { + languages.forEach((args) => { + SyntaxHighlighter.registerLanguage(...args); + }); + languages = []; + } + + if (Comp === null) Comp = SyntaxHighlighter; + + return { + default: (props: ComponentProps) => , + }; +}); + +const LazySyntaxHighlighterWithFormatter = lazy(async () => { + const [{ SyntaxHighlighter }, { formatter }] = await Promise.all([ + import('./syntaxhighlighter'), + import('./formatter'), + ]); + + if (languages.length > 0) { + languages.forEach((args) => { + SyntaxHighlighter.registerLanguage(...args); + }); + languages = []; + } + + if (Comp === null) { + Comp = SyntaxHighlighter; + } + + return { + default: (props: ComponentProps) => ( + + ), + }; +}); + +export const SyntaxHighlighter = ( + props: + | ComponentProps + | ComponentProps +) => ( + }> + {props.format !== false ? ( + + ) : ( + + )} + +); + +SyntaxHighlighter.registerLanguage = ( + ...args: Parameters +) => { + if (Comp !== null) { + Comp.registerLanguage(...args); + return; + } + languages.push(args); +}; diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter-types.ts b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter-types.ts similarity index 98% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter-types.ts rename to code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter-types.ts index b2c5ee2d39ee..f2287c985c7f 100644 --- a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter-types.ts +++ b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter-types.ts @@ -35,6 +35,7 @@ export interface SyntaxHighlighterBaseProps { lineProps?: LineTagPropsFunction | React.HTMLProps; showLineNumbers?: boolean; startingLineNumber?: number; + wrapLongLines?: boolean; style?: any; useInlineStyles?: boolean; } diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.stories.tsx b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.stories.tsx similarity index 91% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter.stories.tsx rename to code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.stories.tsx index 22609a6f5543..12d76391f6cf 100644 --- a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.stories.tsx +++ b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.stories.tsx @@ -1,6 +1,7 @@ +import { ThemeProvider, ensure, themes } from '@storybook/theming'; + import type { ComponentProps } from 'react'; import React from 'react'; -import { ThemeProvider, themes, ensure } from '@storybook/theming'; import { SyntaxHighlighter } from './lazy-syntaxhighlighter'; export default { @@ -108,6 +109,24 @@ export const GraphQL = { }, }; +export const CustomSyntax = { + args: { + language: 'scss', + children: `// Custom language syntax registered +div.parent { + div.child { + color: $red; + } +}`, + }, + loaders: [ + async () => { + const scss = (await import('react-syntax-highlighter/dist/esm/languages/prism/scss')).default; + SyntaxHighlighter.registerLanguage('scss', scss); + }, + ], +}; + export const Unsupported = { args: { language: 'C#', diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.tsx b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.tsx similarity index 97% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter.tsx rename to code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.tsx index 4a84d4bda34f..00c5b6629cb1 100644 --- a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.tsx +++ b/code/ui/components/src/components/syntaxhighlighter/syntaxhighlighter.tsx @@ -189,7 +189,7 @@ export interface SyntaxHighlighterState { // copied from @types/react-syntax-highlighter/index.d.ts -export const SyntaxHighlighter: FC = ({ +export const SyntaxHighlighter = ({ children, language = 'jsx', copyable = false, @@ -200,7 +200,7 @@ export const SyntaxHighlighter: FC = ({ className = null, showLineNumbers = false, ...rest -}) => { +}: SyntaxHighlighterProps) => { if (typeof children !== 'string' || !children.trim()) { return null; } @@ -254,4 +254,8 @@ export const SyntaxHighlighter: FC = ({ ); }; +SyntaxHighlighter.registerLanguage = ( + ...args: Parameters +) => ReactSyntaxHighlighter.registerLanguage(...args); + export default SyntaxHighlighter; diff --git a/code/ui/components/src/components/tabs/tabs.helpers.tsx b/code/ui/components/src/components/tabs/tabs.helpers.tsx new file mode 100644 index 000000000000..fe41cc47be91 --- /dev/null +++ b/code/ui/components/src/components/tabs/tabs.helpers.tsx @@ -0,0 +1,52 @@ +import { styled } from '@storybook/theming'; +import type { FC, ReactChild, ReactElement, ReactNode } from 'react'; +import React, { Children } from 'react'; +import type { Addon_RenderOptions } from '@storybook/types'; +import type { TabsProps } from './tabs'; + +export interface VisuallyHiddenProps { + active?: boolean; +} + +export const VisuallyHidden = styled.div(({ active }) => + active ? { display: 'block' } : { display: 'none' } +); + +export const childrenToList = (children: TabsProps['children']) => + Children.toArray(children).map( + ({ + props: { title, id, color, children: childrenOfChild }, + }: ReactElement<{ + children: FC | ReactChild | null; + title: ReactChild | null | FC; + id: string; + color?: string; + }>) => { + const content: FC | ReactNode = Array.isArray(childrenOfChild) + ? childrenOfChild[0] + : childrenOfChild; + + const render: FC = ( + typeof content === 'function' + ? content + : ({ active }) => ( + + {content} + + ) + ) as FC; + return { + title, + id, + ...(color ? { color } : {}), + render, + }; + } + ); + +export type ChildrenList = ReturnType; +export type ChildrenListComplete = Array< + ReturnType[0] & { + active: boolean; + } +>; diff --git a/code/ui/components/src/tabs/tabs.hooks.tsx b/code/ui/components/src/components/tabs/tabs.hooks.tsx similarity index 95% rename from code/ui/components/src/tabs/tabs.hooks.tsx rename to code/ui/components/src/components/tabs/tabs.hooks.tsx index 41df6e93f44f..0afb81ea9186 100644 --- a/code/ui/components/src/tabs/tabs.hooks.tsx +++ b/code/ui/components/src/components/tabs/tabs.hooks.tsx @@ -5,7 +5,7 @@ import useResizeObserver from 'use-resize-observer'; import { TabButton } from '../bar/button'; import { TooltipLinkList } from '../tooltip/TooltipLinkList'; import { WithTooltip } from '../tooltip/WithTooltip'; -import type { ChildrenList } from './tabs.helpers'; +import type { ChildrenListComplete } from './tabs.helpers'; import type { Link } from '../tooltip/TooltipLinkList'; const CollapseIcon = styled.span<{ isActive: boolean }>(({ theme, isActive }) => ({ @@ -32,7 +32,7 @@ const AddonButton = styled(TabButton)<{ preActive: boolean }>(({ active, theme, `; }); -export function useList(list: ChildrenList) { +export function useList(list: ChildrenListComplete) { const tabBarRef = useRef(); const addonsRef = useRef(); const tabRefs = useRef(new Map()); @@ -41,8 +41,8 @@ export function useList(list: ChildrenList) { }); const [visibleList, setVisibleList] = useState(list); - const [invisibleList, setInvisibleList] = useState([]); - const previousList = useRef(list); + const [invisibleList, setInvisibleList] = useState([]); + const previousList = useRef(list); const AddonTab = useCallback( ({ @@ -134,7 +134,7 @@ export function useList(list: ChildrenList) { const { width: widthAddonsTab } = addonsRef.current.getBoundingClientRect(); const rightBorder = invisibleList.length ? x + width - widthAddonsTab : x + width; - const newVisibleList: ChildrenList = []; + const newVisibleList: ChildrenListComplete = []; let widthSum = 0; diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/components/tabs/tabs.stories.tsx similarity index 75% rename from code/ui/components/src/tabs/tabs.stories.tsx rename to code/ui/components/src/components/tabs/tabs.stories.tsx index 7a9abdb24130..cac0a76b4deb 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/components/tabs/tabs.stories.tsx @@ -1,18 +1,19 @@ import { expect } from '@storybook/jest'; -import type { Key } from 'react'; import React, { Fragment } from 'react'; import { action } from '@storybook/addon-actions'; -import { logger } from '@storybook/client-logger'; import type { Meta, StoryObj } from '@storybook/react'; import { within, fireEvent, waitFor, screen, - getByText, userEvent, + findByText, } from '@storybook/testing-library'; import { Tabs, TabsState, TabWrapper } from './tabs'; +import type { ChildrenList } from './tabs.helpers'; +import { IconButton } from '../bar/button'; +import { Icons } from '../icon/icon'; const colours = Array.from(new Array(15), (val, index) => index).map((i) => Math.floor((1 / 15) * i * 16777215) @@ -41,29 +42,17 @@ function fibonacci(num: number, memo?: FibonacciMap): number { /* eslint-enable no-param-reassign */ } -interface Panels { - [key: string]: { - title: string; - color?: string; - render: ({ active, key }: { active: boolean; key: Key }) => JSX.Element; - }; -} +type Panels = Record>; const panels: Panels = { test1: { title: 'Tab title #1', - render: ({ active, key }) => - active ? ( -
- CONTENT 1 -
- ) : null, + render: ({ active }) => (active ?
CONTENT 1
: null), }, test2: { title: 'Tab title #2', - render: ({ active, key }) => ( + render: ({ active }) => (
+ render: ({ active }) => active ? ( -
+
{colours.map((colour, i) => (
- active ? ( -
- CONTENT 4 -
- ) : null, + render: ({ active }) => (active ?
CONTENT 4
: null), }, test5: { title: 'Tab title #5', - render: ({ active, key }) => - active ? ( -
- CONTENT 5 -
- ) : null, + render: ({ active }) => (active ?
CONTENT 5
: null), }, test6: { title: 'Tab title #6', - render: ({ active, key }) => ( -
CONTENT 6
} /> - ), + render: ({ active }) =>
CONTENT 6
} />, }, }; const onSelect = action('onSelect'); const content = Object.entries(panels).map(([k, v]) => ( -
+
{v.render}
)); export default { title: 'Tabs', - decorators: [ - (story) => ( -
- {story()} -
- ), - ], args: { menuName: 'Addons', }, @@ -199,11 +162,11 @@ export const StatefulStaticWithSetBackgroundColor = { } satisfies Story; const customViewports = { - chromatic: { - name: 'Chromatic', + sized: { + name: 'Sized', styles: { width: '380px', - height: '963px', + height: '500px', }, }, }; @@ -211,9 +174,10 @@ const customViewports = { export const StatefulDynamicWithOpenTooltip = { parameters: { viewport: { - defaultViewport: 'chromatic', + defaultViewport: 'sized', viewports: customViewports, }, + theme: 'light', chromatic: { viewports: [380] }, }, play: async ({ canvasElement }) => { @@ -224,9 +188,8 @@ export const StatefulDynamicWithOpenTooltip = { await expect(canvas.getByRole('tab', { name: /Addons/ })).toBeInTheDocument(); }); - const addonsTab = await canvas.findByRole('tab', { name: /Addons/ }); - await waitFor(async () => { + const addonsTab = await canvas.findByRole('tab', { name: /Addons/ }); const tooltip = await screen.queryByTestId('tooltip'); if (!tooltip) { @@ -236,14 +199,14 @@ export const StatefulDynamicWithOpenTooltip = { if (!tooltip) { throw new Error('Tooltip not found'); } - }); - expect(screen.queryByTestId('tooltip')).toBeInTheDocument(); + await expect(screen.queryByTestId('tooltip')).toBeInTheDocument(); + }); }, render: (args) => ( {Object.entries(panels).map(([k, v]) => ( -
+
{v.render}
))} @@ -252,20 +215,18 @@ export const StatefulDynamicWithOpenTooltip = { } satisfies Story; export const StatefulDynamicWithSelectedAddon = { - parameters: { - viewport: { - defaultViewport: 'chromatic', - viewports: customViewports, - }, - chromatic: { viewports: [380] }, - }, + ...StatefulDynamicWithOpenTooltip, play: async (context) => { await StatefulDynamicWithOpenTooltip.play(context); + const canvas = within(context.canvasElement); - const popperContainer = screen.getByTestId('tooltip'); - const tab4 = getByText(popperContainer, 'Tab title #4', {}); - fireEvent(tab4, new MouseEvent('click', { bubbles: true })); - await waitFor(() => screen.getByText('CONTENT 4')); + await waitFor(async () => { + const popperContainer = await screen.findByTestId('tooltip'); + const tab4 = await findByText(popperContainer, 'Tab title #4', {}); + fireEvent(tab4, new MouseEvent('click', { bubbles: true })); + const content4 = await canvas.findByText('CONTENT 4'); + await expect(content4).toBeVisible(); + }); // reopen the tooltip await StatefulDynamicWithOpenTooltip.play(context); @@ -273,7 +234,7 @@ export const StatefulDynamicWithSelectedAddon = { render: (args) => ( {Object.entries(panels).map(([k, v]) => ( -
+
{v.render}
))} @@ -305,6 +266,7 @@ export const StatelessBordered = { export const StatelessWithTools = { render: (args) => ( - - + + + + + + } {...args} @@ -328,6 +290,9 @@ export const StatelessWithTools = { } satisfies Story; export const StatelessAbsolute = { + parameters: { + layout: 'fullscreen', + }, render: (args) => ( ( ( = ({ active, render, children }) => export const panelProps = {}; export interface TabsProps { - children?: FuncChildren[] | ReactNode; + children?: ReactElement<{ + children: FC; + title: ReactNode | FC; + }>[]; id?: string; tools?: ReactNode; selected?: string; @@ -138,9 +141,14 @@ export const Tabs: FC = memo( id: htmlId, menuName, }) => { - const list = useMemo( - () => childrenToList(children, selected), - [children, selected] + const idList = childrenToList(children).map((i) => i.id); + const list = useMemo( + () => + childrenToList(children).map((i, index) => ({ + ...i, + active: selected ? i.id === selected : index === 0, + })), + [selected, ...idList] ); const { visibleList, tabBarRef, tabRefs, AddonTab } = useList(list); @@ -169,7 +177,7 @@ export const Tabs: FC = memo( }} role="tab" > - {title} + {typeof title === 'function' ? : title} </TabButton> ); })} @@ -178,7 +186,9 @@ export const Tabs: FC<TabsProps> = memo( {tools} </FlexBar> <Content id="panel-tab-content" bordered={bordered} absolute={absolute}> - {list.map(({ id, active, render }) => render({ key: id, active }))} + {list.map(({ id, active, render }) => { + return React.createElement(render, { key: id, active }, null); + })} </Content> </Wrapper> ) : ( @@ -199,10 +209,8 @@ Tabs.defaultProps = { menuName: 'Tabs', }; -type FuncChildren = ({ active }: { active: boolean }) => JSX.Element; - export interface TabsStateProps { - children: FuncChildren[] | ReactNode; + children: TabsProps['children']; initial: string; absolute: boolean; bordered: boolean; diff --git a/code/ui/components/src/tooltip/ListItem.stories.tsx b/code/ui/components/src/components/tooltip/ListItem.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/ListItem.stories.tsx rename to code/ui/components/src/components/tooltip/ListItem.stories.tsx diff --git a/code/ui/components/src/tooltip/ListItem.tsx b/code/ui/components/src/components/tooltip/ListItem.tsx similarity index 100% rename from code/ui/components/src/tooltip/ListItem.tsx rename to code/ui/components/src/components/tooltip/ListItem.tsx diff --git a/code/ui/components/src/tooltip/Tooltip.stories.tsx b/code/ui/components/src/components/tooltip/Tooltip.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/Tooltip.stories.tsx rename to code/ui/components/src/components/tooltip/Tooltip.stories.tsx diff --git a/code/ui/components/src/tooltip/Tooltip.tsx b/code/ui/components/src/components/tooltip/Tooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/Tooltip.tsx rename to code/ui/components/src/components/tooltip/Tooltip.tsx diff --git a/code/ui/components/src/tooltip/TooltipLinkList.stories.tsx b/code/ui/components/src/components/tooltip/TooltipLinkList.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipLinkList.stories.tsx rename to code/ui/components/src/components/tooltip/TooltipLinkList.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipLinkList.tsx b/code/ui/components/src/components/tooltip/TooltipLinkList.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipLinkList.tsx rename to code/ui/components/src/components/tooltip/TooltipLinkList.tsx diff --git a/code/ui/components/src/tooltip/TooltipMessage.stories.tsx b/code/ui/components/src/components/tooltip/TooltipMessage.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipMessage.stories.tsx rename to code/ui/components/src/components/tooltip/TooltipMessage.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipMessage.tsx b/code/ui/components/src/components/tooltip/TooltipMessage.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipMessage.tsx rename to code/ui/components/src/components/tooltip/TooltipMessage.tsx diff --git a/code/ui/components/src/tooltip/TooltipNote.stories.tsx b/code/ui/components/src/components/tooltip/TooltipNote.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipNote.stories.tsx rename to code/ui/components/src/components/tooltip/TooltipNote.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipNote.tsx b/code/ui/components/src/components/tooltip/TooltipNote.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipNote.tsx rename to code/ui/components/src/components/tooltip/TooltipNote.tsx diff --git a/code/ui/components/src/tooltip/WithTooltip.stories.tsx b/code/ui/components/src/components/tooltip/WithTooltip.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/WithTooltip.stories.tsx rename to code/ui/components/src/components/tooltip/WithTooltip.stories.tsx diff --git a/code/ui/components/src/tooltip/WithTooltip.tsx b/code/ui/components/src/components/tooltip/WithTooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/WithTooltip.tsx rename to code/ui/components/src/components/tooltip/WithTooltip.tsx diff --git a/code/ui/components/src/tooltip/assets/ellipse.png b/code/ui/components/src/components/tooltip/assets/ellipse.png similarity index 100% rename from code/ui/components/src/tooltip/assets/ellipse.png rename to code/ui/components/src/components/tooltip/assets/ellipse.png diff --git a/code/ui/components/src/tooltip/lazy-WithTooltip.tsx b/code/ui/components/src/components/tooltip/lazy-WithTooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/lazy-WithTooltip.tsx rename to code/ui/components/src/components/tooltip/lazy-WithTooltip.tsx diff --git a/code/ui/components/src/typography/DocumentFormatting.tsx b/code/ui/components/src/components/typography/DocumentFormatting.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentFormatting.tsx rename to code/ui/components/src/components/typography/DocumentFormatting.tsx diff --git a/code/ui/components/src/typography/DocumentFormattingSample.mdx b/code/ui/components/src/components/typography/DocumentFormattingSample.mdx similarity index 100% rename from code/ui/components/src/typography/DocumentFormattingSample.mdx rename to code/ui/components/src/components/typography/DocumentFormattingSample.mdx diff --git a/code/ui/components/src/typography/DocumentWrapper.stories.tsx b/code/ui/components/src/components/typography/DocumentWrapper.stories.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentWrapper.stories.tsx rename to code/ui/components/src/components/typography/DocumentWrapper.stories.tsx diff --git a/code/ui/components/src/typography/DocumentWrapper.tsx b/code/ui/components/src/components/typography/DocumentWrapper.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentWrapper.tsx rename to code/ui/components/src/components/typography/DocumentWrapper.tsx diff --git a/code/ui/components/src/typography/ResetWrapper.tsx b/code/ui/components/src/components/typography/ResetWrapper.tsx similarity index 100% rename from code/ui/components/src/typography/ResetWrapper.tsx rename to code/ui/components/src/components/typography/ResetWrapper.tsx diff --git a/code/ui/components/src/typography/components.tsx b/code/ui/components/src/components/typography/components.tsx similarity index 100% rename from code/ui/components/src/typography/components.tsx rename to code/ui/components/src/components/typography/components.tsx diff --git a/code/ui/components/src/typography/elements/A.tsx b/code/ui/components/src/components/typography/elements/A.tsx similarity index 100% rename from code/ui/components/src/typography/elements/A.tsx rename to code/ui/components/src/components/typography/elements/A.tsx diff --git a/code/ui/components/src/typography/elements/Blockquote.tsx b/code/ui/components/src/components/typography/elements/Blockquote.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Blockquote.tsx rename to code/ui/components/src/components/typography/elements/Blockquote.tsx diff --git a/code/ui/components/src/typography/elements/Code.tsx b/code/ui/components/src/components/typography/elements/Code.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Code.tsx rename to code/ui/components/src/components/typography/elements/Code.tsx diff --git a/code/ui/components/src/typography/elements/DL.tsx b/code/ui/components/src/components/typography/elements/DL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/DL.tsx rename to code/ui/components/src/components/typography/elements/DL.tsx diff --git a/code/ui/components/src/typography/elements/Div.tsx b/code/ui/components/src/components/typography/elements/Div.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Div.tsx rename to code/ui/components/src/components/typography/elements/Div.tsx diff --git a/code/ui/components/src/typography/elements/H1.tsx b/code/ui/components/src/components/typography/elements/H1.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H1.tsx rename to code/ui/components/src/components/typography/elements/H1.tsx diff --git a/code/ui/components/src/typography/elements/H2.tsx b/code/ui/components/src/components/typography/elements/H2.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H2.tsx rename to code/ui/components/src/components/typography/elements/H2.tsx diff --git a/code/ui/components/src/typography/elements/H3.tsx b/code/ui/components/src/components/typography/elements/H3.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H3.tsx rename to code/ui/components/src/components/typography/elements/H3.tsx diff --git a/code/ui/components/src/typography/elements/H4.tsx b/code/ui/components/src/components/typography/elements/H4.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H4.tsx rename to code/ui/components/src/components/typography/elements/H4.tsx diff --git a/code/ui/components/src/typography/elements/H5.tsx b/code/ui/components/src/components/typography/elements/H5.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H5.tsx rename to code/ui/components/src/components/typography/elements/H5.tsx diff --git a/code/ui/components/src/typography/elements/H6.tsx b/code/ui/components/src/components/typography/elements/H6.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H6.tsx rename to code/ui/components/src/components/typography/elements/H6.tsx diff --git a/code/ui/components/src/typography/elements/HR.tsx b/code/ui/components/src/components/typography/elements/HR.tsx similarity index 100% rename from code/ui/components/src/typography/elements/HR.tsx rename to code/ui/components/src/components/typography/elements/HR.tsx diff --git a/code/ui/components/src/typography/elements/Img.tsx b/code/ui/components/src/components/typography/elements/Img.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Img.tsx rename to code/ui/components/src/components/typography/elements/Img.tsx diff --git a/code/ui/components/src/typography/elements/LI.tsx b/code/ui/components/src/components/typography/elements/LI.tsx similarity index 100% rename from code/ui/components/src/typography/elements/LI.tsx rename to code/ui/components/src/components/typography/elements/LI.tsx diff --git a/code/ui/components/src/typography/elements/Link.tsx b/code/ui/components/src/components/typography/elements/Link.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Link.tsx rename to code/ui/components/src/components/typography/elements/Link.tsx diff --git a/code/ui/components/src/typography/elements/OL.tsx b/code/ui/components/src/components/typography/elements/OL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/OL.tsx rename to code/ui/components/src/components/typography/elements/OL.tsx diff --git a/code/ui/components/src/typography/elements/P.tsx b/code/ui/components/src/components/typography/elements/P.tsx similarity index 100% rename from code/ui/components/src/typography/elements/P.tsx rename to code/ui/components/src/components/typography/elements/P.tsx diff --git a/code/ui/components/src/typography/elements/Pre.tsx b/code/ui/components/src/components/typography/elements/Pre.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Pre.tsx rename to code/ui/components/src/components/typography/elements/Pre.tsx diff --git a/code/ui/components/src/typography/elements/Span.tsx b/code/ui/components/src/components/typography/elements/Span.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Span.tsx rename to code/ui/components/src/components/typography/elements/Span.tsx diff --git a/code/ui/components/src/typography/elements/TT.tsx b/code/ui/components/src/components/typography/elements/TT.tsx similarity index 100% rename from code/ui/components/src/typography/elements/TT.tsx rename to code/ui/components/src/components/typography/elements/TT.tsx diff --git a/code/ui/components/src/typography/elements/Table.tsx b/code/ui/components/src/components/typography/elements/Table.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Table.tsx rename to code/ui/components/src/components/typography/elements/Table.tsx diff --git a/code/ui/components/src/typography/elements/UL.tsx b/code/ui/components/src/components/typography/elements/UL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/UL.tsx rename to code/ui/components/src/components/typography/elements/UL.tsx diff --git a/code/ui/components/src/typography/lib/common.tsx b/code/ui/components/src/components/typography/lib/common.tsx similarity index 100% rename from code/ui/components/src/typography/lib/common.tsx rename to code/ui/components/src/components/typography/lib/common.tsx diff --git a/code/ui/components/src/typography/lib/isReactChildString.tsx b/code/ui/components/src/components/typography/lib/isReactChildString.tsx similarity index 100% rename from code/ui/components/src/typography/lib/isReactChildString.tsx rename to code/ui/components/src/components/typography/lib/isReactChildString.tsx diff --git a/code/ui/components/src/typography/link/link.stories.tsx b/code/ui/components/src/components/typography/link/link.stories.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.stories.tsx rename to code/ui/components/src/components/typography/link/link.stories.tsx diff --git a/code/ui/components/src/typography/link/link.test.tsx b/code/ui/components/src/components/typography/link/link.test.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.test.tsx rename to code/ui/components/src/components/typography/link/link.test.tsx diff --git a/code/ui/components/src/typography/link/link.tsx b/code/ui/components/src/components/typography/link/link.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.tsx rename to code/ui/components/src/components/typography/link/link.tsx diff --git a/code/ui/components/src/typography/typography.stories.mdx b/code/ui/components/src/components/typography/typography.stories.mdx similarity index 100% rename from code/ui/components/src/typography/typography.stories.mdx rename to code/ui/components/src/components/typography/typography.stories.mdx diff --git a/code/ui/components/src/utils/getStoryHref.ts b/code/ui/components/src/components/utils/getStoryHref.ts similarity index 100% rename from code/ui/components/src/utils/getStoryHref.ts rename to code/ui/components/src/components/utils/getStoryHref.ts diff --git a/code/ui/components/src/index.ts b/code/ui/components/src/index.ts index c654094f1b61..44934fc3ad00 100644 --- a/code/ui/components/src/index.ts +++ b/code/ui/components/src/index.ts @@ -3,87 +3,91 @@ import type { ElementType } from 'react'; import { createElement, forwardRef } from 'react'; -import * as typography from './typography/components'; - -export { A } from './typography/elements/A'; -export { Blockquote } from './typography/elements/Blockquote'; -export { Code } from './typography/elements/Code'; -export { Div } from './typography/elements/Div'; -export { DL } from './typography/elements/DL'; -export { H1 } from './typography/elements/H1'; -export { H2 } from './typography/elements/H2'; -export { H3 } from './typography/elements/H3'; -export { H4 } from './typography/elements/H4'; -export { H5 } from './typography/elements/H5'; -export { H6 } from './typography/elements/H6'; -export { HR } from './typography/elements/HR'; -export { Img } from './typography/elements/Img'; -export { LI } from './typography/elements/LI'; -export { OL } from './typography/elements/OL'; -export { P } from './typography/elements/P'; -export { Pre } from './typography/elements/Pre'; -export { Span } from './typography/elements/Span'; -export { Table } from './typography/elements/Table'; -export { TT } from './typography/elements/TT'; -export { UL } from './typography/elements/UL'; - -export { Badge } from './Badge/Badge'; +import * as typography from './components/typography/components'; + +export { A } from './components/typography/elements/A'; +export { Blockquote } from './components/typography/elements/Blockquote'; +export { Code } from './components/typography/elements/Code'; +export { Div } from './components/typography/elements/Div'; +export { DL } from './components/typography/elements/DL'; +export { H1 } from './components/typography/elements/H1'; +export { H2 } from './components/typography/elements/H2'; +export { H3 } from './components/typography/elements/H3'; +export { H4 } from './components/typography/elements/H4'; +export { H5 } from './components/typography/elements/H5'; +export { H6 } from './components/typography/elements/H6'; +export { HR } from './components/typography/elements/HR'; +export { Img } from './components/typography/elements/Img'; +export { LI } from './components/typography/elements/LI'; +export { OL } from './components/typography/elements/OL'; +export { P } from './components/typography/elements/P'; +export { Pre } from './components/typography/elements/Pre'; +export { Span } from './components/typography/elements/Span'; +export { Table } from './components/typography/elements/Table'; +export { TT } from './components/typography/elements/TT'; +export { UL } from './components/typography/elements/UL'; +export { Badge } from './components/Badge/Badge'; // Typography -export { Link } from './typography/link/link'; -export { DocumentWrapper } from './typography/DocumentWrapper'; +export { Link } from './components/typography/link/link'; +export { DocumentWrapper } from './components/typography/DocumentWrapper'; export type { SyntaxHighlighterFormatTypes, SyntaxHighlighterProps, SyntaxHighlighterRendererProps, -} from './syntaxhighlighter/syntaxhighlighter-types'; -export { SyntaxHighlighter } from './syntaxhighlighter/lazy-syntaxhighlighter'; -export { createCopyToClipboardFunction } from './syntaxhighlighter/syntaxhighlighter'; +} from './components/syntaxhighlighter/syntaxhighlighter-types'; +export { SyntaxHighlighter } from './components/syntaxhighlighter/lazy-syntaxhighlighter'; +export { createCopyToClipboardFunction } from './components/syntaxhighlighter/syntaxhighlighter'; // UI -export { ActionBar } from './ActionBar/ActionBar'; -export { Spaced } from './spaced/Spaced'; -export { Placeholder } from './placeholder/placeholder'; -export { ScrollArea } from './ScrollArea/ScrollArea'; -export { Zoom } from './Zoom/Zoom'; -export type { ActionItem } from './ActionBar/ActionBar'; -export { ErrorFormatter } from './ErrorFormatter/ErrorFormatter'; +export { ActionBar } from './components/ActionBar/ActionBar'; +export { Spaced } from './components/spaced/Spaced'; +export { Placeholder } from './components/placeholder/placeholder'; +export { ScrollArea } from './components/ScrollArea/ScrollArea'; +export { Zoom } from './components/Zoom/Zoom'; +export type { ActionItem } from './components/ActionBar/ActionBar'; +export { ErrorFormatter } from './components/ErrorFormatter/ErrorFormatter'; // Forms -export { Button } from './Button/Button'; -export { Form } from './form/index'; +export { Button } from './components/Button/Button'; +export { Form } from './components/form/index'; // Tooltips -export { WithTooltip, WithTooltipPure } from './tooltip/lazy-WithTooltip'; -export { TooltipMessage } from './tooltip/TooltipMessage'; -export { TooltipNote } from './tooltip/TooltipNote'; -export { TooltipLinkList, type Link as TooltipLinkListLink } from './tooltip/TooltipLinkList'; -export { default as ListItem } from './tooltip/ListItem'; +export { WithTooltip, WithTooltipPure } from './components/tooltip/lazy-WithTooltip'; +export { TooltipMessage } from './components/tooltip/TooltipMessage'; +export { TooltipNote } from './components/tooltip/TooltipNote'; +export { + TooltipLinkList, + type Link as TooltipLinkListLink, +} from './components/tooltip/TooltipLinkList'; +export { default as ListItem } from './components/tooltip/ListItem'; // Toolbar and subcomponents -export { Tabs, TabsState, TabBar, TabWrapper } from './tabs/tabs'; -export { IconButton, IconButtonSkeleton, TabButton } from './bar/button'; -export { Separator, interleaveSeparators } from './bar/separator'; -export { Bar, FlexBar } from './bar/bar'; -export { AddonPanel } from './addon-panel/addon-panel'; +export { Tabs, TabsState, TabBar, TabWrapper } from './components/tabs/tabs'; +export { IconButton, IconButtonSkeleton, TabButton } from './components/bar/button'; +export { Separator, interleaveSeparators } from './components/bar/separator'; +export { Bar, FlexBar } from './components/bar/bar'; +export { AddonPanel } from './components/addon-panel/addon-panel'; // Graphics -export type { IconsProps } from './icon/icon'; -export { Icons, Symbols } from './icon/icon'; -export { icons } from './icon/icons'; -export { StorybookLogo } from './brand/StorybookLogo'; -export { StorybookIcon } from './brand/StorybookIcon'; +export type { IconsProps } from './components/icon/icon'; +export { Icons, Symbols } from './components/icon/icon'; +export { icons } from './components/icon/icons'; +export { StorybookLogo } from './components/brand/StorybookLogo'; +export { StorybookIcon } from './components/brand/StorybookIcon'; // Loader -export { Loader } from './Loader/Loader'; +export { Loader } from './components/Loader/Loader'; // Utils -export { getStoryHref } from './utils/getStoryHref'; +export { getStoryHref } from './components/utils/getStoryHref'; -export * from './typography/DocumentFormatting'; -export * from './typography/ResetWrapper'; +export * from './components/typography/DocumentFormatting'; +export * from './components/typography/ResetWrapper'; -export { withReset, codeCommon } from './typography/lib/common'; +export { withReset, codeCommon } from './components/typography/lib/common'; + +export { ClipboardCode } from './components/clipboard/ClipboardCode'; // eslint-disable-next-line prefer-destructuring export const components = typography.components; diff --git a/code/ui/components/src/syntaxhighlighter/lazy-syntaxhighlighter.tsx b/code/ui/components/src/syntaxhighlighter/lazy-syntaxhighlighter.tsx deleted file mode 100644 index 9ac7c5314e17..000000000000 --- a/code/ui/components/src/syntaxhighlighter/lazy-syntaxhighlighter.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import type { ComponentProps } from 'react'; -import React, { Suspense, lazy } from 'react'; - -const LazySyntaxHighlighter = lazy(() => import('./syntaxhighlighter')); -const LazySyntaxHighlighterWithFormatter = lazy(async () => { - const [{ SyntaxHighlighter }, { formatter }] = await Promise.all([ - import('./syntaxhighlighter'), - import('./formatter'), - ]); - - return { - default: (props: ComponentProps<typeof LazySyntaxHighlighter>) => ( - <SyntaxHighlighter {...props} formatter={formatter} /> - ), - }; -}); - -export const SyntaxHighlighter = (props: ComponentProps<typeof LazySyntaxHighlighter>) => ( - <Suspense fallback={<div />}> - {props.format !== false ? ( - <LazySyntaxHighlighterWithFormatter {...props} /> - ) : ( - <LazySyntaxHighlighter {...props} /> - )} - </Suspense> -); diff --git a/code/ui/components/src/tabs/tabs.helpers.tsx b/code/ui/components/src/tabs/tabs.helpers.tsx deleted file mode 100644 index b92d38733077..000000000000 --- a/code/ui/components/src/tabs/tabs.helpers.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { styled } from '@storybook/theming'; -import type { ReactElement } from 'react'; -import React, { Children } from 'react'; - -export interface VisuallyHiddenProps { - active?: boolean; -} - -export const VisuallyHidden = styled.div<VisuallyHiddenProps>(({ active }) => - active ? { display: 'block' } : { display: 'none' } -); - -export const childrenToList = (children: any, selected: string) => - Children.toArray(children).map( - ({ props: { title, id, color, children: childrenOfChild } }: ReactElement, index) => { - const content = Array.isArray(childrenOfChild) ? childrenOfChild[0] : childrenOfChild; - return { - active: selected ? id === selected : index === 0, - title, - id, - color, - render: - typeof content === 'function' - ? content - : ({ active, key }: any) => ( - <VisuallyHidden key={key} active={active} role="tabpanel"> - {content} - </VisuallyHidden> - ), - }; - } - ); - -export type ChildrenList = ReturnType<typeof childrenToList>; diff --git a/code/ui/components/tsconfig.json b/code/ui/components/tsconfig.json index 8ee47dbfcd6e..a2bea817d943 100644 --- a/code/ui/components/tsconfig.json +++ b/code/ui/components/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["react-syntax-highlighter", "jest", "testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 44a2e046bae8..a25ec1c37618 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "7.1.0-alpha.17", + "version": "7.4.0-alpha.2", "description": "Core Storybook UI", "keywords": [ "storybook" @@ -43,27 +43,26 @@ "static/**/*", "README.md", "*.js", - "*.d.ts" + "*.d.ts", + "!src/**/*" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/esm-bundle.ts" }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/addons": "7.1.0-alpha.17", - "@storybook/api": "7.1.0-alpha.17", - "@storybook/channel-postmessage": "7.1.0-alpha.17", - "@storybook/channel-websocket": "7.1.0-alpha.17", - "@storybook/channels": "7.1.0-alpha.17", - "@storybook/client-logger": "7.1.0-alpha.17", - "@storybook/components": "7.1.0-alpha.17", - "@storybook/core-events": "7.1.0-alpha.17", + "@storybook/addon-designs": "^7.0.4", + "@storybook/addons": "workspace:*", + "@storybook/channels": "workspace:*", + "@storybook/client-logger": "workspace:*", + "@storybook/components": "workspace:*", + "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-alpha.17", - "@storybook/router": "7.1.0-alpha.17", - "@storybook/theming": "7.1.0-alpha.17", - "@storybook/types": "7.1.0-alpha.17", + "@storybook/manager-api": "workspace:*", + "@storybook/router": "workspace:*", + "@storybook/theming": "workspace:*", + "@storybook/types": "workspace:*", "@testing-library/react": "^11.2.2", "@types/semver": "^7.3.4", "copy-to-clipboard": "^3.3.1", @@ -99,5 +98,5 @@ "./src/globals.ts" ] }, - "gitHead": "ff78058e6bf45bae42dff07e0c74cc73caabe855" + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/ui/manager/src/FakeProvider.tsx b/code/ui/manager/src/FakeProvider.tsx index 647e1ad81b06..e94773404356 100644 --- a/code/ui/manager/src/FakeProvider.tsx +++ b/code/ui/manager/src/FakeProvider.tsx @@ -12,6 +12,7 @@ export class FakeProvider extends Provider { // @ts-expect-error (Converted from ts-ignore) this.channel = { on: () => {}, + once: () => {}, off: () => {}, emit: () => {}, addListener: () => {}, diff --git a/code/ui/manager/src/app.stories.tsx b/code/ui/manager/src/app.stories.tsx index c213f64faabe..aef6a9133aa0 100644 --- a/code/ui/manager/src/app.stories.tsx +++ b/code/ui/manager/src/app.stories.tsx @@ -1,36 +1,51 @@ -import React from 'react'; +import React, { useEffect } from 'react'; -import type { API } from '@storybook/manager-api'; -import { Consumer, Provider as ManagerProvider } from '@storybook/manager-api'; -import { LocationProvider } from '@storybook/router'; +import { useStorybookApi, Provider as ManagerProvider } from '@storybook/manager-api'; +import { BaseLocationProvider } from '@storybook/router'; import { HelmetProvider } from 'react-helmet-async'; import { styled } from '@storybook/theming'; import App from './app'; -import { PrettyFakeProvider, FakeProvider } from './FakeProvider'; +import { FakeProvider, PrettyFakeProvider } from './FakeProvider'; export default { component: App, parameters: { layout: 'fullscreen', + theme: 'light', + viewport: { + viewports: { + tablet: { + name: 'Tablet', + styles: { + height: '1112px', + width: '834px', + }, + type: 'tablet', + }, + }, + defaultViewport: 'tablet', + defaultOrientation: 'landscape', + }, + chromatic: { viewports: [1112] }, }, decorators: [ (StoryFn: any) => ( <HelmetProvider key="helmet.Provider"> - <LocationProvider> - <ThemeStack> + <BaseLocationProvider location="/?path=/story/my-id" navigator={{} as any}> + <Background> <StoryFn /> - </ThemeStack> - </LocationProvider> + </Background> + </BaseLocationProvider> </HelmetProvider> ), ], }; -const ThemeStack = styled.div( +const Background = styled.div( { position: 'relative', - minHeight: '50vh', - height: '100%', + minHeight: '100vh', + height: '100vw', }, ({ theme }) => ({ background: theme.background.app, @@ -38,29 +53,34 @@ const ThemeStack = styled.div( }) ); -function setPreviewInitialized({ api }: { api: API }) { - api.setPreviewInitialized(); - return {}; +function SetPreviewInitialized(): JSX.Element { + const api = useStorybookApi(); + useEffect(() => { + api.setPreviewInitialized(); + }, [api]); + return null; } export const Default = () => { const provider = new FakeProvider(); + return ( <ManagerProvider key="manager" provider={provider} path="/story/ui-app--loading-state" + viewMode="story" storyId="ui-app--loading-state" location={{ search: '' }} navigate={() => {}} docsOptions={{ docsMode: false }} > - <Consumer filter={setPreviewInitialized}>{() => <></>}</Consumer> + <SetPreviewInitialized /> <App key="app" viewMode="story" layout={{ - initialActive: 'addons', + initialActive: 'sidebar', isFullscreen: false, showToolbar: true, panelPosition: 'right', @@ -68,6 +88,7 @@ export const Default = () => { showPanel: true, showTabs: true, }} + pages={[]} panelCount={0} /> </ManagerProvider> @@ -88,7 +109,7 @@ export const LoadingState = () => ( key="app" viewMode="story" layout={{ - initialActive: 'addons', + initialActive: 'sidebar', isFullscreen: false, showToolbar: true, panelPosition: 'right', @@ -96,7 +117,32 @@ export const LoadingState = () => ( showPanel: true, showTabs: true, }} + pages={[]} panelCount={0} /> </ManagerProvider> ); + +export const Dark = () => LoadingState(); +Dark.parameters = { + theme: 'dark', +}; +export const Mobile = () => LoadingState(); +Mobile.parameters = { + theme: 'light', + viewport: { + viewports: { + mobile1: { + name: 'Small mobile', + styles: { + height: '568px', + width: '320px', + }, + type: 'mobile', + }, + }, + defaultViewport: 'mobile1', + defaultOrientation: 'portrait', + }, + chromatic: { viewports: [320] }, +}; diff --git a/code/ui/manager/src/app.tsx b/code/ui/manager/src/app.tsx index 3935126f4674..607661b56a28 100644 --- a/code/ui/manager/src/app.tsx +++ b/code/ui/manager/src/app.tsx @@ -1,12 +1,11 @@ -import type { FC } from 'react'; import React, { useMemo } from 'react'; import { useResizeDetector } from 'react-resize-detector'; import { type State } from '@storybook/manager-api'; import { Symbols } from '@storybook/components'; -import { Route } from '@storybook/router'; import { Global, createGlobal, styled } from '@storybook/theming'; +import type { Addon_PageType } from '@storybook/types'; import { Mobile } from './components/layout/mobile'; import { Desktop } from './components/layout/desktop'; import Sidebar from './containers/sidebar'; @@ -14,8 +13,6 @@ import Preview from './containers/preview'; import Panel from './containers/panel'; import Notifications from './containers/notifications'; -import SettingsPages from './settings'; - const View = styled.div({ position: 'fixed', overflow: 'hidden', @@ -27,9 +24,10 @@ export interface AppProps { viewMode: State['viewMode']; layout: State['layout']; panelCount: number; + pages: Addon_PageType[]; } -const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { +const App: React.FC<AppProps> = ({ viewMode, layout, panelCount, pages }) => { const { width, height, ref } = useResizeDetector(); let content; @@ -39,17 +37,6 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { Preview, Panel, Notifications, - pages: [ - { - key: 'settings', - render: () => <SettingsPages />, - route: (({ children }) => ( - <Route path="/settings/" startsWith> - {children} - </Route> - )) as FC, - }, - ], }), [] ); @@ -57,7 +44,7 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { if (!width || !height) { content = <div />; } else if (width < 600) { - content = <Mobile {...props} viewMode={viewMode} options={layout} />; + content = <Mobile {...props} viewMode={viewMode} options={layout} pages={pages} />; } else { content = ( <Desktop @@ -67,6 +54,7 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { width={width} height={height} panelCount={panelCount} + pages={pages} /> ); } diff --git a/code/ui/manager/src/components/layout/app.mockdata.tsx b/code/ui/manager/src/components/layout/app.mockdata.tsx index fc87fd64d17e..f41596303ed7 100644 --- a/code/ui/manager/src/components/layout/app.mockdata.tsx +++ b/code/ui/manager/src/components/layout/app.mockdata.tsx @@ -2,7 +2,8 @@ import { global } from '@storybook/global'; import type { FC } from 'react'; import React, { Component } from 'react'; import { styled } from '@storybook/theming'; -import type { Addon_Collection } from '@storybook/types'; +import type { Addon_BaseType, Addon_Collection } from '@storybook/types'; +import { Addon_TypesEnum } from '@storybook/types'; import type { State } from '@storybook/manager-api'; import type { SidebarProps } from '../sidebar/Sidebar'; import { Sidebar } from '../sidebar/Sidebar'; @@ -37,24 +38,16 @@ export const shortcuts: State['shortcuts'] = { remount: ['alt', 'R'], }; -export const panels: Addon_Collection = { +export const panels: Addon_Collection<Addon_BaseType> = { test1: { title: 'Test 1', - render: ({ active, key }) => - active ? ( - <div id="test1" key={key}> - TEST 1 - </div> - ) : null, + type: Addon_TypesEnum.PANEL, + render: ({ active }) => (active ? <div id="test1">TEST 1</div> : null), }, test2: { title: 'Test 2', - render: ({ active, key }) => - active ? ( - <div id="test2" key={key}> - TEST 2 - </div> - ) : null, + type: Addon_TypesEnum.PANEL, + render: ({ active }) => (active ? <div id="test2">TEST 2</div> : null), }, }; @@ -62,7 +55,9 @@ const realSidebarProps: SidebarProps = { index: mockDataset.withRoot as SidebarProps['index'], menu: [], refs: {}, + status: {}, previewInitialized: true, + extra: [], }; const PlaceholderBlock = styled.div(({ color }) => ({ @@ -105,6 +100,7 @@ class PlaceholderClock extends Component<{ color: string }, { count: number }> { return ( <PlaceholderBlock color={color}> <h2 + data-chromatic="ignore" style={{ position: 'absolute', bottom: 0, @@ -161,8 +157,8 @@ export const mockProps: DesktopProps = { }, viewMode: 'story', panelCount: 2, - width: 900, - height: 600, + width: 1112, + height: 834, }; export const realProps: DesktopProps = { diff --git a/code/ui/manager/src/components/layout/desktop.stories.tsx b/code/ui/manager/src/components/layout/desktop.stories.tsx index ae70cbc0da1a..780a844d6a31 100644 --- a/code/ui/manager/src/components/layout/desktop.stories.tsx +++ b/code/ui/manager/src/components/layout/desktop.stories.tsx @@ -1,8 +1,10 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import type { DecoratorFn } from '@storybook/react'; import isChromatic from 'chromatic/isChromatic'; +import { BaseLocationProvider } from '@storybook/router'; +import { types } from '@storybook/manager-api'; import type { DesktopProps } from './desktop'; import { Desktop } from './desktop'; @@ -12,7 +14,27 @@ import { mockProps, realProps, MockPage } from './app.mockdata'; export default { title: 'Layout/Desktop', component: Desktop, - parameters: { passArgsFirst: false }, + parameters: { + passArgsFirst: false, + path: 'story/my-id', + layout: 'fullscreen', + viewport: { + viewports: { + tablet: { + name: 'Tablet', + styles: { + height: '1112px', + width: '834px', + }, + type: 'tablet', + }, + }, + defaultViewport: 'tablet', + defaultOrientation: 'landscape', + }, + theme: 'light', + chromatic: { viewports: [1112] }, + }, decorators: [ ((StoryFn, c) => { const mocked = true; @@ -24,9 +46,11 @@ export default { const props = mocked ? mockProps : realProps; return ( - <div style={{ minHeight: 900, minWidth: 1200 }}> - <StoryFn props={props} {...c} />; - </div> + <BaseLocationProvider location={`/?path=/${c.parameters.path}`} navigator={{} as any}> + <div style={{ height: '100vh', width: '100vw', position: 'absolute', top: 0, left: 0 }}> + <StoryFn props={props} {...c} /> + </div> + </BaseLocationProvider> ); }) as DecoratorFn, ], @@ -56,11 +80,13 @@ export const Page = ({ props }: { props: DesktopProps }) => ( {...props} pages={[ { - key: 'settings', - route: ({ children }) => <Fragment>{children}</Fragment>, + id: '/settings/', + title: 'Settings', + url: '/settings/', + type: types.experimental_PAGE, render: () => <MockPage />, }, ]} - viewMode="settings" /> ); +Page.parameters = { path: '/settings/' }; diff --git a/code/ui/manager/src/components/layout/desktop.tsx b/code/ui/manager/src/components/layout/desktop.tsx index 2ff78c25d149..2004f3817ef5 100644 --- a/code/ui/manager/src/components/layout/desktop.tsx +++ b/code/ui/manager/src/components/layout/desktop.tsx @@ -1,7 +1,9 @@ -import type { ComponentType, FC } from 'react'; +import type { ComponentType } from 'react'; import React, { Fragment } from 'react'; import type { State } from '@storybook/manager-api'; +import { Route } from '@storybook/router'; +import type { Addon_PageType } from '@storybook/types'; import * as S from './container'; export interface DesktopProps { @@ -12,11 +14,7 @@ export interface DesktopProps { Preview: ComponentType<any>; Panel: ComponentType<any>; Notifications: ComponentType<any>; - pages: { - key: string; - route: FC; - render: ComponentType; - }[]; + pages: Addon_PageType[]; options: State['layout']; viewMode: string; } @@ -56,18 +54,22 @@ const Desktop = Object.assign( <Sidebar /> </S.Sidebar> <S.Main {...mainProps} isFullscreen={!!mainProps.isFullscreen}> - <S.Preview {...previewProps} hidden={viewMode === 'settings'}> - <Preview id="main" /> - </S.Preview> + <Route path={/(^\/story|docs|onboarding\/|^\/$)/} hideOnly> + <S.Preview {...previewProps} hidden={false}> + <Preview id="main" /> + </S.Preview> - <S.Panel {...panelProps} hidden={viewMode !== 'story'}> - <Panel /> - </S.Panel> + <Route path="/story/" startsWith hideOnly> + <S.Panel {...panelProps} hidden={false}> + <Panel /> + </S.Panel> + </Route> + </Route> - {pages.map(({ key, route: Route, render: Content }) => ( - <Route key={key}> + {pages.map(({ id, render: Content }) => ( + <Fragment key={id}> <Content /> - </Route> + </Fragment> ))} </S.Main> </Fragment> diff --git a/code/ui/manager/src/components/layout/mobile.stories.tsx b/code/ui/manager/src/components/layout/mobile.stories.tsx index e1a1942a7c62..2e9966d6e8fc 100644 --- a/code/ui/manager/src/components/layout/mobile.stories.tsx +++ b/code/ui/manager/src/components/layout/mobile.stories.tsx @@ -1,7 +1,9 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import { ActiveTabs } from '@storybook/manager-api'; import type { DecoratorFn } from '@storybook/react'; +import { BaseLocationProvider } from '@storybook/router'; +import { Addon_TypesEnum } from '@storybook/types'; import type { MobileProps } from './mobile'; import { Mobile } from './mobile'; @@ -10,16 +12,40 @@ import { mockProps, realProps, MockPage } from './app.mockdata'; export default { title: 'Layout/Mobile', component: Mobile, - parameters: { passArgsFirst: false }, + parameters: { + passArgsFirst: false, + path: 'story/my-id', + layout: 'fullscreen', + viewport: { + viewports: { + mobile1: { + name: 'Small mobile', + styles: { + height: '568px', + width: '320px', + }, + type: 'mobile', + }, + }, + defaultViewport: 'mobile1', + defaultOrientation: 'portrait', + }, + theme: 'light', + chromatic: { viewports: [320] }, + }, decorators: [ - ((storyFn, c) => { + ((StoryFn, c) => { const mocked = true; - const props = { - ...(mocked ? mockProps : realProps), - }; + const props = mocked ? mockProps : realProps; - return storyFn({ props, ...c }); + return ( + <BaseLocationProvider location={`/?path=/${c.parameters.path}`} navigator={{} as any}> + <div style={{ height: '100vh', width: '100vw', position: 'absolute', top: 0, left: 0 }}> + <StoryFn props={props} {...c} /> + </div> + </BaseLocationProvider> + ); }) as DecoratorFn, ], }; @@ -50,11 +76,16 @@ export const Page = ({ props }: { props: MobileProps }) => ( options={{ ...props.options, initialActive: ActiveTabs.CANVAS }} pages={[ { - key: 'settings', - route: ({ children }) => <Fragment>{children}</Fragment>, + id: 'settings', + url: '/settings', + title: 'Settings', + type: Addon_TypesEnum.experimental_PAGE, render: () => <MockPage />, }, ]} viewMode="settings" /> ); +Page.parameters = { + path: '/settings/', +}; diff --git a/code/ui/manager/src/components/layout/mobile.tsx b/code/ui/manager/src/components/layout/mobile.tsx index 6b14ebad793b..2f2ef7d1e31c 100644 --- a/code/ui/manager/src/components/layout/mobile.tsx +++ b/code/ui/manager/src/components/layout/mobile.tsx @@ -1,9 +1,11 @@ import type { ComponentType, FC, ReactNode } from 'react'; -import React, { Component, Children } from 'react'; -import { type State, ActiveTabs } from '@storybook/manager-api'; +import React, { Fragment, Children, useCallback, useState } from 'react'; +import { type State, ActiveTabs, useStorybookApi } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { TabButton } from '@storybook/components'; +import { Location } from '@storybook/router'; +import type { Addon_PageType } from '@storybook/types'; import { Root } from './Root'; export type ActiveTabsType = 'sidebar' | 'canvas' | 'addons'; @@ -127,12 +129,6 @@ const Bar = styled.nav( }) ); -export interface Page { - key: string; - route: FC; - render: FC; -} - export interface MobileProps { options: Pick<State['layout'], 'isFullscreen' | 'showPanel' | 'initialActive' | 'showToolbar'>; Sidebar: ComponentType<any>; @@ -140,79 +136,107 @@ export interface MobileProps { Panel: ComponentType<any>; Notifications: ComponentType<any>; viewMode: State['viewMode']; - pages: Page[]; + pages: Addon_PageType[]; } export interface MobileState { active: ActiveTabsType; } -class Mobile extends Component<MobileProps, MobileState> { - constructor(props: MobileProps) { - super(props); - - const { options } = props; - this.state = { - active: options.isFullscreen ? CANVAS : options.initialActive || SIDEBAR, - }; - } - - render() { - const { Sidebar, Preview, Panel, Notifications, pages, viewMode, options } = this.props; - - const { active } = this.state; - return ( - <Root> - <Notifications - placement={{ - position: 'fixed', - bottom: 60, - left: 20, - right: 20, - }} - /> - - <Panels active={active} isFullscreen={options.isFullscreen}> - <Sidebar /> - <div> - <div hidden={!viewMode}> - <Preview showToolbar={options.showToolbar} id="main" viewMode={viewMode} /> - </div> - {pages.map(({ key, route: Route, render: Content }) => ( - <Route key={key}> - <Content /> - </Route> - ))} +export const Mobile = ({ + Sidebar, + Preview, + Panel, + Notifications, + pages, + viewMode, + options, +}: MobileProps) => { + const [{ active }, setState] = useState({ + active: options.isFullscreen ? CANVAS : options.initialActive || SIDEBAR, + }); + const api = useStorybookApi(); + const handleCanvasClick = useCallback(() => { + setState({ active: CANVAS }); + const id = api.retrieveSelection(); + if (id) { + api.selectStory(id); + } else { + api.selectFirstStory(); + } + }, []); + + const handleSideBarClick = useCallback(() => { + setState({ active: SIDEBAR }); + const id = api.retrieveSelection(); + if (id) { + api.selectStory(id); + } else { + api.selectFirstStory(); + } + }, []); + + return ( + <Root> + <Notifications + placement={{ + position: 'fixed', + bottom: 60, + left: 20, + right: 20, + }} + /> + + <Panels active={active} isFullscreen={options.isFullscreen}> + <Sidebar /> + <div> + <div hidden={viewMode !== 'docs' && viewMode !== 'story'}> + <Preview showToolbar={options.showToolbar} id="main" viewMode={viewMode} /> </div> - <Panel hidden={!viewMode} /> - </Panels> - {!options.isFullscreen && ( - <Bar> - <TabButton - onClick={() => this.setState({ active: SIDEBAR })} - active={active === SIDEBAR} - > - Sidebar - </TabButton> - <TabButton onClick={() => this.setState({ active: CANVAS })} active={active === CANVAS}> - {viewMode ? 'Canvas' : null} - {pages.map(({ key, route: Route }) => ( - <Route key={key}>{key}</Route> - ))} + {pages.map(({ id, render: Content }) => ( + <Fragment key={id}> + <Content /> + </Fragment> + ))} + </div> + <Panel hidden={viewMode !== 'story'} /> + </Panels> + {!options.isFullscreen && ( + <Bar> + <TabButton onClick={handleSideBarClick} active={active === SIDEBAR}> + Sidebar + </TabButton> + <TabButton + onClick={handleCanvasClick} + active={active === CANVAS && (viewMode === 'docs' || viewMode === 'story')} + > + Canvas + </TabButton> + <Location> + {({ path }) => ( + <> + {pages.map(({ id, title, url }) => ( + <TabButton + key={id} + onClick={() => { + setState({ active: CANVAS }); + api.navigateUrl(url, { plain: false }); + }} + active={active === CANVAS && path.startsWith(url)} + > + {title} + </TabButton> + ))} + </> + )} + </Location> + {viewMode === 'story' && options.showPanel ? ( + <TabButton onClick={() => setState({ active: ADDONS })} active={active === ADDONS}> + Addons </TabButton> - {viewMode && options.showPanel ? ( - <TabButton - onClick={() => this.setState({ active: ADDONS })} - active={active === ADDONS} - > - Addons - </TabButton> - ) : null} - </Bar> - )} - </Root> - ); - } -} - -export { Mobile }; + ) : null} + </Bar> + )} + </Root> + ); +}; diff --git a/code/ui/manager/src/components/notifications/NotificationItem.tsx b/code/ui/manager/src/components/notifications/NotificationItem.tsx index 48bb989b985d..b2c90a6a0403 100644 --- a/code/ui/manager/src/components/notifications/NotificationItem.tsx +++ b/code/ui/manager/src/components/notifications/NotificationItem.tsx @@ -2,12 +2,10 @@ import type { FC, SyntheticEvent } from 'react'; import React from 'react'; import { type State } from '@storybook/manager-api'; import { Link } from '@storybook/router'; -import { styled } from '@storybook/theming'; +import { styled, useTheme } from '@storybook/theming'; import { Icons, IconButton, type IconsProps } from '@storybook/components'; import { transparentize } from 'polished'; -const DEFAULT_ICON_COLOUR = '#66BF3C' as const; - const Notification = styled.div(({ theme }) => ({ position: 'relative', display: 'flex', @@ -76,26 +74,30 @@ const SubHeadline = styled.div(({ theme }) => ({ const ItemContent: FC<Pick<State['notifications'][0], 'icon' | 'content'>> = ({ icon, content: { headline, subHeadline }, -}) => ( - <> - {!icon || ( - <NotificationIconWrapper> - <Icons - icon={icon.name as IconsProps['icon']} - width={16} - height={16} - color={icon.color || DEFAULT_ICON_COLOUR} - /> - </NotificationIconWrapper> - )} - <NotificationTextWrapper> - <Headline title={headline} hasIcon={!!icon}> - {headline} - </Headline> - {subHeadline && <SubHeadline>{subHeadline}</SubHeadline>} - </NotificationTextWrapper> - </> -); +}) => { + const theme = useTheme(); + const defaultColor = theme.base === 'dark' ? theme.color.mediumdark : theme.color.mediumlight; + return ( + <> + {!icon || ( + <NotificationIconWrapper> + <Icons + icon={icon.name as IconsProps['icon']} + width={16} + height={16} + color={icon.color || defaultColor} + /> + </NotificationIconWrapper> + )} + <NotificationTextWrapper> + <Headline title={headline} hasIcon={!!icon}> + {headline} + </Headline> + {subHeadline && <SubHeadline>{subHeadline}</SubHeadline>} + </NotificationTextWrapper> + </> + ); +}; const DismissButtonWrapper = styled(IconButton)(({ theme }) => ({ alignSelf: 'center', @@ -128,7 +130,7 @@ const NotificationItem: FC<{ const dismissNotificationItem = () => { onDismissNotification(id); if (onClear) { - onClear(); + onClear({ dismissed: true }); } }; return link ? ( diff --git a/code/ui/manager/src/components/panel/panel.stories.tsx b/code/ui/manager/src/components/panel/panel.stories.tsx index 75a66c60942d..f3f523f29c65 100644 --- a/code/ui/manager/src/components/panel/panel.stories.tsx +++ b/code/ui/manager/src/components/panel/panel.stories.tsx @@ -1,5 +1,7 @@ -import React, { useState } from 'react'; +import React, { useCallback, useRef, useState } from 'react'; import { action } from '@storybook/addon-actions'; +import { Badge, Icons, Spaced } from '@storybook/components'; +import { Addon_TypesEnum } from '@storybook/types'; import Panel from './panel'; import { panels, shortcuts } from '../layout/app.mockdata'; @@ -25,6 +27,100 @@ export const Default = () => { ); }; +export const JSXTitles = () => { + const [selectedPanel, setSelectedPanel] = useState('function-string'); + return ( + <Panel + absolute={false} + panels={{ + 'function-string': { + type: Addon_TypesEnum.PANEL, + title: () => 'Test 1', + render: ({ active }) => (active ? <div id="test1">TEST as string</div> : null), + }, + 'function-jsx': { + type: Addon_TypesEnum.PANEL, + title: () => ( + <div> + <Spaced col={1}> + <div style={{ display: 'inline-block', verticalAlign: 'middle' }}>Test 1</div> + <Badge status="critical">4</Badge> + </Spaced> + </div> + ), + render: ({ active }) => (active ? <div id="test1">TEST with label</div> : null), + }, + 'function-jsx-icon': { + type: Addon_TypesEnum.PANEL, + title: () => ( + <div> + <Spaced col={1}> + <div style={{ display: 'inline-block', verticalAlign: 'middle' }}>Alert!</div> + <Icons icon="bell" /> + </Spaced> + </div> + ), + render: ({ active }) => (active ? <div id="test1">TEST with label</div> : null), + }, + 'function-jsx-state': { + type: Addon_TypesEnum.PANEL, + title: () => { + const MAX = 10; + const [count, setCount] = useState(0); + const timer = useRef(null); + + const startTimer = useCallback((event) => { + event.stopPropagation(); + if (timer.current) { + return; + } + timer.current = setInterval(() => { + setCount((c) => { + if (c === MAX) { + clearInterval(timer.current); + timer.current = null; + return c; + } + return c + 1; + }); + }, 1000); + }, []); + const stopTimer = useCallback((event) => { + event.stopPropagation(); + if (timer.current) { + clearInterval(timer.current); + timer.current = null; + } + }, []); + + return ( + <div + onMouseEnter={startTimer} + onMouseLeave={stopTimer} + onBlur={stopTimer} + tabIndex={-1} + > + <Spaced col={1}> + <div style={{ display: 'inline-block' }}>Hover over me!</div> + {count ? ( + <Badge status={count > 8 ? 'critical' : 'warning'}>{count}</Badge> + ) : null} + </Spaced> + </div> + ); + }, + render: ({ active }) => { + return active ? <div id="test1">TEST with timer</div> : null; + }, + }, + }} + actions={{ onSelect: setSelectedPanel, toggleVisibility, togglePosition }} + selectedPanel={selectedPanel} + shortcuts={shortcuts} + /> + ); +}; + export const NoPanels = () => ( <Panel panels={{}} diff --git a/code/ui/manager/src/components/panel/panel.tsx b/code/ui/manager/src/components/panel/panel.tsx index 6519ee9d9219..6abcce50f0e9 100644 --- a/code/ui/manager/src/components/panel/panel.tsx +++ b/code/ui/manager/src/components/panel/panel.tsx @@ -1,20 +1,16 @@ -import type { ReactElement } from 'react'; import React, { Component, Fragment } from 'react'; import { Tabs, Icons, IconButton } from '@storybook/components'; import type { State } from '@storybook/manager-api'; import { shortcutToHumanString } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; import useMediaQuery from '../hooks/useMedia'; export interface SafeTabProps { - title: (() => string) | string; + title: Addon_BaseType['title']; id: string; - children: ReactElement; + children: Addon_BaseType['render']; } -const SafeTabContent = React.memo<SafeTabProps>(function SafeTabContent({ children }) { - return children; -}); - class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { constructor(props: SafeTabProps) { super(props); @@ -29,22 +25,18 @@ class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { render() { const { hasError } = this.state; - const { children, title, id } = this.props; + const { children } = this.props; if (hasError) { return <h1>Something went wrong.</h1>; } - return ( - <SafeTabContent id={id} title={title}> - {children} - </SafeTabContent> - ); + return children; } } const AddonPanel = React.memo<{ selectedPanel?: string; actions: { onSelect: (id: string) => void } & Record<string, any>; - panels: Record<string, any>; + panels: Record<string, Addon_BaseType>; shortcuts: State['shortcuts']; panelPosition?: 'bottom' | 'right'; absolute?: boolean; @@ -89,7 +81,7 @@ const AddonPanel = React.memo<{ id="storybook-panel-root" > {Object.entries(panels).map(([k, v]) => ( - <SafeTab key={k} id={k} title={typeof v.title === 'function' ? v.title() : v.title}> + <SafeTab key={k} id={k} title={typeof v.title === 'function' ? <v.title /> : v.title}> {v.render} </SafeTab> ))} diff --git a/code/ui/manager/src/components/preview/iframe.stories.tsx b/code/ui/manager/src/components/preview/iframe.stories.tsx index 4c4efe5853fb..5b9e9f65946c 100644 --- a/code/ui/manager/src/components/preview/iframe.stories.tsx +++ b/code/ui/manager/src/components/preview/iframe.stories.tsx @@ -6,13 +6,28 @@ import { IFrame } from './iframe'; export default { component: IFrame, title: 'Iframe', + parameters: { + layout: 'fullscreen', + viewport: { + defaultViewport: 'sized', + viewports: { + sized: { + name: 'Sized', + styles: { + width: '700px', + height: '700px', + }, + }, + }, + }, + theme: 'light', + chromatic: { viewports: [700] }, + }, }; const style: CSSProperties = { maxWidth: '700px', - height: '500px', - border: '2px solid hotpink', - position: 'relative', + height: '700px', }; export const WorkingStory = () => ( @@ -20,7 +35,7 @@ export const WorkingStory = () => ( active id="iframe" title="Missing" - src="/iframe.html?id=ui-panel--default" + src="/iframe.html?id=storybook-components-loader--infinite-state" allowFullScreen style={style} scale={1.0} diff --git a/code/ui/manager/src/components/preview/iframe.tsx b/code/ui/manager/src/components/preview/iframe.tsx index 65e84ae2ee7e..58b0c8c0dc8f 100644 --- a/code/ui/manager/src/components/preview/iframe.tsx +++ b/code/ui/manager/src/components/preview/iframe.tsx @@ -11,7 +11,7 @@ const StyledIframe = styled.iframe({ height: '100%', width: '100%', border: '0 none', - transition: 'all .3s, background-position 0s, visibility 0s', + transition: 'background-position 0s, visibility 0s', backgroundPosition: '-1px -1px, -1px -1px, -1px -1px, -1px -1px', }); diff --git a/code/ui/manager/src/components/preview/preview.mockdata.tsx b/code/ui/manager/src/components/preview/preview.mockdata.tsx index f466b170deec..3129c92bbc72 100644 --- a/code/ui/manager/src/components/preview/preview.mockdata.tsx +++ b/code/ui/manager/src/components/preview/preview.mockdata.tsx @@ -1,28 +1,29 @@ import { types } from '@storybook/manager-api'; -import type { API, State, Addon } from '@storybook/manager-api'; +import type { API, State } from '@storybook/manager-api'; +import type { Addon_BaseType, Addon_Collection } from '@storybook/types'; import type { PreviewProps } from './utils/types'; +const addonNotes: Addon_BaseType = { + id: 'notes', + type: types.TAB, + title: 'Notes', + route: ({ storyId }) => `/info/${storyId}`, + match: ({ viewMode }) => viewMode === 'info', + render: () => null, +}; + +const mockAPI: Partial<API> = { + on: (a, b) => () => {}, + emit: () => {}, + off: () => {}, + getElements: (type) => + type === types.TAB ? ({ notes: addonNotes } as Addon_Collection<any>) : {}, +}; + export const previewProps: PreviewProps = { id: 'string', storyId: 'story--id', - api: { - on: () => {}, - emit: () => {}, - off: () => {}, - getElements: ((type) => - type === types.TAB - ? [ - { - id: 'notes', - type: types.TAB, - title: 'Notes', - route: ({ storyId }) => `/info/${storyId}`, - match: ({ viewMode }) => viewMode === 'info', - render: () => null, - } as Addon, - ] - : []) as API['getElements'], - } as any as API, + api: mockAPI as API, entry: { tags: [], type: 'story', diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index 9d01ed28eaf5..57572a3949dd 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -1,16 +1,10 @@ +import type { FC } from 'react'; import React, { Fragment, useMemo, useEffect, useRef, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { global } from '@storybook/global'; -import { - type API, - Consumer, - type Combo, - merge, - addons, - types, - type Addon, -} from '@storybook/manager-api'; +import { type API, Consumer, type Combo, merge, addons, types } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; import { PREVIEW_BUILDER_PROGRESS, SET_CURRENT_STORY } from '@storybook/core-events'; import { Loader } from '@storybook/components'; @@ -26,8 +20,8 @@ import type { PreviewProps } from './utils/types'; const { FEATURES } = global; -const getWrappers = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.PREVIEW)); -const getTabs = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.TAB)); +const getWrappers = (getFn: API['getElements']) => Object.values(getFn(types.PREVIEW)); +const getTabs = (getFn: API['getElements']) => Object.values(getFn(types.TAB)); const canvasMapper = ({ state, api }: Combo) => ({ storyId: state.storyId, @@ -42,117 +36,26 @@ const canvasMapper = ({ state, api }: Combo) => ({ active: !!(state.viewMode && state.viewMode.match(/^(story|docs)$/)), }); -const createCanvas = (id: string, baseUrl = 'iframe.html', withLoader = true): Addon => ({ +const createCanvasTab = (): Addon_BaseType => ({ id: 'canvas', + type: types.TAB, title: 'Canvas', route: ({ storyId, refId }) => (refId ? `/story/${refId}_${storyId}` : `/story/${storyId}`), match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), - render: () => { - return ( - <Consumer filter={canvasMapper}> - {({ - entry, - refs, - customCanvas, - storyId, - refId, - viewMode, - queryParams, - getElements, - previewInitialized, - active, - }) => { - const wrappers = useMemo( - () => [...defaultWrappers, ...getWrappers(getElements)], - [getElements, ...defaultWrappers] - ); - - const [progress, setProgress] = useState(undefined); - useEffect(() => { - if (FEATURES?.storyStoreV7 && global.CONFIG_TYPE === 'DEVELOPMENT') { - try { - const channel = addons.getServerChannel(); - - channel.on(PREVIEW_BUILDER_PROGRESS, (options) => { - setProgress(options); - }); - } catch { - // - } - } - }, []); - // A ref simply depends on its readiness - const refLoading = !!refs[refId] && !refs[refId].previewInitialized; - // The root also might need to wait on webpack - const isBuilding = !(progress?.value === 1 || progress === undefined); - const rootLoading = !refId && (!previewInitialized || isBuilding); - const isLoading = entry ? refLoading || rootLoading : rootLoading; - - return ( - <ZoomConsumer> - {({ value: scale }) => { - return ( - <> - {withLoader && isLoading && ( - <S.LoaderWrapper> - <Loader id="preview-loader" role="progressbar" progress={progress} /> - </S.LoaderWrapper> - )} - <ApplyWrappers - id={id} - storyId={storyId} - viewMode={viewMode} - active={active} - wrappers={wrappers} - > - {customCanvas ? ( - customCanvas(storyId, viewMode, id, baseUrl, scale, queryParams) - ) : ( - <FramesRenderer - baseUrl={baseUrl} - refs={refs} - scale={scale} - entry={entry} - viewMode={viewMode} - refId={refId} - queryParams={queryParams} - storyId={storyId} - /> - )} - </ApplyWrappers> - </> - ); - }} - </ZoomConsumer> - ); - }} - </Consumer> - ); - }, + render: () => null, }); -const useTabs = ( - id: PreviewProps['id'], - baseUrl: PreviewProps['baseUrl'], - withLoader: PreviewProps['withLoader'], - getElements: API['getElements'], - entry: PreviewProps['entry'] -) => { - const canvas = useMemo(() => { - return createCanvas(id, baseUrl, withLoader); - }, [id, baseUrl, withLoader]); - - const tabsFromConfig = useMemo(() => { - return getTabs(getElements); - }, [getElements]); +const useTabs = (getElements: API['getElements'], entry: PreviewProps['entry']) => { + const canvasTab = useMemo(() => createCanvasTab(), []); + const tabsFromConfig = useMemo(() => getTabs(getElements), [getElements]); return useMemo(() => { if (entry?.type === 'story' && entry.parameters) { - return filterTabs([canvas, ...tabsFromConfig], entry.parameters); + return filterTabs([canvasTab, ...tabsFromConfig], entry.parameters); } - return [canvas, ...tabsFromConfig]; - }, [entry, canvas, ...tabsFromConfig]); + return [canvasTab, ...tabsFromConfig]; + }, [entry, ...tabsFromConfig]); }; const Preview = React.memo<PreviewProps>(function Preview(props) { @@ -169,7 +72,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { } = props; const { getElements } = api; - const tabs = useTabs(previewId, baseUrl, withLoader, getElements, entry); + const tabs = useTabs(getElements, entry); const shouldScale = viewMode === 'story'; const { showToolbar, showTabs = true } = options; @@ -211,6 +114,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { tabs={visibleTabsInToolbar} /> <S.FrameWrap key="frame" offset={showToolbar ? 40 : 0}> + <Canvas {...{ withLoader, baseUrl }} /> {tabs.map(({ render: Render, match, ...t }, i) => { // @ts-expect-error (Converted from ts-ignore) const key = t.id || t.key || i; @@ -228,7 +132,94 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { export { Preview }; -function filterTabs(panels: Addon[], parameters: Record<string, any>) { +const Canvas: FC<{ withLoader: boolean; baseUrl: string; children?: never }> = ({ + baseUrl, + withLoader, +}) => { + return ( + <Consumer filter={canvasMapper}> + {({ + entry, + refs, + customCanvas, + storyId, + refId, + viewMode, + queryParams, + getElements, + previewInitialized, + active, + }) => { + const id = 'canvas'; + const wrappers = useMemo( + () => [...defaultWrappers, ...getWrappers(getElements)], + [getElements, ...defaultWrappers] + ); + + const [progress, setProgress] = useState(undefined); + useEffect(() => { + if (FEATURES?.storyStoreV7 && global.CONFIG_TYPE === 'DEVELOPMENT') { + try { + const channel = addons.getServerChannel(); + + channel.on(PREVIEW_BUILDER_PROGRESS, (options) => { + setProgress(options); + }); + } catch { + // + } + } + }, []); + // A ref simply depends on its readiness + const refLoading = !!refs[refId] && !refs[refId].previewInitialized; + // The root also might need to wait on webpack + const isBuilding = !(progress?.value === 1 || progress === undefined); + const rootLoading = !refId && (!previewInitialized || isBuilding); + const isLoading = entry ? refLoading || rootLoading : rootLoading; + + return ( + <ZoomConsumer> + {({ value: scale }) => { + return ( + <> + {withLoader && isLoading && ( + <S.LoaderWrapper> + <Loader id="preview-loader" role="progressbar" progress={progress} /> + </S.LoaderWrapper> + )} + <ApplyWrappers + id={id} + storyId={storyId} + viewMode={viewMode} + active={active} + wrappers={wrappers} + > + {customCanvas ? ( + customCanvas(storyId, viewMode, id, baseUrl, scale, queryParams) + ) : ( + <FramesRenderer + baseUrl={baseUrl} + refs={refs} + scale={scale} + entry={entry} + viewMode={viewMode} + refId={refId} + queryParams={queryParams} + storyId={storyId} + /> + )} + </ApplyWrappers> + </> + ); + }} + </ZoomConsumer> + ); + }} + </Consumer> + ); +}; + +function filterTabs(panels: Addon_BaseType[], parameters: Record<string, any>) { const { previewTabs } = addons.getConfig(); const parametersTabs = parameters ? parameters.previewTabs : undefined; @@ -245,7 +236,7 @@ function filterTabs(panels: Addon[], parameters: Record<string, any>) { const t = arrTabs.find((tab) => tab.id === panel.id); return t === undefined || t.id === 'canvas' || !t.hidden; }) - .map((panel, index) => ({ ...panel, index } as Addon)) + .map((panel, index) => ({ ...panel, index } as Addon_BaseType)) .sort((p1, p2) => { /* eslint-disable @typescript-eslint/naming-convention */ const tab_1 = arrTabs.find((tab) => tab.id === p1.id); @@ -265,7 +256,7 @@ function filterTabs(panels: Addon[], parameters: Record<string, any>) { title: t.title || panel.title, disabled: t.disabled, hidden: t.hidden, - } as Addon; + } as Addon_BaseType; } return panel; }); diff --git a/code/ui/manager/src/components/preview/toolbar.tsx b/code/ui/manager/src/components/preview/toolbar.tsx index 454ee5d1f4f0..b82e5cb2eb38 100644 --- a/code/ui/manager/src/components/preview/toolbar.tsx +++ b/code/ui/manager/src/components/preview/toolbar.tsx @@ -13,11 +13,11 @@ import { merge, type LeafEntry, addons, - type Addon, types, } from '@storybook/manager-api'; import { Location, type RenderData } from '@storybook/router'; +import type { Addon_BaseType } from '@storybook/types'; import { zoomTool } from './tools/zoom'; import * as S from './utils/components'; @@ -29,10 +29,8 @@ import { menuTool } from './tools/menu'; import { addonsTool } from './tools/addons'; import { remountTool } from './tools/remount'; -export const getTools = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.TOOL)); - -export const getToolsExtra = (getFn: API['getElements']) => - Object.values(getFn<Addon>(types.TOOLEXTRA)); +export const getTools = (getFn: API['getElements']) => Object.values(getFn(types.TOOL)); +export const getToolsExtra = (getFn: API['getElements']) => Object.values(getFn(types.TOOLEXTRA)); const Bar: FunctionComponent<{ shown: boolean } & Record<string, any>> = ({ shown, ...props }) => ( <FlexBar {...props} /> @@ -59,9 +57,10 @@ const fullScreenMapper = ({ api, state }: Combo) => ({ singleStory: state.singleStory, }); -export const fullScreenTool: Addon = { +export const fullScreenTool: Addon_BaseType = { title: 'fullscreen', id: 'fullscreen', + type: types.TOOL, match: (p) => ['story', 'docs'].includes(p.viewMode), render: () => ( <Consumer filter={fullScreenMapper}> @@ -88,9 +87,10 @@ const tabsMapper = ({ state }: Combo) => ({ refId: state.refId, }); -export const createTabsTool = (tabs: Addon[]): Addon => ({ +export const createTabsTool = (tabs: Addon_BaseType[]): Addon_BaseType => ({ title: 'title', id: 'title', + type: types.TOOL, render: () => ( <Consumer filter={tabsMapper}> {(rp) => ( @@ -117,12 +117,17 @@ export const createTabsTool = (tabs: Addon[]): Addon => ({ ), }); -export const defaultTools: Addon[] = [remountTool, zoomTool]; -export const defaultToolsExtra: Addon[] = [addonsTool, fullScreenTool, ejectTool, copyTool]; +export const defaultTools: Addon_BaseType[] = [remountTool, zoomTool]; +export const defaultToolsExtra: Addon_BaseType[] = [ + addonsTool, + fullScreenTool, + ejectTool, + copyTool, +]; const useTools = ( getElements: API['getElements'], - tabs: Addon[], + tabs: Addon_BaseType[], viewMode: PreviewProps['viewMode'], entry: PreviewProps['entry'], location: PreviewProps['location'], @@ -154,7 +159,7 @@ const useTools = ( export interface ToolData { isShown: boolean; - tabs: Addon[]; + tabs: Addon_BaseType[]; api: API; entry: LeafEntry; } @@ -180,7 +185,7 @@ export const ToolbarComp = React.memo<ToolData>(function ToolbarComp(props) { ); }); -export const Tools = React.memo<{ list: Addon[] }>(function Tools({ list }) { +export const Tools = React.memo<{ list: Addon_BaseType[] }>(function Tools({ list }) { return ( <> {list.filter(Boolean).map(({ render: Render, id, ...t }, index) => ( @@ -191,7 +196,7 @@ export const Tools = React.memo<{ list: Addon[] }>(function Tools({ list }) { ); }); -function toolbarItemHasBeenExcluded(item: Partial<Addon>, entry: LeafEntry) { +function toolbarItemHasBeenExcluded(item: Partial<Addon_BaseType>, entry: LeafEntry) { const parameters = entry.type === 'story' && entry.prepared ? entry.parameters : {}; const toolbarItemsFromStoryParameters = 'toolbar' in parameters ? parameters.toolbar : undefined; const { toolbar: toolbarItemsFromAddonsConfig } = addons.getConfig(); @@ -202,9 +207,9 @@ function toolbarItemHasBeenExcluded(item: Partial<Addon>, entry: LeafEntry) { } export function filterTools( - tools: Addon[], - toolsExtra: Addon[], - tabs: Addon[], + tools: Addon_BaseType[], + toolsExtra: Addon_BaseType[], + tabs: Addon_BaseType[], { viewMode, entry, @@ -224,7 +229,7 @@ export function filterTools( ]; const toolsRight = [...toolsExtra]; - const filter = (item: Partial<Addon>) => + const filter = (item: Partial<Addon_BaseType>) => item && (!item.match || item.match({ diff --git a/code/ui/manager/src/components/preview/tools/addons.tsx b/code/ui/manager/src/components/preview/tools/addons.tsx index 9fc35f6de659..53fe821ae4af 100644 --- a/code/ui/manager/src/components/preview/tools/addons.tsx +++ b/code/ui/manager/src/components/preview/tools/addons.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const menuMapper = ({ api, state }: Combo) => ({ isVisible: state.layout.showPanel, @@ -10,9 +11,10 @@ const menuMapper = ({ api, state }: Combo) => ({ toggle: () => api.togglePanel(), }); -export const addonsTool: Addon = { +export const addonsTool: Addon_BaseType = { title: 'addons', id: 'addons', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/copy.tsx b/code/ui/manager/src/components/preview/tools/copy.tsx index 857f8a82761e..0b0084aae857 100644 --- a/code/ui/manager/src/components/preview/tools/copy.tsx +++ b/code/ui/manager/src/components/preview/tools/copy.tsx @@ -2,8 +2,9 @@ import { global } from '@storybook/global'; import React from 'react'; import copy from 'copy-to-clipboard'; import { getStoryHref, IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const { PREVIEW_URL, document } = global; @@ -22,9 +23,10 @@ const copyMapper = ({ state }: Combo) => { }; }; -export const copyTool: Addon = { +export const copyTool: Addon_BaseType = { title: 'copy', id: 'copy', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={copyMapper}> diff --git a/code/ui/manager/src/components/preview/tools/eject.tsx b/code/ui/manager/src/components/preview/tools/eject.tsx index 6a08419f3077..65688038b859 100644 --- a/code/ui/manager/src/components/preview/tools/eject.tsx +++ b/code/ui/manager/src/components/preview/tools/eject.tsx @@ -1,8 +1,9 @@ import { global } from '@storybook/global'; import React from 'react'; import { getStoryHref, IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const { PREVIEW_URL } = global; @@ -18,9 +19,10 @@ const ejectMapper = ({ state }: Combo) => { }; }; -export const ejectTool: Addon = { +export const ejectTool: Addon_BaseType = { title: 'eject', id: 'eject', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={ejectMapper}> diff --git a/code/ui/manager/src/components/preview/tools/menu.tsx b/code/ui/manager/src/components/preview/tools/menu.tsx index 6edb1366f77d..8512e9e16abc 100644 --- a/code/ui/manager/src/components/preview/tools/menu.tsx +++ b/code/ui/manager/src/components/preview/tools/menu.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { IconButton, Icons, Separator } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const menuMapper = ({ api, state }: Combo) => ({ isVisible: state.layout.showNav, @@ -9,9 +10,10 @@ const menuMapper = ({ api, state }: Combo) => ({ toggle: () => api.toggleNav(), }); -export const menuTool: Addon = { +export const menuTool: Addon_BaseType = { title: 'menu', id: 'menu', + type: types.TOOL, match: ({ viewMode }) => ['story', 'docs'].includes(viewMode), render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/remount.tsx b/code/ui/manager/src/components/preview/tools/remount.tsx index b095c6f431c1..6bf4c1f7553e 100644 --- a/code/ui/manager/src/components/preview/tools/remount.tsx +++ b/code/ui/manager/src/components/preview/tools/remount.tsx @@ -1,10 +1,11 @@ import type { ComponentProps } from 'react'; import React, { useState } from 'react'; import { IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { FORCE_REMOUNT } from '@storybook/core-events'; +import type { Addon_BaseType } from '@storybook/types'; interface AnimatedButtonProps { animating?: boolean; @@ -28,9 +29,10 @@ const menuMapper = ({ api, state }: Combo) => { }; }; -export const remountTool: Addon = { +export const remountTool: Addon_BaseType = { title: 'remount', id: 'remount', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/zoom.tsx b/code/ui/manager/src/components/preview/tools/zoom.tsx index fe6530b96d17..84e0f72bafae 100644 --- a/code/ui/manager/src/components/preview/tools/zoom.tsx +++ b/code/ui/manager/src/components/preview/tools/zoom.tsx @@ -2,7 +2,8 @@ import type { SyntheticEvent, MouseEventHandler } from 'react'; import React, { Component, useCallback } from 'react'; import { Icons, IconButton, Separator } from '@storybook/components'; -import type { Addon } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; +import { types } from '@storybook/manager-api'; const initialZoom = 1 as const; @@ -78,9 +79,10 @@ const ZoomWrapper = React.memo<{ set: (zoomLevel: number) => void; value: number } ); -export const zoomTool: Addon = { +export const zoomTool: Addon_BaseType = { title: 'zoom', id: 'zoom', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: React.memo(function ZoomToolRenderer() { return ( diff --git a/code/ui/manager/src/components/preview/utils/types.tsx b/code/ui/manager/src/components/preview/utils/types.tsx index efe259cc61b1..9d8158514864 100644 --- a/code/ui/manager/src/components/preview/utils/types.tsx +++ b/code/ui/manager/src/components/preview/utils/types.tsx @@ -1,12 +1,10 @@ -import type { FunctionComponent, ReactNode } from 'react'; +import type { ReactElement } from 'react'; import type { State, API, LeafEntry } from '@storybook/manager-api'; -import type { StoryId } from '@storybook/types'; - -export type ViewMode = State['viewMode']; +import type { Addon_WrapperType, API_ViewMode, StoryId } from '@storybook/types'; export interface PreviewProps { api: API; - viewMode: ViewMode; + viewMode: API_ViewMode; refs: State['refs']; storyId: StoryId; entry: LeafEntry; @@ -25,20 +23,8 @@ export interface PreviewProps { withLoader: boolean; } -export interface WrapperProps { - index: number; - children: ReactNode; - id: string; - storyId: StoryId; - active: boolean; -} - -export interface Wrapper { - render: FunctionComponent<WrapperProps>; -} - export interface ApplyWrappersProps { - wrappers: Wrapper[]; + wrappers: Addon_WrapperType[]; viewMode: State['viewMode']; id: string; storyId: StoryId; @@ -52,7 +38,7 @@ export type CustomCanvasRenderer = ( baseUrl: string, scale: number, queryParams: Record<string, any> -) => ReactNode; +) => ReactElement<any, any> | null; export interface FramesRendererProps { entry: LeafEntry; @@ -60,7 +46,7 @@ export interface FramesRendererProps { refId: string; baseUrl: string; scale: number; - viewMode: ViewMode; + viewMode: API_ViewMode; queryParams: State['customQueryParams']; refs: State['refs']; } diff --git a/code/ui/manager/src/components/preview/wrappers.tsx b/code/ui/manager/src/components/preview/wrappers.tsx index 52da844cd01a..a88404e6d515 100644 --- a/code/ui/manager/src/components/preview/wrappers.tsx +++ b/code/ui/manager/src/components/preview/wrappers.tsx @@ -1,6 +1,8 @@ import type { FC } from 'react'; import React, { Fragment } from 'react'; -import type { ApplyWrappersProps, Wrapper } from './utils/types'; +import type { Addon_WrapperType } from '@storybook/types'; +import { Addon_TypesEnum } from '@storybook/types'; +import type { ApplyWrappersProps } from './utils/types'; import { IframeWrapper } from './utils/components'; export const ApplyWrappers: FC<ApplyWrappersProps> = ({ @@ -13,19 +15,23 @@ export const ApplyWrappers: FC<ApplyWrappersProps> = ({ return ( <Fragment> {wrappers.reduceRight( - (acc, wrapper, index) => wrapper.render({ index, children: acc, id, storyId, active }), + (acc, wrapper, index) => ( + <wrapper.render {...{ index, children: acc, id, storyId, active }} /> + ), children )} </Fragment> ); }; -export const defaultWrappers = [ +export const defaultWrappers: Addon_WrapperType[] = [ { + id: 'iframe-wrapper', + type: Addon_TypesEnum.PREVIEW, render: (p) => ( <IframeWrapper id="storybook-preview-wrapper" hidden={!p.active}> {p.children} </IframeWrapper> ), - } as Wrapper, + }, ]; diff --git a/code/ui/manager/src/components/sidebar/Heading.stories.tsx b/code/ui/manager/src/components/sidebar/Heading.stories.tsx index d86cd02f9825..b958ebe2e1b1 100644 --- a/code/ui/manager/src/components/sidebar/Heading.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Heading.stories.tsx @@ -27,7 +27,9 @@ const menuItems = [ { title: 'Menu Item 3', onClick: action('onActivateMenuItem'), id: '3' }, ]; -export const MenuHighlighted: Story = () => <Heading menuHighlighted menu={menuItems} />; +export const MenuHighlighted: Story = () => ( + <Heading menuHighlighted menu={menuItems} isLoading={false} extra={[]} /> +); export const standardData = { menu: menuItems }; @@ -45,7 +47,7 @@ export const Standard: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -64,7 +66,7 @@ export const StandardNoLink: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -83,7 +85,7 @@ export const LinkAndText: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -102,7 +104,7 @@ export const OnlyText: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -121,7 +123,7 @@ export const LongText: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -140,7 +142,7 @@ export const CustomTitle: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -159,7 +161,7 @@ export const CustomBrandImage: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -178,7 +180,7 @@ export const CustomBrandImageTall: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -197,7 +199,7 @@ export const CustomBrandImageUnsizedSVG: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; @@ -216,13 +218,18 @@ export const NoBrand: Story = () => { }, }} > - <Heading menu={menuItems} /> + <Heading menu={menuItems} isLoading={false} extra={[]} /> </ThemeProvider> ); }; export const SkipToCanvasLinkFocused: ComponentStoryObj<typeof Heading> = { - args: { menu: menuItems, skipLinkHref: '#storybook-preview-wrapper' }, + args: { + menu: menuItems, + skipLinkHref: '#storybook-preview-wrapper', + extra: [], + isLoading: false, + }, parameters: { layout: 'padded', chromatic: { delay: 300 } }, play: () => { // focus each instance for chromatic/storybook's stacked theme diff --git a/code/ui/manager/src/components/sidebar/Heading.tsx b/code/ui/manager/src/components/sidebar/Heading.tsx index 8d11af4374f6..552e1859af69 100644 --- a/code/ui/manager/src/components/sidebar/Heading.tsx +++ b/code/ui/manager/src/components/sidebar/Heading.tsx @@ -3,6 +3,7 @@ import React from 'react'; import { styled } from '@storybook/theming'; import { Button } from '@storybook/components'; +import type { Addon_SidebarTopType } from '@storybook/types'; import { Brand } from './Brand'; import type { MenuList } from './Menu'; import { SidebarMenu } from './Menu'; @@ -10,7 +11,9 @@ import { SidebarMenu } from './Menu'; export interface HeadingProps { menuHighlighted?: boolean; menu: MenuList; + extra: Addon_SidebarTopType[]; skipLinkHref?: string; + isLoading: boolean; } const BrandArea = styled.div(({ theme }) => ({ @@ -23,6 +26,9 @@ const BrandArea = styled.div(({ theme }) => ({ alignItems: 'center', minHeight: 22, + '& > * > *': { + maxWidth: '100%', + }, '& > *': { maxWidth: '100%', height: 'auto', @@ -73,6 +79,8 @@ export const Heading: FC<HeadingProps & ComponentProps<typeof HeadingWrapper>> = menuHighlighted = false, menu, skipLinkHref, + extra, + isLoading, ...props }) => { return ( @@ -87,6 +95,7 @@ export const Heading: FC<HeadingProps & ComponentProps<typeof HeadingWrapper>> = <Brand /> </BrandArea> + {isLoading ? null : extra.map(({ id, render: Render }) => <Render key={id} />)} <SidebarMenu menu={menu} isHighlighted={menuHighlighted} /> </HeadingWrapper> ); diff --git a/code/ui/manager/src/components/sidebar/Menu.stories.tsx b/code/ui/manager/src/components/sidebar/Menu.stories.tsx index 8d22f6aecd8d..f9e743a6d84d 100644 --- a/code/ui/manager/src/components/sidebar/Menu.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Menu.stories.tsx @@ -1,28 +1,42 @@ -import { expect } from '@storybook/jest'; import type { ComponentProps } from 'react'; import React from 'react'; +import { expect } from '@storybook/jest'; +import type { Meta, StoryObj } from '@storybook/react'; import { TooltipLinkList } from '@storybook/components'; import { styled } from '@storybook/theming'; -import { within, userEvent, screen } from '@storybook/testing-library'; +import { screen, userEvent, within } from '@storybook/testing-library'; +import type { State } from '@storybook/manager-api'; import { SidebarMenu, ToolbarMenu } from './Menu'; import { useMenu } from '../../containers/menu'; -export default { - component: SidebarMenu, - title: 'Sidebar/Menu', -}; - const fakemenu: ComponentProps<typeof TooltipLinkList>['links'] = [ { title: 'has icon', icon: 'link', id: 'icon' }, { title: 'has no icon', id: 'non' }, ]; -export const Items = () => <TooltipLinkList links={fakemenu} />; +const meta = { + component: SidebarMenu, + title: 'Sidebar/Menu', + args: { + menu: fakemenu, + }, +} satisfies Meta<typeof SidebarMenu>; +export default meta; + +type Story = StoryObj<typeof meta>; -export const Real = () => <SidebarMenu menu={fakemenu} isHighlighted />; +export const Items: Story = { + render: () => <TooltipLinkList links={fakemenu} />, +}; -export const Toolbar = () => <ToolbarMenu menu={fakemenu} />; +export const Real: Story = { + render: () => <SidebarMenu menu={fakemenu} isHighlighted />, +}; + +export const Toolbar = { + render: () => <ToolbarMenu menu={fakemenu} />, +}; const DoubleThemeRenderingHack = styled.div({ '#storybook-root > [data-side="left"] > &': { @@ -30,68 +44,80 @@ const DoubleThemeRenderingHack = styled.div({ }, }); -export const Expanded = () => { - const menu = useMenu( - { - // @ts-expect-error (Converted from ts-ignore) - getShortcutKeys: () => ({}), - getAddonsShortcuts: () => ({}), - versionUpdateAvailable: () => false, - releaseNotesVersion: () => '6.0.0', - }, - false, - false, - false, - false, - false - ); - return ( - <DoubleThemeRenderingHack> - <SidebarMenu menu={menu} isHighlighted /> - </DoubleThemeRenderingHack> - ); -}; -// @ts-expect-error (needs to be converted to CSF3) -Expanded.play = async ({ canvasElement }) => { - const canvas = within(canvasElement); - await new Promise((res) => { - setTimeout(res, 500); - }); - const menuButton = await canvas.findByRole('button'); - await userEvent.click(menuButton); - const aboutStorybookBtn = await screen.findByText(/About your Storybook/); - await expect(aboutStorybookBtn).toBeInTheDocument(); +export const Expanded: Story = { + render: () => { + const menu = useMenu( + { whatsNewData: { status: 'SUCCESS', disableWhatsNewNotifications: false } } as State, + { + // @ts-expect-error (Converted from ts-ignore) + getShortcutKeys: () => ({}), + getAddonsShortcuts: () => ({}), + versionUpdateAvailable: () => false, + isWhatsNewUnread: () => true, + }, + false, + false, + false, + false, + false + ); + return ( + <DoubleThemeRenderingHack> + <SidebarMenu menu={menu} isHighlighted /> + </DoubleThemeRenderingHack> + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + await new Promise((res) => { + setTimeout(res, 500); + }); + const menuButton = await canvas.findByRole('button'); + await userEvent.click(menuButton); + const aboutStorybookBtn = await screen.findByText(/About your Storybook/); + await expect(aboutStorybookBtn).toBeInTheDocument(); + }, + decorators: [ + (StoryFn) => ( + <div style={{ height: 800 }}> + <StoryFn /> + </div> + ), + ], }; -export const ExpandedWithoutReleaseNotes = () => { - const menu = useMenu( - { - // @ts-expect-error (invalid) - getShortcutKeys: () => ({}), - getAddonsShortcuts: () => ({}), - versionUpdateAvailable: () => false, - releaseNotesVersion: () => undefined, - }, - false, - false, - false, - false, - false - ); +export const ExpandedWithoutWhatsNew: Story = { + ...Expanded, + render: () => { + const menu = useMenu( + { whatsNewData: undefined } as State, + { + // @ts-expect-error (invalid) + getShortcutKeys: () => ({}), + getAddonsShortcuts: () => ({}), + versionUpdateAvailable: () => false, + isWhatsNewUnread: () => false, + }, + false, + false, + false, + false, + false + ); - return ( - <DoubleThemeRenderingHack> - <SidebarMenu menu={menu} /> - </DoubleThemeRenderingHack> - ); -}; -// @ts-expect-error (needs to be converted to CSF3) -ExpandedWithoutReleaseNotes.play = async (context) => { - const canvas = within(context.canvasElement); - await new Promise((res) => { - setTimeout(res, 500); - }); - await Expanded.play(context); - const releaseNotes = await canvas.queryByText(/Release notes/); - await expect(releaseNotes).not.toBeInTheDocument(); + return ( + <DoubleThemeRenderingHack> + <SidebarMenu menu={menu} /> + </DoubleThemeRenderingHack> + ); + }, + play: async (context) => { + const canvas = within(context.canvasElement); + await new Promise((res) => { + setTimeout(res, 500); + }); + await Expanded.play(context); + const releaseNotes = await canvas.queryByText(/What's new/); + await expect(releaseNotes).not.toBeInTheDocument(); + }, }; diff --git a/code/ui/manager/src/components/sidebar/RefBlocks.tsx b/code/ui/manager/src/components/sidebar/RefBlocks.tsx index ddea8ed11aa6..52d1d335a5dd 100644 --- a/code/ui/manager/src/components/sidebar/RefBlocks.tsx +++ b/code/ui/manager/src/components/sidebar/RefBlocks.tsx @@ -145,6 +145,7 @@ export const EmptyBlock: FC<any> = ({ isMain }) => ( The glob specified in <code>main.js</code> isn't correct. </li> <li>No stories are defined in your story files.</li> + <li>You're using filter-functions, and all stories are filtered away.</li> </ul>{' '} </> ) : ( diff --git a/code/ui/manager/src/components/sidebar/RefIndicator.tsx b/code/ui/manager/src/components/sidebar/RefIndicator.tsx index d9c81f6398c4..a46ba2c89642 100644 --- a/code/ui/manager/src/components/sidebar/RefIndicator.tsx +++ b/code/ui/manager/src/components/sidebar/RefIndicator.tsx @@ -10,7 +10,7 @@ import { useStorybookApi } from '@storybook/manager-api'; import type { RefType } from './types'; -import type { getStateType } from './utils'; +import type { getStateType } from '../../utils/tree'; const { document, window: globalWindow } = global; diff --git a/code/ui/manager/src/components/sidebar/Refs.tsx b/code/ui/manager/src/components/sidebar/Refs.tsx index b2c69b27f99c..a7696ee696ca 100644 --- a/code/ui/manager/src/components/sidebar/Refs.tsx +++ b/code/ui/manager/src/components/sidebar/Refs.tsx @@ -1,5 +1,6 @@ import type { FC, MutableRefObject } from 'react'; import React, { useMemo, useState, useRef, useCallback } from 'react'; +import type { State } from '@storybook/manager-api'; import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { transparentize } from 'polished'; @@ -7,6 +8,7 @@ import { transparentize } from 'polished'; import { AuthBlock, ErrorBlock, LoaderBlock, EmptyBlock } from './RefBlocks'; import { RefIndicator } from './RefIndicator'; + // eslint-disable-next-line import/no-cycle import { Tree } from './Tree'; import { CollapseIcon } from './TreeNode'; @@ -14,7 +16,7 @@ import { CollapseIcon } from './TreeNode'; import { DEFAULT_REF_ID } from './Sidebar'; import type { Highlight, RefType } from './types'; -import { getStateType } from './utils'; +import { getStateType } from '../../utils/tree'; export interface RefProps { isLoading: boolean; @@ -95,7 +97,9 @@ const CollapseButton = styled.button(({ theme }) => ({ }, })); -export const Ref: FC<RefType & RefProps> = React.memo(function Ref(props) { +export const Ref: FC<RefType & RefProps & { status?: State['status'] }> = React.memo(function Ref( + props +) { const { docsOptions } = useStorybookState(); const api = useStorybookApi(); const { @@ -161,6 +165,7 @@ export const Ref: FC<RefType & RefProps> = React.memo(function Ref(props) { {state === 'empty' && <EmptyBlock isMain={isMain} />} {state === 'ready' && ( <Tree + status={props.status} isBrowsing={isBrowsing} isMain={isMain} refId={refId} diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index 9bd4b6839954..af2c858efdf5 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -20,7 +20,8 @@ import type { } from './types'; import { isSearchResult, isExpandType, isClearType, isCloseType } from './types'; -import { scrollIntoView, searchItem } from './utils'; +import { scrollIntoView, searchItem } from '../../utils/tree'; +import { getGroupStatus, getHighestStatus } from '../../utils/status'; const { document } = global; @@ -169,7 +170,9 @@ export const Search = React.memo<{ const selectStory = useCallback( (id: string, refId: string) => { - if (api) api.selectStory(id, undefined, { ref: refId !== DEFAULT_REF_ID && refId }); + if (api) { + api.selectStory(id, undefined, { ref: refId !== DEFAULT_REF_ID && refId }); + } inputRef.current.blur(); showAllComponents(false); }, @@ -177,9 +180,22 @@ export const Search = React.memo<{ ); const list: SearchItem[] = useMemo(() => { - return dataset.entries.reduce((acc: SearchItem[], [refId, { index }]) => { + return dataset.entries.reduce<SearchItem[]>((acc, [refId, { index, status }]) => { + const groupStatus = getGroupStatus(index || {}, status); + if (index) { - acc.push(...Object.values(index).map((item) => searchItem(item, dataset.hash[refId]))); + acc.push( + ...Object.values(index).map((item) => { + const statusValue = + status && status[item.id] + ? getHighestStatus(Object.values(status[item.id] || {}).map((s) => s.status)) + : null; + return { + ...searchItem(item, dataset.hash[refId]), + status: statusValue || groupStatus[item.id] || null, + }; + }) + ); } return acc; }, []); diff --git a/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx b/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx index d2c72e0c721f..c92ef644cc48 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx @@ -4,7 +4,7 @@ import type { StoriesHash } from '@storybook/manager-api'; import { mockDataset } from './mockdata'; import { SearchResults } from './SearchResults'; import type { CombinedDataset, Refs, SearchItem } from './types'; -import { searchItem } from './utils'; +import { searchItem } from '../../utils/tree'; export default { component: SearchResults, diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index 882d77a6f1f5..8cca81f84cb1 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -11,8 +11,9 @@ import { ComponentNode, DocumentNode, Path, RootNode, StoryNode } from './TreeNo import type { Match, DownshiftItem, SearchResult } from './types'; import { isCloseType, isClearType, isExpandType } from './types'; // eslint-disable-next-line import/no-cycle -import { getLink } from './utils'; +import { getLink } from '../../utils/tree'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; +import { statusMapping } from '../../utils/status'; const { document } = global; @@ -25,14 +26,18 @@ const ResultsList = styled.ol({ }); const ResultRow = styled.li<{ isHighlighted: boolean }>(({ theme, isHighlighted }) => ({ - display: 'block', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', margin: 0, padding: 0, + paddingRight: 20, background: isHighlighted ? theme.background.hoverable : 'transparent', cursor: 'pointer', 'a:hover, button:hover': { background: 'transparent', }, + gap: 10, })); const NoResults = styled.div(({ theme }) => ({ @@ -109,7 +114,11 @@ const Highlight: FC<{ match?: Match }> = React.memo(function Highlight({ childre }); const Result: FC< - SearchResult & { icon: string; isHighlighted: boolean; onClick: MouseEventHandler } + SearchResult & { + icon: string; + isHighlighted: boolean; + onClick: MouseEventHandler; + } > = React.memo(function Result({ item, matches, icon, onClick, ...props }) { const click: MouseEventHandler = useCallback( (event) => { @@ -163,7 +172,16 @@ const Result: FC< node = <DocumentNode href={getLink(item, item.refId)} {...nodeProps} />; } - return <ResultRow {...props}>{node}</ResultRow>; + const [i, iconColor] = item.status ? statusMapping[item.status] : []; + + return ( + <ResultRow {...props}> + {node} + {item.status ? ( + <Icons width="8px" height="8px" icon={i} style={{ color: iconColor }} /> + ) : null} + </ResultRow> + ); }); export const SearchResults: FC<{ @@ -202,6 +220,9 @@ export const SearchResults: FC<{ }, [closeMenu, enableShortcuts, isLoading]); const mouseOverHandler = useCallback((event: MouseEvent) => { + if (!api) { + return; + } const currentTarget = event.currentTarget as HTMLElement; const storyId = currentTarget.getAttribute('data-id'); const refId = currentTarget.getAttribute('data-refid'); diff --git a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx index 936789d0cde0..7c6dfea9a7ab 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx @@ -1,26 +1,35 @@ import React from 'react'; -import type { IndexHash } from 'lib/manager-api/src'; +import type { IndexHash, State } from '@storybook/manager-api'; +import { types } from '@storybook/manager-api'; +import type { StoryObj, Meta } from '@storybook/react'; +import { within, userEvent } from '@storybook/testing-library'; +import { Button, IconButton, Icons } from '@storybook/components'; import { Sidebar, DEFAULT_REF_ID } from './Sidebar'; import { standardData as standardHeaderData } from './Heading.stories'; import * as ExplorerStories from './Explorer.stories'; import { mockDataset } from './mockdata'; import type { RefType } from './types'; -export default { +const wait = (ms: number) => + new Promise<void>((resolve) => { + setTimeout(resolve, ms); + }); + +const meta = { component: Sidebar, title: 'Sidebar/Sidebar', excludeStories: /.*Data$/, parameters: { layout: 'fullscreen', withSymbols: true }, - decorators: [ - ExplorerStories.default.decorators[0], - (storyFn: any) => <div style={{ padding: '0 20px', maxWidth: '230px' }}>{storyFn()}</div>, - ], -}; + decorators: [ExplorerStories.default.decorators[0]], +} as Meta<typeof Sidebar>; + +export default meta; + +type Story = StoryObj<typeof meta>; const { menu } = standardHeaderData; const index = mockDataset.withRoot as IndexHash; -const refId = DEFAULT_REF_ID; const storyId = 'root-1-child-a2--grandchild-a1-1'; export const simpleData = { menu, index, storyId }; @@ -47,57 +56,238 @@ const refsError = { }, }; -export const Simple = () => ( - <Sidebar - previewInitialized - menu={menu} - index={index as any} - storyId={storyId} - refId={refId} - refs={{}} - /> -); - -export const Loading = () => ( - <Sidebar previewInitialized={false} menu={menu} storyId={storyId} refId={refId} refs={{}} /> -); - -export const Empty = () => ( - <Sidebar previewInitialized menu={menu} index={{}} storyId={storyId} refId={refId} refs={{}} /> -); - -export const IndexError = () => ( - <Sidebar - previewInitialized - indexError={indexError} - menu={menu} - storyId={storyId} - refId={refId} - refs={{}} - /> -); - -export const WithRefs = () => ( - <Sidebar - previewInitialized - menu={menu} - index={index as any} - storyId={storyId} - refId={refId} - refs={refs} - /> -); - -export const LoadingWithRefs = () => ( - <Sidebar previewInitialized={false} menu={menu} storyId={storyId} refId={refId} refs={refs} /> -); - -export const LoadingWithRefError = () => ( - <Sidebar - previewInitialized={false} - menu={menu} - storyId={storyId} - refId={refId} - refs={refsError} - /> -); +export const Simple: Story = { + args: { previewInitialized: true }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const Loading: Story = { + args: { previewInitialized: false }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const Empty: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + index={{}} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const IndexError: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + indexError={indexError} + extra={[]} + menu={menu} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const WithRefs: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refs} + status={{}} + /> + ), +}; + +export const LoadingWithRefs: Story = { + args: { + previewInitialized: false, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refs} + status={{}} + /> + ), +}; + +export const LoadingWithRefError: Story = { + args: { + previewInitialized: false, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refsError} + status={{}} + /> + ), +}; + +export const StatusesCollapsed: Story = { + args: { + previewInitialized: true, + status: Object.entries(index).reduce<State['status']>((acc, [id, item]) => { + if (item.type !== 'story') { + return acc; + } + + if (item.name.includes('B')) { + return { + ...acc, + [id]: { + addonA: { status: 'warn', title: 'Addon A', description: 'We just wanted you to know' }, + addonB: { status: 'error', title: 'Addon B', description: 'This is a big deal!' }, + }, + }; + } + return acc; + }, {}), + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + /> + ), +}; + +export const StatusesOpen: Story = { + ...StatusesCollapsed, + args: { + ...StatusesCollapsed.args, + status: Object.entries(index).reduce<State['status']>((acc, [id, item]) => { + if (item.type !== 'story') { + return acc; + } + + return { + ...acc, + [id]: { + addonA: { status: 'warn', title: 'Addon A', description: 'We just wanted you to know' }, + addonB: { status: 'error', title: 'Addon B', description: 'This is a big deal!' }, + }, + }; + }, {}), + }, +}; + +export const Searching: Story = { + ...StatusesOpen, + parameters: { theme: 'light', chromatic: { delay: 2200 } }, + play: async ({ canvasElement, step }) => { + await step('wait 2000ms', () => wait(2000)); + const canvas = await within(canvasElement); + const search = await canvas.findByPlaceholderText('Find components'); + userEvent.clear(search); + userEvent.type(search, 'B2'); + }, +}; + +export const Bottom: Story = { + args: { + previewInitialized: true, + }, + parameters: { theme: 'light' }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + extra={[]} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + bottom={[ + { + id: '1', + type: types.experimental_SIDEBAR_BOTTOM, + render: () => ( + <Button> + <Icons icon="facehappy" /> + Custom addon A + </Button> + ), + }, + { + id: '2', + type: types.experimental_SIDEBAR_BOTTOM, + render: () => ( + <Button> + {' '} + <Icons icon="facehappy" /> + Custom addon B + </Button> + ), + }, + { + id: '3', + type: types.experimental_SIDEBAR_BOTTOM, + render: () => ( + <IconButton> + {' '} + <Icons icon="facehappy" /> + </IconButton> + ), + }, + ]} + /> + ), +}; diff --git a/code/ui/manager/src/components/sidebar/Sidebar.tsx b/code/ui/manager/src/components/sidebar/Sidebar.tsx index e6d8ba1ca285..23aacc19f099 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.tsx @@ -4,7 +4,11 @@ import { styled } from '@storybook/theming'; import { ScrollArea, Spaced } from '@storybook/components'; import type { State } from '@storybook/manager-api'; -import type { API_LoadedRefData } from 'lib/types/src'; +import type { + Addon_SidebarBottomType, + Addon_SidebarTopType, + API_LoadedRefData, +} from '@storybook/types'; import { Heading } from './Heading'; // eslint-disable-next-line import/no-cycle @@ -27,12 +31,28 @@ const Container = styled.nav({ right: 0, width: '100%', height: '100%', + display: 'flex', + flexDirection: 'column', }); -const StyledSpaced = styled(Spaced)({ - paddingBottom: '2.5rem', +const Top = styled(Spaced)({ + padding: 20, + flex: 1, }); +const Bottom = styled.div(({ theme }) => ({ + borderTop: `1px solid ${theme.appBorderColor}`, + padding: theme.layoutMargin / 2, + display: 'flex', + flexWrap: 'wrap', + gap: theme.layoutMargin / 2, + backgroundColor: theme.barBg, + + '&:empty': { + display: 'none', + }, +})); + const CustomScrollArea = styled(ScrollArea)({ '&&&&& .os-scrollbar-handle:before': { left: -12, @@ -40,7 +60,6 @@ const CustomScrollArea = styled(ScrollArea)({ '&&&&& .os-scrollbar-vertical': { right: 5, }, - padding: 20, }); const Swap = React.memo(function Swap({ @@ -59,7 +78,10 @@ const Swap = React.memo(function Swap({ ); }); -const useCombination = (defaultRefData: API_LoadedRefData, refs: Refs): CombinedDataset => { +const useCombination = ( + defaultRefData: API_LoadedRefData & { status: State['status'] }, + refs: Refs +): CombinedDataset => { const hash = useMemo( () => ({ [DEFAULT_REF_ID]: { @@ -77,7 +99,10 @@ const useCombination = (defaultRefData: API_LoadedRefData, refs: Refs): Combined export interface SidebarProps extends API_LoadedRefData { refs: State['refs']; + status: State['status']; menu: any[]; + extra: Addon_SidebarTopType[]; + bottom?: Addon_SidebarBottomType[]; storyId?: string; refId?: string; menuHighlighted?: boolean; @@ -89,27 +114,31 @@ export const Sidebar = React.memo(function Sidebar({ refId = DEFAULT_REF_ID, index, indexError, + status, previewInitialized, menu, + extra, + bottom = [], menuHighlighted = false, enableShortcuts = true, refs = {}, }: SidebarProps) { const selected: Selection = useMemo(() => storyId && { storyId, refId }, [storyId, refId]); - - const dataset = useCombination({ index, indexError, previewInitialized }, refs); + const dataset = useCombination({ index, indexError, previewInitialized, status }, refs); const isLoading = !index && !indexError; const lastViewedProps = useLastViewed(selected); return ( <Container className="container sidebar-container"> <CustomScrollArea vertical> - <StyledSpaced row={1.6}> + <Top row={1.6}> <Heading className="sidebar-header" menuHighlighted={menuHighlighted} menu={menu} + extra={extra} skipLinkHref="#storybook-preview-wrapper" + isLoading={isLoading} /> <Search @@ -147,8 +176,15 @@ export const Sidebar = React.memo(function Sidebar({ </Swap> )} </Search> - </StyledSpaced> + </Top> </CustomScrollArea> + {isLoading ? null : ( + <Bottom> + {bottom.map(({ id, render: Render }) => ( + <Render key={id} /> + ))} + </Bottom> + )} </Container> ); }); diff --git a/code/ui/manager/src/components/sidebar/Tree.stories.tsx b/code/ui/manager/src/components/sidebar/Tree.stories.tsx index 807b861cccf2..6889d23c56ac 100644 --- a/code/ui/manager/src/components/sidebar/Tree.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.stories.tsx @@ -1,161 +1,237 @@ -/* eslint-disable storybook/use-storybook-testing-library */ // @TODO: use addon-interactions and remove the rule disable above -import React from 'react'; +import React, { useState } from 'react'; import type { ComponentEntry, IndexHash } from '@storybook/manager-api'; -import { screen } from '@testing-library/dom'; +import { action } from '@storybook/addon-actions'; +import type { StoryObj, Meta } from '@storybook/react'; +import { within } from '@storybook/testing-library'; + +import { expect } from '@storybook/jest'; import { Tree } from './Tree'; import { index } from './mockdata.large'; import { DEFAULT_REF_ID } from './Sidebar'; -export default { +const customViewports = { + sized: { + name: 'Sized', + styles: { + width: '380px', + height: '90%', + }, + }, +}; + +const meta = { component: Tree, title: 'Sidebar/Tree', excludeStories: /.*Data$/, - parameters: { layout: 'fullscreen', withSymbols: true }, - decorators: [(storyFn: any) => <div style={{ maxWidth: '230px' }}>{storyFn()}</div>], -}; - -const refId = DEFAULT_REF_ID; -const storyId = Object.values(index).find((story) => story.type === 'story').id; + parameters: { + layout: 'fullscreen', + withSymbols: true, + theme: 'light', + viewport: { + defaultViewport: 'sized', + viewports: customViewports, + }, + chromatic: { viewports: [380] }, + }, +} as Meta<typeof Tree>; -const log = (id: string) => console.log(id); +export default meta; -export const Full = () => { - const [selectedId, setSelectedId] = React.useState(storyId); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={index} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); -}; +const storyId = Object.values(index).find((story) => story.type === 'story').id; -const tooltipStories = Object.keys(index).reduce((acc, key) => { - if (key === 'tooltip-tooltipselect--default') { - acc['tooltip-tooltipselect--tooltipselect'] = { - ...index[key], - id: 'tooltip-tooltipselect--tooltipselect', - name: 'TooltipSelect', - }; - return acc; - } - if (key === 'tooltip-tooltipselect') { - acc[key] = { - ...(index[key] as ComponentEntry), - children: ['tooltip-tooltipselect--tooltipselect'], - }; - return acc; - } - if (key.startsWith('tooltip')) acc[key] = index[key]; - return acc; -}, {} as IndexHash); +type Story = StoryObj<typeof meta>; -const singleStoryComponent: IndexHash = { - // @ts-expect-error (invalid input) - single: { - type: 'component', - name: 'Single', - id: 'single', - parent: null, - depth: 0, - children: ['single--single'], - renderLabel: () => <span>🔥 Single</span>, +export const Full: Story = { + args: { + docsMode: false, + isBrowsing: true, + isMain: true, + refId: DEFAULT_REF_ID, + setHighlightedItemId: action('setHighlightedItemId'), }, - // @ts-expect-error (invalid input) - 'single--single': { - type: 'story', - id: 'single--single', - title: 'Single', - name: 'Single', - prepared: true, - args: {}, - argTypes: {}, - initialArgs: {}, - depth: 1, - parent: 'single', - renderLabel: () => <span>🔥 Single</span>, - importPath: './single.stories.js', + render: (args) => { + const [selectedId, setSelectedId] = useState(storyId); + return ( + <Tree + {...args} + data={index} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + /> + ); }, }; -export const SingleStoryComponents = () => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={{ ...singleStoryComponent, ...tooltipStories }} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); +export const Dark: Story = { + ...Full, + parameters: { theme: 'dark' }, }; -const docsOnlySinglesStoryComponent: IndexHash = { - // @ts-expect-error (invalid input) - single: { - type: 'component', - name: 'Single', - id: 'single', - parent: null, - depth: 0, - children: ['single--docs'], +export const SingleStoryComponents: Story = { + args: { + docsMode: false, + isBrowsing: true, + isMain: true, + refId: DEFAULT_REF_ID, + setHighlightedItemId: action('setHighlightedItemId'), }, - // @ts-expect-error (invalid input) - 'single--docs': { - type: 'docs', - id: 'single--docs', - title: 'Single', - name: 'Single', - depth: 1, - parent: 'single', - importPath: './single.stories.js', + render: (args) => { + const [selectedId, setSelectedId] = useState('tooltip-tooltipbuildlist--default'); + return ( + <Tree + {...args} + data={{ + ...{ + single: { + type: 'component', + name: 'Single', + id: 'single', + isRoot: false, + isLeaf: false, + isComponent: true, + parent: null, + depth: 0, + children: ['single--single'], + renderLabel: () => <span>🔥 Single</span>, + }, + 'single--single': { + type: 'story', + id: 'single--single', + title: 'Single', + name: 'Single', + kind: 'single', + tags: [], + isRoot: false, + isLeaf: true, + isComponent: false, + prepared: true, + args: {}, + argTypes: {}, + initialArgs: {}, + depth: 1, + parent: 'single', + renderLabel: () => <span>🔥 Single</span>, + importPath: './single.stories.js', + }, + }, + ...Object.keys(index).reduce((acc, key) => { + if (key === 'tooltip-tooltipselect--default') { + acc['tooltip-tooltipselect--tooltipselect'] = { + ...index[key], + id: 'tooltip-tooltipselect--tooltipselect', + name: 'TooltipSelect', + }; + return acc; + } + if (key === 'tooltip-tooltipselect') { + acc[key] = { + ...(index[key] as ComponentEntry), + children: ['tooltip-tooltipselect--tooltipselect'], + }; + return acc; + } + if (key.startsWith('tooltip')) { + acc[key] = index[key]; + } + return acc; + }, {} as IndexHash), + }} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + /> + ); }, }; -export const DocsOnlySingleStoryComponents = () => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={{ ...docsOnlySinglesStoryComponent, ...tooltipStories }} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); + +export const DocsOnlySingleStoryComponents = { + render: () => { + const [selectedId, setSelectedId] = useState('tooltip-tooltipbuildlist--default'); + return ( + <Tree + docsMode={false} + isBrowsing + isMain + refId={DEFAULT_REF_ID} + data={{ + ...{ + single: { + type: 'component', + name: 'Single', + isRoot: false, + isLeaf: false, + isComponent: true, + id: 'single', + parent: null, + depth: 0, + children: ['single--docs'], + }, + 'single--docs': { + type: 'docs', + id: 'single--docs', + title: 'Single', + name: 'Single', + kind: 'single', + tags: [], + isRoot: false, + isLeaf: true, + isComponent: false, + prepared: true, + depth: 1, + parent: 'single', + importPath: './single.stories.js', + }, + }, + ...Object.keys(index).reduce((acc, key) => { + if (key === 'tooltip-tooltipselect--default') { + acc['tooltip-tooltipselect--tooltipselect'] = { + ...index[key], + id: 'tooltip-tooltipselect--tooltipselect', + name: 'TooltipSelect', + }; + return acc; + } + if (key === 'tooltip-tooltipselect') { + acc[key] = { + ...(index[key] as ComponentEntry), + children: ['tooltip-tooltipselect--tooltipselect'], + }; + return acc; + } + if (key.startsWith('tooltip')) { + acc[key] = index[key]; + } + return acc; + }, {} as IndexHash), + }} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + setHighlightedItemId={action('setHighlightedItemId')} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + /> + ); + }, }; -// node must be selected, highlighted, and focused -// in order to tab to 'Skip to canvas' link -export const SkipToCanvasLinkFocused = { - args: { - isBrowsing: true, - isMain: true, - refId, - data: index, - highlightedRef: { current: { itemId: 'tooltip-tooltipbuildlist--default', refId } }, - setHighlightedItemId: log, - selectedStoryId: 'tooltip-tooltipbuildlist--default', - onSelectStoryId: () => {}, +// SkipToCanvas Link only shows on desktop widths +export const SkipToCanvasLinkFocused: Story = { + ...DocsOnlySingleStoryComponents, + parameters: { + chromatic: { disable: true }, + viewport: { + defaultViewport: 'sized', + viewports: customViewports, + defaultOrientation: 'landscape', + }, }, - parameters: { chromatic: { delay: 300 } }, - play: () => { - // focus each instance for chromatic/storybook's stacked theme - screen.getAllByText('Skip to canvas').forEach((x) => x.focus()); + play: async ({ canvasElement }) => { + const screen = await within(canvasElement); + const link = await screen.findByText('Skip to canvas'); + + await link.focus(); + + await expect(link).toBeVisible(); }, }; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index cd4c1d354bb1..8d5ac50484ea 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -1,7 +1,14 @@ import { useStorybookApi } from '@storybook/manager-api'; -import type { StoriesHash, GroupEntry, ComponentEntry, StoryEntry } from '@storybook/manager-api'; +import type { + StoriesHash, + GroupEntry, + ComponentEntry, + StoryEntry, + State, + API, +} from '@storybook/manager-api'; import { styled } from '@storybook/theming'; -import { Button, Icons } from '@storybook/components'; +import { Button, Icons, TooltipLinkList, WithTooltip } from '@storybook/components'; import { transparentize } from 'polished'; import type { MutableRefObject } from 'react'; import React, { useCallback, useMemo, useRef } from 'react'; @@ -21,7 +28,14 @@ import type { ExpandAction, ExpandedState } from './useExpanded'; import { useExpanded } from './useExpanded'; import type { Highlight, Item } from './types'; -import { isStoryHoistable, createId, getAncestorIds, getDescendantIds, getLink } from './utils'; +import { + isStoryHoistable, + createId, + getAncestorIds, + getDescendantIds, + getLink, +} from '../../utils/tree'; +import { statusMapping, getHighestStatus, getGroupStatus } from '../../utils/status'; export const Action = styled.button(({ theme }) => ({ display: 'inline-flex', @@ -104,24 +118,49 @@ const CollapseButton = styled.button(({ theme }) => ({ }, })); -const LeafNodeStyleWrapper = styled.div(({ theme }) => ({ +export const LeafNodeStyleWrapper = styled.div(({ theme }) => ({ position: 'relative', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + paddingRight: 20, + + color: theme.color.defaultText, + background: 'transparent', + '&:hover, &:focus': { + outline: 'none', + background: theme.background.hoverable, + }, + '&[data-selected="true"]': { + color: theme.color.lightest, + background: theme.color.secondary, + fontWeight: theme.typography.weight.bold, + '&:hover, &:focus': { + background: theme.color.secondary, + }, + svg: { color: theme.color.lightest }, + }, + a: { color: 'currentColor' }, })); const SkipToContentLink = styled(Button)(({ theme }) => ({ display: 'none', '@media (min-width: 600px)': { display: 'block', - zIndex: -1, - position: 'absolute', - top: 1, - right: 20, - height: '20px', fontSize: '10px', - padding: '5px 10px', + overflow: 'hidden', + width: 1, + height: '20px', + boxSizing: 'border-box', + opacity: 0, + padding: 0, + '&:focus': { + opacity: 1, + padding: '5px 10px', background: 'white', - zIndex: 1, + color: theme.color.secondary, + width: 'auto', }, }, })); @@ -132,47 +171,60 @@ interface NodeProps { docsMode: boolean; isOrphan: boolean; isDisplayed: boolean; + color: string | undefined; isSelected: boolean; isFullyExpanded?: boolean; isExpanded: boolean; setExpanded: (action: ExpandAction) => void; setFullyExpanded?: () => void; onSelectStoryId: (itemId: string) => void; + status: State['status'][keyof State['status']]; + api: API; } const Node = React.memo<NodeProps>(function Node({ item, + status, refId, docsMode, isOrphan, isDisplayed, isSelected, isFullyExpanded, + color, setFullyExpanded, isExpanded, setExpanded, onSelectStoryId, + api, }) { - const api = useStorybookApi(); - if (!isDisplayed) return null; + if (!isDisplayed) { + return null; + } const id = createId(item.id, refId); if (item.type === 'story' || item.type === 'docs') { const LeafNode = item.type === 'docs' ? DocumentNode : StoryNode; + + const statusValue = getHighestStatus(Object.values(status || {}).map((s) => s.status)); + const [icon, iconColor, textColor] = statusMapping[statusValue]; + return ( - <LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-selected={isSelected} + data-ref-id={refId} + data-item-id={item.id} + data-parent-id={item.parent} + data-nodetype={item.type === 'docs' ? 'document' : 'story'} + data-highlightable={isDisplayed} + className="sidebar-item" + > <LeafNode + style={isSelected ? {} : { color: textColor }} key={id} + href={getLink(item, refId)} id={id} - className="sidebar-item" - data-ref-id={refId} - data-item-id={item.id} - data-parent-id={item.parent} - data-nodetype={item.type === 'docs' ? 'document' : 'story'} - data-selected={isSelected} - data-highlightable={isDisplayed} depth={isOrphan ? item.depth : item.depth - 1} - href={getLink(item, refId)} onClick={(event) => { event.preventDefault(); onSelectStoryId(item.id); @@ -186,6 +238,31 @@ const Node = React.memo<NodeProps>(function Node({ Skip to canvas </SkipToContentLink> )} + {icon ? ( + <WithTooltip + placement="top" + tooltip={() => ( + <TooltipLinkList + links={Object.entries(status || {}).map(([k, v]) => ({ + id: k, + title: v.title, + description: v.description, + right: ( + <Icons + icon={statusMapping[v.status][0]} + style={{ color: statusMapping[v.status][1] }} + /> + ), + }))} + /> + )} + closeOnOutsideClick + > + <Action type="button"> + <Icons icon={icon} style={{ color: isSelected ? 'white' : iconColor }} /> + </Action> + </WithTooltip> + ) : null} </LeafNodeStyleWrapper> ); } @@ -231,40 +308,45 @@ const Node = React.memo<NodeProps>(function Node({ ); } - const BranchNode = item.type === 'component' ? ComponentNode : GroupNode; - return ( - <BranchNode - key={id} - id={id} - className="sidebar-item" - data-ref-id={refId} - data-item-id={item.id} - data-parent-id={item.parent} - data-nodetype={item.type === 'component' ? 'component' : 'group'} - data-highlightable={isDisplayed} - aria-controls={item.children && item.children[0]} - aria-expanded={isExpanded} - depth={isOrphan ? item.depth : item.depth - 1} - isComponent={item.type === 'component'} - isExpandable={item.children && item.children.length > 0} - isExpanded={isExpanded} - onClick={(event) => { - event.preventDefault(); - setExpanded({ ids: [item.id], value: !isExpanded }); - if (item.type === 'component' && !isExpanded) onSelectStoryId(item.id); - }} - onMouseEnter={() => { - if (item.isComponent) { - api.emit(PRELOAD_ENTRIES, { - ids: [item.children[0]], - options: { target: refId }, - }); - } - }} - > - {(item.renderLabel as (i: typeof item) => React.ReactNode)?.(item) || item.name} - </BranchNode> - ); + if (item.type === 'component' || item.type === 'group') { + const BranchNode = item.type === 'component' ? ComponentNode : GroupNode; + return ( + <BranchNode + key={id} + id={id} + style={color ? { color } : {}} + className="sidebar-item" + data-ref-id={refId} + data-item-id={item.id} + data-parent-id={item.parent} + data-nodetype={item.type === 'component' ? 'component' : 'group'} + data-highlightable={isDisplayed} + aria-controls={item.children && item.children[0]} + aria-expanded={isExpanded} + depth={isOrphan ? item.depth : item.depth - 1} + isComponent={item.type === 'component'} + isExpandable={item.children && item.children.length > 0} + isExpanded={isExpanded} + onClick={(event) => { + event.preventDefault(); + setExpanded({ ids: [item.id], value: !isExpanded }); + if (item.type === 'component' && !isExpanded) onSelectStoryId(item.id); + }} + onMouseEnter={() => { + if (item.isComponent) { + api.emit(PRELOAD_ENTRIES, { + ids: [item.children[0]], + options: { target: refId }, + }); + } + }} + > + {(item.renderLabel as (i: typeof item) => React.ReactNode)?.(item) || item.name} + </BranchNode> + ); + } + + return null; }); const Root = React.memo<NodeProps & { expandableDescendants: string[] }>(function Root({ @@ -295,6 +377,7 @@ const Container = styled.div<{ hasOrphans: boolean }>((props) => ({ export const Tree = React.memo<{ isBrowsing: boolean; isMain: boolean; + status?: State['status']; refId: string; data: StoriesHash; docsMode: boolean; @@ -307,6 +390,7 @@ export const Tree = React.memo<{ isMain, refId, data, + status, docsMode, highlightedRef, setHighlightedItemId, @@ -314,6 +398,7 @@ export const Tree = React.memo<{ onSelectStoryId, }) { const containerRef = useRef<HTMLDivElement>(null); + const api = useStorybookApi(); // Find top-level nodes and group them so we can hoist any orphans and expand any roots. const [rootIds, orphanIds, initialExpanded] = useMemo( @@ -366,9 +451,10 @@ export const Tree = React.memo<{ }, [data]); // Omit single-story components from the list of nodes. - const collapsedItems = useMemo(() => { - return Object.keys(data).filter((id) => !singleStoryComponentIds.includes(id)); - }, [singleStoryComponentIds]); + const collapsedItems = useMemo( + () => Object.keys(data).filter((id) => !singleStoryComponentIds.includes(id)), + [singleStoryComponentIds] + ); // Rewrite the dataset to place the child story in place of the component. const collapsedData = useMemo(() => { @@ -414,6 +500,8 @@ export const Tree = React.memo<{ onSelectStoryId, }); + const groupStatus = useMemo(() => getGroupStatus(collapsedData, status), [collapsedData, status]); + return ( <Container ref={containerRef} hasOrphans={isMain && orphanIds.length > 0}> {collapsedItems.map((itemId) => { @@ -442,11 +530,16 @@ export const Tree = React.memo<{ } const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); + const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][2] : null; + return ( <Node + api={api} key={id} item={item} + status={status?.[itemId]} refId={refId} + color={color} docsMode={docsMode} isOrphan={orphanIds.some((oid) => itemId === oid || itemId.startsWith(`${oid}-`))} isDisplayed={isDisplayed} diff --git a/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx b/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx index 28664ea8fef1..78f7de5739fb 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { HighlightStyles } from './HighlightStyles'; +import { LeafNodeStyleWrapper } from './Tree'; import { ComponentNode, DocumentNode, GroupNode, StoryNode } from './TreeNode'; @@ -53,23 +54,59 @@ export const Nested = () => ( export const Selection = () => ( <> <HighlightStyles refId="foo" itemId="bar" /> - <StoryNode data-ref-id="baz" data-item-id="bar" data-nodetype="story" data-selected="false"> - Default story - </StoryNode> - <StoryNode data-ref-id="baz" data-item-id="bar" data-nodetype="story" data-selected="true"> - Selected story - </StoryNode> - <StoryNode data-ref-id="foo" data-item-id="bar" data-nodetype="story" data-selected="false"> - Highlighted story - </StoryNode> - <StoryNode data-ref-id="foo" data-item-id="bar" data-nodetype="story" data-selected="true"> - Highlighted + Selected story - </StoryNode> - <GroupNode data-ref-id="foo" data-item-id="baz" data-nodetype="group" data-selected="false"> - Default group - </GroupNode> - <GroupNode data-ref-id="foo" data-item-id="bar" data-nodetype="group" data-selected="false"> - Highlighted group - </GroupNode> + <LeafNodeStyleWrapper + data-ref-id="baz" + data-item-id="bar" + data-nodetype="story" + data-selected="false" + className="sidebar-item" + > + <StoryNode>Default story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="baz" + data-item-id="bar" + data-nodetype="story" + data-selected="true" + className="sidebar-item" + > + <StoryNode>Selected story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="story" + data-selected="false" + className="sidebar-item" + > + <StoryNode>Highlighted story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="story" + data-selected="true" + className="sidebar-item" + > + <StoryNode>Highlighted + Selected story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="baz" + data-nodetype="group" + data-selected="false" + className="sidebar-item" + > + <GroupNode>Default group</GroupNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="group" + data-selected="false" + className="sidebar-item" + > + <GroupNode>Highlighted group</GroupNode> + </LeafNodeStyleWrapper> </> ); diff --git a/code/ui/manager/src/components/sidebar/TreeNode.tsx b/code/ui/manager/src/components/sidebar/TreeNode.tsx index f71c7c0e9202..9768c0cf10a7 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.tsx @@ -82,27 +82,14 @@ const BranchNode = styled.button<{ const LeafNode = styled.a<{ depth?: number }>(({ theme, depth = 0 }) => ({ cursor: 'pointer', + color: 'inherit', display: 'flex', + flex: 1, alignItems: 'start', padding: 3, paddingLeft: `${18 + depth * 16}px`, fontSize: `${theme.typography.size.s2 - 1}px`, textDecoration: 'none', - color: theme.color.defaultText, - background: 'transparent', - '&:hover, &:focus': { - outline: 'none', - background: theme.background.hoverable, - }, - '&[data-selected="true"]': { - color: theme.color.lightest, - background: theme.color.secondary, - fontWeight: theme.typography.weight.bold, - '&:hover, &:focus': { - background: theme.color.secondary, - }, - svg: { color: theme.color.lightest }, - }, })); export const Path = styled.span(({ theme }) => ({ diff --git a/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx b/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx index 2e409618e8ed..78ebfb697ac7 100644 --- a/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx +++ b/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx @@ -16,7 +16,15 @@ const factory = (props: Partial<SidebarProps>): RenderResult => { return render( <ThemeProvider theme={theme}> - <Sidebar menu={[]} index={{}} previewInitialized refs={{}} {...props} /> + <Sidebar + menu={[]} + index={{}} + previewInitialized + refs={{}} + status={{}} + extra={[]} + {...props} + /> </ThemeProvider> ); }; diff --git a/code/ui/manager/src/components/sidebar/mockdata.ts b/code/ui/manager/src/components/sidebar/mockdata.ts index 6aa339ca7198..e8155fb44bd8 100644 --- a/code/ui/manager/src/components/sidebar/mockdata.ts +++ b/code/ui/manager/src/components/sidebar/mockdata.ts @@ -1,6 +1,6 @@ -import type { StoriesHash } from '@storybook/manager-api'; +import type { API_HashEntry } from '@storybook/types'; -export type MockDataSet = Record<string, Record<string, Partial<StoriesHash[0]>>>; +export type MockDataSet = Record<string, Record<string, Partial<API_HashEntry>>>; export const mockDataset: MockDataSet = { withRoot: { diff --git a/code/ui/manager/src/components/sidebar/types.ts b/code/ui/manager/src/components/sidebar/types.ts index c050d30e860c..c0bd12417d66 100644 --- a/code/ui/manager/src/components/sidebar/types.ts +++ b/code/ui/manager/src/components/sidebar/types.ts @@ -1,8 +1,9 @@ import type { StoriesHash, State } from '@storybook/manager-api'; import type { ControllerStateAndHelpers } from 'downshift'; +import type { API_StatusState, API_StatusValue } from 'lib/types/src'; export type Refs = State['refs']; -export type RefType = Refs[keyof Refs]; +export type RefType = Refs[keyof Refs] & { status?: API_StatusState }; export type Item = StoriesHash[keyof StoriesHash]; export type Dataset = Record<string, Item>; @@ -56,7 +57,7 @@ export interface ExpandType { moreCount: number; } -export type SearchItem = Item & { refId: string; path: string[] }; +export type SearchItem = Item & { refId: string; path: string[]; status?: API_StatusValue }; export type SearchResult = Fuse.FuseResultWithMatches<SearchItem> & Fuse.FuseResultWithScore<SearchItem>; diff --git a/code/ui/manager/src/components/sidebar/useExpanded.ts b/code/ui/manager/src/components/sidebar/useExpanded.ts index 854796c317f0..66e654f66a24 100644 --- a/code/ui/manager/src/components/sidebar/useExpanded.ts +++ b/code/ui/manager/src/components/sidebar/useExpanded.ts @@ -3,14 +3,13 @@ import { useStorybookApi } from '@storybook/manager-api'; import { STORIES_COLLAPSE_ALL, STORIES_EXPAND_ALL } from '@storybook/core-events'; import { global } from '@storybook/global'; import throttle from 'lodash/throttle.js'; -import type { Dispatch, MutableRefObject } from 'react'; -import type React from 'react'; +import type { Dispatch, MutableRefObject, Reducer } from 'react'; import { useCallback, useEffect, useReducer } from 'react'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; import type { Highlight } from './types'; // eslint-disable-next-line import/no-cycle -import { isAncestor, getAncestorIds, getDescendantIds, scrollIntoView } from './utils'; +import { isAncestor, getAncestorIds, getDescendantIds, scrollIntoView } from '../../utils/tree'; const { document } = global; @@ -76,7 +75,7 @@ export const useExpanded = ({ // Track the set of currently expanded nodes within this tree. // Root nodes are expanded by default. const [expanded, setExpanded] = useReducer< - React.Reducer<ExpandedState, ExpandAction>, + Reducer<ExpandedState, ExpandAction>, { refId: string; data: StoriesHash; diff --git a/code/ui/manager/src/components/sidebar/useHighlighted.ts b/code/ui/manager/src/components/sidebar/useHighlighted.ts index 5ee649081a61..ff5d5704d983 100644 --- a/code/ui/manager/src/components/sidebar/useHighlighted.ts +++ b/code/ui/manager/src/components/sidebar/useHighlighted.ts @@ -6,8 +6,9 @@ import { PRELOAD_ENTRIES } from '@storybook/core-events'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; import type { CombinedDataset, Highlight, Selection } from './types'; + // eslint-disable-next-line import/no-cycle -import { cycle, isAncestor, scrollIntoView } from './utils'; +import { cycle, isAncestor, scrollIntoView } from '../../utils/tree'; const { document, window: globalWindow } = global; diff --git a/code/ui/manager/src/containers/menu.tsx b/code/ui/manager/src/containers/menu.tsx index dba70ddb950c..a387cb24d5f3 100644 --- a/code/ui/manager/src/containers/menu.tsx +++ b/code/ui/manager/src/containers/menu.tsx @@ -2,10 +2,9 @@ import type { FC } from 'react'; import React, { useCallback, useMemo } from 'react'; import { Badge, Icons } from '@storybook/components'; -import type { API } from '@storybook/manager-api'; -import { styled, useTheme } from '@storybook/theming'; - +import type { API, State } from '@storybook/manager-api'; import { shortcutToHumanString } from '@storybook/manager-api'; +import { styled, useTheme } from '@storybook/theming'; const focusableUIElements = { storySearchField: 'storybook-explorer-searchfield', @@ -49,6 +48,7 @@ export const Shortcut: FC<{ keys: string[] }> = ({ keys }) => ( ); export const useMenu = ( + state: State, api: API, showToolbar: boolean, isFullscreen: boolean, @@ -64,18 +64,23 @@ export const useMenu = ( id: 'about', title: 'About your Storybook', onClick: () => api.navigateToSettingsPage('/settings/about'), - right: api.versionUpdateAvailable() && <Badge status="positive">Update</Badge>, }), [api] ); - const releaseNotes = useMemo( + const whatsNewNotificationsEnabled = + state.whatsNewData?.status === 'SUCCESS' && !state.disableWhatsNewNotifications; + const isWhatsNewUnread = api.isWhatsNewUnread(); + const whatsNew = useMemo( () => ({ - id: 'release-notes', - title: 'Release notes', - onClick: () => api.navigateToSettingsPage('/settings/release-notes'), + id: 'whats-new', + title: "What's new?", + onClick: () => api.navigateToSettingsPage('/settings/whats-new'), + right: whatsNewNotificationsEnabled && isWhatsNewUnread && ( + <Badge status="positive">Check it out</Badge> + ), }), - [api] + [api, whatsNewNotificationsEnabled, isWhatsNewUnread] ); const shortcuts = useMemo( @@ -225,7 +230,7 @@ export const useMenu = ( return useMemo( () => [ about, - ...(api.releaseNotesVersion() ? [releaseNotes] : []), + ...(state.whatsNewData?.status === 'SUCCESS' ? [whatsNew] : []), shortcuts, sidebarToggle, toolbarToogle, @@ -242,8 +247,8 @@ export const useMenu = ( ], [ about, - api, - releaseNotes, + state, + whatsNew, shortcuts, sidebarToggle, toolbarToogle, diff --git a/code/ui/manager/src/containers/sidebar.tsx b/code/ui/manager/src/containers/sidebar.tsx index 78a05c817ff3..5a8b52870f82 100755 --- a/code/ui/manager/src/containers/sidebar.tsx +++ b/code/ui/manager/src/containers/sidebar.tsx @@ -1,7 +1,7 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import type { Combo, StoriesHash } from '@storybook/manager-api'; -import { Consumer } from '@storybook/manager-api'; +import { types, Consumer } from '@storybook/manager-api'; import { Sidebar as SidebarComponent } from '../components/sidebar/Sidebar'; import { useMenu } from './menu'; @@ -17,26 +17,45 @@ const Sidebar = React.memo(function Sideber() { refId, layout: { showToolbar, isFullscreen, showPanel, showNav }, index, + status, indexError, previewInitialized, refs, } = state; - const menu = useMenu(api, showToolbar, isFullscreen, showPanel, showNav, enableShortcuts); + const menu = useMenu( + state, + api, + showToolbar, + isFullscreen, + showPanel, + showNav, + enableShortcuts + ); + + const whatsNewNotificationsEnabled = + state.whatsNewData?.status === 'SUCCESS' && !state.disableWhatsNewNotifications; + + const items = api.getElements(types.experimental_SIDEBAR_BOTTOM); + const bottom = useMemo(() => Object.values(items), [items]); + const top = useMemo(() => Object.values(api.getElements(types.experimental_SIDEBAR_TOP)), []); return { title: name, url, index, indexError, + status, previewInitialized, refs, storyId, refId, viewMode, menu, - menuHighlighted: api.versionUpdateAvailable(), + menuHighlighted: whatsNewNotificationsEnabled && api.isWhatsNewUnread(), enableShortcuts, + bottom, + extra: top, }; }; return ( diff --git a/code/ui/manager/src/globals/exports.ts b/code/ui/manager/src/globals/exports.ts index f21d954b5191..ef2523f0e06a 100644 --- a/code/ui/manager/src/globals/exports.ts +++ b/code/ui/manager/src/globals/exports.ts @@ -54,6 +54,7 @@ export default { 'Bar', 'Blockquote', 'Button', + 'ClipboardCode', 'Code', 'DL', 'Div', @@ -113,7 +114,14 @@ export default { 'resetComponents', 'withReset', ], - '@storybook/channels': ['Channel'], + '@storybook/channels': [ + 'Channel', + 'PostMessageTransport', + 'WebsocketTransport', + 'createBrowserChannel', + 'createPostMessageChannel', + 'createWebSocketChannel', + ], '@storybook/core-events': [ 'CHANNEL_CREATED', 'CONFIG_ERROR', @@ -130,13 +138,16 @@ export default { 'PREVIEW_BUILDER_PROGRESS', 'PREVIEW_KEYDOWN', 'REGISTER_SUBSCRIPTION', + 'REQUEST_WHATS_NEW_DATA', 'RESET_STORY_ARGS', + 'RESULT_WHATS_NEW_DATA', 'SELECT_STORY', 'SET_CONFIG', 'SET_CURRENT_STORY', 'SET_GLOBALS', 'SET_INDEX', 'SET_STORIES', + 'SET_WHATS_NEW_CACHE', 'SHARED_STATE_CHANGED', 'SHARED_STATE_SET', 'STORIES_COLLAPSE_ALL', @@ -152,6 +163,8 @@ export default { 'STORY_SPECIFIED', 'STORY_THREW_EXCEPTION', 'STORY_UNCHANGED', + 'TELEMETRY_ERROR', + 'TOGGLE_WHATS_NEW_NOTIFICATIONS', 'UPDATE_GLOBALS', 'UPDATE_QUERY_PARAMS', 'UPDATE_STORY_ARGS', diff --git a/code/ui/manager/src/index.tsx b/code/ui/manager/src/index.tsx index 9f843d0069e5..2836846be5b1 100644 --- a/code/ui/manager/src/index.tsx +++ b/code/ui/manager/src/index.tsx @@ -1,18 +1,21 @@ import { global } from '@storybook/global'; import type { FC } from 'react'; -import React from 'react'; +import React, { useMemo } from 'react'; import ReactDOM from 'react-dom'; import { Location, LocationProvider, useNavigate } from '@storybook/router'; -import { Provider as ManagerProvider } from '@storybook/manager-api'; +import { Provider as ManagerProvider, types } from '@storybook/manager-api'; import type { Combo } from '@storybook/manager-api'; import { ThemeProvider, ensure as ensureTheme } from '@storybook/theming'; +import { ProviderDoesNotExtendBaseProviderError } from '@storybook/core-events/manager-errors'; import { HelmetProvider } from 'react-helmet-async'; +import type { Addon_PageType } from '@storybook/types'; import App from './app'; import Provider from './provider'; +import { settingsPageAddon } from './settings'; // @ts-expect-error (Converted from ts-ignore) ThemeProvider.displayName = 'ThemeProvider'; @@ -45,19 +48,30 @@ const Main: FC<{ provider: Provider }> = ({ provider }) => { docsOptions={global?.DOCS_OPTIONS || {}} > {({ state, api }: Combo) => { - const panelCount = Object.keys(api.getPanels()).length; + const panelCount = Object.keys(api.getElements(types.PANEL)).length; + const pages: Addon_PageType[] = useMemo( + () => [settingsPageAddon, ...Object.values(api.getElements(types.experimental_PAGE))], + [Object.keys(api.getElements(types.experimental_PAGE)).join()] + ); + const story = api.getData(state.storyId, state.refId); const isLoading = story ? !!state.refs[state.refId] && !state.refs[state.refId].previewInitialized : !state.previewInitialized; + const layout = useMemo( + () => (isLoading ? { ...state.layout, showPanel: false } : state.layout), + [isLoading, state.layout] + ); + return ( <ThemeProvider key="theme.provider" theme={ensureTheme(state.theme)}> <App key="app" viewMode={state.viewMode} - layout={isLoading ? { ...state.layout, showPanel: false } : state.layout} + layout={layout} panelCount={panelCount} + pages={pages} /> </ThemeProvider> ); @@ -70,7 +84,7 @@ const Main: FC<{ provider: Provider }> = ({ provider }) => { export function renderStorybookUI(domNode: HTMLElement, provider: Provider) { if (!(provider instanceof Provider)) { - throw new Error('provider is not extended from the base Provider'); + throw new ProviderDoesNotExtendBaseProviderError(); } ReactDOM.render(<Root key="root" provider={provider} />, domNode); diff --git a/code/ui/manager/src/runtime.ts b/code/ui/manager/src/runtime.ts index ef3a91340cd1..dd29b9a45223 100644 --- a/code/ui/manager/src/runtime.ts +++ b/code/ui/manager/src/runtime.ts @@ -1,43 +1,47 @@ +/* eslint-disable local-rules/no-uncategorized-errors */ + import { global } from '@storybook/global'; import type { Channel } from '@storybook/channels'; import type { AddonStore } from '@storybook/manager-api'; import { addons } from '@storybook/manager-api'; import type { Addon_Types, Addon_Config } from '@storybook/types'; -import * as postMessage from '@storybook/channel-postmessage'; -import * as webSocket from '@storybook/channel-websocket'; -import { CHANNEL_CREATED } from '@storybook/core-events'; +import { createBrowserChannel } from '@storybook/channels'; +import { CHANNEL_CREATED, TELEMETRY_ERROR } from '@storybook/core-events'; +import { UncaughtManagerError } from '@storybook/core-events/manager-errors'; import Provider from './provider'; import { renderStorybookUI } from './index'; import { values } from './globals/runtime'; import { Keys } from './globals/types'; -const { FEATURES } = global; +const { FEATURES, CONFIG_TYPE } = global; class ReactProvider extends Provider { private addons: AddonStore; - // @ts-expect-error Unused, possibly remove, leaving, because it could be accessed even though it is private private channel: Channel; + /** + * @deprecated will be removed in 8.0, please use channel instead + */ private serverChannel?: Channel; constructor() { super(); - const postMessageChannel = postMessage.createChannel({ page: 'manager' }); + const channel = createBrowserChannel({ page: 'manager' }); - addons.setChannel(postMessageChannel); + addons.setChannel(channel); - postMessageChannel.emit(CHANNEL_CREATED); + channel.emit(CHANNEL_CREATED); this.addons = addons; - this.channel = postMessageChannel; + this.channel = channel; + global.__STORYBOOK_ADDONS_CHANNEL__ = channel; - if (FEATURES?.storyStoreV7) { - const serverChannel = webSocket.createChannel({}); - this.serverChannel = serverChannel; + if (FEATURES?.storyStoreV7 && CONFIG_TYPE === 'DEVELOPMENT') { + this.serverChannel = this.channel; addons.setServerChannel(this.serverChannel); } } @@ -55,12 +59,51 @@ class ReactProvider extends Provider { } } -const { document } = global; - -const rootEl = document.getElementById('root'); -renderStorybookUI(rootEl, new ReactProvider()); - // Apply all the globals Object.keys(Keys).forEach((key: keyof typeof Keys) => { global[Keys[key]] = values[key]; }); + +function preprocessError( + originalError: Error & { + fromStorybook?: boolean; + category?: string; + target?: any; + currentTarget?: any; + srcElement?: any; + } +) { + let error = originalError; + + if (!originalError.fromStorybook) { + error = new UncaughtManagerError(originalError); + } + + // DOM manipulation errors and other similar errors are not serializable as they contain + // circular references to the window object. If that's the case, we make a simplified copy + if (error.target === window || error.currentTarget === window || error.srcElement === window) { + error = new Error(originalError.message); + error.name = originalError.name || error.name; + error.category = originalError.category; + } + + return error; +} + +global.sendTelemetryError = (error) => { + const channel = global.__STORYBOOK_ADDONS_CHANNEL__; + channel.emit(TELEMETRY_ERROR, preprocessError(error)); +}; + +// handle all uncaught errors at the root of the application and log to telemetry +global.addEventListener('error', (args) => { + const error = args.error || args; + global.sendTelemetryError(error); +}); +global.addEventListener('unhandledrejection', ({ reason }) => { + global.sendTelemetryError(reason); +}); + +const { document } = global; +const rootEl = document.getElementById('root'); +renderStorybookUI(rootEl, new ReactProvider()); diff --git a/code/ui/manager/src/settings/SettingsFooter.tsx b/code/ui/manager/src/settings/SettingsFooter.tsx index 7da59d0d7283..7f2795ab6f55 100644 --- a/code/ui/manager/src/settings/SettingsFooter.tsx +++ b/code/ui/manager/src/settings/SettingsFooter.tsx @@ -23,7 +23,12 @@ const SettingsFooter: FC<any> = (props) => ( <Link secondary href="https://github.com/storybookjs/storybook" cancel={false} target="_blank"> GitHub </Link> - <Link secondary href="https://storybook.js.org/support" cancel={false} target="_blank"> + <Link + secondary + href="https://storybook.js.org/community#support" + cancel={false} + target="_blank" + > Support </Link> </Footer> diff --git a/code/ui/manager/src/settings/about.stories.jsx b/code/ui/manager/src/settings/about.stories.jsx deleted file mode 100644 index 7bb06a45ad0b..000000000000 --- a/code/ui/manager/src/settings/about.stories.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { actions as createActions } from '@storybook/addon-actions'; - -import { AboutScreen } from './about'; - -const info = { - plain: `- upgrade webpack & babel to latest\n- new addParameters and third argument to .add to pass data to addons\n- added the ability to theme storybook\n- improved ui for mobile devices\n- improved performance of addon-knobs`, -}; - -export default { - component: AboutScreen, - title: 'Settings/AboutScreen', - decorators: [ - (storyFn) => ( - <div - style={{ - position: 'relative', - height: '100vh', - width: '100vw', - }} - > - {storyFn()} - </div> - ), - ], -}; - -const actions = createActions('onClose'); - -export const UpToDate = () => ( - <AboutScreen latest={{ version: '7.0.0', info }} current={{ version: '7.0.0' }} {...actions} /> -); - -export const OldVersionRaceCondition = () => ( - <AboutScreen latest={{ version: '7.0.0', info }} current={{ version: '7.0.3' }} {...actions} /> -); - -export const NewVersionRequired = () => ( - <AboutScreen latest={{ version: '7.0.3', info }} current={{ version: '7.0.0' }} {...actions} /> -); - -export const FailedToFetchNewVersion = () => ( - <AboutScreen current={{ version: '7.0.0' }} {...actions} /> -); diff --git a/code/ui/manager/src/settings/about.stories.tsx b/code/ui/manager/src/settings/about.stories.tsx new file mode 100644 index 000000000000..67fcabcf6667 --- /dev/null +++ b/code/ui/manager/src/settings/about.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import { AboutScreen } from './about'; + +const meta = { + component: AboutScreen, + title: 'Settings/AboutScreen', + decorators: [ + (Story) => ( + <div + style={{ + position: 'relative', + height: '100vh', + width: '100vw', + }} + > + <Story /> + </div> + ), + ], +} satisfies Meta<typeof AboutScreen>; + +export default meta; + +type Story = StoryObj<typeof meta>; + +export const Default: Story = { + args: { + current: { + version: '7.0.1', + }, + }, + parameters: { + design: { + type: 'figma', + url: 'https://www.figma.com/file/ur4kydUbRqdDyfoZWzdiIw/Storybook-app?type=design&node-id=9564-120444&mode=design&t=0TPINZFpwgFQFQeX-4', + }, + }, +}; diff --git a/code/ui/manager/src/settings/about.tsx b/code/ui/manager/src/settings/about.tsx index af703e2ad108..7fb70f5eae59 100644 --- a/code/ui/manager/src/settings/about.tsx +++ b/code/ui/manager/src/settings/about.tsx @@ -1,172 +1,160 @@ +/* eslint-disable no-nested-ternary */ import type { FC } from 'react'; -import React, { Fragment } from 'react'; -import semver from 'semver'; +import React, { useState } from 'react'; import { styled } from '@storybook/theming'; import type { State } from '@storybook/manager-api'; -import Markdown from 'markdown-to-jsx'; -import { StorybookIcon, SyntaxHighlighter, Link, DocumentWrapper } from '@storybook/components'; - -import SettingsFooter from './SettingsFooter'; +import { Button as BaseButton, Icons, Link, StorybookIcon } from '@storybook/components'; const Header = styled.header(({ theme }) => ({ - marginBottom: 20, - fontSize: theme.typography.size.m3, + marginBottom: 32, + fontSize: theme.typography.size.l2, color: theme.base === 'light' ? theme.color.darkest : theme.color.lightest, fontWeight: theme.typography.weight.bold, alignItems: 'center', display: 'flex', '> svg': { - height: 32, + height: 48, width: 'auto', marginRight: 8, }, })); -const Subheading = styled.span(({ theme }) => ({ - letterSpacing: '0.35em', - textTransform: 'uppercase', - fontWeight: theme.typography.weight.bold, - fontSize: theme.typography.size.s2 - 1, - lineHeight: '24px', - color: theme.textMutedColor, -})); +const Container = styled.div({ + display: `flex`, + alignItems: 'center', + justifyContent: 'center', + height: 'calc(100% - 40px)', + flexDirection: 'column', +}); + +const UpgradeBlock = styled.div(({ theme }) => { + return { + border: '1px solid', + borderRadius: 5, + padding: 20, + margin: 20, + marginTop: 0, + maxWidth: 400, + borderColor: theme.appBorderColor, + fontSize: theme.typography.size.s2, + }; +}); -const SubheadingLink = styled(Link)(({ theme }) => ({ - fontSize: theme.typography.size.s1, +const Code = styled.pre(({ theme }) => ({ + background: theme.base === 'light' ? 'rgba(0, 0, 0, 0.05)' : theme.appBorderColor, + fontSize: theme.typography.size.s2 - 1, + margin: '4px 0 16px', })); -const Subheader = styled.div({ +const Footer = styled.div(({ theme }) => ({ + marginBottom: 24, display: 'flex', - justifyContent: 'space-between', + flexDirection: 'column', alignItems: 'center', - marginBottom: '.75rem', -}); + color: theme.base === 'light' ? theme.color.dark : theme.color.lightest, + fontWeight: theme.typography.weight.regular, + fontSize: theme.typography.size.s2, +})); -const UpdateMessage = styled.div<{ status: 'positive' | 'negative' | string }>( - ({ status, theme }) => { - if (status === 'positive') { - return { background: theme.background.positive, color: theme.color.positiveText }; - } - if (status === 'negative') { - return { background: theme.background.negative, color: theme.color.negativeText }; - } - return { - background: theme.base === 'light' ? '#EAF3FC' : theme.color.darkest, - color: theme.base === 'light' ? theme.color.darkest : theme.defaultText, - }; +const SquareButton = styled(BaseButton)(({ theme }) => ({ + '&&': { + borderRadius: 4, + fontSize: '13px', + lineHeight: '14px', + color: theme.base === 'light' ? theme.color.darker : theme.color.lightest, + padding: '9px 12px', + svg: { + marginRight: 6, + }, }, - - ({ theme }) => ({ - fontWeight: theme.typography.weight.bold, - fontSize: theme.typography.size.s2, - padding: '10px 20px', - marginBottom: 24, - borderRadius: theme.appBorderRadius, - border: `1px solid ${theme.appBorderColor}`, - textAlign: 'center', - }) -); - -const ErrorMessage = styled.div(({ theme }) => ({ - fontWeight: theme.typography.weight.bold, - textAlign: 'center', })); -const Upgrade = styled.div(({ theme }) => ({ - marginTop: 20, - borderTop: `1px solid ${theme.appBorderColor}`, +const TabButton = styled(BaseButton)<{ active: boolean }>(({ theme, active }) => ({ + '&&': { + padding: 2, + paddingRight: 8, + margin: 0, + color: active + ? theme.color.secondary + : theme.base === 'light' + ? theme.color.dark + : theme.color.lightest, + }, })); -const Container = styled.div({ - padding: `3rem 20px`, - maxWidth: 600, - margin: '0 auto', -}); +const StyledLink = styled(Link as any)(({ theme }) => ({ + '&&': { + fontWeight: theme.typography.weight.bold, + color: theme.base === 'light' ? theme.color.dark : theme.color.light, + }, + '&:hover': { + color: theme.base === 'light' ? theme.color.darkest : theme.color.lightest, + }, +})); const AboutScreen: FC<{ - latest: State['versions']['latest']; current: State['versions']['current']; -}> = ({ latest = null, current }) => { - const canUpdate = latest && semver.gt(latest.version, current.version); - - let updateMessage; - if (latest) { - if (canUpdate) { - updateMessage = ( - <UpdateMessage status="positive"> - Storybook {latest.version} is available. Upgrade from {current.version} now. - </UpdateMessage> - ); - } else { - updateMessage = ( - <UpdateMessage status="neutral">Looking good! You're up to date.</UpdateMessage> - ); - } - } else { - updateMessage = ( - <UpdateMessage status="negative"> - Oops! The latest version of Storybook couldn't be fetched. - </UpdateMessage> - ); - } - + onNavigateToWhatsNew?: () => void; +}> = ({ current, onNavigateToWhatsNew }) => { + const [activeTab, setActiveTab] = useState<'npm' | 'pnpm'>('npm'); return ( <Container> + <div style={{ flex: '1' }} /> <Header> - <StorybookIcon /> - Storybook {current.version} + <StorybookIcon /> Storybook </Header> - - {updateMessage} - - {latest ? ( - <Fragment> - <Subheader> - <Subheading>{latest.version} Changelog</Subheading> - <SubheadingLink - secondary - href="https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md" - withArrow - cancel={false} - target="_blank" - > - Read full changelog - </SubheadingLink> - </Subheader> - <DocumentWrapper> - <Markdown>{latest.info.plain}</Markdown> - </DocumentWrapper> - </Fragment> - ) : ( - <ErrorMessage> - <Link - href="https://github.com/storybookjs/storybook/releases" - target="_blank" - withArrow - secondary - cancel={false} + <UpgradeBlock> + <strong>You are on Storybook {current.version}</strong> + <p>Run the following script to check for updates and upgrade to the latest version.</p> + <div> + <TabButton active={activeTab === 'npm'} onClick={() => setActiveTab('npm')}> + npm + </TabButton> + <TabButton active={activeTab === 'pnpm'} onClick={() => setActiveTab('pnpm')}> + pnpm + </TabButton> + </div> + + <Code> + {activeTab === 'npm' + ? 'npx storybook@latest upgrade' + : 'pnpm dlx storybook@latest upgrade'} + </Code> + {onNavigateToWhatsNew && ( + // eslint-disable-next-line jsx-a11y/anchor-is-valid + <Link onClick={onNavigateToWhatsNew}>See what's new in Storybook</Link> + )} + </UpgradeBlock> + + <div style={{ flex: '1.2' }} /> + <Footer> + <div style={{ marginBottom: 12 }}> + <SquareButton + isLink + outline + small + href="https://github.com/storybookjs/storybook" + style={{ marginRight: 12 }} > - Check Storybook's release history - </Link> - </ErrorMessage> - )} - - {canUpdate && ( - <Upgrade> - <DocumentWrapper> - <p> - <b>Upgrade all Storybook packages to latest:</b> - </p> - <SyntaxHighlighter language="bash" copyable padded bordered> - npx storybook@latest upgrade - </SyntaxHighlighter> - </DocumentWrapper> - </Upgrade> - )} - - <SettingsFooter /> + <Icons icon="github" style={{ display: 'inline', marginRight: 5 }} /> + GitHub + </SquareButton> + + <SquareButton isLink outline small href="https://storybook.js.org/docs"> + <Icons icon="document" style={{ display: 'inline', marginRight: 5 }} /> + Documentation + </SquareButton> + </div> + <div> + Open source software maintained by{' '} + <StyledLink href="https://www.chromatic.com/">Chromatic</StyledLink> and the{' '} + <StyledLink href="https://github.com/storybookjs/storybook/graphs/contributors"> + Storybook Community + </StyledLink> + </div> + </Footer> </Container> ); }; diff --git a/code/ui/manager/src/settings/about_page.tsx b/code/ui/manager/src/settings/about_page.tsx index 34640957ad18..e20d89d5362a 100644 --- a/code/ui/manager/src/settings/about_page.tsx +++ b/code/ui/manager/src/settings/about_page.tsx @@ -1,7 +1,7 @@ import type { FC } from 'react'; -import React, { Component } from 'react'; +import React, { Component, useCallback } from 'react'; -import { type API, useStorybookApi } from '@storybook/manager-api'; +import { type API, useStorybookApi, useStorybookState } from '@storybook/manager-api'; import { AboutScreen } from './about'; @@ -20,10 +20,19 @@ class NotificationClearer extends Component<{ api: API; notificationId: string } const AboutPage: FC = () => { const api = useStorybookApi(); + const state = useStorybookState(); + const onNavigateToWhatsNew = useCallback(() => { + api.changeSettingsTab('whats-new'); + }, [api]); return ( <NotificationClearer api={api} notificationId="update"> - <AboutScreen current={api.getCurrentVersion()} latest={api.getLatestVersion()} /> + <AboutScreen + current={api.getCurrentVersion()} + onNavigateToWhatsNew={ + state.whatsNewData?.status === 'SUCCESS' ? onNavigateToWhatsNew : undefined + } + /> </NotificationClearer> ); }; diff --git a/code/ui/manager/src/settings/index.tsx b/code/ui/manager/src/settings/index.tsx index 773147c991aa..24b0b12a8229 100644 --- a/code/ui/manager/src/settings/index.tsx +++ b/code/ui/manager/src/settings/index.tsx @@ -1,4 +1,4 @@ -import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; +import { useStorybookApi, useStorybookState, types } from '@storybook/manager-api'; import { IconButton, Icons, FlexBar, TabBar, TabButton, ScrollArea } from '@storybook/components'; import { Location, Route } from '@storybook/router'; import { styled } from '@storybook/theming'; @@ -6,8 +6,9 @@ import { global } from '@storybook/global'; import type { FC, SyntheticEvent } from 'react'; import React, { Fragment } from 'react'; +import type { Addon_PageType } from '@storybook/types'; import { AboutPage } from './about_page'; -import { ReleaseNotesPage } from './release_notes_page'; +import { WhatsNewPage } from './whats_new_page'; import { ShortcutsPage } from './shortcuts_page'; import { matchesModifiers, matchesKeyCode } from '../keybinding'; @@ -61,9 +62,9 @@ const Content = styled(ScrollArea)( const Pages: FC<{ onClose: () => void; enableShortcuts?: boolean; - hasReleaseNotes?: boolean; changeTab: (tab: string) => void; -}> = ({ changeTab, onClose, enableShortcuts = true, hasReleaseNotes = false }) => { + enableWhatsNew: boolean; +}> = ({ changeTab, onClose, enableShortcuts = true, enableWhatsNew }) => { React.useEffect(() => { const handleEscape = (event: KeyboardEvent) => { if (!enableShortcuts || event.repeat) return; @@ -81,8 +82,8 @@ const Pages: FC<{ <FlexBar border> <TabBar role="tablist"> <TabBarButton id="about" title="About" changeTab={changeTab} /> - {hasReleaseNotes && ( - <TabBarButton id="release-notes" title="Release notes" changeTab={changeTab} /> + {enableWhatsNew && ( + <TabBarButton id="whats-new" title="What's new?" changeTab={changeTab} /> )} <TabBarButton id="shortcuts" title="Keyboard shortcuts" changeTab={changeTab} /> </TabBar> @@ -100,8 +101,8 @@ const Pages: FC<{ <Route path="about"> <AboutPage key="about" /> </Route> - <Route path="release-notes"> - <ReleaseNotesPage key="release-notes" /> + <Route path="whats-new"> + <WhatsNewPage key="whats-new" /> </Route> <Route path="shortcuts"> <ShortcutsPage key="shortcuts" /> @@ -118,7 +119,7 @@ const SettingsPages: FC = () => { return ( <Pages - hasReleaseNotes={!!api.releaseNotesVersion()} + enableWhatsNew={state.whatsNewData?.status === 'SUCCESS'} enableShortcuts={state.ui.enableShortcuts} changeTab={changeTab} onClose={api.closeSettings} @@ -126,4 +127,14 @@ const SettingsPages: FC = () => { ); }; -export { SettingsPages as default }; +export const settingsPageAddon: Addon_PageType = { + id: 'settings', + url: '/settings/', + title: 'Settings', + type: types.experimental_PAGE, + render: () => ( + <Route path="/settings/" startsWith> + <SettingsPages /> + </Route> + ), +}; diff --git a/code/ui/manager/src/settings/release_notes.stories.tsx b/code/ui/manager/src/settings/release_notes.stories.tsx deleted file mode 100644 index 20aa876352fc..000000000000 --- a/code/ui/manager/src/settings/release_notes.stories.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import { actions as makeActions } from '@storybook/addon-actions'; - -import { PureReleaseNotesScreen } from './release_notes'; - -export default { - component: PureReleaseNotesScreen, - title: 'Settings/ReleaseNotes', -}; - -const actions = makeActions('setLoaded', 'onClose'); - -const VERSION = '6.0.0'; - -export const Loading = () => ( - <PureReleaseNotesScreen - didHitMaxWaitTime={false} - isLoaded={false} - version={VERSION} - {...actions} - /> -); - -export const DidHitMaxWaitTime = () => ( - <PureReleaseNotesScreen didHitMaxWaitTime isLoaded={false} version={VERSION} {...actions} /> -); diff --git a/code/ui/manager/src/settings/release_notes.tsx b/code/ui/manager/src/settings/release_notes.tsx deleted file mode 100644 index 90f9c23fff56..000000000000 --- a/code/ui/manager/src/settings/release_notes.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import type { FC, ComponentProps } from 'react'; -import React, { useEffect, useState, Fragment } from 'react'; -import { styled } from '@storybook/theming'; -import { Icons, Loader } from '@storybook/components'; - -const Centered = styled.div({ - top: '50%', - position: 'absolute', - transform: 'translateY(-50%)', - width: '100%', - textAlign: 'center', -}); - -const LoaderWrapper = styled.div({ - position: 'relative', - height: '32px', -}); - -const Message = styled.div(({ theme }) => ({ - paddingTop: '12px', - color: theme.textMutedColor, - maxWidth: '295px', - margin: '0 auto', - fontSize: `${theme.typography.size.s1}px`, - lineHeight: `16px`, -})); - -const Iframe = styled.iframe<{ isLoaded: boolean }>( - { - position: 'absolute', - top: 0, - left: 0, - right: 0, - bottom: 0, - border: 0, - margin: 0, - padding: 0, - width: '100%', - height: '100%', - }, - ({ isLoaded }) => ({ visibility: isLoaded ? 'visible' : 'hidden' }) -); - -const AlertIcon = styled(((props) => <Icons icon="alert" {...props} />) as FC< - Omit<ComponentProps<typeof Icons>, 'icon'> ->)(({ theme }) => ({ - color: theme.textMutedColor, - width: 32, - height: 32, - margin: '0 auto', -})); - -const getIframeUrl = (version: string) => { - const [major, minor] = version.split('.'); - return `https://storybook.js.org/releases/iframe/${major}.${minor}`; -}; - -const ReleaseNotesLoader: FC = () => ( - <Centered> - <LoaderWrapper> - <Loader /> - </LoaderWrapper> - <Message>Loading release notes</Message> - </Centered> -); - -const MaxWaitTimeMessaging: FC = () => ( - <Centered> - <AlertIcon /> - <Message> - The release notes couldn't be loaded. Check your internet connection and try again. - </Message> - </Centered> -); - -export interface ReleaseNotesProps { - didHitMaxWaitTime: boolean; - isLoaded: boolean; - setLoaded: (isLoaded: boolean) => void; - version: string; -} - -const PureReleaseNotesScreen: FC<ReleaseNotesProps> = ({ - didHitMaxWaitTime, - isLoaded, - setLoaded, - version, -}) => ( - <Fragment> - {!isLoaded && !didHitMaxWaitTime && <ReleaseNotesLoader />} - {didHitMaxWaitTime ? ( - <MaxWaitTimeMessaging /> - ) : ( - <Iframe - isLoaded={isLoaded} - onLoad={() => setLoaded(true)} - src={getIframeUrl(version)} - title={`Release notes for Storybook version ${version}`} - /> - )} - </Fragment> -); - -const MAX_WAIT_TIME = 10000; // 10 seconds - -const ReleaseNotesScreen: FC< - Omit<ReleaseNotesProps, 'isLoaded' | 'setLoaded' | 'didHitMaxWaitTime'> -> = ({ version }) => { - const [isLoaded, setLoaded] = useState(false); - const [didHitMaxWaitTime, setDidHitMaxWaitTime] = useState(false); - - useEffect(() => { - const timer = setTimeout(() => !isLoaded && setDidHitMaxWaitTime(true), MAX_WAIT_TIME); - return () => clearTimeout(timer); - }, [isLoaded]); - - return ( - <PureReleaseNotesScreen - didHitMaxWaitTime={didHitMaxWaitTime} - isLoaded={isLoaded} - setLoaded={setLoaded} - version={version} - /> - ); -}; - -export { ReleaseNotesScreen, PureReleaseNotesScreen }; diff --git a/code/ui/manager/src/settings/release_notes_page.tsx b/code/ui/manager/src/settings/release_notes_page.tsx deleted file mode 100644 index 536954bce484..000000000000 --- a/code/ui/manager/src/settings/release_notes_page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { useStorybookApi } from '@storybook/manager-api'; -import type { FC } from 'react'; -import React, { useEffect } from 'react'; - -import { ReleaseNotesScreen } from './release_notes'; - -const ReleaseNotesPage: FC = () => { - const api = useStorybookApi(); - - useEffect(() => { - api.setDidViewReleaseNotes(); - }, []); - - const version = api.releaseNotesVersion(); - - return <ReleaseNotesScreen version={version} />; -}; - -export { ReleaseNotesPage }; diff --git a/code/ui/manager/src/settings/typings.d.ts b/code/ui/manager/src/settings/typings.d.ts deleted file mode 100644 index fc0733790e6b..000000000000 --- a/code/ui/manager/src/settings/typings.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable @typescript-eslint/naming-convention */ -declare module '@storybook/components/src/treeview/utils'; - -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; - -declare var __REACT__: any; -declare var __REACTDOM__: any; -declare var __STORYBOOKCOMPONENTS__: any; -declare var __STORYBOOKCHANNELS__: any; -declare var __STORYBOOKCOREEVENTS__: any; -declare var __STORYBOOKROUTER__: any; -declare var __STORYBOOKTHEMING__: any; -declare var __STORYBOOKAPI__: any; -declare var __STORYBOOKADDONS__: any; -declare var __STORYBOOKCLIENTLOGGER__: any; diff --git a/code/ui/manager/src/settings/whats_new.tsx b/code/ui/manager/src/settings/whats_new.tsx new file mode 100644 index 000000000000..b9e11aea2a7b --- /dev/null +++ b/code/ui/manager/src/settings/whats_new.tsx @@ -0,0 +1,225 @@ +import type { ComponentProps, FC } from 'react'; +import React, { Fragment, useEffect, useState } from 'react'; +import { styled, useTheme } from '@storybook/theming'; +import { Button, IconButton, Icons, Loader } from '@storybook/components'; +import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; +import { global } from '@storybook/global'; + +const Centered = styled.div({ + top: '50%', + position: 'absolute', + transform: 'translateY(-50%)', + width: '100%', + textAlign: 'center', +}); + +const LoaderWrapper = styled.div({ + position: 'relative', + height: '32px', +}); + +const Message = styled.div(({ theme }) => ({ + paddingTop: '12px', + color: theme.textMutedColor, + maxWidth: '295px', + margin: '0 auto', + fontSize: `${theme.typography.size.s1}px`, + lineHeight: `16px`, +})); + +const Container = styled.div(({ theme }) => ({ + position: 'absolute', + width: '100%', + bottom: '40px', + background: theme.background.bar, + fontSize: `13px`, + borderTop: '1px solid', + borderColor: theme.appBorderColor, + padding: '8px 12px', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', +})); + +const ToggleNotificationButton = styled(IconButton)(({ theme }) => ({ + fontWeight: theme.typography.weight.regular, + color: theme.color.mediumdark, + margin: 0, +})); + +const CopyButton = styled(Button)(({ theme }) => ({ + '&&': { + fontSize: `13px`, + color: theme.color.defaultText, + margin: 0, + padding: 0, + borderRadius: 0, + }, +})); + +export const WhatsNewFooter = ({ + isNotificationsEnabled, + onToggleNotifications, + onCopyLink, +}: { + isNotificationsEnabled: boolean; + onToggleNotifications?: () => void; + onCopyLink?: () => void; +}) => { + const theme = useTheme(); + const [copyText, setCopyText] = useState('Copy Link'); + const copyLink = () => { + onCopyLink(); + setCopyText('Copied!'); + setTimeout(() => setCopyText('Copy Link'), 4000); + }; + + return ( + <Container> + <div style={{ display: 'flex', alignItems: 'center', gap: 10 }}> + <Icons icon="heart" color={theme.color.mediumdark} /> + <div>Share this with your team.</div> + <CopyButton onClick={copyLink} small> + {copyText} + </CopyButton> + </div> + <ToggleNotificationButton onClick={onToggleNotifications}> + {isNotificationsEnabled ? ( + <> + <Icons icon="eyeclose" /> +  Hide notifications + </> + ) : ( + <> + <Icons icon="eye" /> +  Show notifications + </> + )} + </ToggleNotificationButton> + </Container> + ); +}; + +const Iframe = styled.iframe<{ isLoaded: boolean }>( + { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + border: 0, + margin: 0, + padding: 0, + width: '100%', + height: 'calc(100% - 80px)', + background: 'white', + }, + ({ isLoaded }) => ({ visibility: isLoaded ? 'visible' : 'hidden' }) +); + +const AlertIcon = styled(((props) => <Icons icon="alert" {...props} />) as FC< + Omit<ComponentProps<typeof Icons>, 'icon'> +>)(({ theme }) => ({ + color: theme.textMutedColor, + width: 32, + height: 32, + margin: '0 auto', +})); + +const WhatsNewLoader: FC = () => ( + <Centered> + <LoaderWrapper> + <Loader /> + </LoaderWrapper> + <Message>Loading...</Message> + </Centered> +); + +const MaxWaitTimeMessaging: FC = () => ( + <Centered> + <AlertIcon /> + <Message>The page couldn't be loaded. Check your internet connection and try again.</Message> + </Centered> +); + +export interface WhatsNewProps { + didHitMaxWaitTime: boolean; + isLoaded: boolean; + onLoad: () => void; + url?: string; + isNotificationsEnabled: boolean; + onCopyLink?: () => void; + onToggleNotifications?: () => void; +} + +const PureWhatsNewScreen: FC<WhatsNewProps> = ({ + didHitMaxWaitTime, + isLoaded, + onLoad, + url, + onCopyLink, + onToggleNotifications, + isNotificationsEnabled, +}) => ( + <Fragment> + {!isLoaded && !didHitMaxWaitTime && <WhatsNewLoader />} + {didHitMaxWaitTime ? ( + <MaxWaitTimeMessaging /> + ) : ( + <> + <Iframe isLoaded={isLoaded} onLoad={onLoad} src={url} title={`What's new?`} /> + <WhatsNewFooter + isNotificationsEnabled={isNotificationsEnabled} + onToggleNotifications={onToggleNotifications} + onCopyLink={onCopyLink} + /> + </> + )} + </Fragment> +); + +const MAX_WAIT_TIME = 10000; // 10 seconds + +const WhatsNewScreen: FC = () => { + const api = useStorybookApi(); + const state = useStorybookState(); + const { whatsNewData } = state; + const [isLoaded, setLoaded] = useState(false); + const [didHitMaxWaitTime, setDidHitMaxWaitTime] = useState(false); + + useEffect(() => { + const timer = setTimeout(() => !isLoaded && setDidHitMaxWaitTime(true), MAX_WAIT_TIME); + return () => clearTimeout(timer); + }, [isLoaded]); + + if (whatsNewData?.status !== 'SUCCESS') return null; + + const isNotificationsEnabled = !whatsNewData.disableWhatsNewNotifications; + + return ( + <PureWhatsNewScreen + didHitMaxWaitTime={didHitMaxWaitTime} + isLoaded={isLoaded} + onLoad={() => { + api.whatsNewHasBeenRead(); + setLoaded(true); + }} + url={whatsNewData.url} + isNotificationsEnabled={isNotificationsEnabled} + onCopyLink={() => { + navigator.clipboard?.writeText(whatsNewData.blogUrl ?? whatsNewData.url); + }} + onToggleNotifications={() => { + if (isNotificationsEnabled) { + if (global.confirm('All update notifications will no longer be shown. Are you sure?')) { + api.toggleWhatsNewNotifications(); + } + } else { + api.toggleWhatsNewNotifications(); + } + }} + /> + ); +}; + +export { WhatsNewScreen, PureWhatsNewScreen }; diff --git a/code/ui/manager/src/settings/whats_new_footer.stories.tsx b/code/ui/manager/src/settings/whats_new_footer.stories.tsx new file mode 100644 index 000000000000..8815eb0ec1c2 --- /dev/null +++ b/code/ui/manager/src/settings/whats_new_footer.stories.tsx @@ -0,0 +1,22 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { WhatsNewFooter } from './whats_new'; + +const meta = { + component: WhatsNewFooter, +} satisfies Meta<typeof WhatsNewFooter>; + +export default meta; + +type Story = StoryObj<typeof meta>; + +export const Default: Story = { + args: { + isNotificationsEnabled: false, + }, + parameters: { + design: { + type: 'figma', + url: 'https://www.figma.com/file/ur4kydUbRqdDyfoZWzdiIw/Storybook-app?type=design&node-id=9562-117308&mode=design&t=dJUhQrYPI3PCqPg2-4', + }, + }, +}; diff --git a/code/ui/manager/src/settings/whats_new_page.tsx b/code/ui/manager/src/settings/whats_new_page.tsx new file mode 100644 index 000000000000..9aa4f776db89 --- /dev/null +++ b/code/ui/manager/src/settings/whats_new_page.tsx @@ -0,0 +1,10 @@ +import type { FC } from 'react'; +import React from 'react'; + +import { WhatsNewScreen } from './whats_new'; + +const WhatsNewPage: FC = () => { + return <WhatsNewScreen />; +}; + +export { WhatsNewPage }; diff --git a/code/ui/manager/src/typings.d.ts b/code/ui/manager/src/typings.d.ts index 0a39bf209901..2ff3df07e63e 100644 --- a/code/ui/manager/src/typings.d.ts +++ b/code/ui/manager/src/typings.d.ts @@ -2,19 +2,28 @@ declare module 'chromatic/isChromatic'; declare var DOCS_OPTIONS: any; -declare var CONFIG_TYPE: any; +declare var CONFIG_TYPE: 'DEVELOPMENT' | 'PRODUCTION'; declare var PREVIEW_URL: any; declare var __STORYBOOK_ADDONS_MANAGER: any; declare var RELEASE_NOTES_DATA: any; -declare var FEATURES: - | { - storyStoreV7?: boolean; - argTypeTargetsV7?: boolean; - } - | undefined; +declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var REFS: any; declare var VERSIONCHECK: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; + +declare var __REACT__: any; +declare var __REACTDOM__: any; +declare var __STORYBOOKCOMPONENTS__: any; +declare var __STORYBOOKCOMPONENTSEXPERIMENTAL__: any; +declare var __STORYBOOKCHANNELS__: any; +declare var __STORYBOOKCOREEVENTS__: any; +declare var __STORYBOOKROUTER__: any; +declare var __STORYBOOKTHEMING__: any; +declare var __STORYBOOKAPI__: any; +declare var __STORYBOOKADDONS__: any; +declare var __STORYBOOKCLIENTLOGGER__: any; +declare var __STORYBOOK_ADDONS_CHANNEL__: any; +declare var sendTelemetryError: (error: any) => void; diff --git a/code/ui/manager/src/utils/status.test.ts b/code/ui/manager/src/utils/status.test.ts new file mode 100644 index 000000000000..294e23caea6d --- /dev/null +++ b/code/ui/manager/src/utils/status.test.ts @@ -0,0 +1,50 @@ +import { getHighestStatus, getGroupStatus } from './status'; +import { mockDataset } from '../components/sidebar/mockdata'; + +describe('getHighestStatus', () => { + test('default value', () => { + expect(getHighestStatus([])).toBe('unknown'); + }); + test('should return the highest status', () => { + expect(getHighestStatus(['success', 'error', 'warn', 'pending'])).toBe('error'); + expect(getHighestStatus(['error', 'error', 'warn', 'pending'])).toBe('error'); + expect(getHighestStatus(['warn', 'pending'])).toBe('warn'); + }); +}); + +describe('getGroupStatus', () => { + test('empty case', () => { + expect(getGroupStatus({}, {})).toEqual({}); + }); + test('should return a color', () => { + expect( + getGroupStatus(mockDataset.withRoot, { + 'group-1--child-b1': { a: { status: 'warn', description: '', title: '' } }, + }) + ).toMatchInlineSnapshot(` + Object { + "group-1": "warn", + "root-1-child-a1": "unknown", + "root-1-child-a2": "unknown", + "root-3-child-a2": "unknown", + } + `); + }); + test('should return the highest status', () => { + expect( + getGroupStatus(mockDataset.withRoot, { + 'group-1--child-b1': { + a: { status: 'warn', description: '', title: '' }, + b: { status: 'error', description: '', title: '' }, + }, + }) + ).toMatchInlineSnapshot(` + Object { + "group-1": "error", + "root-1-child-a1": "unknown", + "root-1-child-a2": "unknown", + "root-3-child-a2": "unknown", + } + `); + }); +}); diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx new file mode 100644 index 000000000000..259949d3c1ea --- /dev/null +++ b/code/ui/manager/src/utils/status.tsx @@ -0,0 +1,48 @@ +import type { Icons } from '@storybook/components'; +import type { ComponentProps } from 'react'; +import type { API_HashEntry, API_StatusState, API_StatusValue } from '@storybook/types'; +// eslint-disable-next-line import/no-cycle +import { getDescendantIds } from './tree'; + +export const statusPriority: API_StatusValue[] = ['unknown', 'pending', 'success', 'warn', 'error']; +export const statusMapping: Record< + API_StatusValue, + [ComponentProps<typeof Icons>['icon'] | null, string | null, string | null] +> = { + unknown: [null, null, null], + pending: ['watch', 'currentColor', 'currentColor'], + success: ['circle', 'green', 'currentColor'], + warn: ['circle', 'orange', '#A15C20'], + error: ['circle', 'red', 'brown'], +}; + +export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue => { + return statusPriority.reduce( + (acc, status) => (statuses.includes(status) ? status : acc), + 'unknown' + ); +}; + +export function getGroupStatus( + collapsedData: { + [x: string]: Partial<API_HashEntry>; + }, + status: API_StatusState +): Record<string, API_StatusValue> { + return Object.values(collapsedData).reduce<Record<string, API_StatusValue>>((acc, item) => { + if (item.type === 'group' || item.type === 'component') { + const leafs = getDescendantIds(collapsedData as any, item.id, false) + .map((id) => collapsedData[id]) + .filter((i) => i.type === 'story'); + + const combinedStatus = getHighestStatus( + leafs.flatMap((story) => Object.values(status?.[story.id] || {})).map((s) => s.status) + ); + + if (combinedStatus) { + acc[item.id] = combinedStatus; + } + } + return acc; + }, {}); +} diff --git a/code/ui/manager/src/components/sidebar/utils.test.js b/code/ui/manager/src/utils/tree.test.js similarity index 96% rename from code/ui/manager/src/components/sidebar/utils.test.js rename to code/ui/manager/src/utils/tree.test.js index 7be74eb145b6..3481e21f6c29 100644 --- a/code/ui/manager/src/components/sidebar/utils.test.js +++ b/code/ui/manager/src/utils/tree.test.js @@ -1,6 +1,6 @@ -import { mockDataset, mockExpanded, mockSelected } from './mockdata'; +import { mockDataset, mockExpanded, mockSelected } from '../components/sidebar/mockdata'; -import * as utils from './utils'; +import * as utils from './tree'; const noRoot = { dataset: mockDataset.noRoot, diff --git a/code/ui/manager/src/components/sidebar/utils.ts b/code/ui/manager/src/utils/tree.ts similarity index 96% rename from code/ui/manager/src/components/sidebar/utils.ts rename to code/ui/manager/src/utils/tree.ts index e751ef5e9bd8..d650362afcf3 100644 --- a/code/ui/manager/src/components/sidebar/utils.ts +++ b/code/ui/manager/src/utils/tree.ts @@ -4,8 +4,8 @@ import type { SyntheticEvent } from 'react'; import type { HashEntry, IndexHash } from '@storybook/manager-api'; // eslint-disable-next-line import/no-cycle -import { DEFAULT_REF_ID } from './Sidebar'; -import type { Item, RefType, Dataset, SearchItem } from './types'; +import { DEFAULT_REF_ID } from '../components/sidebar/Sidebar'; +import type { Item, RefType, Dataset, SearchItem } from '../components/sidebar/types'; const { document, window: globalWindow } = global; diff --git a/code/ui/manager/tsconfig.json b/code/ui/manager/tsconfig.json index aff8c3b01d62..4bc2c0bffe1f 100644 --- a/code/ui/manager/tsconfig.json +++ b/code/ui/manager/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] diff --git a/code/yarn.lock b/code/yarn.lock index 32dbbfbc04d5..debf9c20cd8d 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8c0 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.2.0 resolution: "@adobe/css-tools@npm:4.2.0" @@ -12,7 +19,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:2.2.1": +"@ampproject/remapping@npm:2.2.1, @ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.2.1": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" dependencies: @@ -22,60 +29,60 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.1.0, @ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" +"@angular-devkit/architect@npm:0.1601.5": + version: 0.1601.5 + resolution: "@angular-devkit/architect@npm:0.1601.5" dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d267d8def81d75976bed4f1f81418a234a75338963ed0b8565342ef3918b07e9043806eb3a1736df7ac0774edb98e2890f880bba42817f800495e4ae3fac995e + "@angular-devkit/core": 16.1.5 + rxjs: 7.8.1 + checksum: 87126d226c8d94f052df4838345a3ca49e6bfe6c03093f388cc7c91113e3213f1910062cb71a64f5ebc4a698a710b9c60f41a943663a9761670824420c16528b languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1600.0-rc.4, @angular-devkit/architect@npm:^0.1600.0-rc.4": - version: 0.1600.0-rc.4 - resolution: "@angular-devkit/architect@npm:0.1600.0-rc.4" +"@angular-devkit/architect@npm:^0.1600.0-rc.4": + version: 0.1600.6 + resolution: "@angular-devkit/architect@npm:0.1600.6" dependencies: - "@angular-devkit/core": 16.0.0-rc.4 + "@angular-devkit/core": 16.0.6 rxjs: 7.8.1 - checksum: dcd7b386c7eb4d4487961da7224416624c5afa9768bb8e6d77e99e9b0ca902f65baa979b8aa56d3cd362b3bcf832e5bfcdbf850f30eae6e26771cd7946d24bbf + checksum: 90bb653590008ef33f398eefde986e03c6992257aabf0c83cdc752727c587ba8d446a9735875d7451334b5dde95bc295f53ea8bd2deed43d0e56bdf9815cf574 languageName: node linkType: hard "@angular-devkit/build-angular@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular-devkit/build-angular@npm:16.0.0-rc.4" + version: 16.1.5 + resolution: "@angular-devkit/build-angular@npm:16.1.5" dependencies: "@ampproject/remapping": 2.2.1 - "@angular-devkit/architect": 0.1600.0-rc.4 - "@angular-devkit/build-webpack": 0.1600.0-rc.4 - "@angular-devkit/core": 16.0.0-rc.4 - "@babel/core": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/helper-annotate-as-pure": 7.18.6 - "@babel/helper-split-export-declaration": 7.18.6 + "@angular-devkit/architect": 0.1601.5 + "@angular-devkit/build-webpack": 0.1601.5 + "@angular-devkit/core": 16.1.5 + "@babel/core": 7.22.5 + "@babel/generator": 7.22.7 + "@babel/helper-annotate-as-pure": 7.22.5 + "@babel/helper-split-export-declaration": 7.22.5 "@babel/plugin-proposal-async-generator-functions": 7.20.7 - "@babel/plugin-transform-async-to-generator": 7.20.7 - "@babel/plugin-transform-runtime": 7.21.4 - "@babel/preset-env": 7.21.4 - "@babel/runtime": 7.21.0 - "@babel/template": 7.20.7 + "@babel/plugin-transform-async-to-generator": 7.22.5 + "@babel/plugin-transform-runtime": 7.22.5 + "@babel/preset-env": 7.22.5 + "@babel/runtime": 7.22.5 + "@babel/template": 7.22.5 "@discoveryjs/json-ext": 0.5.7 - "@ngtools/webpack": 16.0.0-rc.4 + "@ngtools/webpack": 16.1.5 "@vitejs/plugin-basic-ssl": 1.0.1 ansi-colors: 4.1.3 autoprefixer: 10.4.14 babel-loader: 9.1.2 babel-plugin-istanbul: 6.1.1 - browserslist: 4.21.5 - cacache: 17.0.6 + browserslist: ^4.21.5 + cacache: 17.1.3 chokidar: 3.5.3 copy-webpack-plugin: 11.0.0 - critters: 0.0.16 - css-loader: 6.7.3 - esbuild: 0.17.18 - esbuild-wasm: 0.17.18 - glob: 8.1.0 + critters: 0.0.19 + css-loader: 6.8.1 + esbuild: 0.17.19 + esbuild-wasm: 0.17.19 + fast-glob: 3.2.12 https-proxy-agent: 5.0.1 inquirer: 8.2.4 jsonc-parser: 3.2.0 @@ -85,43 +92,44 @@ __metadata: license-webpack-plugin: 4.0.2 loader-utils: 3.2.1 magic-string: 0.30.0 - mini-css-extract-plugin: 2.7.5 + mini-css-extract-plugin: 2.7.6 mrmime: 1.0.1 open: 8.4.2 ora: 5.4.1 parse5-html-rewriting-stream: 7.0.0 + picomatch: 2.3.1 piscina: 3.2.0 - postcss: 8.4.23 - postcss-loader: 7.2.4 + postcss: 8.4.24 + postcss-loader: 7.3.2 resolve-url-loader: 5.0.0 rxjs: 7.8.1 - sass: 1.62.1 - sass-loader: 13.2.2 - semver: 7.4.0 + sass: 1.63.2 + sass-loader: 13.3.1 + semver: 7.5.3 source-map-loader: 4.0.1 source-map-support: 0.5.21 - terser: 5.17.1 + terser: 5.17.7 text-table: 0.2.0 tree-kill: 1.2.2 - tslib: 2.5.0 - vite: 4.3.1 - webpack: 5.80.0 - webpack-dev-middleware: 6.0.2 - webpack-dev-server: 4.13.2 - webpack-merge: 5.8.0 + tslib: 2.5.3 + vite: 4.3.9 + webpack: 5.86.0 + webpack-dev-middleware: 6.1.1 + webpack-dev-server: 4.15.0 + webpack-merge: 5.9.0 webpack-subresource-integrity: 5.1.0 peerDependencies: - "@angular/compiler-cli": ^16.0.0-next.0 - "@angular/localize": ^16.0.0-next.0 - "@angular/platform-server": ^16.0.0-next.0 - "@angular/service-worker": ^16.0.0-next.0 + "@angular/compiler-cli": ^16.0.0 + "@angular/localize": ^16.0.0 + "@angular/platform-server": ^16.0.0 + "@angular/service-worker": ^16.0.0 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 karma: ^6.3.0 - ng-packagr: ^16.0.0-next.1 + ng-packagr: ^16.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=4.9.3 <5.1" + typescript: ">=4.9.3 <5.2" dependenciesMeta: esbuild: optional: true @@ -144,26 +152,44 @@ __metadata: optional: true tailwindcss: optional: true - checksum: ed8bcdd2086c06a49eaaa30d07a72dedd484c5ac00252d23542b4929479832401b347bc6856f146585638c9dd2e92abe998f605d1a92dbc2a546d5a5e2faf3d8 + checksum: 7534edacaf1165dfdda45acb2cb3f66567b3324b2eae97208ca229d8919290e67a25a3ab1c33c15cb64d4f046dd1755753f309cd7623a76ae86c400e29e4f6f5 languageName: node linkType: hard -"@angular-devkit/build-webpack@npm:0.1600.0-rc.4": - version: 0.1600.0-rc.4 - resolution: "@angular-devkit/build-webpack@npm:0.1600.0-rc.4" +"@angular-devkit/build-webpack@npm:0.1601.5": + version: 0.1601.5 + resolution: "@angular-devkit/build-webpack@npm:0.1601.5" dependencies: - "@angular-devkit/architect": 0.1600.0-rc.4 + "@angular-devkit/architect": 0.1601.5 rxjs: 7.8.1 peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^4.0.0 - checksum: 44183f763611cd12312d338c4bfaab9be03a0b577d038abaf3f888d2971e28b9849d0e445d15fe8f6a626138369e326a7d9ec8593b221b77cac0bd557e0820f7 + checksum: df86cca9745e731891e96bbee7d37e7b6d570bf3bbd25c78c545429074073e30ac732dc23d8cf50bf1b3986b4fe9f807381dfac367d8e676efd1c12e57bb9b0e + languageName: node + linkType: hard + +"@angular-devkit/core@npm:16.0.6": + version: 16.0.6 + resolution: "@angular-devkit/core@npm:16.0.6" + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 + source-map: 0.7.4 + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 5cd28c31a5f39f7493688508e331f3eb41ad40b3deb02958259268b7820ff61750637f22554ad0a6fe05e49134d916b3573741d98dd65d3b5a6546aea4fd0efd languageName: node linkType: hard -"@angular-devkit/core@npm:16.0.0-rc.4, @angular-devkit/core@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular-devkit/core@npm:16.0.0-rc.4" +"@angular-devkit/core@npm:16.1.5, @angular-devkit/core@npm:^16.0.0-rc.4": + version: 16.1.5 + resolution: "@angular-devkit/core@npm:16.1.5" dependencies: ajv: 8.12.0 ajv-formats: 2.1.1 @@ -175,79 +201,79 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: d12ca453cb35c95ab6fbda8ad553bde639f3ce93020fff3dde1f2c5e0e9d2a1c19101fa18cce2443c0003b4ece5018eb4aaeb8632663d4738034adafa79f491a + checksum: 8fd5de020ab6c84a9ad71ac2778cc78d31424de2af45310dd8e0c6d5d2294c42ffdf2b8acdcffe30a01368e8004b1a82d7b8f7a3169a66f8403fa7a801d078ba languageName: node linkType: hard -"@angular-devkit/schematics@npm:16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular-devkit/schematics@npm:16.0.0-rc.4" +"@angular-devkit/schematics@npm:16.1.5": + version: 16.1.5 + resolution: "@angular-devkit/schematics@npm:16.1.5" dependencies: - "@angular-devkit/core": 16.0.0-rc.4 + "@angular-devkit/core": 16.1.5 jsonc-parser: 3.2.0 magic-string: 0.30.0 ora: 5.4.1 rxjs: 7.8.1 - checksum: ad0612359e509a6220f64a19ba8b3ba427c5a9cec14b3d92f35006fd8ee9e29b26366f9db1a27fede1253b03bb66d92de6032465ea183b90adf96309c64c41fc + checksum: c69a98490054d771a0bf8c6e38157daea3086c673ce492a47483762d404967e6090a0be1151a90a489a2fac1091b386ae0cd61dcb62bcb836be16562ac5d0767 languageName: node linkType: hard "@angular/animations@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/animations@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/animations@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.0-rc.4 - checksum: df22740c6c2c0cee550ab7c6bdfab557a556b88b2ba9f68687f8fb87747f01aaf31d80072464b606e892af0ce1017320eb3c22adc4aad0654c48ca9bb3e5e77f + "@angular/core": 16.1.6 + checksum: 3ce9a6d8062f7d88715733763c1fa6257676d5c818cbc9368e2c945d2168586a10c21ac49f971c513217756f8ca993e5a9f31b094ab4356ee2f859ff97905c16 languageName: node linkType: hard "@angular/cli@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/cli@npm:16.0.0-rc.4" + version: 16.1.5 + resolution: "@angular/cli@npm:16.1.5" dependencies: - "@angular-devkit/architect": 0.1600.0-rc.4 - "@angular-devkit/core": 16.0.0-rc.4 - "@angular-devkit/schematics": 16.0.0-rc.4 - "@schematics/angular": 16.0.0-rc.4 + "@angular-devkit/architect": 0.1601.5 + "@angular-devkit/core": 16.1.5 + "@angular-devkit/schematics": 16.1.5 + "@schematics/angular": 16.1.5 "@yarnpkg/lockfile": 1.1.0 ansi-colors: 4.1.3 - ini: 4.0.0 + ini: 4.1.1 inquirer: 8.2.4 jsonc-parser: 3.2.0 npm-package-arg: 10.1.0 npm-pick-manifest: 8.0.1 open: 8.4.2 ora: 5.4.1 - pacote: 15.1.3 + pacote: 15.2.0 resolve: 1.22.2 - semver: 7.4.0 + semver: 7.5.3 symbol-observable: 4.0.0 yargs: 17.7.2 bin: ng: bin/ng.js - checksum: d32807de50bf3153cf0536c55520d52e7de25c09865284abcd3d8e18bea62c20dc6891920ff642ec07c0dbc36890ddc4f8fb1bc56cc4fe709059cdf61a87c302 + checksum: bbb7ce5d8f5f7750b296e132752c09b66eec82dd102def46881d4d3b5c9f8f217a387eed77abba4f52e0a3f09c2d3675e91aa22787ce289a441db173e909ec55 languageName: node linkType: hard "@angular/common@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/common@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/common@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.0-rc.4 + "@angular/core": 16.1.6 rxjs: ^6.5.3 || ^7.4.0 - checksum: 8a80c9a757864e4dd49074c3fc7686aab5ae0e25e80aefdc10d2c4b5f86eac5f49f61d7287ca95df3b64d290ed23cdd1748b82b8486b84300afe5cb556f57343 + checksum: e324b71166cea1df20d4333e8b2949504339a0704f0c6231b5a51a921077283be1a82f9bc96b79530229653a23498540921017822a9242ebde6154d16684e9fa languageName: node linkType: hard "@angular/compiler-cli@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/compiler-cli@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/compiler-cli@npm:16.1.6" dependencies: - "@babel/core": 7.19.3 + "@babel/core": 7.22.5 "@jridgewell/sourcemap-codec": ^1.4.14 chokidar: ^3.0.0 convert-source-map: ^1.5.1 @@ -256,109 +282,83 @@ __metadata: tslib: ^2.3.0 yargs: ^17.2.1 peerDependencies: - "@angular/compiler": 16.0.0-rc.4 - typescript: ">=4.9.3 <5.1" + "@angular/compiler": 16.1.6 + typescript: ">=4.9.3 <5.2" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 1e970b8c88134b9e3943c8cca1fb4e3e04c6a5bd99a3c0bba84897db5cf1d88789c3fc4cf3f8766725b36c371f685b9e0c47bc803053a8e00728f009361c0489 + checksum: 800068a4b6b1378f02f6942277053929659a5331bb54bf2c55e4dce62aa00bcaa62e2748207244f58bc0e7118962d3a7810ab505d93c907c7c5d80ce7ffd5fe0 languageName: node linkType: hard "@angular/compiler@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/compiler@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/compiler@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.0-rc.4 + "@angular/core": 16.1.6 peerDependenciesMeta: "@angular/core": optional: true - checksum: ecd822e5e0c5605512d5984696d5f464d7c3fe63f9c6906fd5db00fb55823a60aca7d8e152e4917626d6a6bb02f6e1011348f459d7e171a4b1cefd49cc3f5e72 - languageName: node - linkType: hard - -"@angular/core@npm:^13.3.6": - version: 13.3.12 - resolution: "@angular/core@npm:13.3.12" - dependencies: - tslib: ^2.3.0 - peerDependencies: - rxjs: ^6.5.3 || ^7.4.0 - zone.js: ~0.11.4 - checksum: 443b256b5d73ff41fc0b6f9590b4964e67552a65359901a7934c2de6eb3cda735f42bba7e19faee8c91ae13c99e914959d81229872210c1f6a57672f2433c88d + checksum: ce0661c9d797b94f174db9dc37df6bc627b7dcd9c52042b46d7b3d2edfa4189999f8033778084d2fb8bff14bb2ebef71957ef8097735e9681a1af9c42be9482d languageName: node linkType: hard "@angular/core@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/core@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/core@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.13.0 - checksum: 7e1b5770dbd9512f6f05959e8e51096a90c8516430a6ecf328fddd1aff3ee2cbf5c799b04ed55d7b7e4f39e5ca32ea3217fc1b942cd041cd077b8941e6433735 + checksum: d786d039318c6794cfffb3dbfac17b34807d50c867d04d7d32b5e1ed4052f267bcf1a61bb16b18d89fd768438e44a89e6e9f445775ae042a55faa6f4b3dcbbd3 languageName: node linkType: hard "@angular/forms@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/forms@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/forms@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.0.0-rc.4 - "@angular/core": 16.0.0-rc.4 - "@angular/platform-browser": 16.0.0-rc.4 + "@angular/common": 16.1.6 + "@angular/core": 16.1.6 + "@angular/platform-browser": 16.1.6 rxjs: ^6.5.3 || ^7.4.0 - checksum: c07e163ef0824eb14be8e3408912f5ba16980e9808360d2e27292e02018de7bcf92798ffda33dac1868558f2153e0f0624bbedc82ff724a12059c7d9c2722d6e - languageName: node - linkType: hard - -"@angular/platform-browser-dynamic@npm:^13.3.6": - version: 13.3.12 - resolution: "@angular/platform-browser-dynamic@npm:13.3.12" - dependencies: - tslib: ^2.3.0 - peerDependencies: - "@angular/common": 13.3.12 - "@angular/compiler": 13.3.12 - "@angular/core": 13.3.12 - "@angular/platform-browser": 13.3.12 - checksum: d075cd570bc30af5084af7adde9c9db1bb181237b9f50210df5063aae03386f09d9a77b5d7967076653b90f529e33c0a9388298f63998659d7458fb0332897af + checksum: acdd98ef7a865b75e98a1c91494e5825530412529965eb177fa651cdcbd2cc17e7393ec1ca093ccf444bbc8ba212f8ee084e9a8a0321c82f9cbeee83a6bd8158 languageName: node linkType: hard "@angular/platform-browser-dynamic@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/platform-browser-dynamic@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/platform-browser-dynamic@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.0.0-rc.4 - "@angular/compiler": 16.0.0-rc.4 - "@angular/core": 16.0.0-rc.4 - "@angular/platform-browser": 16.0.0-rc.4 - checksum: 9a3ba71f0093b044d69d6dab74d03442bb8e10a01abffe3c9c91596f79602ed001f37212adfdc333a1f6b7d61e9c97b838aa4cba71c9842b5c1111be42c37ea9 + "@angular/common": 16.1.6 + "@angular/compiler": 16.1.6 + "@angular/core": 16.1.6 + "@angular/platform-browser": 16.1.6 + checksum: 5d5f16c21800dd4b5fa072af2fb772202ad21f990de91c1eabe7fda860af98fa5bfb92010a367124ca5509b37ca5590704a05b85cc5a12729b02f22284102c97 languageName: node linkType: hard "@angular/platform-browser@npm:^16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@angular/platform-browser@npm:16.0.0-rc.4" + version: 16.1.6 + resolution: "@angular/platform-browser@npm:16.1.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/animations": 16.0.0-rc.4 - "@angular/common": 16.0.0-rc.4 - "@angular/core": 16.0.0-rc.4 + "@angular/animations": 16.1.6 + "@angular/common": 16.1.6 + "@angular/core": 16.1.6 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 36d7177b581c42ce43ee00f4e7bb263e277c1b08947a1fe780e759cfa1ca2cb5b14e48f9450efa95475e6107388354688e2376453f1f8f3d869ae0706b2dce9c + checksum: 704366e519d3f75d69ef2d483acb28909e09a103823f8c2c47daa4555d5cfc917f8c15d5842c381fb6b731f7450d402c780a556b65235d26ac2a63e56f6dc2e0 languageName: node linkType: hard @@ -369,87 +369,64 @@ __metadata: languageName: node linkType: hard -"@aw-web-design/x-default-browser@npm:1.4.88": - version: 1.4.88 - resolution: "@aw-web-design/x-default-browser@npm:1.4.88" +"@aw-web-design/x-default-browser@npm:1.4.126": + version: 1.4.126 + resolution: "@aw-web-design/x-default-browser@npm:1.4.126" dependencies: default-browser-id: 3.0.0 bin: x-default-browser: bin/x-default-browser.js - checksum: ae604e01aeb226b48cad226bfce55a88a12d759d139ede20aa71ee9ed94fefe912659678ae663bb277d9c02f281f62a965bdc0adf43817b0f95d397cbf97d8b2 + checksum: 634c7fad7a5f4df86e3fcd3a11e50034fcb6f6302281569727574cbda7532850063cb34ec328384a686ab0812f297bf301a5e2450bc7b93b5f80a006b1f2dfd7 languageName: node linkType: hard "@axe-core/puppeteer@npm:^4.2.0": - version: 4.6.1 - resolution: "@axe-core/puppeteer@npm:4.6.1" + version: 4.7.3 + resolution: "@axe-core/puppeteer@npm:4.7.3" dependencies: - axe-core: ^4.6.3 + axe-core: ^4.7.0 peerDependencies: puppeteer: ">=1.10.0" - checksum: 42eecedad41f80ab3462ab6281066d4e620ad81c643628b44da465a8a44bd77d5ebf023fc17398b97ebe875e246c26d456f0cb39b8cef41b156cbd4fc776c46c + checksum: 24161a6c8ee3ab33f09e66f73bb81d70c69feb5c2e8cb1a1ba6a6e06ecb204768dbf443bc76abfa95c3fb637fd21ea4270478591b45a00a939b9b3909c11bc4e languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.8.3": - version: 7.21.4 - resolution: "@babel/code-frame@npm:7.21.4" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/code-frame@npm:7.22.5" dependencies: - "@babel/highlight": ^7.18.6 - checksum: c357e4b3b7a56927cb26fcb057166fef3cc701a4e35b2fa8a87402c31be0fd41d0144c61c87bf7d3b2a8f1c4d9ef00592dc0c7e8b9500dae43340a1e9f1096de - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/compat-data@npm:7.21.4" - checksum: 8752c19f78f6b91188b8c4867ae357fe79206ed3ea2fbc9357ac66639b1bd4aa1ba44cedba238369070704605caf9a4a742bf1cfa2b9414845a8995e0c9ac40a + "@babel/highlight": ^7.22.5 + checksum: 0b6c5eaf9e58be7140ac790b7bdf8148e8a24e26502dcaa50f157259c083b0584285748fd90d342ae311a5bb1eaad7835aec625296d2b46853464f9bd8991e28 languageName: node linkType: hard -"@babel/core@npm:7.19.3": - version: 7.19.3 - resolution: "@babel/core@npm:7.19.3" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.3 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.0 - "@babel/helpers": ^7.19.0 - "@babel/parser": ^7.19.3 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.3 - "@babel/types": ^7.19.3 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 2ef6bc3c407f5aa868a3fdc5ec58bcaf98d073de5fff65c1b16b1133cd232f43b5a413a1356c4cdd37f477fb006ac9fc0d5fce8a0f2f4f5d881de0dd1f6b0b06 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: 1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad languageName: node linkType: hard -"@babel/core@npm:7.21.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.20.2, @babel/core@npm:^7.20.5, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5, @babel/core@npm:^7.9.6, @babel/core@npm:~7.21.0": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" +"@babel/core@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/core@npm:7.22.5" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helpers": ^7.22.5 + "@babel/parser": ^7.22.5 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.5 + "@babel/types": ^7.22.5 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.0 - checksum: 0987cf87f277eb19c410ef3a03f9377efec40005a5dd2a67ddd0a5f6f429c9d88fefba25206ccf3378c93814b4c9c06a236bf8fcd3ed6ef1c8089fefaa76af24 + checksum: c00e1474a41c18b669511dd1a1bd757d854cc8128218421a73c3b1c76b44fb22a57bbbd29a73b7a156cb1460af7a94602f81bed76b8d78c6ffae4de954b32a50 languageName: node linkType: hard @@ -476,327 +453,358 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.21.4, @babel/generator@npm:^7.12.11, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.21.4, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7, @babel/generator@npm:~7.21.1": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.22.0, @babel/core@npm:^7.22.1, @babel/core@npm:^7.22.9, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": + version: 7.22.9 + resolution: "@babel/core@npm:7.22.9" dependencies: - "@babel/types": ^7.21.4 + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-module-transforms": ^7.22.9 + "@babel/helpers": ^7.22.6 + "@babel/parser": ^7.22.7 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.8 + "@babel/types": ^7.22.5 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.2 + semver: ^6.3.1 + checksum: 4dffc8844bd8ab5c292e795f3eb0e636246177d28b75ec99f3349a29fe08a9f3e089fe68b857ed160f3312c035c8fb73fdc83b0c781f4629164e548a7d62a8c7 + languageName: node + linkType: hard + +"@babel/generator@npm:7.22.7": + version: 7.22.7 + resolution: "@babel/generator@npm:7.22.7" + dependencies: + "@babel/types": ^7.22.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 0eb142a5ca8a978981c11de9e0ab033659f7110bc21cd14eaeb80977835b895c3a97e5a1807a2f6e79003682141057f00b4bd5f69fe998b4cf99bf989c361277 + checksum: 7eb106916d782d397d0d4370bb4b23229229481218693a55f3fc0b756d4e9dc39cee41872f1735decb0b34be8dbb98c4488d5f7abbf6e40826d5dcac045b1f12 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:7.18.6, @babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7": + version: 7.22.9 + resolution: "@babel/generator@npm:7.22.9" dependencies: - "@babel/types": ^7.18.6 - checksum: e413cd022e1e21232c1ce98f3e1198ec5f4774c7eceb81155a45f9cb6d8481f3983c52f83252309856668e728c751f0340d29854b604530a694899208df6bcc3 + "@babel/types": ^7.22.5 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 6ef82c7f6dc8f749c0eb3a04fe35acab032a9221d82984e67cbbada449ca857dd981e08c129f9cf5d2f342ba00efcc683a99e46a470f233b0948edf197e35d26 languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" +"@babel/helper-annotate-as-pure@npm:7.22.5, @babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.5" dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: 8571b3cebdd3b80349aaa04e0c1595d8fc283aea7f3d7153dfba0d5fcb090e53f3fe98ca4c19ffa185e642a14ea2b97f11eccefc9be9185acca8916e68612c3f + "@babel/types": ^7.22.5 + checksum: 73a61a56364849770d5569264ba0a5f06035387cafd219d1ae26077f80a1dfb75f240e6abcd991c655641ad8fe066b964261942b4086ba2efc946c807c9d1698 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.3, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-compilation-targets@npm:7.21.4" +"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.5 + browserslist: ^4.21.9 lru-cache: ^5.1.1 - semver: ^6.3.0 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: ad553d5a473beeedaf7be4e450d3d6f36920f34005bc45bc62d94a16ae553dcb7d9fc5b2bc721ffa203e542bc8a1fb241e1c97fba1fae5f7ef5ba87a7730a1b9 + checksum: 543b9a45800c1db2f91cc53462ed1799834a1259e498d3d91f45816ae79d19719ef957fa00b0f015d8b768eac09fd1f4f5f42f868c5a10f4389e3883a3f050f1 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.4" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6, @babel/helper-create-class-features-plugin@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 + "@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.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: a994bace4bb4ecf68ec163e101a151b92dedca292873b08642435ed6957719c2feafd2dbfcb44c6984965ceb7ccc70a9b91e9a14f54279c683ca97df9a43a5df + checksum: f383152992996b0b936e555aaef35264852908720216c298f677f4b53ba3c4325b700c6a62ff08a8e1377d76ed6538e1bd5232557266eae777cc06b7eb3dd4ad languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.4 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-annotate-as-pure": ^7.22.5 regexpu-core: ^5.3.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4a65810a30a97ed109af44b2ddc12fb05bb83de2855425192696c676570abcabf59af4c2b6d9fc5fe3ce9781eabe057781870a77b78d86120a4be68e7b3c1b7b + checksum: 056c9913299ba399194d9aef5f4281a81806f66979c3c9c6da19b2e29bc92abad6d6d6be0cd4b3ed5945abbdf2d4c45362ee26a012f75f16de7d26859dfde11d languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" +"@babel/helper-define-polyfill-provider@npm:^0.4.2": + version: 0.4.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.2" dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 - semver: ^6.1.2 peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: c3668f9ee2b76bfc08398756c504a8823e18bad05d0c2ee039b821c839e2b70f3b6ad8b7a3d3a6be434d981ed2af845a490aafecc50eaefb9b5099f2da156527 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 2f4905e3dba478f53d41925a66711dfbdb63d759a59adfc4951eca3e132ac3a0bbcb39237f756fe243c2e8ee6e849afbe357e5520f55df210dcf26838357b9a1 languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: a69dd50ea91d8143b899a40ca7a387fa84dbaa02e606d8692188c7c59bd4007bcd632c189f7b7dab72cb7a016e159557a6fccf7093ab9b584d87cf2ea8cf36b7 +"@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-environment-visitor@npm:7.22.5" + checksum: c9377464c1839741a0a77bbad56de94c896f4313eb034c988fc2ab01293e7c4027244c93b4256606c5f4e34c68cf599a7d31a548d537577c7da836bbca40551b languageName: node linkType: hard -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" +"@babel/helper-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-function-name@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: 6e2fc5841fd849c840634e55b3a3f373167179bddb3d1c5fa2d7f63c3959425b8f87cd5c5ce5dcbb96e877a5033687840431b84a8e922c323f8e6aac9645db0b + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 3ce2e87967fe54aa463d279150ddda0dae3b5bc3f8c2773b90670b553b61e8fe62da7edcd7b1e1891c5b25af4924a6700dad2e9d8249b910a5bf7caa2eaf4c13 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: 5b4387afd34cd98a3a7f24f42250a5db6f7192a46e57bdbc151dc311b6299ceac151c5236018469af193dfb887b0b7ef8fe7ed89459cd05f00d69b3710c17498 + "@babel/types": ^7.22.5 + checksum: 60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" +"@babel/helper-member-expression-to-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: 830aa7ca663b0d2a025513ab50a9a10adb2a37d8cf3ba40bb74b8ac14d45fbc3d08c37b1889b10d36558edfbd34ff914909118ae156c2f0915f2057901b90eff + "@babel/types": ^7.22.5 + checksum: c04a71976b2508c6f1fa46562439b74970cea37958e450bcd59363b9c62ac49fb8e3cef544b08264b1d710b3f36214486cb7e1102e4f1ee8e1c2878b5eebcc75 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-module-imports@npm:7.22.5" dependencies: - "@babel/types": ^7.21.0 - checksum: e9e5a57a306268e379ebefa7698008dfff60e53c35e719f2ad0e9b447901a05ec0cb03982d4f386acdcbdddbdf2ee04950cdc464754253bb488c7da2ff922503 + "@babel/types": ^7.22.5 + checksum: 04f8c0586c485c33017c63e0fc5fc16bd33b883cef3c88e4b3a8bf7bc807b3f9a7bcb9372fbcc01c0a539a5d1cdb477e7bdec77e250669edab00f796683b6b07 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4, @babel/helper-module-imports@npm:^7.8.3": - version: 7.21.4 - resolution: "@babel/helper-module-imports@npm:7.21.4" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: - "@babel/types": ^7.21.4 - checksum: ce62c86e8e1af9921fa2d7253a540fb5aaab424a79de47a626c4e8855950d6ac14c0d46a9ec117e8e2e256ea1062583533947202988be889a5ff2076c213be18 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.0, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 35d4508826bae2db69ab6966db1810b5e7b9157e471525ad1f2119e16742bd293da02587bddb2843368dcd411ddd5ae0f212d6381bcf32e1b338a84b5b27ae30 + "@babel/types": ^7.22.5 + checksum: 31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f1352ebc5d9abae6088e7d9b4b6b445c406ba552ef61e967ec77d005ff65752265b002b6faaf16cc293f9e37753760ef05c1f4b26cda1039256917022ba5669c +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: bf4de040e57b7ddff36ea599e963c391eb246d5a95207bb9ef3e33073c451bcc0821e3a9cc08dfede862a6dcc110d7e6e7d9a483482f852be358c5b60add499c +"@babel/helper-remap-async-to-generator@npm:^7.18.9, @babel/helper-remap-async-to-generator@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: e753f19726846df26a13a304632aff2bc6e437201f27eecc7ba12db04b9175062da307e72512cf4761e659ec82cb71016352acd83fbe5e527f4b881ce1e633e8 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: e6b2a906bdb3ec40d9cee7b7f8d02a561334603a0c57406a37c77d301ca77412ff33f2cef9d89421d7c3b1359604d613c596621a2ff22129612213198c5d1527 + checksum: 9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 6d44965bdc24b61df89d8d92e3b86afe48d6a5932d7c8c059fb8bf53b9cf2845ed627e8261fac9b369b9a4dd1621e8e60a19f19902dc27e005f254d7a8cbffda + "@babel/types": ^7.22.5 + checksum: f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: - "@babel/types": ^7.20.2 - checksum: 79cea28155536c74b37839748caea534bc413fac8c512e6101e9eecfe83f670db77bc782bdb41114caecbb1e2a73007ff6015d6a5ce58cae5363b8c5bd2dcee9 + "@babel/types": ^7.22.5 + checksum: ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" +"@babel/helper-split-export-declaration@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/helper-split-export-declaration@npm:7.22.5" dependencies: - "@babel/types": ^7.20.0 - checksum: 8529fb760ffbc3efc22ec5a079039fae65f40a90e9986642a85c1727aabdf6a79929546412f6210593970d2f97041f73bdd316e481d61110d6edcac1f97670a9 + "@babel/types": ^7.22.5 + checksum: a1e463086f97778584c44129c5c37282d033bf97867b300ff42e64279df18d41fe0e56ebe6a1b27f907afa66ad2a313558db8d2e83e73384c5b22ac726c9c52a languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:7.18.6, @babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: - "@babel/types": ^7.18.6 - checksum: 1335b510a9aefcbf60d89648e622715774e56040d72302dc5e176c8d837c9ab81414ccfa9ed771a9f98da7192579bb12ab7a95948bfdc69b03b4a882b3983e48 + "@babel/types": ^7.22.5 + checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: e20c81582e75df2a020a1c547376668a6e1e1c2ca535a6b7abb25b83d5536c99c0d113184bbe87c1a26e923a9bb0c6e5279fca8db6bd609cd3499fafafc01598 +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 6b0ff8af724377ec41e5587fffa7605198da74cb8e7d8d48a36826df0c0ba210eb9fedb3d9bef4d541156e0bd11040f021945a6cbb731ccec4aefb4affa17aa4 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: f978ecfea840f65b64ab9e17fac380625a45f4fe1361eeb29867fcfd1c9eaa72abd7023f2f40ac3168587d7e5153660d16cfccb352a557be2efd347a051b4b20 +"@babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-identifier@npm:7.22.5" + checksum: 2ff1d3833154d17ccf773b8a71fdc0cd0e7356aa8033179d0e3133787dfb33d97796cbff8b92a97c56268205337dfc720227aeddc677c1bc08ae1b67a95252d7 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.18.6, @babel/helper-validator-option@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: a5efbf3f09f1514d1704f3f7bf0e5fac401fff48a9b84a9eb47a52a4c13beee9802c6cf212a82c5fb95f6cc6b5932cb32e756cf33075be17352f64827a8ec066 +"@babel/helper-validator-option@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-option@npm:7.22.5" + checksum: 23e310bf1b90d085b1ae250f31d423fb6cc004da882f0d3409266e5e4c7fd41ed0a172283a6a9a16083c5f2e11f987b32c815c80c60d9a948e23dd6dcf2e0437 languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" +"@babel/helper-wrap-function@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-wrap-function@npm:7.22.9" dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: b5ea154778f6dbeb3cb9917933ea364f8f643aa79665c51f4a4b903bc451b3d18a738ab9952bdb43a81647f301a9be305bfcf02f2222b1235197e52c525703d6 + "@babel/helper-function-name": ^7.22.5 + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 233c10fe3b38efbf8fcf9bcda8b45b998e963d352beb1966012f4b0be8c221776546a999190c77f0a43524b35c0271691453baf71fe2772fcf7f7938d3621b0d languageName: node linkType: hard -"@babel/helpers@npm:^7.19.0, @babel/helpers@npm:^7.21.0, @babel/helpers@npm:^7.8.4": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" +"@babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.22.6, @babel/helpers@npm:^7.8.4": + version: 7.22.6 + resolution: "@babel/helpers@npm:7.22.6" dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: a7415373f1c9b84fe32839d5219c3d695e84b910f49a20786caf3b5a37f5079d26af6a5b36b4f2e3eb450b2413c309785483a8d59246d1326c44184c51c24255 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.6 + "@babel/types": ^7.22.5 + checksum: 8c03c19802d0fcc78d00d1eaa9ddab28f97f0c78a5d570762800e86f08c6f41750ad61e20cdede977a56173edf85e7175f1fd804eb6ef817280f064d3a3ca514 languageName: node linkType: hard -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" +"@babel/highlight@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/highlight@npm:7.22.5" dependencies: - "@babel/helper-validator-identifier": ^7.18.6 + "@babel/helper-validator-identifier": ^7.22.5 chalk: ^2.0.0 js-tokens: ^4.0.0 - checksum: a6a6928d25099ef04c337fcbb829fab8059bb67d31ac37212efd611bdbe247d0e71a5096c4524272cb56399f40251fac57c025e42d3bc924db0183a6435a60ac + checksum: e8cc07b5de76a9bf779982096ccbbe5a867c36d3786b26151eb570d9344a68af8aa065ed97d431e0d18ba55fe792c7c4301e0d62afff7a52ee0d20678443be54 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.12, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.4, @babel/parser@npm:^7.18.4, @babel/parser@npm:^7.19.3, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.8.6, @babel/parser@npm:^7.8.7, @babel/parser@npm:^7.9.6, @babel/parser@npm:~7.21.2": - version: 7.21.4 - resolution: "@babel/parser@npm:7.21.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.4, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.8.6, @babel/parser@npm:^7.8.7, @babel/parser@npm:^7.9.6": + version: 7.22.7 + resolution: "@babel/parser@npm:7.22.7" bin: parser: ./bin/babel-parser.js - checksum: 01ca14d5f1a849e2e34c4cf53809c12f8406d0961554576e025ac2283058e2bf4e168275b034744cad32574c443aa3a65ba08d7a17a7c8c56641257394cbea6c + checksum: d2bdf212644c39de58f1216540ec5aca4a05ffbec07c904eaaef8575dd9546b55345b91dcc0d306be4adbb717401ce321027bac7e2f7babfd66794c96243bb79 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: be2cccfc101824428a860f8c71d2cd118a691a9ace5525197f3f0cba19a522006dc4f870405beece836452353076ac687aefda20d9d1491ea72ce51179057988 + checksum: 573bd9b1984d74e3663cb7f5f317646223020107681e8dcffe68b041bd620ebbb35c0cc05f4ee20f2da502d02a9633e2b477596e71f4f7802f72c02e948f38af languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.7 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.5 peerDependencies: "@babel/core": ^7.13.0 - checksum: afdbed7555bec6f338cb46a6e8b39c7620bc0fce0f530d15c5e49a6eef103607600346b3f35f6bc32b7c9930564e801d7f0a000ecb9b44ff628156f894606cfb + checksum: 1e38dcd28d2dc5012f96550a3fa1330d71fc923607ceccc91e83c0b7dd3eaeb4d8c632946909c389964acb3e35c888f81653e2d24f7cc02a83fe39a64ca59e89 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:7.20.7, @babel/plugin-proposal-async-generator-functions@npm:^7.20.7": +"@babel/plugin-proposal-async-generator-functions@npm:7.20.7": version: 7.20.7 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" dependencies: @@ -822,43 +830,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b46eb08badd7943c7bdf06fa6f1bb171e00f26d3c25e912205f735ccc321d1dbe8d023d97491320017e0e5d083b7aab3104f5a661535597d278a6c833c97eb79 - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:^7.13.5": - version: 7.21.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 93f69d7ca1404349c3d5b761ee4d29fcd5f749a528ba25442f86fec6a4ede75d5845d449123f4e29f57a525aa18482b3f651f308bc4e946f8a08db022f93e739 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" + version: 7.22.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.7" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/helper-create-class-features-plugin": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/plugin-syntax-decorators": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 99be9865edfd65a46afb97d877ea247a8e881b4d0246a1ea0adf6db04c92f4f0959bd2f6f706d73248a2a7167c34f2464c4863137ddb94deadc5c7cc8bfc3e72 + checksum: 80a0db66b04fb09afb57abcc5dbde89659f076b4579656e4a0670510d9de7c68aa17fff7479f42078d42b00ada546228a55694a9bd6a050bc57997d1f7feb008 languageName: node linkType: hard @@ -874,31 +857,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83f2ce41262a538ee43450044b9b0de320002473e4849421a7318c0500f9b0385c03d228f1be777ad71fd358aef13392e3551f0be52b5c423b0c34f7c9e5a06d - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 436c1ee9f983813fc52788980a7231414351bd34d80b16b83bddb09115386292fe4912cc6d172304eabbaf0c4813625331b9b5bc798acb0e8925cf0d2b394d4d - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: @@ -937,19 +896,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab20153d9e95e0b73004fdf86b6a2d219be2a0ace9ca76cd9eccddb680c913fec173bca54d761b1bc6044edde0a53811f3e515908c3b16d2d81cfec1e2e17391 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": version: 7.21.0 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" dependencies: @@ -962,7 +909,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.16.5, @babel/plugin-proposal-private-methods@npm:^7.18.6": +"@babel/plugin-proposal-private-methods@npm:^7.16.5": version: 7.18.6 resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" dependencies: @@ -974,9 +921,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5, @babel/plugin-proposal-private-property-in-object@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5": + version: 7.21.11 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.11" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 "@babel/helper-create-class-features-plugin": ^7.21.0 @@ -984,11 +940,11 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 576ec99964c50435a81dfe4178d064df9aa86628090d69bae8759332b9a2b5a0a8575a6f51db915c3751949cd29990b8b3a80c6afc228a0664f4237b7b60d667 + checksum: 3c8c9ea175101b1cbb2b0e8fee20fcbdd03eb0700d3581aa826ac3573c9b002f39b1512c2af9fd1903ff921bcc864da95ad3cdeba53c9fbcfb3dc23916eacf47 languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -1044,14 +1000,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.21.0" +"@babel/plugin-syntax-decorators@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-decorators@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4198529415f7ba5ccca1798d062380151f6aa625f7ff5e25bb8925ef818d6ae8cc2f88ac76b63214db741ee678c3ab79831e98e8fb7328c2f4fd5fb340113164 + checksum: a24ad01f89523575b93f3bdef48a16e80d2e0a3e0fc90803c0397c58c6c7abf92379e941719f7f469757d6778d5ac60dc488d4a8b406bd6bbf3c636da477e534 languageName: node linkType: hard @@ -1077,25 +1033,36 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.21.4 - resolution: "@babel/plugin-syntax-flow@npm:7.21.4" +"@babel/plugin-syntax-flow@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-flow@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 07afc7df02141597968532bfbfa3f6c0ad21a2bdd885d0e5e035dcf60fdf35f0995631c9750b464e1a6f2feea14160a82787f914e88e8f7115dc99f09853e43e + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ff6bd5e5b6064276fd18b8a2e9bafb4d8cdf95b7a06b34bc93cd4fa3b5dfcc482f830c1174cbb245c160c32beed2d4ac6b402be9b3b6962d40a032fda3f61c80 + checksum: b297d7c757c746ed0ef3496ad749ae2ce648ec73dae5184120b191c280e62da7dc104ee126bc0053dfece3ce198a5ee7dc1cbf4768860f666afef5dee84a7146 languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" +"@babel/plugin-syntax-import-attributes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ac0176984ad799b39264070007737c514ea95e4b3c3c515ecddef958629abcd3c8e8810fd60fb63de5a8f3f7022dd2c7af7580b819a9207acc372c8b8ec878e + checksum: de0b104a82cb8ffdc29472177210936609b973665a2ad8ef26c078251d7c728fbd521119de4c417285408a8bae345b5da09cd4a4a3311619f71b9b2c64cce3fa languageName: node linkType: hard @@ -1121,14 +1088,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" +"@babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e5dbec5e1c53f114413dc3cc71f43b483d2f0784d5efdcd92c95a55b148d0f1987d136236ace24778d3365dc3d37b0b4d8cc1e0594267860f9f131ef5f5dfc73 + checksum: b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 languageName: node linkType: hard @@ -1220,521 +1187,750 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" +"@babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a4561a8ff7833e3644b8cb50482a405403ef8216271f6b53ad2c35bd0689323b32a1f4cc52569b5120df2c577f1a80c5795cac474ede6334268f42faf389d56f + checksum: 523a76627f17e67dc1999f4d7c7a71ed79e9f77f55a61cf05051101967ac23ec378ff0c93787b2cbd5d53720ad799658d796a649fa351682b2bf636f63b665a1 languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 690fc85afd273049f87e917ab75915e0c0ef19f62633d7d1706a1126dcfac9571d244b5b4eed9b64d6320a8560e8a6e17cf6ea38f4ecc6010e889953c1509b25 + "@babel/core": ^7.0.0 + checksum: 9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:7.20.7, @babel/plugin-transform-async-to-generator@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" +"@babel/plugin-transform-arrow-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c98caeafbffbdb40fd5d9d4c7a835d624ba1ada814e8e675d99a9c83bd40780ab6a52e3b873e81dc7ce045a3990427073e634f07cc2f2681d780faee0717d7e9 + checksum: 1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.5, @babel/plugin-transform-async-generator-functions@npm:^7.22.7": + version: 7.22.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.7" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 + "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22e81b52320e6f3929110241d91499a7535d6834b86e8871470f9946b42e093fafc79e1eae4ede376e7c5fe84c5dc5e9fdbe55ff4039b323b5958167202f02e0 + checksum: b9712f47de65d8409625de5cfa4bda6984f9e7065f6170c34b3d11974879276ffa61675c8118de5de7746f5de378c5dfc21efc706664c6f0c652fb58949b53f0 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.21.0, @babel/plugin-transform-block-scoping@npm:^7.8.3": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" +"@babel/plugin-transform-async-to-generator@npm:7.22.5, @babel/plugin-transform-async-to-generator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e06a5017cd4c0dd0b8f5e4dd62853f575b66e6653ef533af7eeca0df7a6e7908bd9dd3c98d4c5dc10830fe53f85d289d337d22448bb6bcdda774df619eb097b5 + checksum: 2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d680fb89d2b96f78f5dfce57dae4d39ac07c34bd9f5331edc7ebd941b86637e598f569cf544520029489d9f621158275811552169d12f777504479ba5cae62cf + checksum: 21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" +"@babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 849c11bac3600d8afa9f3a440fc721cdf2b719480b9a0b230849092fa400099ba1e91328e168860a2ca4d2843a94ece57a894b47468aaeb83df27bb82aae5d07 + checksum: 68f663d349345b522e1dece9641ee304d8f7db1d4b11998f47ebc5d678d281f76a143fb8603a1c12596962d7a63ffe044cd205a4910c8d74906eae17a605f96f languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" +"@babel/plugin-transform-class-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed21971223a36d617acc860581083d8ab0125ff4f947598f1354080f0b2b5511013e3b0ba3b2ff17049de1e4841c65b1e97a8d88e651ae5494ad698ac0d2509e + checksum: 707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" +"@babel/plugin-transform-class-static-block@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cf4c3751e603996f3da0b2060c3aab3c95e267cfc702a95d025b2e9684b66ed73a318949524fad5048515f4a5142629f2c0bd3dbb83558bdbab4008486b8d9a0 + "@babel/core": ^7.12.0 + checksum: 23814d00b2966e8dab7a60934622853698b2cb861a8667c006e000d8e5a50aba4d221c52852552562e7f38e32ad5c7778125ef602c2d2f1c4f9d8f790a9f27e9 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" +"@babel/plugin-transform-classes@npm:^7.22.5, @babel/plugin-transform-classes@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-classes@npm:7.22.6" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dfb7f7e66c0c862d205fe8f8b87f7ac174549c56937a5186b6e6cf85358ce257115fec0aa55e78fde53e5132d5aae9383e81aba8a4b70faa0e9fb64e3a66ca96 + checksum: 915f1c0d3a0446a3ebfb099c4a5e714896f773322432b91572e6739d7af82e9743ae2874eb596ef1d26ed94472385eb814e1f33b033fc708155576d566e1f5ff languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" +"@babel/plugin-transform-computed-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/template": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 96d300ca3e55dbc98609df2d70c2b343202faca307b3152a04eab77600f6b1dc00b5b90fc3999cb9592922583c83ecbb92217e317d7c08602ca0db87a26eeed3 + checksum: 22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67 languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.21.0" +"@babel/plugin-transform-destructuring@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-flow": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7d6c6a4de53c4106ed30cd32c769f340d048d7c4d01391eebd3ad71eabbd6910bd1d483bc23eebcfd9bb45d40cb9b743d916c0746cdedd952791a1222620b48c + checksum: bffd0069f44165e101368f34ab34d4bb810ef3dc16a5bf5e55e633a60b0c3aca948dccc15d04e6d6996a2a467f4a52d7224a82efc4be175836cc6e3a3702efa5 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.22.5 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ca1320975ec5a4c8e7be428c53f5cf6e9363d13bd4e8664c0b430c423c0c1316ad4f4dfc8666e6a17021792d4c72b5b621891d92c8370949a698897fd24aa71 + checksum: e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95100707fe00b3e388c059700fbdccf83c2cdf3b7fec8035cdd6c01dd80a1d9efb2821fec1357a62533ebbcbb3f6c361666866a3818486f1172e62f2b692de64 + checksum: 82772fdcc1301358bc722c1316bea071ad0cd5893ca95b08e183748e044277a93ee90f9c641ac7873a00e4b31a8df7cf8c0981ca98d01becb4864a11b22c09d1 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" +"@babel/plugin-transform-dynamic-import@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7b0d59920dd5a1679a2214dde0d785ce7c0ed75cb6d46b618e7822dcd11fb347be2abb99444019262b6561369b85b95ab96603357773a75126b3d1c4c289b822 + checksum: 82fb6fa0b6f7c7760ac21ebcb856a01579c9e64a325d5bb8841591b58b2d92024169f10f4ca2b34b45376999b352974138c94fc1d5cc330e00beeeb1bda51425 languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 346e5ac45b77f1e58a9b1686eb16c75cca40cbc1de9836b814fbe8ae0767f7d4a0fec5b88fcf26a5e3455af9e33fd3c6424e4f2661d04e38123d80e022ce6e6f + checksum: e8832460cfc9e087561fa42a796bb4eb181e6983d6db85c6dcec15f98af4ae3d13fcab18a262252a43b075d79ac93aaa38d33022bc5a870d2760c6888ba5d211 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" +"@babel/plugin-transform-export-namespace-from@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 327077cc746d2ef14d0792a970058d9b7170ff480c1d1d7acf874ef7cfeae0c680e86a45896ea27066e9ebdd82dc2be09d321385eef1e0b4255659d75ea2e008 + checksum: d5d301dde2d6e7f9e4db12ac70e19153f0e8d17406ad733a8f7d01de77d123588fe90c7f5b8cc086420594ec1e7d20abc5e08323f9ad9704a19c6c87ca03eb59 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.2.0, @babel/plugin-transform-modules-commonjs@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" +"@babel/plugin-transform-flow-strip-types@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-flow": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: faddf37cab44ad45871ffc38cc17bfbaee301afc3e874652fd36850021e850252570f3b521e0fdbd7098a57016ec72c672b071511949c029b40e1c09b0624869 + checksum: 5949a8e5214e3fc65d31dab0551423cea9d9eef35faa5d0004707ba7347baf96166aa400907ce7498f754db4e1e9d039ca434a508546b0dc9fdae9a42e814c1a languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" +"@babel/plugin-transform-for-of@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-for-of@npm:7.22.5" dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-identifier": ^7.19.1 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1843b2044b711765581d6130ea7901afde6e6f5af4e4219ab675033a090f4dacb6656bfada8f211a2cd9bbae256c7f4bd0b8613b750e56674feee5252de1ad76 + checksum: 08bd2d14f10b8ae421e61b55c28232547044149b8ef62c99c54561ce93a5067f9654d701d798871e733543359748e1b093f5c450b69705ec1db674175ee9fcdb languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" +"@babel/plugin-transform-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-function-name@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e3e99aef95a3faa15bc2398a919475c9130b783ee0f2439e1622fe73466c9821a5f74f72a46bb25e84906b650b467d73b43269c8b8c13372e97d3f2d96d109c7 + checksum: 206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" +"@babel/plugin-transform-json-strings@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: - "@babel/core": ^7.0.0 - checksum: 0ca94f716c70f96a0d5e79211ab7e7614efc9aa2940e6009086b16136f2558ae27b7acf9f88bc0a241882ca3192cc66c477fa0eb1cfdda54974ffc2b8846d3e4 + "@babel/core": ^7.0.0-0 + checksum: 64ee0f3497822d312b609d3b8a5a2617337d1624292e89f5e90fd25b5bc91a20beadfa91730b5b199b5a027284ced5d59748d99e8ab81ee7bdac38236e6b61ca languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" +"@babel/plugin-transform-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ea9186087b72d0adff0b9e7ef5769cb7806bc4755ce7b75c323d65053d453fd801a64f97b65c033d89370866e76e8d526dd186acede2fdcd2667fa056b11149b + checksum: 1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5 languageName: node linkType: hard -"@babel/plugin-transform-object-assign@npm:^7.8.3": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-assign@npm:7.18.6" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b2f4cab1711aec961ae0696a70a9f6152e04d9660fdde1179ce9b613475b0ec9aecee4f0e21f622b1962acd61364ebbf875cda699c97d70209628096689aee70 + checksum: bfacdafa8018d1607897015e1ea0f98edbefee16b4409d5f37c37df0d2058dde2e55586dd79f8479a0cd603ff06272216de077f071bc49c96014edfe1629bd26 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 44a1f5a62c6821a4653e23a38a61bed494138a0f12945a1d8b55ff7b83904e7c5615f4ebda8268c6ea877d1ec6b00f7c92a08cf93f4f77dc777e71145342aaf5 + checksum: 731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" +"@babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 08f8c7eaa3126a6c3481c3f73d9baa42d960295e44a7e303d75c0f5a517fe59b96559382561e1b339f70a8a1db25fe44329f1853da30ff8777685d017475515d + checksum: 157ae3b58a50ca52e361860ecab2b608bc9228ea6c760112a35302990976f8936b8d75a2b21925797eed7b3bab4930a3f447193127afef9a21b7b6463ff0b422 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" +"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.2.0, @babel/plugin-transform-modules-commonjs@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b76239098127ee39031db54e4eb9e55cb8a616abc0fc6abba4b22d00e443ec00d7aaa58c7cdef45b224b5e017905fc39a5e1802577a82396acabb32fe9cff7dd + checksum: 818317363cc96a1ab28cd0691bdb86fe06f452d210e2cef7ef4708f2c2c80cbe3c76bca23c2ab4b1bb200d44e508eae71f627c7cb27299a41be56fc7e3aaced0 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2c5f44f653604b800145ebad74e11ad6ec06bf96741b69a404e1409afb36abe34b27621b64ddba138813ad957fb8130dc15bd60ecd3b58380115edcccbdeb2ab + checksum: 25d7ada275039523541cfc3efd91cd3d9cfc77e7b9dd6a51e7d9ad842d2cb3e0f26aee29426aa56ac72f61247268369680f2bdc1171bb00a16cfd00bbb325a6c languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.16.7, @babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" +"@babel/plugin-transform-modules-umd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95b37b76754288bb4de28a04f709306686ff80da57937421df9a520f9c2d8b59a2327962a8fd3bb109857790732d3cc767d86d106866e62521cee22d29f721df + checksum: f4a40e18986182a2b1be6af949aaff67a7d112af3d26bbd4319d05b50f323a62a10b32b5584148e4630bdffbd4d85b31c0d571fe4f601354898b837b87afca4c languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.21.0" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 905117c7832367950b9f2aef2f2392f36981b14b9cc178eb9ef36241022c856ff740b48625638a3bfb9e1f55e7efa42d7aa1cd3576070712de5c66bb11d7215d + "@babel/core": ^7.0.0 + checksum: b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" +"@babel/plugin-transform-new-target@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-new-target@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f2e7304b9d789fdac73f21319fcae76c8cdd8e76efce34e21f67828c1bcbd3fe7ce386ca71a43b9e928365155a3f7fe6551005f19ef3fe8cba7f75f17307d2c8 + checksum: 22ead0668bfd8db9166a4a47579d9f44726b59f21104561a6dd851156336741abdc5c576558e042c58c4b4fd577d3e29e4bd836021007f3381c33fe3c88dca19 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.14.9, @babel/plugin-transform-react-jsx@npm:^7.18.6, @babel/plugin-transform-react-jsx@npm:^7.19.0, @babel/plugin-transform-react-jsx@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.21.0" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.21.0 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 88ea88e17cbcff8c0b4b022d38020161f59ef37847b5e57074c135d109b8d4b2def57fb13d79dffad3a8d04e5113eb15aea3d73937e4ba563f0dbdd78115a584 + checksum: 66f7237d59060954fc0ba0c5d9e7081580421014b446080b3efedb3d4be9a4346f50974c5886a4ec7962db9992e5e1c5e26cb76801728b4d9626ac2eb09c26f7 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" +"@babel/plugin-transform-numeric-separator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e830b5d66c9c48ef287d84e453a495ad43cee9abf484f0d4d8e6ec601d0d019ffe031cdb086872f08a2de848cad34d9d193a49c36c9f5c61aff48158f40459ec + checksum: 921d6ff2165eb782c28a6c06e9eb0dc17400c9476b000a7f8b8dfa95c122c22be4adee7bc15f035a1e4269842b3a68b0a2f20e4437025a6e0fbe16e479a879b8 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" +"@babel/plugin-transform-object-assign@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-assign@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4f390ec2687d34d11a8154244d246704be19eeb2ac50b38730ba02ee9adde8a4a4110c79cab0d0778ab3e023034b26fe8745752a9a7624d613e2267b86906b64 + checksum: c80ca956ccc45c68a6f35e8aea80e08c0a653e4baf243727d4258f242d312d71be20e3fad35a1f2cd9d58b30dcbb5cdf5f8d6c6614a3f8c6079d90f9b1dadee6 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" +"@babel/plugin-transform-object-rest-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/compat-data": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cbd6a86743c270a1e2a7caa19f6da22112c9dfa28fe08aea46ec9cb79fc1bc48df6b5b12819ae0e53227d4ca4adaee13f80216c03fff3082d3a88c55b4cddeba + checksum: ab93b8f84e4ed6629ea258d94b597976598a1990035b4d5178c8d117908a48a36f0f03dd2f4a3375393a23a588ecc7817c099ac88a80f8307475b9a25e4d08e0 languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.21.4, @babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.21.0": - version: 7.21.4 - resolution: "@babel/plugin-transform-runtime@npm:7.21.4" +"@babel/plugin-transform-object-super@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-super@npm:7.22.5" dependencies: - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a15bfa5b36f5f1f61521cc1c73e1e394fbd08aef82a416e2e43f5fc7b43830f17d4c9a5605f1b69ed2bbbacd6f49f5e4f9a3e8e0b7a83841bc95e8ef2116f0a9 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" + 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 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bb8188df57ab46c4c708eea17eddd20238ef9106c0e82016b1eb9565f073746e385e0be0b6ee25148507f3dc849311147a43323109c97106f15e0e7ff3220fdf + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-parameters@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7d6a76dd1ac02373bc5542076c97fadcb18a9ebbcd4047e15f7a83d64efcff2baef1060a4bcfb9372d8ea18e5b1970f09514c58cece4145beb31d8b8d45d2e5f + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f178191da005d986fdeb30ef74ea0d28878e6225d305d931ce925d87b7df432f5bb29e32173cff2a5c408cee7abc9f25fab09530d4f419ce5cc29a44a89f7a55 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.16.7, @babel/plugin-transform-react-jsx-development@npm:^7.18.6, @babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" + dependencies: + "@babel/plugin-transform-react-jsx": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.18.6": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 263091bdede1f448cb2c59b84eb69972c15d3f022c929a75337bd20d8b65551ac38cd26dad1946eaa93289643506b10ddaea3445a28cb8fca5a773a22a0df90b + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.19.6": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: defc9debb76b4295e3617ef7795a0533dbbecef6f51bf5ba4bfc162df892a84fd39e14d5f1b9a5aad7b09b97074fef4c6756f9d2036eef5a9874acabe198f75a + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.14.9, @babel/plugin-transform-react-jsx@npm:^7.19.0, @babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/types": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fa4e5b32233c41686a420ad97b07a8a8b6cec7d484e93d5917db460887ded5179a8a20867a5d56d962b5452535830c0c0f8bfdc7d55853369be1e51b6a79a14a + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + regenerator-transform: ^0.15.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d9f42f831323db7e148cd9c47f61f3f667d283dba95f3221715871f52dec39868be1aa81dd834c27a2993602e5e396bb44bdfa563573a0d86b3883a58660004 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3ee861941b1d3f9e50f1bb97a2067f33c868b8cd5fd3419a610b2ad5f3afef5f9e4b3740d26a617dc1a9e169a33477821d96b6917c774ea87cac6790d341abbd + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0e94e9f0c383a606b9422f3644b06258780b81d1bc5c0d46621de312d46f2601ad864a6801bc04da21a8b8208c10454d152f2e91ad0b92fac80bfa5dab25e167 + checksum: 2dcd59bbf14622c2cc088a311a16073b777e34abe733a940c4df6d48fd58900fb7cb22aa2a4645939162cc717618f8e55e96c227ad61f9ae9bca098078aa7345 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" +"@babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/plugin-transform-runtime@npm:7.22.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e60e02dca182d6ec0e7b571d7e99a0528743692fb911826600374b77832922bf7c4b154194d4fe4a0e8a15c2acad3ea44dbaff5189aaeab59124e4c7ee0b8c30 + checksum: 36a5c4a69ca709c6d74b35217b46d72c55a4447f7825a93cb628251b6736391d66d97635877ecb48ff1ddc4516e2e5b6e2e87999835c2c8e08b948eba5f9edfc languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6abd206942e1fd322791707e7e15aa823f9829d8965facbed4abb0f85d51355d0bb21ac8d7184dea22de3bb5853e807ae6b5b74c621507b912c345cbce4a37b4 + checksum: d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" +"@babel/plugin-transform-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-spread@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: efbcf8f0acdac5757cce8d79c0259e3e5142cf3c782d71675802e97709dfb3cbc3dc08202c3ea950ddc23c8f74cae7c334aa05ec095e3cc6d642fa8b30d8e31c + checksum: f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" +"@babel/plugin-transform-sticky-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d1a5e55ed8c3b1186fbba2a7b3e9d880cb3987b846376f51a73216a8894b9c9d6f6c6e2d3cadb17d76f2477552db5383d817169d5b92fcf08ee0fa5b88213c15 + checksum: 42d9295d357415b55c04967ff1cd124cdcbabf2635614f9ad4f8b372d9ae35f6c02bf7473a5418b91e75235960cb1e61493e2c0581cb55bf9719b0986bcd22a5 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" +"@babel/plugin-transform-template-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c42e00635aa9d1c597d339c9023e0f9bfa3cd7af55c00cb8a6461036102b0facdcd3059456d4fee0a63675aeecca62fc84ee01f28b23139c6ae03e6d61c86906 + checksum: 1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-typescript@npm:7.21.3" +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-typescript": ^7.20.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2426887edd9d2b50aa3f17733e7d725f93239f812580c3149910d166b21b73e2e9c0faf8349ccb8feccb30ce7f936e9325bb11a1f6c19c853dca71a606ef2d70 + checksum: 277084dd3e873d62541f683173c7cf33b8317f7714335b7e861cc5b4b76f09acbf532a4c9dfbcf7756d29bc07b94b48bd9356af478f424865a86c7d5798be7c0 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" +"@babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/plugin-transform-typescript@npm:7.22.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-typescript": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1587c3497549a4ad1b75d5b63f1d6ced839d4078dc7df3b5df362c8669f3e9cbed975d5c55632bf8c574847d8df03553851e1b85d1e81a568fdfd2466fcd4198 + checksum: dc0623bbb21bffdc3c64bf5f50677ba06c6bd9f17edae08fd40f3e639632a716efce91100a46aeaad064e082ee71dfd35941cb605bf27f5d32363912a86ba07f languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" +"@babel/plugin-transform-unicode-escapes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e9005b2ca102d75e77154a9a7aa2a716d27f5fede04d98fc5f5bfc63390922da9e0112dac0e3c4df9145d30421131a8a79eeb3c6d51435cb7a6595bb692976f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: da424c1e99af0e920d21f7f121fb9503d0771597a4bd14130fb5f116407be29e9340c049d04733b3d8a132effe4f4585fe3cc9630ae3294a2df9199c8dfd7075 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2f71b5b79df7f8de81c52011d64203b7021f7d23af2470782aef8e8a3be6ca3a208679de8078a12e707342dde1175e5ab44abf8f63c219c997e147118d356dea + checksum: 4cfaf4bb724a5c55a6fb5b0ee6ebbeba78dc700b9bc0043715d4b37409d90b43c888735c613690a1ec0d8d8e41a500b9d3f0395aa9f55b174449c8407663684b + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: af37b468332db051f0aaa144adbfab39574e570f613e121b58a551e3cbb7083c9f8c32a83ba2641172a4065128052643468438c19ad098cd62b2d97140dc483e languageName: node linkType: hard -"@babel/polyfill@npm:^7.11.5, @babel/polyfill@npm:^7.2.5": +"@babel/polyfill@npm:^7.11.5": version: 7.12.1 resolution: "@babel/polyfill@npm:7.12.1" dependencies: @@ -1744,37 +1940,25 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.21.4, @babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:~7.21.0": - version: 7.21.4 - resolution: "@babel/preset-env@npm:7.21.4" +"@babel/preset-env@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/preset-env@npm:7.22.5" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 - "@babel/plugin-proposal-async-generator-functions": ^7.20.7 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.21.0 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.7 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.21.0 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 + "@babel/compat-data": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 + "@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.20.0 + "@babel/plugin-syntax-import-assertions": ^7.22.5 + "@babel/plugin-syntax-import-attributes": ^7.22.5 + "@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 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 @@ -1784,67 +1968,174 @@ __metadata: "@babel/plugin-syntax-optional-chaining": ^7.8.3 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.20.7 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.20.7 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.21.0 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-modules-systemjs": ^7.20.11 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.21.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.20.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.5 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.5 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.5 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.5 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.5 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.5 + "@babel/plugin-transform-for-of": ^7.22.5 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.5 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-modules-systemjs": ^7.22.5 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@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.5 + "@babel/plugin-transform-numeric-separator": ^7.22.5 + "@babel/plugin-transform-object-rest-spread": ^7.22.5 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.5 + "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.5 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.5 + "@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.5 + "@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/preset-modules": ^0.1.5 - "@babel/types": ^7.21.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 + "@babel/types": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + core-js-compat: ^3.30.2 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 20995d58969c4e20fcfd5d80a204008e3312325e002dd353d53811b288b45f9e07d741c9c8935e0298b1ed31b9e6dc1078fdacf78caacda0ebeebf8a50038926 + checksum: dd2b70e96102fc2a64f57c3ab177abeb5aac3f71f47701787b6264d91d7d3ea3d38526d8e1133eb667ca88e87c997ed4a1b8d498ca8be2af07ae4995dfac1b83 languageName: node linkType: hard -"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.18.6": - version: 7.21.4 - resolution: "@babel/preset-flow@npm:7.21.4" +"@babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/preset-env@npm:7.22.9" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-transform-flow-strip-types": ^7.21.0 + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 + "@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-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@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.22.7 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.5 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.6 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.5 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.5 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.5 + "@babel/plugin-transform-for-of": ^7.22.5 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.5 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-modules-systemjs": ^7.22.5 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@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.5 + "@babel/plugin-transform-numeric-separator": ^7.22.5 + "@babel/plugin-transform-object-rest-spread": ^7.22.5 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.6 + "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.5 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.5 + "@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.5 + "@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/preset-modules": ^0.1.5 + "@babel/types": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 + core-js-compat: ^3.31.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fad75686dd55638be71657edbd428bb0266a3f34bc6e367bd55fbff911652c971fcea3e5c346288d4e0a15c81b732c4a2549fce97910b602e19170fe1ddf72d0 + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/preset-flow@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-transform-flow-strip-types": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 50ec8dc9a30ef7ba668e9872f2142bad4ecf7a9a37dfe323a28b7f1de3b2db861e4cf7737e9dfa1a433bd65c3a26d4da93d2efce4f83c39bb8114fcc010ec39f + checksum: d3a54fbaa6da304bedc08847876f23c4bd6f9b13eb8b675ae48c45c678066f7610437b16a8972209c5250bdb205bde8800b8055a844922488b899fdbfe295f31 languageName: node linkType: hard "@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" + version: 0.1.6 + resolution: "@babel/preset-modules@npm:0.1.6" dependencies: "@babel/helper-plugin-utils": ^7.0.0 "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 @@ -1852,45 +2143,45 @@ __metadata: "@babel/types": ^7.4.4 esutils: ^2.0.2 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 6397d196dec1ca91f0f28ea4fbd0e599e5724b7f783f27979e1e9de30a4693f8c1fa98495d542fe5a774b5d0d9b52c6effd2ed15900e879ebcb0488c4bf0eed9 languageName: node linkType: hard -"@babel/preset-react@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/preset-react@npm:7.18.6" +"@babel/preset-react@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/preset-react@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.18.6 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-transform-react-display-name": ^7.22.5 + "@babel/plugin-transform-react-jsx": ^7.22.5 + "@babel/plugin-transform-react-jsx-development": ^7.22.5 + "@babel/plugin-transform-react-pure-annotations": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 19a5b238809e85875488e06f415fde175852ff2361f29ff60233053e3c9914afbaf8befe80cf636d5a49821e8b13067e60c85636deb8e1d6ac543643f5ef2559 + checksum: 60c1fde93d5a6bda03b3d2bb61bcbf056925fd0b01e84d789eaf2a06f639d8714e93735a75da0221fd7a8407c6b4fea7b4fbc35de5ff5d5a299aecb1c82fd530 languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.18.6, @babel/preset-typescript@npm:^7.21.0": - version: 7.21.4 - resolution: "@babel/preset-typescript@npm:7.21.4" +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/preset-typescript@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-syntax-jsx": ^7.21.4 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-typescript": ^7.21.3 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-typescript": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 90cb5b70130f6e600750e6a9db5215806df7e5548698566cf00e882f5e4e5de212ae01ea510f2e1b972c016b53f2809656f82daa8cebe0acc63f06b94bc634b1 + checksum: 2d5924be38bdfea693548359dc547e8bb2c51793d6293168a7248d5ac1f5e94c5f8acea115b006bdd6fa4a20a8e92aa87a826a4aeaf143649e1683d0fe1b82d6 languageName: node linkType: hard "@babel/register@npm:^7.13.16": - version: 7.21.0 - resolution: "@babel/register@npm:7.21.0" + version: 7.22.5 + resolution: "@babel/register@npm:7.22.5" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -1899,7 +2190,7 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2ab2c8bbf033e8e6bfc22860a9f8efebfae0153d7a862357b9c3b66be90c55318d13bfe8b9066e61df06783b5f0895b3aa6e3282c3c96b986330c1151c52af6c + checksum: 60b04871442fecb2a296fd3acbbab07e45c3e1c1f7972e72f6c61c575c3a0d95140710c52c4aa7a9b4bb8622641af6da00e3767b8fe17999a1daa1543025fc64 languageName: node linkType: hard @@ -1911,12 +2202,12 @@ __metadata: linkType: hard "@babel/runtime-corejs3@npm:^7.10.2": - version: 7.21.0 - resolution: "@babel/runtime-corejs3@npm:7.21.0" + version: 7.22.6 + resolution: "@babel/runtime-corejs3@npm:7.22.6" dependencies: - core-js-pure: ^3.25.1 + core-js-pure: ^3.30.2 regenerator-runtime: ^0.13.11 - checksum: b46896f9a774eeb0e8d2597a0a43a87ede27eebec650b3e17719c14a502289ece95029fe5bc8be84798fb1879b69d54efc1f42c3127f1afaf7778d3b8bb692b5 + checksum: 5a68532c614dfef051e155460d3090388533871c8180de770e926ee2e01fbc21ef92c0c56d6c5cb6448650068438f6d1eca0e5a5d3ae36269b0ce3b8d2a0f645 languageName: node linkType: hard @@ -1929,12 +2220,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.21.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" +"@babel/runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: 8fc28acf3b353390a8188a63d443719847b24b66028fdc8bb301c08e2ee013b52aaeb9d0e9783fa5dcd72bb3c0172fb647419db32392101001738356bdc1f4ab + checksum: 11dcaeecd2246857ccf22f939fcae28a58d29e410607bfa28b95d9b03e298a3e3df8a530e22637d5bfccfc1661fb39cc50c06b404b5d53454bd93889c7dd3eb8 languageName: node linkType: hard @@ -1947,6 +2238,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 5a273e7d66586582041c68332028db5376d754d483422541fdc904e10474a6f8aef14dd3a5aabcbcb6daea87b64531cc4be993d2943557ede4a2613f5328a981 + languageName: node + linkType: hard + "@babel/runtime@npm:~7.5.4": version: 7.5.5 resolution: "@babel/runtime@npm:7.5.5" @@ -1956,14 +2256,14 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:7.20.7, @babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3, @babel/template@npm:^7.7.0, @babel/template@npm:^7.8.6": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" +"@babel/template@npm:7.22.5, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.7.0, @babel/template@npm:^7.8.6": + version: 7.22.5 + resolution: "@babel/template@npm:7.22.5" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 1c6dcf9ac92769e6ab5e3d9048975537d26ab00b869646462ab4583d45e419c01db5144715ec0d70548835a3098c5d5416148c4a0b996a95e8e0b9dc8d042dd3 + "@babel/code-frame": ^7.22.5 + "@babel/parser": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 languageName: node linkType: hard @@ -1978,32 +2278,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.4, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2, @babel/traverse@npm:^7.8.6, @babel/traverse@npm:~7.21.2": - version: 7.21.4 - resolution: "@babel/traverse@npm:7.21.4" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.8.6": + version: 7.22.8 + resolution: "@babel/traverse@npm:7.22.8" dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.4 - "@babel/types": ^7.21.4 + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.7 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.7 + "@babel/types": ^7.22.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: 3b2e7e80ef088881ad1f30a032f71ba63d734c270cd240dc229f26bfdeabcd661cf40d2c083f250812b08bb04985f77fb038b7b1ee629b3378ee867dff163878 + checksum: 839014824c210388ed46f92bf5265522bd5bbb4a9a03c700f9d79b151bdd0aa077c2f6448a0cef41132188cc2bc6d8cdcad98a297ba59983401e882bdc256b1f languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.8, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.3, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.8.6, @babel/types@npm:^7.8.7, @babel/types@npm:^7.9.6, @babel/types@npm:~7.21.2": - version: 7.21.4 - resolution: "@babel/types@npm:7.21.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.8.6, @babel/types@npm:^7.8.7, @babel/types@npm:^7.9.6": + version: 7.22.5 + resolution: "@babel/types@npm:7.22.5" dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 to-fast-properties: ^2.0.0 - checksum: 3820dc7b32706241ff3c0d02d034108f94586c7e8fa39cf3e2f0f0c46645f554d3c23f72c91ba7c62290ea33e21c3296dbacc40fd9fbf6cd22c3fa939e711d01 + checksum: 2473295056520432ec0b5fe2dc7b37914292d211ccdbc2cb05650f9c44d5168a760bca0f492a9fff7c72459defee15cd48ef152e74961cfdc03144c7a4b8bec8 languageName: node linkType: hard @@ -2104,15 +2404,15 @@ __metadata: linkType: hard "@digitak/esrun@npm:^3.2.2": - version: 3.2.23 - resolution: "@digitak/esrun@npm:3.2.23" + version: 3.2.24 + resolution: "@digitak/esrun@npm:3.2.24" dependencies: "@digitak/grubber": ^3.1.4 chokidar: ^3.5.1 esbuild: ^0.17.4 bin: esrun: bin.js - checksum: 531656b4f79ff8a96c225aec4d8179b9fb05b76b8385fa52e3923e63b112795b3931dee82c604a7dedabe6af0be0451c3f6bea8663101a0b38f2dfca6c668213 + checksum: cfd46e5be5083d7a7b97881718ff0872ca0a314a294bf7484324d964fa92548db6603e7e5792a2f6d7a820d9e7c55715b70f534fd3cc72ea25e20f56f4490793 languageName: node linkType: hard @@ -2144,73 +2444,73 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.10.6": - version: 11.10.6 - resolution: "@emotion/babel-plugin@npm:11.10.6" +"@emotion/babel-plugin@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/babel-plugin@npm:11.11.0" dependencies: "@babel/helper-module-imports": ^7.16.7 "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/serialize": ^1.1.1 + "@emotion/hash": ^0.9.1 + "@emotion/memoize": ^0.8.1 + "@emotion/serialize": ^1.1.2 babel-plugin-macros: ^3.1.0 convert-source-map: ^1.5.0 escape-string-regexp: ^4.0.0 find-root: ^1.1.0 source-map: ^0.5.7 - stylis: 4.1.3 - checksum: 734ab5d59f8a64ec2cb140f71483f74910ada115bf78ce5b645a9e3e379554ffd79045edb74efb8c1d8f856ef4d302bf8ac59b969b1cc28dedcd5000072e63ce + stylis: 4.2.0 + checksum: 89cbb6ec0e52c8ee9c2a4b9889ccd4fc3a75d28091d835bfac6d7c4565d3338621e23af0a85f3bcd133e1cae795c692e1dadada015784d4b0554aa5bb111df43 languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7": - version: 11.10.7 - resolution: "@emotion/cache@npm:11.10.7" +"@emotion/cache@npm:^11.10.7, @emotion/cache@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 0175b8be5117342e76e100fca92932a34c3641160c733a34534153eab7f1c1b2cecafee6d9a7a0646acf7be3c52b0654dc34900439316ae473b59a9eb1a1c8f3 + "@emotion/memoize": ^0.8.1 + "@emotion/sheet": ^1.2.2 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 + stylis: 4.2.0 + checksum: a23ab5ab2fd08e904698106d58ad3536fed51cc1aa0ef228e95bb640eaf11f560dbd91a395477b0d84e1e3c20150263764b4558517cf6576a89d2d6cc5253688 languageName: node linkType: hard -"@emotion/css-prettifier@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/css-prettifier@npm:1.1.1" +"@emotion/css-prettifier@npm:^1.1.3": + version: 1.1.3 + resolution: "@emotion/css-prettifier@npm:1.1.3" dependencies: - "@emotion/memoize": ^0.8.0 - stylis: 4.1.3 - checksum: b921139e04d443ea3c8170cb90ae3c758e9effacdba99c5edab5d69400bcf464da283d20a92b4a1e8c74bb3e5feb8ebaee2e74ff5c84d5eab9989b000e5c7c42 + "@emotion/memoize": ^0.8.1 + stylis: 4.2.0 + checksum: 9ce3d7e5851054a24ca68cca4f6973de47d64567d03b6be730aa83f1cf9ae15e4da8c4611e68620e7b972f7a9fb7c36099fdf7e26b78589eb64f094fce46ce1b languageName: node linkType: hard -"@emotion/hash@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/hash@npm:0.9.0" - checksum: 0910d3e9ec46cc780f691c96fb6f6f67b4f080b50ecf4f441bc4b33b5906e28099f530a368fe0b31c6bad38a857ac44df3c36f8978be603789d71330ac01af12 +"@emotion/hash@npm:^0.9.1": + version: 0.9.1 + resolution: "@emotion/hash@npm:0.9.1" + checksum: cdafe5da63fc1137f3db6e232fdcde9188b2b47ee66c56c29137199642a4086f42382d866911cfb4833cae2cc00271ab45cad3946b024f67b527bb7fac7f4c9d languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/is-prop-valid@npm:1.2.0" +"@emotion/is-prop-valid@npm:^1.2.0, @emotion/is-prop-valid@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/is-prop-valid@npm:1.2.1" dependencies: - "@emotion/memoize": ^0.8.0 - checksum: 098bfde166ddbc3ad635157dff8dd8b90ceb5ee2804b3dbc9ffbffcac33955390d6c6e94dc36b1fde8c90f49dc1e1359dfdcd967906b006a3966382dbe8cc90b + "@emotion/memoize": ^0.8.1 + checksum: 7c2aabdf0ca9986ca25abc9dae711348308cf18d418d64ffa4c8ffd2114806c47f2e06ba8ee769f38ec67d65bd59ec73f34d94023e81baa1c43510ac86ccd5e6 languageName: node linkType: hard "@emotion/jest@npm:^11.10.0, @emotion/jest@npm:^11.8.0": - version: 11.10.5 - resolution: "@emotion/jest@npm:11.10.5" + version: 11.11.0 + resolution: "@emotion/jest@npm:11.11.0" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/css-prettifier": ^1.1.1 + "@emotion/css-prettifier": ^1.1.3 chalk: ^4.1.0 specificity: ^0.4.1 - stylis: 4.1.3 + stylis: 4.2.0 peerDependencies: "@types/jest": ^26.0.14 || ^27.0.0 || ^28.0.0 || ^29.0.0 enzyme-to-json: ^3.2.1 @@ -2219,258 +2519,258 @@ __metadata: optional: true enzyme-to-json: optional: true - checksum: 4629a2eac0bf1aa5a590c0fecedfa908325f3c7f66f13811058162e1fe94e2fc5282dbe321f9cb1593a3220e193e88e054ab138276c3f425b4a202ce1d135f17 + checksum: 919def636000234c4af8447a6cdf7f9675146bb020074fd06cf3c6eb42c365e727354ae79b2a7cdccb472d38da8ed8d6fd57f4235cab2e1b7605a2c6672a0fc5 languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: 246087ec09b32b295af67a094253831f398aabd953d03d14f186acb8607ed2a755e944f5e20b5ccebb461f15c2e5ccbf8fe977bcf3be951cf10961c504e1e65b +"@emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78 languageName: node linkType: hard "@emotion/react@npm:^11.10.4": - version: 11.10.6 - resolution: "@emotion/react@npm:11.10.6" + version: 11.11.1 + resolution: "@emotion/react@npm:11.11.1" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.6 - "@emotion/cache": ^11.10.5 - "@emotion/serialize": ^1.1.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 + "@emotion/babel-plugin": ^11.11.0 + "@emotion/cache": ^11.11.0 + "@emotion/serialize": ^1.1.2 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 hoist-non-react-statics: ^3.3.1 peerDependencies: react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 4c5ce8ef279a8ce0d371414720d9b2b195ce6b30abf82d99a856ef3b7dc8643f8a32b9b01fded35d94ab9159e4982f7eb0ffa3c4b1aabb102180383e56232bcf + checksum: 1aea4d735b537fbfbeda828bbf929488a7e1b5b7d131f14aeede8737e92bb3b611e15fec353e97f85aed7a65a1c86a695a04ba6e9be905231beef6bd624cb705 languageName: node linkType: hard -"@emotion/serialize@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/serialize@npm:1.1.1" +"@emotion/serialize@npm:^1.1.2": + version: 1.1.2 + resolution: "@emotion/serialize@npm:1.1.2" dependencies: - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/unitless": ^0.8.0 - "@emotion/utils": ^1.2.0 + "@emotion/hash": ^0.9.1 + "@emotion/memoize": ^0.8.1 + "@emotion/unitless": ^0.8.1 + "@emotion/utils": ^1.2.1 csstype: ^3.0.2 - checksum: ea353abbf530ede8b74fe4df30eb626f245f710ce0bfcb9d34e72630a1dede688fddf02b1143f33a1a4ef5b66b70715a3c1cd6a12ec43f5b585ed60d4f3e8712 + checksum: d243e0e5abce8d2183d25a32ec89bf650ee741ebadb29e6405abde05d4e2ed446ba5b3f725a29833ad709d0d08f0a5c8d0532fdcd43f4b23d931d8b6d4f218c1 languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: 88268c00005d310df3ebb249b839ad0b234943da5a0cc614b232b9bd4ae600292dca9b0f61c45cde3a592c77459e880d77a2aa73af20ec3c0d579afccc3f71af +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: 69827a1bfa43d7b188f1d8cea42163143a36312543fdade5257c459a2b3efd7ce386aac84ba152bc2517a4f7e54384c04800b26adb382bb284ac7e4ad40e584b languageName: node linkType: hard "@emotion/styled@npm:^11.10.4": - version: 11.10.6 - resolution: "@emotion/styled@npm:11.10.6" + version: 11.11.0 + resolution: "@emotion/styled@npm:11.11.0" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.6 - "@emotion/is-prop-valid": ^1.2.0 - "@emotion/serialize": ^1.1.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@emotion/utils": ^1.2.0 + "@emotion/babel-plugin": ^11.11.0 + "@emotion/is-prop-valid": ^1.2.1 + "@emotion/serialize": ^1.1.2 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 + "@emotion/utils": ^1.2.1 peerDependencies: "@emotion/react": ^11.0.0-rc.0 react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 69e968bb359758ec454c547d6f1d5b1a50a8c149c13274119f63d81fbb76db46b2df53c236ecbc9cb15696f9834647156d715e5e6ccc84ff7b1852617e367386 + checksum: a168bd7a8a6f254e54a321be4c7b7dd4bf65815e6570ba7c5a435b7d5aeebd76434e04886db7799a955817c8d5bf0103a3dcc3c785fba2bb53922320dda59a10 languageName: node linkType: hard -"@emotion/unitless@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/unitless@npm:0.8.0" - checksum: 1f2cfb7c0ccb83c20b1c6d8d92a74a93da4b2a440f9a0d49ded08647faf299065a2ffde17e1335920fa10397b85f8635bbfe14f3cd29222a59ea81d978478072 +"@emotion/unitless@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/unitless@npm:0.8.1" + checksum: a1ed508628288f40bfe6dd17d431ed899c067a899fa293a13afe3aed1d70fac0412b8a215fafab0b42829360db687fecd763e5f01a64ddc4a4b58ec3112ff548 languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": + version: 1.0.1 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" peerDependencies: react: ">=16.8.0" - checksum: 0c5fbd36a4f416a5abaf428ba3dca6e79018c4c74016ecb4e3991a11cf8b5dbd306d7770fee09692971335e33f97e3b555deda595e5ae7831841505078bd07d7 + checksum: a15b2167940e3a908160687b73fc4fcd81e59ab45136b6967f02c7c419d9a149acd22a416b325c389642d4f1c3d33cf4196cad6b618128b55b7c74f6807a240b languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 7051cec83bb49688549667484058d3a19a30001fa3692c23f7a2e727c05121f952854e1196feb9ece4fa36914705ebf474edba833a2178bdc133c654b5e3ca7d +"@emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: db43ca803361740c14dfb1cca1464d10d27f4c8b40d3e8864e6932ccf375d1450778ff4e4eadee03fb97f2aeb18de9fae98294905596a12ff7d4cd1910414d8d languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: 1771687cc3b3280371de12698f1b78756c64654fc7d15ce76e1fb5d4adf9fd49d4411e41276bbfd5b521ef9cef647196aa9dca26f936c466fb80bf48491fa844 +"@emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: ed514b3cb94bbacece4ac2450d98898066c0a0698bdeda256e312405ca53634cb83c75889b25cd8bbbe185c80f4c05a1f0a0091e1875460ba6be61d0334f0b8a languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-arm64@npm:0.17.15" +"@esbuild/android-arm64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/android-arm64@npm:0.18.16" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-arm@npm:0.17.15" +"@esbuild/android-arm@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/android-arm@npm:0.18.16" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-x64@npm:0.17.15" +"@esbuild/android-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/android-x64@npm:0.18.16" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/darwin-arm64@npm:0.17.15" +"@esbuild/darwin-arm64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/darwin-arm64@npm:0.18.16" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/darwin-x64@npm:0.17.15" +"@esbuild/darwin-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/darwin-x64@npm:0.18.16" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/freebsd-arm64@npm:0.17.15" +"@esbuild/freebsd-arm64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/freebsd-arm64@npm:0.18.16" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/freebsd-x64@npm:0.17.15" +"@esbuild/freebsd-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/freebsd-x64@npm:0.18.16" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-arm64@npm:0.17.15" +"@esbuild/linux-arm64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-arm64@npm:0.18.16" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-arm@npm:0.17.15" +"@esbuild/linux-arm@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-arm@npm:0.18.16" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-ia32@npm:0.17.15" +"@esbuild/linux-ia32@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-ia32@npm:0.18.16" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-loong64@npm:0.17.15" +"@esbuild/linux-loong64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-loong64@npm:0.18.16" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-mips64el@npm:0.17.15" +"@esbuild/linux-mips64el@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-mips64el@npm:0.18.16" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-ppc64@npm:0.17.15" +"@esbuild/linux-ppc64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-ppc64@npm:0.18.16" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-riscv64@npm:0.17.15" +"@esbuild/linux-riscv64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-riscv64@npm:0.18.16" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-s390x@npm:0.17.15" +"@esbuild/linux-s390x@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-s390x@npm:0.18.16" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-x64@npm:0.17.15" +"@esbuild/linux-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/linux-x64@npm:0.18.16" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/netbsd-x64@npm:0.17.15" +"@esbuild/netbsd-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/netbsd-x64@npm:0.18.16" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/openbsd-x64@npm:0.17.15" +"@esbuild/openbsd-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/openbsd-x64@npm:0.18.16" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/sunos-x64@npm:0.17.15" +"@esbuild/sunos-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/sunos-x64@npm:0.18.16" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-arm64@npm:0.17.15" +"@esbuild/win32-arm64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/win32-arm64@npm:0.18.16" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-ia32@npm:0.17.15" +"@esbuild/win32-ia32@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/win32-ia32@npm:0.18.16" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-x64@npm:0.17.15" +"@esbuild/win32-x64@npm:0.18.16": + version: 0.18.16 + resolution: "@esbuild/win32-x64@npm:0.18.16" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2487,33 +2787,33 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.4.0": - version: 4.5.0 - resolution: "@eslint-community/regexpp@npm:4.5.0" - checksum: 7a828a8cf9422c4d6676f3b207237cabf3cd3c4327a28c5990b726630677ddc35ea9f9488d3c9c449db924cd5d9d58ded7824339774ca3592d292e0d6f945bde + version: 4.6.1 + resolution: "@eslint-community/regexpp@npm:4.6.1" + checksum: 4ab30d948881ad01311a24866afb30cf7481c594ac6aecebf7fbea2f29bd42d403d5676b69790df3d333620d863df29358a0282f10726f3506e5ef52471204be languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.2": - version: 2.0.2 - resolution: "@eslint/eslintrc@npm:2.0.2" +"@eslint/eslintrc@npm:^2.1.0": + version: 2.1.0 + resolution: "@eslint/eslintrc@npm:2.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.5.1 + espree: ^9.6.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 6ae7360f4e45fbfa6f66ba92be506860d15f070847bdad4542c97eda98b16c1f4f5be4a8807ccb284224691eb4125bbffc51e8933f6cb186d6cf23a8e668eb5b + checksum: 6ffbc3e7867b377754492539af0e2f5b55645a2c67279a70508fe09080bc76d49ba64b579e59a2a04014f84d0768301736fbcdd94c7b3ad4f0e648c32bf21e43 languageName: node linkType: hard -"@eslint/js@npm:8.37.0": - version: 8.37.0 - resolution: "@eslint/js@npm:8.37.0" - checksum: 6abb3d97412ac960c7436ecdaa56eb00ac57c34782dc0901c82b259c32704e45044927b2910d786ec2127e548986d67e7ba29fec46abfb5d8fc9bedf379af2cf +"@eslint/js@npm:8.44.0": + version: 8.44.0 + resolution: "@eslint/js@npm:8.44.0" + checksum: ce7b966f8804228e4d5725d44d3c8fb7fc427176f077401323a02e082f628d207133a25704330e610ebe3254fdf1acb186f779d1242fd145a758fdcc4486a660 languageName: node linkType: hard @@ -2524,13 +2824,98 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": +"@figspec/components@npm:^1.0.1": + version: 1.0.1 + resolution: "@figspec/components@npm:1.0.1" + dependencies: + lit: ^2.1.3 + checksum: 74e2c4c6959355efc5d89f224b32ed8207c4885b7d4bbdc2c7c9de6e5ef3e5b80a553fc26ca51eac77b03b6414ec645b147ba64211cf1165e2bcce49ced67fc8 + languageName: node + linkType: hard + +"@figspec/react@npm:^1.0.0": + version: 1.0.3 + resolution: "@figspec/react@npm:1.0.3" + dependencies: + "@figspec/components": ^1.0.1 + "@lit-labs/react": ^1.0.2 + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 + checksum: d5bbb79e106f522f5b867d0f55de01391edd1011e3f5d5a966ac07a5fca75f499d1d4d40a6186cf0afdc4fc4b49d808eb5d4fcbaf1784401a1ace2865dbc19be + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.3.1": + version: 1.3.1 + resolution: "@floating-ui/core@npm:1.3.1" + checksum: 894bc3637c03beda184a4460cb53155fd30c2a0956569e1c714b7df9e3439517b1c34ad9a8114ea15a6c08d1e3f1d40741d259f0f1087fc3ea96fae7dfeb697e + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.3.0": + version: 1.4.5 + resolution: "@floating-ui/dom@npm:1.4.5" + dependencies: + "@floating-ui/core": ^1.3.1 + checksum: 2c406920221d99ba585f769c7aea450299cbd4d316b307151a214c861bd4deda3f724589d94b1bc676a9a33958d5a9d40b4b1e1065350e8699cc7a79f74f506e + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.0": + version: 2.0.1 + resolution: "@floating-ui/react-dom@npm:2.0.1" + dependencies: + "@floating-ui/dom": ^1.3.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 856c0c9de0a9117bcc69b1363fd9fa188133b9714394609db937903ab4330e9851becfd2a83453f40834de1a18377caf329b6b71afc1c69d7c5687f87da80ed4 + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff languageName: node linkType: hard +"@gitbeaker/core@npm:^21.7.0": + version: 21.7.0 + resolution: "@gitbeaker/core@npm:21.7.0" + dependencies: + "@gitbeaker/requester-utils": ^21.7.0 + form-data: ^3.0.0 + li: ^1.3.0 + xcase: ^2.0.1 + checksum: 907f1dac7f43e288c71f184243712a65601a88ab7c9a8b7ff76629d8d94360c31f995b8142dec324615ad50f7e78e12f646a4302cb595dc990da3cdbd2514dfe + languageName: node + linkType: hard + +"@gitbeaker/node@npm:^21.3.0": + version: 21.7.0 + resolution: "@gitbeaker/node@npm:21.7.0" + dependencies: + "@gitbeaker/core": ^21.7.0 + "@gitbeaker/requester-utils": ^21.7.0 + form-data: ^3.0.0 + got: ^11.1.4 + xcase: ^2.0.1 + checksum: c5be30593dae749271f8529a0e33a1831f173d7e39796c9e30206a71e3007cc6368c802d296f1a8fcca056a8e718c77f50ae61aa17de8e444f0c91bf1a05950c + languageName: node + linkType: hard + +"@gitbeaker/requester-utils@npm:^21.7.0": + version: 21.7.0 + resolution: "@gitbeaker/requester-utils@npm:21.7.0" + dependencies: + form-data: ^3.0.0 + query-string: ^6.12.1 + xcase: ^2.0.1 + checksum: 1930783d67a8add51bd6056e0524facfc867fb73d78387af4259a166a5e725eaa64a4c22c0fe33538762b0abb496781bf39d95fc8d544825354254dd05e05271 + languageName: node + linkType: hard + "@glimmer/vm-babel-plugins@npm:0.80.3": version: 0.80.3 resolution: "@glimmer/vm-babel-plugins@npm:0.80.3" @@ -2601,15 +2986,6 @@ __metadata: languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:^3.1.0": - version: 3.2.0 - resolution: "@graphql-typed-document-node/core@npm:3.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c - languageName: node - linkType: hard - "@hapi/accept@npm:^5.0.1": version: 5.0.2 resolution: "@hapi/accept@npm:5.0.2" @@ -2932,14 +3308,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.8": - version: 0.11.8 - resolution: "@humanwhocodes/config-array@npm:0.11.8" +"@humanwhocodes/config-array@npm:^0.11.10": + version: 0.11.10 + resolution: "@humanwhocodes/config-array@npm:0.11.10" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.5 - checksum: 441223496cc5ae3ae443e11e2ba05f03f6418d1e0233e3d160b027dda742d7a957fa9e1d56125d5829079419c797c13e1ae8ffe3454f268901ac18f68e0198f1 + checksum: 9e307a49a5baa28beb243d2c14c145f288fccd6885f4c92a9055707057ec40980242256b2a07c976cfa6c75f7081da111a40a9844d1ca8daeff2302f8b640e76 languageName: node linkType: hard @@ -2971,6 +3347,20 @@ __metadata: languageName: node linkType: hard +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + 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" + checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + "@isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" @@ -2998,29 +3388,29 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 59dfbdb6c3c15652f8d7267071f24d6335afbed0b1cf71aed70b6ce8deb1d86e7f4aadb978f639435650107fd22476b59e63a3d3a9ac99b1aca739b795a54410 + checksum: d62b089015f06d2ca277d8bff63a2c19b861b12161f5b8a69207498b980659dedfdcdcdcd1c0d5078a73cba5dd270392c65476ba9a48b795d1276517ba30f7ed languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/core@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/reporters": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/reporters": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 @@ -3028,20 +3418,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 + jest-config: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-resolve-dependencies: ^29.5.0 - jest-runner: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - jest-watcher: ^29.5.0 + jest-resolve: ^29.6.1 + jest-resolve-dependencies: ^29.6.1 + jest-runner: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 + jest-watcher: ^29.6.1 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -3049,7 +3439,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: e4b3e0de48614b2c339083b9159f00a024839984bd89b9afa4cfff4c38f6ce485c2009f2efa1c1e3bb3b87386288bc15798c6aebb7937d7820e8048d75461a4d + checksum: dccd83243af657da9af4c7ae578d55267c85e5bf1755a3a3e189c9ec0d23d409956e0eff7c13b81a388940ab9f294b0afc0241288d5832769687d919fae576fe languageName: node linkType: hard @@ -3062,136 +3452,73 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/environment@npm:26.6.2" - dependencies: - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - checksum: b489afb2fa9bbde360f222bc905abd9abd77ae5802b16ca7a34d018405ad7df57a506c01efae8ff8b566c211314ec74b3f37a1cb850623e15eb1e6d020582197 - languageName: node - linkType: hard - -"@jest/environment@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/environment@npm:28.1.3" - dependencies: - "@jest/fake-timers": ^28.1.3 - "@jest/types": ^28.1.3 - "@types/node": "*" - jest-mock: ^28.1.3 - checksum: 910b8863f300e0627c8f7bf6280fe51da25060e72ac1179d959cce74907b048e64042ad192800259a037dc52faa2e361e778a94df223cf1b17a315e5eec5471e - languageName: node - linkType: hard - -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/environment@npm:29.6.1" dependencies: - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - checksum: 1fbe63cbfb9c3f6c9fc9d8f6917a5aceee1828d589569bbffcf5fb4bb56bc021dc3a6f239cde3099144767c97763ae134904ee522f236cd8c0d071bd7f9ef63b + jest-mock: ^29.6.1 + checksum: 9c9fddcbec02b59b9719ede7d51e23e5dcd2230365a1df45ff782ea18af4b51fa0d9f5a3e76fbee6d0b7403ae4cd3fb9c45e9f86177c9be02bbbf84ae7f778c6 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" +"@jest/expect-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect-utils@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - checksum: e7f44de651b5ef71c6e1b7a0350a704258167c20b6e8165b3100346d5c7f8eb4cd2c229ea2c048e9161666d1c086fbbc422f111f3b77da3fb89a99d52d4b3690 - languageName: node - linkType: hard - -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" - dependencies: - expect: ^29.5.0 - jest-snapshot: ^29.5.0 - checksum: 447e7450af8ba61ac34d8a2ca11c56c62f6f0fb33ff13130f11a1ec9526a08d756ee72da622316a2c52ecfe726fe14432bdfb46e45aff5676f8d1a8efc8d201c - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/fake-timers@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@sinonjs/fake-timers": ^6.0.1 - "@types/node": "*" - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: 861b033ead8c749f0fecffb84cbe88603291d9db66129494d0059dee101616a2aa646fc32c8cab468826eeb32647d2b0b4f72869f048163cb3406ddd2902ece0 + checksum: e04164280c0b47a6285f39e70323b54eafc42367d9304897d55d70abd50324e060cb81efc7df82b1031eb46b82b85ecf343ed50c72654b11f1492b34c5e1a7b9 languageName: node linkType: hard -"@jest/fake-timers@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/fake-timers@npm:28.1.3" +"@jest/expect@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect@npm:29.6.1" dependencies: - "@jest/types": ^28.1.3 - "@sinonjs/fake-timers": ^9.1.2 - "@types/node": "*" - jest-message-util: ^28.1.3 - jest-mock: ^28.1.3 - jest-util: ^28.1.3 - checksum: 70ca341df62bf51a9bed653743dfc17011df58995520b51730ee7f5aef26a0295a5f5b58e838e6dbace998de417aa1c3a77d6de1590b53065475a195601552c6 + expect: ^29.6.1 + jest-snapshot: ^29.6.1 + checksum: 7766e9e02eac18edd2dfdf3481083f1a45b42efdc5fb13e3290132a0379d807a8b892ba1055c6917a3a2ed902240c556ac8704e17652b1b8387a58711867ca2f languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/fake-timers@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/fake-timers@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: dbf52fd302bf6b3d7ec49499f12835b7d7d4069d61adc62dac233021eba61186bbad3add1ceb3225a23a8745dd04fa0dcc2c38d350ecb0f26eec63f2cf5e6aff - languageName: node - linkType: hard - -"@jest/globals@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/globals@npm:26.6.2" - dependencies: - "@jest/environment": ^26.6.2 - "@jest/types": ^26.6.2 - expect: ^26.6.2 - checksum: 6516baa19339a62c8f5eeb2ef3871bfa5bd5645016f1eb87dbe52a37658e7b33b836a1325ba40db250df5d06c08dd1cb1532fbfac5712f4041561525b59bb03f + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 112b1f26f48f16dd8732f9842d480b66545cd5226d674e59c758f56680d234fc4debb77497784bf26130b21caab4d8cd39cf09afbbb2863a0a4ee0ccdb4c6e14 languageName: node linkType: hard -"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0, @jest/globals@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/globals@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/types": ^29.5.0 - jest-mock: ^29.5.0 - checksum: 0c25f07d8125e45cf3c21442e625f6a636eaf7f4cf1cf3f9f66bae059aeb31d3dc61dfff9479eb861a5089dca34c95e231ad88b8925bee42387abecbfe5ecbc2 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.1 + checksum: 9ee8a6e476b8e74d4aa16150ea0ba0b8ecc25328062762cb46095fdec9638fc525d0e7f06e3aa1413600749c79d02a4db18da9912675843672242ea44763fa49 languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -3203,9 +3530,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -3215,83 +3542,74 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 72b771a7749ac2eb9b671f2a886dc98cbe914dfa1a4266854b040e4cc563bf9f5db02b8ff8654b7bfbc3b28caa6d48ca0dde9707454ea4f79d77bd13b6357929 - languageName: node - linkType: hard - -"@jest/schemas@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/schemas@npm:28.1.3" - dependencies: - "@sinclair/typebox": ^0.24.1 - checksum: 8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac + checksum: fd6e1eab9afee7eebb0a5f461b447b72d227459ce0e96e3ad4024e8795a36d03e1110c91fae9c61a5da50df42978041455f96bf5b09e5b0cead33fb44c63150b languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" +"@jest/schemas@npm:^29.4.3, @jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 + "@sinclair/typebox": ^0.27.8 + checksum: 8671b1fb59c4296204d335190e8451e1983d9f2db6dbbd38f838c6c273fd222fc11e4e0df04adfb6169d36acfb9693d525db136653ec04e6884180f45a131d8f languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/source-map@npm:29.6.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 353f9989dcb416e8a2559ad2831b4b3e8446a9f8259782cec97f89903b5c00baa76ea3e23a3f1c83c1ccb3999a9e318b8c6a4bab29e4b66a4abdbb760e445a50 + checksum: afa654e3634ad74d5f8388ccffd7ecbd745bdce7f6f0860b69c07827c3ee5bb408f52b6c3136b43157ef5874c099059484e43bd3aa391232ab27d8c330399789 languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 5d637c9935ea0438b2a7c106d48756967e5a96fa4426a9b16ea2a3e73e1538eabd10fd4faa8eb46aa4fee710a165e0fd2ce0603dacde5e8a1bba541100854b1d + checksum: 0b460253f092042cb2edaae92f9f22aed150a2dc3eaa8dbd60a31db8a3b12fc14c89784b580e0a678ef52e7438a11b27eaaedd2bc9c4328dbbd6d5d72983de6c languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-sequencer@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 + "@jest/test-result": ^29.6.1 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 slash: ^3.0.0 - checksum: 6fb7549a5dbe2da6817eb853134f76cf2b320b283900c5e63c997ecfadc616379372a49ac8c0f4ffdb9616eed4a5908c74cb7a560a395a6e1dc0d072b865657b + checksum: 411b7fd3a55daaf6f3ce7d3f3cd7114580126df9190a3f27d4e5a5429d91cb56c77899560afefd69451cde4911259c44f9e5fb09d975dc1f1ba597295a64f165 languageName: node linkType: hard -"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/transform@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 + jest-util: ^29.6.1 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 113598311d84ec7e4a4aadd340e332bbfbbd66e20eabea8b2f084b80cf97c1bc9e1ff90278c4f04b227afa95e3386d702363715f9923062c370c042c31911d94 + checksum: e34ddd89f372af749e983e29febfbb6f9a96eb677af32b5b299ce36eeab7b1ae55ddda2b64ff91437991f3f9b43cfc7ffa3b511ce7e7c1c23ae2b50d8a65a07f languageName: node linkType: hard @@ -3321,31 +3639,17 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/types@npm:28.1.3" - dependencies: - "@jest/schemas": ^28.1.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: 3cffae7d1133aa7952a6b5c4806f89ed78cb0dfe3ec4e8c5a6e704d7bab3cff86c714abb5f0f637540da22776900a33b3bad79c5ed5fc5b5535fb24e3006e3cb - languageName: node - linkType: hard - -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" +"@jest/types@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/types@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d + checksum: 58de1c2484f6c4968b566fb1661506794d3df79476c0605a71b6e40b8a5a1a9837b9c692782540a179daa424c572c7d0818afa306918e3fcd29c4a962ed34a7b languageName: node linkType: hard @@ -3367,58 +3671,62 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3d784d87aee604bc4d48d3d9e547e0466d9f4a432cd9b3a4f3e55d104313bf3945e7e970cd5fa767bc145df11f1d568a01ab6659696be41f0ed2a817f3b583a3 - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" dependencies: "@jridgewell/set-array": ^1.0.1 "@jridgewell/sourcemap-codec": ^1.4.10 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 82685c8735c63fe388badee45e2970a6bc83eed1c84d46d8652863bafeca22a6c6cc15812f5999a4535366f4668ccc9ba6d5c67dfb72e846fa8a063806f10afd + checksum: 376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" checksum: 78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" checksum: bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1540da323456878281c8e03fc4edc444ea151aa441eb38a43d84d39df8fec9446e375202cd999b54637f4627e42e2a38b3ab07195e5e49616fc6b7eee1b7119f + checksum: b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14": +"@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3429,13 +3737,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.18 + resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: "@jridgewell/resolve-uri": 3.1.0 "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 40b65fcbdd7cc5a60dbe0a2780b6670ebbc1a31c96e43833e0bf2fee0773b1ba5137ab7d137b28fc3f215567bd5f9d06b7b30634ba15636c13bd8a863c20ae9a + checksum: e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac languageName: node linkType: hard @@ -3453,41 +3761,41 @@ __metadata: languageName: node linkType: hard -"@lerna/child-process@npm:6.6.1": - version: 6.6.1 - resolution: "@lerna/child-process@npm:6.6.1" +"@lerna/child-process@npm:6.6.2": + version: 6.6.2 + resolution: "@lerna/child-process@npm:6.6.2" dependencies: chalk: ^4.1.0 execa: ^5.0.0 strong-log-transformer: ^2.1.0 - checksum: 423cca21bf43c4455241e8ef2ad9d7f8831897292599a50e6956be6510defb86d5b9b80dcef7ebd1054dc3b9f620c67bc3af712b84d33a62841a75737760ebcf + checksum: 94517af1b95eff91b7d7f02678837866b8cf4304ff8b94e8ee31c12541baee1c6b5eb0fbf21e6d8ed5d558dc176197f98f127195e90e159e2ddb9943f1ad7cf3 languageName: node linkType: hard -"@lerna/create@npm:6.6.1": - version: 6.6.1 - resolution: "@lerna/create@npm:6.6.1" +"@lerna/create@npm:6.6.2": + version: 6.6.2 + resolution: "@lerna/create@npm:6.6.2" dependencies: - "@lerna/child-process": 6.6.1 + "@lerna/child-process": 6.6.2 dedent: ^0.7.0 fs-extra: ^9.1.0 init-package-json: ^3.0.2 npm-package-arg: 8.1.1 p-reduce: ^2.1.0 - pacote: ^13.6.1 + pacote: 15.1.1 pify: ^5.0.0 semver: ^7.3.4 slash: ^3.0.0 validate-npm-package-license: ^3.0.4 validate-npm-package-name: ^4.0.0 yargs-parser: 20.2.4 - checksum: b181a048863f4ac2a5f120aee540dbd98a8b3fb25c80f3996b581ab138a2ffd5fa97120f3598da9c1b37ca28062938014bd7fec0dd3ce676469b8a31c79c7bd5 + checksum: e37f3acc3ab65f1170b962ef180e5a39f5fd15c0ee08fb0532ea2ad923230897a67bb26f06495013c377dcab8040cefd7a9ed875b9333d835cfd43b5024d2f71 languageName: node linkType: hard -"@lerna/legacy-package-management@npm:6.6.1": - version: 6.6.1 - resolution: "@lerna/legacy-package-management@npm:6.6.1" +"@lerna/legacy-package-management@npm:6.6.2": + version: 6.6.2 + resolution: "@lerna/legacy-package-management@npm:6.6.2" dependencies: "@npmcli/arborist": 6.2.3 "@npmcli/run-script": 4.1.7 @@ -3518,7 +3826,7 @@ __metadata: inquirer: 8.2.4 is-ci: 2.0.0 is-stream: 2.0.0 - libnpmpublish: 6.0.4 + libnpmpublish: 7.1.4 load-json-file: 6.2.0 make-dir: 3.1.0 minimatch: 3.0.5 @@ -3532,7 +3840,7 @@ __metadata: p-map-series: 2.1.0 p-queue: 6.6.2 p-waterfall: 2.1.1 - pacote: 13.6.2 + pacote: 15.1.1 pify: 5.0.0 pretty-format: 29.4.3 read-cmd-shim: 3.0.0 @@ -3551,34 +3859,30 @@ __metadata: write-file-atomic: 4.0.1 write-pkg: 4.0.0 yargs: 16.2.0 - checksum: ce380181cda6e3787e5ac267b15a01a4c2e211655267d0389a6ea3127c473211cfc24503ae3f761314a13e649b6c738ef6655105cfe89c01b3785af633f76734 + checksum: 21087b65a0999852212d3cf8b9e94b4cf158324211a47d3655fadee84a59b6ec8b62dc133266a2204324cfbd0871d9cec65cfc8da802a6ee4b2f8effc5ed6614 languageName: node linkType: hard -"@linear/sdk@npm:^1.21.0": - version: 1.22.0 - resolution: "@linear/sdk@npm:1.22.0" - dependencies: - "@graphql-typed-document-node/core": ^3.1.0 - graphql: ^15.4.0 - isomorphic-unfetch: ^3.1.0 - checksum: 7e8f24f617631d027fd606334a498b04014d4c33603bcb3e08073d14f86260d116597983567f8bc147a935e4557180158175b52b9a9a8a270a234b946894a82b +"@lit-labs/react@npm:^1.0.2": + version: 1.2.1 + resolution: "@lit-labs/react@npm:1.2.1" + checksum: c92364101348400a06c3eb45a6384ca7d47c32765fdcad892827b360d0bad6cef7916f9a17744f2f471a5da3d7d73750767b885fc1521cd5e5e724badb71f014 languageName: node linkType: hard "@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": - version: 1.1.0 - resolution: "@lit-labs/ssr-dom-shim@npm:1.1.0" - checksum: 8187448c730e280dbe1766dae47a9b2fba4e075294e381cff915f7c7370b10f780487cd3ab100d4d25d4d897adbd7a329f49b26493cf8ad43d1872052b576c59 + version: 1.1.1 + resolution: "@lit-labs/ssr-dom-shim@npm:1.1.1" + checksum: bc530a6d390a71e44a74f0d79ab78df0c3cf814f5a69e64c60271d626f4b871d0269c82f2b1bcaf9ef1a84f361f50a1fc70c790873cded769e8f0e4f1fa01ff8 languageName: node linkType: hard -"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.4.0": - version: 1.6.1 - resolution: "@lit/reactive-element@npm:1.6.1" +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.4.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.2 + resolution: "@lit/reactive-element@npm:1.6.2" dependencies: "@lit-labs/ssr-dom-shim": ^1.0.0 - checksum: 054b4c9f39e273381509405fa9aa81be3cd7a702663de7d052d3c7ceebfbecf40dce0d4634c31832a01d112647531186963ac4c32d3ff82af74b372608831670 + checksum: 2845fa086553c131f41cf58ad3bc0ed4c9b24b3d92d8151936086d385cc5295a79da4113ae06a9a39b5f3184f43b2b85d801520c4114c13ca8e730289276a6a6 languageName: node linkType: hard @@ -3595,122 +3899,94 @@ __metadata: linkType: hard "@ndelangen/get-tarball@npm:^3.0.7": - version: 3.0.7 - resolution: "@ndelangen/get-tarball@npm:3.0.7" + version: 3.0.9 + resolution: "@ndelangen/get-tarball@npm:3.0.9" dependencies: gunzip-maybe: ^1.4.2 pump: ^3.0.0 tar-fs: ^2.1.1 - checksum: b60324b165656fa4c6adfce2f521ba44c12773a293e83ec7469c2fe0e71f4b352756db73867b6ce197610b6ad0dcbc2bb1add2b24165351b60337f0bf492f998 - languageName: node - linkType: hard - -"@next/env@npm:13.2.4": - version: 13.2.4 - resolution: "@next/env@npm:13.2.4" - checksum: 6dc862a80b6b5fbef21e184abe3706c7b2a7c2bb07b44433200190e75afb30905ce99c6e1e4015200339f8f1bd6563b72632284e2eeeac61fa8226f54f80e3c6 + checksum: d66e76c6c990745d691c85d1dfa7f3dfd181405bb52c295baf4d1838b847d40c686e24602ea0ab1cdeb14d409db59f6bb9e2f96f56fe53da275da9cccf778e27 languageName: node linkType: hard -"@next/swc-android-arm-eabi@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-android-arm-eabi@npm:13.2.4" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@next/swc-android-arm64@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-android-arm64@npm:13.2.4" - conditions: os=android & cpu=arm64 +"@next/env@npm:13.4.12": + version: 13.4.12 + resolution: "@next/env@npm:13.4.12" + checksum: 751368260c72514ca2b64af8f938c1da4ca80bc888fa20333a585934edb3cbf9fcdaef84a4d4482bb2d893bbcb48cbc30ae92ffecc0b60cee5c38a2cc06ab971 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-darwin-arm64@npm:13.2.4" +"@next/swc-darwin-arm64@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-darwin-arm64@npm:13.4.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-darwin-x64@npm:13.2.4" +"@next/swc-darwin-x64@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-darwin-x64@npm:13.4.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-freebsd-x64@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-freebsd-x64@npm:13.2.4" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@next/swc-linux-arm-gnueabihf@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-linux-arm-gnueabihf@npm:13.2.4" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@next/swc-linux-arm64-gnu@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-linux-arm64-gnu@npm:13.2.4" +"@next/swc-linux-arm64-gnu@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-linux-arm64-gnu@npm:13.4.12" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-linux-arm64-musl@npm:13.2.4" +"@next/swc-linux-arm64-musl@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-linux-arm64-musl@npm:13.4.12" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-linux-x64-gnu@npm:13.2.4" +"@next/swc-linux-x64-gnu@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-linux-x64-gnu@npm:13.4.12" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-linux-x64-musl@npm:13.2.4" +"@next/swc-linux-x64-musl@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-linux-x64-musl@npm:13.4.12" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-win32-arm64-msvc@npm:13.2.4" +"@next/swc-win32-arm64-msvc@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-win32-arm64-msvc@npm:13.4.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-win32-ia32-msvc@npm:13.2.4" +"@next/swc-win32-ia32-msvc@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-win32-ia32-msvc@npm:13.4.12" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.2.4": - version: 13.2.4 - resolution: "@next/swc-win32-x64-msvc@npm:13.2.4" +"@next/swc-win32-x64-msvc@npm:13.4.12": + version: 13.4.12 + resolution: "@next/swc-win32-x64-msvc@npm:13.4.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@ngtools/webpack@npm:16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@ngtools/webpack@npm:16.0.0-rc.4" +"@ngtools/webpack@npm:16.1.5": + version: 16.1.5 + resolution: "@ngtools/webpack@npm:16.1.5" peerDependencies: - "@angular/compiler-cli": ^16.0.0-next.0 - typescript: ">=4.9.3 <5.1" + "@angular/compiler-cli": ^16.0.0 + typescript: ">=4.9.3 <5.2" webpack: ^5.54.0 - checksum: 6fa852a38ed80ec22be9590ec9d1146d6102420efb0de7c281eb496973e5a3c377a305a8a522a0bd663a37fc88d2dd5a053f82ff840d2d1da27a613fec57bca6 + checksum: d728aeaee73597b72e2b42532e860215a2e30cc4b55c7fdb5dad251d9a6fdc11f7dd44702a1b0b43912d88d96008a5cdb6403edcb130735bbbeeadab2e0939c3 languageName: node linkType: hard @@ -3784,16 +4060,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: 4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 - languageName: node - linkType: hard - "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" @@ -3813,26 +4079,9 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^3.0.0": - version: 3.0.2 - resolution: "@npmcli/git@npm:3.0.2" - dependencies: - "@npmcli/promise-spawn": ^3.0.0 - lru-cache: ^7.4.4 - mkdirp: ^1.0.4 - npm-pick-manifest: ^7.0.0 - proc-log: ^2.0.0 - promise-inflight: ^1.0.1 - promise-retry: ^2.0.1 - semver: ^7.3.5 - which: ^2.0.2 - checksum: 26c18d98d0bf060b82692f41919847d55c00224861abbd972f47b4ecbf2494ec3afddafb8dbf98442d972e8217e3a909f95d27d040feadc061f3e8f7ccc2e2bd - languageName: node - linkType: hard - -"@npmcli/git@npm:^4.0.0": - version: 4.0.4 - resolution: "@npmcli/git@npm:4.0.4" +"@npmcli/git@npm:^4.0.0, @npmcli/git@npm:^4.1.0": + version: 4.1.0 + resolution: "@npmcli/git@npm:4.1.0" dependencies: "@npmcli/promise-spawn": ^6.0.0 lru-cache: ^7.4.4 @@ -3842,19 +4091,7 @@ __metadata: promise-retry: ^2.0.1 semver: ^7.3.5 which: ^3.0.0 - checksum: 42a2a600c380adf141b6fe01a41ebbaab4c0f5541af58a79e66d7c62acca08ec1f5a9f0a636e3c63dad47000c4a80496b912f18a3af58f1a40624f283ef3fd00 - languageName: node - linkType: hard - -"@npmcli/installed-package-contents@npm:^1.0.7": - version: 1.0.7 - resolution: "@npmcli/installed-package-contents@npm:1.0.7" - dependencies: - npm-bundled: ^1.1.1 - npm-normalize-package-bin: ^1.0.1 - bin: - installed-package-contents: index.js - checksum: 69c23b489ebfc90a28f6ee5293256bf6dae656292c8e13d52cd770fee2db2c9ecbeb7586387cd9006bc1968439edd5c75aeeb7d39ba0c8eb58905c3073bee067 + checksum: 78591ba8f03de3954a5b5b83533455696635a8f8140c74038685fec4ee28674783a5b34a3d43840b2c5f9aa37fd0dce57eaf4ef136b52a8ec2ee183af2e40724 languageName: node linkType: hard @@ -3871,36 +4108,26 @@ __metadata: linkType: hard "@npmcli/map-workspaces@npm:^3.0.2": - version: 3.0.3 - resolution: "@npmcli/map-workspaces@npm:3.0.3" + version: 3.0.4 + resolution: "@npmcli/map-workspaces@npm:3.0.4" dependencies: "@npmcli/name-from-folder": ^2.0.0 - glob: ^9.3.1 - minimatch: ^7.4.2 + glob: ^10.2.2 + minimatch: ^9.0.0 read-package-json-fast: ^3.0.0 - checksum: 9675f0bd79155fe15185533527f4e35deb0651fb6d4569be70300825fe431a23250acd607607289a64e788215d36221a9bd1cccc9ccb53316754a941fe28b250 + checksum: caeb5f911d9b7ae0be01436442e6ec6b25aef750fe923de7a653eb62999d35b9f8be67c3f856790350ac86d9cea4a52532859b621eea81738f576302ecdd7475 languageName: node linkType: hard "@npmcli/metavuln-calculator@npm:^5.0.0": - version: 5.0.0 - resolution: "@npmcli/metavuln-calculator@npm:5.0.0" + version: 5.0.1 + resolution: "@npmcli/metavuln-calculator@npm:5.0.1" dependencies: cacache: ^17.0.0 json-parse-even-better-errors: ^3.0.0 pacote: ^15.0.0 semver: ^7.3.5 - checksum: 6e8a1c12e95bc33ba7ca320d862b3126fabc06282ca13af9813dab9585bafd5ea8fa42d70b26b0ef08ea9c8fdb59504b6e7359b509ab8f67fdc8b0d31b95f2c2 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 + checksum: 0632e433de619da2c02215eabd1fa1e020eddccfe382ef5c8bd605f5fc8f636a4e7fe95ed59577325f7284cf4ee626980cbbaa27d8e7a7575cab409841a30578 languageName: node linkType: hard @@ -3936,11 +4163,16 @@ __metadata: linkType: hard "@npmcli/package-json@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/package-json@npm:3.0.0" + version: 3.1.1 + resolution: "@npmcli/package-json@npm:3.1.1" dependencies: + "@npmcli/git": ^4.1.0 + glob: ^10.2.2 json-parse-even-better-errors: ^3.0.0 - checksum: 311bc5f39e528b719c41135fb8f20c106a033689e9a2532785125f6e6a73fbe5af24dce84b703e3af1d4d9c937a9baed69a4deb1c3d64847e14c91b8331ce684 + normalize-package-data: ^5.0.0 + npm-normalize-package-bin: ^3.0.1 + proc-log: ^3.0.0 + checksum: fc3052a36cb65c011da75dfdb051b631557e5ccc7b25b64be87cb363e8f2e99d78fcf94495f456406ada2c75afaff8177a2a06a46594f15eb0b4e667110a415e languageName: node linkType: hard @@ -3984,44 +4216,40 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:^4.1.0": - version: 4.2.1 - resolution: "@npmcli/run-script@npm:4.2.1" - dependencies: - "@npmcli/node-gyp": ^2.0.0 - "@npmcli/promise-spawn": ^3.0.0 - node-gyp: ^9.0.0 - read-package-json-fast: ^2.0.3 - which: ^2.0.2 - checksum: b658b239a0132d3b7262ab94e16ca1bf4abe2987557015086c94768bd0cfdf7cded9a6c04f2efb58d63ae4f3bbb794caffaedc00b3d64ad7136bcf8c181b9b10 - languageName: node - linkType: hard - "@npmcli/run-script@npm:^6.0.0": - version: 6.0.0 - resolution: "@npmcli/run-script@npm:6.0.0" + version: 6.0.2 + resolution: "@npmcli/run-script@npm:6.0.2" dependencies: "@npmcli/node-gyp": ^3.0.0 "@npmcli/promise-spawn": ^6.0.0 node-gyp: ^9.0.0 read-package-json-fast: ^3.0.0 which: ^3.0.0 - checksum: c2d4924239c0837548c9eb78b694dde52b23ab59da21b943b42f49ecdd774dbceeb16893c41a33afba0e9096214cf55da3edc96ae64f0487672c336f4837c051 + checksum: 8c6ab2895eb6a2f24b1cd85dc934edae2d1c02af3acfc383655857f3893ed133d393876add800600d2e1702f8b62133d7cf8da00d81a1c885cc6029ef9e8e691 + languageName: node + linkType: hard + +"@nrwl/cli@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/cli@npm:15.9.4" + dependencies: + nx: 15.9.4 + checksum: 07dc3b67297b6175c377bc9fb1f7827e1c768a116ee4b18a03d31f76178330e99b905aa197a50e75b3b2cf02d4ac1607d2397e6b2d8a2f104b898f8691d1dc51 languageName: node linkType: hard -"@nrwl/cli@npm:15.9.2, @nrwl/cli@npm:^15.4.5": - version: 15.9.2 - resolution: "@nrwl/cli@npm:15.9.2" +"@nrwl/devkit@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/devkit@npm:16.2.1" dependencies: - nx: 15.9.2 - checksum: 7d2bba130321d466dd24ee95d97b8b3d6a101144bdeecfc0e21ce4f68e701bc465b8e3c5584eee276a31b90f4718efe657b83cabd4edede5986f7e0c1bd134e7 + "@nx/devkit": 16.2.1 + checksum: a1b7e6ba2f35f37f4ce88619e566d0ff0e62d1a1b5546a4ecf599b3f475b36c151b1382f858100893939f6ad642b1d61871697291dc96009086164858fd72ebe languageName: node linkType: hard -"@nrwl/devkit@npm:15.9.2, @nrwl/devkit@npm:>=15.5.2 < 16": - version: 15.9.2 - resolution: "@nrwl/devkit@npm:15.9.2" +"@nrwl/devkit@npm:>=15.5.2 < 16": + version: 15.9.4 + resolution: "@nrwl/devkit@npm:15.9.4" dependencies: ejs: ^3.1.7 ignore: ^5.0.4 @@ -4030,107 +4258,198 @@ __metadata: tslib: ^2.3.0 peerDependencies: nx: ">= 14.1 <= 16" - checksum: 94338da8f6239bfcf08b3dbd2fe7d2455c8045fd132d561db8ae459c698cd5b6b0ff03e0380e36648f335c894b5442808516a614464fbd00d867b8a8fdbbef66 + checksum: d51aee6c7e29c86904b7e85165182b222f9d93a80551ffb56dd06890d8f63f8ce4713e45b97e9e172dfa7f2ef82d9735ae4472d4f45823c95e2770f763694129 languageName: node linkType: hard -"@nrwl/nx-cloud@npm:^15.0.2": - version: 15.3.5 - resolution: "@nrwl/nx-cloud@npm:15.3.5" +"@nrwl/nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "@nrwl/nx-cloud@npm:16.0.5" dependencies: - axios: ^0.21.2 - chalk: 4.1.0 - dotenv: ~10.0.0 - fs-extra: ^10.1.0 - node-machine-id: ^1.1.12 - strip-json-comments: ^3.1.1 - tar: 6.1.11 - yargs-parser: ">=21.0.1" - bin: - nx-cloud: bin/nx-cloud.js - checksum: e222805a25c3ef5100e9963f5b4a392961b61a9a540f7dc2fa0404614a26ae734c87ae9342aacdc1da26c38ae0f34a04110e7955190ab51258bb8ddb488ad0a5 + nx-cloud: 16.0.5 + checksum: 3d3d5900026a2984ddd6d7d5962a5c8ed1bc84fb7ea52268604d5b05cf77cca8757edf42ddacf774ca778937c133f94ab330e968296a4b0f14a962b9f9fc9f4e languageName: node linkType: hard -"@nrwl/nx-darwin-arm64@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-darwin-arm64@npm:15.9.2" +"@nrwl/nx-darwin-arm64@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-darwin-arm64@npm:15.9.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-darwin-x64@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-darwin-x64@npm:15.9.2" +"@nrwl/nx-darwin-x64@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-darwin-x64@npm:15.9.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.2" +"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.4" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nrwl/nx-linux-arm64-gnu@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.2" +"@nrwl/nx-linux-arm64-gnu@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-arm64-musl@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.2" +"@nrwl/nx-linux-arm64-musl@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-linux-x64-gnu@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.2" +"@nrwl/nx-linux-x64-gnu@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-x64-musl@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.2" +"@nrwl/nx-linux-x64-musl@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-win32-arm64-msvc@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.2" +"@nrwl/nx-win32-arm64-msvc@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-win32-x64-msvc@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.2" +"@nrwl/nx-win32-x64-msvc@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@nrwl/tao@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/tao@npm:15.9.2" +"@nrwl/tao@npm:15.9.4": + version: 15.9.4 + resolution: "@nrwl/tao@npm:15.9.4" + dependencies: + nx: 15.9.4 + bin: + tao: index.js + checksum: e184d41ce7cdf69ed75b8a9d8bcd7d964b83fd4134e35ab2e5fdcb2a50091f113f5ae2984da728f2b6090f30219618dde7479488502f63943de49f1fc4d853b1 + languageName: node + linkType: hard + +"@nrwl/tao@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/tao@npm:16.2.1" dependencies: - nx: 15.9.2 + nx: 16.2.1 bin: tao: index.js - checksum: 99f191e8c80451dc82bbc96d4f3513a34f432a6b5e093992d3887d675828aabb6a47148a8a6fba580e7393ea885561b4210b224ef10a1b956eff79a45d133145 + checksum: a11a1da116a776df20c9eb784310f9d3e48b4edcd1e46482c73b64d7653a92f65833eaf3626fb500518f3bae66610aa15b1ee3bcb16def3170dcb98594cc4c3f + languageName: node + linkType: hard + +"@nrwl/workspace@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/workspace@npm:16.2.1" + dependencies: + "@nx/workspace": 16.2.1 + checksum: 981ac940f53f41856a2f113d48dd2d822174b7435e555ad3ee676aded5928c5c500ada28305239a27eb6ba8bcb0a0717bc0ffedaee1e74424c0a460f0e27dee2 + languageName: node + linkType: hard + +"@nx/devkit@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/devkit@npm:16.2.1" + dependencies: + "@nrwl/devkit": 16.2.1 + ejs: ^3.1.7 + ignore: ^5.0.4 + semver: 7.3.4 + tmp: ~0.2.1 + tslib: ^2.3.0 + peerDependencies: + nx: ">= 15 <= 17" + checksum: e0f01c35296f8e972832ac532f3ab3967905847abbe7886c53a7bae14465da07486900a0b0b27837aacf86f08362fb3647aed17158019a9ca1e1f723eec9738b + languageName: node + linkType: hard + +"@nx/nx-darwin-arm64@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-darwin-arm64@npm:16.2.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-darwin-x64@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-darwin-x64@npm:16.2.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-linux-arm-gnueabihf@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:16.2.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-gnu@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm64-gnu@npm:16.2.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-musl@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm64-musl@npm:16.2.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-linux-x64-gnu@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-x64-gnu@npm:16.2.1" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nrwl/workspace@npm:^15.4.5": - version: 15.9.2 - resolution: "@nrwl/workspace@npm:15.9.2" +"@nx/nx-linux-x64-musl@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-x64-musl@npm:16.2.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-win32-arm64-msvc@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-win32-arm64-msvc@npm:16.2.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-win32-x64-msvc@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-win32-x64-msvc@npm:16.2.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nx/workspace@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/workspace@npm:16.2.1" dependencies: - "@nrwl/devkit": 15.9.2 + "@nrwl/workspace": 16.2.1 + "@nx/devkit": 16.2.1 "@parcel/watcher": 2.0.4 chalk: ^4.1.0 chokidar: ^3.5.1 @@ -4139,18 +4458,17 @@ __metadata: dotenv: ~10.0.0 figures: 3.2.0 flat: ^5.0.2 - glob: 7.1.4 ignore: ^5.0.4 minimatch: 3.0.5 npm-run-path: ^4.0.1 - nx: 15.9.2 + nx: 16.2.1 open: ^8.4.0 - rxjs: ^6.5.4 + rxjs: ^7.8.0 tmp: ~0.2.1 tslib: ^2.3.0 yargs: ^17.6.2 yargs-parser: 21.1.1 - checksum: 76dd33399a221d9505fd3bfdcced0f6b4999567b8f0c46e96eb891f4bfd3aff721cbe199b32d5b82667e9bf4a52863bbba57f52c6ebb095b92a64cb47760fb6f + checksum: bf69f3d58d4327fa7b7a6c9cdbbaefdf25fa114c1cecf3d13e6c03fe25d68255cbd5921766798a0ce15d5751b9b12b864a475fd6fc40a386e21668c0d1eb2279 languageName: node linkType: hard @@ -4164,11 +4482,9 @@ __metadata: linkType: hard "@octokit/auth-token@npm:^3.0.0": - version: 3.0.3 - resolution: "@octokit/auth-token@npm:3.0.3" - dependencies: - "@octokit/types": ^9.0.0 - checksum: ff33a5bbfcef8f9303d5fb7fd4757828490efe893ebe894f4ae5faa7bd37cc8d732408ce5f565bb6ad476f0d601ac3205b2256077530caebc7bac80dab8e4770 + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 languageName: node linkType: hard @@ -4202,8 +4518,8 @@ __metadata: linkType: hard "@octokit/core@npm:^4.0.0": - version: 4.2.0 - resolution: "@octokit/core@npm:4.2.0" + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" dependencies: "@octokit/auth-token": ^3.0.0 "@octokit/graphql": ^5.0.0 @@ -4212,7 +4528,7 @@ __metadata: "@octokit/types": ^9.0.0 before-after-hook: ^2.2.0 universal-user-agent: ^6.0.0 - checksum: 574abe80eb02dd0ff8253aba6f7b7b8cc1ac9c240d6e761ab4375579fdd36099acd515a7108853b0e0b9480691202035f308a8154d29d18a336a0847e95b273b + checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 languageName: node linkType: hard @@ -4228,13 +4544,13 @@ __metadata: linkType: hard "@octokit/endpoint@npm:^7.0.0": - version: 7.0.5 - resolution: "@octokit/endpoint@npm:7.0.5" + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" dependencies: "@octokit/types": ^9.0.0 is-plain-object: ^5.0.0 universal-user-agent: ^6.0.0 - checksum: 68de3e40b4d2b4d3decfc3e23480d5a781275ebf86d084a38ba70c5d46a6cad051b63332da1768a64d58b0b810c5b57401a3892dff4dd0060d8b6b31d78fc2f5 + checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 languageName: node linkType: hard @@ -4250,13 +4566,13 @@ __metadata: linkType: hard "@octokit/graphql@npm:^5.0.0": - version: 5.0.5 - resolution: "@octokit/graphql@npm:5.0.5" + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" dependencies: "@octokit/request": ^6.0.0 "@octokit/types": ^9.0.0 universal-user-agent: ^6.0.0 - checksum: 78c26c2951f95fb3db05729938631af00dad0cd8bc9ff67d213b30e49dc26b485b7d94f81ef4d017ae8ebbebf6bcbaf375fbd8ec88483113ed152c930e1bec68 + checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 languageName: node linkType: hard @@ -4274,10 +4590,10 @@ __metadata: languageName: node linkType: hard -"@octokit/openapi-types@npm:^16.0.0": - version: 16.0.0 - resolution: "@octokit/openapi-types@npm:16.0.0" - checksum: 8d45fc0249e8ba0c0c1ef4de5ac2dddbb8f8b42b66383d58ab026b59282f908466d344a98ef0ff198b1d42ef1fae7e6f8b69ab88c11c955d3ac54426bf6c17d2 +"@octokit/openapi-types@npm:^18.0.0": + version: 18.0.0 + resolution: "@octokit/openapi-types@npm:18.0.0" + checksum: d90fab10d962be71e72b85ffab2055cffd9c3196ff1edc3e4106deb78e99e8782965cf7aa6a4c1398f828e4d0c3e0f905915debfe34396d956dfce8e75b21664 languageName: node linkType: hard @@ -4288,15 +4604,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^1.1.1": - version: 1.1.2 - resolution: "@octokit/plugin-paginate-rest@npm:1.1.2" - dependencies: - "@octokit/types": ^2.0.1 - checksum: c0b42a7eb92c6b3fb254e85750fe48b667682be277dc9ccafbb91da241fc18396867739b058ae89d48455b3e75eb2967ac5e196fe54a276b58ed56173f5cd188 - languageName: node - linkType: hard - "@octokit/plugin-paginate-rest@npm:^2.16.8, @octokit/plugin-paginate-rest@npm:^2.2.0": version: 2.21.3 resolution: "@octokit/plugin-paginate-rest@npm:2.21.3" @@ -4328,16 +4635,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:2.4.0": - version: 2.4.0 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:2.4.0" - dependencies: - "@octokit/types": ^2.0.1 - deprecation: ^2.3.1 - checksum: eedb9e6c3589651a391aa2c850d33fbfb01c94448d5da85b6208ff1fc05d556b05e660db019306c473149727ed83c5711f138179a39651d2cd548a8da2c4bc73 - languageName: node - linkType: hard - "@octokit/plugin-rest-endpoint-methods@npm:3.17.0": version: 3.17.0 resolution: "@octokit/plugin-rest-endpoint-methods@npm:3.17.0" @@ -4372,17 +4669,6 @@ __metadata: languageName: node linkType: hard -"@octokit/request-error@npm:^1.0.2": - version: 1.2.1 - resolution: "@octokit/request-error@npm:1.2.1" - dependencies: - "@octokit/types": ^2.0.0 - deprecation: ^2.0.0 - once: ^1.4.0 - checksum: 0142170094b5c963de7012aa7d081c3aa05ce19ccd365447c9ca57d475bdf64a79549cb2d5e14348deabdb3c6577966e5f6996eeaa5ea3750b87688cc1c0a0f1 - languageName: node - linkType: hard - "@octokit/request-error@npm:^2.0.5, @octokit/request-error@npm:^2.1.0": version: 2.1.0 resolution: "@octokit/request-error@npm:2.1.0" @@ -4405,7 +4691,7 @@ __metadata: languageName: node linkType: hard -"@octokit/request@npm:^5.2.0, @octokit/request@npm:^5.4.0, @octokit/request@npm:^5.6.0, @octokit/request@npm:^5.6.3": +"@octokit/request@npm:^5.4.0, @octokit/request@npm:^5.6.0, @octokit/request@npm:^5.6.3": version: 5.6.3 resolution: "@octokit/request@npm:5.6.3" dependencies: @@ -4420,8 +4706,8 @@ __metadata: linkType: hard "@octokit/request@npm:^6.0.0": - version: 6.2.3 - resolution: "@octokit/request@npm:6.2.3" + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" dependencies: "@octokit/endpoint": ^7.0.0 "@octokit/request-error": ^3.0.0 @@ -4429,7 +4715,7 @@ __metadata: is-plain-object: ^5.0.0 node-fetch: ^2.6.7 universal-user-agent: ^6.0.0 - checksum: 8069f7e427ec77d0e8dd5950c4f918084e41d4cd51af02b9c08d651a448e93cf00306180abc28e820c30a426874f10ad4bd12ac16d2afe47e40a64fd68b346ea + checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b languageName: node linkType: hard @@ -4445,7 +4731,7 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^16.43.0 || ^17.11.0 || ^18.12.0": +"@octokit/rest@npm:^16.43.0 || ^17.11.0 || ^18.12.0, @octokit/rest@npm:^18.12.0": version: 18.12.0 resolution: "@octokit/rest@npm:18.12.0" dependencies: @@ -4457,30 +4743,6 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^16.43.1": - version: 16.43.2 - resolution: "@octokit/rest@npm:16.43.2" - dependencies: - "@octokit/auth-token": ^2.4.0 - "@octokit/plugin-paginate-rest": ^1.1.1 - "@octokit/plugin-request-log": ^1.0.0 - "@octokit/plugin-rest-endpoint-methods": 2.4.0 - "@octokit/request": ^5.2.0 - "@octokit/request-error": ^1.0.2 - atob-lite: ^2.0.0 - before-after-hook: ^2.0.0 - btoa-lite: ^1.0.0 - deprecation: ^2.0.0 - lodash.get: ^4.4.2 - lodash.set: ^4.3.2 - lodash.uniq: ^4.5.0 - octokit-pagination-methods: ^1.1.0 - once: ^1.4.0 - universal-user-agent: ^4.0.0 - checksum: 8e51e16a54dcffb007aeefa48d6dda98f84737c044e15c9e8b123765efcf546b5f3465b37e11666f502d637fac3d4c2ef770ed9e7ba7e21330d1b6d773eccde7 - languageName: node - linkType: hard - "@octokit/rest@npm:^17.1.1": version: 17.11.2 resolution: "@octokit/rest@npm:17.11.2" @@ -4493,15 +4755,6 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^2.0.0, @octokit/types@npm:^2.0.1": - version: 2.16.2 - resolution: "@octokit/types@npm:2.16.2" - dependencies: - "@types/node": ">= 8" - checksum: 8f324639ea2792f38dee104970f7d74584da6747ca41a5f709e0dcd54bc55095af3c47845a284f132ced4dec5a6d5a9c61ed77c3adaccfb5ad7f347fcb1a55b3 - languageName: node - linkType: hard - "@octokit/types@npm:^4.1.6": version: 4.1.10 resolution: "@octokit/types@npm:4.1.10" @@ -4539,11 +4792,11 @@ __metadata: linkType: hard "@octokit/types@npm:^9.0.0": - version: 9.0.0 - resolution: "@octokit/types@npm:9.0.0" + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" dependencies: - "@octokit/openapi-types": ^16.0.0 - checksum: 33e165e9ddaf7f1e8e94e3e48e2bb73f6193b1405887c382b5079450bebf67fe844784e3bb91c90acdb5718c3551936202de3ee98aaf7f7ec428a064032e158a + "@octokit/openapi-types": ^18.0.0 + checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 languageName: node linkType: hard @@ -4566,32 +4819,32 @@ __metadata: linkType: hard "@pkgr/utils@npm:^2.3.1": - version: 2.3.1 - resolution: "@pkgr/utils@npm:2.3.1" + version: 2.4.2 + resolution: "@pkgr/utils@npm:2.4.2" dependencies: cross-spawn: ^7.0.3 + fast-glob: ^3.3.0 is-glob: ^4.0.3 - open: ^8.4.0 + open: ^9.1.0 picocolors: ^1.0.0 - tiny-glob: ^0.2.9 - tslib: ^2.4.0 - checksum: 50c2480c3580c0f75b9325271deeb4f4cb24f6a29f1ebc5a7de0c6991380e23625fd554ecdbc7d7e93ad6dab92532a254f7490433cf2b8f1b18d75c9e01636ea + tslib: ^2.6.0 + checksum: 7c3e68f6405a1d4c51f418d8d580e71d7bade2683d5db07e8413d8e57f7e389047eda44a2341f77a1b3085895fca7676a9d45e8812a58312524f8c4c65d501be languageName: node linkType: hard -"@playwright/test@npm:1.32.3": - version: 1.32.3 - resolution: "@playwright/test@npm:1.32.3" +"@playwright/test@npm:1.36.0": + version: 1.36.0 + resolution: "@playwright/test@npm:1.36.0" dependencies: "@types/node": "*" fsevents: 2.3.2 - playwright-core: 1.32.3 + playwright-core: 1.36.0 dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: d09e4135c868b4067f45b8c297d02b0d8ddb8298657c942a06c72f3d9a3236af94586718dc7590693dbb31ea4b8fcceeb8a1e8811072f2add7d952c5c9129df3 + checksum: 9d06764f55ae10569981d518838d588d820678a4e6a8a1bbfab78b7b4b4245cf055e94a0dea90fe2ecf1ce4559d06e02986757270e7c54a52d0bdf1963cb03e6 languageName: node linkType: hard @@ -4635,9 +4888,9 @@ __metadata: linkType: hard "@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.6.0": - version: 2.11.7 - resolution: "@popperjs/core@npm:2.11.7" - checksum: e3238267a1c010f7e46adf0d1bf2a6530ccba603cce320ed8f8208217b919f0d9b12c45d4aa535d4945ee791a42b6ef3d016ba108e2d962d29cfb3f7bf18bd28 + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 languageName: node linkType: hard @@ -4660,46 +4913,614 @@ __metadata: languageName: node linkType: hard -"@prefresh/babel-plugin@npm:0.4.4": - version: 0.4.4 - resolution: "@prefresh/babel-plugin@npm:0.4.4" - checksum: a05b009e3ebc24cc0f68862282564890a5e15a0c88c4dbc207bc765e75c20977373744f11af98a0f5b15023616b27a2d1831d82b611c0df0028333e2e786219f +"@prefresh/babel-plugin@npm:0.5.0": + version: 0.5.0 + resolution: "@prefresh/babel-plugin@npm:0.5.0" + checksum: 71cbfb52f3f4e29c2cc6a3b7adee87ac7d9c074edfe2f87b3f90ab006123572fab6dd679aa125b8a94e4669578f172ef0b1732d0d6c2b2fc158d0c765a87b70f languageName: node linkType: hard -"@prefresh/core@npm:^1.3.3": - version: 1.4.1 - resolution: "@prefresh/core@npm:1.4.1" +"@prefresh/core@npm:^1.5.1": + version: 1.5.1 + resolution: "@prefresh/core@npm:1.5.1" peerDependencies: preact: ^10.0.0 - checksum: 08dfe7f8b41e09a5cac0250757d79f08865998892e205196cf6fa1b9e3ad4778cb7cb06d3e4513de1f4bdfaa5ded0a73f72e189ebc11e4f545a2d40288c3d709 + checksum: 7a1063a65911fbfcd5b02f34911875de5ffedb02ad4dda2bf9c519193ccb38f21b65ac3a2ba0bc4d8526c847b623013e0d2c1e7a58091aee33fc95ac40f4ad14 languageName: node linkType: hard -"@prefresh/utils@npm:^1.1.2": - version: 1.1.3 - resolution: "@prefresh/utils@npm:1.1.3" - checksum: 718dca5803e0d7a561dc1cf8f6e2e14987dd2436173e4c8c5268d87b093c8cef08de106e0f1513638bf48e2173fe6607f3eb558c8a459abcb697706ab7cea306 +"@prefresh/utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@prefresh/utils@npm:1.2.0" + checksum: 38cdc6cbb5e18df36996161214eb1097db3361cb0b6402a8012cbe500ba8fb5bcbdc39a687d3b6d67e99f6c340ed77d59f27ab167dfc1655eb4d783740d87d52 languageName: node linkType: hard "@prefresh/vite@npm:^2.2.8": - version: 2.2.9 - resolution: "@prefresh/vite@npm:2.2.9" + version: 2.4.1 + resolution: "@prefresh/vite@npm:2.4.1" dependencies: - "@babel/core": ^7.9.6 - "@prefresh/babel-plugin": 0.4.4 - "@prefresh/core": ^1.3.3 - "@prefresh/utils": ^1.1.2 - "@rollup/pluginutils": ^4.1.0 + "@babel/core": ^7.22.1 + "@prefresh/babel-plugin": 0.5.0 + "@prefresh/core": ^1.5.1 + "@prefresh/utils": ^1.2.0 + "@rollup/pluginutils": ^4.2.1 peerDependencies: preact: ^10.4.0 - vite: ">=2.0.0-beta.3" - checksum: 0c3b59a44d013a00935e027926ffd0bc47892350e98d3639a28e72b3cea4d045a5b2148854da6b32f1ba38230cb068811702d700e2a7da1b697a353c7b330682 + vite: ">=2.0.0" + checksum: 939b4667ed83acfff6a879c8bff78d028b85c74f9e1cde656cf344768b888f6ba6b9927ee5e5efeecfc877fc6e6088c4c252e3f476604aecedaaf83cdfef7c45 + languageName: node + linkType: hard + +"@radix-ui/number@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/number@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 42e4870cd14459da6da03e43c7507dc4c807ed787a87bda52912a0d1d6d5013326b697c18c9625fc6a2cf0af2b45d9c86747985b45358fd92ab646b983978e3c + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/primitive@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 912216455537db3ca77f3e7f70174fb2b454fbd4a37a0acb7cfadad9ab6131abdfb787472242574460a3c301edf45738340cc84f6717982710082840fde7d916 + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-arrow@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: c931f6d7e0bac50fd1654a0303a303aff74a68a13a33a851a43a7c88677b53a92ca6557920b9105144a3002f899ce888437d20ddd7803a5c716edac99587626d languageName: node linkType: hard -"@rollup/pluginutils@npm:^4.1.0, @rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.0": +"@radix-ui/react-collection@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-collection@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: cefa56383d7451ca79e4bd5a29aaeef6c205a04297213efd149aaead82fc8cde4fb8298e20e6b3613e5696e43f814fb4489805428f6604834fb31f73c6725fa8 + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-compose-refs@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: be06f8dab35b5a1bffa7a5982fb26218ddade1acb751288333e3b89d7b4a7dfb5a6371be83876dac0ec2ebe0866d295e8618b778608e1965342986ea448040ec + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-context@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3de5761b32cc70cd61715527f29d8c699c01ab28c195ced972ccbc7025763a373a68f18c9f948c7a7b922e469fd2df7fee5f7536e3f7bad44ffc06d959359333 + languageName: node + linkType: hard + +"@radix-ui/react-direction@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-direction@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b1a45b4d1d5070ca3b5864b920f6c6210c962bdb519abb62b38b1baef9d06737dc3d8ecdb61860b7504a735235a539652f5977c7299ec021da84e6b0f64d988a + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-dismissable-layer@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-escape-keydown": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: a7b9695092cd4109a7b4a4a66b7f634c42d4f39aa0893621a8ee5e8bc90f8ae27e741df66db726c341a60d2115e3f813520fee1f5cc4fb05d77914b4ade3819f + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-focus-guards@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-focus-scope@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: bfff46919666c122f5b812ee427494ae8408c0eebee30337bd2ce0eedf539f0feaa242f790304ef9df15425b837010ffc6061ce467bedd2c5fd9373bee2b95da + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad + languageName: node + linkType: hard + +"@radix-ui/react-popper@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-popper@npm:1.1.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@floating-ui/react-dom": ^2.0.0 + "@radix-ui/react-arrow": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-rect": 1.0.1 + "@radix-ui/react-use-size": 1.0.1 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 4bd069b79f7046af2c0967b8e43f727cd09834cbd6df1e3d5a943c4f83428ff8b646882737fdf7593c22e261a1d13768a5c020138d79503862ae2e1729081bba + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-portal@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: baf295bbbf09ead37b64ee1dc025a6a540960f5e60552766d78f6065504c67d4bcf49fad5e2073617d9a3011daafad625aa3bd1da7a886c704833b22a49e888f + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-primitive@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 67a66ff8898a5e7739eda228ab6f5ce808858da1dce967014138d87e72b6bbfc93dc1467c706d98d1a2b93bf0b6e09233d1a24d31c78227b078444c1a69c42be + languageName: node + linkType: hard + +"@radix-ui/react-roving-focus@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-roving-focus@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 61e3ddfd1647e64fba855434ff41e8e7ba707244fe8841f78c450fbdce525383b64259279475615d030dbf1625cbffd8eeebee72d91bf6978794f5dbcf887fc0 + languageName: node + linkType: hard + +"@radix-ui/react-select@npm:^1.2.2": + version: 1.2.2 + resolution: "@radix-ui/react-select@npm:1.2.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/number": 1.0.1 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-dismissable-layer": 1.0.4 + "@radix-ui/react-focus-guards": 1.0.1 + "@radix-ui/react-focus-scope": 1.0.3 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-popper": 1.1.2 + "@radix-ui/react-portal": 1.0.3 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-previous": 1.0.1 + "@radix-ui/react-visually-hidden": 1.0.3 + aria-hidden: ^1.1.1 + react-remove-scroll: 2.5.5 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 888fffa703a8f79b45c01d5f03ad9aae66250ddfff827bbba4f222c4d0720aa2f01a3e4b6bd80acabaf5e2fa7ad79de9e9dfd14831f7f4c24337d4d8dfb58ccc + languageName: node + linkType: hard + +"@radix-ui/react-separator@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-separator@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 87bcde47343f2bc4439a0dc34381f557905d9b3c1e8c5a0d32ceea62a8ef84f3abf671c5cb29309fc87759ad41d39af619ba546cf54109d64c8746e3ca683de3 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.0.2": + version: 1.0.2 + resolution: "@radix-ui/react-slot@npm:1.0.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3af6ea4891e6fa8091e666802adffe7718b3cd390a10fa9229a5f40f8efded9f3918ea01b046103d93923d41cc32119505ebb6bde76cad07a87b6cf4f2119347 + languageName: node + linkType: hard + +"@radix-ui/react-toggle-group@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toggle-group@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-toggle": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 4f4761965022759ac0950ac026029b64049e1f18ef07a01ddde788b7606efcb262c9ae3a418de0c0756bf7285182ed0d268502c6f17ba86d2ff27eee5507bbf7 + languageName: node + linkType: hard + +"@radix-ui/react-toggle@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-toggle@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 9b487dad213ea7e70b0aa205e7c6f790a6f2bf394c39912e22dbe003403fd0d24a41c2efd31695fc31ab7bac286f28253dbb2fc5202cacd572ebf909f1fdc86c + languageName: node + linkType: hard + +"@radix-ui/react-toolbar@npm:^1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toolbar@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-separator": 1.0.3 + "@radix-ui/react-toggle-group": 1.0.4 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 3ed7ebe22ef2e8369e08bb59776671a7b8c413628249c338b8db86b4b9ac40127b4201d5bd4a9c23ea1fd21464769b4fa427d3ebcda3a7fcdbd45b256b5a753a + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-callback-ref@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 331b432be1edc960ca148637ae6087220873ee828ceb13bd155926ef8f49e862812de5b379129f6aaefcd11be53715f3237e6caa9a33d9c0abfff43f3ba58938 + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 13cd0c38395c5838bc9a18238020d3bcf67fb340039e6d1cbf438be1b91d64cf6900b78121f3dc9219faeb40dcc7b523ce0f17e4a41631655690e5a30a40886a + languageName: node + linkType: hard + +"@radix-ui/react-use-previous@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-previous@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f5fbc602108668484a4ed506b7842482222d1d03094362e26abb7fdd593eee8794fc47d85b3524fb9d00884801c89a6eefd0bed0971eba1ec189c637b6afd398 + languageName: node + linkType: hard + +"@radix-ui/react-use-rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 94c5ab31dfd3678c0cb77a30025e82b3a287577c1a8674b0d703a36d27434bc9c59790e0bebf57ed153f0b8e0d8c3b9675fc9787b9eac525a09abcda8fa9e7eb + languageName: node + linkType: hard + +"@radix-ui/react-use-size@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-size@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b109a4b3781781c4dc641a1173f0a6fcb0b0f7b2d7cdba5848a46070c9fb4e518909a46c20a3c2efbc78737c64859c59ead837f2940e8c8394d1c503ef58773b + languageName: node + linkType: hard + +"@radix-ui/react-visually-hidden@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-visually-hidden@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 0cbc12c2156b3fa0e40090cafd8525ce84c16a6b5a038a8e8fc7cbb16ed6da9ab369593962c57a18c41a16ec8713e0195c68ea34072ef1ca254ed4d4c0770bb4 + languageName: node + linkType: hard + +"@radix-ui/rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 4c5159661340acc31b11e1f2ebd87a1521d39bfa287544dd2cd75b399539a4b625d38a1501c90ceae21fcca18ed164b0c3735817ff140ae334098192c110e571 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.1": version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" dependencies: @@ -4709,14 +5530,30 @@ __metadata: languageName: node linkType: hard -"@schematics/angular@npm:16.0.0-rc.4": - version: 16.0.0-rc.4 - resolution: "@schematics/angular@npm:16.0.0-rc.4" +"@rollup/pluginutils@npm:^5.0.2": + version: 5.0.2 + resolution: "@rollup/pluginutils@npm:5.0.2" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^2.0.2 + picomatch: ^2.3.1 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: b06f73c15bb59418aa6fbfead5675bab2d6922e15663525ffc2eb8429530bc5add516600adb251cfbf9b60f3d12fb821cde155cb5103415154a476bd0f163432 + languageName: node + linkType: hard + +"@schematics/angular@npm:16.1.5": + version: 16.1.5 + resolution: "@schematics/angular@npm:16.1.5" dependencies: - "@angular-devkit/core": 16.0.0-rc.4 - "@angular-devkit/schematics": 16.0.0-rc.4 + "@angular-devkit/core": 16.1.5 + "@angular-devkit/schematics": 16.1.5 jsonc-parser: 3.2.0 - checksum: 862aa8f26fb1b8ed03e951ef42475bbba3b316127342fa705bce4871919bdab16669c0cd5daeb13161e2bb3329fdbdeacc36e0bf789bf412acbcc988cdc3d0fd + checksum: 29d937ce277fdb60d4c218fbba09a6f8430ea1d9a76b8378b3c8bb1d0711d7cf7145802cb43e0f615374239f762aea8f79b173e71db19794f6140504a30396d6 languageName: node linkType: hard @@ -4743,24 +5580,36 @@ __metadata: languageName: node linkType: hard -"@sigstore/protobuf-specs@npm:^0.1.0": - version: 0.1.0 - resolution: "@sigstore/protobuf-specs@npm:0.1.0" - checksum: fa373952653d4ea32c593f754cf04c56a57287c7357e830c9ded10c47318fe8e9ec82900109e63f60380828145928ec67f4a6229fc73da45b9771a3139e82f8f +"@sigstore/bundle@npm:^1.0.0": + version: 1.0.0 + resolution: "@sigstore/bundle@npm:1.0.0" + dependencies: + "@sigstore/protobuf-specs": ^0.2.0 + checksum: 563ffbcb1bd3d1dc9bf609a5803e153d94405ddcacd145a3d65f5519c00b158ea8fdb2476f0fdf70b40f4c4eb0643b86deb6ff7a621b33b88b0fa9f7c4f94865 + languageName: node + linkType: hard + +"@sigstore/protobuf-specs@npm:^0.2.0": + version: 0.2.0 + resolution: "@sigstore/protobuf-specs@npm:0.2.0" + checksum: 77c7b16c384f249213ced779c9605aa382b85d97c4f87fb1d6e82c7cacc9493aa6ca412b0b6960a6496a47ad95188561787da263c27733a676bc80a3d79c261c languageName: node linkType: hard -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.51 - resolution: "@sinclair/typebox@npm:0.24.51" - checksum: 458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 +"@sigstore/tuf@npm:^1.0.3": + version: 1.0.3 + resolution: "@sigstore/tuf@npm:1.0.3" + dependencies: + "@sigstore/protobuf-specs": ^0.2.0 + tuf-js: ^1.1.7 + checksum: 28abf11f05e12dab0e5d53f09743921e7129519753b3ab79e6cfc2400c80a06bc4f233c430dcd4236f8ca6db1aaf20fdd93999592cef0ea4c08f9731c63d09d4 languageName: node linkType: hard -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 2faf9878f3a65a1f2855add80b0fe8c6fe83f084ea1ab432fa7506e7c85c55ae121c4af516d089b5737f5fad23b3628fcc83a6a5df29030c3f611185ce0388ac +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard @@ -4780,48 +5629,28 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.6 - resolution: "@sinonjs/commons@npm:1.8.6" - dependencies: - type-detect: 4.0.8 - checksum: 93b4d4e27e93652b83467869c2fe09cbd8f37cd5582327f0e081fbf9b93899e2d267db7b668c96810c63dc229867614ced825e5512b47db96ca6f87cb3ec0f61 +"@sindresorhus/is@npm:^4.0.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e languageName: node linkType: hard -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" dependencies: type-detect: 4.0.8 - checksum: babe3fdfc7dfb810f6918f2ae055032a1c7c18910595f1c6bfda87bb1737c1a57268d4ca78c3d8ad2fa4aae99ff79796fad76be735a5a38ab763c0b3cfad1ae7 + checksum: 1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" - dependencies: - "@sinonjs/commons": ^2.0.0 - checksum: 24555ed94053319fa18d4efa0923b295a445a00d2515d260b9e4e2b5943bd8b5b55fee85baabb2819a13ca1f57dbc1949265a350f592eef9e2535ec9de711ebc - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^6.0.1": - version: 6.0.1 - resolution: "@sinonjs/fake-timers@npm:6.0.1" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: a77bead4d71b40d6f7f9a3ad66a00269aa2c078260f43f594b8aed4676c6c4e7c2b642d4b8e34df314e1c971589455f7b4267ab831bf44ffdccc0bda599850ad - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^9.1.2": - version: 9.1.2 - resolution: "@sinonjs/fake-timers@npm:9.1.2" + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: d9187f9130f03272562ff9845867299c6f7cf15157bbb3e6aca4a1f06d885b0eef54259d0ad41e2f8043dc530b4db730b6c9415b169033e7ba8fed0ad449ceec + "@sinonjs/commons": ^3.0.0 + checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 languageName: node linkType: hard @@ -4829,16 +5658,16 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-a11y@workspace:addons/a11y" dependencies: - "@storybook/addon-highlight": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/addon-highlight": "workspace:*" + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@testing-library/react": ^11.2.2 axe-core: ^4.2.0 lodash: ^4.17.21 @@ -4856,18 +5685,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-actions@7.1.0-alpha.17, @storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": +"@storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": version: 0.0.0-use.local resolution: "@storybook/addon-actions@workspace:addons/actions" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@types/lodash": ^4.14.167 "@types/uuid": ^9.0.1 dequal: ^2.0.2 @@ -4875,7 +5704,7 @@ __metadata: polished: ^4.2.2 prop-types: ^15.7.2 react-inspector: ^6.0.0 - telejson: ^7.0.3 + telejson: ^7.2.0 ts-dedent: ^2.0.0 typescript: ~4.9.3 uuid: ^9.0.0 @@ -4890,18 +5719,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-backgrounds@7.1.0-alpha.17, @storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": +"@storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": version: 0.0.0-use.local resolution: "@storybook/addon-backgrounds@workspace:addons/backgrounds" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" memoizerific: ^1.11.3 ts-dedent: ^2.0.0 typescript: ~4.9.3 @@ -4916,19 +5745,20 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-controls@7.1.0-alpha.17, @storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": +"@storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": version: 0.0.0-use.local resolution: "@storybook/addon-controls@workspace:addons/controls" dependencies: - "@storybook/blocks": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/blocks": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" lodash: ^4.17.21 ts-dedent: ^2.0.0 peerDependencies: @@ -4942,25 +5772,48 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-docs@7.1.0-alpha.17, @storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": +"@storybook/addon-designs@npm:^7.0.4": + version: 7.0.4 + resolution: "@storybook/addon-designs@npm:7.0.4" + dependencies: + "@figspec/react": ^1.0.0 + peerDependencies: + "@storybook/addon-docs": ^7.0.0 + "@storybook/addons": ^7.0.0 + "@storybook/components": ^7.0.0 + "@storybook/manager-api": ^7.0.0 + "@storybook/preview-api": ^7.0.0 + "@storybook/theming": ^7.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: cebbef90913c91e11a67ea48d9c714b47d242d22f28a04ccab6a7beecd332de3d376082b224ad2c54a3c4dc7e45d3a11692f8c14a9b17c4b085a75682292591e + languageName: node + linkType: hard + +"@storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": version: 0.0.0-use.local resolution: "@storybook/addon-docs@workspace:addons/docs" dependencies: "@jest/transform": ^29.3.1 "@mdx-js/react": ^2.1.5 - "@storybook/blocks": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/csf-plugin": 7.1.0-alpha.17 - "@storybook/csf-tools": 7.1.0-alpha.17 + "@storybook/blocks": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/csf-plugin": "workspace:*" + "@storybook/csf-tools": "workspace:*" "@storybook/global": ^5.0.0 "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/postinstall": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/react-dom-shim": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/node-logger": "workspace:*" + "@storybook/postinstall": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/react-dom-shim": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" fs-extra: ^11.1.0 react: ^16.14.0 react-dom: ^16.8.0 @@ -4978,20 +5831,20 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-essentials@workspace:addons/essentials" dependencies: - "@storybook/addon-actions": 7.1.0-alpha.17 - "@storybook/addon-backgrounds": 7.1.0-alpha.17 - "@storybook/addon-controls": 7.1.0-alpha.17 - "@storybook/addon-docs": 7.1.0-alpha.17 - "@storybook/addon-highlight": 7.1.0-alpha.17 - "@storybook/addon-measure": 7.1.0-alpha.17 - "@storybook/addon-outline": 7.1.0-alpha.17 - "@storybook/addon-toolbars": 7.1.0-alpha.17 - "@storybook/addon-viewport": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/vue": 7.1.0-alpha.17 + "@storybook/addon-actions": "workspace:*" + "@storybook/addon-backgrounds": "workspace:*" + "@storybook/addon-controls": "workspace:*" + "@storybook/addon-docs": "workspace:*" + "@storybook/addon-highlight": "workspace:*" + "@storybook/addon-measure": "workspace:*" + "@storybook/addon-outline": "workspace:*" + "@storybook/addon-toolbars": "workspace:*" + "@storybook/addon-viewport": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/vue": "workspace:*" ts-dedent: ^2.0.0 typescript: ^4.9.3 peerDependencies: @@ -5000,13 +5853,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-highlight@7.1.0-alpha.17, @storybook/addon-highlight@workspace:*, @storybook/addon-highlight@workspace:addons/highlight": +"@storybook/addon-highlight@workspace:*, @storybook/addon-highlight@workspace:addons/highlight": version: 0.0.0-use.local resolution: "@storybook/addon-highlight@workspace:addons/highlight" dependencies: - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" "@types/webpack-env": ^1.16.0 typescript: ~4.9.3 languageName: unknown @@ -5017,18 +5870,18 @@ __metadata: resolution: "@storybook/addon-interactions@workspace:addons/interactions" dependencies: "@devtools-ds/object-inspector": ^1.1.2 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/instrumenter": 7.1.0-alpha.17 - "@storybook/jest": future - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/testing-library": future - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/instrumenter": "workspace:*" + "@storybook/jest": next + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/testing-library": next + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": ^16.0.0 formik: ^2.2.9 jest-mock: ^27.0.6 @@ -5050,16 +5903,17 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-jest@workspace:addons/jest" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" react-resize-detector: ^7.1.2 + tiny-invariant: ^1.3.1 typescript: ~4.9.3 - upath: ^1.2.0 + upath: ^2.0.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5075,14 +5929,14 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-links@workspace:addons/links" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/router": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/router": "workspace:*" + "@storybook/types": "workspace:*" fs-extra: ^11.1.0 prop-types: ^15.7.2 ts-dedent: ^2.0.0 @@ -5102,24 +5956,25 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-mdx-gfm@workspace:addons/gfm" dependencies: - "@storybook/node-logger": 7.1.0-alpha.17 + "@storybook/node-logger": "workspace:*" remark-gfm: ^3.0.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/addon-measure@7.1.0-alpha.17, @storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": +"@storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": version: 0.0.0-use.local resolution: "@storybook/addon-measure@workspace:addons/measure" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" + tiny-invariant: ^1.3.1 typescript: ~4.9.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5132,17 +5987,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-outline@7.1.0-alpha.17, @storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": +"@storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": version: 0.0.0-use.local resolution: "@storybook/addon-outline@workspace:addons/outline" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" ts-dedent: ^2.0.0 typescript: ~4.9.3 peerDependencies: @@ -5162,17 +6017,16 @@ __metadata: dependencies: "@axe-core/puppeteer": ^4.2.0 "@storybook/csf": ^0.1.0 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 - "@types/jest-image-snapshot": ^5.1.0 + "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" + "@types/jest-image-snapshot": ^6.0.0 "@types/puppeteer": ^5.4.0 enzyme: ^3.11.0 enzyme-to-json: ^3.6.1 jest-image-snapshot: ^6.0.0 puppeteer: ^2.0.0 || ^3.0.0 - rimraf: ^3.0.2 peerDependencies: - "@storybook/addon-storyshots": 7.1.0-alpha.17 + "@storybook/addon-storyshots": "workspace:*" puppeteer: ">=2.0.0" peerDependenciesMeta: puppeteer: @@ -5184,36 +6038,35 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-storyshots@workspace:addons/storyshots-core" dependencies: - "@angular/core": ^13.3.6 - "@angular/platform-browser-dynamic": ^13.3.6 + "@angular/core": ^16.0.0-rc.4 + "@angular/platform-browser-dynamic": ^16.0.0-rc.4 "@emotion/jest": ^11.8.0 "@jest/transform": ^29.3.1 - "@storybook/addon-docs": 7.1.0-alpha.17 - "@storybook/angular": 7.1.0-alpha.17 + "@storybook/addon-docs": "workspace:*" + "@storybook/angular": "workspace:*" "@storybook/babel-plugin-require-context-hook": 1.0.1 - "@storybook/client-api": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-webpack": 7.1.0-alpha.17 + "@storybook/client-api": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-webpack": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/react": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 - "@storybook/vue": 7.1.0-alpha.17 - "@storybook/vue3": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/react": "workspace:*" + "@storybook/types": "workspace:*" + "@storybook/vue": "workspace:*" + "@storybook/vue3": "workspace:*" "@types/jest-specific-snapshot": ^0.5.6 babel-loader: ^9.1.2 enzyme: ^3.11.0 enzyme-adapter-react-16: ^1.15.5 enzyme-to-json: ^3.6.1 glob: ^10.0.0 - jest-preset-angular: ^12.2.3 - jest-specific-snapshot: ^7.0.0 + jest-preset-angular: ^13.0.1 + jest-specific-snapshot: ^8.0.0 jest-vue-preprocessor: ^1.7.1 preact-render-to-string: ^5.1.19 pretty-format: ^29.0.0 react-test-renderer: ^16 read-pkg-up: ^7.0.1 - rimraf: ^3.0.2 rxjs: ^6.6.3 ts-dedent: ^2.0.0 vue-jest: ^5.0.0-alpha.8 @@ -5272,13 +6125,13 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/addon-storysource@workspace:addons/storysource" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/router": 7.1.0-alpha.17 - "@storybook/source-loader": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/router": "workspace:*" + "@storybook/source-loader": "workspace:*" + "@storybook/theming": "workspace:*" "@types/react": ^16.14.34 "@types/react-syntax-highlighter": 11.0.5 estraverse: ^5.2.0 @@ -5297,15 +6150,39 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-toolbars@7.1.0-alpha.17, @storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": +"@storybook/addon-themes@workspace:addons/themes": + version: 0.0.0-use.local + resolution: "@storybook/addon-themes@workspace:addons/themes" + dependencies: + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" + ts-dedent: ^2.0.0 + typescript: ~4.9.3 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + languageName: unknown + linkType: soft + +"@storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": version: 0.0.0-use.local resolution: "@storybook/addon-toolbars@workspace:addons/toolbars" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" typescript: ~4.9.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5318,17 +6195,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-viewport@7.1.0-alpha.17, @storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": +"@storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": version: 0.0.0-use.local resolution: "@storybook/addon-viewport@workspace:addons/viewport" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" memoizerific: ^1.11.3 prop-types: ^15.7.2 typescript: ~4.9.3 @@ -5343,20 +6220,20 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addons@7.1.0-alpha.17, @storybook/addons@workspace:*, @storybook/addons@workspace:lib/addons": +"@storybook/addons@workspace:*, @storybook/addons@workspace:deprecated/addons": version: 0.0.0-use.local - resolution: "@storybook/addons@workspace:lib/addons" + resolution: "@storybook/addons@workspace:deprecated/addons" dependencies: - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 languageName: unknown linkType: soft -"@storybook/angular@7.1.0-alpha.17, @storybook/angular@workspace:*, @storybook/angular@workspace:frameworks/angular": +"@storybook/angular@workspace:*, @storybook/angular@workspace:frameworks/angular": version: 0.0.0-use.local resolution: "@storybook/angular@workspace:frameworks/angular" dependencies: @@ -5372,24 +6249,24 @@ __metadata: "@angular/forms": ^16.0.0-rc.4 "@angular/platform-browser": ^16.0.0-rc.4 "@angular/platform-browser-dynamic": ^16.0.0-rc.4 - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/cli": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/cli": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/core-webpack": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/telemetry": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/telemetry": "workspace:*" + "@storybook/types": "workspace:*" + "@types/cross-spawn": ^6.0.2 "@types/node": ^16.0.0 "@types/react": ^16.14.34 "@types/react-dom": ^16.9.14 - "@types/rimraf": ^3.0.2 "@types/semver": ^7.3.4 "@types/tmp": ^0.2.3 "@types/webpack-env": ^1.18.0 @@ -5399,12 +6276,11 @@ __metadata: jest-preset-angular: ^13.0.1 jest-specific-snapshot: ^8.0.0 read-pkg-up: ^7.0.1 - rimraf: ^3.0.2 semver: ^7.3.7 - telejson: ^7.0.3 + telejson: ^7.2.0 tmp: ^0.2.1 ts-dedent: ^2.0.0 - tsconfig-paths-webpack-plugin: ^3.5.2 + tsconfig-paths-webpack-plugin: ^4.0.1 typescript: ^5.0.4 util-deprecate: ^1.0.2 webpack: 5 @@ -5433,12 +6309,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/api@7.1.0-alpha.17, @storybook/api@workspace:*, @storybook/api@workspace:lib/manager-api-shim": +"@storybook/api@workspace:*, @storybook/api@workspace:deprecated/manager-api-shim": version: 0.0.0-use.local - resolution: "@storybook/api@workspace:lib/manager-api-shim" + resolution: "@storybook/api@workspace:deprecated/manager-api-shim" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/manager-api": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/manager-api": "workspace:*" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5482,22 +6358,22 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@7.1.0-alpha.17, @storybook/blocks@workspace:*, @storybook/blocks@workspace:ui/blocks": +"@storybook/blocks@workspace:*, @storybook/blocks@workspace:ui/blocks": version: 0.0.0-use.local resolution: "@storybook/blocks@workspace:ui/blocks" dependencies: - "@storybook/addon-actions": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/addon-actions": "workspace:*" + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/csf": ^0.1.0 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@types/color-convert": ^2.0.0 "@types/lodash": ^4.14.167 color-convert: ^2.0.1 @@ -5507,7 +6383,8 @@ __metadata: memoizerific: ^1.11.3 polished: ^4.2.2 react-colorful: ^5.1.2 - telejson: ^7.0.3 + telejson: ^7.2.0 + tocbot: ^4.20.1 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 peerDependencies: @@ -5516,20 +6393,20 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-manager@7.1.0-alpha.17, @storybook/builder-manager@workspace:*, @storybook/builder-manager@workspace:lib/builder-manager": +"@storybook/builder-manager@workspace:*, @storybook/builder-manager@workspace:builders/builder-manager": version: 0.0.0-use.local - resolution: "@storybook/builder-manager@workspace:lib/builder-manager" + resolution: "@storybook/builder-manager@workspace:builders/builder-manager" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/manager": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 + "@storybook/core-common": "workspace:*" + "@storybook/manager": "workspace:*" + "@storybook/node-logger": "workspace:*" "@types/ejs": ^3.1.1 "@types/find-cache-dir": ^3.2.1 "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 browser-assert: ^1.2.1 ejs: ^3.1.8 - esbuild: ^0.17.0 + esbuild: ^0.18.0 esbuild-plugin-alias: ^0.2.1 express: ^4.17.3 find-cache-dir: ^3.0.0 @@ -5541,28 +6418,29 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-vite@7.1.0-alpha.17, @storybook/builder-vite@workspace:*, @storybook/builder-vite@workspace:lib/builder-vite": +"@storybook/builder-vite@workspace:*, @storybook/builder-vite@workspace:builders/builder-vite": version: 0.0.0-use.local - resolution: "@storybook/builder-vite@workspace:lib/builder-vite" + resolution: "@storybook/builder-vite@workspace:builders/builder-vite" dependencies: - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channel-websocket": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/csf-plugin": 7.1.0-alpha.17 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/csf-plugin": "workspace:*" "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/node-logger": "workspace:*" + "@storybook/preview": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" "@types/express": ^4.17.13 + "@types/find-cache-dir": ^3.2.1 "@types/node": ^16.0.0 browser-assert: ^1.2.1 es-module-lexer: ^0.9.3 express: ^4.17.3 + find-cache-dir: ^3.0.0 fs-extra: ^11.1.0 glob: ^10.0.0 - magic-string: ^0.27.0 + magic-string: ^0.30.0 remark-external-links: ^8.0.0 remark-slug: ^6.0.0 rollup: ^3.20.1 @@ -5584,44 +6462,34 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-webpack5@7.1.0-alpha.17, @storybook/builder-webpack5@workspace:*, @storybook/builder-webpack5@workspace:lib/builder-webpack5": +"@storybook/builder-webpack5@workspace:*, @storybook/builder-webpack5@workspace:builders/builder-webpack5": version: 0.0.0-use.local - resolution: "@storybook/builder-webpack5@workspace:lib/builder-webpack5" + resolution: "@storybook/builder-webpack5@workspace:builders/builder-webpack5" dependencies: - "@babel/core": ^7.12.10 - "@storybook/addons": 7.1.0-alpha.17 - "@storybook/api": 7.1.0-alpha.17 - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channel-websocket": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-api": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/router": 7.1.0-alpha.17 - "@storybook/store": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 + "@babel/core": ^7.22.0 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/core-webpack": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@swc/core": ^1.3.49 "@types/node": ^16.0.0 "@types/pretty-hrtime": ^1.0.0 "@types/semver": ^7.3.4 "@types/terser-webpack-plugin": ^5.2.0 - "@types/webpack-dev-middleware": ^5.3.0 "@types/webpack-hot-middleware": ^2.25.6 "@types/webpack-virtual-modules": ^0.1.1 babel-loader: ^9.0.0 babel-plugin-named-exports-order: ^0.0.2 browser-assert: ^1.2.1 case-sensitive-paths-webpack-plugin: ^2.4.0 + constants-browserify: ^1.0.0 css-loader: ^6.7.1 express: ^4.17.3 - fork-ts-checker-webpack-plugin: ^7.2.8 + fork-ts-checker-webpack-plugin: ^8.0.0 fs-extra: ^11.1.0 html-webpack-plugin: ^5.5.0 path-browserify: ^1.0.1 @@ -5630,102 +6498,80 @@ __metadata: semver: ^7.3.7 slash: ^5.0.0 style-loader: ^3.3.1 + swc-loader: ^0.2.3 terser-webpack-plugin: ^5.3.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 + url: ^0.11.0 util: ^0.12.4 util-deprecate: ^1.0.2 webpack: 5 - webpack-dev-middleware: ^5.3.1 + webpack-dev-middleware: ^6.1.1 webpack-hot-middleware: ^2.25.1 - webpack-virtual-modules: ^0.4.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + webpack-virtual-modules: ^0.5.0 peerDependenciesMeta: typescript: optional: true languageName: unknown linkType: soft -"@storybook/channel-postmessage@7.1.0-alpha.17, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:lib/channel-postmessage": +"@storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:deprecated/channel-postmessage": version: 0.0.0-use.local - resolution: "@storybook/channel-postmessage@workspace:lib/channel-postmessage" + resolution: "@storybook/channel-postmessage@workspace:deprecated/channel-postmessage" dependencies: - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 - "@storybook/global": ^5.0.0 - qs: ^6.10.0 - telejson: ^7.0.3 - tiny-invariant: ^1.3.1 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/channel-postmessage@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channel-postmessage@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - qs: ^6.10.0 - telejson: ^7.0.3 - checksum: 7d8695d6266bda9ba66bf8d79d0475f5e971f35896d973b4e8ec92afb9b69b65564a262fca2d1d07728ea61f2cf78443f919b7c26fecfa00735ad7db3d9c12a6 - languageName: node - linkType: hard - -"@storybook/channel-websocket@7.1.0-alpha.17, @storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:lib/channel-websocket": +"@storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:deprecated/channel-websocket": version: 0.0.0-use.local - resolution: "@storybook/channel-websocket@workspace:lib/channel-websocket" + resolution: "@storybook/channel-websocket@workspace:deprecated/channel-websocket" dependencies: - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/global": ^5.0.0 - telejson: ^7.0.3 - tiny-invariant: ^1.3.1 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/channels@7.1.0-alpha.17, @storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": +"@storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": version: 0.0.0-use.local resolution: "@storybook/channels@workspace:lib/channels" dependencies: + "@storybook/client-logger": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/global": ^5.0.0 + qs: ^6.10.0 + telejson: ^7.2.0 + tiny-invariant: ^1.3.1 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/channels@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channels@npm:7.0.2" - checksum: 43211d9707126f875bd01d5c850aa86019ccb58bfba888d49cc35027670ddda4d6843540a9ab9a2f6c23933a46ceb77a0d558b01e3695bccb8b7b129eb3b449c - languageName: node - linkType: hard - -"@storybook/cli@7.1.0-alpha.17, @storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": +"@storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": version: 0.0.0-use.local resolution: "@storybook/cli@workspace:lib/cli" dependencies: - "@babel/core": ^7.20.2 - "@babel/preset-env": ^7.20.2 + "@babel/core": ^7.22.9 + "@babel/preset-env": ^7.22.9 + "@babel/types": ^7.22.5 "@ndelangen/get-tarball": ^3.0.7 - "@storybook/client-api": 7.1.0-alpha.17 - "@storybook/codemod": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/csf-tools": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/telemetry": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/client-api": "workspace:*" + "@storybook/codemod": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/csf-tools": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/telemetry": "workspace:*" + "@storybook/types": "workspace:*" "@types/cross-spawn": ^6.0.2 "@types/prompts": ^2.0.9 "@types/puppeteer-core": ^2.1.0 "@types/semver": ^7.3.4 - "@types/shelljs": ^0.8.7 "@types/util-deprecate": ^1.0.0 + "@yarnpkg/fslib": 2.10.3 + "@yarnpkg/libzip": 2.3.0 boxen: ^5.1.2 chalk: ^4.1.0 commander: ^6.2.1 @@ -5742,13 +6588,13 @@ __metadata: globby: ^11.0.2 jscodeshift: ^0.14.0 leven: ^3.1.0 + ora: ^5.4.1 prettier: ^2.8.0 prompts: ^2.4.0 puppeteer-core: ^2.1.1 read-pkg-up: ^7.0.1 semver: ^7.3.7 - shelljs: ^0.8.5 - simple-update-notifier: ^1.0.0 + simple-update-notifier: ^2.0.0 slash: ^5.0.0 strip-json-comments: ^3.1.1 tempy: ^1.0.1 @@ -5761,16 +6607,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/client-api@7.1.0-alpha.17, @storybook/client-api@workspace:*, @storybook/client-api@workspace:lib/client-api": +"@storybook/client-api@workspace:*, @storybook/client-api@workspace:deprecated/client-api": version: 0.0.0-use.local - resolution: "@storybook/client-api@workspace:lib/client-api" + resolution: "@storybook/client-api@workspace:deprecated/client-api" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" languageName: unknown linkType: soft -"@storybook/client-logger@7.1.0-alpha.17, @storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": +"@storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": version: 0.0.0-use.local resolution: "@storybook/client-logger@workspace:lib/client-logger" dependencies: @@ -5779,32 +6625,24 @@ __metadata: languageName: unknown linkType: soft -"@storybook/client-logger@npm:7.0.2, @storybook/client-logger@npm:future": - version: 7.0.2 - resolution: "@storybook/client-logger@npm:7.0.2" - dependencies: - "@storybook/global": ^5.0.0 - checksum: cdcb204f874d01ff65b91447c59becd9ff0c07c9103b3078a3faa63e66e290eb8820a357fee25e0f99674c56e27fb5be20260f4ffef5841a18ab2ad38d3d8bfd - languageName: node - linkType: hard - -"@storybook/codemod@7.1.0-alpha.17, @storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": +"@storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": version: 0.0.0-use.local resolution: "@storybook/codemod@workspace:lib/codemod" dependencies: - "@babel/core": ~7.21.0 - "@babel/preset-env": ~7.21.0 - "@babel/types": ~7.21.2 + "@babel/core": ^7.22.9 + "@babel/preset-env": ^7.22.9 + "@babel/types": ^7.22.5 "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/csf-tools": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" + "@types/cross-spawn": ^6.0.2 "@types/jscodeshift": ^0.11.6 ansi-regex: ^5.0.1 cross-spawn: ^7.0.3 globby: ^11.0.2 jest: ^29.3.1 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 jscodeshift: ^0.14.0 lodash: ^4.17.21 mdast-util-mdx-jsx: ^2.1.2 @@ -5812,7 +6650,7 @@ __metadata: prettier: ^2.8.0 recast: ^0.23.1 remark: ^14.0.2 - remark-mdx: ^2.2.1 + remark-mdx: ^2.3.0 ts-dedent: ^2.2.0 typescript: ~4.9.3 unist-util-is: ^5.2.0 @@ -5823,22 +6661,25 @@ __metadata: languageName: unknown linkType: soft -"@storybook/components@7.1.0-alpha.17, @storybook/components@workspace:*, @storybook/components@workspace:ui/components": +"@storybook/components@workspace:*, @storybook/components@workspace:ui/components": version: 0.0.0-use.local resolution: "@storybook/components@workspace:ui/components" dependencies: "@popperjs/core": ^2.6.0 - "@storybook/client-logger": 7.1.0-alpha.17 + "@radix-ui/react-select": ^1.2.2 + "@radix-ui/react-toolbar": ^1.0.4 + "@storybook/client-logger": "workspace:*" "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 - "@types/overlayscrollbars": ^1.12.0 + "@storybook/icons": ^1.1.6 + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@types/react-syntax-highlighter": 11.0.5 "@types/util-deprecate": ^1.0.0 css: ^3.0.0 memoizerific: ^1.11.3 - overlayscrollbars: ^1.13.1 + overlayscrollbars: ^2.2.0 + overlayscrollbars-react: ^0.5.0 polished: ^4.2.2 prettier: ^2.8.0 react-popper-tooltip: ^4.4.2 @@ -5854,79 +6695,79 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-client@7.1.0-alpha.17, @storybook/core-client@workspace:*, @storybook/core-client@workspace:lib/core-client": +"@storybook/core-client@workspace:*, @storybook/core-client@workspace:deprecated/core-client": version: 0.0.0-use.local - resolution: "@storybook/core-client@workspace:lib/core-client" + resolution: "@storybook/core-client@workspace:deprecated/core-client" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" languageName: unknown linkType: soft -"@storybook/core-common@7.1.0-alpha.17, @storybook/core-common@workspace:*, @storybook/core-common@workspace:lib/core-common": +"@storybook/core-common@workspace:*, @storybook/core-common@workspace:lib/core-common": version: 0.0.0-use.local resolution: "@storybook/core-common@workspace:lib/core-common" dependencies: - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" + "@types/find-cache-dir": ^3.2.1 "@types/mock-fs": ^4.13.1 "@types/node": ^16.0.0 + "@types/node-fetch": ^2.6.4 "@types/picomatch": ^2.3.0 "@types/pretty-hrtime": ^1.0.0 chalk: ^4.1.0 - esbuild: ^0.17.0 + esbuild: ^0.18.0 esbuild-register: ^3.4.0 - file-system-cache: ^2.0.0 + file-system-cache: 2.3.0 + find-cache-dir: ^3.0.0 find-up: ^5.0.0 fs-extra: ^11.1.0 glob: ^10.0.0 handlebars: ^4.7.7 lazy-universal-dotenv: ^4.0.0 mock-fs: ^5.2.0 + node-fetch: ^2.0.0 picomatch: ^2.3.0 pkg-dir: ^5.0.0 pretty-hrtime: ^1.0.3 resolve-from: ^5.0.0 slash: ^5.0.0 ts-dedent: ^2.0.0 - type-fest: ^2.19.0 + type-fest: ~2.19 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/core-events@7.1.0-alpha.17, @storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": +"@storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": version: 0.0.0-use.local resolution: "@storybook/core-events@workspace:lib/core-events" dependencies: + ts-dedent: ^2.0.0 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/core-events@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/core-events@npm:7.0.2" - checksum: 61d2a854c9fcdac8dd92fae704e721eafe0ce4f7fc0de5b5590af706282d996e05b8efab24adf0cedad7a68fc6be057a8e3213be22855bd2db93dc6fdf06bb3d - languageName: node - linkType: hard - -"@storybook/core-server@7.1.0-alpha.17, @storybook/core-server@workspace:*, @storybook/core-server@workspace:lib/core-server": +"@storybook/core-server@workspace:*, @storybook/core-server@workspace:lib/core-server": version: 0.0.0-use.local resolution: "@storybook/core-server@workspace:lib/core-server" dependencies: - "@aw-web-design/x-default-browser": 1.4.88 + "@aw-web-design/x-default-browser": 1.4.126 "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/addon-docs": "workspace:*" + "@storybook/builder-manager": "workspace:*" + "@storybook/channels": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.1.0-alpha.17 + "@storybook/csf-tools": "workspace:*" "@storybook/docs-mdx": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/manager": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/telemetry": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/telemetry": "workspace:*" + "@storybook/types": "workspace:*" "@types/compression": ^1.7.0 "@types/detect-port": ^1.3.0 "@types/ip": ^1.1.0 @@ -5936,7 +6777,7 @@ __metadata: "@types/semver": ^7.3.4 "@types/serve-favicon": ^2.5.2 "@types/ws": ^8 - better-opn: ^2.1.1 + better-opn: ^3.0.2 boxen: ^5.1.2 chalk: ^4.1.0 cli-table3: ^0.6.1 @@ -5947,9 +6788,9 @@ __metadata: globby: ^11.0.2 ip: ^2.0.0 jest-os-detection: ^1.3.1 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 lodash: ^4.17.21 - node-fetch: ^2.6.7 + node-fetch: ^3.3.1 open: ^8.4.0 pretty-hrtime: ^1.0.3 prompts: ^2.4.0 @@ -5957,23 +6798,24 @@ __metadata: semver: ^7.3.7 serve-favicon: ^2.5.0 slash: ^5.0.0 - telejson: ^7.0.3 + telejson: ^7.2.0 tiny-invariant: ^1.3.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 + util: ^0.12.4 util-deprecate: ^1.0.2 watchpack: ^2.2.0 ws: ^8.2.3 languageName: unknown linkType: soft -"@storybook/core-webpack@7.1.0-alpha.17, @storybook/core-webpack@workspace:*, @storybook/core-webpack@workspace:lib/core-webpack": +"@storybook/core-webpack@workspace:*, @storybook/core-webpack@workspace:lib/core-webpack": version: 0.0.0-use.local resolution: "@storybook/core-webpack@workspace:lib/core-webpack" dependencies: - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/core-common": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": ^16.0.0 ts-dedent: ^2.0.0 typescript: ~4.9.3 @@ -5981,30 +6823,30 @@ __metadata: languageName: unknown linkType: soft -"@storybook/csf-plugin@7.1.0-alpha.17, @storybook/csf-plugin@workspace:*, @storybook/csf-plugin@workspace:lib/csf-plugin": +"@storybook/csf-plugin@workspace:*, @storybook/csf-plugin@workspace:lib/csf-plugin": version: 0.0.0-use.local resolution: "@storybook/csf-plugin@workspace:lib/csf-plugin" dependencies: - "@storybook/csf-tools": 7.1.0-alpha.17 + "@storybook/csf-tools": "workspace:*" typescript: ~4.9.3 - unplugin: ^0.10.2 + unplugin: ^1.3.1 languageName: unknown linkType: soft -"@storybook/csf-tools@7.1.0-alpha.17, @storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": +"@storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": version: 0.0.0-use.local resolution: "@storybook/csf-tools@workspace:lib/csf-tools" dependencies: - "@babel/generator": ~7.21.1 - "@babel/parser": ~7.21.2 - "@babel/traverse": ~7.21.2 - "@babel/types": ~7.21.2 + "@babel/generator": ^7.22.9 + "@babel/parser": ^7.22.7 + "@babel/traverse": ^7.22.8 + "@babel/types": ^7.22.5 "@storybook/csf": ^0.1.0 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/types": "workspace:*" "@types/fs-extra": ^11.0.1 - "@types/js-yaml": ^3.12.6 + "@types/js-yaml": ^4.0.5 fs-extra: ^11.1.0 - js-yaml: ^3.14.1 + js-yaml: ^4.1.0 recast: ^0.23.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 @@ -6021,11 +6863,11 @@ __metadata: linkType: hard "@storybook/csf@npm:^0.1.0": - version: 0.1.0 - resolution: "@storybook/csf@npm:0.1.0" + version: 0.1.1 + resolution: "@storybook/csf@npm:0.1.1" dependencies: type-fest: ^2.19.0 - checksum: 76e284884eacb54bb2130448c45204d64e9ca436d73614d3369d72049b1e786e31e55c0bbb922b8e1069fecbc97a3d68796d401f8e3d93d7ffba0df59b6d8cbe + checksum: 999bb87fbbe047a559bbaa5baf2ed84872fcd5cdcae3c1169f8e4c641eefe8759d09a09034a78ed114032c0e5cf6301b7fa89e5e3ce60d75cf0bd5e33ec0a6e7 languageName: node linkType: hard @@ -6036,17 +6878,17 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@7.1.0-alpha.17, @storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": +"@storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": version: 0.0.0-use.local resolution: "@storybook/docs-tools@workspace:lib/docs-tools" dependencies: - "@babel/core": ^7.12.10 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@babel/core": ^7.22.9 + "@storybook/core-common": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" "@types/doctrine": ^0.0.3 doctrine: ^3.0.0 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 lodash: ^4.17.21 require-from-string: ^2.0.2 typescript: ~4.9.3 @@ -6057,12 +6899,12 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/ember@workspace:frameworks/ember" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" ember-source: ~3.28.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 @@ -6106,17 +6948,15 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/html-vite@workspace:frameworks/html-vite" dependencies: - "@storybook/addons": 7.1.0-alpha.17 - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channel-websocket": 7.1.0-alpha.17 - "@storybook/client-api": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/html": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preview-web": 7.1.0-alpha.17 + "@storybook/addons": "workspace:*" + "@storybook/builder-vite": "workspace:*" + "@storybook/client-api": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/html": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preview-web": "workspace:*" "@types/node": ^16.0.0 - magic-string: ^0.27.0 + magic-string: ^0.30.0 typescript: ~4.9.3 languageName: unknown linkType: soft @@ -6125,11 +6965,11 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/html-webpack5@workspace:frameworks/html-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/html": 7.1.0-alpha.17 - "@storybook/preset-html-webpack": 7.1.0-alpha.17 + "@storybook/html": "workspace:*" + "@storybook/preset-html-webpack": "workspace:*" "@types/node": ^16.0.0 typescript: ~4.9.3 peerDependencies: @@ -6139,15 +6979,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/html@7.1.0-alpha.17, @storybook/html@workspace:*, @storybook/html@workspace:renderers/html": +"@storybook/html@workspace:*, @storybook/html@workspace:renderers/html": version: 0.0.0-use.local resolution: "@storybook/html@workspace:renderers/html" dependencies: - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/core-client": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" ts-dedent: ^2.0.0 typescript: ~4.9.3 peerDependencies: @@ -6155,41 +6995,37 @@ __metadata: languageName: unknown linkType: soft -"@storybook/instrumenter@7.1.0-alpha.17, @storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": +"@storybook/icons@npm:^1.1.6": + version: 1.1.6 + resolution: "@storybook/icons@npm:1.1.6" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: c8c2fb8f91c5c93b1cd6951c06a25f5b8203943cb95d7b6ef40015896596ed7444911fa556726c880902110f04e013f3def3fbae0eb6f7dbfcc96ec93fce9cb9 + languageName: node + linkType: hard + +"@storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": version: 0.0.0-use.local resolution: "@storybook/instrumenter@workspace:lib/instrumenter" dependencies: - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/instrumenter@npm:future": - version: 7.0.2 - resolution: "@storybook/instrumenter@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.0.2 - checksum: 32d50b35ba1225a210c981e74f35e8c285066d8282218ef3fbfc1b3c39de9902c842029aeceb5df0507805de6b416f2d2610096e74e35fc6e8ff204a85db1a34 - languageName: node - linkType: hard - -"@storybook/jest@npm:future": - version: 0.1.1-future.0 - resolution: "@storybook/jest@npm:0.1.1-future.0" +"@storybook/jest@npm:next": + version: 0.1.1-next.2 + resolution: "@storybook/jest@npm:0.1.1-next.2" dependencies: "@storybook/expect": storybook-jest - "@storybook/instrumenter": future "@testing-library/jest-dom": ^5.16.2 jest-mock: ^27.3.0 - checksum: f180fbd2e0751ee4abd58017bea8ea4594d75cf9949f0fb97b30f2a1669b35a4fe7824258ce6fff7b4de9f834fa1bc6b7be208534cf3f12d0ba3c34e5755a973 + checksum: e19fd99003987930a808ae35930da56299ce9790714c8f5f31fcc258584d6930235ef436e87ae644a8ec2b4c281493e6ed36872554832229edd1feca8c12c451 languageName: node linkType: hard @@ -6220,19 +7056,19 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-api@7.1.0-alpha.17, @storybook/manager-api@workspace:*, @storybook/manager-api@workspace:lib/manager-api": +"@storybook/manager-api@workspace:*, @storybook/manager-api@workspace:lib/manager-api": version: 0.0.0-use.local resolution: "@storybook/manager-api@workspace:lib/manager-api" dependencies: "@jest/globals": ^29.3.1 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/router": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/router": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@types/lodash": ^4.14.167 "@types/qs": ^6 dequal: ^2.0.2 @@ -6242,7 +7078,7 @@ __metadata: qs: ^6.10.0 semver: ^7.3.7 store2: ^2.14.2 - telejson: ^7.0.3 + telejson: ^7.2.0 ts-dedent: ^2.0.0 typescript: ~4.9.3 peerDependencies: @@ -6251,24 +7087,22 @@ __metadata: languageName: unknown linkType: soft -"@storybook/manager@7.1.0-alpha.17, @storybook/manager@workspace:*, @storybook/manager@workspace:ui/manager": +"@storybook/manager@workspace:*, @storybook/manager@workspace:ui/manager": version: 0.0.0-use.local resolution: "@storybook/manager@workspace:ui/manager" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/addons": 7.1.0-alpha.17 - "@storybook/api": 7.1.0-alpha.17 - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channel-websocket": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/components": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@storybook/addon-designs": ^7.0.4 + "@storybook/addons": "workspace:*" + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/router": 7.1.0-alpha.17 - "@storybook/theming": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/router": "workspace:*" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" "@testing-library/react": ^11.2.2 "@types/semver": ^7.3.4 copy-to-clipboard: ^3.3.1 @@ -6294,9 +7128,9 @@ __metadata: linkType: soft "@storybook/mdx2-csf@npm:^1.0.0": - version: 1.0.0 - resolution: "@storybook/mdx2-csf@npm:1.0.0" - checksum: 250ea2d78ba49bc6a1d1035fcc3db834e67bf1ab8df9362799e34ad691872ef90c430e4d68e3ceeb485f9dfbd8720e9a9b4597dc26c835ba0d8a23906bc2564d + version: 1.1.0 + resolution: "@storybook/mdx2-csf@npm:1.1.0" + checksum: ba4496a51efae35edb3e509e488cd16066ccf0768d2dc527bbc2650d0bc0f630540985205772d63d1711d1a5dae66136a919077c90fa2ac7a02a13de43446baa languageName: node linkType: hard @@ -6304,27 +7138,27 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/nextjs@workspace:frameworks/nextjs" dependencies: - "@babel/core": ^7.20.5 + "@babel/core": ^7.22.9 "@babel/plugin-proposal-class-properties": ^7.18.6 "@babel/plugin-proposal-export-namespace-from": ^7.18.9 "@babel/plugin-proposal-numeric-separator": ^7.18.6 "@babel/plugin-proposal-object-rest-spread": ^7.20.7 "@babel/plugin-syntax-bigint": ^7.8.3 "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 - "@babel/plugin-transform-runtime": ^7.21.0 - "@babel/preset-env": ^7.20.2 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.21.0 - "@babel/runtime": ^7.21.0 - "@babel/types": ^7.20.5 - "@storybook/addon-actions": 7.1.0-alpha.17 - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/preset-react-webpack": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/react": 7.1.0-alpha.17 + "@babel/plugin-syntax-import-assertions": ^7.22.5 + "@babel/plugin-transform-runtime": ^7.22.9 + "@babel/preset-env": ^7.22.9 + "@babel/preset-react": ^7.22.5 + "@babel/preset-typescript": ^7.22.5 + "@babel/runtime": ^7.22.6 + "@babel/types": ^7.22.5 + "@storybook/addon-actions": "workspace:*" + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/preset-react-webpack": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/react": "workspace:*" "@types/babel__core": ^7 "@types/babel__plugin-transform-runtime": ^7 "@types/babel__preset-env": ^7 @@ -6334,7 +7168,8 @@ __metadata: fs-extra: ^11.1.0 image-size: ^1.0.0 loader-utils: ^3.2.0 - next: ^13.2.4 + next: ^13.4.8 + node-polyfill-webpack-plugin: ^2.0.1 pnp-webpack-plugin: ^1.7.0 postcss: ^8.4.21 postcss-loader: ^7.0.2 @@ -6345,19 +7180,16 @@ __metadata: styled-jsx: 5.1.1 ts-dedent: ^2.0.0 tsconfig-paths: ^4.0.0 - tsconfig-paths-webpack-plugin: ^3.5.2 + tsconfig-paths-webpack-plugin: ^4.0.1 typescript: ^4.9.3 webpack: ^5.65.0 peerDependencies: - "@babel/core": ^7.11.5 "@next/font": ^13.0.0 next: ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 webpack: ^5.0.0 peerDependenciesMeta: - "@babel/core": - optional: true "@next/font": optional: true "@storybook/addon-actions": @@ -6369,7 +7201,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/node-logger@7.1.0-alpha.17, @storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": +"@storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": version: 0.0.0-use.local resolution: "@storybook/node-logger@workspace:lib/node-logger" dependencies: @@ -6382,12 +7214,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/postinstall@7.1.0-alpha.17, @storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": +"@storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": version: 0.0.0-use.local resolution: "@storybook/postinstall@workspace:lib/postinstall" dependencies: jest: ^29.3.1 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 jscodeshift: ^0.14.0 typescript: ~4.9.3 languageName: unknown @@ -6398,8 +7230,8 @@ __metadata: resolution: "@storybook/preact-vite@workspace:frameworks/preact-vite" dependencies: "@preact/preset-vite": ^2.0.0 - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/preact": 7.1.0-alpha.17 + "@storybook/builder-vite": "workspace:*" + "@storybook/preact": "workspace:*" "@types/node": ^16.0.0 typescript: ~4.9.3 vite: ^4.0.0 @@ -6413,10 +7245,10 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/preact-webpack5@workspace:frameworks/preact-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preact": 7.1.0-alpha.17 - "@storybook/preset-preact-webpack": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preact": "workspace:*" + "@storybook/preset-preact-webpack": "workspace:*" "@types/node": ^16.0.0 preact: ^10.5.13 typescript: ~4.9.3 @@ -6428,14 +7260,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preact@7.1.0-alpha.17, @storybook/preact@workspace:*, @storybook/preact@workspace:renderers/preact": +"@storybook/preact@workspace:*, @storybook/preact@workspace:renderers/preact": version: 0.0.0-use.local resolution: "@storybook/preact@workspace:renderers/preact" dependencies: - "@storybook/core-client": 7.1.0-alpha.17 + "@storybook/core-client": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" preact: ^10.5.13 ts-dedent: ^2.0.0 typescript: ~4.9.3 @@ -6449,9 +7281,9 @@ __metadata: resolution: "@storybook/preset-create-react-app@workspace:presets/create-react-app" dependencies: "@pmmmwh/react-refresh-webpack-plugin": ^0.5.1 - "@storybook/node-logger": 7.1.0-alpha.17 + "@storybook/node-logger": "workspace:*" "@storybook/react-docgen-typescript-plugin": 1.0.6--canary.9.0c3f3b7.0 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/types": "workspace:*" "@types/babel__core": ^7.1.7 "@types/node": ^16.0.0 babel-plugin-react-docgen: ^4.1.0 @@ -6464,11 +7296,11 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-html-webpack@7.1.0-alpha.17, @storybook/preset-html-webpack@workspace:*, @storybook/preset-html-webpack@workspace:presets/html-webpack": +"@storybook/preset-html-webpack@workspace:*, @storybook/preset-html-webpack@workspace:presets/html-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-html-webpack@workspace:presets/html-webpack" dependencies: - "@storybook/core-webpack": 7.1.0-alpha.17 + "@storybook/core-webpack": "workspace:*" "@types/node": ^16.0.0 html-loader: ^3.1.0 typescript: ~4.9.3 @@ -6478,13 +7310,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-preact-webpack@7.1.0-alpha.17, @storybook/preset-preact-webpack@workspace:*, @storybook/preset-preact-webpack@workspace:presets/preact-webpack": +"@storybook/preset-preact-webpack@workspace:*, @storybook/preset-preact-webpack@workspace:presets/preact-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-preact-webpack@workspace:presets/preact-webpack" dependencies: - "@babel/plugin-transform-react-jsx": ^7.21.0 - "@babel/preset-typescript": ^7.21.0 - "@storybook/core-webpack": 7.1.0-alpha.17 + "@babel/plugin-transform-react-jsx": ^7.22.5 + "@babel/preset-typescript": ^7.22.5 + "@storybook/core-webpack": "workspace:*" "@types/node": ^16.0.0 preact: ^10.5.13 typescript: ~4.9.3 @@ -6494,17 +7326,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-react-webpack@7.1.0-alpha.17, @storybook/preset-react-webpack@workspace:*, @storybook/preset-react-webpack@workspace:presets/react-webpack": +"@storybook/preset-react-webpack@workspace:*, @storybook/preset-react-webpack@workspace:presets/react-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-react-webpack@workspace:presets/react-webpack" dependencies: - "@babel/preset-flow": ^7.18.6 - "@babel/preset-react": ^7.18.6 + "@babel/preset-flow": ^7.22.5 + "@babel/preset-react": ^7.22.5 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/react": 7.1.0-alpha.17 + "@storybook/core-webpack": "workspace:*" + "@storybook/docs-tools": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/react": "workspace:*" "@storybook/react-docgen-typescript-plugin": 1.0.6--canary.9.0c3f3b7.0 "@types/node": ^16.0.0 "@types/semver": ^7.3.4 @@ -6516,7 +7348,7 @@ __metadata: typescript: ~4.9.3 webpack: 5 peerDependencies: - "@babel/core": ^7.11.5 + "@babel/core": ^7.22.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -6527,49 +7359,49 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-server-webpack@7.1.0-alpha.17, @storybook/preset-server-webpack@workspace:*, @storybook/preset-server-webpack@workspace:presets/server-webpack": +"@storybook/preset-server-webpack@workspace:*, @storybook/preset-server-webpack@workspace:presets/server-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-server-webpack@workspace:presets/server-webpack" dependencies: - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/core-webpack": 7.1.0-alpha.17 + "@storybook/core-server": "workspace:*" + "@storybook/core-webpack": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/server": 7.1.0-alpha.17 + "@storybook/server": "workspace:*" "@types/node": ^16.0.0 fs-extra: ^11.1.0 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 safe-identifier: ^0.4.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 - yaml: ^1.10.0 + yaml: ^2.3.1 yaml-loader: ^0.8.0 languageName: unknown linkType: soft -"@storybook/preset-svelte-webpack@7.1.0-alpha.17, @storybook/preset-svelte-webpack@workspace:*, @storybook/preset-svelte-webpack@workspace:presets/svelte-webpack": +"@storybook/preset-svelte-webpack@workspace:*, @storybook/preset-svelte-webpack@workspace:presets/svelte-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-svelte-webpack@workspace:presets/svelte-webpack" dependencies: - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - svelte: ^3.31.2 - svelte-loader: ^3.1.2 + "@storybook/core-webpack": "workspace:*" + "@storybook/node-logger": "workspace:*" + svelte: ^4.0.0 + svelte-loader: ^3.1.9 sveltedoc-parser: ^4.2.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 peerDependencies: "@babel/core": "*" - svelte: ^3.1.0 + svelte: ^3.1.0 || ^4.0.0 svelte-loader: "*" languageName: unknown linkType: soft -"@storybook/preset-vue-webpack@7.1.0-alpha.17, @storybook/preset-vue-webpack@workspace:*, @storybook/preset-vue-webpack@workspace:presets/vue-webpack": +"@storybook/preset-vue-webpack@workspace:*, @storybook/preset-vue-webpack@workspace:presets/vue-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-vue-webpack@workspace:presets/vue-webpack" dependencies: - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/core-webpack": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@types/node": ^16.0.0 ts-loader: ^9.2.8 typescript: ~4.9.3 @@ -6589,12 +7421,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-vue3-webpack@7.1.0-alpha.17, @storybook/preset-vue3-webpack@workspace:*, @storybook/preset-vue3-webpack@workspace:presets/vue3-webpack": +"@storybook/preset-vue3-webpack@workspace:*, @storybook/preset-vue3-webpack@workspace:presets/vue3-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-vue3-webpack@workspace:presets/vue3-webpack" dependencies: - "@storybook/core-webpack": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/core-webpack": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@types/node": ^16.0.0 "@vue/compiler-sfc": ^3.2.33 ts-loader: ^9.2.8 @@ -6612,14 +7444,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-web-components-webpack@7.1.0-alpha.17, @storybook/preset-web-components-webpack@workspace:*, @storybook/preset-web-components-webpack@workspace:presets/web-components-webpack": +"@storybook/preset-web-components-webpack@workspace:*, @storybook/preset-web-components-webpack@workspace:presets/web-components-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-web-components-webpack@workspace:presets/web-components-webpack" dependencies: "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/preset-env": ^7.20.2 - "@storybook/core-webpack": 7.1.0-alpha.17 + "@babel/preset-env": ^7.22.9 + "@storybook/core-webpack": "workspace:*" "@types/node": ^16.0.0 babel-loader: ^7.0.0 || ^8.0.0 || ^9.0.0 babel-plugin-bundled-import-meta: ^0.3.1 @@ -6630,19 +7462,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preview-api@7.1.0-alpha.17, @storybook/preview-api@workspace:*, @storybook/preview-api@workspace:lib/preview-api": +"@storybook/preview-api@workspace:*, @storybook/preview-api@workspace:lib/preview-api": version: 0.0.0-use.local resolution: "@storybook/preview-api@workspace:lib/preview-api" dependencies: - "@jest/globals": ^26.6.2 - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 + "@jest/globals": ^29.5.0 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-events": "workspace:*" "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/types": "workspace:*" "@types/qs": ^6.9.5 ansi-to-html: ^0.6.11 dequal: ^2.0.2 @@ -6657,48 +7488,24 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preview-api@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/preview-api@npm:7.0.2" - dependencies: - "@storybook/channel-postmessage": 7.0.2 - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/csf": ^0.1.0 - "@storybook/global": ^5.0.0 - "@storybook/types": 7.0.2 - "@types/qs": ^6.9.5 - dequal: ^2.0.2 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - checksum: facf922e737a2efe9026b7a3be8968cb1deac78b4ea28572830d2e6f2802b2f8842cb97536f624e7c726451309641fe61c25c6590adb383829f68ac5071e229b - languageName: node - linkType: hard - -"@storybook/preview-web@7.1.0-alpha.17, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": +"@storybook/preview-web@workspace:*, @storybook/preview-web@workspace:deprecated/preview-web": version: 0.0.0-use.local - resolution: "@storybook/preview-web@workspace:lib/preview-web" + resolution: "@storybook/preview-web@workspace:deprecated/preview-web" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" languageName: unknown linkType: soft -"@storybook/preview@7.1.0-alpha.17, @storybook/preview@workspace:*, @storybook/preview@workspace:lib/preview": +"@storybook/preview@workspace:*, @storybook/preview@workspace:lib/preview": version: 0.0.0-use.local resolution: "@storybook/preview@workspace:lib/preview" dependencies: - "@storybook/channel-postmessage": 7.1.0-alpha.17 - "@storybook/channel-websocket": 7.1.0-alpha.17 - "@storybook/channels": 7.1.0-alpha.17 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/channels": "workspace:*" + "@storybook/client-logger": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/global": ^5.0.0 + "@storybook/preview-api": "workspace:*" typescript: ~4.9.3 languageName: unknown linkType: soft @@ -6721,11 +7528,11 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@7.1.0-alpha.17, @storybook/react-dom-shim@workspace:lib/react-dom-shim": +"@storybook/react-dom-shim@workspace:*, @storybook/react-dom-shim@workspace:lib/react-dom-shim": version: 0.0.0-use.local resolution: "@storybook/react-dom-shim@workspace:lib/react-dom-shim" dependencies: - "@storybook/types": 7.1.0-alpha.17 + "@storybook/types": "workspace:*" typescript: ~4.9.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6738,13 +7545,13 @@ __metadata: resolution: "@storybook/react-vite@workspace:frameworks/react-vite" dependencies: "@joshwooding/vite-plugin-react-docgen-typescript": 0.2.1 - "@rollup/pluginutils": ^4.2.0 - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/react": 7.1.0-alpha.17 + "@rollup/pluginutils": ^5.0.2 + "@storybook/builder-vite": "workspace:*" + "@storybook/react": "workspace:*" "@types/node": ^16.0.0 "@vitejs/plugin-react": ^3.0.1 ast-types: ^0.14.2 - magic-string: ^0.27.0 + magic-string: ^0.30.0 react-docgen: 6.0.0-alpha.3 typescript: ~4.9.3 vite: ^4.0.0 @@ -6759,16 +7566,16 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/react-webpack5@workspace:frameworks/react-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/preset-react-webpack": 7.1.0-alpha.17 - "@storybook/react": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/preset-react-webpack": "workspace:*" + "@storybook/react": "workspace:*" "@types/node": ^16.0.0 - jest-specific-snapshot: ^7.0.0 - typescript: ~4.9.3 + jest-specific-snapshot: ^8.0.0 peerDependencies: - "@babel/core": ^7.11.5 + "@babel/core": ^7.22.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: "*" peerDependenciesMeta: "@babel/core": optional: true @@ -6777,18 +7584,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/react@7.1.0-alpha.17, @storybook/react@workspace:*, @storybook/react@workspace:renderers/react": +"@storybook/react@workspace:*, @storybook/react@workspace:renderers/react": version: 0.0.0-use.local resolution: "@storybook/react@workspace:renderers/react" dependencies: - "@babel/core": ^7.20.2 - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@babel/core": ^7.22.9 + "@storybook/client-logger": "workspace:*" + "@storybook/core-client": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/react-dom-shim": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/react-dom-shim": "workspace:*" + "@storybook/types": "workspace:*" "@types/escodegen": ^0.0.6 "@types/estree": ^0.0.51 "@types/node": ^16.0.0 @@ -6796,21 +7603,21 @@ __metadata: acorn: ^7.4.1 acorn-jsx: ^5.3.1 acorn-walk: ^7.2.0 - escodegen: ^2.0.0 - expect-type: ^0.14.2 + escodegen: ^2.1.0 + expect-type: ^0.15.0 html-tags: ^3.1.0 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 lodash: ^4.17.21 prop-types: ^15.7.2 react-element-to-jsx-string: ^15.0.0 require-from-string: ^2.0.2 ts-dedent: ^2.0.0 - type-fest: ^2.19.0 - typescript: ~4.9.3 + type-fest: ~2.19 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: "*" peerDependenciesMeta: typescript: optional: true @@ -6821,18 +7628,15 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/root@workspace:." dependencies: - "@babel/core": ^7.20.2 - "@babel/preset-env": ^7.20.2 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.18.6 - "@babel/runtime": ^7.20.1 + "@babel/core": ^7.22.9 + "@babel/preset-env": ^7.22.9 + "@babel/preset-react": ^7.22.5 + "@babel/preset-typescript": ^7.22.5 + "@babel/runtime": ^7.22.6 "@emotion/jest": ^11.10.0 "@jest/globals": ^29.3.1 - "@linear/sdk": ^1.21.0 - "@nrwl/cli": ^15.4.5 - "@nrwl/nx-cloud": ^15.0.2 - "@nrwl/workspace": ^15.4.5 - "@playwright/test": 1.32.3 + "@nx/workspace": 16.2.1 + "@playwright/test": 1.36.0 "@storybook/addon-a11y": "workspace:*" "@storybook/addon-actions": "workspace:*" "@storybook/addon-backgrounds": "workspace:*" @@ -6884,7 +7688,7 @@ __metadata: "@storybook/html-vite": "workspace:*" "@storybook/html-webpack5": "workspace:*" "@storybook/instrumenter": "workspace:*" - "@storybook/jest": future + "@storybook/jest": next "@storybook/linter-config": ^3.1.2 "@storybook/manager": "workspace:*" "@storybook/manager-api": "workspace:*" @@ -6917,7 +7721,7 @@ __metadata: "@storybook/svelte": "workspace:*" "@storybook/svelte-webpack5": "workspace:*" "@storybook/telemetry": "workspace:*" - "@storybook/testing-library": future + "@storybook/testing-library": next "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" "@storybook/vue": "workspace:*" @@ -6946,39 +7750,39 @@ __metadata: "@typescript-eslint/experimental-utils": ^5.45.0 "@typescript-eslint/parser": ^5.45.0 "@vitejs/plugin-react": ^2.1.0 - babel-core: ^7.0.0-bridge.0 babel-eslint: ^10.1.0 babel-loader: ^9.1.2 chromatic: 6.11.2 concurrently: ^5.3.0 cross-env: ^7.0.3 - danger: ^10.6.2 - esbuild: ^0.17.0 + danger: ^11.2.6 + esbuild: ^0.18.0 esbuild-loader: ^3.0.0 esbuild-plugin-alias: ^0.2.1 eslint: ^8.28.0 eslint-import-resolver-typescript: ^3.5.2 eslint-plugin-import: ^2.26.0 + eslint-plugin-local-rules: "portal:../scripts/eslint-plugin-local-rules" eslint-plugin-react: ^7.31.10 eslint-plugin-storybook: ^0.6.6 fs-extra: ^11.1.0 github-release-from-changelog: ^2.1.1 glob: ^10.0.0 - http-server: ^0.12.3 + http-server: ^14.1.1 husky: ^4.3.7 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 jest-image-snapshot: ^6.0.0 - jest-junit: ^14.0.1 + jest-junit: ^16.0.0 jest-os-detection: ^1.3.1 jest-serializer-html: ^7.1.0 jest-watch-typeahead: ^2.2.1 lerna: ^6.4.0 - lint-staged: ^10.5.4 + lint-staged: ^13.2.2 lodash: ^4.17.21 - node-gyp: ^8.4.0 - nx: ^15.4.5 - playwright: 1.32.3 + node-gyp: ^9.3.1 + nx: 16.2.1 + nx-cloud: 16.0.5 prettier: 2.8.0 process: ^0.11.10 raf: ^3.4.1 @@ -6992,7 +7796,7 @@ __metadata: util: ^0.12.4 vite: ^4.0.0 vite-plugin-turbosnap: ^1.0.1 - wait-on: ^5.2.1 + wait-on: ^7.0.1 dependenciesMeta: ejs: built: false @@ -7012,11 +7816,11 @@ __metadata: languageName: unknown linkType: soft -"@storybook/router@7.1.0-alpha.17, @storybook/router@workspace:*, @storybook/router@workspace:lib/router": +"@storybook/router@workspace:*, @storybook/router@workspace:lib/router": version: 0.0.0-use.local resolution: "@storybook/router@workspace:lib/router" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" "@storybook/global": ^5.0.0 dequal: ^2.0.2 lodash: ^4.17.21 @@ -7035,10 +7839,10 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/server-webpack5@workspace:frameworks/server-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preset-server-webpack": 7.1.0-alpha.17 - "@storybook/server": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preset-server-webpack": "workspace:*" + "@storybook/server": "workspace:*" "@types/node": ^16.0.0 typescript: ~4.9.3 peerDependencies: @@ -7047,30 +7851,32 @@ __metadata: languageName: unknown linkType: soft -"@storybook/server@7.1.0-alpha.17, @storybook/server@workspace:*, @storybook/server@workspace:renderers/server": +"@storybook/server@workspace:*, @storybook/server@workspace:renderers/server": version: 0.0.0-use.local resolution: "@storybook/server@workspace:renderers/server" dependencies: - "@storybook/core-client": 7.1.0-alpha.17 + "@storybook/core-client": "workspace:*" "@storybook/csf": ^0.1.0 + "@storybook/csf-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" "@types/fs-extra": ^11.0.1 fs-extra: ^11.1.0 ts-dedent: ^2.0.0 typescript: ~4.9.3 + yaml: ^2.3.1 languageName: unknown linkType: soft -"@storybook/source-loader@7.1.0-alpha.17, @storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": +"@storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": version: 0.0.0-use.local resolution: "@storybook/source-loader@workspace:lib/source-loader" dependencies: "@storybook/csf": ^0.1.0 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/types": "workspace:*" estraverse: ^5.2.0 - jest-specific-snapshot: ^7.0.0 + jest-specific-snapshot: ^8.0.0 lodash: ^4.17.21 prettier: ^2.8.0 typescript: ~4.9.3 @@ -7080,33 +7886,32 @@ __metadata: languageName: unknown linkType: soft -"@storybook/store@7.1.0-alpha.17, @storybook/store@workspace:*, @storybook/store@workspace:lib/store": +"@storybook/store@workspace:*, @storybook/store@workspace:deprecated/store": version: 0.0.0-use.local - resolution: "@storybook/store@workspace:lib/store" + resolution: "@storybook/store@workspace:deprecated/store" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/preview-api": "workspace:*" languageName: unknown linkType: soft -"@storybook/svelte-vite@7.1.0-alpha.17, @storybook/svelte-vite@workspace:frameworks/svelte-vite": +"@storybook/svelte-vite@workspace:*, @storybook/svelte-vite@workspace:frameworks/svelte-vite": version: 0.0.0-use.local resolution: "@storybook/svelte-vite@workspace:frameworks/svelte-vite" dependencies: - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/svelte": 7.1.0-alpha.17 - "@sveltejs/vite-plugin-svelte": ^2.0.0 + "@storybook/builder-vite": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/svelte": "workspace:*" + "@sveltejs/vite-plugin-svelte": ^2.4.2 "@types/node": ^16.0.0 - magic-string: ^0.27.0 - svelte: ^3.0.0 + magic-string: ^0.30.0 + svelte: ^4.0.0 sveltedoc-parser: ^4.2.1 ts-dedent: ^2.2.0 typescript: ~4.9.3 vite: ^4.0.0 peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + svelte: ^3.0.0 || ^4.0.0 vite: ^3.0.0 || ^4.0.0 languageName: unknown linkType: soft @@ -7115,41 +7920,41 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/svelte-webpack5@workspace:frameworks/svelte-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preset-svelte-webpack": 7.1.0-alpha.17 - "@storybook/svelte": 7.1.0-alpha.17 - svelte: ^3.48.0 - svelte-loader: ^3.1.2 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preset-svelte-webpack": "workspace:*" + "@storybook/svelte": "workspace:*" + svelte: ^4.0.0 + svelte-loader: ^3.1.9 typescript: ~4.9.3 peerDependencies: "@babel/core": "*" react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - svelte: ^3.48.0 + svelte: ^3.48.0 || ^4.0.0 svelte-loader: "*" languageName: unknown linkType: soft -"@storybook/svelte@7.1.0-alpha.17, @storybook/svelte@workspace:*, @storybook/svelte@workspace:renderers/svelte": +"@storybook/svelte@workspace:*, @storybook/svelte@workspace:renderers/svelte": version: 0.0.0-use.local resolution: "@storybook/svelte@workspace:renderers/svelte" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/core-events": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/core-client": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 - expect-type: ^0.14.2 - svelte: ^3.31.2 - svelte-check: ^2.9.2 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" + expect-type: ^0.15.0 + svelte: ^4.0.0 + svelte-check: ^3.4.3 sveltedoc-parser: ^4.2.1 - type-fest: 2.19.0 - typescript: ~4.9.3 + type-fest: ~2.19 + typescript: ^5.0.4 peerDependencies: - svelte: ^3.1.0 + svelte: ^3.1.0 || ^4.0.0 languageName: unknown linkType: soft @@ -7157,48 +7962,48 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/sveltekit@workspace:frameworks/sveltekit" dependencies: - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/svelte": 7.1.0-alpha.17 - "@storybook/svelte-vite": 7.1.0-alpha.17 + "@storybook/builder-vite": "workspace:*" + "@storybook/svelte": "workspace:*" + "@storybook/svelte-vite": "workspace:*" "@types/node": ^16.0.0 typescript: ^4.9.3 vite: ^4.0.0 peerDependencies: + svelte: ^3.0.0 || ^4.0.0 vite: ^4.0.0 languageName: unknown linkType: soft -"@storybook/telemetry@7.1.0-alpha.17, @storybook/telemetry@workspace:*, @storybook/telemetry@workspace:lib/telemetry": +"@storybook/telemetry@workspace:*, @storybook/telemetry@workspace:lib/telemetry": version: 0.0.0-use.local resolution: "@storybook/telemetry@workspace:lib/telemetry" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/csf-tools": "workspace:*" chalk: ^4.1.0 detect-package-manager: ^2.0.1 fetch-retry: ^5.0.2 fs-extra: ^11.1.0 - isomorphic-unfetch: ^3.1.0 - nanoid: ^3.3.1 + nanoid: ^4.0.2 + node-fetch: ^3.3.1 read-pkg-up: ^7.0.1 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/testing-library@npm:future": - version: 0.1.1-future.0 - resolution: "@storybook/testing-library@npm:0.1.1-future.0" +"@storybook/testing-library@npm:next": + version: 0.2.1-next.0 + resolution: "@storybook/testing-library@npm:0.2.1-next.0" dependencies: - "@storybook/client-logger": future - "@storybook/instrumenter": future - "@testing-library/dom": ^8.3.0 - "@testing-library/user-event": ^13.2.1 + "@testing-library/dom": ^9.0.0 + "@testing-library/user-event": ^14.0.0 ts-dedent: ^2.2.0 - checksum: 5347e2ba663f26eb6a7b00a3a802c36368fcbcd686108d534d07824ca03f8f51bd75d15502217f1a9706728964bd35974cd2e0b6e176a3bf5784132274102111 + checksum: c63e90f856505ee737bd7feb7b688c5bb5918f39c8088e85e40c6ee7ffcbb038e31d59904e3bd1a79267282f919a95ae060ab73f7af133c6f08ef0ee47ace80b languageName: node linkType: hard -"@storybook/theming@7.1.0-alpha.17, @storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": +"@storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": version: 0.0.0-use.local resolution: "@storybook/theming@workspace:lib/theming" dependencies: @@ -7207,7 +8012,7 @@ __metadata: "@emotion/react": ^11.10.4 "@emotion/styled": ^11.10.4 "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" "@storybook/global": ^5.0.0 "@types/fs-extra": ^11.0.1 "@types/node": ^16.0.0 @@ -7223,41 +8028,30 @@ __metadata: languageName: unknown linkType: soft -"@storybook/types@7.1.0-alpha.17, @storybook/types@workspace:*, @storybook/types@workspace:lib/types": +"@storybook/types@workspace:*, @storybook/types@workspace:lib/types": version: 0.0.0-use.local resolution: "@storybook/types@workspace:lib/types" dependencies: - "@storybook/channels": 7.1.0-alpha.17 + "@storybook/channels": "workspace:*" "@storybook/csf": ^0.1.0 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 "@types/node": ^16.0.0 - file-system-cache: ^2.0.0 + "@types/react": ^16.14.34 + file-system-cache: 2.3.0 typescript: ~4.9.3 languageName: unknown linkType: soft -"@storybook/types@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/types@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - file-system-cache: ^2.0.0 - checksum: c3ac627ef7aafc53850a6a920538886a55bd07c3e201f76c5b75987a0d03f7786623b5bb89f42a6838ce6688525967601d108e42facf4dd7ae0cf99899ba9072 - languageName: node - linkType: hard - "@storybook/vue-vite@workspace:frameworks/vue-vite": version: 0.0.0-use.local resolution: "@storybook/vue-vite@workspace:frameworks/vue-vite" dependencies: - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/vue": 7.1.0-alpha.17 - magic-string: ^0.27.0 + "@storybook/builder-vite": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/vue": "workspace:*" + magic-string: ^0.30.0 typescript: ~4.9.3 vite: ^4.0.0 vue: ^2.7.10 @@ -7274,10 +8068,10 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/vue-webpack5@workspace:frameworks/vue-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preset-vue-webpack": 7.1.0-alpha.17 - "@storybook/vue": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preset-vue-webpack": "workspace:*" + "@storybook/vue": "workspace:*" "@types/node": ^16.0.0 typescript: ~4.9.3 vue: ^2.6.12 @@ -7299,12 +8093,12 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/vue3-vite@workspace:frameworks/vue3-vite" dependencies: - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/vue3": 7.1.0-alpha.17 + "@storybook/builder-vite": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/vue3": "workspace:*" "@types/node": ^16.0.0 "@vitejs/plugin-vue": ^4.0.0 - magic-string: ^0.27.0 + magic-string: ^0.30.0 typescript: ~4.9.3 vite: ^4.0.0 vue-docgen-api: ^4.40.0 @@ -7319,10 +8113,10 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/vue3-webpack5@workspace:frameworks/vue3-webpack5" dependencies: - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preset-vue3-webpack": 7.1.0-alpha.17 - "@storybook/vue3": 7.1.0-alpha.17 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preset-vue3-webpack": "workspace:*" + "@storybook/vue3": "workspace:*" "@types/node": ^16.0.0 "@vue/compiler-sfc": 3.0.0 typescript: ~4.9.3 @@ -7337,43 +8131,47 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue3@7.1.0-alpha.17, @storybook/vue3@workspace:*, @storybook/vue3@workspace:renderers/vue3": +"@storybook/vue3@workspace:*, @storybook/vue3@workspace:renderers/vue3": version: 0.0.0-use.local resolution: "@storybook/vue3@workspace:renderers/vue3" dependencies: "@digitak/esrun": ^3.2.2 - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/core-client": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" "@types/prettier": 2.7.2 + "@vue/compiler-core": ^3.3.4 "@vue/vue3-jest": 29 + lodash: ^4.17.21 ts-dedent: ^2.0.0 - type-fest: 2.19.0 + type-fest: ~2.19 typescript: ~4.9.3 vue: ^3.2.47 - vue-tsc: ^1.2.0 + vue-component-type-helpers: latest + vue-tsc: latest peerDependencies: + "@vue/compiler-core": ^3.0.0 vue: ^3.0.0 languageName: unknown linkType: soft -"@storybook/vue@7.1.0-alpha.17, @storybook/vue@workspace:*, @storybook/vue@workspace:renderers/vue": +"@storybook/vue@workspace:*, @storybook/vue@workspace:renderers/vue": version: 0.0.0-use.local resolution: "@storybook/vue@workspace:renderers/vue" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/core-client": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" ts-dedent: ^2.0.0 - type-fest: 2.19.0 + type-fest: ~2.19 typescript: ~4.9.3 vue: 2.6.14 - vue-tsc: ^1.0.9 + vue-tsc: latest peerDependencies: "@babel/core": "*" babel-loader: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -7389,12 +8187,12 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/web-components-vite@workspace:frameworks/web-components-vite" dependencies: - "@storybook/builder-vite": 7.1.0-alpha.17 - "@storybook/core-server": 7.1.0-alpha.17 - "@storybook/node-logger": 7.1.0-alpha.17 - "@storybook/web-components": 7.1.0-alpha.17 + "@storybook/builder-vite": "workspace:*" + "@storybook/core-server": "workspace:*" + "@storybook/node-logger": "workspace:*" + "@storybook/web-components": "workspace:*" "@types/node": ^16.0.0 - magic-string: ^0.27.0 + magic-string: ^0.30.0 typescript: ~4.9.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7406,11 +8204,11 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/web-components-webpack5@workspace:frameworks/web-components-webpack5" dependencies: - "@babel/preset-env": ^7.20.2 - "@storybook/builder-webpack5": 7.1.0-alpha.17 - "@storybook/core-common": 7.1.0-alpha.17 - "@storybook/preset-web-components-webpack": 7.1.0-alpha.17 - "@storybook/web-components": 7.1.0-alpha.17 + "@babel/preset-env": ^7.22.9 + "@storybook/builder-webpack5": "workspace:*" + "@storybook/core-common": "workspace:*" + "@storybook/preset-web-components-webpack": "workspace:*" + "@storybook/web-components": "workspace:*" "@types/node": ^16.0.0 lit: 2.3.1 typescript: ~4.9.3 @@ -7421,21 +8219,22 @@ __metadata: languageName: unknown linkType: soft -"@storybook/web-components@7.1.0-alpha.17, @storybook/web-components@workspace:*, @storybook/web-components@workspace:renderers/web-components": +"@storybook/web-components@workspace:*, @storybook/web-components@workspace:renderers/web-components": version: 0.0.0-use.local resolution: "@storybook/web-components@workspace:renderers/web-components" dependencies: - "@storybook/client-logger": 7.1.0-alpha.17 - "@storybook/core-client": 7.1.0-alpha.17 - "@storybook/docs-tools": 7.1.0-alpha.17 + "@storybook/client-logger": "workspace:*" + "@storybook/core-client": "workspace:*" + "@storybook/docs-tools": "workspace:*" "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.1.0-alpha.17 - "@storybook/preview-api": 7.1.0-alpha.17 - "@storybook/types": 7.1.0-alpha.17 + "@storybook/manager-api": "workspace:*" + "@storybook/preview-api": "workspace:*" + "@storybook/types": "workspace:*" "@types/cross-spawn": ^6.0.2 "@types/node": ^16.0.0 cross-spawn: ^7.0.3 lit: 2.3.1 + tiny-invariant: ^1.3.1 ts-dedent: ^2.0.0 typescript: ~4.9.3 web-component-analyzer: ^1.1.6 @@ -7451,107 +8250,123 @@ __metadata: languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte@npm:^2.0.0": - version: 2.0.4 - resolution: "@sveltejs/vite-plugin-svelte@npm:2.0.4" +"@sveltejs/vite-plugin-svelte-inspector@npm:^1.0.3": + version: 1.0.3 + resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:1.0.3" + dependencies: + debug: ^4.3.4 + peerDependencies: + "@sveltejs/vite-plugin-svelte": ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + checksum: a64f9a8742cde3f601f6480b56128df8cab553043deab1f96884e34f153ca5020233348ce7ba624900d26b0da4324fef82f4b6a3deec33f9eca7f5938c33c1d7 + languageName: node + linkType: hard + +"@sveltejs/vite-plugin-svelte@npm:^2.4.2": + version: 2.4.3 + resolution: "@sveltejs/vite-plugin-svelte@npm:2.4.3" dependencies: + "@sveltejs/vite-plugin-svelte-inspector": ^1.0.3 debug: ^4.3.4 deepmerge: ^4.3.1 kleur: ^4.1.5 - magic-string: ^0.30.0 - svelte-hmr: ^0.15.1 + magic-string: ^0.30.1 + svelte-hmr: ^0.15.2 vitefu: ^0.2.4 peerDependencies: - svelte: ^3.54.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 - checksum: 14816301f3038365f6ab5b839273b075599420dc515383c4ccca1c5c55e9be5773e5b1021c5900a1cf26d741c6304d2fe788c1e9c07ef1fd56baf665f29de513 + checksum: 2825f9b9625d5e1ac04f901dbeef9b9e1f6c2001f72d05b85f3d30d5d0c4eb68320901d9e06ee7b0ab842d042400ca65e88e054ef12e25ab1aa9a8710dde54d1 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-darwin-arm64@npm:1.3.44" +"@swc/core-darwin-arm64@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-darwin-arm64@npm:1.3.71" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-darwin-x64@npm:1.3.44" +"@swc/core-darwin-x64@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-darwin-x64@npm:1.3.71" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.44" +"@swc/core-linux-arm-gnueabihf@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.71" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.44" +"@swc/core-linux-arm64-gnu@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.71" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.44" +"@swc/core-linux-arm64-musl@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.71" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.44" +"@swc/core-linux-x64-gnu@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.71" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-x64-musl@npm:1.3.44" +"@swc/core-linux-x64-musl@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-linux-x64-musl@npm:1.3.71" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.44" +"@swc/core-win32-arm64-msvc@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.71" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.44" +"@swc/core-win32-ia32-msvc@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.71" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.44" +"@swc/core-win32-x64-msvc@npm:1.3.71": + version: 1.3.71 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.71" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:^1.3.23": - version: 1.3.44 - resolution: "@swc/core@npm:1.3.44" +"@swc/core@npm:^1.3.23, @swc/core@npm:^1.3.49": + version: 1.3.71 + resolution: "@swc/core@npm:1.3.71" dependencies: - "@swc/core-darwin-arm64": 1.3.44 - "@swc/core-darwin-x64": 1.3.44 - "@swc/core-linux-arm-gnueabihf": 1.3.44 - "@swc/core-linux-arm64-gnu": 1.3.44 - "@swc/core-linux-arm64-musl": 1.3.44 - "@swc/core-linux-x64-gnu": 1.3.44 - "@swc/core-linux-x64-musl": 1.3.44 - "@swc/core-win32-arm64-msvc": 1.3.44 - "@swc/core-win32-ia32-msvc": 1.3.44 - "@swc/core-win32-x64-msvc": 1.3.44 + "@swc/core-darwin-arm64": 1.3.71 + "@swc/core-darwin-x64": 1.3.71 + "@swc/core-linux-arm-gnueabihf": 1.3.71 + "@swc/core-linux-arm64-gnu": 1.3.71 + "@swc/core-linux-arm64-musl": 1.3.71 + "@swc/core-linux-x64-gnu": 1.3.71 + "@swc/core-linux-x64-musl": 1.3.71 + "@swc/core-win32-arm64-msvc": 1.3.71 + "@swc/core-win32-ia32-msvc": 1.3.71 + "@swc/core-win32-x64-msvc": 1.3.71 + peerDependencies: + "@swc/helpers": ^0.5.0 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -7573,28 +8388,40 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 22c94f315e96d96a85aebc12390a9f6c214c00b76783896c2d09669d84befd5752dbceaa6373fb5985373293a099c4bd3ac5f20be424caf05e2742311beba4f7 + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: f3d5fcb64056c893cd4cd108281515e843e1cbfbba6de2fa1c906f1d5cab3f25a9b6c2ad82e29c938fe031ee4b46e7162358eedf40c17569729a1f5f71768bf9 languageName: node linkType: hard -"@swc/helpers@npm:0.4.14": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" +"@swc/helpers@npm:0.5.1": + version: 0.5.1 + resolution: "@swc/helpers@npm:0.5.1" dependencies: tslib: ^2.4.0 - checksum: a8bd2e291fca73aa35ff316fb1aa9fb9554856518c8bf64ab5a355fb587d79d04d67f95033012fcdc94f507d22484871d95dc72efdd9ff13cc5d0ac68dfba999 + checksum: 2e2272c8278351670e1daf27cc634ace793afb378dcc85be2800d30a7b4d3afad37707371ead2a6d96662fa30294da678d66cdc4dc7f3e698bd8e111235c60fc languageName: node linkType: hard "@swc/jest@npm:^0.2.26": - version: 0.2.26 - resolution: "@swc/jest@npm:0.2.26" + version: 0.2.27 + resolution: "@swc/jest@npm:0.2.27" dependencies: "@jest/create-cache-key-function": ^27.4.2 jsonc-parser: ^3.2.0 peerDependencies: "@swc/core": "*" - checksum: 98184f5412174cd56a3be400bb676750373940169b865f1d739f5debeb56864801e7ed65f8a20ae90d9a42434a91644f86b9677a60d14c4bbdf23dee737977f0 + checksum: fe996de5890e8d74aecbb4992b56d52fb1d584bfdb1ef4bcebe3d1a9690d804a95550e77dfe6b45a5f84acb137ed6f42c996e25a165aed07746094b67383d41a + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: ^2.0.0 + checksum: 73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f languageName: node linkType: hard @@ -7614,25 +8441,25 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^8.3.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" +"@testing-library/dom@npm:^9.0.0": + version: 9.3.1 + resolution: "@testing-library/dom@npm:9.3.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 "@types/aria-query": ^5.0.1 - aria-query: ^5.0.0 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 454c71f65708d1504256ae055f060adf8ed9eadcc7ddbf6d07a528045beceb842783c1253871759f5c137eca58e5e32700dc64b130cbb37e10e7a52ab08d7b44 + checksum: 25d1deddba014c107fd9703181fbb7063ed376d3ad42d7918ee752e7e677edfb5abaf672b22afc5257ffe760c9c7e5cc981656297c328bc61578d23c6b65b4dc languageName: node linkType: hard "@testing-library/jest-dom@npm:^5.11.9, @testing-library/jest-dom@npm:^5.16.2": - version: 5.16.5 - resolution: "@testing-library/jest-dom@npm:5.16.5" + version: 5.17.0 + resolution: "@testing-library/jest-dom@npm:5.17.0" dependencies: "@adobe/css-tools": ^4.0.1 "@babel/runtime": ^7.9.2 @@ -7643,7 +8470,7 @@ __metadata: dom-accessibility-api: ^0.5.6 lodash: ^4.17.15 redent: ^3.0.0 - checksum: 0925fda78096cca355d164d5358b84b9371c4fb6ba60ce60c2263446ac6d9c6aaca75e2792cdb42699fe78c379924c53db672a3510361b577ebb89a0c6e1c629 + checksum: 24e09c5779ea44644945ec26f2e4e5f48aecfe57d469decf2317a3253a5db28d865c55ad0ea4818d8d1df7572a6486c45daa06fa09644a833a7dd84563881939 languageName: node linkType: hard @@ -7671,10 +8498,12 @@ __metadata: languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: 8fe4d006e90422883a4fa9339dd05a83ff626806262e1710cee5758d493e8cbddf2db81c0e4690636dc840b02c9fda62877866ea774ebd07c1777ed5fafbdec6 +"@testing-library/user-event@npm:^14.0.0": + version: 14.4.3 + resolution: "@testing-library/user-event@npm:14.4.3" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 28e1e4ed2fdaa9486e203c6789386be228e305abd3fa41f38c828af415fd4a4e80f4de88de0e502ff11c4b4926f221b874a2a45bcc8170d30714e12dad2c1bd0 languageName: node linkType: hard @@ -7707,9 +8536,9 @@ __metadata: linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.3 - resolution: "@tsconfig/node16@npm:1.0.3" - checksum: 451a0d4b2bc35c2cdb30a49b6c699d797b8bbac99b883237659698678076d4193050d90e2ee36016ccbca57075cdb073cadab38cedc45119bac68ab331958cbc + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb languageName: node linkType: hard @@ -7720,22 +8549,13 @@ __metadata: languageName: node linkType: hard -"@tufjs/models@npm:1.0.1": - version: 1.0.1 - resolution: "@tufjs/models@npm:1.0.1" - dependencies: - minimatch: ^7.4.2 - checksum: f9b7f0d06f54dfc27dd6d492674c11d87c38239714ad6edf2a845770cf5f1f0f4921ef6974041a8aeb1923a50598639579498ed5130e1e43bcefa8015b41e7da - languageName: node - linkType: hard - -"@tufjs/models@npm:1.0.3": - version: 1.0.3 - resolution: "@tufjs/models@npm:1.0.3" +"@tufjs/models@npm:1.0.4": + version: 1.0.4 + resolution: "@tufjs/models@npm:1.0.4" dependencies: "@tufjs/canonical-json": 1.0.0 - minimatch: ^7.4.6 - checksum: b2439190e00d34f4948a55c1f53b03dc47e9bb9a08a255fc5eee2b9bb6ce0f5a05458e604f41e3ea30fab1d399e3320724928bef77878c969c655c06c6679ba1 + minimatch: ^9.0.0 + checksum: 99bcfa6ecd642861a21e4874c4a687bb57f7c2ab7e10c6756b576c2fa4a6f2be3d21ba8e76334f11ea2846949b514b10fa59584aaee0a100e09e9263114b635b languageName: node linkType: hard @@ -7763,15 +8583,15 @@ __metadata: linkType: hard "@types/babel__core@npm:^7, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" + version: 7.20.1 + resolution: "@types/babel__core@npm:7.20.1" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 75dcd39258bc008b6fd4db7de2c8bfeb29b5cd2c726f54407f70243ddea1d8ce9e7082281557614c4a5f9f30d478387ca6ab6cc576fc829cebeb159bfaa8799f + checksum: c83402fc7ef8abd1f94ffe350b8bde9a35ccb6c3624bc8e39b6a7e1a675d112f6b70ac1b05391a579ca3b126baffe66b0b94f954edef086c4482b97d293c3659 languageName: node linkType: hard @@ -7809,11 +8629,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.18.3 - resolution: "@types/babel__traverse@npm:7.18.3" + version: 7.20.1 + resolution: "@types/babel__traverse@npm:7.20.1" dependencies: - "@babel/types": ^7.3.0 - checksum: 4214fd3e95925d9a7efa01142969a310263430d4f5de89be6c9c193110666677415161b474fa627d751dfd0f1eb7dc1c84c48f8b53098625c6bc78917683215a + "@babel/types": ^7.20.7 + checksum: 5a6a3a26be090573309527184a31f1b82ef55f3d73d811c15f181d323e471305f2390651a04d49d4cd4ca41bbeabb53c9f7862a8e09eab5a0f8910a6aec6e867 languageName: node linkType: hard @@ -7836,6 +8656,18 @@ __metadata: languageName: node linkType: hard +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": ^3.1.4 + "@types/node": "*" + "@types/responselike": ^1.0.0 + checksum: 10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03 + languageName: node + linkType: hard + "@types/cheerio@npm:^0.22.22": version: 0.22.31 resolution: "@types/cheerio@npm:0.22.31" @@ -7871,12 +8703,12 @@ __metadata: linkType: hard "@types/connect-history-api-fallback@npm:^1.3.5": - version: 1.3.5 - resolution: "@types/connect-history-api-fallback@npm:1.3.5" + version: 1.5.0 + resolution: "@types/connect-history-api-fallback@npm:1.5.0" dependencies: "@types/express-serve-static-core": "*" "@types/node": "*" - checksum: 06217360db2665fe31351f98d95c1efdbf3919403e748d3a6b4377a79704ef524765ba2ccf499daa9b30fcbe5ef9d08988aee773e89a4998cf47e3800c95b635 + checksum: 176362698eb68cfbd0517c015fc089fd764d5d35f07230238bb57f833d24a4737f46b4d78dfc225809e7324729d360b831567d1dff17639d576ad85f5b86743d languageName: node linkType: hard @@ -7899,18 +8731,18 @@ __metadata: linkType: hard "@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" + version: 4.1.8 + resolution: "@types/debug@npm:4.1.8" dependencies: "@types/ms": "*" - checksum: 742b752b60e14a752d9bf172e64f28e172f630b9933e763d2b54c7c8c1f33b99b1ef067d7312665a4d0539d8df7ea3eb664a8039f900e4b8234c647a569d123a + checksum: 913aea60b8c94cd0009bbdd531d8a3594ec3275ca0e8d1cbcf783417884252b3c53113f6665fd2fb0076b8ce628ee12cd083d2af107ed26c0f2e75852d8bc074 languageName: node linkType: hard "@types/detect-port@npm:^1.3.0": - version: 1.3.2 - resolution: "@types/detect-port@npm:1.3.2" - checksum: 4c9ab349b8724e32879c1d241c374e674ce040783dc6768b19d844afff011d1a70adaaf93bf96e1ed33eef9c88cc6c27ce7dce82a1cec8c6e9992ae445a5a255 + version: 1.3.3 + resolution: "@types/detect-port@npm:1.3.3" + checksum: 27c8000e3d41fd1158e2213b31c90b63852299ed66e4604b028a7146519530ab129b8ff867db02b06a32f61e7764f8d5aff0c44c5f543ce2b4b035e5968b62e1 languageName: node linkType: hard @@ -7928,6 +8760,13 @@ __metadata: languageName: node linkType: hard +"@types/emscripten@npm:^1.39.6": + version: 1.39.6 + resolution: "@types/emscripten@npm:1.39.6" + checksum: cb1ea8ccddada1d304bdf11a54daa0d1e87f29cea947eceff54c1e0a752d2cc185eeffdcf52042f24420aa8e1fa9bbfdbab1231fb2531eefcfdc788199fee2de + languageName: node + linkType: hard + "@types/escodegen@npm:^0.0.6": version: 0.0.6 resolution: "@types/escodegen@npm:0.0.6" @@ -7946,12 +8785,12 @@ __metadata: linkType: hard "@types/eslint@npm:*": - version: 8.37.0 - resolution: "@types/eslint@npm:8.37.0" + version: 8.44.1 + resolution: "@types/eslint@npm:8.44.1" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: b23b7e43f07f9e12551fae9ab02e242705d3d385fecac1a05f9369b5ee8c06167768ce8f9a828582a07e9a7cbcae7270278a4579fb45733f43d5b02853831cf9 + checksum: c71ac01bce467ab394c86154d1dee92fc46e33c8515036ecb8cde6a1f48ad9497909efe370c96136193d74007b02b8cd89fb91175b256771296e6b822ee6237f languageName: node linkType: hard @@ -7965,9 +8804,9 @@ __metadata: linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 4e73ff606bf7c7ccdaa66092de650c410a4ad2ecc388fdbed8242cac9dbcad72407e1ceff041b7da691babb02ff74ab885d6231fb09368fdd1eabbf1b5253d49 + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: b4022067f834d86766f23074a1a7ac6c460e823b00cd8fe94c997bc491e7794615facd3e1520a934c42bd8c0689dbff81e5c643b01f1dee143fc758cac19669e languageName: node linkType: hard @@ -7979,13 +8818,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": - version: 4.17.33 - resolution: "@types/express-serve-static-core@npm:4.17.33" + version: 4.17.35 + resolution: "@types/express-serve-static-core@npm:4.17.35" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - checksum: 68f21adeb8cb7085014692daa8fd75b33be2cbb91f954f42fef4804e04cb34abbe8020918d7656243afec4882949ce0c4e8074eaf5a5f8dfbef704690799724a + "@types/send": "*" + checksum: 08db6ffff07b5d53d852bb0a078ea5ee6dc3eb581d8c8fdf0d65f48c641db2830658074c797844e618b0933ce4ca2ddd08191f9d79b12eb2ec3d66f8551716ec languageName: node linkType: hard @@ -8036,17 +8876,7 @@ __metadata: languageName: node linkType: hard -"@types/glob@npm:*": - version: 8.1.0 - resolution: "@types/glob@npm:8.1.0" - dependencies: - "@types/minimatch": ^5.1.2 - "@types/node": "*" - checksum: ded07aa0d7a1caf3c47b85e262be82989ccd7933b4a14712b79c82fd45a239249811d9fc3a135b3e9457afa163e74a297033d7245b0dc63cd3d032f3906b053f - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3": +"@types/glob@npm:*, @types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" dependencies: @@ -8066,11 +8896,11 @@ __metadata: linkType: hard "@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" + version: 2.3.5 + resolution: "@types/hast@npm:2.3.5" dependencies: - "@types/unist": "*" - checksum: 635cfe9a8e91f6b3c15c9929455d0136ac4d75c5b7f596ce21b453cecdfda785e89b10eb2b2d9da9d43e548b1d65ba3e20c741bbaf83823575c9c45001ade4bb + "@types/unist": ^2 + checksum: 3fc5185e7fb5139a4f60f0d4450179c1f88b7e288a054415b273e4a32f0c4cfe825a4cad075824dcdf3984609b47f13141f8900dedb3aeab482ae5a16275e807 languageName: node linkType: hard @@ -8081,12 +8911,26 @@ __metadata: languageName: node linkType: hard +"@types/http-cache-semantics@npm:*": + version: 4.0.1 + resolution: "@types/http-cache-semantics@npm:4.0.1" + checksum: 6d6068110a04cac213bdc0fff9c7bac028b5a2da390492204328987d8ddc500adc10d9cf5747a6333dab261712655dcfe120ea1d5527c205d012a39cdccc2a7b + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.1 + resolution: "@types/http-errors@npm:2.0.1" + checksum: 3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 + languageName: node + linkType: hard + "@types/http-proxy@npm:^1.17.8": - version: 1.17.10 - resolution: "@types/http-proxy@npm:1.17.10" + version: 1.17.11 + resolution: "@types/http-proxy@npm:1.17.11" dependencies: "@types/node": "*" - checksum: bac48476cf4d1f65f09f5cf11b3a76604bd2561c0324098fc6d4d74410e6f26e2eac92bcf613f54a2c742d0c015f25dbcff4409050d5773d9389c8e5b7d64473 + checksum: 0af1bed7c1eaace924b8a316a718a702d40882dc541320ca1629c7f4ee852ef4dbef1963d4cb9e523b59dbe4d7f07e37def38b15e8ebb92d5b569b800b1c2bf7 languageName: node linkType: hard @@ -8124,14 +8968,14 @@ __metadata: languageName: node linkType: hard -"@types/jest-image-snapshot@npm:^5.1.0": - version: 5.1.0 - resolution: "@types/jest-image-snapshot@npm:5.1.0" +"@types/jest-image-snapshot@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/jest-image-snapshot@npm:6.1.0" dependencies: "@types/jest": "*" "@types/pixelmatch": "*" ssim.js: ^3.1.1 - checksum: c25db75b38960a84cc999a8b07f6f244d22e5e2c9965f78dc15c4249ec71a403363a50ee69884cdf66fcaf5a9ef125363316929fa1925d38868b3937c110138b + checksum: f811e9d49c1600ed85745bb5be3b0bb0c6da719eb761d62fa6f21214ca6e0ad822bc3643e7ab7260452e180dbabc2530661eb10688e49de2cb2c950bd2252ccf languageName: node linkType: hard @@ -8145,19 +8989,19 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:>=26.0.0": - version: 29.5.0 - resolution: "@types/jest@npm:29.5.0" + version: 29.5.3 + resolution: "@types/jest@npm:29.5.3" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: e77f88cbdf867838320767bf42915570bcebbf7c378578d60654b9ea8c15981b6c2c06e4e56985e35467d0cdb673d9129fd49e21a485fda9db4bb0a152f2cb86 + checksum: ba5a28569368db62eeff85ea53661c7dff79a5be739a59926c37868888cc69f8b7d0c7c6209139ecca5b83056843ba67fa764f7e7fc9c8d1c4e1f80351ede0f4 languageName: node linkType: hard -"@types/js-yaml@npm:^3.12.6": - version: 3.12.7 - resolution: "@types/js-yaml@npm:3.12.7" - checksum: 7df8078fb1783e04f6b24b97378ec396359d81bda4fe9cf352ec35bb055b3d4034854582f9b337d5d7a946c622265f422aca7f61bf872e2acaed07f317bedb06 +"@types/js-yaml@npm:^4.0.5": + version: 4.0.5 + resolution: "@types/js-yaml@npm:4.0.5" + checksum: 37eb783b16f1704d26bbf83b35cf5d12f6018c18f2c9232515468ac60a4c5b71b6344a7b872545eeca3dfd66bb17e2bb1e611646cc727d7c6a001165a4ec0a32 languageName: node linkType: hard @@ -8171,17 +9015,6 @@ __metadata: languageName: node linkType: hard -"@types/jsdom@npm:^16.2.4": - version: 16.2.15 - resolution: "@types/jsdom@npm:16.2.15" - dependencies: - "@types/node": "*" - "@types/parse5": ^6.0.3 - "@types/tough-cookie": "*" - checksum: d4ea8dc4568ba5cf37c3c246be360d45758d47ff056ca1321e23f5ff680dc63177ec78f9a82218d2f3c936ca458ea056c05ff37a2c5abca28410bd0120763ea7 - languageName: node - linkType: hard - "@types/jsdom@npm:^20.0.0": version: 20.0.1 resolution: "@types/jsdom@npm:20.0.1" @@ -8194,9 +9027,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: bd1f9a7b898ff15c4bb494eb19124f2d688b804c39f07cbf135ac73f35324970e9e8329b72aae1fb543d925ea295a1568b23056c26658cecec4741fa28c3b81a + version: 7.0.12 + resolution: "@types/json-schema@npm:7.0.12" + checksum: 2c39946ae321fe42d085c61a85872a81bbee70f9b2054ad344e8811dfc478fdbaf1ebf5f2989bb87c895ba2dfc3b1dcba85db11e467bbcdc023708814207791c languageName: node linkType: hard @@ -8216,26 +9049,35 @@ __metadata: languageName: node linkType: hard +"@types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "*" + checksum: ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.167": - version: 4.14.192 - resolution: "@types/lodash@npm:4.14.192" - checksum: 6807402e293cb943808a444d1ef514ce13de4f870b3b382fe729f8235ea280c4d037b9514443723afd3d04b2cf9e8f1b3fc0075d947edfeb1078347dc2b471b0 + version: 4.14.195 + resolution: "@types/lodash@npm:4.14.195" + checksum: 6d733276df592614a0943a0053056140398b3c263cdf2557d4301b3a47b07ff561926cb9339a4725acbc7d8766f91ded218df11e0a4288cee369eafb5141d94d languageName: node linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.11 - resolution: "@types/mdast@npm:3.0.11" + version: 3.0.12 + resolution: "@types/mdast@npm:3.0.12" dependencies: - "@types/unist": "*" - checksum: 569ec32ac16deb42f2c9e7cdbfb5be0f67d2407036b49ba9cfa07ad0258b044c259922acba170eaed165ebcf5eb168032fbb4b3e35023fe8c581fe46e9bcbad0 + "@types/unist": ^2 + checksum: b5af41e4f19a149eba58cde8ccacc36117640aefe28966637c54c27a8fbcfa3972e88cafd859c7bf39cd5c4e965e4196169001beac4a1980cfee6b08eea896a6 languageName: node linkType: hard "@types/mdx@npm:^2.0.0": - version: 2.0.4 - resolution: "@types/mdx@npm:2.0.4" - checksum: f7c960dfb971ad1efe7fa9402ef7fb6368951c1e95e0a2acb2a422bf61a482e3c4bbbbaca1079fa850aad803ad44a7edcfcd79da9d18a5472c3dba78411e2e8d + version: 2.0.5 + resolution: "@types/mdx@npm:2.0.5" + checksum: f46932365a24ad6927dd87678598b839fa64ef8c9d0714b45a0185ac52427b374899ba96022f97330b27aca3572a6815f844cf345a50b9c0c483f485c243eda1 languageName: node linkType: hard @@ -8253,7 +9095,14 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:*, @types/minimatch@npm:^5.1.2": +"@types/mime@npm:^1": + version: 1.3.2 + resolution: "@types/mime@npm:1.3.2" + checksum: 61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 + languageName: node + linkType: hard + +"@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" checksum: 83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 @@ -8290,27 +9139,20 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.5.7": - version: 2.6.3 - resolution: "@types/node-fetch@npm:2.6.3" +"@types/node-fetch@npm:^2.5.7, @types/node-fetch@npm:^2.6.4": + version: 2.6.4 + resolution: "@types/node-fetch@npm:2.6.4" dependencies: "@types/node": "*" form-data: ^3.0.0 - checksum: ce1a546d9a6f8df1c937f3c06ad85b57d92974a5feccc3502d13c0fc76c83629cd3f3f255dee03e5050abf90d0871f06628863ae758b70697af8b39cdd2e1c01 - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:>= 8": - version: 18.15.11 - resolution: "@types/node@npm:18.15.11" - checksum: 670deb1a9daa812dc86b1e8964c0c6b0bef7c32672833c10578c1e5dd2682f2bd99b86d814fde86a5dd4a3da48ea039f41db30a835b245aa7c34c62fa1f23f0d + checksum: e43e4670ed8b7693dbf660ac1450b14fcfcdd8efca1eb0f501b6ad95af2d1fa06f8541db03e9511e82a5fee510a238fe0913330c9a58f8ac6892b985f6dd993e languageName: node linkType: hard -"@types/node@npm:^16.0.0": - version: 16.18.23 - resolution: "@types/node@npm:16.18.23" - checksum: 01cd6b3046273e1796bba0fb4bf8acff263212d16753385378952e77d239eb4b9535ff0c2427d751cb413c4883248475706e3115795c27be41176f0a7b8fccc8 +"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^16.0.0": + version: 16.18.39 + resolution: "@types/node@npm:16.18.39" + checksum: b33fca5a89affdd9b59bc4475ea010c547abb5742ab13918a441fb4ddbb7fbd58d0b04ec1b51bf4f0c4e8228022c9d9aedde34627c6e2b2754462fed507f7ad9 languageName: node linkType: hard @@ -8328,13 +9170,6 @@ __metadata: languageName: node linkType: hard -"@types/overlayscrollbars@npm:^1.12.0": - version: 1.12.1 - resolution: "@types/overlayscrollbars@npm:1.12.1" - checksum: 01e5f3e96ddb349fc49c7e6d8b5b6e2c930c4e50d19d3f269df8f537d149cb054ddfe9db617fb7c071f0799163cd9e633e4d23491f070c9888bca827b0b964e7 - languageName: node - linkType: hard - "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" @@ -8342,13 +9177,6 @@ __metadata: languageName: node linkType: hard -"@types/parse5@npm:^6.0.3": - version: 6.0.3 - resolution: "@types/parse5@npm:6.0.3" - checksum: a7c7ef6625974b74b93c1105953003a2291897e453369efcadc569b907de2784d61d4e6905de3ef959fa07f3278f41ed0c22ead0173776023fc43b6ed31042d0 - languageName: node - linkType: hard - "@types/picomatch@npm:^2.3.0": version: 2.3.0 resolution: "@types/picomatch@npm:2.3.0" @@ -8365,13 +9193,20 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:2.7.2, @types/prettier@npm:^2.1.5": +"@types/prettier@npm:2.7.2": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" checksum: 16ffbd1135c10027f118517d3b12aaaf3936be1f3c6e4c6c9c03d26d82077c2d86bf0dcad545417896f29e7d90faf058aae5c9db2e868be64298c644492ea29e languageName: node linkType: hard +"@types/prettier@npm:^2.1.5": + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 + languageName: node + linkType: hard + "@types/pretty-hrtime@npm:^1.0.0": version: 1.0.1 resolution: "@types/pretty-hrtime@npm:1.0.1" @@ -8396,7 +9231,7 @@ __metadata: languageName: node linkType: hard -"@types/pug@npm:^2.0.4": +"@types/pug@npm:^2.0.6": version: 2.0.6 resolution: "@types/pug@npm:2.0.6" checksum: 8e7a3b6c1158d3a87b643c91f6cf2552ae781bc2a8f8b17a61e7b1ddd9ce480fd3483459a9b6e0f205ebe158ed67c11fd9a3206262057a14f655138c2322b0c9 @@ -8445,11 +9280,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^16.9.14": - version: 16.9.18 - resolution: "@types/react-dom@npm:16.9.18" + version: 16.9.19 + resolution: "@types/react-dom@npm:16.9.19" dependencies: "@types/react": ^16 - checksum: 1a08887a339be7b63dd5cad8952bc484dd5ade7c21f101a7971b516a16be62340d0518eb5c5f3459c55dedc436623e67d9645a92304b11a172630c0b6ed0726c + checksum: fe74e2166054fd4c6ff86b561be559d2ffd77524818a49f07206892b73c473d0db0fa7d82bd68c81d5ba3dccfbb1dd0478c28879a6f8ac2639fb1e77cef3db0f languageName: node linkType: hard @@ -8463,13 +9298,22 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:>=16, @types/react@npm:^16, @types/react@npm:^16.14.34": - version: 16.14.38 - resolution: "@types/react@npm:16.14.38" + version: 16.14.43 + resolution: "@types/react@npm:16.14.43" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: bb483f18f3a6675f136a673dbc76b71042eeca09a378ac07a88a4067af4913a9b14ebb9c5c1d772bf640a0d2b7cb77eab4a79ff44fde9aa72db8241d80d46820 + checksum: 1878039ed0d81bcfcdb7e389e221f7e3f0470e82007c60e58196b160c733ff194f6784e104e8071a96ec93d14998875c88c2dcf48aa49b73d16c5fc75d1bb602 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/responselike@npm:1.0.0" + dependencies: + "@types/node": "*" + checksum: 474ac2402e6d43c007eee25f50d01eb1f67255ca83dd8e036877292bbe8dd5d2d1e50b54b408e233b50a8c38e681ff3ebeaf22f18b478056eddb65536abb003a languageName: node linkType: hard @@ -8490,25 +9334,6 @@ __metadata: languageName: node linkType: hard -"@types/rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "@types/rimraf@npm:3.0.2" - dependencies: - "@types/glob": "*" - "@types/node": "*" - checksum: 08beaf5d5ac6d6ecb76df74e3f873453feab079b5993f7cdd00bf2789bc2dea6917d5d24e75a5346fe201f396fa8a6eccb1291f97695997e34733f9663228a86 - languageName: node - linkType: hard - -"@types/sass@npm:^1.16.0": - version: 1.43.1 - resolution: "@types/sass@npm:1.43.1" - dependencies: - "@types/node": "*" - checksum: cb55602b2f7a356d784e8ad1f432246daf4cb1fe75ef27ede997d41bdee0b08814435966471909762043d5169e009fab4a3b14db98e782103081b2da64497304 - languageName: node - linkType: hard - "@types/scheduler@npm:*": version: 0.16.3 resolution: "@types/scheduler@npm:0.16.3" @@ -8517,18 +9342,28 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 73295bb1fee46f8c76c7a759feeae5a3022f5bedfdc17d16982092e4b33af17560234fb94861560c20992a702a1e1b9a173bb623a96f95f80892105f5e7d25e3 + version: 7.5.0 + resolution: "@types/semver@npm:7.5.0" + checksum: ca4ba4642b5972b6e88e73c5bc02bbaceb8d76bce71748d86e3e95042d4e5a44603113a1dcd2cb9b73ad6f91f6e4ab73185eb41bbfc9c73b11f0ed3db3b7443a + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.1 + resolution: "@types/send@npm:0.17.1" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: 1aad6bfafdaa3a3cadad1b441843dfd166821c0e93513daabe979de85b552a1298cfb6f07d40f80b5ecf14a3194dc148deb138605039841f1dadc7132c73e634 languageName: node linkType: hard "@types/serve-favicon@npm:^2.5.2": - version: 2.5.3 - resolution: "@types/serve-favicon@npm:2.5.3" + version: 2.5.4 + resolution: "@types/serve-favicon@npm:2.5.4" dependencies: "@types/express": "*" - checksum: 7ff1a9f185f0b421a1e13a066e6e25ce88c72e71746eb04a510ad18bc3cf49608761219b2988ae1a5b4062595cbfb1c7ae0d0952f3f2f08fe690ae0fe43f335e + checksum: 60bb648eff8bba7f589e9a2027879c39c137c96e1afafb6a09cb220477c1ebe74c3ce4293c52724592f04e3278950b82741f449c8517a432c163107333a0d6b8 languageName: node linkType: hard @@ -8542,22 +9377,13 @@ __metadata: linkType: hard "@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.13.8": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" + version: 1.15.2 + resolution: "@types/serve-static@npm:1.15.2" dependencies: + "@types/http-errors": "*" "@types/mime": "*" "@types/node": "*" - checksum: dc934e2adce730480af5af6081b99f50be4dfb7f44537893444bcf1dc97f5d5ffb16b38350ecd89dd114184d751ba3271500631fa56cf1faa35be56f8e45971b - languageName: node - linkType: hard - -"@types/shelljs@npm:^0.8.7": - version: 0.8.11 - resolution: "@types/shelljs@npm:0.8.11" - dependencies: - "@types/glob": "*" - "@types/node": "*" - checksum: e78c52012315d53e28560c2f926b18d2a8c6172a574c239c3982a63f95f4b562d05e13169153d11e11e13c86e10ede3c3d794d58b5833dd5f5b272766ad39a83 + checksum: 5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb languageName: node linkType: hard @@ -8622,11 +9448,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.5 - resolution: "@types/testing-library__jest-dom@npm:5.14.5" + version: 5.14.9 + resolution: "@types/testing-library__jest-dom@npm:5.14.9" dependencies: "@types/jest": "*" - checksum: f4c82418fdc129806d413d48064049ab3b099635dad06c40be2188134d15135b0b053044de7b0e032867b1ec754e7446046d8fdf6863b9454f8f757f1cac702d + checksum: 91f7b15e8813b515912c54da44464fb60ecf21162b7cae2272fcb3918074f4e1387dc2beca1f5041667e77b76b34253c39675ea4e0b3f28f102d8cc87fdba9fa languageName: node linkType: hard @@ -8660,10 +9486,10 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/unist@npm:2.0.7" + checksum: ecfb4ad9909ba9390fc3b6923a1d783e99753b0687f5cd99a0e56b6c05e1c72bf4e55cb1b8c0ffda49c6cbead4636de351a130f63d7648c554dc526038733b25 languageName: node linkType: hard @@ -8675,25 +9501,16 @@ __metadata: linkType: hard "@types/uuid@npm:^9.0.1": - version: 9.0.1 - resolution: "@types/uuid@npm:9.0.1" - checksum: 234e14e053504a98532bb5d1490c8d649fe24ae04a94ba042b09b380a900094df1032aa7c3864b74b7a85a0a5e97530b2d1340048ed9d07855140cb99b2cefc8 - languageName: node - linkType: hard - -"@types/webpack-dev-middleware@npm:^5.3.0": - version: 5.3.0 - resolution: "@types/webpack-dev-middleware@npm:5.3.0" - dependencies: - webpack-dev-middleware: "*" - checksum: 338d8d067192a767c54285ef39116f4d09fe170297a22a6fafc6f2bfdaa64f01dea415767921e076380515e7e83e7fa03ce83eb1efc40665508c0daec48f57ee + version: 9.0.2 + resolution: "@types/uuid@npm:9.0.2" + checksum: 4c4834f9738575a69db1179589cf397830dc205850b491216697afb254764c79c96a63b92f76e81b6d03515bed9227adf184fa4d33bb04970e6377e2f7c5bab9 languageName: node linkType: hard "@types/webpack-env@npm:^1.16.0, @types/webpack-env@npm:^1.17.0, @types/webpack-env@npm:^1.18.0": - version: 1.18.0 - resolution: "@types/webpack-env@npm:1.18.0" - checksum: ac2e91b025ea31b98b0271ccb40da789c5b54693c1efb18265a54c03b303b750501f080a44e99d7ce0a5422d68d535e600e851df4b8f2240444eca7ac3159719 + version: 1.18.1 + resolution: "@types/webpack-env@npm:1.18.1" + checksum: 7b7cb8d22fe85fb3f87f592cb5ba2fb3b1057d1d5ce8d770b28728095879f5921085fae97f5bc479bdca55f2cb3111bd9148dc36cd641a5694dfbe001c5fc2f7 languageName: node linkType: hard @@ -8743,11 +9560,11 @@ __metadata: linkType: hard "@types/ws@npm:^8, @types/ws@npm:^8.5.1": - version: 8.5.4 - resolution: "@types/ws@npm:8.5.4" + version: 8.5.5 + resolution: "@types/ws@npm:8.5.5" dependencies: "@types/node": "*" - checksum: dd8bde7d69296037b5053d9c644ce3a86a988e6cb8a632e36f5040e9e274c8879a10c13ac7fe163e4eb11a85f5b8c46fe6ce5f257b80cc93118494336f4e26c6 + checksum: 9fb5aaeb2899f2c5aa55946656a39fdf679e48ec4eff557901215249ac84f435853b1d224214e88a93fcbca4bc9a0b0af01113d76f37db0b5873a882e5e99935 languageName: node linkType: hard @@ -8795,15 +9612,15 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/eslint-plugin@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/type-utils": 5.57.1 - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/type-utils": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 semver: ^7.3.7 @@ -8814,54 +9631,54 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3847db76ed4a5df9cbb0f0155afa81951323a93ba37de3dca872b325502d0203da859a67f6d201bcfdf4985188b80227b7fd039206f7b921c96d33befe7ed25d + checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/experimental-utils@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" dependencies: - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/utils": 5.62.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 3a111083514902aa36eeeb7acfb76aba0fbf88aa8b36d8645ef454a6b7c219c432e6bd9d902615d1396abcf1b68dc613a9561a8fa911253fc2c9bdfa7772d875 + checksum: f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/parser@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/typescript-estree": 5.57.1 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 4e2ea4694b261a25bca452db502666ddb4444cced9518eb2d34bd06d099885858307c9b320fd1aaeb45513811dc1984bbba370e5a8567671bad7fc5a0eb8bcc7 + checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/scope-manager@npm:5.57.1" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/visitor-keys": 5.57.1 - checksum: f0905f70939980164c0205c6c6d3638bea40fd9afb1acc83632360e66725f185eee9da595721f0bcd57cc5f951224d9d47bd8dc9c9b2373920f9d236081a8344 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/type-utils@npm:5.57.1" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": 5.57.1 - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -8869,23 +9686,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 21fb0653398d2d6d32e4bcb8fe4f4d802d63f0cd50f2e4b982f410b075f5441edffe64924dd1ba71f89eccef3b04eaae8c23543e7618723c7344914378ce3796 + checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/types@npm:5.57.1" - checksum: 549214a87a52359013270982ef4e69ce17d8a063717a8cb9d127425e76b9113a8db437b67e6802be2ba35c4c025cb37907b003cc29306a8d7d7800c58838aa38 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/typescript-estree@npm:5.57.1" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/visitor-keys": 5.57.1 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -8894,35 +9711,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3c5483a9bb8413ba117be12de334b9e533fe75320b5308e7d21a41661dd627b8a403575e5bce84ff9ca7b0678446dd6e98e73b2f05b9f4bb2d02a0a067b421d7 + checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.57.1, @typescript-eslint/utils@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/utils@npm:5.57.1" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.45.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/typescript-estree": 5.57.1 + "@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 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: bab8a94e30fc22fa6b3db5c6eee059697ce5e5e03f355c1fc465de184129b4824186a82235e14111c644d2b337721ae9f4d294a52a6f3dd4377edd35b922e3aa + checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/visitor-keys@npm:5.57.1" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 + "@typescript-eslint/types": 5.62.0 eslint-visitor-keys: ^3.3.0 - checksum: 9a84589334fe675d18ca3a572aa0caf1b4c7baa80857642aee40378f5c79cf9dddd06a0fec31d7ff6a73f577f68f910fb745d51728fac317b388b8de764561db + checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard @@ -8968,66 +9785,39 @@ __metadata: linkType: hard "@vitejs/plugin-vue@npm:^4.0.0": - version: 4.1.0 - resolution: "@vitejs/plugin-vue@npm:4.1.0" + version: 4.2.3 + resolution: "@vitejs/plugin-vue@npm:4.2.3" peerDependencies: vite: ^4.0.0 vue: ^3.2.25 - checksum: df2171a03aebc2975cfb28d1f64fd6aa4753a1ee62bf798c6b6a81f11579e48a45a96424fd4d976c1523a4addaa1cda6f621519375ec8d6fc3725bc5c726df52 - languageName: node - linkType: hard - -"@volar/language-core@npm:1.4.0-alpha.4": - version: 1.4.0-alpha.4 - resolution: "@volar/language-core@npm:1.4.0-alpha.4" - dependencies: - "@volar/source-map": 1.4.0-alpha.4 - checksum: 23014809c37c1e8662a9642f6d79b8fbbe1f9c272ace5d2724b8bd8f3753ba75d8f89e76fdc17839f821c72d77b00a5fcce2365f01dfa1cfc06f6b88ad617cee + checksum: 1652df560e29133826cfa4321859fcc93e9162781b86295bab364064d8c33454c7b7bc75bdd66483222c8f88b799e8d372bfb846a710859c873df8f9da8bd349 languageName: node linkType: hard -"@volar/source-map@npm:1.4.0-alpha.4": - version: 1.4.0-alpha.4 - resolution: "@volar/source-map@npm:1.4.0-alpha.4" +"@volar/language-core@npm:1.9.2, @volar/language-core@npm:~1.9.0": + version: 1.9.2 + resolution: "@volar/language-core@npm:1.9.2" dependencies: - muggle-string: ^0.2.2 - checksum: 0c0bbd8a6b5108526b30ffcb3c833a61cd35124275e892427d526610c5deea637c72e5c364b8c478f5d89da495065f3ac3637450966ec09ac7f4fa4ee83fa449 + "@volar/source-map": 1.9.2 + checksum: 0336399529252c8414538ef9ac97aaea276a655f4b36a8854cd1df4ecc2aee37a9c951787e60f7b3213f930308041f1ed1bea9c253ca9f93c09f55fcb132d9e4 languageName: node linkType: hard -"@volar/typescript@npm:1.4.0-alpha.4": - version: 1.4.0-alpha.4 - resolution: "@volar/typescript@npm:1.4.0-alpha.4" +"@volar/source-map@npm:1.9.2, @volar/source-map@npm:~1.9.0": + version: 1.9.2 + resolution: "@volar/source-map@npm:1.9.2" dependencies: - "@volar/language-core": 1.4.0-alpha.4 - checksum: 89a5825f3c9b65ead75040b767ddc31fd45c2d7372a9c87de67a9abb53dddddeed6b9857a84b48ec0a0a42af29c45cd7ade83df4d88912a4937de8ba6db798c7 - languageName: node - linkType: hard - -"@volar/vue-language-core@npm:1.3.4": - version: 1.3.4 - resolution: "@volar/vue-language-core@npm:1.3.4" - dependencies: - "@volar/language-core": 1.4.0-alpha.4 - "@volar/source-map": 1.4.0-alpha.4 - "@vue/compiler-dom": ^3.2.47 - "@vue/compiler-sfc": ^3.2.47 - "@vue/reactivity": ^3.2.47 - "@vue/shared": ^3.2.47 - minimatch: ^6.1.6 - muggle-string: ^0.2.2 - vue-template-compiler: ^2.7.14 - checksum: d134d8f663c12b084d041cb6bc790f25ce8ec9b5187479a363c71462eedc2d541be05e05b8ec8d1bd5990bbf14bcbc99843a33dcc5aebbf849fca826e3336ec5 + muggle-string: ^0.3.1 + checksum: 7abb6ed1e21a6f81473ae7622b13ec00ac8ce7bd01f21e44819b4912ad7c3ebc349bbbb91635fc528f37144e314207d2e1fa9485dbe7c9c03dec906d3664f138 languageName: node linkType: hard -"@volar/vue-typescript@npm:1.3.4": - version: 1.3.4 - resolution: "@volar/vue-typescript@npm:1.3.4" +"@volar/typescript@npm:~1.9.0": + version: 1.9.2 + resolution: "@volar/typescript@npm:1.9.2" dependencies: - "@volar/typescript": 1.4.0-alpha.4 - "@volar/vue-language-core": 1.3.4 - checksum: 21d3ee1fefd4f34ab8a99c1ef51513ef76c47ef6dd4eda97e7490d716c96f032c0402ae39f5f49732d737e4b468e5f0e874617c9fbe2dbdcb2e3cd532b0be5a3 + "@volar/language-core": 1.9.2 + checksum: b6072383671ef5eca4faf7e1800fb15594eb2bbeebb3ebecf4ae6ac558b6c270a172abebeab235c88b4e76dedb060f29ac1cbbc3ea88db587349634e2bbdba18 languageName: node linkType: hard @@ -9044,15 +9834,15 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-core@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-core@npm:3.2.47" +"@vue/compiler-core@npm:3.3.4, @vue/compiler-core@npm:^3.3.4": + version: 3.3.4 + resolution: "@vue/compiler-core@npm:3.3.4" dependencies: - "@babel/parser": ^7.16.4 - "@vue/shared": 3.2.47 + "@babel/parser": ^7.21.3 + "@vue/shared": 3.3.4 estree-walker: ^2.0.2 - source-map: ^0.6.1 - checksum: d840569c1134a7ec5f1e75affceb9b0ece194f377e230ad4954b7c60b96b4121f68275a93c03aab1d9030f16748769c6b6d1adb3d9172c09eec1b83876fdf361 + source-map-js: ^1.0.2 + checksum: 941dded05d656c26f6d142fda6a8b2557b2b9918e4755f88a660fee941ae04b800c69900cfe12c2c2ee045c7d9248b0fdc36398ca938395a2107b366f7f062e0 languageName: node linkType: hard @@ -9066,13 +9856,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-dom@npm:3.2.47, @vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-dom@npm:3.2.47" +"@vue/compiler-dom@npm:3.3.4, @vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.3.0": + version: 3.3.4 + resolution: "@vue/compiler-dom@npm:3.3.4" dependencies: - "@vue/compiler-core": 3.2.47 - "@vue/shared": 3.2.47 - checksum: 03ed60850addeb39a34eb8df3b39271eef39f9a193af69a145af911b23c2fb536c722e8b160ff1993cbab723d6882cfae9d1d84220cd01e51224ce15ada3311a + "@vue/compiler-core": 3.3.4 + "@vue/shared": 3.3.4 + checksum: 4f9f0fca076dbc799e4d3d6cca5e1fdba8da9b09b496c754c3d096d5e7ee7003f99f22e51fe541ade14bc2cf1ff821f6e76d9fc15ac5bb3e0d333810acd6976e languageName: node linkType: hard @@ -9113,21 +9903,21 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-sfc@npm:3.2.47, @vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33, @vue/compiler-sfc@npm:^3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-sfc@npm:3.2.47" +"@vue/compiler-sfc@npm:3.3.4, @vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33": + version: 3.3.4 + resolution: "@vue/compiler-sfc@npm:3.3.4" dependencies: - "@babel/parser": ^7.16.4 - "@vue/compiler-core": 3.2.47 - "@vue/compiler-dom": 3.2.47 - "@vue/compiler-ssr": 3.2.47 - "@vue/reactivity-transform": 3.2.47 - "@vue/shared": 3.2.47 + "@babel/parser": ^7.20.15 + "@vue/compiler-core": 3.3.4 + "@vue/compiler-dom": 3.3.4 + "@vue/compiler-ssr": 3.3.4 + "@vue/reactivity-transform": 3.3.4 + "@vue/shared": 3.3.4 estree-walker: ^2.0.2 - magic-string: ^0.25.7 + magic-string: ^0.30.0 postcss: ^8.1.10 - source-map: ^0.6.1 - checksum: 12c1f1777f2c962fd8be824f5bda64f925789ea28b4957e07e553269a5112ae067206d9a21a21369f45904add09a0f041ba397808f12afb7470bb3e77ad22922 + source-map-js: ^1.0.2 + checksum: 21e76ff9f12156d91f97b34001708ccfe1017b44f7217b6b25f0acd5762a5bc013782f69f7b7a50eb0c15b8bc395ddf76f23ca51ff20ceac273fcd600576f697 languageName: node linkType: hard @@ -9141,13 +9931,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-ssr@npm:3.2.47" +"@vue/compiler-ssr@npm:3.3.4": + version: 3.3.4 + resolution: "@vue/compiler-ssr@npm:3.3.4" dependencies: - "@vue/compiler-dom": 3.2.47 - "@vue/shared": 3.2.47 - checksum: 08049dd022ba1108088aa316828d84febb904d489debebfc712ea49d113b404672e4f1de4e301550c54ba049f7cf36360c9ca26c21c38b83a09149d77d6012bd + "@vue/compiler-dom": 3.3.4 + "@vue/shared": 3.3.4 + checksum: b4c103b21618cefca6ff7a870f6a52576a021fc9a34ce2f826492e5a3a729b74e28d6cfe87b6db72d5f741d2b7e2dce7772d264115d9a3e5222954ccc24a8492 languageName: node linkType: hard @@ -9171,16 +9961,37 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity-transform@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/reactivity-transform@npm:3.2.47" +"@vue/language-core@npm:1.8.6": + version: 1.8.6 + resolution: "@vue/language-core@npm:1.8.6" + dependencies: + "@volar/language-core": ~1.9.0 + "@volar/source-map": ~1.9.0 + "@vue/compiler-dom": ^3.3.0 + "@vue/reactivity": ^3.3.0 + "@vue/shared": ^3.3.0 + minimatch: ^9.0.0 + muggle-string: ^0.3.1 + vue-template-compiler: ^2.7.14 + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 53d118fab843ae1c84b0680007a80fc8981d4db54ff9bfedaf2235e080dc3763cf05f0cc1cb99339512b07e2da0d3f2784ca83cd5475cafd1f544d68a64534dd + languageName: node + linkType: hard + +"@vue/reactivity-transform@npm:3.3.4": + version: 3.3.4 + resolution: "@vue/reactivity-transform@npm:3.3.4" dependencies: - "@babel/parser": ^7.16.4 - "@vue/compiler-core": 3.2.47 - "@vue/shared": 3.2.47 + "@babel/parser": ^7.20.15 + "@vue/compiler-core": 3.3.4 + "@vue/shared": 3.3.4 estree-walker: ^2.0.2 - magic-string: ^0.25.7 - checksum: 9fdd5b1ae0ae841dd2f111b8d95a22e6380ae0238b9d8137e980028af6ff6c034f8654b0208515898dbcbf9bbe62a9e1ae837fdfde9c591d25d852faa1a69116 + magic-string: ^0.30.0 + checksum: a8e25f66e272b21b38523c361171bd5fa4f0d4787c5be09b47cc7ef3911c511544cea58dd3cebea83783700431bc870e239cc66dff8bb379f52b3709a3afb046 languageName: node linkType: hard @@ -9193,12 +10004,12 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity@npm:3.2.47, @vue/reactivity@npm:^3.2.47": - version: 3.2.47 - resolution: "@vue/reactivity@npm:3.2.47" +"@vue/reactivity@npm:3.3.4, @vue/reactivity@npm:^3.3.0": + version: 3.3.4 + resolution: "@vue/reactivity@npm:3.3.4" dependencies: - "@vue/shared": 3.2.47 - checksum: 953512ab93b5261b4643bee7358e52d34647823f4ce0479e5de59add998263b3dce7ef74fc626bc2e74bdbd18b1ba7657f8cb6c05db5a0f7cfad7f2cd5b17314 + "@vue/shared": 3.3.4 + checksum: d6d0f7ab03f2d1bf688fe5ba96bbf9b3473151b30f293c22a77589f5ce6f438cb32cd8c89ab9c36fb0f8c83fd312a9df5c69cb1fb6dbba9bfead11aad1d99529 languageName: node linkType: hard @@ -9212,13 +10023,13 @@ __metadata: languageName: node linkType: hard -"@vue/runtime-core@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/runtime-core@npm:3.2.47" +"@vue/runtime-core@npm:3.3.4": + version: 3.3.4 + resolution: "@vue/runtime-core@npm:3.3.4" dependencies: - "@vue/reactivity": 3.2.47 - "@vue/shared": 3.2.47 - checksum: 470a45403bf72879128e0fa2e5bedb1a1d5079026219f8c22147bf94bff4c9f52979e8e4279b7faad6c35aefbc320aca11ef78d2f0af44dfa765aadf2ed9297e + "@vue/reactivity": 3.3.4 + "@vue/shared": 3.3.4 + checksum: 1ef9d5adc7e1bdf08809bc64d6215b8bbb10ddcefa726203ff235046e991d2df5d731f843717f2195a86db8a665f7d3686b3d76c3bb63500beb38de20397ca41 languageName: node linkType: hard @@ -9233,26 +10044,26 @@ __metadata: languageName: node linkType: hard -"@vue/runtime-dom@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/runtime-dom@npm:3.2.47" +"@vue/runtime-dom@npm:3.3.4": + version: 3.3.4 + resolution: "@vue/runtime-dom@npm:3.3.4" dependencies: - "@vue/runtime-core": 3.2.47 - "@vue/shared": 3.2.47 - csstype: ^2.6.8 - checksum: d773076755c073d514bf4c6473f3bce773c29ff18ae57f88bf3eceedddcbed3c802e6801a7df2b8485420af45c1a187e2e79c28970e4dd2981e67d774d3de749 + "@vue/runtime-core": 3.3.4 + "@vue/shared": 3.3.4 + csstype: ^3.1.1 + checksum: 02bbaa587cec0c0b0158c08914043373d7dfc153f0eccd977ecbe924858d625adb0aabb2dce34646ebe810a5417309d926f266631a61d66ba5c7687de21ec02a languageName: node linkType: hard -"@vue/server-renderer@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/server-renderer@npm:3.2.47" +"@vue/server-renderer@npm:3.3.4": + version: 3.3.4 + resolution: "@vue/server-renderer@npm:3.3.4" dependencies: - "@vue/compiler-ssr": 3.2.47 - "@vue/shared": 3.2.47 + "@vue/compiler-ssr": 3.3.4 + "@vue/shared": 3.3.4 peerDependencies: - vue: 3.2.47 - checksum: 547cd63dc54a33401bbf8fb45d5b03716d465c0fe0cd008a858c925524501f85a62ad20a741390f16c626da42c3531942babb5854c3d9929744a4ba689b9fb85 + vue: 3.3.4 + checksum: 0c6b6689efa113908390644df2766492d64a71d63884d8dcf49d9b1cec2d9a33348ea2d4398892619d0ddad3419d2c8f1d61f9bdd7dde3776cc803a4c9438b59 languageName: node linkType: hard @@ -9263,16 +10074,26 @@ __metadata: languageName: node linkType: hard -"@vue/shared@npm:3.2.47, @vue/shared@npm:^3.2.47": - version: 3.2.47 - resolution: "@vue/shared@npm:3.2.47" - checksum: 149803a6855d404deb3ece14f3a4b9d0086d754b20d6048fb3b612306b777af75147745d16701cd6009473c0a9bf11ad45a1109592c680c9d4537bd1dc111163 +"@vue/shared@npm:3.3.4, @vue/shared@npm:^3.3.0": + version: 3.3.4 + resolution: "@vue/shared@npm:3.3.4" + checksum: 01a337004476988a576e1681eed219031db6d8671b60cbf46f75ea55e9fa1e01f5cdf550f380fe4045e037c0ac837faed6961420cd03f6f69036518fff110bb9 + languageName: node + linkType: hard + +"@vue/typescript@npm:1.8.6": + version: 1.8.6 + resolution: "@vue/typescript@npm:1.8.6" + dependencies: + "@volar/typescript": ~1.9.0 + "@vue/language-core": 1.8.6 + checksum: 55c304e018f9cc7c8ffd96c300a881c35af9f153445031b73f06748882201b3f3ffa847f4bc9e9da8cb9065df68ae2895775f3b8019d553691b353fa186e14dd languageName: node linkType: hard "@vue/vue3-jest@npm:29": - version: 29.2.3 - resolution: "@vue/vue3-jest@npm:29.2.3" + version: 29.2.4 + resolution: "@vue/vue3-jest@npm:29.2.4" dependencies: "@babel/plugin-transform-modules-commonjs": ^7.2.0 chalk: ^2.1.0 @@ -9286,312 +10107,161 @@ __metadata: jest: 29.x typescript: ">= 4.3" vue: ^3.0.0-0 - peerDependenciesMeta: - typescript: - optional: true - checksum: cda28af4982abe8d6506dceb989b895587b13155b748cc75ac54723eeb657aa029b70939812f958f8aeb6d7d481767c54044a05e08fe77c4c1ae190f92d6ca97 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 6f75b09f17a29e704d2343967c53128cda7c84af2d192a3146de1b53cafaedfe568eca0804bd6c1acc72e1269477ae22d772de1dcf605cdb0adf9768f31d88d7 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.5, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ast@npm:1.11.5" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - checksum: e18a6613b0edf70dcafb210941bd7923a233280b9b9d6ae65b165da9856fb5a7f2576d18587e9ec83fcb618a0e22df5be2d5b046fec063355f70ad7f974d13ae - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: 9644d9f7163d25aa301cf3be246e35cca9c472b70feda0593b1a43f30525c68d70bfb4b7f24624cd8e259579f1dee32ef28670adaeb3ab1314ffb52a25b831d5 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.5" - checksum: 9ac08fbbe10539e88e4b2aa04c2af89caab25e1489ce14f4de7cd3ec1e86512d6a94c0285637553f64430ef46362813604d412e8af9e98acea6c7c4eca5952df - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 23e6f24100eb21779cd4dcc7c4231fd511622545a7638b195098bcfee79decb54a7e2b3295a12056c3042af7a5d8d62d4023a9194c9cba0311acb304ea20a292 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.5" - checksum: 18b9f58f41f3a71cd6d307dd1585f1a193e0bcadada2d3b0e6ebb82ae00808588dba378512375e7ee8a5c8cf6027172d79315394bbb451fdaf63a8949bf7b750 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: ab662fc94a017538c538836387492567ed9f23fe4485a86de1834d61834e4327c24659830e1ecd2eea7690ce031a148b59c4724873dc5d3c0bdb71605c7d01af - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.5" - checksum: d1e3ff85164821cf1c503a91cd848984f2499feee42509074ba9780d07e9138911816c34b8e263547312f7bd5f3b81e96a176c01e0c702f97a85a2d824ef01b5 - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 8cc7ced66dad8f968a68fbad551ba50562993cefa1add67b31ca6462bb986f7b21b5d7c6444c05dd39312126e10ac48def025dec6277ce0734665191e05acde7 - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.5" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.5 - "@webassemblyjs/helper-api-error": 1.11.5 - "@xtuc/long": 4.2.2 - checksum: 50ef3f194f3e8d8a3be180d6ab513036acc8d1647cb8311b32e1fa43c6876cc9a5862ec5019607170538f74fdeaa5d9507fc78d54c8e4dac2cd17cec128374bd - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: f14e2bd836fed1420fe7507919767de16346a013bbac97b6b6794993594f37b5f0591d824866a7b32f47524cef8a4a300e5f914952ff2b0ff28659714400c793 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.5" - checksum: 249ac6259737b370d30ee4b7a9bc07f9e92d2200a6d0cebb87ca0d18de4f2921f76a481599d777d1c83015ac0f4cc407100678afe4e6b1aab9d0827b201e3eff - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: e2da4192a843e96c8bf5156cea23193c9dbe12a1440c9c109d3393828f46753faab75fac78ecfe965aa7988723ad9b0b12f3ca0b9e4de75294980e67515460af + peerDependenciesMeta: + typescript: + optional: true + checksum: 3da6be2a028f2ec8f2ae4e238c132c0dbc1220c0466837909f6a35365d100b8ba03841cd753abb82f49e1a468a95adf20f893f2924aa3a4cb46d9f4a7b60fcd1 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.5" +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - checksum: 4c732d60131d488efaee32ecb228fe1b6991e79953cfbfbcd782ea87ac097dd2bc5b84abc5d5fdf3e277d1eb309c6d0e31a43a6c6033a5ec937f538e3a63ee63 + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 13d6a6ca2e9f35265f10b549cb8354f31a307a7480bbf76c0f4bc8b02e13d5556fb29456cef3815db490effc602c59f98cb0505090ca9e29d7dc61539762a065 +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ieee754@npm:1.11.5" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 6af4e17da909ba86b7ca2065912220d99689d5af0a05b819317b05e0454a950322530044cb82ce63c841454871e934546d38ad96ab2979872dafb96b0f34f9d4 +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: e505edb5de61f13c6c66c57380ae16e95db9d7c43a41ac132e298426bcead9c90622e3d3035fb63df09d0eeabafd471be35ba583fca72ac2e776ab537dda6883 +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: 55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/leb128@npm:1.11.5" +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 "@xtuc/long": 4.2.2 - checksum: 7f10ce18f226445b8d6a904be614bf07e7eec421bb7b22d202d9b6817faeb440bcd6b35e291446d4c46dd98c90d0673f3d682891428a9bf07d7fe82d73d8de57 - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: a7c13c7c82d525fe774f51a4fc1da058b0e2c73345eed9e2d6fbeb96ba50c1942daf97e0ff394e7a4d0f26b705f9587cb14681870086d51f02abc78ff6ce3703 + checksum: c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/utf8@npm:1.11.5" - checksum: a396ccc6635d0eeac99a0c812ea8a4b28d7a035242dc0b555723268219b1141cd5a18c85fa9dec899c69765d8c8d5ec0537c777395389ee6f79cab94b78fcd79 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 10bef22579f96f8c0934aa9fbf6f0d9110563f9c1a510100a84fdfa3dbd9126fdc10bfc12e7ce3ace0ba081e6789eac533c81698faab75859b3a41e97b5ab3bc +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.5" +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/helper-wasm-section": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - "@webassemblyjs/wasm-opt": 1.11.5 - "@webassemblyjs/wasm-parser": 1.11.5 - "@webassemblyjs/wast-printer": 1.11.5 - checksum: f8db94190805a68ff9389ddf5dd16bdcb27e59e307fe5922aab64ae396fa66538a86c00c9b1a0013e2488aa22a3e2572b5cf9aeabcb6b0ab859a096390b0bc4c + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + checksum: b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 4e49a19e302e19a2a2438e87ae85805acf39a7d93f9ac0ab65620ae395894937ceb762fa328acbe259d2e60d252cbb87a40ec2b4c088f3149be23fa69ddbf855 + "@xtuc/ieee754": ^1.2.0 + checksum: 59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.5" +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/ieee754": 1.11.5 - "@webassemblyjs/leb128": 1.11.5 - "@webassemblyjs/utf8": 1.11.5 - checksum: c5097c28e0fcc26d8afc77783f677cf4e74b1fdb1039fc3e2ecd8cc921b9c02acc2b74c12f7f8d5ee04bf455c1b9c0543b023e65c37bef67f92690306b1aa453 + "@xtuc/long": 4.2.2 + checksum: cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: af7fd6bcb942baafda3b8cc1e574062d01c582aaa12d4f0ea62ff8e83ce1317f06a79c16313a3bc98625e1226d0fc49ba90edac18c21a64c75e9cd114306f07a +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.5" +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - "@webassemblyjs/wasm-parser": 1.11.5 - checksum: be0c21c2d597dcfea6065ef33e8208cc651adfaf013284b7ab6ca21edfa25c4faaf97553c23f89daabd5a8e100875c241058955234a44f41420eb1f61e92c0ed + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-opt": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + "@webassemblyjs/wast-printer": 1.11.6 + checksum: 9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 5a7e8ad36176347f3bc9aee15860a7002b608c181012128ea3e5a1199649d6722e05e029fdf2a73485f2ab3e2f7386b3e0dce46ff9cfd1918417a4ee1151f21e + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.5, @webassemblyjs/wasm-parser@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.5" +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-api-error": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/ieee754": 1.11.5 - "@webassemblyjs/leb128": 1.11.5 - "@webassemblyjs/utf8": 1.11.5 - checksum: f1accb914be6526a9630c669e090abfcd0070290d8d7e0f4ddab2e5689de262f987a0ca24b9ca51a3ce84c514c889bcb632fa7a604eced04ae5ad869e523eaea + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + checksum: 82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: cede13c53a176198f949e7f0edf921047c524472b2e4c99edfe829d20e168b4037395479325635b4a3662ea7b4b59be4555ea3bb6050c61b823c68abdb435c74 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wast-printer@npm:1.11.5" +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 + "@webassemblyjs/ast": 1.11.6 "@xtuc/long": 4.2.2 - checksum: 7d506ebe0f03c1fb039eec667cc7dea8bb424be3e67e5899389da7eb093a239b443b6502a0a254b6dc981198a1ce9351375d5c323d09933f4dbee43cac5d618d + checksum: 916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c languageName: node linkType: hard @@ -9620,6 +10290,26 @@ __metadata: languageName: node linkType: hard +"@yarnpkg/fslib@npm:2.10.3": + version: 2.10.3 + resolution: "@yarnpkg/fslib@npm:2.10.3" + dependencies: + "@yarnpkg/libzip": ^2.3.0 + tslib: ^1.13.0 + checksum: c4fbbed99e801f17c381204e9699d9ea4fb51b14e99968985f477bdbc7b02b61e026860173f3f46bd60d9f46ae6a06f420a3edb3c02c3a45ae83779095928094 + languageName: node + linkType: hard + +"@yarnpkg/libzip@npm:2.3.0, @yarnpkg/libzip@npm:^2.3.0": + version: 2.3.0 + resolution: "@yarnpkg/libzip@npm:2.3.0" + dependencies: + "@types/emscripten": ^1.39.6 + tslib: ^1.13.0 + checksum: 0c2361ccb002e28463ed98541f3bdaab54f52aad6a2080666c2a9ea605ebd9cdfb7b0340b1db6f105820d05bcb803cdfb3ce755a8f6034657298c291bf884f81 + languageName: node + linkType: hard + "@yarnpkg/lockfile@npm:1.1.0, @yarnpkg/lockfile@npm:^1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" @@ -9628,12 +10318,12 @@ __metadata: linkType: hard "@yarnpkg/parsers@npm:^3.0.0-rc.18": - version: 3.0.0-rc.42 - resolution: "@yarnpkg/parsers@npm:3.0.0-rc.42" + version: 3.0.0-rc.48.1 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.48.1" dependencies: js-yaml: ^3.10.0 tslib: ^2.4.0 - checksum: 31ffaecb01c903331063168e58cf9d6358bee4baecbc53a04c75a16d9403e477a9ac02c18924acfed54cb6164cd38a9858434d925baf0f4ef2b3d3e9672b4353 + checksum: 05197a056e9817f9fe059df303f7e0cb9b1740ffd18b4f5bc831366f8284f638973f1ae324e99300c463540ecb5a3c189c1b36f96c320d782c8224ff2954e8c2 languageName: node linkType: hard @@ -9660,14 +10350,14 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.5, abab@npm:^2.0.6": +"abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 languageName: node linkType: hard -"abbrev@npm:1, abbrev@npm:^1.0.0": +"abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: 3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 @@ -9700,16 +10390,6 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 5f92390a3fd7e5a4f84fe976d4650e2a33ecf27135aa9efc5406e3406df7f00a1bbb00648ee0c8058846f55ad0924ff574e6c73395705690e754589380a41801 - languageName: node - linkType: hard - "acorn-globals@npm:^7.0.0": version: 7.0.1 resolution: "acorn-globals@npm:7.0.1" @@ -9720,12 +10400,12 @@ __metadata: languageName: node linkType: hard -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: acorn: ^8 - checksum: ad8e177a177dcda35a91cca2dc54a7cf6958211c14af2b48e4685a5e752d4782779d367e1d5e275700ad5767834d0063edf2ba85aeafb98d7398f8ebf957e7f5 + checksum: 3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe languageName: node linkType: hard @@ -9738,7 +10418,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": +"acorn-walk@npm:^7.2.0": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" checksum: ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c @@ -9761,12 +10441,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 + checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 languageName: node linkType: hard @@ -9794,15 +10474,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:4, agent-base@npm:^4.3.0": - version: 4.3.0 - resolution: "agent-base@npm:4.3.0" - dependencies: - es6-promisify: ^5.0.0 - checksum: a618d4e4ca7c0c2023b2664346570773455c501a930718764f65016a8a9eea6d2ab5ba54255589e46de529bab4026a088523dce17f94e34ba385af1f644febe1 - languageName: node - linkType: hard - "agent-base@npm:5": version: 5.1.1 resolution: "agent-base@npm:5.1.1" @@ -9819,7 +10490,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": +"agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" dependencies: @@ -9882,7 +10553,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.0.0": +"ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: @@ -9893,7 +10564,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.12.0, ajv@npm:^8.0.0, ajv@npm:^8.2.0, ajv@npm:^8.8.0": +"ajv@npm:8.12.0, ajv@npm:^8.0.0, ajv@npm:^8.2.0, ajv@npm:^8.9.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: @@ -9960,11 +10631,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^6.0.0": - version: 6.1.0 - resolution: "ansi-escapes@npm:6.1.0" + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" dependencies: type-fest: ^3.0.0 - checksum: e71d2d0d28b622df3b838a03a8c25df100ca553623ac5ea100ffba2dff26fffa220a5ad8beb9f2428543aa69b4f96af566ec40bcaa581f7f9cb71d863437262d + checksum: 3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e languageName: node linkType: hard @@ -10023,6 +10694,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + "ansi-to-html@npm:^0.6.11": version: 0.6.15 resolution: "ansi-to-html@npm:0.6.15" @@ -10079,12 +10757,12 @@ __metadata: linkType: hard "are-we-there-yet@npm:^4.0.0": - version: 4.0.0 - resolution: "are-we-there-yet@npm:4.0.0" + version: 4.0.1 + resolution: "are-we-there-yet@npm:4.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^4.1.0 - checksum: 760008e32948e9f738c5a288792d187e235fee0f170e042850bc7ff242f2a499f3f2874d6dd43ac06f5d9f5306137bc51bbdd4ae0bb11379c58b01678e0f684d + checksum: ca4c89c08236a7ecbb909c29d0a7b9e02e1df9b0e438a75b317aa6bdcd0392bb20ce5365c4af571923a6c8c835aa85d50bf1f80c60453b794ee3b02dcdfd39bb languageName: node linkType: hard @@ -10111,6 +10789,24 @@ __metadata: languageName: node linkType: hard +"aria-hidden@npm:^1.1.1": + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" + dependencies: + tslib: ^2.0.0 + checksum: 46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + "aria-query@npm:^4.2.2": version: 4.2.2 resolution: "aria-query@npm:4.2.2" @@ -10121,12 +10817,12 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" +"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3, aria-query@npm:^5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" dependencies: - deep-equal: ^2.0.5 - checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + dequal: ^2.0.3 + checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 languageName: node linkType: hard @@ -10196,7 +10892,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -10301,6 +10997,20 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.1": + version: 1.0.1 + resolution: "arraybuffer.prototype.slice@npm:1.0.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.0 + get-intrinsic: ^1.2.1 + is-array-buffer: ^3.0.2 + is-shared-array-buffer: ^1.0.2 + checksum: db460cb4a96c3c9e27a2a7eed5d0ab1fcfccae9fc8cd1b4883cbb03cd29060b373e0723e78b5c786fdec2025a0ab12eb840c72b2f26016bac906b91bc4e9e4db + languageName: node + linkType: hard + "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -10322,6 +11032,18 @@ __metadata: languageName: node linkType: hard +"asn1.js@npm:^5.2.0": + version: 5.4.1 + resolution: "asn1.js@npm:5.4.1" + dependencies: + bn.js: ^4.0.0 + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + safer-buffer: ^2.1.0 + checksum: b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 + languageName: node + linkType: hard + "assert-never@npm:^1.2.1": version: 1.2.1 resolution: "assert-never@npm:1.2.1" @@ -10467,13 +11189,6 @@ __metadata: languageName: node linkType: hard -"atob-lite@npm:^2.0.0": - version: 2.0.0 - resolution: "atob-lite@npm:2.0.0" - checksum: 8073795465dad14aa92b2cd3322472e93dbc8b87da5740150bbae9d716ee6cc254af1c375b7310a475d876eb24c25011584ae9c1277bdb3eb53ebb4cd236f501 - languageName: node - linkType: hard - "atob@npm:^2.1.2": version: 2.1.2 resolution: "atob@npm:2.1.2" @@ -10508,39 +11223,51 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.2.0, axe-core@npm:^4.6.2, axe-core@npm:^4.6.3": - version: 4.6.3 - resolution: "axe-core@npm:4.6.3" - checksum: b26ee77b5c1f9c399a4ed5dadf82c5302fd70326f36b68f5023a57b7ec213d5db126aade0a2cd2866b9563e213192f4257bc5dc35edebb10a73f90155baa39da +"axe-core@npm:^4.2.0, axe-core@npm:^4.6.2, axe-core@npm:^4.7.0": + version: 4.7.2 + resolution: "axe-core@npm:4.7.2" + checksum: 8dfc61f038fbd9623ae8a264c8a475d887113a027fb440a2b377b82ffd300e71d1a0bcf042ff13b517a8d548b34c44b4159eff693725c5d7cde240d0aa68feac + languageName: node + linkType: hard + +"axios@npm:1.1.3": + version: 1.1.3 + resolution: "axios@npm:1.1.3" + dependencies: + follow-redirects: ^1.15.0 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 78aea19cc15019fb0fb86ec737a9dccb88a8f8e8f00b0e6c5024a76d8df523daf88a7abf8c6593b0cdd9a346806be9f41285d793d8b6653c99877de11245bfa4 languageName: node linkType: hard -"axios@npm:^0.21.1, axios@npm:^0.21.2": - version: 0.21.4 - resolution: "axios@npm:0.21.4" +"axios@npm:^0.27.2": + version: 0.27.2 + resolution: "axios@npm:0.27.2" dependencies: - follow-redirects: ^1.14.0 - checksum: fbcff55ec68f71f02d3773d467db2fcecdf04e749826c82c2427a232f9eba63242150a05f15af9ef15818352b814257541155de0281f8fb2b7e8a5b79f7f2142 + follow-redirects: ^1.14.9 + form-data: ^4.0.0 + checksum: 76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 languageName: node linkType: hard "axios@npm:^1.0.0": - version: 1.3.4 - resolution: "axios@npm:1.3.4" + version: 1.4.0 + resolution: "axios@npm:1.4.0" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 39f03d83a9ed5760094f92a677af2533ab159448c8e22bfba98d8957bdef2babe142e117a0a7d9a5aff1d5f28f8ced28eb0471b6a91d33410375c89e49032193 + checksum: a925a07590b0ec1d4daf28cd27890f930daab980371558deb3b883af174b881da09e5ba2cb8393a648fda5859e39934982d0b8b092fe89fc84cb6c80a70a1910 languageName: node linkType: hard -"axobject-query@npm:^3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" +"axobject-query@npm:^3.1.1, axobject-query@npm:^3.2.1": + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" dependencies: - deep-equal: ^2.0.5 - checksum: fff3175a22fd1f41fceb7ae0cd25f6594a0d7fba28c2335dd904538b80eb4e1040432564a3c643025cd2bb748f68d35aaabffb780b794da97ecfc748810b25ad + dequal: ^2.0.3 + checksum: f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 languageName: node linkType: hard @@ -10569,11 +11296,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.5.0 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -10582,11 +11309,11 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 1114d3935e0f62b72e155ac79916214c078e798561be3b03d12ddd862f2849becc8516f89046719161ec457bded35d2e1fd7ddfb207a6169dd18bbb2a67ee987 + checksum: a32ac32f3b5bd66f3f8370cfd6244b0f7b18c2dd367d5829e86dea9f8516ffda63edfb2743d3e1768db93a0698b4db09cd9d22961447e0ed6fd309b5b9c22764 languageName: node linkType: hard -"babel-loader@npm:9.1.2, babel-loader@npm:^7.0.0 || ^8.0.0 || ^9.0.0, babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": +"babel-loader@npm:9.1.2": version: 9.1.2 resolution: "babel-loader@npm:9.1.2" dependencies: @@ -10599,6 +11326,19 @@ __metadata: languageName: node linkType: hard +"babel-loader@npm:^7.0.0 || ^8.0.0 || ^9.0.0, babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: ^4.0.0 + schema-utils: ^4.0.0 + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + languageName: node + linkType: hard + "babel-plugin-add-react-displayname@npm:^0.0.5": version: 0.0.5 resolution: "babel-plugin-add-react-displayname@npm:0.0.5" @@ -10713,39 +11453,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" +"babel-plugin-polyfill-corejs2@npm:^0.4.3, babel-plugin-polyfill-corejs2@npm:^0.4.4": + version: 0.4.5 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.2 + semver: ^6.3.1 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 21e34d4ba961de66d3fe31f3fecca5612d5db99638949766a445d37de72c1f736552fe436f3bd3792e5cc307f48e8f78a498a01e858c84946627ddb662415cc4 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 89e12f24aac8bfae90001371cb3ed4d2e73b9acf723d8cce9bc7546424249d02163d883c9be436073210365abcbc0876ae3140b1f312839f37f824c8ba96ae03 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" +"babel-plugin-polyfill-corejs3@npm:^0.8.1, babel-plugin-polyfill-corejs3@npm:^0.8.2": + version: 0.8.3 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 + "@babel/helper-define-polyfill-provider": ^0.4.2 + core-js-compat: ^3.31.0 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 58f7d16c1fbc5e4a68cc58126039cb997edc9b9d29adf1bc4124eb6a12ec31eb9e1da8df769b7219714748af7916cfbb194b2f15bd55571b3b43cdcd7839fe8f + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: b5cbfad6d3695a1ea65ef62e34de7f9c6f717cd5cc6d64bde726528168ba1d0a81e09a385d9283a489aab9739fbe206f2192fd9f0f60a37a0577de6526553a8d languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" +"babel-plugin-polyfill-regenerator@npm:^0.5.0, babel-plugin-polyfill-regenerator@npm:^0.5.1": + version: 0.5.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 + "@babel/helper-define-polyfill-provider": ^0.4.2 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd915d51e30259201b289a58dfa46c8c1bc8827a38c275ff3134c8194d27e634d5c32ec62137d489d81c7dd5f6ea46b04057eb44b7180d06c19388e3a5f4f8c6 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 31358bc030d99599fa1f7f0399b2cf7a5872495672bff779ecb49d6bbdb990378a1a5640789c247e248a481b6f298a2223d4396544ac79de4dc77fe3946bfe2c languageName: node linkType: hard @@ -10874,10 +11614,12 @@ __metadata: languageName: node linkType: hard -"basic-auth@npm:^1.0.3": - version: 1.1.0 - resolution: "basic-auth@npm:1.1.0" - checksum: af1d7687a1f71acb823c44f6ae8f085dcdb450ff74cb6c98a9a68a3b7a7035050ddac10049d98046771ee4be5c534d5aeeae2304c9c7434f54433260ddef96aa +"basic-auth@npm:^2.0.1": + version: 2.0.1 + resolution: "basic-auth@npm:2.0.1" + dependencies: + safe-buffer: 5.1.2 + checksum: 05f56db3a0fc31c89c86b605231e32ee143fb6ae38dc60616bc0970ae6a0f034172def99e69d3aed0e2c9e7cac84e2d63bc51a0b5ff6ab5fc8808cc8b29923c1 languageName: node linkType: hard @@ -10888,7 +11630,7 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^2.0.0, before-after-hook@npm:^2.1.0, before-after-hook@npm:^2.2.0": +"before-after-hook@npm:^2.1.0, before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c @@ -10910,12 +11652,12 @@ __metadata: languageName: node linkType: hard -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" dependencies: - open: ^7.0.3 - checksum: c483f52a1c71555926df37a89ae7e521cddff6509e2a02c6af83c2c500e20cb3307417579ce1d5ec4d09855cc7d30f608b20934e7cedc54218888722d5bfc1d3 + open: ^8.0.4 + checksum: 911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 languageName: node linkType: hard @@ -10948,14 +11690,14 @@ __metadata: linkType: hard "bin-links@npm:^4.0.1": - version: 4.0.1 - resolution: "bin-links@npm:4.0.1" + version: 4.0.2 + resolution: "bin-links@npm:4.0.2" dependencies: cmd-shim: ^6.0.0 npm-normalize-package-bin: ^3.0.0 read-cmd-shim: ^4.0.0 write-file-atomic: ^5.0.0 - checksum: f89d84bf421aed326bc57e755623ba3810683529b3fb8329194f3970a1fe07bac88990c64a0dbdd57cb1290d4e0eae5fd3dacc59c60640eeb626ff5b1a249ac2 + checksum: ccc576b2a54508fc02fe41ba5520c48b0e45faed7a29b5700666bc9fcf608a69958ff23bfc8e35907806c0d038e11e18da0cca857072f3be834d85e366f5d7c7 languageName: node linkType: hard @@ -10998,6 +11740,20 @@ __metadata: languageName: node linkType: hard +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + "body-parser@npm:1.20.1": version: 1.20.1 resolution: "body-parser@npm:1.20.1" @@ -11303,6 +12059,13 @@ __metadata: languageName: node linkType: hard +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + "browser-assert@npm:^1.2.1": version: 1.2.1 resolution: "browser-assert@npm:1.2.1" @@ -11317,6 +12080,70 @@ __metadata: languageName: node linkType: hard +"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + 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 + checksum: 967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: ^1.0.4 + browserify-des: ^1.0.0 + evp_bytestokey: ^1.0.0 + checksum: aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: ^1.0.1 + des.js: ^1.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: 943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: ^5.0.0 + randombytes: ^2.0.1 + checksum: fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.1 + resolution: "browserify-sign@npm:4.2.1" + 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 + checksum: 8f00a370e3e97060977dc58e51251d3ca398ee73523994a44430321e8de2c7d85395362d59014b2b07efe4190f369baee2ff28eb8f405ff4660b776651cf052d + languageName: node + linkType: hard + "browserify-zlib@npm:^0.1.4": version: 0.1.4 resolution: "browserify-zlib@npm:0.1.4" @@ -11326,17 +12153,26 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:4.21.5, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" +"browserify-zlib@npm:^0.2.0": + version: 0.2.0 + resolution: "browserify-zlib@npm:0.2.0" + dependencies: + pako: ~1.0.5 + checksum: 9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 + languageName: node + linkType: hard + +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9": + version: 4.21.9 + resolution: "browserslist@npm:4.21.9" dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 + caniuse-lite: ^1.0.30001503 + electron-to-chromium: ^1.4.431 + node-releases: ^2.0.12 + update-browserslist-db: ^1.0.11 bin: browserslist: cli.js - checksum: 903040d2c45b733e1177c288b4f146ff21d45e8a44ccc87d1d7fc2f6a8d021c7ee54b514fd7722529c282381969382a54bd2ab4263f5b6c8981a856b457ea162 + checksum: 903189787141f645f47ec46ec482dc85985d1297948062690dc2ea8480eb98fd6213507234eb17177825acaae49c53888445910f1af984abce5373fb65c270b8 languageName: node linkType: hard @@ -11358,13 +12194,6 @@ __metadata: languageName: node linkType: hard -"btoa-lite@npm:^1.0.0": - version: 1.0.0 - resolution: "btoa-lite@npm:1.0.0" - checksum: 7a4f0568ae3c915464650f98fde7901ae07b13a333a614515a0c86876b3528670fafece28dfef9745d971a613bb83341823afb0c20c6f318b384c1e364b9eb95 - languageName: node - linkType: hard - "buffer-crc32@npm:^0.2.5, buffer-crc32@npm:~0.2.3": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -11386,6 +12215,13 @@ __metadata: languageName: node linkType: hard +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + "buffer@npm:^5.2.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -11406,6 +12242,13 @@ __metadata: languageName: node linkType: hard +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c + languageName: node + linkType: hard + "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" @@ -11422,6 +12265,24 @@ __metadata: languageName: node linkType: hard +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: 57bc7f8b025d83961b04db2f1eff6a87f2363c2891f3542a4b82471ff8ebb5d484af48e9784fcdb28ef1d48bb01f03d891966dc3ef58758e46ea32d750ce40f8 + languageName: node + linkType: hard + +"busboy@npm:1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: ^1.1.0 + checksum: fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + "byte-size@npm:7.0.0": version: 7.0.0 resolution: "byte-size@npm:7.0.0" @@ -11444,8 +12305,8 @@ __metadata: linkType: hard "c8@npm:^7.6.0": - version: 7.13.0 - resolution: "c8@npm:7.13.0" + version: 7.14.0 + resolution: "c8@npm:7.14.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 "@istanbuljs/schema": ^0.1.3 @@ -11461,13 +12322,13 @@ __metadata: yargs-parser: ^20.2.9 bin: c8: bin/c8.js - checksum: 9c53fdd7062a36a72f426d245f7646053c6e314f6e88bc64fa7d458c6c37801371d5894cdb0617a9b7cbb17f85aac5523b4d15cf42d40612136d5080b73d3212 + checksum: 8946f55f2dcc85bf146f429a3deeede78502da245e515a2d181342475d8d8698b4055ec1d9b887ab8e1615f49c1a2af4d63557e68b2005844572fb785991e148 languageName: node linkType: hard -"cacache@npm:17.0.6": - version: 17.0.6 - resolution: "cacache@npm:17.0.6" +"cacache@npm:17.1.3, cacache@npm:^17.0.0, cacache@npm:^17.0.4": + version: 17.1.3 + resolution: "cacache@npm:17.1.3" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 @@ -11478,41 +12339,14 @@ __metadata: minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 p-map: ^4.0.0 - promise-inflight: ^1.0.1 ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 576a41de27ec74a371e95b4ab650df719bbfbe4c48b621cd9a6ed0b67c9125b4540f0535456495910eae31b2eff5227a91796afe39d423eaa45575e6604d11e3 - languageName: node - linkType: hard - -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - 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 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - 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 - checksum: 886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 + checksum: fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 languageName: node linkType: hard -"cacache@npm:^16.0.0, cacache@npm:^16.1.0": +"cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" dependencies: @@ -11538,27 +12372,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^17.0.0, cacache@npm:^17.0.4": - version: 17.0.5 - resolution: "cacache@npm:17.0.5" - dependencies: - "@npmcli/fs": ^3.1.0 - fs-minipass: ^3.0.0 - glob: ^9.3.1 - lru-cache: ^7.7.1 - minipass: ^4.0.0 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: e8a91ee6123e8e289545db101a9ba73c3385afdb49a596be790ce17340cfe08258434f26c3ff28b9cd1dad168f4bf0b0582f0b22dd6ba656f2ffc90a5be12663 - languageName: node - linkType: hard - "cache-base@npm:^1.0.1": version: 1.0.1 resolution: "cache-base@npm:1.0.1" @@ -11576,6 +12389,28 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.2": + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^6.0.1 + responselike: ^2.0.0 + checksum: 0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41 + languageName: node + linkType: hard + "calculate-cache-key-for-tree@npm:^2.0.0": version: 2.0.0 resolution: "calculate-cache-key-for-tree@npm:2.0.0" @@ -11648,17 +12483,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001474 - resolution: "caniuse-lite@npm:1.0.30001474" - checksum: 4a5d1435c38c8f24c00b99bac7b70b1968f3f0772c8b34838a9247dcc630b2dda544ba5d4053efd3171c0e24240133cced26df054290c7413ce4540763588f93 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001464": - version: 1.0.30001481 - resolution: "caniuse-lite@npm:1.0.30001481" - checksum: f16e79595f10c333f54531f3e3afa6dbb9b73948246b37cf75a4f5f0ac6ac1e507ba124af06cc77eba0f022378c39c94429b4cf8de469008fda8fa507a024875 +"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001503": + version: 1.0.30001517 + resolution: "caniuse-lite@npm:1.0.30001517" + checksum: 42625e3def1988876a7b636f6ab0c70c4b998af69689eb0abb6d4615f2139db621908bac24e29edc4f03756542fd99c7bf435f859e49313268e5223004365f86 languageName: node linkType: hard @@ -11686,6 +12514,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:5.2.0": + version: 5.2.0 + resolution: "chalk@npm:5.2.0" + checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 + languageName: node + linkType: hard + "chalk@npm:^2.0.0, chalk@npm:^2.1.0, chalk@npm:^2.3.0, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -11716,11 +12551,11 @@ __metadata: checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 languageName: node linkType: hard - -"chalk@npm:^5.2.0": - version: 5.2.0 - resolution: "chalk@npm:5.2.0" - checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 + +"chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard @@ -11900,17 +12735,27 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": +"ci-info@npm:^3.2.0, ci-info@npm:^3.6.1": version: 3.8.0 resolution: "ci-info@npm:3.8.0" checksum: 0d3052193b58356372b34ab40d2668c3e62f1006d5ca33726d1d3c423853b19a85508eadde7f5908496fb41448f465263bf61c1ee58b7832cb6a924537e3863a languageName: node linkType: hard +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab languageName: node linkType: hard @@ -11973,9 +12818,9 @@ __metadata: linkType: hard "cli-spinners@npm:^2.5.0": - version: 2.7.0 - resolution: "cli-spinners@npm:2.7.0" - checksum: 5c781ace5c8f304ae4d138837f19cf88f03a97de3c3e388f9d1d6434146f06f6ce2a161d6237b3bb86448a05fbcbb20084f3fea96077e42a655b273e39c6f08d + version: 2.9.0 + resolution: "cli-spinners@npm:2.9.0" + checksum: c0d5437acc1ace7361b1c58a4fda3c92c2d8691ff3169ac658ce30faee71280b7aa706c072bcb6d0e380c232f3495f7d5ad4668c1391fe02c4d3a39d37798f44 languageName: node linkType: hard @@ -12002,6 +12847,16 @@ __metadata: languageName: node linkType: hard +"cli-truncate@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-truncate@npm:3.1.0" + dependencies: + slice-ansi: ^5.0.0 + string-width: ^5.0.0 + checksum: a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c + languageName: node + linkType: hard + "cli-width@npm:^3.0.0": version: 3.0.0 resolution: "cli-width@npm:3.0.0" @@ -12038,7 +12893,7 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^7.0.2, cliui@npm:^7.0.4": +"cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" dependencies: @@ -12071,6 +12926,15 @@ __metadata: languageName: node linkType: hard +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: ^1.0.0 + checksum: 06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + languageName: node + linkType: hard + "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" @@ -12129,6 +12993,19 @@ __metadata: languageName: node linkType: hard +"code-red@npm:^1.0.3": + version: 1.0.3 + resolution: "code-red@npm:1.0.3" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.14 + "@types/estree": ^1.0.0 + acorn: ^8.8.2 + estree-walker: ^3.0.3 + periscopic: ^3.1.0 + checksum: d8722c5bb5898fe0723211d07067179cd0befe70b4b4115752d207b4703816bf146298fa0bfe6b1aaa94e16387bd80945bba2b7271d0ebd3b2e9d10e0b9f1e2a + languageName: node + linkType: hard + "collapse-white-space@npm:^1.0.4": version: 1.0.6 resolution: "collapse-white-space@npm:1.0.6" @@ -12137,9 +13014,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -12194,14 +13071,14 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.16, colorette@npm:^2.0.19": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 2bcc9134095750fece6e88167011499b964b78bf0ea953469130ddb1dba3c8fe6c03debb0ae181e710e2be10900d117460f980483a7df4ba4a1bac3b182ecb64 +"colorette@npm:^2.0.10, colorette@npm:^2.0.19": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 languageName: node linkType: hard -"colors@npm:1.4.0, colors@npm:^1.4.0": +"colors@npm:1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb @@ -12218,7 +13095,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8": +"combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -12234,6 +13111,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + "commander@npm:^2.18.0, commander@npm:^2.19.0, commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -12248,7 +13132,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^6.2.0, commander@npm:^6.2.1": +"commander@npm:^6.2.1": version: 6.2.1 resolution: "commander@npm:6.2.1" checksum: 85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea @@ -12412,6 +13296,13 @@ __metadata: languageName: node linkType: hard +"console-browserify@npm:^1.2.0": + version: 1.2.0 + resolution: "console-browserify@npm:1.2.0" + checksum: 89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 + languageName: node + linkType: hard + "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -12447,6 +13338,13 @@ __metadata: languageName: node linkType: hard +"constants-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "constants-browserify@npm:1.0.0" + checksum: ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 + languageName: node + linkType: hard + "content-disposition@npm:0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -12634,19 +13532,19 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.25.1": - version: 3.30.0 - resolution: "core-js-compat@npm:3.30.0" +"core-js-compat@npm:^3.30.2, core-js-compat@npm:^3.31.0": + version: 3.31.1 + resolution: "core-js-compat@npm:3.31.1" dependencies: - browserslist: ^4.21.5 - checksum: 27a941b1389bab7d389ff8097f7ad5684b7e26cb5f462e1f21ada2afbd5c7579683ca9af16feb71afb59361f39dd3ec4af936712be7220a93f0c071f216ea42f + browserslist: ^4.21.9 + checksum: 2f05c5d5b04e8a69cf50f538ef3fb1932ab83bd7dc690c438c7b876049cb1515eb4ca9fa29400ed7cd5885f34c901bf6a26d9149dfff8665d8302cace7e96d72 languageName: node linkType: hard -"core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.25.1": - version: 3.30.0 - resolution: "core-js-pure@npm:3.30.0" - checksum: a2ee75f5d7a01be2fc173815cc837ec8b2e3f46543e13f3ec009c765247da0b342d386f22dc4bd91e2541874151feb316a61b61158cc305e681c89d155e5b223 +"core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": + version: 3.31.1 + resolution: "core-js-pure@npm:3.31.1" + checksum: 58e126c2fb3d2758f29f947edc9a561b367189d158f98bfdf6169a7fafbbafc61ae4a9c69df6ed48a7b3985727c60eead82b2072f66f5ca0d911b9b4c74cbb8c languageName: node linkType: hard @@ -12657,6 +13555,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^3.8.2": + version: 3.31.1 + resolution: "core-js@npm:3.31.1" + checksum: 17b44ddc675d7e924ecf0da21dcae3dc9e26758048e3275ba05fcd1a8805d45e6bacee1335b781e9d59d0c38302d5cbfc49073ef33232387459f432852fb6cd9 + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -12671,18 +13576,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^4.3.0": - version: 4.3.0 - resolution: "cosmiconfig-typescript-loader@npm:4.3.0" - peerDependencies: - "@types/node": "*" - cosmiconfig: ">=7" - ts-node: ">=10" - typescript: ">=3" - checksum: 15a0bad3befdc3bf1fddda4876068971508f8dc7e2fb24b16aa0641e1d629bf48f35ff23b87a01177d25e7d5ad8522b995eab76bf44180a27b9245b9eeb4f140 - languageName: node - linkType: hard - "cosmiconfig@npm:7.0.0": version: 7.0.0 resolution: "cosmiconfig@npm:7.0.0" @@ -12709,15 +13602,52 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.1.3": - version: 8.1.3 - resolution: "cosmiconfig@npm:8.1.3" +"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": + version: 8.2.0 + resolution: "cosmiconfig@npm:8.2.0" dependencies: import-fresh: ^3.2.1 js-yaml: ^4.1.0 parse-json: ^5.0.0 path-type: ^4.0.0 - checksum: 80144be230b89857e7c4cafd59ba8feb3f5f7e6dae90faa324629fdecf9a6fc3f5b4106c3623f69a1a3d77cb11ef90e5ab65a67f21d73ffda3d76b18f8e4e6c2 + checksum: 4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: ^4.1.0 + elliptic: ^6.5.3 + checksum: 77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: ^1.0.1 + inherits: ^2.0.1 + md5.js: ^1.3.4 + ripemd160: ^2.0.1 + sha.js: ^2.4.0 + checksum: d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + 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 + checksum: 24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 languageName: node linkType: hard @@ -12728,17 +13658,18 @@ __metadata: languageName: node linkType: hard -"critters@npm:0.0.16": - version: 0.0.16 - resolution: "critters@npm:0.0.16" +"critters@npm:0.0.19": + version: 0.0.19 + resolution: "critters@npm:0.0.19" dependencies: chalk: ^4.1.0 - css-select: ^4.2.0 - parse5: ^6.0.1 - parse5-htmlparser2-tree-adapter: ^6.0.1 - postcss: ^8.3.7 + css-select: ^5.1.0 + dom-serializer: ^2.0.0 + domhandler: ^5.0.2 + htmlparser2: ^8.0.2 + postcss: ^8.4.23 pretty-bytes: ^5.3.0 - checksum: c8f4734ed73636c671f2640e64e560507fb67bcbd03e3d46b398c2011e31c225e641369c1d40c37b3c773ba7076ff4ec004393b51acc3cafc537eb671bf3325d + checksum: facaed781d44aba3d55e92a6e280b397b4c393f8756fe8233afb5bf35ff1cb01562258eb4c910c534c8c7746a27b48a65ab111416733d9fb3f35fe50e65ac363 languageName: node linkType: hard @@ -12778,6 +13709,25 @@ __metadata: languageName: node linkType: hard +"crypto-browserify@npm:^3.12.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + 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 + checksum: 0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -12785,25 +13735,25 @@ __metadata: languageName: node linkType: hard -"css-loader@npm:6.7.3, css-loader@npm:^6.7.1, css-loader@npm:^6.7.3": - version: 6.7.3 - resolution: "css-loader@npm:6.7.3" +"css-loader@npm:6.8.1, css-loader@npm:^6.7.1, css-loader@npm:^6.7.3": + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" dependencies: icss-utils: ^5.1.0 - postcss: ^8.4.19 + postcss: ^8.4.21 postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 + postcss-modules-local-by-default: ^4.0.3 postcss-modules-scope: ^3.0.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.2.0 semver: ^7.3.8 peerDependencies: webpack: ^5.0.0 - checksum: 20f435f73d6d776ade4b8dd6c83e7eee65a139f510b2c7575e45d7500ce1b72618b408f4841afc7f34e1aaeef25603ddd10fd4920461907483e1e1e4472bff1f + checksum: a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 languageName: node linkType: hard -"css-select@npm:^4.1.3, css-select@npm:^4.2.0": +"css-select@npm:^4.1.3": version: 4.3.0 resolution: "css-select@npm:4.3.0" dependencies: @@ -12836,7 +13786,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.0.1": +"css-tree@npm:^2.0.1, css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" dependencies: @@ -12922,7 +13872,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2, csstype@npm:^3.1.0": +"csstype@npm:^3.0.2, csstype@npm:^3.1.0, csstype@npm:^3.1.1": version: 3.1.2 resolution: "csstype@npm:3.1.2" checksum: 32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 @@ -12936,32 +13886,32 @@ __metadata: languageName: node linkType: hard -"danger@npm:^10.6.2": - version: 10.9.0 - resolution: "danger@npm:10.9.0" +"danger@npm:^11.2.6": + version: 11.2.6 + resolution: "danger@npm:11.2.6" dependencies: - "@babel/polyfill": ^7.2.5 - "@octokit/rest": ^16.43.1 + "@gitbeaker/node": ^21.3.0 + "@octokit/rest": ^18.12.0 async-retry: 1.2.3 chalk: ^2.3.0 commander: ^2.18.0 + core-js: ^3.8.2 debug: ^4.1.1 fast-json-patch: ^3.0.0-1 get-stdin: ^6.0.0 - gitlab: ^10.0.1 - http-proxy-agent: ^2.1.0 - https-proxy-agent: ^2.2.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 hyperlinker: ^1.0.0 json5: ^2.1.0 jsonpointer: ^5.0.0 - jsonwebtoken: ^8.4.0 + jsonwebtoken: ^9.0.0 lodash.find: ^4.6.0 lodash.includes: ^4.3.0 lodash.isobject: ^3.0.2 lodash.keys: ^4.0.8 lodash.mapvalues: ^4.6.0 lodash.memoize: ^4.1.2 - memfs-or-file-map-to-github-branch: ^1.1.0 + memfs-or-file-map-to-github-branch: ^1.2.1 micromatch: ^4.0.4 node-cleanup: ^2.1.2 node-fetch: ^2.6.7 @@ -12974,6 +13924,7 @@ __metadata: pinpoint: ^1.1.0 prettyjson: ^1.2.1 readline-sync: ^1.4.9 + regenerator-runtime: ^0.13.9 require-from-string: ^2.0.2 supports-hyperlinks: ^1.0.1 bin: @@ -12986,7 +13937,7 @@ __metadata: danger-process: distribution/commands/danger-process.js danger-reset-status: distribution/commands/danger-reset-status.js danger-runner: distribution/commands/danger-runner.js - checksum: b8a6d9d04d0ea97ee0a7bf76c6062a6499616e2b0a1a3acbe604b0115a34bbdfba1bb9e096a0abe7f58be3f7d7eb53cfbb42ff36d21184b15fce0cccbf5ee1ed + checksum: 2968fbf2be3eb4b337d95e929381f69bd226bb45e54a44546600242275aae50e3a9e48557f1e0625e542d9fc99bdd67656591434aa2fdeea1f8e64a59de8b91f languageName: node linkType: hard @@ -12997,7 +13948,14 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^3.0.1, data-urls@npm:^3.0.2": +"data-uri-to-buffer@npm:^4.0.0": + version: 4.0.1 + resolution: "data-uri-to-buffer@npm:4.0.1" + checksum: 20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": version: 3.0.2 resolution: "data-urls@npm:3.0.2" dependencies: @@ -13009,9 +13967,11 @@ __metadata: linkType: hard "date-fns@npm:^2.0.1": - version: 2.29.3 - resolution: "date-fns@npm:2.29.3" - checksum: aa9128c876ef69a05988029d6aa3d7e5c47a1e978f18b77b48126683d1a2e6605a16c3f5293ca9f4ca790d0755b5061fcea5b469f097871cd53f6590a5c1adc4 + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": ^7.21.0 + checksum: e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 languageName: node linkType: hard @@ -13038,16 +13998,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:3.1.0": - version: 3.1.0 - resolution: "debug@npm:3.1.0" - dependencies: - ms: 2.0.0 - checksum: 5bff34a352d7b2eaa31886eeaf2ee534b5461ec0548315b2f9f80bd1d2533cab7df1fa52e130ce27bc31c3945fbffb0fc72baacdceb274b95ce853db89254ea4 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -13059,7 +14010,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.1.0, debug@npm:^3.2.6, debug@npm:^3.2.7": +"debug@npm:^3.2.6, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -13085,7 +14036,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.3.1, decimal.js@npm:^10.4.2": +"decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee @@ -13108,6 +14059,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: ^3.1.0 + checksum: bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + languageName: node + linkType: hard + "dedent@npm:0.7.0, dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" @@ -13116,14 +14076,15 @@ __metadata: linkType: hard "deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" + version: 2.2.2 + resolution: "deep-equal@npm:2.2.2" dependencies: + array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 - es-get-iterator: ^1.1.2 - get-intrinsic: ^1.1.3 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.1 is-arguments: ^1.1.1 - is-array-buffer: ^3.0.1 + is-array-buffer: ^3.0.2 is-date-object: ^1.0.5 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 @@ -13131,16 +14092,16 @@ __metadata: object-is: ^1.1.5 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 side-channel: ^1.0.4 which-boxed-primitive: ^1.0.2 which-collection: ^1.0.1 which-typed-array: ^1.1.9 - checksum: 31de99f3c1b516ef67ba82cbe54fdc1691cdd93ab8ede561eee94f7f8baff6594ddc0860c48707f6cd12e4efd5421e3450e20c40ca71906a9d0abe9017944cd3 + checksum: 07b46a9a848efdab223abc7e3ba612ef9168d88970c3400df185d5840a30ca384749c996ae5d7af844d6b27c42587fb73a4445c63e38aac77c2d0ed9a63faa87 languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -13168,7 +14129,7 @@ __metadata: languageName: node linkType: hard -"default-browser-id@npm:3.0.0": +"default-browser-id@npm:3.0.0, default-browser-id@npm:^3.0.0": version: 3.0.0 resolution: "default-browser-id@npm:3.0.0" dependencies: @@ -13178,6 +14139,18 @@ __metadata: languageName: node linkType: hard +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 7c8848badc139ecf9d878e562bc4e7ab4301e51ba120b24d8dcb14739c30152115cc612065ac3ab73c02aace4afa29db5a044257b2f0cf234f16e3a58f6c925e + languageName: node + linkType: hard + "default-gateway@npm:^6.0.3": version: 6.0.3 resolution: "default-gateway@npm:6.0.3" @@ -13196,6 +14169,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^2.0.0": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -13203,7 +14183,14 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": version: 1.2.0 resolution: "define-properties@npm:1.2.0" dependencies: @@ -13299,13 +14286,23 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": +"dequal@npm:^2.0.0, dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 languageName: node linkType: hard +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + checksum: 671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -13334,6 +14331,13 @@ __metadata: languageName: node linkType: hard +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -13363,13 +14367,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^26.6.2": - version: 26.6.2 - resolution: "diff-sequences@npm:26.6.2" - checksum: a576b78f542377ce2bb032aa91aaf12376c6f562f79b2570f5fe16b4c18acff78de144ae44f0d86bedfe9c29ef38aa027db963850213e07bbc1c1a3b2834e861 - languageName: node - linkType: hard - "diff-sequences@npm:^29.4.3": version: 29.4.3 resolution: "diff-sequences@npm:29.4.3" @@ -13400,6 +14397,17 @@ __metadata: languageName: node linkType: hard +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: ^4.1.0 + miller-rabin: ^4.0.0 + randombytes: ^2.0.0 + checksum: ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + "dir-glob@npm:^2.0.0": version: 2.2.2 resolution: "dir-glob@npm:2.2.2" @@ -13433,11 +14441,11 @@ __metadata: linkType: hard "dns-packet@npm:^5.2.2": - version: 5.5.0 - resolution: "dns-packet@npm:5.5.0" + version: 5.6.0 + resolution: "dns-packet@npm:5.6.0" dependencies: "@leichtgewicht/ip-codec": ^2.0.1 - checksum: a9edc40e3dc0cd8a90f4a1311e1cbb0dfc15963c88fe818637f4cb3229e673b08aa649a82d5a26920e7c01ea24a6927c48e2976ce598c96685a6a1919e2a529a + checksum: b458d9c8c9f346fdf1d6e88998dc29815f1eac51c05061510b903b9b882d48cac95b132c5c33eeb330665a7c85227a922767a3eb72ce7be143964a1cce63b770 languageName: node linkType: hard @@ -13514,6 +14522,13 @@ __metadata: languageName: node linkType: hard +"domain-browser@npm:^4.22.0": + version: 4.22.0 + resolution: "domain-browser@npm:4.22.0" + checksum: 2ef7eda6d2161038fda0c9aa4c9e18cc7a0baa89ea6be975d449527c2eefd4b608425db88508e2859acc472f46f402079274b24bd75e3fb506f28c5dba203129 + languageName: node + linkType: hard + "domelementtype@npm:1, domelementtype@npm:^1.3.1": version: 1.3.1 resolution: "domelementtype@npm:1.3.1" @@ -13564,7 +14579,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" dependencies: @@ -13595,13 +14610,13 @@ __metadata: linkType: hard "domutils@npm:^3.0.1": - version: 3.0.1 - resolution: "domutils@npm:3.0.1" + version: 3.1.0 + resolution: "domutils@npm:3.1.0" dependencies: dom-serializer: ^2.0.0 domelementtype: ^2.3.0 - domhandler: ^5.0.1 - checksum: 8ec14e7e54f58cae0062fa9aaf97c05a094733ff6df8ede588c57d96799ceb45d1ea46479e8dd285f43af43b3e7618a501b2b41d2c2080078d5947b5fee2b5f9 + domhandler: ^5.0.3 + checksum: 342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 languageName: node linkType: hard @@ -13641,9 +14656,9 @@ __metadata: linkType: hard "dotenv@npm:^16.0.0": - version: 16.0.3 - resolution: "dotenv@npm:16.0.3" - checksum: 109457ac5f9e930ca8066ea33887b6f839ab24d647a7a8b49ddcd1f32662e2c35591c5e5b9819063e430148a664d0927f0cbe60cf9575d89bc524f47ff7e78f0 + version: 16.3.1 + resolution: "dotenv@npm:16.3.1" + checksum: b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 languageName: node linkType: hard @@ -13711,6 +14726,13 @@ __metadata: languageName: node linkType: hard +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -13720,20 +14742,6 @@ __metadata: languageName: node linkType: hard -"ecstatic@npm:^3.3.2": - version: 3.3.2 - resolution: "ecstatic@npm:3.3.2" - dependencies: - he: ^1.1.1 - mime: ^1.6.0 - minimist: ^1.1.0 - url-join: ^2.0.5 - bin: - ecstatic: ./lib/ecstatic.js - checksum: e94ca9331c5035d7d553a5f15ed40c47ed62a723a49aec6011628952f7cc9a24005bf737a0256e0c65f8a305fb99889fefbe9e5bc4760bd2cbe611f516b849ef - languageName: node - linkType: hard - "editions@npm:^1.1.1": version: 1.3.4 resolution: "editions@npm:1.3.4" @@ -13759,10 +14767,25 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.284": - version: 1.4.350 - resolution: "electron-to-chromium@npm:1.4.350" - checksum: 026603e4fac93a17e8fafb53d5c217a7259be23cb67d0d6e11ff0f054407f0013a2e2fc96042f1c2082d101aded46be501904299b33cd3458bf8d01be90077f8 +"electron-to-chromium@npm:^1.4.431": + version: 1.4.470 + resolution: "electron-to-chromium@npm:1.4.470" + checksum: a38dc521d9e93ab5d6ea6490169b36e3b308054e0693bfe865d79f02ad0ed779ca08119911c60c66b4440ab30aac84ceab27577a7ed977e3dc4121923e36cf35 + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + 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 + checksum: 5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 languageName: node linkType: hard @@ -13889,8 +14912,8 @@ __metadata: linkType: hard "ember-source@npm:~3.28.1": - version: 3.28.11 - resolution: "ember-source@npm:3.28.11" + version: 3.28.12 + resolution: "ember-source@npm:3.28.12" dependencies: "@babel/helper-module-imports": ^7.8.3 "@babel/plugin-transform-block-scoping": ^7.8.3 @@ -13918,7 +14941,7 @@ __metadata: resolve: ^1.17.0 semver: ^7.3.4 silent-error: ^1.1.1 - checksum: 232ed27d63e01a4f02928f07beca37b5d97a2370165040681327671d0714e6221986db07ea643af251a2434bd530272d96fabbdd5f6d956acc35bc53b0d4e519 + checksum: 56efa0000245794f705d1fc8515d2d6cc7144356ed55114d31e5110e152e6f1dfa959259eef358d4c4b2edef571b42db9d0d0522ec16176727cadeacc89bc92a languageName: node linkType: hard @@ -13964,7 +14987,7 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.12, encoding@npm:^0.1.13": +"encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -13993,27 +15016,17 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.10.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.7.0": - version: 5.12.0 - resolution: "enhanced-resolve@npm:5.12.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 5738924cfe3641d04b89c2856fee3d109d7bd71bbe234fb7f54843dda65f293e5f3eee6d5970ced70dbb09016085b961e60d1eb26cac72a21044479954b6cdfd - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.13.0": - version: 5.13.0 - resolution: "enhanced-resolve@npm:5.13.0" +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.14.1, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.7.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: 9aa28d0aeb5b6a5bc2340884ac9f90a3fa96e5514ad3f5fb318089843668581a96bdeddfd743fbd8b9407d16e82dd60cf6151fc1af8dd17a43490e0f9093950c + checksum: 69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a languageName: node linkType: hard -"enquirer@npm:^2.3.6, enquirer@npm:~2.3.6": +"enquirer@npm:~2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: @@ -14058,9 +15071,9 @@ __metadata: linkType: hard "entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: b7971419897622d3996bbbff99249e166caaaf3ea95d3841d6dc5d3bf315f133b649fbe932623e3cc527d871112e7563a8284e24f23e472126aa90c4e9c3215b + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 languageName: node linkType: hard @@ -14072,11 +15085,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3, envinfo@npm:^7.7.4": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" bin: envinfo: dist/cli.js - checksum: 01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 + checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf languageName: node linkType: hard @@ -14208,16 +15221,17 @@ __metadata: linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" + version: 1.22.1 + resolution: "es-abstract@npm:1.22.1" dependencies: array-buffer-byte-length: ^1.0.0 + arraybuffer.prototype.slice: ^1.0.1 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 @@ -14237,15 +15251,19 @@ __metadata: object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 + safe-array-concat: ^1.0.0 safe-regex-test: ^1.0.0 string.prototype.trim: ^1.2.7 string.prototype.trimend: ^1.0.6 string.prototype.trimstart: ^1.0.6 + typed-array-buffer: ^1.0.0 + 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.9 - checksum: 7dc2c882bafbb13609b9c35c29f0717ebf5a4dbde23a73803be821f349aa38d55f324318ccebb6da83c074260622f11d0a7f4cd1e0e19f52cc03b6b5386693fb + which-typed-array: ^1.1.10 + checksum: 36abed2b7efa8dd337d938e50d0b97d070c0ef45b2257eec0ae8c3edc5c7e8f3e2906530afda5c0b8a4f44299391d078237fd5ea454ac4e9adb6f8343bf84980 languageName: node linkType: hard @@ -14256,7 +15274,7 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.2": +"es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" dependencies: @@ -14273,7 +15291,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^0.9.0, es-module-lexer@npm:^0.9.3": +"es-module-lexer@npm:^0.9.3": version: 0.9.3 resolution: "es-module-lexer@npm:0.9.3" checksum: be77d73aee709fdc68d22b9938da81dfee3bc45e8d601629258643fe5bfdab253d6e2540035e035cfa8cf52a96366c1c19b46bcc23b4507b1d44e5907d2e7f6c @@ -14281,9 +15299,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: 6e0a9095e0abe38f480e0f366cdeca19db64d85a533da9332739a64d70e97a61e68c1f98a2396468ae6229245b8e5edcb1e48c4d3615ae4da9052a1bdc2367e2 + version: 1.3.0 + resolution: "es-module-lexer@npm:1.3.0" + checksum: cbd9bdc65458d4c4bd0d22a1c792926bfdf7bb6a96a9ed04da7d31f317159bd4945d2dbeb318717f9214f9695ee85a8fae64a5d25bf360baa82b58079032fc7a languageName: node linkType: hard @@ -14332,22 +15350,6 @@ __metadata: languageName: node linkType: hard -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 - languageName: node - linkType: hard - -"es6-promisify@npm:^5.0.0": - version: 5.0.0 - resolution: "es6-promisify@npm:5.0.0" - dependencies: - es6-promise: ^4.0.3 - checksum: 23284c6a733cbf7842ec98f41eac742c9f288a78753c4fe46652bae826446ced7615b9e8a5c5f121a08812b1cd478ea58630f3e1c3d70835bd5dcd69c7cd75c9 - languageName: node - linkType: hard - "esbuild-loader@npm:^3.0.0": version: 3.0.1 resolution: "esbuild-loader@npm:3.0.1" @@ -14380,50 +15382,50 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:0.17.18": - version: 0.17.18 - resolution: "esbuild-wasm@npm:0.17.18" +"esbuild-wasm@npm:0.17.19": + version: 0.17.19 + resolution: "esbuild-wasm@npm:0.17.19" bin: esbuild: bin/esbuild - checksum: 1462acb7603b6351f5c204c57ec1c5550cb90da9e09ffb4cf9dced8692e3d89b2f882846b1780ac24141b19cb8008c3bdd1362d8fb3a0cd9df03a3e14633b5ef + checksum: 42b1800031cd3e9504ef328de225b36af61d995c000c1b2dcfb9f6c7b9bb35b43a531d19fa285ecadf4584cc4db940ad59ba666b4b9b6011670302ceb8b52273 languageName: node linkType: hard "esbuild-wasm@npm:>=0.13.8": - version: 0.17.15 - resolution: "esbuild-wasm@npm:0.17.15" + version: 0.18.16 + resolution: "esbuild-wasm@npm:0.18.16" bin: esbuild: bin/esbuild - checksum: e1207d7c01fa253e98ee57b19041621b951db591730e6d65cdc7741fcbd0eef9c34fad9de2cc969fc39f4b278d823c712431bd39cefe298cab1d3fa8dc028020 - languageName: node - linkType: hard - -"esbuild@npm:^0.17.0": - version: 0.17.15 - resolution: "esbuild@npm:0.17.15" - dependencies: - "@esbuild/android-arm": 0.17.15 - "@esbuild/android-arm64": 0.17.15 - "@esbuild/android-x64": 0.17.15 - "@esbuild/darwin-arm64": 0.17.15 - "@esbuild/darwin-x64": 0.17.15 - "@esbuild/freebsd-arm64": 0.17.15 - "@esbuild/freebsd-x64": 0.17.15 - "@esbuild/linux-arm": 0.17.15 - "@esbuild/linux-arm64": 0.17.15 - "@esbuild/linux-ia32": 0.17.15 - "@esbuild/linux-loong64": 0.17.15 - "@esbuild/linux-mips64el": 0.17.15 - "@esbuild/linux-ppc64": 0.17.15 - "@esbuild/linux-riscv64": 0.17.15 - "@esbuild/linux-s390x": 0.17.15 - "@esbuild/linux-x64": 0.17.15 - "@esbuild/netbsd-x64": 0.17.15 - "@esbuild/openbsd-x64": 0.17.15 - "@esbuild/sunos-x64": 0.17.15 - "@esbuild/win32-arm64": 0.17.15 - "@esbuild/win32-ia32": 0.17.15 - "@esbuild/win32-x64": 0.17.15 + checksum: 8e3261b2e918746521095ab317274c702c4638246224132bb6d41dd824eff1250fb5c647a6a8edd5a470d8a11962c1a15f10981008676a3d4fed49be759372c7 + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0": + version: 0.18.16 + resolution: "esbuild@npm:0.18.16" + dependencies: + "@esbuild/android-arm": 0.18.16 + "@esbuild/android-arm64": 0.18.16 + "@esbuild/android-x64": 0.18.16 + "@esbuild/darwin-arm64": 0.18.16 + "@esbuild/darwin-x64": 0.18.16 + "@esbuild/freebsd-arm64": 0.18.16 + "@esbuild/freebsd-x64": 0.18.16 + "@esbuild/linux-arm": 0.18.16 + "@esbuild/linux-arm64": 0.18.16 + "@esbuild/linux-ia32": 0.18.16 + "@esbuild/linux-loong64": 0.18.16 + "@esbuild/linux-mips64el": 0.18.16 + "@esbuild/linux-ppc64": 0.18.16 + "@esbuild/linux-riscv64": 0.18.16 + "@esbuild/linux-s390x": 0.18.16 + "@esbuild/linux-x64": 0.18.16 + "@esbuild/netbsd-x64": 0.18.16 + "@esbuild/openbsd-x64": 0.18.16 + "@esbuild/sunos-x64": 0.18.16 + "@esbuild/win32-arm64": 0.18.16 + "@esbuild/win32-ia32": 0.18.16 + "@esbuild/win32-x64": 0.18.16 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -14471,7 +15473,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 3c61a990737b86f3970bc01353fec61697fff8652c4beb8dc6f033aad8cc0e1aaa3caad50cd30410b930ec6ff46ddfe4d9fe805b4a095582e18beb59925c1024 + checksum: 7cb68f18fe10da783195d9b382956de6dc2084e60ef5843f17dc3a5114ba8f51578ff68076ec6039f0c583ba95f22fa0502a7b2eb9236d6d1bdd9987142d6021 languageName: node linkType: hard @@ -14517,14 +15519,13 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" +"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -14532,7 +15533,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 + checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -14601,11 +15602,12 @@ __metadata: linkType: hard "eslint-import-resolver-typescript@npm:^3.5.2": - version: 3.5.4 - resolution: "eslint-import-resolver-typescript@npm:3.5.4" + version: 3.5.5 + resolution: "eslint-import-resolver-typescript@npm:3.5.5" dependencies: debug: ^4.3.4 enhanced-resolve: ^5.12.0 + eslint-module-utils: ^2.7.4 get-tsconfig: ^4.5.0 globby: ^13.1.3 is-core-module: ^2.11.0 @@ -14614,19 +15616,19 @@ __metadata: peerDependencies: eslint: "*" eslint-plugin-import: "*" - checksum: fb5b1e61810ddabee544bd42b11171e50dbe2e80cbed1cee2b70830604a0398f75ce269aa07b5e2cf485beb2dbfcbbd75d4286cc67b429bcf1c4d56668990af4 + checksum: 6cdbfae5be1087b2f18fd82939697f085a9b766e518494c45efd84b3eba3e2640f00e155b824cff4d1d9d518b46cc86082e7c72a37c784b22f5064d55c634724 languageName: node linkType: hard "eslint-module-utils@npm:^2.7.4": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: a14368a03d01824e4780e76df08460bbd5dcbf9d58944faf8660079559d169ab2b163b9b1b21fa2955c31c76f4ad348fdcde1bf0ef50cda7e14b89f6257b0eda + checksum: c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df languageName: node linkType: hard @@ -14742,6 +15744,12 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-local-rules@portal:../scripts/eslint-plugin-local-rules::locator=%40storybook%2Froot%40workspace%3A.": + version: 0.0.0-use.local + resolution: "eslint-plugin-local-rules@portal:../scripts/eslint-plugin-local-rules::locator=%40storybook%2Froot%40workspace%3A." + languageName: node + linkType: soft + "eslint-plugin-prettier@npm:^3.4.0": version: 3.4.1 resolution: "eslint-plugin-prettier@npm:3.4.1" @@ -14774,8 +15782,8 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.24.0, eslint-plugin-react@npm:^7.31.10": - version: 7.32.2 - resolution: "eslint-plugin-react@npm:7.32.2" + version: 7.33.0 + resolution: "eslint-plugin-react@npm:7.33.0" dependencies: array-includes: ^3.1.6 array.prototype.flatmap: ^1.3.1 @@ -14790,17 +15798,17 @@ __metadata: object.values: ^1.1.6 prop-types: ^15.8.1 resolve: ^2.0.0-next.4 - semver: ^6.3.0 + semver: ^6.3.1 string.prototype.matchall: ^4.0.8 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 9ddd5cfc508555a5cb3edbdcc9138dd472d269d3a45da0be3e267ea2b3fa1b5990823675208c0e11376c9c55e46aaad5b7a5f46c965eb4dcf6f1eebcebf174c3 + checksum: 015aaaa133bacd99bd1f82b91852d6fcca7e2b6c11d1ef96ed3c0dae0b5fe89230f66990e12898f237f3f67296234650130e0337db669c32e30132ccae66a696 languageName: node linkType: hard "eslint-plugin-storybook@npm:^0.6.6": - version: 0.6.11 - resolution: "eslint-plugin-storybook@npm:0.6.11" + version: 0.6.13 + resolution: "eslint-plugin-storybook@npm:0.6.13" dependencies: "@storybook/csf": ^0.0.1 "@typescript-eslint/utils": ^5.45.0 @@ -14808,7 +15816,7 @@ __metadata: ts-dedent: ^2.2.0 peerDependencies: eslint: ">=6" - checksum: dedc3323023e43c1e5081c798f0b9f8383d340578c430d111c31d83b72392533dde7885b898ca7cde92bcec2c4ad97e34dd2d241c4120fdd83447d915e3d400a + checksum: 3fa79d8cf765d108f4be697246183d94de448301b56767e292c36ec1a9c12ae4f6b64f32c5e5f84b50e214f5bf2f0385d40f5543908f561319e4c8bb8bcdfb99 languageName: node linkType: hard @@ -14822,13 +15830,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"eslint-scope@npm:^7.2.0": + version: 7.2.1 + resolution: "eslint-scope@npm:7.2.1" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 3ae3280cbea34af3b816e941b83888aca063aaa0169966ff7e4c1bfb0715dbbeac3811596e56315e8ceea84007a7403754459ae4f1d19f25487eb02acd951aa7 + checksum: 7207497acab2be257979d43403368fb07d3172227d576e04f5906218d76ed7ee99e7116ca71c31b4e00ecc7bb0a00efd98b338c74aa9eec7b7dea7010f9e6da8 languageName: node linkType: hard @@ -14839,22 +15847,22 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.1.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.0": - version: 3.4.0 - resolution: "eslint-visitor-keys@npm:3.4.0" - checksum: 8b8cc611219b8864952a7485540482763e33289d734161bd6fe00cb6c1fc98af6bd8fe5c1d02d6d2b2657ff5cc52d30828fd52606ed50924412953a3e7d95cb7 +"eslint-visitor-keys@npm:^3.1.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.1 + resolution: "eslint-visitor-keys@npm:3.4.1" + checksum: b4ebd35aed5426cd81b1fb92487825f1acf47a31e91d76597a3ee0664d69627140c4dafaf9b319cfeb1f48c1113a393e21a734c669e6565a72e6fcc311bd9911 languageName: node linkType: hard "eslint@npm:^8.28.0": - version: 8.37.0 - resolution: "eslint@npm:8.37.0" + version: 8.45.0 + resolution: "eslint@npm:8.45.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.2 - "@eslint/js": 8.37.0 - "@humanwhocodes/config-array": ^0.11.8 + "@eslint/eslintrc": ^2.1.0 + "@eslint/js": 8.44.0 + "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 @@ -14863,9 +15871,9 @@ __metadata: debug: ^4.3.2 doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-visitor-keys: ^3.4.0 - espree: ^9.5.1 + eslint-scope: ^7.2.0 + eslint-visitor-keys: ^3.4.1 + espree: ^9.6.0 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -14873,26 +15881,23 @@ __metadata: find-up: ^5.0.0 glob-parent: ^6.0.2 globals: ^13.19.0 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 - optionator: ^0.9.1 + optionator: ^0.9.3 strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 3798781652b1c32d8a4a654c2dd7f2abbff808a806ddd7fd8f86a49586a824854369943d49ee52dcda47b8b03cd49585820f2ab69fc61bb17a0d7677785a2cf7 + checksum: 2a043b8d3b9a5684e2f66bd446c3dc8522cc7afbb0982d0a5be76ea1f578d0e617598a7b289616a861ab8272b57f6056acb2b264bec6302c9b0921a1cfa66fdb languageName: node linkType: hard @@ -14907,14 +15912,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.5.1": - version: 9.5.1 - resolution: "espree@npm:9.5.1" +"espree@npm:^9.6.0": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.0 - checksum: a67a1551895aa25c59c182a58e45d31a34cbeffb4a3731812db0a859fa0373cd9921af22a8aae15f42c3bf22c75a1dbd2304cdeb6530a5e7f672af87a9f9ef5f + eslint-visitor-keys: ^3.4.1 + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -14995,6 +16000,15 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.0, estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -15037,6 +16051,17 @@ __metadata: languageName: node linkType: hard +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: ^1.3.4 + node-gyp: latest + safe-buffer: ^5.1.1 + checksum: 77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + "execa@npm:5.0.0": version: 5.0.0 resolution: "execa@npm:5.0.0" @@ -15086,23 +16111,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^4.1.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 - strip-final-newline: ^2.0.0 - checksum: 02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba - languageName: node - linkType: hard - "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -15120,6 +16128,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^7.0.0, execa@npm:^7.1.1": + version: 7.1.1 + resolution: "execa@npm:7.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.1 + human-signals: ^4.3.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^3.0.7 + strip-final-newline: ^3.0.0 + checksum: 0da5ee1c895b62142bc3d1567d1974711c28c2cfa6bae96e1923379bd597e476d762a13f282f92815d8ebfa33407949634fa32a0d6db8334a20e625fe11d4351 + languageName: node + linkType: hard + "exectimer@npm:^2.2.2": version: 2.2.2 resolution: "exectimer@npm:2.2.2" @@ -15161,37 +16186,31 @@ __metadata: languageName: node linkType: hard -"expect-type@npm:^0.14.2": - version: 0.14.2 - resolution: "expect-type@npm:0.14.2" - checksum: 862d5cb25a07b1dc26032ceeab2975f047e641175db2d3bbb34cee73ed8c04ca5e93457cc59ddf5006ddd7a694eb0e0bf2537512caa41e533a2044ed9d13a775 +"expect-type@npm:^0.15.0": + version: 0.15.0 + resolution: "expect-type@npm:0.15.0" + checksum: d5ffc86df1937290a6555e763f76a8c27d18d9bfa63e18788a79ff52bba3d2a9a518af1163d437854efca6bd8e03768a2c4b10ea29e861c9d6f57ff53f19c3c4 languageName: node linkType: hard -"expect@npm:^26.6.2": - version: 26.6.2 - resolution: "expect@npm:26.6.2" +"expect@npm:^29.0.0, expect@npm:^29.6.1": + version: 29.6.1 + resolution: "expect@npm:29.6.1" dependencies: - "@jest/types": ^26.6.2 - ansi-styles: ^4.0.0 - jest-get-type: ^26.3.0 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - checksum: e84ab6c96e99eaf92586e5c554317413352082b66be952ba338bf690e15106c0b6350ac99d0d66237d675cc75963811255120d47172a8e764b1d6a9ae2b6b1b4 + "@jest/expect-utils": ^29.6.1 + "@types/node": "*" + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + checksum: 8ffdd2c8c09d6d632ae85a1172a7e785e75f187ac0009330fa5bcb00e07a06d781b8016579952a1f0ef43e1604068fcdaade3029c8b5ffb99931f79bff57e778 languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" - dependencies: - "@jest/expect-utils": ^29.5.0 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - checksum: 3c9382967217ad1453e9271e0da3f83c4aeb12272968007b90fc5873340e7fb64bf4852e1522bdf27556623d031ce62f82aaac09e485a15c6d0589d50999422d +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 languageName: node linkType: hard @@ -15335,9 +16354,22 @@ __metadata: linkType: hard "fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 2fbcb23957fb0bc920832a94ba627b860400f9cce45e1594e931dabf62e858369a58c6c2603e2ecc4f7679580f710b5b5b6e698a355a9a9bfcfd93c06c7c4350 + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-glob@npm:3.2.12": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + 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 + checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 languageName: node linkType: hard @@ -15354,16 +16386,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" 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 - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + checksum: b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c languageName: node linkType: hard @@ -15388,7 +16420,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -15405,8 +16437,8 @@ __metadata: linkType: hard "fast-sourcemap-concat@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-sourcemap-concat@npm:2.1.0" + version: 2.1.1 + resolution: "fast-sourcemap-concat@npm:2.1.1" dependencies: chalk: ^2.0.0 fs-extra: ^5.0.0 @@ -15415,8 +16447,7 @@ __metadata: mkdirp: ^0.5.0 source-map: ^0.4.2 source-map-url: ^0.3.0 - sourcemap-validator: ^1.1.0 - checksum: 96a75d73c1e5cecf1135a8012541d12a4069c23e474f516aa6ab90fdd20f508509d71ca6e86019ca9e1bc8ccc7a7429a5972cb014e62650d08e52e7e92909796 + checksum: dfdbd9ad51800aae23effc95657e8e6c1cdcddbf1da6416a8c5ca36c63635da331d024510c70804868982f6ff130e2a88971b1e1d1b7a21bc35ce59803114b20 languageName: node linkType: hard @@ -15472,10 +16503,20 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": + version: 3.2.0 + resolution: "fetch-blob@npm:3.2.0" + dependencies: + node-domexception: ^1.0.0 + web-streams-polyfill: ^3.0.3 + checksum: 60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69 + languageName: node + linkType: hard + "fetch-retry@npm:^5.0.2": - version: 5.0.4 - resolution: "fetch-retry@npm:5.0.4" - checksum: 4ad3444a243ca3c1e12454f111aa2270d315b0359711c604467b566945ebfeb738720db630dd106bc60230af49da61cbe87be04b99a8a49bd010716b02865b23 + version: 5.0.6 + resolution: "fetch-retry@npm:5.0.6" + checksum: 349f50db631039630e915f70c763469cb696f3ac92ca6f63823109334a2bc62f63670b8c5a5c7e0195c39df517e60ef385cc5264f4c4904d0c6707d371fa8999 languageName: node linkType: hard @@ -15504,13 +16545,13 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:^2.0.0": - version: 2.0.2 - resolution: "file-system-cache@npm:2.0.2" +"file-system-cache@npm:2.3.0": + version: 2.3.0 + resolution: "file-system-cache@npm:2.3.0" dependencies: - fs-extra: ^11.1.0 - ramda: ^0.28.0 - checksum: e82fb68e224f7cda9ae2315a5b795470ac225082d8913059d841e1e141d1b370cb75bdc8215f46ab28bfc7e37c0892d8ea8123d31590229282796134dbed1c84 + fs-extra: 11.1.1 + ramda: 0.29.0 + checksum: 43de19f0db32e6546bb7abeecb1d6ea83c1eca23b38905c9415a29f6219cc9d6d87b0c1a6aca92c46a0f1bc276241a339f2f68b8aa0ca5c2eb64b6e1e3e4da01 languageName: node linkType: hard @@ -15521,7 +16562,7 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.1": +"filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" dependencies: @@ -15558,6 +16599,13 @@ __metadata: languageName: node linkType: hard +"filter-obj@npm:^2.0.2": + version: 2.0.2 + resolution: "filter-obj@npm:2.0.2" + checksum: 65899fb1151e16d3289c23e7d6c2a9276592de1e16ab8e14c29d225768273ac48a92d3be4182496a16d89a046cf24ebcbecef7fdac8c27c3c29feafc4fb9fdb3 + languageName: node + linkType: hard + "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" @@ -15605,6 +16653,16 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + "find-index@npm:^1.1.0": version: 1.1.1 resolution: "find-index@npm:1.1.1" @@ -15657,6 +16715,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + "find-versions@npm:^4.0.0": version: 4.0.0 resolution: "find-versions@npm:4.0.0" @@ -15716,9 +16784,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.203.1 - resolution: "flow-parser@npm:0.203.1" - checksum: bcb656da5f923a52bf6079b31fddd3132113280a52d11ed93aaa261f4169317bbf1c4fa2212126ebfdedefb236e6c0c9db0aac737a96dcac0fd89aa2154ca7a9 + version: 0.213.1 + resolution: "flow-parser@npm:0.213.1" + checksum: 26ffdc4b08dbbbdb71d023ef327e133e2b3ba8d2efb60a19dcaf2598fbb4977c203dda216c1279de3b4a06037413be0ae518a805cbddcc1bf9e4873efcedb9fb languageName: node linkType: hard @@ -15738,7 +16806,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.15.0": +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" peerDependenciesMeta: @@ -15784,9 +16852,9 @@ __metadata: languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:^7.2.8": - version: 7.3.0 - resolution: "fork-ts-checker-webpack-plugin@npm:7.3.0" +"fork-ts-checker-webpack-plugin@npm:^8.0.0": + version: 8.0.0 + resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" dependencies: "@babel/code-frame": ^7.16.7 chalk: ^4.1.2 @@ -15802,23 +16870,8 @@ __metadata: tapable: ^2.2.1 peerDependencies: typescript: ">3.6.0" - vue-template-compiler: "*" webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 00a3dad0815178db485317d8909dc1171c0bb97e43dac004a74048b36ddc0260db188fcb5eebb01a54fb280a82acf55e5a5d09e1e55ffa80b77ad41e5c8ba539 - languageName: node - linkType: hard - -"form-data@npm:^2.5.0": - version: 2.5.1 - resolution: "form-data@npm:2.5.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 7e8fb913b84a7ac04074781a18d0f94735bbe82815ff35348803331f6480956ff0035db5bcf15826edee09fe01e665cfac664678f1526646a6374ee13f960e56 + checksum: 1a2bb9bbd3e943e3b3a45d7fa9e8383698f5fea1ba28f7d18c8372c804460c2f13af53f791360b973fddafd3e88de7af59082c3cb3375f4e7c3365cd85accedc languageName: node linkType: hard @@ -15851,9 +16904,18 @@ __metadata: languageName: node linkType: hard +"formdata-polyfill@npm:^4.0.10": + version: 4.0.10 + resolution: "formdata-polyfill@npm:4.0.10" + dependencies: + fetch-blob: ^3.1.2 + checksum: 5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6 + languageName: node + linkType: hard + "formik@npm:^2.2.9": - version: 2.2.9 - resolution: "formik@npm:2.2.9" + version: 2.4.2 + resolution: "formik@npm:2.4.2" dependencies: deepmerge: ^2.1.1 hoist-non-react-statics: ^3.3.0 @@ -15861,10 +16923,10 @@ __metadata: lodash-es: ^4.17.21 react-fast-compare: ^2.0.1 tiny-warning: ^1.0.2 - tslib: ^1.10.0 + tslib: ^2.0.0 peerDependencies: react: ">=16.8.0" - checksum: 2f040da2b7cc72e4eb1a5ebc935b9fd644ba625c75d4ee4689f47e584470c56630e46b2b71d00194ebd33e3ad1fb3726e2aef2812aad83c541f0097c4e70722f + checksum: ef17db09ba54d1bc30989e5797a07dc9335388c76235616e10d16b3a8acf33efa0f7f742e66179f910c84c8734a5103ac7dc67c778666a4088e8b1efd53f84b3 languageName: node linkType: hard @@ -15912,6 +16974,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0": + version: 11.1.1 + resolution: "fs-extra@npm:11.1.1" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 + languageName: node + linkType: hard + "fs-extra@npm:9.1.0, fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -15935,17 +17008,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0": - version: 11.1.1 - resolution: "fs-extra@npm:11.1.1" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 - languageName: node - linkType: hard - "fs-extra@npm:^5.0.0": version: 5.0.0 resolution: "fs-extra@npm:5.0.0" @@ -16002,18 +17064,18 @@ __metadata: linkType: hard "fs-minipass@npm:^3.0.0": - version: 3.0.1 - resolution: "fs-minipass@npm:3.0.1" + version: 3.0.2 + resolution: "fs-minipass@npm:3.0.2" dependencies: - minipass: ^4.0.0 - checksum: e0a15d4b7431c473a6789b29e0f42a15877ee69c20c5c34b27e10ec3775fb07a9bdc813483a1551ee96d960f30d8e84571ac9fdc7535e16c900ab1453a86518e + minipass: ^5.0.0 + checksum: 34726f25b968ac05f6122ea7e9457fe108c7ae3b82beff0256953b0e405def61af2850570e32be2eb05c1e7660b663f24e14b6ab882d1d8a858314faacc4c972 languageName: node linkType: hard -"fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: 197fd276d224d54a27c6267c69887ec29ccd4bedd83d72b5050abf3b6c6ef83d7b86a85a87f615c24a4e6f9a4888fd151c9f16a37ffb23e37c4c2d14c1da6275 +"fs-monkey@npm:^1.0.4": + version: 1.0.4 + resolution: "fs-monkey@npm:1.0.4" + checksum: eeb2457ec50f7202c44273de2a42b50868c8e6b2ab4825d517947143d4e727c028e24f6d0f46e6f3e7a149a1c9e7d8b3ca28243c3b10366d280a08016483e829 languageName: node linkType: hard @@ -16100,7 +17162,7 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": +"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca @@ -16148,18 +17210,18 @@ __metadata: linkType: hard "gauge@npm:^5.0.0": - version: 5.0.0 - resolution: "gauge@npm:5.0.0" + version: 5.0.1 + resolution: "gauge@npm:5.0.1" dependencies: 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 + signal-exit: ^4.0.1 string-width: ^4.2.3 strip-ansi: ^6.0.1 wide-align: ^1.1.5 - checksum: bcabe3b125c73d13aca8e5feb3b0960205f542a4d5ec0492ca1b8e3cc06068b0aad6bccb68c4253cb55015be90470df9f07fba9fd8f0cc8d6b0da767f1d783b5 + checksum: 845f9a2534356cd0e9c1ae590ed471bbe8d74c318915b92a34e8813b8d3441ca8e0eb0fa87a48081e70b63b84d398c5e66a13b8e8040181c10b9d77e9fe3287f languageName: node linkType: hard @@ -16209,14 +17271,22 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: function-bind: ^1.1.1 has: ^1.0.3 + has-proto: ^1.0.1 has-symbols: ^1.0.3 - checksum: 7c564f6b1061e6ca9eb1abab424a2cf80b93e75dcde65229d504e4055aa0ea54f88330e9b75d10e41c72bca881a947e84193b3549a4692d836f304239a178d63 + checksum: 49eab47f9de8f1a4f9b458b8b74ee5199fb2614414a91973eb175e07db56b52b6df49b255cc7ff704cb0786490fb93bfe8f2ad138b590a8de09b47116a366bc9 + languageName: node + linkType: hard + +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 languageName: node linkType: hard @@ -16227,13 +17297,6 @@ __metadata: languageName: node linkType: hard -"get-own-enumerable-property-symbols@npm:^3.0.0": - version: 3.0.2 - resolution: "get-own-enumerable-property-symbols@npm:3.0.2" - checksum: 103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 - languageName: node - linkType: hard - "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -16301,7 +17364,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: 49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 @@ -16319,9 +17382,11 @@ __metadata: linkType: hard "get-tsconfig@npm:^4.4.0, get-tsconfig@npm:^4.5.0": - version: 4.5.0 - resolution: "get-tsconfig@npm:4.5.0" - checksum: 0ff157b0f6cd9f92e4112b24522aa74c23b3207cb8ae7f491c2cac99fd65b811e955f61aace805121478b23619da2dbfc4cac3135f584e80038be86d16c5121a + version: 4.6.2 + resolution: "get-tsconfig@npm:4.6.2" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: 352c7313720b0f1172de5b6697da55c02744bacd8587f4cd989bfa25d8bb1af702128c2869121e6e4eef06c5c2f013406d2840905a8e898fd35351a305298ee1 languageName: node linkType: hard @@ -16451,21 +17516,6 @@ __metadata: languageName: node linkType: hard -"gitlab@npm:^10.0.1": - version: 10.2.1 - resolution: "gitlab@npm:10.2.1" - dependencies: - form-data: ^2.5.0 - humps: ^2.0.1 - ky: ^0.12.0 - ky-universal: ^0.3.0 - li: ^1.3.0 - query-string: ^6.8.2 - universal-url: ^2.0.0 - checksum: 0d5ca8206b0505eef6c5a1c3d1694910bacac89519c889491beec3efcf799ae5263dc8bb5953ef4ee272d557811e0f45a781d5b6ee27be3280b73d80093e0c65 - languageName: node - linkType: hard - "glob-parent@npm:5.1.2, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -16516,47 +17566,18 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.1.0, glob@npm:^8.0.1": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - -"glob@npm:^10.0.0": - version: 10.2.1 - resolution: "glob@npm:10.2.1" - dependencies: - foreground-child: ^3.1.0 - fs.realpath: ^1.0.0 - jackspeak: ^2.0.3 - minimatch: ^9.0.0 - minipass: ^5.0.0 - path-scurry: ^1.7.0 - bin: - glob: dist/cjs/src/bin.js - checksum: a640527535f46e71e407384cc580c42d1443c1ba1180befbb21406cdf6613718f655f39af129ab54d805a1f4787a61b459a2e1f3cd60f0a9c79563c936decba0 - languageName: node - linkType: hard - -"glob@npm:^10.2.2": - version: 10.2.2 - resolution: "glob@npm:10.2.2" +"glob@npm:^10.0.0, glob@npm:^10.2.2": + version: 10.3.3 + resolution: "glob@npm:10.3.3" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 - minimatch: ^9.0.0 - minipass: ^5.0.0 - path-scurry: ^1.7.0 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 24238fc36ea34f4874e858eeda7d94ae2de6dbdd40d8a75dc707dc20853357394a12e9340b3e46f9e50231bf904b15e5dec15d2de63631bb1d2e8d4920c04996 + checksum: 50effa4208762e508def5688e4d88242db80b5913f65e9c5d5aefb707c59e66a27e845fbf18127157189f6ed0f055e2c94d7112c97a065b9cbfe002e1b26d330 languageName: node linkType: hard @@ -16573,7 +17594,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": +"glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -16587,15 +17608,28 @@ __metadata: languageName: node linkType: hard -"glob@npm:^9.2.0, glob@npm:^9.3.0, glob@npm:^9.3.1": - version: 9.3.4 - resolution: "glob@npm:9.3.4" +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"glob@npm:^9.2.0": + version: 9.3.5 + resolution: "glob@npm:9.3.5" dependencies: fs.realpath: ^1.0.0 minimatch: ^8.0.2 minipass: ^4.2.4 path-scurry: ^1.6.1 - checksum: c030bbe2109ec6e75ad611bbaf4df2724080626315816eac6bd586955b17d8f91cfff2f5a17f41878f76d160fffc7fad2edb76e7338dc6e0256fbf2ad78537f4 + checksum: 2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e languageName: node linkType: hard @@ -16624,13 +17658,6 @@ __metadata: languageName: node linkType: hard -"globalyzer@npm:0.1.0": - version: 0.1.0 - resolution: "globalyzer@npm:0.1.0" - checksum: e16e47a5835cbe8a021423d4c7fcd9f5f85815b4190a7f50c1fdb95fc559d72e4fb30be96f106c66a99413f36d72da0f8323d19d27f60a8feec9d936139ec5a8 - languageName: node - linkType: hard - "globby@npm:10.0.0": version: 10.0.0 resolution: "globby@npm:10.0.0" @@ -16662,15 +17689,15 @@ __metadata: linkType: hard "globby@npm:^13.1.1, globby@npm:^13.1.3": - version: 13.1.3 - resolution: "globby@npm:13.1.3" + version: 13.2.2 + resolution: "globby@npm:13.2.2" dependencies: dir-glob: ^3.0.1 - fast-glob: ^3.2.11 - ignore: ^5.2.0 + fast-glob: ^3.3.0 + ignore: ^5.2.4 merge2: ^1.4.1 slash: ^4.0.0 - checksum: 34199932fad67ae6a4cca764eaad8e7678efabd4321f553bfb8a52046e03f8e8e2f9c14216a6734b692b7c26c4da1b1cfe9ce23733d28d1777d73f4bf34b09c7 + checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard @@ -16688,13 +17715,6 @@ __metadata: languageName: node linkType: hard -"globrex@npm:^0.1.2": - version: 0.1.2 - resolution: "globrex@npm:0.1.2" - checksum: a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 - languageName: node - linkType: hard - "glur@npm:^1.1.2": version: 1.1.2 resolution: "glur@npm:1.1.2" @@ -16739,6 +17759,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^11.1.4": + version: 11.8.6 + resolution: "got@npm:11.8.6" + dependencies: + "@sindresorhus/is": ^4.0.0 + "@szmarczak/http-timer": ^4.0.5 + "@types/cacheable-request": ^6.0.1 + "@types/responselike": ^1.0.0 + cacheable-lookup: ^5.0.3 + cacheable-request: ^7.0.2 + decompress-response: ^6.0.0 + http2-wrapper: ^1.0.0-beta.5.2 + lowercase-keys: ^2.0.0 + p-cancelable: ^2.0.0 + responselike: ^2.0.0 + checksum: 754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1 + languageName: node + linkType: hard + "graceful-fs@npm:4.2.10": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -16753,17 +17792,10 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a - languageName: node - linkType: hard - -"graphql@npm:^15.4.0": - version: 15.8.0 - resolution: "graphql@npm:15.8.0" - checksum: 30cc09b77170a9d1ed68e4c017ec8c5265f69501c96e4f34f8f6613f39a886c96dd9853eac925f212566ed651736334c8fe24ceae6c44e8d7625c95c3009a801 +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard @@ -16957,6 +17989,17 @@ __metadata: languageName: node linkType: hard +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: ^2.0.4 + readable-stream: ^3.6.0 + safe-buffer: ^5.2.0 + checksum: 663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + languageName: node + linkType: hard + "hash-for-dep@npm:^1.4.7, hash-for-dep@npm:^1.5.0": version: 1.5.1 resolution: "hash-for-dep@npm:1.5.1" @@ -16985,6 +18028,16 @@ __metadata: languageName: node linkType: hard +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: ^2.0.3 + minimalistic-assert: ^1.0.1 + checksum: 41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + "hast-util-parse-selector@npm:^2.0.0": version: 2.2.5 resolution: "hast-util-parse-selector@npm:2.2.5" @@ -17005,13 +18058,6 @@ __metadata: languageName: node linkType: hard -"hasurl@npm:^1.0.0": - version: 1.0.0 - resolution: "hasurl@npm:1.0.0" - checksum: 7762739a9713612d7c81f8c59807c59e696ea4402861ff799fd9d507860d4e37ad7eac4e1741a713ae96a74306a98ee5a03245695352ede885cc4287a44c632b - languageName: node - linkType: hard - "hdr-histogram-js@npm:^2.0.1": version: 2.0.3 resolution: "hdr-histogram-js@npm:2.0.3" @@ -17030,7 +18076,7 @@ __metadata: languageName: node linkType: hard -"he@npm:^1.1.1, he@npm:^1.2.0": +"he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: @@ -17074,6 +18120,17 @@ __metadata: languageName: node linkType: hard +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: ^1.0.3 + minimalistic-assert: ^1.0.0 + minimalistic-crypto-utils: ^1.0.1 + checksum: f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + "hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -17167,9 +18224,9 @@ __metadata: linkType: hard "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: a76cbdbb276d9499dc7ef800d23f3964254e659f04db51c8d1ff6abfe21992c69b7217ecfd6e3c16ff0aa027ba4261d77f0dba71f55639c16a325bbdf69c535d + version: 2.4.0 + resolution: "html-entities@npm:2.4.0" + checksum: 42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d languageName: node linkType: hard @@ -17210,15 +18267,15 @@ __metadata: linkType: hard "html-tags@npm:^3.1.0": - version: 3.3.0 - resolution: "html-tags@npm:3.3.0" - checksum: af1541d05682ddc3520ff35939d1d706d7dd7f17916e85df5535f1dcf6c1a93973aa5230f5dc12aa98dcd93357f088e5b036c5f07052f4766f0b6b5d76d28c2b + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: 680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 languageName: node linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" + version: 5.5.3 + resolution: "html-webpack-plugin@npm:5.5.3" dependencies: "@types/html-minifier-terser": ^6.0.0 html-minifier-terser: ^6.0.2 @@ -17227,7 +18284,7 @@ __metadata: tapable: ^2.0.0 peerDependencies: webpack: ^5.20.0 - checksum: d10fa5888db9ee2afe1d8544107d3d8eb0f30fd88a3304842725e91f9b86cd70fae9954342e6d513bdf9bb13f345c5f51c09421dbd96285593ea7ee8444b188e + checksum: 7ba0d0f87d08f5c4c51f821842d736ec1762940bc39798932528adaec1e9cca8f52944987b88789007f5706d15110edbdfa30df445d61c6628b02ebe163c4f42 languageName: node linkType: hard @@ -17281,7 +18338,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^8.0.1": +"htmlparser2@npm:^8.0.1, htmlparser2@npm:^8.0.2": version: 8.0.2 resolution: "htmlparser2@npm:8.0.2" dependencies: @@ -17293,7 +18350,7 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc @@ -17339,27 +18396,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^2.1.0": - version: 2.1.0 - resolution: "http-proxy-agent@npm:2.1.0" - dependencies: - agent-base: 4 - debug: 3.1.0 - checksum: 526294de33953bacb21b883d8bbc01a82e1e9f5a721785345dd538b15b62c7a5d4080b729eb3177ad15d842f931f44002431d5cf9b036cc8cea4bfb5ec172228 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: 4fa4774d65b5331814b74ac05cefea56854fc0d5989c80b13432c1b0d42a14c9f4342ca3ad9f0359a52e78da12b1744c9f8a28e50042136ea9171675d972a5fd - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -17389,7 +18425,7 @@ __metadata: languageName: node linkType: hard -"http-proxy@npm:^1.18.0, http-proxy@npm:^1.18.1": +"http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" dependencies: @@ -17400,24 +18436,43 @@ __metadata: languageName: node linkType: hard -"http-server@npm:^0.12.3": - version: 0.12.3 - resolution: "http-server@npm:0.12.3" +"http-server@npm:^14.1.1": + version: 14.1.1 + resolution: "http-server@npm:14.1.1" dependencies: - basic-auth: ^1.0.3 - colors: ^1.4.0 + basic-auth: ^2.0.1 + chalk: ^4.1.2 corser: ^2.0.1 - ecstatic: ^3.3.2 - http-proxy: ^1.18.0 - minimist: ^1.2.5 + he: ^1.2.0 + html-encoding-sniffer: ^3.0.0 + http-proxy: ^1.18.1 + mime: ^1.6.0 + minimist: ^1.2.6 opener: ^1.5.1 - portfinder: ^1.0.25 + portfinder: ^1.0.28 secure-compare: 3.0.1 union: ~0.5.0 + url-join: ^4.0.1 bin: - hs: bin/http-server http-server: bin/http-server - checksum: fa779a959119d9870fc738eaa689a8b9ea447bbac97ad656a29e4cd84f9c89e9257ef66a7e597d919dff81def2e796e575d8e128193dfd2780cdaf447f1a01ca + checksum: c5770ddd722dd520ce0af25efee6bfb7c6300ff4e934636d4eec83fa995739e64de2e699e89e7a795b3a1894bcc37bec226617c1023600aacd7871fd8d6ffe6d + languageName: node + linkType: hard + +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.0.0 + checksum: 6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1 + languageName: node + linkType: hard + +"https-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae languageName: node linkType: hard @@ -17431,16 +18486,6 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^2.2.1": - version: 2.2.4 - resolution: "https-proxy-agent@npm:2.2.4" - dependencies: - agent-base: ^4.3.0 - debug: ^3.1.0 - checksum: 4bdde8fcd9ea0adc4a77282de2b4f9e27955e0441425af0f27f0fe01006946b80eaee6749e08e838d350c06ed2ebd5d11347d3beb88c45eacb0667e27276cdad - languageName: node - linkType: hard - "https-proxy-agent@npm:^4.0.0": version: 4.0.0 resolution: "https-proxy-agent@npm:4.0.0" @@ -17451,13 +18496,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: 18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e - languageName: node - linkType: hard - "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -17465,6 +18503,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 40498b33fe139f5cc4ef5d2f95eb1803d6318ac1b1c63eaf14eeed5484d26332c828de4a5a05676b6c83d7b9e57727c59addb4b1dea19cb8d71e83689e5b336c + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -17474,13 +18519,6 @@ __metadata: languageName: node linkType: hard -"humps@npm:^2.0.1": - version: 2.0.1 - resolution: "humps@npm:2.0.1" - checksum: 554f3bb9de780ce833f0058f30536f87615bd75ead2008b98d900598379fe5dcd3300bdd9092d3e078d47b66fade82276974dda7151318b5de7a1d837c3abe6e - languageName: node - linkType: hard - "husky@npm:^4.3.7": version: 4.3.8 resolution: "husky@npm:4.3.8" @@ -17569,11 +18607,11 @@ __metadata: linkType: hard "ignore-walk@npm:^6.0.0": - version: 6.0.2 - resolution: "ignore-walk@npm:6.0.2" + version: 6.0.3 + resolution: "ignore-walk@npm:6.0.3" dependencies: - minimatch: ^7.4.2 - checksum: aa510785eec78dc4f4754e5be043bd131c774f3a9264e240da04f5490be091c90395eac61f66236f42583458dc816828ed978a61123f33e7f5eb5d7865647431 + minimatch: ^9.0.0 + checksum: 327759df98c7b4d4039e4c4913507ca372b2a38bb44a1c2bd7ff2ffc7eee7a379025301e478d7640672f0007807c5ec5cc2e41c5226b9058aa58f00b600d3731 languageName: node linkType: hard @@ -17584,7 +18622,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 @@ -17612,13 +18650,13 @@ __metadata: linkType: hard "immutable@npm:^4.0.0": - version: 4.3.0 - resolution: "immutable@npm:4.3.0" - checksum: e09d40ceb442972f1cbd2914638d1a201853155b8edfbafc44e7aabcf221890e55e8f03d5b3d884666264bf973e02bbf72f83a12b9754bc2c9e47cf8827dd571 + version: 4.3.1 + resolution: "immutable@npm:4.3.1" + checksum: 7dbe08e9568d83ddcc4eae0116385fd5642c77e4cf03c222f9d667733bfd1870d574f487c85d78ed12f55f2358372bea156732008569531f3a4740f2ce114d0e languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -17678,7 +18716,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -17692,10 +18730,10 @@ __metadata: languageName: node linkType: hard -"ini@npm:4.0.0": - version: 4.0.0 - resolution: "ini@npm:4.0.0" - checksum: 8dfe21c1486cfc945a24b37fcf8d699772bf83cea75a9ef1ec38e00c9c6939aad81f0c4537f6ff1374fa226126d4f93d29c7e7cdabf020db919f39ef0204cee9 +"ini@npm:4.1.1": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 languageName: node linkType: hard @@ -17778,13 +18816,6 @@ __metadata: languageName: node linkType: hard -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 - languageName: node - linkType: hard - "invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" @@ -17809,9 +18840,9 @@ __metadata: linkType: hard "ipaddr.js@npm:^2.0.1": - version: 2.0.1 - resolution: "ipaddr.js@npm:2.0.1" - checksum: 0034dfd7a83e82bec6a569549f42c56eb47d051842e10ff0400d97b18f517131834d7c054893a31900cf9d54cf4d974eed97923e5e5965c298d004849f5f0ac9 + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab languageName: node linkType: hard @@ -17951,7 +18982,7 @@ __metadata: languageName: node linkType: hard -"is-ci@npm:2.0.0, is-ci@npm:^2.0.0": +"is-ci@npm:2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" dependencies: @@ -17962,12 +18993,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": + version: 2.12.1 + resolution: "is-core-module@npm:2.12.1" dependencies: has: ^1.0.3 - checksum: fd8f78ef4e243c295deafa809f89381d89aff5aaf38bb63266b17ee6e34b6a051baa5bdc2365456863336d56af6a59a4c1df1256b4eff7d6b4afac618586b004 + checksum: ff1d0dfc0b7851310d289398e416eb92ae8a9ac7ea8b8b9737fa8c0725f5a78c5f3db6edd4dff38c9ed731f3aaa1f6410a320233fcb52a2c8f1cf58eebf10a4b languageName: node linkType: hard @@ -18050,6 +19081,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + "is-empty@npm:^1.0.0": version: 1.2.0 resolution: "is-empty@npm:1.2.0" @@ -18104,6 +19144,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + languageName: node + linkType: hard + "is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" @@ -18150,6 +19197,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -18213,13 +19271,6 @@ __metadata: languageName: node linkType: hard -"is-obj@npm:^1.0.1": - version: 1.0.1 - resolution: "is-obj@npm:1.0.1" - checksum: 5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 - languageName: node - linkType: hard - "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" @@ -18299,6 +19350,15 @@ __metadata: languageName: node linkType: hard +"is-reference@npm:^3.0.0, is-reference@npm:^3.0.1": + version: 3.0.1 + resolution: "is-reference@npm:3.0.1" + dependencies: + "@types/estree": "*" + checksum: 003af01fd96c4300111853d68b048e2f094e27ccd70eb66fdb7bb3cd7f7a9e6ad3f633387b2b453c85134fcc1ba0473dca55349a0162312d9fd127306d9f5a9b + languageName: node + linkType: hard + "is-regex@npm:^1.0.3, is-regex@npm:^1.0.5, is-regex@npm:^1.1.0, is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -18309,13 +19369,6 @@ __metadata: languageName: node linkType: hard -"is-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "is-regexp@npm:1.0.0" - checksum: 34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 - languageName: node - linkType: hard - "is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" @@ -18362,6 +19415,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -18397,15 +19457,11 @@ __metadata: linkType: hard "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 + which-typed-array: ^1.1.11 + checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard @@ -18456,7 +19512,7 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": +"is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -18516,16 +19572,6 @@ __metadata: languageName: node linkType: hard -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -18590,29 +19636,29 @@ __metadata: linkType: hard "jackspeak@npm:^2.0.3": - version: 2.0.3 - resolution: "jackspeak@npm:2.0.3" + version: 2.2.2 + resolution: "jackspeak@npm:2.2.2" dependencies: + "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 - cliui: ^7.0.4 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 50bbf3fc03632cd4127e94209deb7adfb6569e786b23c24143022c3e4e851352bd63a7645106561eb44469961bf5d6b4252e373c33cbaf3c08ac0e2fe035a9a1 + checksum: 70b286206a2729f6a2ba8470f68d4d130f7154f6a767fccabf107b9f6b3871395e89018437c2676c849450b258711cb557a4be6d7b2f889f1fa4d8b364533225 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" + version: 10.8.7 + resolution: "jake@npm:10.8.7" dependencies: async: ^3.2.3 chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 + filelist: ^1.0.4 + minimatch: ^3.1.2 bin: - jake: ./bin/cli.js - checksum: fc1f59c291b1c5bafad8ccde0e5d97f5f22ceb857f204f15634011e642b9cdf652dae2943b5ffe5ab037fe2f77b263653911ed2a408b2887a6dee31873e5c3d8 + jake: bin/cli.js + checksum: 89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 languageName: node linkType: hard @@ -18633,48 +19679,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-circus@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.5.0 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-each: ^29.6.1 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 p-limit: ^3.1.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 77f77b826941f67e9794e185072ee612cbddf53a1cfbf736de86176b7dc54e54aef151cf31b492adaef221f550924fd60dbaa01c9b939c3a4bfb46d8392c60a8 + checksum: 9321dfabfa6fe41d4495f4fd21d1a840baacdfe9f0cc7c2346b89cd4f775ee37cc839c6d6aaac415059852bbdfafca1ed8c392999f7fbd152d6b231ca0920d1d languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -18684,34 +19730,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: d63df7e329760bc036d11980883399de86b41a7fa93bbc2e79feef28284b096dec40afc21796504555ccbf32806bfc78cf64a63eac9093bb4f036b282b409863 + checksum: 37850378efcb5bea2d000d4c78eac5af871bcd53d3f8e60902f33f116ec847f9a3641ca78f1ca046b4c1c6e2031e084d78b01eba3592788b3e3c983c0d5a4b21 languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.5.0 - "@jest/types": ^29.5.0 - babel-jest: ^29.5.0 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.5.0 - jest-environment-node: ^29.5.0 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-runner: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -18722,31 +19768,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 01780eb66815e3d31d237aab5d7611ea59e0cdf159cbab2a7c682cb08bde6d053c17a528547440fb1b0294c26ebfd5b54ad35d8c9439f6fae76960ee0bc90197 - languageName: node - linkType: hard - -"jest-diff@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-diff@npm:26.6.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 3a9c88c8f308487059788ab1199e12f9b4657168964a2307573760b4d41ab5b851e5bef70125ef5ceddc1e201d6753d6ceae88994c197990dd9307cb7d94b9a1 + checksum: 6f3c3ac7587b651d22b199fdc3c4ad17a08397c2fcae05543a7a81e03a7e12355aaa3c75ce39e6df5c8fd8efcd65518cf05f528f7724cb8df17aa4e44dd74ecf languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" +"jest-diff@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-diff@npm:29.6.1" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 00fda597fa6ee22774453c3cd35c2210bd7f749cf48ad7a41c13b898b2943c9c047842720eb928cdb949b9de87204d8d8987bf12aefdb2f0504f5f4112cab5b0 + pretty-format: ^29.6.1 + checksum: f067d977937744df7dd8a269e2948620e4bcb35ff70d9ea1d0fe75a47fa603ce3edc350961b671c94f8de5adb65d6bdeb0002569b59983fba56f02dd4b47d171 languageName: node linkType: hard @@ -18759,74 +19793,51 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-each@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.5.0 - pretty-format: ^29.5.0 - checksum: 214f6b5adfc0d6a3e837769018b7a7b69f41e99aac939fe4730bcca23f69e3566ed23706f95a396b20e63e6b9f90990053fc3c1662808036d4f41e4d6d32641d - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^28.0.0": - version: 28.1.3 - resolution: "jest-environment-jsdom@npm:28.1.3" - dependencies: - "@jest/environment": ^28.1.3 - "@jest/fake-timers": ^28.1.3 - "@jest/types": ^28.1.3 - "@types/jsdom": ^16.2.4 - "@types/node": "*" - jest-mock: ^28.1.3 - jest-util: ^28.1.3 - jsdom: ^19.0.0 - checksum: f3239dc01f33ae613eff6f3bad61b5c7709385085a85904e44d6457c38aa5e4500792da475bfd7918b1aaff7a6c1febbb5b6e9974f7e08bcc273b7f5242ac95d + jest-util: ^29.6.1 + pretty-format: ^29.6.1 + checksum: b2cbea027a7d68c6a22afff1d460c866389e5c3ec1fece930b3fa79df24fb39f3ca258679de9ca0c2af4a6a70e5aa542ff6779f32d21289bdf981a7c1470aa0e languageName: node linkType: hard "jest-environment-jsdom@npm:^29.0.0, jest-environment-jsdom@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-jsdom@npm:29.5.0" + version: 29.6.1 + resolution: "jest-environment-jsdom@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 972a1bdfb1d508a359951ec11ade5dfad7cfabea0ab9f7746737ba10e0c6381e34f2b4acb03c7e5eb623611813310dfb0775eb0607c5537b7618234d04aab2ac + checksum: 457ac6f78b9b98d1a86af944469fd2cce6d16d40afa748a8226c77850b98fd376d5bbcbf2b68a72ee3748091b95321fedc4044d3def45c47b139a9b57d4757be languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-environment-node@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 2e636a095ff9a9e0aa20fda5b4c06eebed8f3ba2411062bdf724b114eedafd49b880167998af9f77aa8aa68231621aebe3998389d73433e9553ea5735cad1e14 - languageName: node - linkType: hard - -"jest-get-type@npm:^26.3.0": - version: 26.3.0 - resolution: "jest-get-type@npm:26.3.0" - checksum: 112fc7f962d1c4625a51b6ccfe6e9c8e54ab80816bf8dbf2b1bf25d12c0f75c74ebad0c2f37622aea81019a2087451bfb12a46619ed6717e64ee875ea2de5520 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 2e168708553f45c2afc42234dd78c4677d1bd34a11e0c8d43e8ca6da8e68cd55acb2215cdfc46cba8c5b1dbc0061783006ecbc214a02a5ae962602f80232d7fc languageName: node linkType: hard @@ -18837,11 +19848,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-haste-map@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -18849,14 +19860,14 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 162edfa185478db9ebe7dff73f3475ef2c205d94fa2b0fc3b41aba4fc29bab274d4a76ca41ca20ea7d9d6ed2b0d8519e298cfffbf5cad6631412d8961c190612 + checksum: 6d100cd80c89d2c45175e6504eafe40ba4dfb1e77a4e204204a5f2905a4840e73ff66cee187b39e33a1af2406831a48f1f945efdf872071e19ac417eb0a3aac1 languageName: node linkType: hard @@ -18879,110 +19890,54 @@ __metadata: languageName: node linkType: hard -"jest-junit@npm:^14.0.1": - version: 14.0.1 - resolution: "jest-junit@npm:14.0.1" +"jest-junit@npm:^16.0.0": + version: 16.0.0 + resolution: "jest-junit@npm:16.0.0" dependencies: mkdirp: ^1.0.4 strip-ansi: ^6.0.1 uuid: ^8.3.2 xml: ^1.0.1 - checksum: ec06ffad0326f037e62637b0c9935f2668c4657bebf4b81ab3b14867482b754f479c93cd13fe8915b763a7196a3dbc3edf323f062026763e4a79891b617e5945 + checksum: d813d4d142341c2b51b634db7ad6ceb9849514cb58f96ec5e7e4cf4031a557133490452710c2d9dec9b1dd546334d9ca663e042d3070c3e8f102ce6217bd8e2e languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-leak-detector@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: d7db5d4a7cb676fc151f533d6887f3d6bbb4e35346346cbed0b5583c296b13af2d3c8434b30f62b0eb9c711718c7f4bd48496c47af3a20320ee162e33d64aaf2 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-matcher-utils@npm:26.6.2" - dependencies: - chalk: ^4.0.0 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 1303fc4dfd80848483b64bafc99beb31678653ad3f34b4c23e982a16016aec1f8a7de4a583044d9c43e59ee7e68e07c57f3a8b51e40fbefe42eafad45cc725ed + pretty-format: ^29.6.1 + checksum: 17e702b3a790e37dd76b93e2f782de228bb332030e478264f2eb081e1d13907f414a6ec2271b173b2516e7faa4c7b0ddd1c9c5ae9b9293ed921a9ee943fafd1a languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" +"jest-matcher-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-matcher-utils@npm:29.6.1" dependencies: chalk: ^4.0.0 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 0a3ae95ef5c5c4ac2b2c503c2f57e173fa82725722e1fadcd902fd801afe17d9d36e9366820959465f553627bf1e481a0e4a540125f3b4371eec674b3557f7f3 - languageName: node - linkType: hard - -"jest-message-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-message-util@npm:26.6.2" - dependencies: - "@babel/code-frame": ^7.0.0 - "@jest/types": ^26.6.2 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.2 - checksum: f6138d67154137cf3e985b2b469d0c78846cce787fed16b107c177fc9c6eb2606b7bce8e88d2a6bc830262d77469ecf26c70925cefc98dee83b5e8ed08981ff5 - languageName: node - linkType: hard - -"jest-message-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-message-util@npm:28.1.3" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^28.1.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^28.1.3 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 9f56a11b4171e43e2375446e624eec86f82820d9a35de3cd8b065b5ce2d7f65d2bbbdfc0ffe5fa358ff866693a68ec4f6b0cb8ad953fd6f35f9895eb370c6ed7 + pretty-format: ^29.6.1 + checksum: 4425bcb900bd25dbd679c220ef978f80aab11a7b6bed0e178cf8fe3c7167ecefdb6f522e3cf3e877a622160f781cea02aac43a3e243dc8afca917e90418434b8 languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" +"jest-message-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-message-util@npm:29.6.1" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 706e89cacc89c090af584f4687c4e7f0616706481e468ec7c88270e07ae7458a829e477b7b3dff56b75d801f799d65eb2c28d6453c25dd02bea0fd98f0809dbb - languageName: node - linkType: hard - -"jest-mock@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-mock@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - checksum: cf77b49efe76cdedc63363ccdbae8bc68e0301fbded669e7b45647b7b7c1dce90985cf6a3a13da161f644523d7d0aad03184c6f39302ee4b52f954a1de37960f + checksum: 7a34c7ee4efada36aa385a07e1d22f8b6183dda37f7bca15fcf2e9575e9b91ce6ea88429a0b749bc59d934327492e622913d7cd9ab23ca78c29353184795a68d languageName: node linkType: hard @@ -18996,24 +19951,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-mock@npm:28.1.3" - dependencies: - "@jest/types": ^28.1.3 - "@types/node": "*" - checksum: 1d936755925863bd896bfc9c0ed733faf9ff13ab51cdcb4c53bd07e6857e464bb5c0723f9d157837c47dbf880a3a4b9cff2805051207a37caec04d65e6c509fb - languageName: node - linkType: hard - -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-mock@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-mock@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.5.0 - checksum: c5b71d397d6acd44d99cd48dad8ca76334fc5a27e120da72d264d7527a9efc7c6fc431d79de64d0b73aa0ab26a2d0712498e323d42b9e03bee05e983b0d2035c + jest-util: ^29.6.1 + checksum: 26e666787d04f341887d7612b2ada7a9c86868dac319056dac46709a00fc2ee694e7a64fad8f0d5450690d779ddaacaff7a35aaf1716a165b3e1eaf56d0aa300 languageName: node linkType: hard @@ -19036,33 +19981,9 @@ __metadata: languageName: node linkType: hard -"jest-preset-angular@npm:^12.2.3": - version: 12.2.6 - resolution: "jest-preset-angular@npm:12.2.6" - dependencies: - bs-logger: ^0.2.6 - esbuild: ">=0.13.8" - esbuild-wasm: ">=0.13.8" - jest-environment-jsdom: ^28.0.0 - pretty-format: ^28.0.0 - ts-jest: ^28.0.0 - peerDependencies: - "@angular-devkit/build-angular": ">=12.2.18 <16.0.0" - "@angular/compiler-cli": ">=12.2.16 <16.0.0" - "@angular/core": ">=12.2.16 <16.0.0" - "@angular/platform-browser-dynamic": ">=12.2.16 <16.0.0" - jest: ^28.0.0 - typescript: ">=4.2" - dependenciesMeta: - esbuild: - optional: true - checksum: ec3be71042921125434e89d5be5500ab54948cad20965cd0e0e26a696d967b9c95034cbaf709a03e8552fe8933e482ec9e895eedb7ab0cbd42ba90fec80bfc11 - languageName: node - linkType: hard - "jest-preset-angular@npm:^13.0.1": - version: 13.0.1 - resolution: "jest-preset-angular@npm:13.0.1" + version: 13.1.1 + resolution: "jest-preset-angular@npm:13.1.1" dependencies: bs-logger: ^0.2.6 esbuild: ">=0.13.8" @@ -19072,23 +19993,16 @@ __metadata: pretty-format: ^29.0.0 ts-jest: ^29.0.0 peerDependencies: - "@angular-devkit/build-angular": ">=13.0.0 <16.0.0" - "@angular/compiler-cli": ">=13.0.0 <16.0.0" - "@angular/core": ">=13.0.0 <16.0.0" - "@angular/platform-browser-dynamic": ">=13.0.0 <16.0.0" + "@angular-devkit/build-angular": ">=13.0.0 <17.0.0" + "@angular/compiler-cli": ">=13.0.0 <17.0.0" + "@angular/core": ">=13.0.0 <17.0.0" + "@angular/platform-browser-dynamic": ">=13.0.0 <17.0.0" jest: ^29.0.0 typescript: ">=4.4" dependenciesMeta: esbuild: optional: true - checksum: b8daf39d1f3958c777e29d43935f3bd91bc3a372c5b4c171d71030597deec7aa73aaed306a1d7c823a5c1df96abca70eea5f0d268fd3a66f9a139c3932f95cd0 - languageName: node - linkType: hard - -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 988675764a08945b90f48e6f5a8640b0d9885a977f100a168061d10037d53808a6cdb7dc8cb6fe9b1332f0523b42bf3edbb6d2cc6c7f7ba582d05d432efb3e60 + checksum: aa2952b32328e5994520eaabd5979ca1fe1ee37ec8c96b1bab5b6f6e56c578637b9af125afe209087c4e1a244cd7022d332df3b0b842014657804474a381b75a languageName: node linkType: hard @@ -19099,89 +20013,89 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve-dependencies@npm:29.6.1" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.5.0 - checksum: fbe513b7d905c4a70be17fd1cb4bd83da1e82cceb47ed7ceababbe11c75f1d0c18eadeb3f4ebb6997ba979f35fa18dfd02e1d57eb556675e47b35675fde0aac7 + jest-snapshot: ^29.6.1 + checksum: 330fdc103dd1c01ae73e9e4fc4ae11d341569187a82c09aea41d50cdf9e5353d00b0405177db020b3af76cb0e402c98f2dab129afde7bcd5d99f5123d6182321 languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: e7ea3b1cf865a7e63ad297d0f43a093dde145f9ca72dc8e75b6c7eb3af60fe78e4f7d024fd92fa280419a4ca038d42a9268d4d5d512958d11347e680daca1f12 + checksum: 809ee25be7a97ed33755dbe536617cb83a0a8218c81310f5927f1a2f9e82e48353d60a5b0b630b6c25bc66825d0b2197c6c569d043a8431bae01ba6e226b5a57 languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runner@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/environment": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/environment": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-leak-detector: ^29.5.0 - jest-message-util: ^29.5.0 - jest-resolve: ^29.5.0 - jest-runtime: ^29.5.0 - jest-util: ^29.5.0 - jest-watcher: ^29.5.0 - jest-worker: ^29.5.0 + jest-environment-node: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-leak-detector: ^29.6.1 + jest-message-util: ^29.6.1 + jest-resolve: ^29.6.1 + jest-runtime: ^29.6.1 + jest-util: ^29.6.1 + jest-watcher: ^29.6.1 + jest-worker: ^29.6.1 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 96f47976b9bcc0554455c200d02ebc1547b9a7749b05353c0d55aff535509032c0c12ea25ccc294350f62c14665dbc1e00b15e0d1c52207edfb807e4fec4a36a + checksum: 69d4f22c06d06498ffacf658460c3b40d87d77ac924a9f1e5c176f56e49d696b86234473463a764bd227f056d6e4e3852a2e10f95c74d5861d7fc4c17101ab55 languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" +"jest-runtime@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runtime@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/globals": ^29.5.0 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/globals": ^29.6.1 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-resolve: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 9b5c0a97e1f24945059695e056188041730a3f1dc5924153e323eb7429244e10e7cc877b13d057869d6621c460deae11b77a2a2e9ab56e22b56864a3e44c4448 + checksum: 79850c21fb630cb35fe23e7688daa67d387735cf2912febcd95ef4195bcc4931699d28e3b16e705fa8c2843fca958524133b1fa3fe0361bc2dac17192b40125b languageName: node linkType: hard @@ -19194,45 +20108,32 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.0.0, jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.0.0, jest-snapshot@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-snapshot@npm:29.6.1" dependencies: "@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.3.3 - "@jest/expect-utils": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/babel__traverse": ^7.0.6 + "@jest/expect-utils": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.5.0 + expect: ^29.6.1 graceful-fs: ^4.2.9 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 natural-compare: ^1.4.0 - pretty-format: ^29.5.0 - semver: ^7.3.5 - checksum: db9957d9c8607d75bb08302605331b5d90fa738fafeed820ab8ebcb2c90f9e62fb4fec0b4c826c04a37557cbb7a9ed26a10b0c74d46ffedce2d6ae8a9c891b00 - languageName: node - linkType: hard - -"jest-specific-snapshot@npm:^7.0.0": - version: 7.0.0 - resolution: "jest-specific-snapshot@npm:7.0.0" - dependencies: - jest-snapshot: ^29.0.0 - peerDependencies: - jest: ">= 29.0.0" - checksum: a5ff13f7088ecf2644fc44e70681da1d5669db64bb34aa922576462f617c184b4f528fb58b227e3634520d776a42f992df3a5a291f00073944d7e260209479f9 + pretty-format: ^29.6.1 + semver: ^7.5.3 + checksum: 1322fb9b23e7316b5f83d467ce2f46a65fdfa84a67e0000825fd9ef4910e66bdc732cb16e6da406f94c18905b2a8c6bbc29000c79f31e1e3eeb57508ac233bb4 languageName: node linkType: hard @@ -19247,59 +20148,31 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - is-ci: ^2.0.0 - micromatch: ^4.0.2 - checksum: ab93709840f87bdf478d082f5465467c27a20a422cbe456cc2a56961d8c950ea52511995fb6063f62a113737f3dd714b836a1fbde51abef96642a5975e835a01 - languageName: node - linkType: hard - -"jest-util@npm:^28.0.0, jest-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-util@npm:28.1.3" - dependencies: - "@jest/types": ^28.1.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 7d4946424032a2ccb2ad669905debb44b0bf040dff7a1fe82d283c679ae4638a86ca48d6a276d65a76451252338ad84e76ef2cfde03f577f091fe2b3102aedc9 - languageName: node - linkType: hard - -"jest-util@npm:^29.0.0, jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" +"jest-util@npm:^29.0.0, jest-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 + checksum: c4765afe8769239aef6a76aa69d9c98d383e171e4745eb65c4abb2e776f7965ab762c758f740bf726ebab428bc52b099c23f37e93dc30cf1ec46b915543f80af languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 7aabde27a9b736df65902a1bb4ec63af518d4c95e12a910e7658140784168f08c662d5babe67dfa70d843dd2096bc08aa7090fef83c7a9d6bb0893793c3a599a + pretty-format: ^29.6.1 + checksum: 4f6889852b0167f9087c3a67b598365be0807d4e8cce77e246b97df3e3cd1c13d3c98c18de07080d670c9e52b81b81d0ee48fa0544eddc987d32796f50f86371 languageName: node linkType: hard @@ -19335,19 +20208,19 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.5.0 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: 6a2e71e720183303913fc34fc24a3f87fca7fcfa638bc6c9109a4808b36251a1cb7fe98b956eb0d9c9ead1ad47c3dc3745289ee89e62c6c615168e92282069ca + checksum: bf007eb358f27c4f180202a8ec4bae2948a9563a84da073a185375b6a5251fe6cf9bf3f02f0682d2b8c343bcc5c1c2f185703009b6a47883ef1daeefed55881c languageName: node linkType: hard @@ -19362,26 +20235,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-worker@npm:29.6.1" dependencies: "@types/node": "*" - jest-util: ^29.5.0 + jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d + checksum: 15a5c699e6074401aac85bcc869e3be95353767f127fd41cccc97c9b38e62596a1ec336866eab180beec305da2cc7da75a663f3a5ddf63b6838ff839ef5073ec languageName: node linkType: hard "jest@npm:^29.3.1, jest@npm:^29.5.0": - version: 29.5.0 - resolution: "jest@npm:29.5.0" + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -19389,7 +20262,16 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 32e29cfa2373530ed323ea65dfb4fd5172026349be48ebb7a2dc5660adadd1c68f6b0fe2b67cc3ee723cc34e2d4552a852730ac787251b406cf58e37a90f6dac + checksum: 2c161c63cb502265805c4982b8b722307f6a7016afdcff267eab33e727b9b737baaf8c22e0a8fedfc19634e903421a0352f0c056d26a8f24b908aaed335283c8 + languageName: node + linkType: hard + +"jiti@npm:^1.18.2": + version: 1.19.1 + resolution: "jiti@npm:1.19.1" + bin: + jiti: bin/jiti.js + checksum: c09f15b3ef81f0fcda45f96aaecd130213c81d8a9b8a92f5eb4f8d21972b833b2ef494db8fb3e819b258ceb569b9d5cfa3facbd2d786ecf0bc0fd0e98cc862f7 languageName: node linkType: hard @@ -19400,30 +20282,23 @@ __metadata: languageName: node linkType: hard -"joi@npm:^17.3.0": - version: 17.9.1 - resolution: "joi@npm:17.9.1" +"joi@npm:^17.7.0": + version: 17.9.2 + resolution: "joi@npm:17.9.2" dependencies: "@hapi/hoek": ^9.0.0 "@hapi/topo": ^5.0.0 "@sideway/address": ^4.1.3 "@sideway/formula": ^3.0.1 "@sideway/pinpoint": ^2.0.0 - checksum: 27bae524494f42db55a5a5e5e794c2616ad3524695af8f92f6c122dd5e65b12f2c0b76960cf0f1da7b01e5eb06d4b0579f96edf6b4df890c3fd6517f43dee6be + checksum: 284bc34d5070c7b064a9fa68e02703961ad08229dd95dfe0baf2aa5d278c7a99543ecb979b8a6e6f72035539bfdaf1269ac7fa7684a503b6de18b173f72dcc89 languageName: node linkType: hard "jquery@npm:^3.5.1": - version: 3.6.4 - resolution: "jquery@npm:3.6.4" - checksum: 2429baf39338803702900e64f10a11283d7660961ea8ee59d26c0bcba4769273835d81d69628fec898830b6d0e4cde05832ec38fdf37a51e7d004bc4f97a4862 - languageName: node - linkType: hard - -"js-sdsl@npm:^4.1.4": - version: 4.4.0 - resolution: "js-sdsl@npm:4.4.0" - checksum: 1eabe718867d293771074b5a14a82a115727b3d4abc9524fb9b0cb74293f447b90fe27bb74eb712b6400aeb7b869631c0a67d3347670cf22d067e77caeeb2f33 + version: 3.7.0 + resolution: "jquery@npm:3.7.0" + checksum: 2eea1d9ce48fabd0d8736b8bed2e2087c33f038a077ea9f8dcbad55b07c3a1abc226898f498fc992b7fb02c1296cbe79d6283902a9d2027ed41efab04d86da6f languageName: node linkType: hard @@ -19452,7 +20327,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1, js-yaml@npm:^3.6.1": +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -19526,46 +20401,6 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^19.0.0": - version: 19.0.0 - resolution: "jsdom@npm:19.0.0" - dependencies: - abab: ^2.0.5 - acorn: ^8.5.0 - acorn-globals: ^6.0.0 - cssom: ^0.5.0 - cssstyle: ^2.3.0 - data-urls: ^3.0.1 - decimal.js: ^10.3.1 - domexception: ^4.0.0 - escodegen: ^2.0.0 - form-data: ^4.0.0 - html-encoding-sniffer: ^3.0.0 - http-proxy-agent: ^5.0.0 - 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: ^3.0.0 - webidl-conversions: ^7.0.0 - whatwg-encoding: ^2.0.0 - whatwg-mimetype: ^3.0.0 - whatwg-url: ^10.0.0 - ws: ^8.2.3 - xml-name-validator: ^4.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: c39c71aa64df60f2b609adfc61fa4406c1a710da3278c730b0093181d1d09c1e6ba5551e32d78259a21800e10c2984c571777d6f7080249a5d21287be4f17bd9 - languageName: node - linkType: hard - "jsdom@npm:^20.0.0": version: 20.0.3 resolution: "jsdom@npm:20.0.3" @@ -19614,15 +20449,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~0.3.x": - version: 0.3.0 - resolution: "jsesc@npm:0.3.0" - bin: - jsesc: bin/jsesc - checksum: 876ee916d52106754e7b537005695e010a2e7077bfc99620063839ab05eba46e86c935fb0f5ebbd458c2a8daf7807903bcc5ac7552490264ad5f7554f6886576 - languageName: node - linkType: hard - "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0" @@ -19641,6 +20467,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -19726,7 +20559,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.0.0, json5@npm:^2.1.0, json5@npm:^2.1.2, json5@npm:^2.2.1, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.0.0, json5@npm:^2.1.0, json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -19797,21 +20630,15 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:^8.4.0": - version: 8.5.1 - resolution: "jsonwebtoken@npm:8.5.1" +"jsonwebtoken@npm:^9.0.0": + version: 9.0.1 + resolution: "jsonwebtoken@npm:9.0.1" dependencies: jws: ^3.2.2 - lodash.includes: ^4.3.0 - lodash.isboolean: ^3.0.3 - lodash.isinteger: ^4.0.4 - lodash.isnumber: ^3.0.3 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.once: ^4.0.0 + lodash: ^4.17.21 ms: ^2.1.1 - semver: ^5.6.0 - checksum: c5ad937b6fa23a230efa8ed8ca3c0da8ebfdd377bafc3e8432a11b03ef90e733400a00b26c0dfee47db44a2e64b88b154b57e9926a92990f98dd25aaed15006e + semver: ^7.3.8 + checksum: 3508912a0fb5ad06a09a79f655681f6fc389376fb8e7fdcaf367fbdd02e9fb5e11a7a4ff715cbe44d8be0e7a99319b03a7d34ef5daede61cf1f8d3519bbb08d6 languageName: node linkType: hard @@ -19826,12 +20653,14 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" + version: 3.3.4 + resolution: "jsx-ast-utils@npm:3.3.4" dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: fb69ce100931e50d42c8f72a01495b7d090064824ce481cf7746449609c148a29aae6984624cf9066ac14bdf7978f8774461e120d5b50fa90b3bfe0a0e21ff77 + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: 6761ccd830deab6a4cb8ca182c7b3627f4478138b6f4e2b680afc2b5e954635feb460ff75218b67f8694a9f8a0da6f0833a013e34961a16fbe4457fb34a0a7b2 languageName: node linkType: hard @@ -19900,6 +20729,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.0.0": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" + dependencies: + json-buffer: 3.0.1 + checksum: 7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 + languageName: node + linkType: hard + "kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": version: 3.2.2 resolution: "kind-of@npm:3.2.2" @@ -19954,28 +20792,9 @@ __metadata: linkType: hard "kolorist@npm:^1.2.10": - version: 1.7.0 - resolution: "kolorist@npm:1.7.0" - checksum: a74fe27c393217e3b2575a24a3562f9200c0ba6187f1385d1a86e065bd99e7d7f1d2278b534e685e8f05c8a5a1230552b9ec146530f0794091f81faefe8a3985 - languageName: node - linkType: hard - -"ky-universal@npm:^0.3.0": - version: 0.3.0 - resolution: "ky-universal@npm:0.3.0" - dependencies: - abort-controller: ^3.0.0 - node-fetch: ^2.6.0 - peerDependencies: - ky: ">=0.12.0" - checksum: 8f2d5dba50f113bd4c67547cb8f6fb7ed94e3a62152a4778539452bd7064636c3467c9b3126c05e68ac53a2ca02ab740f0c260f05221f9610587eb8e03e469fa - languageName: node - linkType: hard - -"ky@npm:^0.12.0": - version: 0.12.0 - resolution: "ky@npm:0.12.0" - checksum: cdca90751ddf69521fd6bcb55acc236d61d4164850a55d7d4e1c167288af2c9ac0f7c9c8e70b409d583704e905ed9af10da4d5cd41b7d717484b5ade7801e24f + version: 1.8.0 + resolution: "kolorist@npm:1.8.0" + checksum: 73075db44a692bf6c34a649f3b4b3aea4993b84f6b754cbf7a8577e7c7db44c0bad87752bd23b0ce533f49de2244ce2ce03b7b1b667a85ae170a94782cc50f9b languageName: node linkType: hard @@ -20017,12 +20836,12 @@ __metadata: linkType: hard "lerna@npm:^6.4.0": - version: 6.6.1 - resolution: "lerna@npm:6.6.1" + version: 6.6.2 + resolution: "lerna@npm:6.6.2" dependencies: - "@lerna/child-process": 6.6.1 - "@lerna/create": 6.6.1 - "@lerna/legacy-package-management": 6.6.1 + "@lerna/child-process": 6.6.2 + "@lerna/create": 6.6.2 + "@lerna/legacy-package-management": 6.6.2 "@npmcli/arborist": 6.2.3 "@npmcli/run-script": 4.1.7 "@nrwl/devkit": ">=15.5.2 < 16" @@ -20056,8 +20875,8 @@ __metadata: is-ci: 2.0.0 is-stream: 2.0.0 js-yaml: ^4.1.0 - libnpmaccess: 6.0.3 - libnpmpublish: 6.0.4 + libnpmaccess: ^6.0.3 + libnpmpublish: 7.1.4 load-json-file: 6.2.0 make-dir: 3.1.0 minimatch: 3.0.5 @@ -20074,7 +20893,7 @@ __metadata: p-queue: 6.6.2 p-reduce: 2.1.0 p-waterfall: 2.1.1 - pacote: 13.6.2 + pacote: 15.1.1 pify: 5.0.0 read-cmd-shim: 3.0.0 read-package-json: 5.0.1 @@ -20098,7 +20917,7 @@ __metadata: yargs-parser: 20.2.4 bin: lerna: dist/cli.js - checksum: eeefd0e5c1e8b5fa5c2df0a5e75d44c9b2f838bd6b4e3c167d369e7c4fb6067e87f739aaff5fe5224750250c2259990412a35aff9f53f6fd165f220d8c1495ea + checksum: 4de749b9855541c5ffcebb6616ffda9369dc51a32911ad2ada6b65129017b1a4bf4ae1b71ade73dc575550d66785726567a1e55ff8a2386103200d4bf385ce31 languageName: node linkType: hard @@ -20166,16 +20985,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - "li@npm:^1.3.0": version: 1.3.0 resolution: "li@npm:1.3.0" @@ -20183,15 +20992,15 @@ __metadata: languageName: node linkType: hard -"libnpmaccess@npm:6.0.3": - version: 6.0.3 - resolution: "libnpmaccess@npm:6.0.3" +"libnpmaccess@npm:^6.0.3": + version: 6.0.4 + resolution: "libnpmaccess@npm:6.0.4" dependencies: aproba: ^2.0.0 minipass: ^3.1.1 npm-package-arg: ^9.0.1 npm-registry-fetch: ^13.0.0 - checksum: 1ed456a9ae8917f135ed9dc28d19f1641249eb0462a38b338890c1de2238860a2119b0a0f1f3f6eba0052ef9b27d8dd433e5d633c29adcfa594961a49f36bb6c + checksum: d7cee5ae92369a1ac6fb141082b929c853b3b6a140d9878e52ee93abca644fe052e7b5dfc3ac14c4b2f0c0945bd8bf6d5ccff608be8d8928d812df4af28cb43b languageName: node linkType: hard @@ -20206,16 +21015,19 @@ __metadata: languageName: node linkType: hard -"libnpmpublish@npm:6.0.4": - version: 6.0.4 - resolution: "libnpmpublish@npm:6.0.4" +"libnpmpublish@npm:7.1.4": + version: 7.1.4 + resolution: "libnpmpublish@npm:7.1.4" dependencies: - normalize-package-data: ^4.0.0 - npm-package-arg: ^9.0.1 - npm-registry-fetch: ^13.0.0 + 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 - ssri: ^9.0.0 - checksum: e37ccd5219468e9bf7a7a75788f6c7272585f9931f22992a98863305764bc4aae4cc21a93c03f83b707741f8a7812a8d22bc0d015c55d850c97af27f76091fbc + sigstore: ^1.4.0 + ssri: ^10.0.1 + checksum: 9bfd6a00baaa12938e92675ba60d7d530462a30abb659a152dfb13c250233f531230eaeb7cf9d77f125a54b4913b434081fe7ebd684cdff0d127e8e5b7f1fb14 languageName: node linkType: hard @@ -20233,6 +21045,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -20247,41 +21066,39 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^10.5.4": - version: 10.5.4 - resolution: "lint-staged@npm:10.5.4" +"lint-staged@npm:^13.2.2": + version: 13.2.3 + resolution: "lint-staged@npm:13.2.3" dependencies: - chalk: ^4.1.0 - cli-truncate: ^2.1.0 - commander: ^6.2.0 - cosmiconfig: ^7.0.0 - debug: ^4.2.0 - dedent: ^0.7.0 - enquirer: ^2.3.6 - execa: ^4.1.0 - listr2: ^3.2.2 - log-symbols: ^4.0.0 - micromatch: ^4.0.2 + chalk: 5.2.0 + cli-truncate: ^3.1.0 + commander: ^10.0.0 + debug: ^4.3.4 + execa: ^7.0.0 + lilconfig: 2.1.0 + listr2: ^5.0.7 + micromatch: ^4.0.5 normalize-path: ^3.0.0 - please-upgrade-node: ^3.2.0 - string-argv: 0.3.1 - stringify-object: ^3.3.0 + object-inspect: ^1.12.3 + pidtree: ^0.6.0 + string-argv: ^0.3.1 + yaml: ^2.2.2 bin: lint-staged: bin/lint-staged.js - checksum: 5a3b8854e3a1d90533a8e5f2d228634a044563104b9a1f2052e91a565542ee72ab60ffd463c9b2117a1c660adc5ad0737831a4dc61c91952f3032ce2b98fa670 + checksum: 4907d2e60c8bd4b7ba354464a914e9db61d3e121232a3111bfe3e9f24d1ae8c9bd89c8ff19f819227a97fce0d797a33a62bcc29adebb37fb937e012a0a8b358b languageName: node linkType: hard -"listr2@npm:^3.2.2": - version: 3.14.0 - resolution: "listr2@npm:3.14.0" +"listr2@npm:^5.0.7": + version: 5.0.8 + resolution: "listr2@npm:5.0.8" dependencies: cli-truncate: ^2.1.0 - colorette: ^2.0.16 + colorette: ^2.0.19 log-update: ^4.0.0 p-map: ^4.0.0 rfdc: ^1.3.0 - rxjs: ^7.5.1 + rxjs: ^7.8.0 through: ^2.3.8 wrap-ansi: ^7.0.0 peerDependencies: @@ -20289,27 +21106,27 @@ __metadata: peerDependenciesMeta: enquirer: optional: true - checksum: 8301703876ad6bf50cd769e9c1169c2aa435951d69d4f54fc202a13c1b6006a9b3afbcf9842440eb22f08beec4d311d365e31d4ed2e0fcabf198d8085b06a421 + checksum: 00f00ad18262909bafff21b42d2d94faa9ed3911d70094a12a1182e773533f9b3cfd78d83a81fdbfb7dbc42e3e3252093f504c822de152100a953a91f3adf7cb languageName: node linkType: hard -"lit-element@npm:^3.2.0": - version: 3.3.1 - resolution: "lit-element@npm:3.3.1" +"lit-element@npm:^3.2.0, lit-element@npm:^3.3.0": + version: 3.3.2 + resolution: "lit-element@npm:3.3.2" dependencies: "@lit-labs/ssr-dom-shim": ^1.1.0 "@lit/reactive-element": ^1.3.0 lit-html: ^2.7.0 - checksum: f2b5422afe289b921f36091922f9ea76af451350e47a30c16f3b9196f8c610a14cccbceaf8cfcaa548aff382cf86f8a5e0abffb17a18178da4aecb84861f3548 + checksum: cf351d743bcefff8072f717da76dce5dece249f65446fc0f151f93d1bccd4d3fe941020a536215e911509493ded24c0a3896d4441d6294defc119265ec0788b3 languageName: node linkType: hard "lit-html@npm:^2.3.0, lit-html@npm:^2.7.0": - version: 2.7.1 - resolution: "lit-html@npm:2.7.1" + version: 2.7.5 + resolution: "lit-html@npm:2.7.5" dependencies: "@types/trusted-types": ^2.0.2 - checksum: e4784cb37d73e4be48e6cac85876ba0e7295a41bc2ffa63d08dc73c4ae9c257411941174260473887ad55dece9450afc8a3c5541e8ae1425f821ff6b6399547b + checksum: 8fbcd71a5dbcc60e23d2f3a3c6f0a0265b5faa4f2d43615d86242177d338a4b2e62ac31004d351631753e662d501638b23eb8a64c16e378376a9d193d1c08ef6 languageName: node linkType: hard @@ -20324,6 +21141,17 @@ __metadata: languageName: node linkType: hard +"lit@npm:^2.1.3": + version: 2.7.6 + resolution: "lit@npm:2.7.6" + dependencies: + "@lit/reactive-element": ^1.6.0 + lit-element: ^3.3.0 + lit-html: ^2.7.0 + checksum: bfd629c6eff8e6086200d0c0904c7a20a4d1dab21d1016d40cc8591d00d972171537e8466ca4eae8c5f227f2c5d2ef2ab9a9fe3587e024a493c93614c928b6fe + languageName: node + linkType: hard + "load-json-file@npm:6.2.0": version: 6.2.0 resolution: "load-json-file@npm:6.2.0" @@ -20394,6 +21222,13 @@ __metadata: languageName: node linkType: hard +"locate-character@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-character@npm:3.0.0" + checksum: 9da917622395002eb1336fca8cbef1c19904e3dc0b3b8078abe8ff390106d947a86feccecd0346f0e0e19fa017623fb4ccb65263d72a76dfa36e20cc18766b6c + languageName: node + linkType: hard + "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" @@ -20432,6 +21267,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -20439,13 +21283,6 @@ __metadata: languageName: node linkType: hard -"lodash._reinterpolate@npm:^3.0.0": - version: 3.0.0 - resolution: "lodash._reinterpolate@npm:3.0.0" - checksum: cdf592374b5e9eb6d6290a9a07c7d90f6e632cca4949da2a26ae9897ab13f138f3294fd5e81de3e5d997717f6e26c06747a9ad3413c043fd36c0d87504d97da6 - languageName: node - linkType: hard - "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" @@ -20481,20 +21318,6 @@ __metadata: languageName: node linkType: hard -"lodash.foreach@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.foreach@npm:4.5.0" - checksum: bd9cc83e87e805b21058ce6cf718dd22db137c7ca08eddbd608549db59989911c571b7195707f615cb37f27bb4f9a9fa9980778940d768c24095f5a04b244c84 - languageName: node - linkType: hard - -"lodash.get@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.get@npm:4.4.2" - checksum: 48f40d471a1654397ed41685495acb31498d5ed696185ac8973daef424a749ca0c7871bf7b665d5c14f5cc479394479e0307e781f61d5573831769593411be6e - languageName: node - linkType: hard - "lodash.includes@npm:^4.3.0": version: 4.3.0 resolution: "lodash.includes@npm:4.3.0" @@ -20502,13 +21325,6 @@ __metadata: languageName: node linkType: hard -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: 0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 - languageName: node - linkType: hard - "lodash.isequal@npm:^4.5.0": version: 4.5.0 resolution: "lodash.isequal@npm:4.5.0" @@ -20516,13 +21332,6 @@ __metadata: languageName: node linkType: hard -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 - languageName: node - linkType: hard - "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -20530,13 +21339,6 @@ __metadata: languageName: node linkType: hard -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d - languageName: node - linkType: hard - "lodash.isobject@npm:^3.0.2": version: 3.0.2 resolution: "lodash.isobject@npm:3.0.2" @@ -20544,20 +21346,6 @@ __metadata: languageName: node linkType: hard -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb - languageName: node - linkType: hard - -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: 09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 - languageName: node - linkType: hard - "lodash.keys@npm:^4.0.8": version: 4.2.0 resolution: "lodash.keys@npm:4.2.0" @@ -20593,47 +21381,7 @@ __metadata: languageName: node linkType: hard -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: 46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 - languageName: node - linkType: hard - -"lodash.set@npm:^4.3.2": - version: 4.3.2 - resolution: "lodash.set@npm:4.3.2" - checksum: c641d31905e51df43170dce8a1d11a1cff11356e2e2e75fe2615995408e9687d58c3e1d64c3c284c2df2bc519f79a98af737d2944d382ff82ffd244ff6075c29 - languageName: node - linkType: hard - -"lodash.sortby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.sortby@npm:4.7.0" - checksum: fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 - languageName: node - linkType: hard - -"lodash.template@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.template@npm:4.5.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - lodash.templatesettings: ^4.0.0 - checksum: 62a02b397f72542fa9a989d9fc1a94fc1cb94ced8009fa5c37956746c0cf460279e844126c2abfbf7e235fe27e8b7ee8e6efbf6eac247a06aa05b05457fda817 - languageName: node - linkType: hard - -"lodash.templatesettings@npm:^4.0.0": - version: 4.2.0 - resolution: "lodash.templatesettings@npm:4.2.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - checksum: 2609fea36ed061114dfed701666540efc978b069b2106cd819b415759ed281419893d40f85825240197f1a38a98e846f2452e2d31c6d5ccee1e006c9de820622 - languageName: node - linkType: hard - -"lodash.uniq@npm:^4.2.0, lodash.uniq@npm:^4.5.0": +"lodash.uniq@npm:^4.2.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" checksum: 262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e @@ -20647,7 +21395,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": +"log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -20703,6 +21451,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 + languageName: node + linkType: hard + "lowlight@npm:^1.17.0": version: 1.20.0 resolution: "lowlight@npm:1.20.0" @@ -20741,7 +21496,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.14.1, lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed @@ -20749,20 +21504,20 @@ __metadata: linkType: hard "lru-cache@npm:^8.0.3": - version: 8.0.4 - resolution: "lru-cache@npm:8.0.4" - checksum: 9d2e1eeedc0feb36424b079d1088f084712806d28bd3afd724548c68f4d9bac08aef073f61be1bbfa35dd97fab9969c669c7847819c530ed240855b0ce2172ca + version: 8.0.5 + resolution: "lru-cache@npm:8.0.5" + checksum: cd95a9c38497611c5a6453de39a881f6eb5865851a2a01b5f14104ff3fee515362a7b1e7de28606028f423802910ba05bdb8ae1aa7b0d54eae70c92f0cec10b2 languageName: node linkType: hard -"lru-cache@npm:^9.0.0": - version: 9.1.0 - resolution: "lru-cache@npm:9.1.0" - checksum: 88b71fde4e40182a81c0f51b3609551547d48f937daa6462595750f28c722684956aa65698cc4c52433ed66a4256289381118e58d340fb4a1c7b6f0c0ddd1d68 +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.0 + resolution: "lru-cache@npm:10.0.0" + checksum: 347b7b391091e9f91182b6f683ce04329932a542376a2d7d300637213b99f06c222a3bb0f0db59adf246dac6cef1bb509cab352451a96621d07c41b10a20495f languageName: node linkType: hard -"lz-string@npm:^1.4.4": +"lz-string@npm:^1.4.4, lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -20778,7 +21533,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.0, magic-string@npm:^0.30.0": +"magic-string@npm:0.30.0": version: 0.30.0 resolution: "magic-string@npm:0.30.0" dependencies: @@ -20814,6 +21569,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.1": + version: 0.30.1 + resolution: "magic-string@npm:0.30.1" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.15 + checksum: 30471bbe363196a57795f903025166ba9930f9a98ea4e23d2cfbb379756414aff01309eaa06d3ae23d3cc0497babf5c5d7d98c7aeca726335cddf2d9cd873e1c + languageName: node + linkType: hard + "make-dir@npm:3.1.0, make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -20840,7 +21604,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": +"make-fetch-happen@npm:^10.0.6": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: @@ -20864,9 +21628,9 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1": - version: 11.0.3 - resolution: "make-fetch-happen@npm:11.0.3" +"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.0.3, make-fetch-happen@npm:^11.1.1": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" dependencies: agentkeepalive: ^4.2.1 cacache: ^17.0.0 @@ -20875,7 +21639,7 @@ __metadata: https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 lru-cache: ^7.7.1 - minipass: ^4.0.0 + minipass: ^5.0.0 minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 @@ -20883,31 +21647,7 @@ __metadata: promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 ssri: ^10.0.0 - checksum: 8a2bdafa5461b6980c64374bb805de2383c575d0744a41ea4266a48f842ae35038d57eca9d7a18bdbb506302e361812a65debfb63b9259d3fa3c7ae0bfbc4aca - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - 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 - 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-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 2c737faf6a7f67077679da548b5bfeeef890595bf8c4323a1f76eae355d27ebb33dcf9cf1a673f944cf2f2a7cbf4e2b09f0a0a62931737728f210d902c6be966 + checksum: c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b languageName: node linkType: hard @@ -20979,11 +21719,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.1.8": - version: 7.2.0 - resolution: "markdown-to-jsx@npm:7.2.0" + version: 7.2.1 + resolution: "markdown-to-jsx@npm:7.2.1" peerDependencies: react: ">= 0.14.0" - checksum: 43056a49a222efddb0d5a055bc0ad61e038ac299d1008db4c4bebb270b4efc9872dc51dad2f6078d58bf178f8f15df6677f6e67295095284d8b61cfb8e9876f3 + checksum: 002ba7c723853c456a4902976d5f5a15d9585bd75dc6ab3add783b4a346e3372327c4fffd7843f30fd5b6550c5fd97e7142330521a5886f8b770db4c61558d61 languageName: node linkType: hard @@ -21006,6 +21746,17 @@ __metadata: languageName: node linkType: hard +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: ^3.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + "mdast-comment-marker@npm:^1.0.0": version: 1.1.2 resolution: "mdast-comment-marker@npm:1.1.2" @@ -21048,8 +21799,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^1.0.0, mdast-util-from-markdown@npm:^1.1.0": - version: 1.3.0 - resolution: "mdast-util-from-markdown@npm:1.3.0" + version: 1.3.1 + resolution: "mdast-util-from-markdown@npm:1.3.1" dependencies: "@types/mdast": ^3.0.0 "@types/unist": ^2.0.0 @@ -21063,7 +21814,7 @@ __metadata: micromark-util-types: ^1.0.0 unist-util-stringify-position: ^3.0.0 uvu: ^0.5.0 - checksum: 0581d641a1367aa1c53ea2754e1877331633acfa7f10f4b6ade1b0615c8cf6b3083e02c0e60d0809c7eb4f4d5ac498c9b7340b013ec3a366020caa2c78458759 + checksum: f4e901bf2a2e93fe35a339e0cff581efacce2f7117cd5652e9a270847bd7e2508b3e717b7b4156af54d4f896d63033e06ff9fafbf59a1d46fe17dd5e2a3f7846 languageName: node linkType: hard @@ -21158,8 +21909,8 @@ __metadata: linkType: hard "mdast-util-mdx-jsx@npm:^2.0.0, mdast-util-mdx-jsx@npm:^2.1.2": - version: 2.1.2 - resolution: "mdast-util-mdx-jsx@npm:2.1.2" + version: 2.1.4 + resolution: "mdast-util-mdx-jsx@npm:2.1.4" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^2.0.0 @@ -21173,7 +21924,7 @@ __metadata: unist-util-remove-position: ^4.0.0 unist-util-stringify-position: ^3.0.0 vfile-message: ^3.0.0 - checksum: 47df8599b6e50480abb229db3e3c94a8cc8aaf2ad918cb0ca192926fb5c6f4008e1dc2a6202754358c54d3dfe08323f957a86739b9b384a411b8a7f1a3f4470f + checksum: b0c16e56a99c5167e60c98dbdbe82645549630fb529688642c4664ca5557ff0b3029c75146f5657cadb7908d5fa99810eacc5dcc51676d0877c8b4dcebb11cbe languageName: node linkType: hard @@ -21280,7 +22031,7 @@ __metadata: languageName: node linkType: hard -"memfs-or-file-map-to-github-branch@npm:^1.1.0": +"memfs-or-file-map-to-github-branch@npm:^1.2.1": version: 1.2.1 resolution: "memfs-or-file-map-to-github-branch@npm:1.2.1" dependencies: @@ -21290,11 +22041,11 @@ __metadata: linkType: hard "memfs@npm:^3.4.1, memfs@npm:^3.4.12, memfs@npm:^3.4.3": - version: 3.4.13 - resolution: "memfs@npm:3.4.13" + version: 3.5.3 + resolution: "memfs@npm:3.5.3" dependencies: - fs-monkey: ^1.0.3 - checksum: f14ab3ff938eacf688577d1b0f7bf77ca3a05d4df9c335b024ed6790e6b224b569cc4b61c1de604c0420a0fac6b3fbf3f283c72fd2be9ce395534539599ac63b + fs-monkey: ^1.0.4 + checksum: 038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 languageName: node linkType: hard @@ -21383,8 +22134,8 @@ __metadata: linkType: hard "micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" + version: 1.1.0 + resolution: "micromark-core-commonmark@npm:1.1.0" dependencies: decode-named-character-reference: ^1.0.0 micromark-factory-destination: ^1.0.0 @@ -21402,26 +22153,25 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.1 uvu: ^0.5.0 - checksum: 6241047732fe258083fdb7bd764e20bf2a37ab02e233c98d88eac527d2ca18f69b667ec3315faf4ef33a99141259522b1b7cc75fc51f20568c302d74ee86bc2a + checksum: b3bf7b7004ce7dbb3ae151dcca4db1d12546f1b943affb2418da4b90b9ce59357373c433ee2eea4c868aee0791dafa355aeed19f5ef2b0acaf271f32f1ecbe6a languageName: node linkType: hard "micromark-extension-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.3" + version: 1.0.5 + resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.5" dependencies: micromark-util-character: ^1.0.0 micromark-util-sanitize-uri: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 2c2c1fd0fcba72a616de34aa8dd86b756505117b35aa5788d1d3da7c83c7a882a28b08d7dfe13de2269bdfc6818fe61e7d23ff11af96cb59ff213d1eb714ad5e + checksum: 4964a52605ac36d24501d427e2d173fa39b5e0402275cb45068eba4898f4cb9cc57f7007b21b7514f0ab5f7b371b1701a5156a10b6ac8e77a7f36e830cf481d4 languageName: node linkType: hard "micromark-extension-gfm-footnote@npm:^1.0.0": - version: 1.0.4 - resolution: "micromark-extension-gfm-footnote@npm:1.0.4" + version: 1.1.2 + resolution: "micromark-extension-gfm-footnote@npm:1.1.2" dependencies: micromark-core-commonmark: ^1.0.0 micromark-factory-space: ^1.0.0 @@ -21431,13 +22181,13 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: 69b2a736ed4172efa157a5527565f3fae76a3728b9fd73a38f26bfaf4f320e6417cb3ec37e12be94be2ab72c5ded776891acd50af626b9fcca37f17a66804aab + checksum: b8090876cc3da5436c6253b0b40e39ceaa470c2429f699c19ee4163cef3102c4cd16c4ac2ec8caf916037fad310cfb52a9ef182c75d50fca7419ba08faad9b39 languageName: node linkType: hard "micromark-extension-gfm-strikethrough@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-strikethrough@npm:1.0.5" + version: 1.0.7 + resolution: "micromark-extension-gfm-strikethrough@npm:1.0.7" dependencies: micromark-util-chunked: ^1.0.0 micromark-util-classify-character: ^1.0.0 @@ -21445,20 +22195,20 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: 01bfd323ee0da903f4d7cb3e5bc7405ba7f4f154959dd194b93b4ac18314951a602f58b87640e9ea1488c0cdff8eb231c228b56d683c7df48f9aef99f4729661 + checksum: b45fe93a7a412fc44bae7a183b92a988e17b49ed9d683bd80ee4dde96d462e1ca6b316dd64bda7759e4086d6d8686790a711e53c244f1f4d2b37e1cfe852884d languageName: node linkType: hard "micromark-extension-gfm-table@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-table@npm:1.0.5" + version: 1.0.7 + resolution: "micromark-extension-gfm-table@npm:1.0.7" dependencies: micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: 3e96df2366dd11c69c013dc51c65354ce7f39e960ae809dad2b2d32defed9f6f58896643e1917ce0e959f417bf9af0928e30edc49d62f126945a43990e5718fe + checksum: 38b5af80ecab8206845a057338235bee6f47fb6cb904208be4b76e87906765821683e25bef85dfa485809f931eaf8cd55f16cd2f4d6e33b84f56edfaf1dfb129 languageName: node linkType: hard @@ -21472,21 +22222,21 @@ __metadata: linkType: hard "micromark-extension-gfm-task-list-item@npm:^1.0.0": - version: 1.0.4 - resolution: "micromark-extension-gfm-task-list-item@npm:1.0.4" + version: 1.0.5 + resolution: "micromark-extension-gfm-task-list-item@npm:1.0.5" dependencies: micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: 34272df5ce3a8b8a5af4642c77c7dfc9b40c14a17612e72abcc05b99d109204feeba5e427fe88ce1596be161d7ea6c69a62795e71a245d6f2eb5e33293f69d14 + checksum: 2179742fa2cbb243cc06bd9e43fbb94cd98e4814c9d368ddf8b4b5afa0348023f335626ae955e89d679e2c2662a7f82c315117a3b060c87bdb4420fee5a219d1 languageName: node linkType: hard "micromark-extension-gfm@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-extension-gfm@npm:2.0.1" + version: 2.0.3 + resolution: "micromark-extension-gfm@npm:2.0.3" dependencies: micromark-extension-gfm-autolink-literal: ^1.0.0 micromark-extension-gfm-footnote: ^1.0.0 @@ -21496,14 +22246,15 @@ __metadata: micromark-extension-gfm-task-list-item: ^1.0.0 micromark-util-combine-extensions: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: 581db4229f1d1f99e4a4bd931860bb126d20790e45a17772ac7eab06061c5930f0a5103961d024c8da7f35a180225a2b23a1a6e88a25e15269dc50eba7f5a6ea + checksum: 53056376d14caf3fab2cc44881c1ad49d975776cc2267bca74abda2cb31f2a77ec0fb2bdb2dd97565f0d9943ad915ff192b89c1cee5d9d727569a5e38505799b languageName: node linkType: hard "micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.4 - resolution: "micromark-extension-mdx-expression@npm:1.0.4" + version: 1.0.8 + resolution: "micromark-extension-mdx-expression@npm:1.0.8" dependencies: + "@types/estree": ^1.0.0 micromark-factory-mdx-expression: ^1.0.0 micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 @@ -21511,15 +22262,16 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: 8a1f1b2cc6bbcec8b886453b144b444e231c6e6c60e74f373c890e8c60a3ff4c9401f5a3734063fb0460f2f2933efb7df301b1a716813f0e8dbe3fcbfbcec246 + checksum: 99e2997a54caafc4258979c0591b3fe8e31018079df833d559768092fec41e57a71225d423f4179cea4e8bc1af2f52f5c9ae640673619d8fe142ded875240da3 languageName: node linkType: hard "micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" + version: 1.0.5 + resolution: "micromark-extension-mdx-jsx@npm:1.0.5" dependencies: "@types/acorn": ^4.0.0 + "@types/estree": ^1.0.0 estree-util-is-identifier-name: ^2.0.0 micromark-factory-mdx-expression: ^1.0.0 micromark-factory-space: ^1.0.0 @@ -21528,23 +22280,24 @@ __metadata: micromark-util-types: ^1.0.0 uvu: ^0.5.0 vfile-message: ^3.0.0 - checksum: 94b606efabb5f62819d05b2e6db09c4735f6e12a9681e7e91ba20beeaf80388e019785159c2a520ba327d593ecb95e96c569b5987629f71f8bf89d7317f97b36 + checksum: 1b4bfbe60b9cabfabfb870f70ded8da0caacbaa3be6bdf07f6db25cc5a14c6bc970c34c60e5c80da1e97766064a117feb8160b6d661d69e530a4cc7ec97305de languageName: node linkType: hard "micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" + version: 1.0.1 + resolution: "micromark-extension-mdx-md@npm:1.0.1" dependencies: micromark-util-types: ^1.0.0 - checksum: e6362cfd9eed003bfea0dc8a9ec91c222586934461656c50a33aa2efea4e80291eed06e97e77c8cde5007a33f43948aa305dd2178798083e1f77b05f5e80b82c + checksum: 9ad70b3a5e842fd7ebd93c8c48a32fd3d05fe77be06a08ef32462ea53e97d8f297e2c1c4b30a6929dbd05125279fe98bb04e9cc0bb686c691bdcf7d36c6e51b0 languageName: node linkType: hard "micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" + version: 1.0.5 + resolution: "micromark-extension-mdxjs-esm@npm:1.0.5" dependencies: + "@types/estree": ^1.0.0 micromark-core-commonmark: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-events-to-acorn: ^1.0.0 @@ -21553,13 +22306,13 @@ __metadata: unist-util-position-from-estree: ^1.1.0 uvu: ^0.5.0 vfile-message: ^3.0.0 - checksum: 28ffebc7dd4cbcc2359a0ab6e12e201db44589a87e12f2dd60209d2fc895cfb932346a71b466c0ef8f9cd8e136d8ec9582c6902654e4c36cef3f5a13cea48a58 + checksum: 612028bced78e882641a43c78fc4813a573b383dc0a7b90db75ed88b37bf5b5997dc7ead4a1011315b34f17bc76b7f4419de6ad9532a088102ab1eea0245d380 languageName: node linkType: hard "micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" + version: 1.0.1 + resolution: "micromark-extension-mdxjs@npm:1.0.1" dependencies: acorn: ^8.0.0 acorn-jsx: ^5.0.0 @@ -21569,38 +22322,38 @@ __metadata: micromark-extension-mdxjs-esm: ^1.0.0 micromark-util-combine-extensions: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: 51de1f7e8cadfe601ae4180d7a2402de40a02fec04d5f4deaa65061dbf39d81e3e56f0fcd55a43343c24593e371945a73a0a47fe723d02d99168b08c8945697d + checksum: 3f123e4afea9674c96934c9ea6a057ec9e5584992c50c36c173a2e331d272b1f4e2a8552364a0e2cb50703d0218831fdae1a17b563f0009aac6a35350e6a7b77 languageName: node linkType: hard "micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-factory-destination@npm:1.1.0" dependencies: micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: f6aed32c80fb947abce5c435e8aed86fb273eb349b162b7fa0a3daeb29f5b857d61e7d1a8bd133b213ee7a13d0b086b0caa4cf6297f6083242d73f1cfa0fe843 + checksum: 71ebd9089bf0c9689b98ef42215c04032ae2701ae08c3546b663628553255dca18e5310dbdacddad3acd8de4f12a789835fff30dadc4da3c4e30387a75e6b488 languageName: node linkType: hard "micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" + version: 1.1.0 + resolution: "micromark-factory-label@npm:1.1.0" dependencies: micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: a0788bf93cb6e770fef410b2389848c07e31d3eddd11baf22cabdbf99ab1cdcacf78b7765db9e86330d077141274713e50112ea4c960d002c57c4f2d96686ce5 + checksum: 5e2cd2d8214bb92a34dfcedf9c7aecf565e3648650a3a6a0495ededf15f2318dd214dc069e3026402792cd5839d395313f8ef9c2e86ca34a8facaa0f75a77753 languageName: node linkType: hard "micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-factory-mdx-expression@npm:1.0.7" + version: 1.0.9 + resolution: "micromark-factory-mdx-expression@npm:1.0.9" dependencies: - micromark-factory-space: ^1.0.0 + "@types/estree": ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-events-to-acorn: ^1.0.0 micromark-util-symbol: ^1.0.0 @@ -21608,193 +22361,193 @@ __metadata: unist-util-position-from-estree: ^1.0.0 uvu: ^0.5.0 vfile-message: ^3.0.0 - checksum: 9b80fbb8d0c8b024ab04f519b8913ea5c2bdc51e28e944023f7f50e40b9d9aa07e7eb32037aced806c15ef0ba9472c0267a3eb048328e549d8d45beb02206400 + checksum: b28bd8e072f37ca91446fe8d113e4ae64baaef013b0cde4aa224add0ee40963ce3584b9709f7662d30491f875ae7104b897d37efa26cdaecf25082ed5bac7b8c languageName: node linkType: hard "micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-factory-space@npm:1.1.0" dependencies: micromark-util-character: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: f28ff6ce111ce0e078a5a8b23437101932591720c29ca782f47bb5e02ff8cae8c5b091310e2347232f3c3627cf28392ed38bc4370a7b3eb331eb1fc8e5f3b53d + checksum: 3da81187ce003dd4178c7adc4674052fb8befc8f1a700ae4c8227755f38581a4ae963866dc4857488d62d1dc9837606c9f2f435fa1332f62a0f1c49b83c6a822 languageName: node linkType: hard "micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" + version: 1.1.0 + resolution: "micromark-factory-title@npm:1.1.0" dependencies: micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 6af4e2b10eea74b49b49f4708b29f4d24641288aca8c0681fbaed8be9b5a2914d15f85c367bf1eddab28077084511f872a6546493a1fc4d6b127d0cb2066af6c + checksum: cf8c687d1d5c3928846a4791d4a7e2f1d7bdd2397051e20d60f06b7565a48bf85198ab6f85735e997ab3f0cbb80b8b6391f4f7ebc0aae2f2f8c3a08541257bf6 languageName: node linkType: hard "micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-factory-whitespace@npm:1.1.0" dependencies: micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: cf7b2b7e7890c7bb91164c6bf96964f0ee256f7217f669ca581c71109cc33d839782997f9790000dd6b930ee4cc9ab251202ca859641f2d292bca84aef73941b + checksum: 7248cc4534f9befb38c6f398b6e38efd3199f1428fc214c9cb7ed5b6e9fa7a82c0d8cdfa9bcacde62887c9a7c8c46baf5c318b2ae8f701afbccc8ad702e92dce languageName: node linkType: hard "micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" + version: 1.2.0 + resolution: "micromark-util-character@npm:1.2.0" dependencies: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: 16810080f710123e236dca1455bcc75d788beb78c276e42720382781daecb437fd13bb762cccc073d8049ab9ebbb0919295344f3105b3c4942c52d0fbe0153e2 + checksum: 3390a675a50731b58a8e5493cd802e190427f10fa782079b455b00f6b54e406e36882df7d4a3bd32b709f7a2c3735b4912597ebc1c0a99566a8d8d0b816e2cd4 languageName: node linkType: hard "micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-chunked@npm:1.1.0" dependencies: micromark-util-symbol: ^1.0.0 - checksum: f64b9cae96d11d43fc9a012253ea35ddf700ff041378aab5aa681f7b95cd6ba898ad9460b930cd12d779ad2d0fc5e08b77d92ce68ca3bf850e13b33af2cbfbd8 + checksum: 59534cf4aaf481ed58d65478d00eae0080df9b5816673f79b5ddb0cea263e5a9ee9cbb6cc565daf1eb3c8c4ff86fc4e25d38a0577539655cda823a4249efd358 languageName: node linkType: hard "micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-classify-character@npm:1.1.0" dependencies: micromark-util-character: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: 942ba5b90c6d50fa9f0be5023db3769c2a840ef1471d2dd69466bdbfc11c2d25a0421c418163b6112845c0a4a27c7e99aab6ca78907b36d087069b2dac15e0cc + checksum: 3266453dc0fdaf584e24c9b3c91d1ed180f76b5856699c51fd2549305814fcab7ec52afb4d3e83d002a9115cd2d2b2ffdc9c0b38ed85120822bf515cc00636ec languageName: node linkType: hard "micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-combine-extensions@npm:1.1.0" dependencies: micromark-util-chunked: ^1.0.0 micromark-util-types: ^1.0.0 - checksum: b527582e34ef701a258ee31ff7cc5f32be224683147295f4727b6437c05484289f9d117f2f805ac9608649ee538461f4bfb1a5530e55d5448f90b3e3f3047c90 + checksum: 0bc572fab3fe77f533c29aa1b75cb847b9fc9455f67a98623ef9740b925c0b0426ad9f09bbb56f1e844ea9ebada7873d1f06d27f7c979a917692b273c4b69e31 languageName: node linkType: hard "micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-decode-numeric-character-reference@npm:1.1.0" dependencies: micromark-util-symbol: ^1.0.0 - checksum: 5d53453876defe7c821ea9af83cef90a261c8cbe7af32dbbd34b5b80eb521f08523bd4632cb73c6fd2b64f7383e28aaa07d227a2e43c7bc0f6659241278b3826 + checksum: 64ef2575e3fc2426976c19e16973348f20b59ddd5543f1467ac2e251f29e0a91f12089703d29ae985b0b9a408ee0d72f06d04ed3920811aa2402aabca3bdf9e4 languageName: node linkType: hard "micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" + version: 1.1.0 + resolution: "micromark-util-decode-string@npm:1.1.0" dependencies: decode-named-character-reference: ^1.0.0 micromark-util-character: ^1.0.0 micromark-util-decode-numeric-character-reference: ^1.0.0 micromark-util-symbol: ^1.0.0 - checksum: 325300615d45084c61361c5480269690e2f1c173ee96caa85dcb406d2930be587467510037374fe81dd318d226fefb654e862c45ecf7cc12d9f53354ed3e7d43 + checksum: 757a0aaa5ad6c50c7480bd75371d407ac75f5022cd4404aba07adadf1448189502aea9bb7b2d09d25e18745e0abf72b95506b6beb184bcccabe919e48e3a5df7 languageName: node linkType: hard "micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: d00bf397d97a872ce2f8f3e677ff6aecc66fa1d64ef1d67226596c4a9fe0b8c6d321c6edd815826d1896af7ea2c453a88502de4300f8c5dc886d58636f32995f + version: 1.1.0 + resolution: "micromark-util-encode@npm:1.1.0" + checksum: 9878c9bc96999d45626a7597fffac85348ea842dce75d2417345cbf070a9941c62477bd0963bef37d4f0fd29f2982be6ddf416d62806f00ccb334af9d6ee87e7 languageName: node linkType: hard "micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.1 - resolution: "micromark-util-events-to-acorn@npm:1.2.1" + version: 1.2.3 + resolution: "micromark-util-events-to-acorn@npm:1.2.3" dependencies: "@types/acorn": ^4.0.0 "@types/estree": ^1.0.0 + "@types/unist": ^2.0.0 estree-util-visit: ^1.0.0 + micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - vfile-location: ^4.0.0 vfile-message: ^3.0.0 - checksum: ce2e05b0ecf437f36b7c1a4032f199c85174c277d1ab33c9589dff5f6956fd771bc7a78cf6c9bdbf86f6a4a81eb7e30399c58ecf1b919b875f17d8cb19729b3c + checksum: cd3af7365806a0b22efb83cb7726cb835725c0bc22e04f7ea83f2f38a09e7132413eff6ab6d53652b969a7ec30e442731c3abbbe8a74dc2081c51fd10223c269 languageName: node linkType: hard "micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: 700bebb77a893c93d2b236413c043425dfb068314d8e6aa66090575b86a700d23a64b9e96a343391ce4cf63c40d12df1163f90e92d2d985b125d3315f4601b81 + version: 1.2.0 + resolution: "micromark-util-html-tag-name@npm:1.2.0" + checksum: 15421869678d36b4fe51df453921e8186bff514a14e9f79f32b7e1cdd67874e22a66ad34a7f048dd132cbbbfc7c382ae2f777a2bfd1f245a47705dc1c6d4f199 languageName: node linkType: hard "micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-normalize-identifier@npm:1.1.0" dependencies: micromark-util-symbol: ^1.0.0 - checksum: de4285cbdf1588f0db934e868d78ebd74dfe10802508ed2b0e7a5fec6eddc00f2d496c2d33f2e70707e3f33e31d6c7c1ff59a3841f4c425535c72ea7b6d3a89c + checksum: a9657321a2392584e4d978061882117a84db7d2c2c1c052c0f5d25da089d463edb9f956d5beaf7f5768984b6f72d046d59b5972951ec7bf25397687a62b8278a languageName: node linkType: hard "micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" + version: 1.1.0 + resolution: "micromark-util-resolve-all@npm:1.1.0" dependencies: micromark-util-types: ^1.0.0 - checksum: 0373d4fd0dcf340a60e584b1ea0b21d986709378042d39a8790b3086013e3c9e523a2c6fcffb9c8bf0d3ff6f236f6cb5df72044c1a7fffa68fef65daf4ae6ff1 + checksum: b5c95484c06e87bbbb60d8430eb030a458733a5270409f4c67892d1274737087ca6a7ca888987430e57cf1dcd44bb16390d3b3936a2bf07f7534ec8f52ce43c9 languageName: node linkType: hard "micromark-util-sanitize-uri@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" + version: 1.2.0 + resolution: "micromark-util-sanitize-uri@npm:1.2.0" dependencies: micromark-util-character: ^1.0.0 micromark-util-encode: ^1.0.0 micromark-util-symbol: ^1.0.0 - checksum: aa7cde6bc8e6a8971b8501c0cfeb4185a77f5b4eba8eb65cfdbdcb29106f29878376b655e8f9942d0090b87785a54ec2b349046cf60759dc44a4c90fcf0eac3e + checksum: dbdb98248e9f0408c7a00f1c1cd805775b41d213defd659533835f34b38da38e8f990bf7b3f782e96bffbc549aec9c3ecdab197d4ad5adbfe08f814a70327b6e languageName: node linkType: hard "micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" + version: 1.1.0 + resolution: "micromark-util-subtokenize@npm:1.1.0" dependencies: micromark-util-chunked: ^1.0.0 micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: d4aea094d9040be13ec31b619106a1e19771cbdda88f19011f0f03f73d1ae97771b35a577fdf35d75ce61056394bb4b18cb5edac4c8b851632e86306e0e9838b + checksum: f292b1b162845db50d36255c9d4c4c6d47931fbca3ac98a80c7e536d2163233fd662f8ca0479ee2b80f145c66a1394c7ed17dfce801439741211015e77e3901e languageName: node linkType: hard "micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: 760dbebaf853b8d6e690f911ef5e7bcd52c3b5447c8a99c309dfc874f5c30dc6428bd600669ac8c47a46de54fce337b366474e429f9c2f859f0f59cb1516b22c + version: 1.1.0 + resolution: "micromark-util-symbol@npm:1.1.0" + checksum: 10ceaed33a90e6bfd3a5d57053dbb53f437d4809cc11430b5a09479c0ba601577059be9286df4a7eae6e350a60a2575dc9fa9d9872b5b8d058c875e075c33803 languageName: node linkType: hard "micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 850fa76d1ed229e906d16ab91f023f680adf9b3d6adb0332983d2fc0d650dded416aac7846e0a23f154efffb43e36df1f8312831e0ed5e28f059eb50f11f2097 + version: 1.1.0 + resolution: "micromark-util-types@npm:1.1.0" + checksum: a9749cb0a12a252ff536baabcb7012421b6fad4d91a5fdd80d7b33dc7b4c22e2d0c4637dfe5b902d00247fe6c9b01f4a24fce6b572b16ccaa4da90e6ce2a11e4 languageName: node linkType: hard "micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" + version: 3.2.0 + resolution: "micromark@npm:3.2.0" dependencies: "@types/debug": ^4.0.0 debug: ^4.0.0 @@ -21813,7 +22566,7 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.1 uvu: ^0.5.0 - checksum: b316e5a804039d95794527fc1c7f87dd5fee0c793aff9f2ba1a4ad40dc2c29a541b68c01507f0ae52f91138f560d896f9ea1ad267e183740ec2456caf590ccaf + checksum: f243e805d1b3cc699fddae2de0b1492bc82462f1a709d7ae5c82039f88b1e009c959100184717e748be057b5f88603289d5681679a4e6fbabcd037beb34bc744 languageName: node linkType: hard @@ -21848,7 +22601,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -21858,6 +22611,18 @@ __metadata: languageName: node linkType: hard +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: ^4.0.0 + brorand: ^1.0.1 + bin: + miller-rabin: bin/miller-rabin + checksum: 26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + "mime-db@npm:1.52.0, mime-db@npm:1.x.x, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -21899,6 +22664,27 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -21906,24 +22692,31 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:2.7.5": - version: 2.7.5 - resolution: "mini-css-extract-plugin@npm:2.7.5" +"mini-css-extract-plugin@npm:2.7.6": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" dependencies: schema-utils: ^4.0.0 peerDependencies: webpack: ^5.0.0 - checksum: ff13746bc1987c5f9736b990fd8fb1e673502ce2083631b21e3bf97142b9427b9f98c434d78f64464c61a84a0fa9d01701b52b36b0fa0eac5ac7d1310b843178 + checksum: 4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0": +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" checksum: 96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd languageName: node linkType: hard +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + "minimatch@npm:2 || 3, minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -21960,39 +22753,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^7.4.2": - version: 7.4.5 - resolution: "minimatch@npm:7.4.5" - dependencies: - brace-expansion: ^2.0.1 - checksum: 6501c7bd6d58164623a968e8956b14623f208e3a0ada4cf7095d4e322de922b07296031e487ccae7aefa520e6dc9d7ac375134fa3d3cb38f594c0b5ce6835f86 - languageName: node - linkType: hard - -"minimatch@npm:^7.4.6": - version: 7.4.6 - resolution: "minimatch@npm:7.4.6" - dependencies: - brace-expansion: ^2.0.1 - checksum: e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 - languageName: node - linkType: hard - "minimatch@npm:^8.0.2": - version: 8.0.3 - resolution: "minimatch@npm:8.0.3" + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" dependencies: brace-expansion: ^2.0.1 - checksum: e3bce7dcae36adfa0c24ef4d165ab3126f7378c79543e3b020d10c74be91aeeb63a2f46943241b49099b6dd040c622a705ca81419ae1e7af30dff977355a4240 + checksum: a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca languageName: node linkType: hard -"minimatch@npm:^9.0.0": - version: 9.0.0 - resolution: "minimatch@npm:9.0.0" +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: ^2.0.1 - checksum: d966656c280a994f89c3711e8cdac0c78d8703d028a26722d0229e3e92bf515a065165caa64cbccdd7ca89bb0338a3094920f8d42d36295c4d55922e19ae366e + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard @@ -22007,7 +22782,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -22023,21 +22798,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: a43da7401cd7c4f24b993887d41bd37d097356083b0bb836fd655916467463a1e6e9e553b2da4fcbe8745bf23d40c8b884eab20745562199663b3e9060cd8e7a - languageName: node - linkType: hard - "minipass-fetch@npm:^2.0.3": version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" @@ -22054,17 +22814,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^3.0.0": - version: 3.0.1 - resolution: "minipass-fetch@npm:3.0.1" + version: 3.0.3 + resolution: "minipass-fetch@npm:3.0.3" dependencies: encoding: ^0.1.13 - minipass: ^4.0.0 + minipass: ^5.0.0 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true - checksum: 56fa802899bbb6123cd30a22b0e7ea3d4630be035ea3895022aeeb4fc2d7ec6ec5ebf3d1ff58d9d5b7bcfb06418fb72a3dcafdf96a67791ec0cb9e609ee4ec7d + checksum: 12e0fde7e8fdb1bd923b9243b4788e7d3df305c6ddb3b79ab2da4587fa608c126157c7f6dd43746e8063ee99ec5abbb898d0426c812e9c9b68260c4fea9b279a languageName: node linkType: hard @@ -22087,7 +22847,7 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": +"minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -22105,7 +22865,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: @@ -22114,10 +22874,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^4.0.0, minipass@npm:^4.0.2, minipass@npm:^4.2.4": - version: 4.2.5 - resolution: "minipass@npm:4.2.5" - checksum: 98ef3a4f0e7cbb2a152139069fd48eca331296948946c69fd569eee24d875e1dbbe989609b561b9ff8ecdc3438f46ed6c287efd150facd7d374a8fd6ba689d02 +"minipass@npm:^4.0.0, minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce languageName: node linkType: hard @@ -22128,7 +22888,14 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.2 + resolution: "minipass@npm:7.0.2" + checksum: 5e800acfc9dc75eacac5c4969ab50210463a8afbe8b487de1ae681106e17eb93772513854b6a38462b200b5758af95eeeb481945e050ce76f575ff1150fff4b4 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -22276,10 +23043,10 @@ __metadata: languageName: node linkType: hard -"muggle-string@npm:^0.2.2": - version: 0.2.2 - resolution: "muggle-string@npm:0.2.2" - checksum: 808aadd73c2356ace166813d94a12b28d42f759c26c79058d1ed4960246ea62b287123598a395537bd36b022229057d29ea585b1fec88aa254f890c196f4f5e2 +"muggle-string@npm:^0.3.1": + version: 0.3.1 + resolution: "muggle-string@npm:0.3.1" + checksum: 489b0575fa76e30914393915a36638590052409fca2206a6bef0fb0ad7b181c1cbf99761191bfd16fe402c6f5a3164897965422fa32ef20ada1b44024ba46ab6 languageName: node linkType: hard @@ -22315,7 +23082,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.4, nanoid@npm:^3.3.6": +"nanoid@npm:^3.3.4, nanoid@npm:^3.3.6": version: 3.3.6 resolution: "nanoid@npm:3.3.6" bin: @@ -22324,6 +23091,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^4.0.2": + version: 4.0.2 + resolution: "nanoid@npm:4.0.2" + bin: + nanoid: bin/nanoid.js + checksum: 3fec62f422bc4727918eda0e7aa43e9cbb2e759be72813a0587b9dac99727d3c7ad972efce7f4f1d4cb5c7c554136a1ec3b1043d1d91d28d818d6acbe98200e5 + languageName: node + linkType: hard + "nanomatch@npm:^1.2.9": version: 1.2.13 resolution: "nanomatch@npm:1.2.13" @@ -22387,7 +23163,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 @@ -22401,48 +23177,38 @@ __metadata: languageName: node linkType: hard -"next@npm:^13.2.4": - version: 13.2.4 - resolution: "next@npm:13.2.4" - dependencies: - "@next/env": 13.2.4 - "@next/swc-android-arm-eabi": 13.2.4 - "@next/swc-android-arm64": 13.2.4 - "@next/swc-darwin-arm64": 13.2.4 - "@next/swc-darwin-x64": 13.2.4 - "@next/swc-freebsd-x64": 13.2.4 - "@next/swc-linux-arm-gnueabihf": 13.2.4 - "@next/swc-linux-arm64-gnu": 13.2.4 - "@next/swc-linux-arm64-musl": 13.2.4 - "@next/swc-linux-x64-gnu": 13.2.4 - "@next/swc-linux-x64-musl": 13.2.4 - "@next/swc-win32-arm64-msvc": 13.2.4 - "@next/swc-win32-ia32-msvc": 13.2.4 - "@next/swc-win32-x64-msvc": 13.2.4 - "@swc/helpers": 0.4.14 +"next@npm:^13.4.8": + version: 13.4.12 + resolution: "next@npm:13.4.12" + dependencies: + "@next/env": 13.4.12 + "@next/swc-darwin-arm64": 13.4.12 + "@next/swc-darwin-x64": 13.4.12 + "@next/swc-linux-arm64-gnu": 13.4.12 + "@next/swc-linux-arm64-musl": 13.4.12 + "@next/swc-linux-x64-gnu": 13.4.12 + "@next/swc-linux-x64-musl": 13.4.12 + "@next/swc-win32-arm64-msvc": 13.4.12 + "@next/swc-win32-ia32-msvc": 13.4.12 + "@next/swc-win32-x64-msvc": 13.4.12 + "@swc/helpers": 0.5.1 + busboy: 1.6.0 caniuse-lite: ^1.0.30001406 postcss: 8.4.14 styled-jsx: 5.1.1 + watchpack: 2.4.0 + zod: 3.21.4 peerDependencies: - "@opentelemetry/api": ^1.4.0 + "@opentelemetry/api": ^1.1.0 fibers: ">= 3.1.0" - node-sass: ^6.0.0 || ^7.0.0 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 dependenciesMeta: - "@next/swc-android-arm-eabi": - optional: true - "@next/swc-android-arm64": - optional: true "@next/swc-darwin-arm64": optional: true "@next/swc-darwin-x64": optional: true - "@next/swc-freebsd-x64": - optional: true - "@next/swc-linux-arm-gnueabihf": - optional: true "@next/swc-linux-arm64-gnu": optional: true "@next/swc-linux-arm64-musl": @@ -22462,13 +23228,11 @@ __metadata: optional: true fibers: optional: true - node-sass: - optional: true sass: optional: true bin: next: dist/bin/next - checksum: 7eb9d92fc7011148f2169bd5e8219dd9b87b99366f55241c88b07701be602f3e3cc127aad57c32af839c31ad6f3eb1aa62e5c482b6e16b82f738ea3c6b8b2e04 + checksum: 8957092182c98f154d48cc3fc5fbadf07a691dded067e54274225b0d1f75c16f5a7c148361035629dcda5e8e10b9b9b0953d15438477d489bbe1a7ecdb664677 languageName: node linkType: hard @@ -22532,10 +23296,17 @@ __metadata: languageName: node linkType: hard +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b + languageName: node + linkType: hard + "node-fetch-native@npm:^1.0.2": - version: 1.0.2 - resolution: "node-fetch-native@npm:1.0.2" - checksum: f52c46d4d9e6b205d4a905551843dfa777ffe7378a8c29c37131addef811f5b1b0e6b88b20a29c79931999b919304205e048749f07f7f8081bf7a3a3a078dfd0 + version: 1.2.0 + resolution: "node-fetch-native@npm:1.2.0" + checksum: 85faa0b7af6884fd615ddc05ec70f05d3818bef8ece43952c49dd849885b21fe7cef54f62cf17b9c0faadfe13498f667a996070d386918ab7017b46c725c5ff6 languageName: node linkType: hard @@ -22553,9 +23324,9 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.9 - resolution: "node-fetch@npm:2.6.9" +"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -22563,7 +23334,18 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 7a4a0e027e509b741bec4172749103f158da23187ff251cb988dd54ea7267519c3fa11838971da0f5f3c54e79da3174e7bd72aa2179c9f69887511ece16c9c0f + checksum: 10372e4b5ee07acadc15e6b2bc6fd8940582eea7b9b2a331f4e3665fdcd968498c1656f79f2fa572080ebb37ea80e1474a6478b3b36057ef901b63f4be8fd899 + languageName: node + linkType: hard + +"node-fetch@npm:^3.3.1": + version: 3.3.2 + resolution: "node-fetch@npm:3.3.2" + dependencies: + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: f3d5e56190562221398c9f5750198b34cf6113aa304e34ee97c94fd300ec578b25b2c2906edba922050fce983338fde0d5d34fcb0fc3336ade5bd0e429ad7538 languageName: node linkType: hard @@ -22585,34 +23367,15 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^8.4.0": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 80ef333b3a882eb6a2695a8e08f31d618f4533eff192864e4a3a16b67ff0abc9d8c1d5fac0395550ec699326b9248c5e2b3be178492f7f4d1ccf97d2cf948021 - languageName: node - linkType: hard - -"node-gyp@npm:^9.0.0, node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" +"node-gyp@npm:^9.0.0, node-gyp@npm:^9.3.1, node-gyp@npm:latest": + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 + make-fetch-happen: ^11.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 @@ -22621,7 +23384,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 3285c110768eb65aadd9aa1d056f917e594ea22611d21fd535ab3677ea433d0a281e7f09bc73d53e64b02214f4379dbca476dc33faffe455b0ac1d5ba92802f4 + checksum: e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad languageName: node linkType: hard @@ -22639,21 +23402,45 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: 90947653e8e3d85bda4bcbf28d019693ccfb5d5947838ca64e91208b51d7bfc13ba930b8216389a4faffbad8145b2c616bf1f7a09c97a1a9ac57fd6ef6d01c5c +"node-polyfill-webpack-plugin@npm:^2.0.1": + version: 2.0.1 + resolution: "node-polyfill-webpack-plugin@npm:2.0.1" + dependencies: + assert: ^2.0.0 + browserify-zlib: ^0.2.0 + buffer: ^6.0.3 + console-browserify: ^1.2.0 + constants-browserify: ^1.0.0 + crypto-browserify: ^3.12.0 + domain-browser: ^4.22.0 + events: ^3.3.0 + filter-obj: ^2.0.2 + https-browserify: ^1.0.0 + os-browserify: ^0.3.0 + path-browserify: ^1.0.1 + process: ^0.11.10 + punycode: ^2.1.1 + querystring-es3: ^0.2.1 + readable-stream: ^4.0.0 + stream-browserify: ^3.0.0 + stream-http: ^3.2.0 + string_decoder: ^1.3.0 + timers-browserify: ^2.0.12 + tty-browserify: ^0.0.1 + type-fest: ^2.14.0 + url: ^0.11.0 + util: ^0.12.4 + vm-browserify: ^1.1.2 + peerDependencies: + webpack: ">=5" + checksum: fc3dcef5888c10d0ff9924a389e5bd9d9c95109e31cb7c8a27775b17ef14a63b587365b43bfedd81eb5f93cb16a04c0e8234a2c623bfaa2f2a528a9e45811f91 languageName: node linkType: hard -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: 1 - bin: - nopt: bin/nopt.js - checksum: fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 +"node-releases@npm:^2.0.12": + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 languageName: node linkType: hard @@ -22669,13 +23456,13 @@ __metadata: linkType: hard "nopt@npm:^7.0.0": - version: 7.1.0 - resolution: "nopt@npm:7.1.0" + version: 7.2.0 + resolution: "nopt@npm:7.2.0" dependencies: abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: f6dc14b7ae956d561798ed98e40ab5354ace6b6b23a74c7fd5f60036b5d734a6a99e4873c7a76dccda1b0326f0e3cdd432536fe8d1eab4d96fe525b53830f674 + checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff languageName: node linkType: hard @@ -22741,7 +23528,14 @@ __metadata: languageName: node linkType: hard -"npm-bundled@npm:^1.1.1, npm-bundled@npm:^1.1.2": +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 + languageName: node + linkType: hard + +"npm-bundled@npm:^1.1.2": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" dependencies: @@ -22750,15 +23544,6 @@ __metadata: languageName: node linkType: hard -"npm-bundled@npm:^2.0.0": - version: 2.0.1 - resolution: "npm-bundled@npm:2.0.1" - dependencies: - npm-normalize-package-bin: ^2.0.0 - checksum: 5b2dc1de455d38200e49c6205dee185ce919ea6b608672c693bec8907116bc5686dabcc150347630d351c1c533315fd60a1910ce00bdad6bb204cef016b90b7d - languageName: node - linkType: hard - "npm-bundled@npm:^3.0.0": version: 3.0.0 resolution: "npm-bundled@npm:3.0.0" @@ -22768,21 +23553,12 @@ __metadata: languageName: node linkType: hard -"npm-install-checks@npm:^5.0.0": - version: 5.0.0 - resolution: "npm-install-checks@npm:5.0.0" - dependencies: - semver: ^7.1.1 - checksum: eb108e1c1ac38c76f9a658ab2b4871836246e262836c05d42a23049e0399e6c8cdcf65a1e50193b64807a3b2b86f8e158d0161db98e846d7e9617bc5f49337af - languageName: node - linkType: hard - "npm-install-checks@npm:^6.0.0": - version: 6.1.0 - resolution: "npm-install-checks@npm:6.1.0" + version: 6.1.1 + resolution: "npm-install-checks@npm:6.1.1" dependencies: semver: ^7.1.1 - checksum: a8354280109359be50cb32de6e3ba23bfeb78086438da7c664d124c44d0e9045ebc23fe258c26782f07e7f948453b8f94cb27b6239b6c79168c0fda402cc605b + checksum: f61bbd7e27738037a3e836e1b154f668f774a4eb5fd66830b9edf3ef4b0648d4477cb0c73c129a255445109a5c18f16413e1b356d56c0cac006e57ab21c66ede languageName: node linkType: hard @@ -22800,10 +23576,10 @@ __metadata: languageName: node linkType: hard -"npm-normalize-package-bin@npm:^3.0.0": - version: 3.0.0 - resolution: "npm-normalize-package-bin@npm:3.0.0" - checksum: 963c345ad6dc70dbb6140b32bc6b0eb3365d48c82f588f75d64f59d6cf7eb08683d92257a2ee681be117d0727f641b557a3981e14f5c97bf927f16876e0e48e6 +"npm-normalize-package-bin@npm:^3.0.0, npm-normalize-package-bin@npm:^3.0.1": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 languageName: node linkType: hard @@ -22830,7 +23606,7 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1": +"npm-package-arg@npm:^9.0.1": version: 9.1.2 resolution: "npm-package-arg@npm:9.1.2" dependencies: @@ -22856,20 +23632,6 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^5.1.0": - version: 5.1.3 - resolution: "npm-packlist@npm:5.1.3" - dependencies: - glob: ^8.0.1 - ignore-walk: ^5.0.1 - npm-bundled: ^2.0.0 - npm-normalize-package-bin: ^2.0.0 - bin: - npm-packlist: bin/index.js - checksum: a8bea97661b2a7132bc8832d5560da24f823ee5324429bd16eb82b7873557de14641bc3fed8a7611b0d88b9771e59e99e01a9e551a53adb164327ded6128aada - languageName: node - linkType: hard - "npm-packlist@npm:^7.0.0": version: 7.0.4 resolution: "npm-packlist@npm:7.0.4" @@ -22891,19 +23653,7 @@ __metadata: languageName: node linkType: hard -"npm-pick-manifest@npm:^7.0.0": - version: 7.0.2 - resolution: "npm-pick-manifest@npm:7.0.2" - dependencies: - npm-install-checks: ^5.0.0 - npm-normalize-package-bin: ^2.0.0 - npm-package-arg: ^9.0.0 - semver: ^7.3.5 - checksum: 522ba83a9ec92405b720a135b4333bc237063994f1244ff8125fd906979feedff3775472caa87779a260294ff4d2cd949c6f679ab353b2d81bca76c466539b67 - languageName: node - linkType: hard - -"npm-registry-fetch@npm:14.0.3, npm-registry-fetch@npm:^14.0.0, npm-registry-fetch@npm:^14.0.3": +"npm-registry-fetch@npm:14.0.3": version: 14.0.3 resolution: "npm-registry-fetch@npm:14.0.3" dependencies: @@ -22918,7 +23668,7 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1": +"npm-registry-fetch@npm:^13.0.0": version: 13.3.1 resolution: "npm-registry-fetch@npm:13.3.1" dependencies: @@ -22933,6 +23683,21 @@ __metadata: languageName: node linkType: hard +"npm-registry-fetch@npm:^14.0.0, npm-registry-fetch@npm:^14.0.3": + version: 14.0.5 + resolution: "npm-registry-fetch@npm:14.0.5" + dependencies: + 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 + checksum: 6f556095feb20455d6dc3bb2d5f602df9c5725ab49bca8570135e2900d0ccd0a619427bb668639d94d42651fab0a9e8e234f5381767982a1af17d721799cfc2d + languageName: node + linkType: hard + "npm-run-path@npm:^2.0.0": version: 2.0.2 resolution: "npm-run-path@npm:2.0.2" @@ -22951,7 +23716,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -22960,6 +23725,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.1.0": + version: 5.1.0 + resolution: "npm-run-path@npm:5.1.0" + dependencies: + path-key: ^4.0.0 + checksum: ff6d77514489f47fa1c3b1311d09cd4b6d09a874cc1866260f9dea12cbaabda0436ed7f8c2ee44d147bf99a3af29307c6f63b0f83d242b0b6b0ab25dff2629e3 + languageName: node + linkType: hard + "npmlog@npm:6.0.2, npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -23005,28 +23779,48 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": - version: 2.2.2 - resolution: "nwsapi@npm:2.2.2" - checksum: f7c4fedb0dc0786204ee99f440e9827d6e01a0c0322e93b5c9a9a382dd0bd9650d98ca3d1967a77554e3ec1f9a46a20cfea80a41fb00e91c5101c53d8b2c9aed - languageName: node - linkType: hard - -"nx@npm:15.9.2, nx@npm:>=15.5.2 < 16, nx@npm:^15.4.5": - version: 15.9.2 - resolution: "nx@npm:15.9.2" - dependencies: - "@nrwl/cli": 15.9.2 - "@nrwl/nx-darwin-arm64": 15.9.2 - "@nrwl/nx-darwin-x64": 15.9.2 - "@nrwl/nx-linux-arm-gnueabihf": 15.9.2 - "@nrwl/nx-linux-arm64-gnu": 15.9.2 - "@nrwl/nx-linux-arm64-musl": 15.9.2 - "@nrwl/nx-linux-x64-gnu": 15.9.2 - "@nrwl/nx-linux-x64-musl": 15.9.2 - "@nrwl/nx-win32-arm64-msvc": 15.9.2 - "@nrwl/nx-win32-x64-msvc": 15.9.2 - "@nrwl/tao": 15.9.2 +"nwsapi@npm:^2.2.2": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db + languageName: node + linkType: hard + +"nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "nx-cloud@npm:16.0.5" + dependencies: + "@nrwl/nx-cloud": 16.0.5 + axios: 1.1.3 + chalk: ^4.1.0 + dotenv: ~10.0.0 + fs-extra: ^11.1.0 + node-machine-id: ^1.1.12 + open: ~8.4.0 + strip-json-comments: ^3.1.1 + tar: 6.1.11 + yargs-parser: ">=21.1.1" + bin: + nx-cloud: bin/nx-cloud.js + checksum: 02f0bf081c3f69c2682d9e21bc9e281df80a0e31852cd81cb8746d9dd07ebdc071c5138867ed9b84f922c0da40bd0170f2d735c4d8cf0768c24d6a47078ebf48 + languageName: node + linkType: hard + +"nx@npm:15.9.4, nx@npm:>=15.5.2 < 16": + version: 15.9.4 + resolution: "nx@npm:15.9.4" + dependencies: + "@nrwl/cli": 15.9.4 + "@nrwl/nx-darwin-arm64": 15.9.4 + "@nrwl/nx-darwin-x64": 15.9.4 + "@nrwl/nx-linux-arm-gnueabihf": 15.9.4 + "@nrwl/nx-linux-arm64-gnu": 15.9.4 + "@nrwl/nx-linux-arm64-musl": 15.9.4 + "@nrwl/nx-linux-x64-gnu": 15.9.4 + "@nrwl/nx-linux-x64-musl": 15.9.4 + "@nrwl/nx-win32-arm64-msvc": 15.9.4 + "@nrwl/nx-win32-x64-msvc": 15.9.4 + "@nrwl/tao": 15.9.4 "@parcel/watcher": 2.0.4 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": ^3.0.0-rc.18 @@ -23089,7 +23883,87 @@ __metadata: optional: true bin: nx: bin/nx.js - checksum: a60b9684d624f785b81068b89778c8b2bcefe2951d0b28f207ef15ed827f199bbd6ea770a7925660c5a59bdb592f1b88a46e9ee31860c278999e4345a9707f8a + checksum: 09e5bb47c562bbbf274509ffdc56ec565315ebf09a769e6ee3953621799db8e3d047df203e475ca3f0edd3dd5e65045c94bc37527f22e663f31ee694a7a12d5c + languageName: node + linkType: hard + +"nx@npm:16.2.1": + version: 16.2.1 + resolution: "nx@npm:16.2.1" + dependencies: + "@nrwl/tao": 16.2.1 + "@nx/nx-darwin-arm64": 16.2.1 + "@nx/nx-darwin-x64": 16.2.1 + "@nx/nx-linux-arm-gnueabihf": 16.2.1 + "@nx/nx-linux-arm64-gnu": 16.2.1 + "@nx/nx-linux-arm64-musl": 16.2.1 + "@nx/nx-linux-x64-gnu": 16.2.1 + "@nx/nx-linux-x64-musl": 16.2.1 + "@nx/nx-win32-arm64-msvc": 16.2.1 + "@nx/nx-win32-x64-msvc": 16.2.1 + "@parcel/watcher": 2.0.4 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0-rc.18 + "@zkochan/js-yaml": 0.0.6 + axios: ^1.0.0 + chalk: ^4.1.0 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: ^7.0.2 + dotenv: ~10.0.0 + enquirer: ~2.3.6 + fast-glob: 3.2.7 + figures: 3.2.0 + flat: ^5.0.2 + fs-extra: ^11.1.0 + glob: 7.1.4 + ignore: ^5.0.4 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: ~2.0.3 + minimatch: 3.0.5 + npm-run-path: ^4.0.1 + open: ^8.4.0 + semver: 7.3.4 + 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 + v8-compile-cache: 2.3.0 + yargs: ^17.6.2 + yargs-parser: 21.1.1 + peerDependencies: + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.173 + dependenciesMeta: + "@nx/nx-darwin-arm64": + optional: true + "@nx/nx-darwin-x64": + optional: true + "@nx/nx-linux-arm-gnueabihf": + optional: true + "@nx/nx-linux-arm64-gnu": + optional: true + "@nx/nx-linux-arm64-musl": + optional: true + "@nx/nx-linux-x64-gnu": + optional: true + "@nx/nx-linux-x64-musl": + optional: true + "@nx/nx-win32-arm64-msvc": + optional: true + "@nx/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true + bin: + nx: bin/nx.js + checksum: a6d78686dea2cb72d84d06dc1feed0dc0e07080c607c78939c1083b7a05cc9d30514016aa79dc584fd54dffa0612c7051666ddb7fb1ddf4e7373f0515f7ed6f6 languageName: node linkType: hard @@ -23151,7 +24025,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -23229,13 +24103,6 @@ __metadata: languageName: node linkType: hard -"octokit-pagination-methods@npm:^1.1.0": - version: 1.1.0 - resolution: "octokit-pagination-methods@npm:1.1.0" - checksum: e8b2b346e7ad91c1b10a3d8be76d8aa33889b4df0bd5c28106dc2e8b5498185bbb5bd884ef07a57b09a5c54003deb2814280bab6ed6991e9e650c5cdc9879924 - languageName: node - linkType: hard - "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -23270,7 +24137,16 @@ __metadata: languageName: node linkType: hard -"open@npm:8.4.2, open@npm:^8.0.9, open@npm:^8.4.0": +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: ^4.0.0 + checksum: 4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"open@npm:8.4.2, open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.4.0, open@npm:~8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -23281,13 +24157,15 @@ __metadata: languageName: node linkType: hard -"open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" dependencies: - is-docker: ^2.0.0 - is-wsl: ^2.1.1 - checksum: 77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^2.2.0 + checksum: 8073ec0dd8994a7a7d9bac208bd17d093993a65ce10f2eb9b62b6d3a91c9366ae903938a237c275493c130171d339f6dcbdd2a2de7e32953452c0867b97825af languageName: node linkType: hard @@ -23309,31 +24187,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 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 - checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -23354,6 +24218,13 @@ __metadata: languageName: node linkType: hard +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: 6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 + languageName: node + linkType: hard + "os-homedir@npm:^1.0.0": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" @@ -23378,10 +24249,20 @@ __metadata: languageName: node linkType: hard -"overlayscrollbars@npm:^1.13.1": - version: 1.13.3 - resolution: "overlayscrollbars@npm:1.13.3" - checksum: 2eea68189aebf772282305ff83c90a6caa20b7e0f2b0dd792a017a6226c68a2db756665c59a8a40b1de53e83c3918c9a13dc35875b6e1d56ff08237cb6f57699 +"overlayscrollbars-react@npm:^0.5.0": + version: 0.5.1 + resolution: "overlayscrollbars-react@npm:0.5.1" + peerDependencies: + overlayscrollbars: ^2.0.0 + react: ">=16.8.0" + checksum: 3a8717d19ab54f6762a92c07ffa1f44d1b7ae72a8b60eaf88877efa9289409171eff840b0374d94935ee586f7c92e4f15a134ddb72d4b7a143defb69039fa6ca + languageName: node + linkType: hard + +"overlayscrollbars@npm:^2.2.0": + version: 2.2.1 + resolution: "overlayscrollbars@npm:2.2.1" + checksum: 718dd563ee17a8c92a54f0b67989806edadd5b999e36d2ab322e7813b369d1cf0198d7267ca42ca9e879023f0658825e2b050d2845e751d876285d1d3549cb5e languageName: node linkType: hard @@ -23392,6 +24273,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01 + languageName: node + linkType: hard + "p-event@npm:^4.1.0": version: 4.2.0 resolution: "p-event@npm:4.2.0" @@ -23442,6 +24330,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -23478,6 +24375,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + "p-map-series@npm:2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" @@ -23544,56 +24450,25 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f - languageName: node - linkType: hard - -"p-waterfall@npm:2.1.1": - version: 2.1.1 - resolution: "p-waterfall@npm:2.1.1" - dependencies: - p-reduce: ^2.0.0 - checksum: ccae582b75a3597018a375f8eac32b93e8bfb9fc22a8e5037787ef4ebf5958d7465c2d3cbe26443971fbbfda2bcb7b645f694b91f928fc9a71fa5031e6e33f85 - languageName: node - linkType: hard - -"pacote@npm:13.6.2, pacote@npm:^13.6.1": - version: 13.6.2 - resolution: "pacote@npm:13.6.2" - dependencies: - "@npmcli/git": ^3.0.0 - "@npmcli/installed-package-contents": ^1.0.7 - "@npmcli/promise-spawn": ^3.0.0 - "@npmcli/run-script": ^4.1.0 - cacache: ^16.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - infer-owner: ^1.0.4 - minipass: ^3.1.6 - mkdirp: ^1.0.4 - npm-package-arg: ^9.0.0 - npm-packlist: ^5.1.0 - npm-pick-manifest: ^7.0.0 - npm-registry-fetch: ^13.0.1 - proc-log: ^2.0.0 - promise-retry: ^2.0.1 - read-package-json: ^5.0.0 - read-package-json-fast: ^2.0.3 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - bin: - pacote: lib/bin.js - checksum: 134d4ae5c3ab4a1745ee24de228796d7222320813d67d26016f6607319d6135d1b4fa2f4200d6d964be89749525b0daff893338237ac6284bb9b4a7a36770696 - languageName: node - linkType: hard - -"pacote@npm:15.1.3": - version: 15.1.3 - resolution: "pacote@npm:15.1.3" +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"p-waterfall@npm:2.1.1": + version: 2.1.1 + resolution: "p-waterfall@npm:2.1.1" + dependencies: + p-reduce: ^2.0.0 + checksum: ccae582b75a3597018a375f8eac32b93e8bfb9fc22a8e5037787ef4ebf5958d7465c2d3cbe26443971fbbfda2bcb7b645f694b91f928fc9a71fa5031e6e33f85 + languageName: node + linkType: hard + +"pacote@npm:15.1.1": + version: 15.1.1 + resolution: "pacote@npm:15.1.1" dependencies: "@npmcli/git": ^4.0.0 "@npmcli/installed-package-contents": ^2.0.1 @@ -23601,7 +24476,7 @@ __metadata: "@npmcli/run-script": ^6.0.0 cacache: ^17.0.0 fs-minipass: ^3.0.0 - minipass: ^5.0.0 + minipass: ^4.0.0 npm-package-arg: ^10.0.0 npm-packlist: ^7.0.0 npm-pick-manifest: ^8.0.0 @@ -23610,18 +24485,18 @@ __metadata: promise-retry: ^2.0.1 read-package-json: ^6.0.0 read-package-json-fast: ^3.0.0 - sigstore: ^1.3.0 + sigstore: ^1.0.0 ssri: ^10.0.0 tar: ^6.1.11 bin: pacote: lib/bin.js - checksum: c23663846a3db76dfa78944fea137e230363ad30f336f76aea53c8eee315aafd26fb7fe126dd69243173a6cbe86a9b525397727fa65e10e08b9ea71e1981702b + checksum: 382927250bb7a410c2fd08fe5f17e25cbb10db993578dbce81ecbf2bc28439fca20457b182e7c8982c8f18eeb571e4fd60390b3b7ce8cb08e2e43953af3df22f languageName: node linkType: hard -"pacote@npm:^15.0.0, pacote@npm:^15.0.8": - version: 15.1.1 - resolution: "pacote@npm:15.1.1" +"pacote@npm:15.2.0, pacote@npm:^15.0.0, pacote@npm:^15.0.8": + version: 15.2.0 + resolution: "pacote@npm:15.2.0" dependencies: "@npmcli/git": ^4.0.0 "@npmcli/installed-package-contents": ^2.0.1 @@ -23629,7 +24504,7 @@ __metadata: "@npmcli/run-script": ^6.0.0 cacache: ^17.0.0 fs-minipass: ^3.0.0 - minipass: ^4.0.0 + minipass: ^5.0.0 npm-package-arg: ^10.0.0 npm-packlist: ^7.0.0 npm-pick-manifest: ^8.0.0 @@ -23638,16 +24513,16 @@ __metadata: promise-retry: ^2.0.1 read-package-json: ^6.0.0 read-package-json-fast: ^3.0.0 - sigstore: ^1.0.0 + sigstore: ^1.3.0 ssri: ^10.0.0 tar: ^6.1.11 bin: pacote: lib/bin.js - checksum: 382927250bb7a410c2fd08fe5f17e25cbb10db993578dbce81ecbf2bc28439fca20457b182e7c8982c8f18eeb571e4fd60390b3b7ce8cb08e2e43953af3df22f + checksum: 0e680a360d7577df61c36c671dcc9c63a1ef176518a6ec19a3200f91da51205432559e701cba90f0ba6901372765dde68a07ff003474d656887eb09b54f35c5f languageName: node linkType: hard -"pako@npm:^1.0.3": +"pako@npm:^1.0.3, pako@npm:~1.0.5": version: 1.0.11 resolution: "pako@npm:1.0.11" checksum: 86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe @@ -23680,6 +24555,19 @@ __metadata: languageName: node linkType: hard +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": + version: 5.1.6 + resolution: "parse-asn1@npm:5.1.6" + 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 + checksum: 4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd + languageName: node + linkType: hard + "parse-conflict-json@npm:^3.0.0": version: 3.0.1 resolution: "parse-conflict-json@npm:3.0.1" @@ -23822,15 +24710,6 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^6.0.1": - version: 6.0.1 - resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" - dependencies: - parse5: ^6.0.1 - checksum: dfa5960e2aaf125707e19a4b1bc333de49232eba5a6ffffb95d313a7d6087c3b7a274b58bee8d3bd41bdf150638815d1d601a42bbf2a0345208c3c35b1279556 - languageName: node - linkType: hard - "parse5-htmlparser2-tree-adapter@npm:^7.0.0": version: 7.0.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" @@ -23850,7 +24729,7 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1, parse5@npm:^6.0.1": +"parse5@npm:^6.0.1": version: 6.0.1 resolution: "parse5@npm:6.0.1" checksum: 595821edc094ecbcfb9ddcb46a3e1fe3a718540f8320eff08b8cf6742a5114cce2d46d45f95c26191c11b184dcaf4e2960abcd9c5ed9eb9393ac9a37efcfdecb @@ -23911,6 +24790,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -23932,6 +24818,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -23962,23 +24855,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.6.1": - version: 1.6.3 - resolution: "path-scurry@npm:1.6.3" - dependencies: - lru-cache: ^7.14.1 - minipass: ^4.0.2 - checksum: dbb64eb6beebc34bd971e21743aa720b0401a587051b36d7027f0a2526decff867d42e2e16e7a459d955e049e62b575da7ee39b74d4efa7e425e513806734585 - languageName: node - linkType: hard - -"path-scurry@npm:^1.7.0": - version: 1.7.0 - resolution: "path-scurry@npm:1.7.0" +"path-scurry@npm:^1.10.1, path-scurry@npm:^1.6.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" dependencies: - lru-cache: ^9.0.0 - minipass: ^5.0.0 - checksum: a8d1fd105b5b1bb0b86c73e3e1433d8227b8075c4868453529611ed8b0ba768d1195c54690c1de125277c4e8f09c7459b0e98f99fbd357c9b34dd566cbe6b55b + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard @@ -24006,9 +24889,22 @@ __metadata: linkType: hard "pathe@npm:^1.1.0": - version: 1.1.0 - resolution: "pathe@npm:1.1.0" - checksum: 1c5d07378475bcdf4f435684566190d35d06be2db8b8e61cf9e866ae649941fdb093d732fa01b0f51d86e3f94140543c2571b0bf65a87ca7b5d1f52152aabe03 + version: 1.1.1 + resolution: "pathe@npm:1.1.1" + checksum: 3ae5a0529c3415d91c3ac9133f52cffea54a0dd46892fe059f4b80faf36fd207957d4594bdc87043b65d0761b1e5728f81f46bafff3b5302da4e2e48889b8c0e + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.3": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + 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 + checksum: 5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd languageName: node linkType: hard @@ -24037,6 +24933,17 @@ __metadata: languageName: node linkType: hard +"periscopic@npm:^3.1.0": + version: 3.1.0 + resolution: "periscopic@npm:3.1.0" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^3.0.0 + is-reference: ^3.0.0 + checksum: fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 + languageName: node + linkType: hard + "picocolors@npm:^0.2.1": version: 0.2.1 resolution: "picocolors@npm:0.2.1" @@ -24051,13 +24958,22 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": +"picomatch@npm:2.3.1, picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be languageName: node linkType: hard +"pidtree@npm:^0.6.0": + version: 0.6.0 + resolution: "pidtree@npm:0.6.0" + bin: + pidtree: bin/pidtree.js + checksum: 0829ec4e9209e230f74ebf4265f5ccc9ebfb488334b525cb13f86ff801dca44b362c41252cd43ae4d7653a10a5c6ab3be39d2c79064d6895e0d78dc50a5ed6e9 + languageName: node + linkType: hard + "pify@npm:5.0.0, pify@npm:^5.0.0": version: 5.0.0 resolution: "pify@npm:5.0.0" @@ -24110,9 +25026,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.4, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: 58b6ff0f137a3d70ff34ac4802fd19819cdc19b53e9c95adecae6c7cfc77719a11f561ad85d46e79e520ef57c31145a564c8bc3bee8cfee75d441fab2928a51d + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -24169,6 +25085,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + "pkg-up@npm:^2.0.0": version: 2.0.0 resolution: "pkg-up@npm:2.0.0" @@ -24178,23 +25103,23 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.32.3": - version: 1.32.3 - resolution: "playwright-core@npm:1.32.3" +"playwright-core@npm:1.36.0": + version: 1.36.0 + resolution: "playwright-core@npm:1.36.0" bin: - playwright: cli.js - checksum: 8b94feb15084813607abac69ef3d4f78b345bcc89e322706e62c203b79e74096caf499ce4cd4103b1bfc853f17a9ff0573f636dc0ee88f56a5cb6ed18ce55f06 + playwright-core: cli.js + checksum: 5b5d32495e222ddd4351d1d8b116a25a7d93ea5f3439dceaceeb916d0abdce6d5b0b84f80df0b239168d55a100e7aecc9db4774ff20ba0210d8de027f258b544 languageName: node linkType: hard -"playwright@npm:1.32.3": - version: 1.32.3 - resolution: "playwright@npm:1.32.3" +"playwright@npm:1.36.0": + version: 1.36.0 + resolution: "playwright@npm:1.36.0" dependencies: - playwright-core: 1.32.3 + playwright-core: 1.36.0 bin: playwright: cli.js - checksum: 26a3a8897d1a41cd5d001859521ee44b3ac21618e638d3b2a58615672b2f325a6cdeb614dabc6b120999d8874f260c9786683644b13fe07476d4a3a47fcfff1f + checksum: dc39eb6271b22901cb6219a8ecdd44736169edd789d2a8be5885ded5414ee2a9e2c73a19e24d55336ddbae6f9d69522b46f1fe92998740745f1cb78d58b6cb6e languageName: node linkType: hard @@ -24246,7 +25171,7 @@ __metadata: languageName: node linkType: hard -"portfinder@npm:^1.0.25": +"portfinder@npm:^1.0.28": version: 1.0.32 resolution: "portfinder@npm:1.0.32" dependencies: @@ -24264,47 +25189,32 @@ __metadata: languageName: node linkType: hard -"postcss-loader@npm:7.2.4": - version: 7.2.4 - resolution: "postcss-loader@npm:7.2.4" +"postcss-loader@npm:7.3.2": + version: 7.3.2 + resolution: "postcss-loader@npm:7.3.2" dependencies: cosmiconfig: ^8.1.3 - cosmiconfig-typescript-loader: ^4.3.0 + jiti: ^1.18.2 klona: ^2.0.6 semver: ^7.3.8 peerDependencies: postcss: ^7.0.0 || ^8.0.1 - ts-node: ">=10" - typescript: ">=4" webpack: ^5.0.0 - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - checksum: c9d87fc5cd561508d18e746cdf29405438dba8c8ac83022245c3c05bec0841fe9cd4039ba84348fa02cb3b37c515415a0db40e5f2bfd0dd9afe7edb3ff3a21a7 + checksum: 635975cd6620a251eaf19ae27e13fcb777391d68083c71551467f3fd1aec80648d444a46c9c91018e0eb0e6eb3d02cdba44ffe15eff41cf48756092766ebec4b languageName: node linkType: hard "postcss-loader@npm:^7.0.2": - version: 7.2.3 - resolution: "postcss-loader@npm:7.2.3" + version: 7.3.3 + resolution: "postcss-loader@npm:7.3.3" dependencies: - cosmiconfig: ^8.1.3 - cosmiconfig-typescript-loader: ^4.3.0 - klona: ^2.0.6 + cosmiconfig: ^8.2.0 + jiti: ^1.18.2 semver: ^7.3.8 peerDependencies: postcss: ^7.0.0 || ^8.0.1 - ts-node: ">=10" - typescript: ">=4" webpack: ^5.0.0 - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - checksum: 4ce6dfe0d04fbd70818729a14e6e55f88e31457eb57ecb33587668429098612f738d4c296d4c2ffd5aed73ff3e845a7aa01d3e3418cfe335a2ab68de7e1dddbb + checksum: d039654273f858be1f75dfdf8b550869d88905b73a7684b3e48a2937a6087619e84fd1a3551cdef78685a965a2573e985b29a532c3878d834071ecd2da0eb304 languageName: node linkType: hard @@ -24338,16 +25248,16 @@ __metadata: languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" +"postcss-modules-local-by-default@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-modules-local-by-default@npm:4.0.3" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: 8ee9c0d9918fd838854d434731371874b25c412dde135df981cc28d37d0660496389b0f8653dbcdbb6ee81f2bec90cb5b14668f6208f6f517400ac064e234c5a + checksum: be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 languageName: node linkType: hard @@ -24411,12 +25321,12 @@ __metadata: linkType: hard "postcss-selector-parser@npm:^6.0.0, postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" + version: 6.0.13 + resolution: "postcss-selector-parser@npm:6.0.13" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 - checksum: 70be26abb75dec3c51be312a086e640aee4a32f18114cfbdf8feac0b6373a5494b5571370ab158174e1d692afc50c198d799ae9759afe5da1da1e629e465112c + checksum: 51f099b27f7c7198ea1826470ef0adfa58b3bd3f59b390fda123baa0134880a5fa9720137b6009c4c1373357b144f700b0edac73335d0067422063129371444e languageName: node linkType: hard @@ -24438,14 +25348,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.23": - version: 8.4.23 - resolution: "postcss@npm:8.4.23" +"postcss@npm:8.4.24": + version: 8.4.24 + resolution: "postcss@npm:8.4.24" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 35c2e26496be286a63706a0b8240fc4d2075a746466df530989208f60ea33cbc80c89420221cffb7d4fdd605afc385993f5f60302447e3047a7c0a8756b6471d + checksum: 37704ee03a2cbdebf2c99a76d399d6e0250742b5f6c699a12d475c84cedfcbeb26e180d9c780e0219dd2ad70cac963ceaf1d6763a1aec3e63d0c19fceb0eab23 languageName: node linkType: hard @@ -24459,14 +25369,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.3.7, postcss@npm:^8.4.14, postcss@npm:^8.4.19, postcss@npm:^8.4.21": - version: 8.4.21 - resolution: "postcss@npm:8.4.21" +"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.4.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.26": + version: 8.4.27 + resolution: "postcss@npm:8.4.27" dependencies: - nanoid: ^3.3.4 + nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: a26e7cc86a1807d624d9965914c26c20faa3f237184cbd69db537387f6a4f62df97347549144284d47e9e8e27e7c60e797cb3b92ad36cb2f4c3c9cb3b73f9758 + checksum: 41a0476e05cb97514ff8d75e4ff9fdcf778f22b2e0d25b7028f219cd408e01d3c4f50459d4a1cd9a430d8ef08202c881374a4fa4ea6009f4a135a07315d606e5 languageName: node linkType: hard @@ -24482,9 +25392,9 @@ __metadata: linkType: hard "preact@npm:^10.5.13": - version: 10.13.2 - resolution: "preact@npm:10.13.2" - checksum: 58f0938c8d2682570079107d07bce2fe8201742d34d3d1e8837f4e521a5727b96faa1b67bd317efe8df67503e71e1c57f03792e0c63e3103e5334f5dbf11f84e + version: 10.16.0 + resolution: "preact@npm:10.16.0" + checksum: 719d0a51dfda0149390b3f65aefd54bdc231f1f821b42ae17bc3fd5e9652d0a30d8a44c455921353e375bfed5d91d74054936827e7d780aee519e07fa84db4ac languageName: node linkType: hard @@ -24495,13 +25405,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -24521,11 +25424,11 @@ __metadata: linkType: hard "prettier@npm:^1.18.2 || ^2.0.0, prettier@npm:^2.8.0": - version: 2.8.7 - resolution: "prettier@npm:2.8.7" + version: 2.8.8 + resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: 84c5b62f7d4909ae5b18b1a4cee67f6a30a548244c8919e67158dee1453f4fa4ff4d291c6f2e41e21d443a0c405f03ec27690502d4ad90c3a7c59bcaf38b51ba + checksum: 463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a languageName: node linkType: hard @@ -24580,26 +25483,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": - version: 28.1.3 - resolution: "pretty-format@npm:28.1.3" - dependencies: - "@jest/schemas": ^28.1.3 - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": + version: 29.6.1 + resolution: "pretty-format@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: bcc0190d050196b64e501e5c2b44beb802d79a2b70b6fe6b24ae2d5e0f31237dfcb1f0ab2ada4678829b6ee38507ba292396301aff0a8122e575ffd45d5d037c + checksum: decb4ca86b34e53a08e525d2b50be19ef4bffa4bb4122787740b012c11490311879de53dee8b669a82376b6fec06040ec546831f2c3ce0df963c00d743cce664 languageName: node linkType: hard @@ -24843,6 +25734,20 @@ __metadata: languageName: node linkType: hard +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + 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 + checksum: 6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + "pug-attrs@npm:^3.0.0": version: 3.0.0 resolution: "pug-attrs@npm:3.0.0" @@ -25001,6 +25906,13 @@ __metadata: languageName: node linkType: hard +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.0 resolution: "punycode@npm:2.3.0" @@ -25045,9 +25957,9 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.1 - resolution: "pure-rand@npm:6.0.1" - checksum: d8e046e066d4a980140b501021a8426da0d7a01af901cb03ba8e1863c3960cd01216d997cd2ea7f370f1e9056c31fd88e925679a19787fb874dbc45f51d756e2 + version: 6.0.2 + resolution: "pure-rand@npm:6.0.2" + checksum: 0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa languageName: node linkType: hard @@ -25067,16 +25979,16 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.10.0, qs@npm:^6.4.0": - version: 6.11.1 - resolution: "qs@npm:6.11.1" +"qs@npm:^6.10.0, qs@npm:^6.11.0, qs@npm:^6.4.0": + version: 6.11.2 + resolution: "qs@npm:6.11.2" dependencies: side-channel: ^1.0.4 - checksum: 7ec57d3d62334c6313346b54f2b588b28c983793bf73981b77d769396fbb04fec911fa4e8a085528c3ebe7c04cfc9c9130410b277b3328da91087ae8ca728437 + checksum: 4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 languageName: node linkType: hard -"query-string@npm:^6.8.2": +"query-string@npm:^6.12.1": version: 6.14.1 resolution: "query-string@npm:6.14.1" dependencies: @@ -25088,6 +26000,13 @@ __metadata: languageName: node linkType: hard +"querystring-es3@npm:^0.2.1": + version: 0.2.1 + resolution: "querystring-es3@npm:0.2.1" + checksum: 476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 + languageName: node + linkType: hard + "querystring@npm:^0.2.0": version: 0.2.1 resolution: "querystring@npm:0.2.1" @@ -25125,6 +26044,13 @@ __metadata: languageName: node linkType: hard +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da + languageName: node + linkType: hard + "quick-temp@npm:^0.1.3, quick-temp@npm:^0.1.5, quick-temp@npm:^0.1.8": version: 0.1.8 resolution: "quick-temp@npm:0.1.8" @@ -25152,10 +26078,10 @@ __metadata: languageName: node linkType: hard -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 0f9dc0cc3b0432ff047f1e2a5e58860c531a84574674c0f52fef535efc6e1e07fa3851102fff3da7dd551a592c743f6f6fa521379a6aa5fe50266f8af8f0b570 +"ramda@npm:0.29.0": + version: 0.29.0 + resolution: "ramda@npm:0.29.0" + checksum: b00eaaf1c62b06a99affa1d583e256bd65ad27ab9d0ef512f55d7d93b842e7cd244a4a09179f61fdd8548362e409323867a2b0477cbd0626b5644eb6ac7c53da languageName: node linkType: hard @@ -25169,7 +26095,7 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: @@ -25178,6 +26104,16 @@ __metadata: languageName: node linkType: hard +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: ^2.0.5 + safe-buffer: ^5.1.0 + checksum: 11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -25305,9 +26241,9 @@ __metadata: linkType: hard "react-fast-compare@npm:^3.0.1, react-fast-compare@npm:^3.2.0": - version: 3.2.1 - resolution: "react-fast-compare@npm:3.2.1" - checksum: 81e805b9cde58a49e37ecb7361a4c97a24e869182761ceda9428c9f4de4b26e461a33c155bfe8fad67c8ae26c6355750671ff6335df80c5d3fe9c537ff2d6ffb + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 languageName: node linkType: hard @@ -25328,11 +26264,11 @@ __metadata: linkType: hard "react-inspector@npm:^6.0.0": - version: 6.0.1 - resolution: "react-inspector@npm:6.0.1" + version: 6.0.2 + resolution: "react-inspector@npm:6.0.2" peerDependencies: react: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 34b0ba6e8c718aa0bbde3bc325531bc94b1e536eb226579e57cb912065693ff70611308c8e567c8e5703b0513655eb5258e5c3ac447e6a5003a44559abc84fa7 + checksum: 8f9b23c21b4d95722e28c9455c2bf00fd9437347714382594461f98e5b9954d60864d0f4e74e881639b065e752a97ba52a65e39930c234072e5bff291bb02b5e languageName: node linkType: hard @@ -25413,6 +26349,41 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.3": + version: 2.3.4 + resolution: "react-remove-scroll-bar@npm:2.3.4" + dependencies: + react-style-singleton: ^2.2.1 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2262750dc1022c56d2c79e8d865c00045881c57bcaca74810ae8adac35cfdf723ff7d6b3b0e95c85eb9a0cff90bb4b1e0af801bd703ce8c0a2e35ab14ff1babb + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.5": + version: 2.5.5 + resolution: "react-remove-scroll@npm:2.5.5" + dependencies: + react-remove-scroll-bar: ^2.3.3 + react-style-singleton: ^2.2.1 + tslib: ^2.1.0 + use-callback-ref: ^1.3.0 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 + languageName: node + linkType: hard + "react-resize-detector@npm:^7.1.2": version: 7.1.2 resolution: "react-resize-detector@npm:7.1.2" @@ -25449,6 +26420,23 @@ __metadata: languageName: node linkType: hard +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: ^1.0.0 + invariant: ^2.2.4 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad + languageName: node + linkType: hard + "react-syntax-highlighter@npm:^15.4.5, react-syntax-highlighter@npm:^15.5.0": version: 15.5.0 resolution: "react-syntax-highlighter@npm:15.5.0" @@ -25479,15 +26467,15 @@ __metadata: linkType: hard "react-textarea-autosize@npm:^8.3.0": - version: 8.4.1 - resolution: "react-textarea-autosize@npm:8.4.1" + version: 8.5.2 + resolution: "react-textarea-autosize@npm:8.5.2" dependencies: "@babel/runtime": ^7.20.13 use-composed-ref: ^1.3.0 use-latest: ^1.2.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 76d77ccfaf6515daba0b6e711bb1930dfc3f01494a71a0fc0f76b686af6847f071837eb3b2ae066cfa51dfcb223f8fc9d951971e1e87ef86bbf018bbfb25ce0d + checksum: c93f9ae320af990f2adadb6c55c5040d6e61cb649027b00c88c8679237c9dbffd3909c7114f2d68f420db9f7a641ec304561f28bb0b53dc2e0a1e9efea10685b languageName: node linkType: hard @@ -25561,14 +26549,14 @@ __metadata: linkType: hard "read-package-json@npm:^6.0.0": - version: 6.0.1 - resolution: "read-package-json@npm:6.0.1" + version: 6.0.4 + resolution: "read-package-json@npm:6.0.4" dependencies: - glob: ^9.3.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 - checksum: 2e5fecce76a2d47ed4d413d16c63278d41ff6d2b7eaff53b20405285d3b4733d20adbe388c766a8ded464cc57c70c57791110e3741d2c6d5d25b63fcbef7bca7 + checksum: 0eb1110b35bc109a8d2789358a272c66b0fb8fd335a98df2ea9ff3423be564e2908f27d98f3f4b41da35495e04dc1763b33aad7cc24bfd58dfc6d60cca7d70c9 languageName: node linkType: hard @@ -25636,7 +26624,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -25662,15 +26650,16 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^4.1.0": - version: 4.3.0 - resolution: "readable-stream@npm:4.3.0" +"readable-stream@npm:^4.0.0, readable-stream@npm:^4.1.0": + version: 4.4.2 + resolution: "readable-stream@npm:4.4.2" dependencies: abort-controller: ^3.0.0 buffer: ^6.0.3 events: ^3.3.0 process: ^0.11.10 - checksum: c74b8bfdfa09b0295e3cf031c17358ce6638e04498299c9c85ff922cd786e44b4098e79961d0c7ac9aa5a8279b335b8eb2f97d41fb0661bebce643be0ec3f49b + string_decoder: ^1.3.0 + checksum: cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c languageName: node linkType: hard @@ -25712,19 +26701,6 @@ __metadata: languageName: node linkType: hard -"recast@npm:0.22.0": - version: 0.22.0 - resolution: "recast@npm:0.22.0" - dependencies: - assert: ^2.0.0 - ast-types: 0.15.2 - esprima: ~4.0.0 - source-map: ~0.6.1 - tslib: ^2.0.1 - checksum: ceed6a3a26223fefb985c0165a2d19141aa5566a1c9010752c73cb5c83e15e5caf85b609cb60cfeedb377026dfa6048ca1908efa19b595b3778ccb9453d9dbc6 - languageName: node - linkType: hard - "recast@npm:^0.18.1": version: 0.18.10 resolution: "recast@npm:0.18.10" @@ -25762,24 +26738,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.1 - resolution: "recast@npm:0.23.1" + version: 0.23.3 + resolution: "recast@npm:0.23.3" dependencies: assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: ce3f239721f56ef0773683eb1de774fb4c748f9aa3b81a935a06726226d27a2f884fd0f716f5ca17b96072061d72577e3a5e3a4883e2ce0c11c22a536dd2139a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: 22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 + checksum: 2f2d0ce271b187e29f8ea15bf3c319e708376145aaef2797e9a9d3e337e12178bd0d05d607baf601bb607075fbc040ca51f2d58a8bd566d8069c8a9d4b334608 languageName: node linkType: hard @@ -25841,7 +26808,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.4": +"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.4, regenerator-runtime@npm:^0.13.9": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 @@ -25874,14 +26841,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 5d797c7fb95f72a52dd9685a485faf0af3c55a4d1f2fafc1153a7be3df036cc3274b195b3ae051ee3d896a01960b446d726206e0d9a90b749e90d93445bb781f + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: 312b7966c5cd2e6837da4073e0e6450191e3c6e8f07276cbed35e170ea5606f91487b435eb3290593f8aed39b1191c44f5340e6e5392650feaf2b34a98378464 languageName: node linkType: hard @@ -26147,7 +27114,7 @@ __metadata: languageName: node linkType: hard -"remark-mdx@npm:^2.2.1": +"remark-mdx@npm:^2.3.0": version: 2.3.0 resolution: "remark-mdx@npm:2.3.0" dependencies: @@ -26168,13 +27135,13 @@ __metadata: linkType: hard "remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" + version: 10.0.2 + resolution: "remark-parse@npm:10.0.2" dependencies: "@types/mdast": ^3.0.0 mdast-util-from-markdown: ^1.0.0 unified: ^10.0.0 - checksum: 1ca6e9b2f8e628d260c68a0367cb6dc92f20e6dd70c195a79584d09b237133ddf96e6398733e53bfbf379a3c4ad6168caa5792a6d83870b7cc014b259531f772 + checksum: 30cb8f2790380b1c7370a1c66cda41f33a7dc196b9e440a00e2675037bca55aea868165a8204e0cdbacc27ef4a3bdb7d45879826bd6efa07d9fdf328cb67a332 languageName: node linkType: hard @@ -26223,13 +27190,13 @@ __metadata: linkType: hard "remark-stringify@npm:^10.0.0": - version: 10.0.2 - resolution: "remark-stringify@npm:10.0.2" + version: 10.0.3 + resolution: "remark-stringify@npm:10.0.3" dependencies: "@types/mdast": ^3.0.0 mdast-util-to-markdown: ^1.0.0 unified: ^10.0.0 - checksum: 1dce9ef753d1a6cbbc303684e35887db25fc5b9c5a464862f5bb7dfe1b57a19f3c08561e241749c2de23848c94ac74c675e3bb09fecb73abb30a3bebc4e5fb0a + checksum: 682f26c66ce72e97a00bff75774b68f8008184dc1e4407039e186de896b5cd5d336aa65842bf131f4826a7415acdcd01d14ba59ff41b421a250c23fb187cda85 languageName: node linkType: hard @@ -26254,14 +27221,14 @@ __metadata: linkType: hard "remark@npm:^14.0.2": - version: 14.0.2 - resolution: "remark@npm:14.0.2" + version: 14.0.3 + resolution: "remark@npm:14.0.3" dependencies: "@types/mdast": ^3.0.0 remark-parse: ^10.0.0 remark-stringify: ^10.0.0 unified: ^10.0.0 - checksum: b31c6b0a45e079d6a632445346009b30ff7a0f2807a1dea1493c3a804197589184134ca3af0b1490e46802def302722ba5187054bbda23743eedf34e79bcf36a + checksum: d4dbef29abdb62b01ae632d787bf0038af819df3e4308e037754ece8cb9c4d8ea52e8629174a47b5c46a7448cd22feba5dfea09b3ffdaa8c745b4c9bdd01b41d languageName: node linkType: hard @@ -26341,6 +27308,13 @@ __metadata: languageName: node linkType: hard +"resolve-alpn@npm:^1.0.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -26394,6 +27368,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + "resolve-url-loader@npm:5.0.0, resolve-url-loader@npm:^5.0.0": version: 5.0.0 resolution: "resolve-url-loader@npm:5.0.0" @@ -26434,16 +27415,16 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.3.2, resolve@npm:^1.4.0": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.3.2, resolve@npm:^1.4.0": + version: 1.22.3 + resolution: "resolve@npm:1.22.3" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 6d58b1cb40f3fc80b9e45dd799d84cdc3829a993e4b9fa3b59d331e1dfacd0870e1851f4d0eb549d68c796e0b7087b43d1aec162653ccccff9e18191221a6e7d + checksum: 5ebd90dc08467e7d9af8f89a67f127c90d77e58d3bfc65da5221699cc15679c5bae5e410e6795ee4b9f717cd711c495a52a3b650ce6720b0626de46e5074e796 languageName: node linkType: hard @@ -26473,16 +27454,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.13.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.15.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.3.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.4.0#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=c3c19d" +"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.13.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.15.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.3.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.4.0#~builtin<compat/resolve>": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin<compat/resolve>::version=1.22.3&hash=c3c19d" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 0d8ccceba5537769c42aa75e4aa75ae854aac866a11d7e9ffdb1663f0158ee646a0d48fc2818ed5e7fb364d64220a1fb9092a160e11e00cbdd5fbab39a13092c + checksum: 6267bdbbbb1da23975463e979dadf5135fcc40c4b9281c5af4581afa848ced98090ab4e2dbc9085e58f8ea48c0eb7c4fe94b1e8f55ebdd17a725d86982eb5288 languageName: node linkType: hard @@ -26499,6 +27480,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: ^2.0.0 + checksum: 360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -26598,23 +27588,19 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^3.18.0, rollup@npm:^3.20.1": - version: 3.20.2 - resolution: "rollup@npm:3.20.2" +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 1203da200a6f7dd2e62445fe31c9711134545f32d8a91f8fc3d79d5eff648d5faaf296af1d867c95439b862a39457670f5a32ecad583c11fc0de1ab2d2ca12b1 + hash-base: ^3.0.0 + inherits: ^2.0.1 + checksum: f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a languageName: node linkType: hard -"rollup@npm:^3.20.2": - version: 3.21.0 - resolution: "rollup@npm:3.21.0" +"rollup@npm:^3.20.1, rollup@npm:^3.21.0, rollup@npm:^3.25.2": + version: 3.26.3 + resolution: "rollup@npm:3.26.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -26622,7 +27608,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: d88fdc7ea41e1db44b903575782bd7075886e158b31d9869505a06f7afa72ff17f9c6030973736c93142904ad1a9ee730724063a2df227740e587ec62aa4cde3 + checksum: 41d02540dcb125150d2dc4a136e35776290eef489ed0735814afcdcfd3e0a8944cd30875daa872360e4fe8bf75bb4adf41090913a32e636722f43a5d2caf241e languageName: node linkType: hard @@ -26657,6 +27643,15 @@ __metadata: languageName: node linkType: hard +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: f9977db5770929f3f0db434b8e6aa266498c70dec913c84320c0a06add510cf44e3a048c44da088abee312006f9cbf572fd065cdc8f15d7682afda8755f4114c + languageName: node + linkType: hard + "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" @@ -26673,7 +27668,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:7.8.1": +"rxjs@npm:7.8.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.0": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: @@ -26682,7 +27677,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^6.5.2, rxjs@npm:^6.5.4, rxjs@npm:^6.6.3": +"rxjs@npm:^6.5.2, rxjs@npm:^6.6.3": version: 6.6.7 resolution: "rxjs@npm:6.6.7" dependencies: @@ -26691,15 +27686,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" - dependencies: - tslib: ^2.1.0 - checksum: c48833638ae5d339332f8b792e716c3c662950ba95ba04e9e97a8cfd4628d8f009129672793c6c067c872a4dab5757231d41d7256a2114a5fabbf30d8a5b9d67 - languageName: node - linkType: hard - "sade@npm:^1.7.3, sade@npm:^1.7.4": version: 1.8.1 resolution: "sade@npm:1.8.1" @@ -26709,6 +27695,18 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-array-concat@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: 792d41fde9834583980912cb16bee511ce25e1759d3c467fdbbb3fc3245346a2289a6476d821713aa1ae23cc1d613d17e79c80e55adb29577f6a29e6f45e7f46 + languageName: node + linkType: hard + "safe-buffer@npm:5.1.1": version: 5.1.1 resolution: "safe-buffer@npm:5.1.1" @@ -26723,7 +27721,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -26757,7 +27755,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 @@ -26776,15 +27774,15 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:13.2.2": - version: 13.2.2 - resolution: "sass-loader@npm:13.2.2" +"sass-loader@npm:13.3.1": + version: 13.3.1 + resolution: "sass-loader@npm:13.3.1" dependencies: klona: ^2.0.6 neo-async: ^2.6.2 peerDependencies: fibers: ">= 3.1.0" - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: "*" webpack: ^5.0.0 @@ -26797,7 +27795,7 @@ __metadata: optional: true sass-embedded: optional: true - checksum: 3d474ca1e7c607a905c2220afb25cf117ff025264de7b4b54f0e2a4763f99c9eefbe8f7712a883bc025ecf06661bd242d74ac18d5e04f223f1fc2c94987e8c94 + checksum: 68ffb7ad626a27e44b0f68cd549549e75460fa6a5100e0808b89a8b775264b98fdb8e2e1a39b7f97308a94cf87b3d7a1b42acc461cf504e83f36030a07ee95db languageName: node linkType: hard @@ -26826,16 +27824,16 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.62.1": - version: 1.62.1 - resolution: "sass@npm:1.62.1" +"sass@npm:1.63.2": + version: 1.63.2 + resolution: "sass@npm:1.63.2" dependencies: chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 19c3a945bd71d9c9ab3b01a97b0d218c92815b7f3e45a9bba37265b4c43e4ef12ab029c7257e02c1db2b85f7da91974af81e31d58940c9a54b50787ee4a50a3c + checksum: 22dfb77f2c2707a67adef382a448899a5d0577bfa8f4cd5560ab1f3b0d492bdfee78b753f130bccef3647dfa7be3585c936fbfbfd110ee4f96d3916e937f655e languageName: node linkType: hard @@ -26846,15 +27844,6 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: ^2.2.0 - checksum: b7476c41dbe1c3a89907d2546fecfba234de5e66743ef914cde2603f47b19bed09732ab51b528ad0f98b958369d8be72b6f5af5c9cfad69972a73d061f0b3952 - languageName: node - linkType: hard - "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -26868,7 +27857,7 @@ __metadata: version: 0.0.0-use.local resolution: "sb@workspace:lib/cli-sb" dependencies: - "@storybook/cli": 7.1.0-alpha.17 + "@storybook/cli": "workspace:*" bin: sb: ./index.js languageName: unknown @@ -26884,37 +27873,26 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: 55a8da802a5f8f0ce6f68b6a139f3261cb423bd23795766da866a0f5738fc40303370fbe0c3eeba60b2a91c569ad7ce5318fea455f8fe866098c5a3a6b9050b0 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.2": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 33fa502462d0f957b6fb7097f15ba72aa19a14b0313fc7815c591ba47d8607b193055fa1d2ed928a53fd6c1ae8bdc429af2fd4a9e7fae7403014a6bb90763977 + checksum: fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 languageName: node linkType: hard "schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" dependencies: "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 + ajv: ^8.9.0 ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 + ajv-keywords: ^5.1.0 + checksum: 8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 languageName: node linkType: hard @@ -26956,11 +27934,11 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.0, semver@npm:^5.7.1": - version: 5.7.1 - resolution: "semver@npm:5.7.1" + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 + semver: bin/semver + checksum: e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 languageName: node linkType: hard @@ -26975,7 +27953,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.3.8, semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": +"semver@npm:7.3.8": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -26986,32 +27964,34 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.4.0": - version: 7.4.0 - resolution: "semver@npm:7.4.0" +"semver@npm:7.5.3": + version: 7.5.3 + resolution: "semver@npm:7.5.3" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 6bcdd77e3f8fd5a0463358ede593f5b88fb9cf6d1c5f185fb5e1d0e516993cd1ec99b628e300935650d2af39decc3bb67b3101627340de6c39043ea96dfcbd61 + checksum: 4cf3bab7e8cf8c2ae521fc4bcc50a4d6912a836360796b23b9f1c26f45d27a73f870e47664df4770bde0dd60dc4d4781a05fd49fe91d72376ea5519b9e791459 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: - semver: ./bin/semver.js - checksum: 1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 + semver: bin/semver.js + checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard -"semver@npm:~7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 7fd341680a967a0abfd66f3a7d36ba44e52ff5d3e799e9a6cdb01a68160b64ef09be82b4af05459effeecdd836f002c2462555d2821cd890dfdfe36a0d9f56a5 + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e languageName: node linkType: hard @@ -27104,6 +28084,13 @@ __metadata: languageName: node linkType: hard +"setimmediate@npm:^1.0.4": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + languageName: node + linkType: hard + "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" @@ -27118,6 +28105,18 @@ __metadata: languageName: node linkType: hard +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + bin: + sha.js: ./bin.js + checksum: b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -27173,19 +28172,6 @@ __metadata: languageName: node linkType: hard -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -27205,35 +28191,23 @@ __metadata: linkType: hard "signal-exit@npm:^4.0.1": - version: 4.0.1 - resolution: "signal-exit@npm:4.0.1" - checksum: 8ff362b7fe81d50cb664c773d2406d68f02aef7ab50b2fdb6a0bb2514730529062be4f981cc5534c05f34a20caa6f91a78a5d1dc90446a968359d80adb63b014 - languageName: node - linkType: hard - -"sigstore@npm:^1.0.0": - version: 1.2.0 - resolution: "sigstore@npm:1.2.0" - dependencies: - "@sigstore/protobuf-specs": ^0.1.0 - make-fetch-happen: ^11.0.1 - tuf-js: ^1.0.0 - bin: - sigstore: bin/sigstore.js - checksum: e726fb92b49fc28dae0bcbe97dc61add27e54a2e1b02de4886335e1a60d2dc04dfb595efc34901c910c0e829581dcb118342ae190e05e4a5bcc376ad34376cee + version: 4.0.2 + resolution: "signal-exit@npm:4.0.2" + checksum: 3c36ae214f4774b4a7cbbd2d090b2864f8da4dc3f9140ba5b76f38bea7605c7aa8042adf86e48ee8a0955108421873f9b0f20281c61b8a65da4d9c1c1de4929f languageName: node linkType: hard -"sigstore@npm:^1.3.0": - version: 1.4.0 - resolution: "sigstore@npm:1.4.0" +"sigstore@npm:^1.0.0, sigstore@npm:^1.3.0, sigstore@npm:^1.4.0": + version: 1.8.0 + resolution: "sigstore@npm:1.8.0" dependencies: - "@sigstore/protobuf-specs": ^0.1.0 + "@sigstore/bundle": ^1.0.0 + "@sigstore/protobuf-specs": ^0.2.0 + "@sigstore/tuf": ^1.0.3 make-fetch-happen: ^11.0.1 - tuf-js: ^1.1.3 bin: sigstore: bin/sigstore.js - checksum: e74b53b4bc1c7f5ea88c015a0b2c8a27a20ccb50131d586db9f5b63f942769bcd3252d4e20d6d8071861f8c388dfaa74006eb2868ca34cd10babf6b12301d995 + checksum: 0a01bc0a93cb737794f933387ee182fea1ae087c0588d47b02bef9a06784790b356778b1849b076758dee44e68ddf19aaefc8cea856e649d0aea1a18f5691ab7 languageName: node linkType: hard @@ -27246,12 +28220,12 @@ __metadata: languageName: node linkType: hard -"simple-update-notifier@npm:^1.0.0": - version: 1.1.0 - resolution: "simple-update-notifier@npm:1.1.0" +"simple-update-notifier@npm:^2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" dependencies: - semver: ~7.0.0 - checksum: 3cbbbc71a5d9a2924f0e3f42fbf3cbe1854bfe142203456b00d5233bdbbdeb5091b8067cd34fb00f81dbfbc29fc30dbb6e026b3d58ea0551e3f26c0e64082092 + semver: ^7.5.3 + checksum: 2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c languageName: node linkType: hard @@ -27284,9 +28258,9 @@ __metadata: linkType: hard "slash@npm:^5.0.0": - version: 5.0.0 - resolution: "slash@npm:5.0.0" - checksum: 157e61f9c749d107a2069a8d6169f40451bf8853e4e104938afd6c02ad224059033bc0420aeb85ad5ff71d36ca483a90bd1ea831a2ffa427317ce4844bcd966a + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 languageName: node linkType: hard @@ -27312,6 +28286,16 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: ^6.0.0 + is-fullwidth-code-point: ^4.0.0 + checksum: 2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + languageName: node + linkType: hard + "sliced@npm:^1.0.1": version: 1.0.1 resolution: "sliced@npm:1.0.1" @@ -27373,17 +28357,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: d75c1cf1fdd7f8309a43a77f84409b793fc0f540742ef915154e70ac09a08b0490576fe85d4f8d68bbf80e604a62957a17ab5ef50d312fe1442b0ab6f8f6e6f6 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -27405,17 +28378,17 @@ __metadata: languageName: node linkType: hard -"sorcery@npm:^0.10.0": - version: 0.10.0 - resolution: "sorcery@npm:0.10.0" +"sorcery@npm:^0.11.0": + version: 0.11.0 + resolution: "sorcery@npm:0.11.0" dependencies: + "@jridgewell/sourcemap-codec": ^1.4.14 buffer-crc32: ^0.2.5 minimist: ^1.2.0 sander: ^0.5.0 - sourcemap-codec: ^1.3.0 bin: - sorcery: bin/index.js - checksum: 4b939487c4c157d27b9477c0948def0d10aab3891dc33f2d140a1710a10ef50fa7cf4e22e2c4564226942ec719ce0eb83c8b9096708533c888de34a673ee5934 + sorcery: bin/sorcery + checksum: 1d696966860da967b31603369442b5de87a61dcc1c42598d376dd0fba8a8d7c21c3656b667eed0e6864e661ee462c8b8603996d0f03f665b44d30094c3a01163 languageName: node linkType: hard @@ -27572,34 +28545,13 @@ __metadata: languageName: node linkType: hard -"source-map@npm:~0.1.x": - version: 0.1.43 - resolution: "source-map@npm:0.1.43" - dependencies: - amdefine: ">=0.0.4" - checksum: 0cf092a91a0aadfad21ed7cb9ac78878b16242fcc9cd8f631e340b607f311d2f5391df574a29b9e243b35a7d1efd471f357b4b81da8e65145bcae242d46d0297 - languageName: node - linkType: hard - -"sourcemap-codec@npm:^1.3.0, sourcemap-codec@npm:^1.4.8": +"sourcemap-codec@npm:^1.4.8": version: 1.4.8 resolution: "sourcemap-codec@npm:1.4.8" checksum: f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6 languageName: node linkType: hard -"sourcemap-validator@npm:^1.1.0": - version: 1.1.1 - resolution: "sourcemap-validator@npm:1.1.1" - dependencies: - jsesc: ~0.3.x - lodash.foreach: ^4.5.0 - lodash.template: ^4.5.0 - source-map: ~0.1.x - checksum: ad3f53229055f63e77179d9f1f9cef609aaf01ebd6961cf8f7bf7320383b11798710df134ba6dc7710d086ac848182dc6c75f5f3a64e393c8539dd9bb21570c9 - languageName: node - linkType: hard - "space-separated-tokens@npm:^1.0.0": version: 1.1.5 resolution: "space-separated-tokens@npm:1.1.5" @@ -27749,24 +28701,15 @@ __metadata: linkType: hard "ssri@npm:^10.0.0, ssri@npm:^10.0.1": - version: 10.0.1 - resolution: "ssri@npm:10.0.1" - dependencies: - minipass: ^4.0.0 - checksum: 6eef487354bf483b5ac624a490b65e4c59402a2a33c795a7f1eebd629a42fafc0a29ec0aabac603815699ee0685b71434b703159661ea890d16d01493944d7a1 - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" + version: 10.0.4 + resolution: "ssri@npm:10.0.4" dependencies: - minipass: ^3.1.1 - checksum: 5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 + minipass: ^5.0.0 + checksum: d085474ea6b439623a9a6a2c67570cb9e68e1bb6060e46e4d387f113304d75a51946d57c524be3a90ebfa3c73026edf76eb1a2d79a7f6cff0b04f21d99f127ab languageName: node linkType: hard -"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": +"stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -27826,13 +28769,23 @@ __metadata: version: 0.0.0-use.local resolution: "storybook@workspace:lib/cli-storybook" dependencies: - "@storybook/cli": 7.1.0-alpha.17 + "@storybook/cli": "workspace:*" bin: sb: ./index.js storybook: ./index.js languageName: unknown linkType: soft +"stream-browserify@npm:^3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: ~2.0.4 + readable-stream: ^3.5.0 + checksum: ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -27842,6 +28795,18 @@ __metadata: languageName: node linkType: hard +"stream-http@npm:^3.2.0": + version: 3.2.0 + resolution: "stream-http@npm:3.2.0" + dependencies: + builtin-status-codes: ^3.0.0 + inherits: ^2.0.4 + readable-stream: ^3.6.0 + xtend: ^4.0.2 + checksum: f128fb8076d60cd548f229554b6a1a70c08a04b7b2afd4dbe7811d20f27f7d4112562eb8bce86d72a8691df3b50573228afcf1271e55e81f981536c67498bc41 + languageName: node + linkType: hard + "stream-shift@npm:^1.0.0": version: 1.0.1 resolution: "stream-shift@npm:1.0.1" @@ -27849,6 +28814,13 @@ __metadata: languageName: node linkType: hard +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + "strict-uri-encode@npm:^2.0.0": version: 2.0.0 resolution: "strict-uri-encode@npm:2.0.0" @@ -27856,10 +28828,10 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:0.3.1": - version: 0.3.1 - resolution: "string-argv@npm:0.3.1" - checksum: f59582070f0a4a2d362d8331031f313771ad2b939b223b0593d7765de2689c975e0069186cef65977a29af9deec248c7e480ea4015d153ead754aea5e4bcfe7c +"string-argv@npm:^0.3.1": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82 languageName: node linkType: hard @@ -27890,7 +28862,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -27912,6 +28884,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -27961,7 +28944,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -27996,14 +28979,12 @@ __metadata: languageName: node linkType: hard -"stringify-object@npm:^3.3.0": - version: 3.3.0 - resolution: "stringify-object@npm:3.3.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" dependencies: - get-own-enumerable-property-symbols: ^3.0.0 - is-obj: ^1.0.1 - is-regexp: ^1.0.0 - checksum: ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b + ansi-regex: ^5.0.1 + checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 languageName: node linkType: hard @@ -28016,21 +28997,12 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - "strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" dependencies: ansi-regex: ^6.0.1 - checksum: a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 + checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 languageName: node linkType: hard @@ -28062,6 +29034,13 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0" @@ -28078,7 +29057,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -28106,11 +29085,11 @@ __metadata: linkType: hard "style-loader@npm:^3.3.1": - version: 3.3.2 - resolution: "style-loader@npm:3.3.2" + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" peerDependencies: webpack: ^5.0.0 - checksum: 8578cedcdcc3e2dc0d9dd3a241032817c33465ae0db5f7b62f99dada148a829abf1a391c517a4aeadfa59a9b7c6991271b0d60d57adab905bc7cfc725893ec16 + checksum: 104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 languageName: node linkType: hard @@ -28130,10 +29109,10 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: 3e4670f26f79bcfba628dcc2756d9d415edfcbf4ec51e40f3b628fd15286222257317cad57390752964eba85cca6163a7621ce90038d68dd630a674479e52334 +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 languageName: node linkType: hard @@ -28190,23 +29169,23 @@ __metadata: languageName: node linkType: hard -"svelte-check@npm:^2.9.2": - version: 2.10.3 - resolution: "svelte-check@npm:2.10.3" +"svelte-check@npm:^3.4.3": + version: 3.4.6 + resolution: "svelte-check@npm:3.4.6" dependencies: - "@jridgewell/trace-mapping": ^0.3.9 + "@jridgewell/trace-mapping": ^0.3.17 chokidar: ^3.4.1 fast-glob: ^3.2.7 import-fresh: ^3.2.1 picocolors: ^1.0.0 sade: ^1.7.4 - svelte-preprocess: ^4.0.0 - typescript: "*" + svelte-preprocess: ^5.0.4 + typescript: ^5.0.3 peerDependencies: - svelte: ^3.24.0 + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 bin: svelte-check: bin/svelte-check - checksum: a327d1b5621af17e717f5353410f91e20031682c10ff0c0fa4d3692e617aacd0190895da0664efa21fae5c76c3c9e1efcb5d52860c04fcaedc39cfefa3dd6066 + checksum: 7f537831af8f2c47859ca72f4a929d24c58f2946f949f7c9721351be97ff9d0674c57db003e3ad3883fdd85761b7950c5c11513c2a917c91091f155e2d026350 languageName: node linkType: hard @@ -28226,37 +29205,36 @@ __metadata: languageName: node linkType: hard -"svelte-hmr@npm:^0.15.1": - version: 0.15.1 - resolution: "svelte-hmr@npm:0.15.1" +"svelte-hmr@npm:^0.15.2": + version: 0.15.2 + resolution: "svelte-hmr@npm:0.15.2" peerDependencies: - svelte: ">=3.19.0" - checksum: e792d5ee326e68a3fde434923a15915534b4fe2ec74ee4ff4d3fa5ac7d05e1bf839b8df0add107d9017a3990bb421de92d69345346000aed1093b2f605c62f1e + svelte: ^3.19.0 || ^4.0.0-next.0 + checksum: 933b06dcd6f926d2fc7d69505708f5e33b4acadc1689614d1f7f2cd50e2b315b6fa2cecf17ab46b97d16f2a6e4ebe461998c80bb2d0d9cac00e6b19846b2c61e languageName: node linkType: hard -"svelte-loader@npm:^3.1.2": - version: 3.1.7 - resolution: "svelte-loader@npm:3.1.7" +"svelte-loader@npm:^3.1.9": + version: 3.1.9 + resolution: "svelte-loader@npm:3.1.9" dependencies: loader-utils: ^2.0.4 svelte-dev-helper: ^1.1.9 svelte-hmr: ^0.14.2 peerDependencies: - svelte: ">3.0.0" - checksum: 8b10ce8a0bf840c47811392f3da1143610f3450a965613f8aa6526e25f8c6fb4e4f18eb95d4981b906c6b258dc3391f9af2ea8478049365176942d385773c7f0 + svelte: ^3.0.0 || ^4.0.0-next.0 + checksum: b71593c06756882f0d6e690d050af497dd4b51074699d33dbc7016c7ea21858619d55fc087c7a205178f92e0ded7b3c3f68ec1a7645847098199d40377afb1ef languageName: node linkType: hard -"svelte-preprocess@npm:^4.0.0": - version: 4.10.7 - resolution: "svelte-preprocess@npm:4.10.7" +"svelte-preprocess@npm:^5.0.4": + version: 5.0.4 + resolution: "svelte-preprocess@npm:5.0.4" dependencies: - "@types/pug": ^2.0.4 - "@types/sass": ^1.16.0 - detect-indent: ^6.0.0 - magic-string: ^0.25.7 - sorcery: ^0.10.0 + "@types/pug": ^2.0.6 + detect-indent: ^6.1.0 + magic-string: ^0.27.0 + sorcery: ^0.11.0 strip-indent: ^3.0.0 peerDependencies: "@babel/core": ^7.10.2 @@ -28267,9 +29245,9 @@ __metadata: pug: ^3.0.0 sass: ^1.26.8 stylus: ^0.55.0 - sugarss: ^2.0.0 - svelte: ^3.23.0 - typescript: ^3.9.5 || ^4.0.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 + typescript: ">=3.9.5 || ^4.0.0 || ^5.0.0" peerDependenciesMeta: "@babel/core": optional: true @@ -28277,8 +29255,6 @@ __metadata: optional: true less: optional: true - node-sass: - optional: true postcss: optional: true postcss-load-config: @@ -28293,14 +29269,28 @@ __metadata: optional: true typescript: optional: true - checksum: aa90206063270bc3a33b0228315c1cae1609897c785a05cfaacd361bf1b55b9e1ff2f3a52cd22a21a587b9fe0305d2e6bee1ce17940c8d09fe4c5beb2eaef68b + checksum: 1ed64b96a91327a47992df0b82df708b5cda92e1da211edbedaf411e633a0be5a8425d19f996abc8dcef52dadd26b5474924dd9eeb30a7b409bf60c33b689d6c languageName: node linkType: hard -"svelte@npm:^3.0.0, svelte@npm:^3.31.2, svelte@npm:^3.48.0": - version: 3.57.0 - resolution: "svelte@npm:3.57.0" - checksum: da16d7d867b61134b824764d7fb28760edc9a51ea9e4675fcd84df0ef3e7bb0af913b6853f24eea1dd5a07d3a574c5c99549320c6b8b66690d1394e9a79175c7 +"svelte@npm:^4.0.0": + version: 4.1.1 + resolution: "svelte@npm:4.1.1" + dependencies: + "@ampproject/remapping": ^2.2.1 + "@jridgewell/sourcemap-codec": ^1.4.15 + "@jridgewell/trace-mapping": ^0.3.18 + acorn: ^8.9.0 + aria-query: ^5.3.0 + axobject-query: ^3.2.1 + code-red: ^1.0.3 + css-tree: ^2.3.1 + estree-walker: ^3.0.3 + is-reference: ^3.0.1 + locate-character: ^3.0.0 + magic-string: ^0.30.0 + periscopic: ^3.1.0 + checksum: ba5a5c8d9d6a6c8fb6d664695f02f6373489bf3bc7b83b4fd7bf22edde09015cbd41da204d534f4523594fd440fa4eaee6ff864bed1edef2900bae5f353238b2 languageName: node linkType: hard @@ -28315,6 +29305,16 @@ __metadata: languageName: node linkType: hard +"swc-loader@npm:^0.2.3": + version: 0.2.3 + resolution: "swc-loader@npm:0.2.3" + peerDependencies: + "@swc/core": ^1.2.147 + webpack: ">=2" + checksum: cb3f9b116fbd292b881e804a4fe66cd6d543a7de2572f5a68e067e4780ee2d59a8da87a90736ba6e8e286e4368c98214ae3486b1b872080292814e5d3062f09c + languageName: node + linkType: hard + "symbol-observable@npm:4.0.0": version: 4.0.0 resolution: "symbol-observable@npm:4.0.0" @@ -28412,17 +29412,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.13, tar@npm:^6.1.2": - version: 6.1.13 - resolution: "tar@npm:6.1.13" +"tar@npm:^6.1.11, tar@npm:^6.1.13, tar@npm:^6.1.2": + version: 6.1.15 + resolution: "tar@npm:6.1.15" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 - minipass: ^4.0.0 + minipass: ^5.0.0 minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: eee5f264f3f3c27cd8d4934f80c568470f92811c416144ab671bb36b45a8ed55fbfbbd31f0146f3eddaca91fd564c9a7ec4d2086940968b836f4a2c54146c060 + checksum: bb2babe7b14442f690d83c2b2c571c9dd0bf802314773e05f4a3e4a241fdecd7fb560b8e4e7d6ea34533c8cd692e1b8418a3b8ba3b9687fe78a683dfbad7f82d languageName: node linkType: hard @@ -28439,12 +29439,12 @@ __metadata: languageName: node linkType: hard -"telejson@npm:^7.0.3": - version: 7.1.0 - resolution: "telejson@npm:7.1.0" +"telejson@npm:^7.2.0": + version: 7.2.0 + resolution: "telejson@npm:7.2.0" dependencies: memoizerific: ^1.11.3 - checksum: dc9a185d0e00d947c0eaa229bfb993aab61a3ba79282ae409768fc8ae66d236e89a64ebe291f9ea6ed5e05396e0be52a7542ea32b6c1321b20440f28c7828edc + checksum: d26e6cc93e54bfdcdb207b49905508c5db45862e811a2e2193a735409e47b14530e1c19351618a3e03ad2fd4ffc3759364fcd72851aba2df0300fab574b6151c languageName: node linkType: hard @@ -28497,15 +29497,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.7": - version: 5.3.7 - resolution: "terser-webpack-plugin@npm:5.3.7" +"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.7": + version: 5.3.9 + resolution: "terser-webpack-plugin@npm:5.3.9" dependencies: "@jridgewell/trace-mapping": ^0.3.17 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 - terser: ^5.16.5 + terser: ^5.16.8 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -28515,35 +29515,35 @@ __metadata: optional: true uglify-js: optional: true - checksum: fe54487e67dfff86f874561a2ee8c43aaf6a41ac1474527d8dc60209502a779e74ae0d647523cd9d98c9d3c4d7e77a3ad0eddf3be36745424a0dd05603e94bb1 + checksum: 8a757106101ea1504e5dc549c722506506e7d3f0d38e72d6c8108ad814c994ca0d67ac5d0825ba59704a4b2b04548201b2137f198bfce897b09fe9e36727a1e9 languageName: node linkType: hard -"terser@npm:5.17.1": - version: 5.17.1 - resolution: "terser@npm:5.17.1" +"terser@npm:5.17.7": + version: 5.17.7 + resolution: "terser@npm:5.17.7" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 00d4712b954307709b4e14cf17e0ab2fc2d527b480a50f212414aad12a739fb374d7b3391da2b73f82e21c9d469111ad2cd1d054861759624bd67c6dea4bd76a + checksum: 864154a1750daf516012e5add4f0749bfc71e8f4f918973ec3d504db6a148be976adf46ae490e795173eeff59ec579d7d464bb6354c1bb71f8e14ff398409aed languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.5": - version: 5.16.8 - resolution: "terser@npm:5.16.8" +"terser@npm:^5.10.0, terser@npm:^5.16.8": + version: 5.19.2 + resolution: "terser@npm:5.19.2" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: b49772a10ed4fa12bfaf231ff018d818c48b80ae9093fe52ef9753acd25fd40bef20dd4b0a226a5d46e52e7904be6b94e51cf41be0159913e13114d0c3372f82 + checksum: 95817b86619af33d8d143d7ae02dfcd9ac2cf4ea5b5cb7b208aaccff4cdc5594893960a4c3dcdac09863ebd43e2835ab173997041790aa77092c1d31ff40c95a languageName: node linkType: hard @@ -28612,13 +29612,12 @@ __metadata: languageName: node linkType: hard -"tiny-glob@npm:^0.2.9": - version: 0.2.9 - resolution: "tiny-glob@npm:0.2.9" +"timers-browserify@npm:^2.0.12": + version: 2.0.12 + resolution: "timers-browserify@npm:2.0.12" dependencies: - globalyzer: 0.1.0 - globrex: ^0.1.2 - checksum: cbe072f0d213a1395d30aa94845a051d4af18fe8ffb79c8e99ac1787cd25df69083f17791a53997cb65f469f48950cb61426ccc0683cc9df170ac2430e883702 + setimmediate: ^1.0.4 + checksum: 98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 languageName: node linkType: hard @@ -28636,6 +29635,13 @@ __metadata: languageName: node linkType: hard +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 5ae6084ba299b5782f95e3fe85ea9f0fa4d74b8ae722b6b3208157e975589fbb27733aeba4e5080fa9314a856044ef52caa61b87caea4b1baade951a55c06336 + languageName: node + linkType: hard + "tmp@npm:0.0.28": version: 0.0.28 resolution: "tmp@npm:0.0.28" @@ -28727,6 +29733,13 @@ __metadata: languageName: node linkType: hard +"tocbot@npm:^4.20.1": + version: 4.21.0 + resolution: "tocbot@npm:4.21.0" + checksum: 877d99df40c07ec5e5c2259b820be9c8af9a9f52d582a61b7bed3d43daff820f23031bc613a5cc3bb14ecc34b79c1a45349dcbae8f3a79de7ecc127f366ed3c6 + languageName: node + linkType: hard + "toggle-selection@npm:^1.0.6": version: 1.0.6 resolution: "toggle-selection@npm:1.0.6" @@ -28748,24 +29761,15 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" +"tough-cookie@npm:^4.1.2": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: psl: ^1.1.33 punycode: ^2.1.1 universalify: ^0.2.0 url-parse: ^1.5.3 - checksum: 1f9d97bc9ff22b41e107eca4a146064f916e567b5557795dbfe742f098557ba1101b8f7c4e02ac785236663f7f086c37dc595a5b9813ef8fb27f8d800dc9eb9b - languageName: node - linkType: hard - -"tr46@npm:^1.0.1": - version: 1.0.1 - resolution: "tr46@npm:1.0.1" - dependencies: - punycode: ^2.1.0 - checksum: 41525c2ccce86e3ef30af6fa5e1464e6d8bb4286a58ea8db09228f598889581ef62347153f6636cd41553dc41685bdfad0a9d032ef58df9fbb0792b3447d0f04 + checksum: 4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 languageName: node linkType: hard @@ -28865,42 +29869,9 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^28.0.0": - version: 28.0.8 - resolution: "ts-jest@npm:28.0.8" - dependencies: - bs-logger: 0.x - fast-json-stable-stringify: 2.x - jest-util: ^28.0.0 - json5: ^2.2.1 - lodash.memoize: 4.x - make-error: 1.x - semver: 7.x - yargs-parser: ^21.0.1 - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^28.0.0 - babel-jest: ^28.0.0 - jest: ^28.0.0 - typescript: ">=4.3" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: 4f6d7c8dbf6deaf56f4490ae819071077e8ed30c1a3c87c7d2e21b3103e6d12aaa53d2776cb5c947bac3f3a05cd9f8dea2aedc4c6550c14fbf639c1368a0fbc9 - languageName: node - linkType: hard - "ts-jest@npm:^29.0.0": - version: 29.1.0 - resolution: "ts-jest@npm:29.1.0" + version: 29.1.1 + resolution: "ts-jest@npm:29.1.1" dependencies: bs-logger: 0.x fast-json-stable-stringify: 2.x @@ -28908,7 +29879,7 @@ __metadata: json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - semver: 7.x + semver: ^7.5.3 yargs-parser: ^21.0.1 peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" @@ -28927,13 +29898,13 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 504d77b13157a4d2f1eebbd0e0f21f2db65fc28039f107fd73453655c029adccba5b22bdd4de0efa58707c1bbd34a67a1a5cceb794e91c3c2c7be4f904c79f9f + checksum: 6c45e0aeeff9cc54a64f931c43e1b99f4a1f0ddf44786cc128e7e55603ab7473c8c8f62fd83bd7e51bfe83e3c0c683132152efaeb844516bf7c923f4e92d157d languageName: node linkType: hard "ts-loader@npm:^9.2.8": - version: 9.4.2 - resolution: "ts-loader@npm:9.4.2" + version: 9.4.4 + resolution: "ts-loader@npm:9.4.4" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 @@ -28942,7 +29913,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: d5a9ecf5440c82724d78b20e08965eebf4b23fcdf644d215e089144794faaaf955564c83b13954728a6f10c7bef292d3990905870152275191779c8661385c77 + checksum: 11dba0651d7177eba9af38c43c79a28898ffcdfe7e73079fe48716dd93ca6634d3140dbbbc3ac34907be564be2429f0299ebdc7b58ce09482fad54333ccf611c languageName: node linkType: hard @@ -29008,18 +29979,18 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths-webpack-plugin@npm:^3.5.2": - version: 3.5.2 - resolution: "tsconfig-paths-webpack-plugin@npm:3.5.2" +"tsconfig-paths-webpack-plugin@npm:^4.0.1": + version: 4.1.0 + resolution: "tsconfig-paths-webpack-plugin@npm:4.1.0" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.7.0 - tsconfig-paths: ^3.9.0 - checksum: 8b964284cfc58b5d3c4b13c31d7032d6774076d0af78f215644abd10da5b2c1b47eb91f9c084e709c84a70918fbc1cdb8730eba489c3f9be8039bf1e8daebcd4 + tsconfig-paths: ^4.1.2 + checksum: c030e867e70a3f6d1799fdffa209c3a35e1435ad99aac01946b9ebb0fa8208b7b508c1dfe8c8e13d6a2ef70c75b4db062fbfd3c1f3362c69b6c65ffd4a50e226 languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.9.0": +"tsconfig-paths@npm:^3.14.1": version: 3.14.2 resolution: "tsconfig-paths@npm:3.14.2" dependencies: @@ -29054,20 +30025,27 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e +"tslib@npm:2.5.3": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 languageName: node linkType: hard -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 languageName: node linkType: hard +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": + version: 2.6.1 + resolution: "tslib@npm:2.6.1" + checksum: a0382d386f5f1d6e3a39ab22bc56d1e08493da99ab3daf550e63bae6c08fdd6dd4fd20623ef387cad8262ce3fede98439257054fc025f2103cd4603b4509a052 + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -29079,23 +30057,21 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^1.0.0": - version: 1.1.2 - resolution: "tuf-js@npm:1.1.2" - dependencies: - "@tufjs/models": 1.0.1 - make-fetch-happen: ^11.0.1 - checksum: ea071f223730f8a743fbc2f1852d1c5b1a55a83162701a43051a812f27a923f745098555d7f44fad7cea4c2810eff2f4f73dd5c67d7d708ebaabeb51c23c51bb +"tty-browserify@npm:^0.0.1": + version: 0.0.1 + resolution: "tty-browserify@npm:0.0.1" + checksum: 5e34883388eb5f556234dae75b08e069b9e62de12bd6d87687f7817f5569430a6dfef550b51dbc961715ae0cd0eb5a059e6e3fc34dc127ea164aa0f9b5bb033d languageName: node linkType: hard -"tuf-js@npm:^1.1.3": - version: 1.1.4 - resolution: "tuf-js@npm:1.1.4" +"tuf-js@npm:^1.1.7": + version: 1.1.7 + resolution: "tuf-js@npm:1.1.7" dependencies: - "@tufjs/models": 1.0.3 - make-fetch-happen: ^11.0.1 - checksum: 4bc20aac1ce471a2590ca5434726797ffa4fbce79c5fce3ddce6fa02ab6d7810129aee5fd8c21cbb0bad27adf3542c800d99df98bfe5e6862eca51d2e277b390 + "@tufjs/models": 1.0.4 + debug: ^4.3.4 + make-fetch-happen: ^11.1.1 + checksum: 7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b languageName: node linkType: hard @@ -29108,82 +30084,17 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd - languageName: node - linkType: hard - -"type-fest@npm:2.19.0, type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb - languageName: node - linkType: hard - -"type-fest@npm:^0.16.0": - version: 0.16.0 - resolution: "type-fest@npm:0.16.0" - checksum: 6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 - languageName: node - linkType: hard - -"type-fest@npm:^0.18.0": - version: 0.18.1 - resolution: "type-fest@npm:0.18.1" - checksum: 303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - -"type-fest@npm:^0.4.1": - version: 0.4.1 - resolution: "type-fest@npm:0.4.1" - checksum: 2e65f43209492638244842f70d86e7325361c92dd1cc8e3bf5728c96b980305087fa5ba60652e9053d56c302ef4f1beb9652a91b72a50da0ea66c6b851f3b9cb - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: 0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd languageName: node linkType: hard -"type-fest@npm:^3.0.0": - version: 3.7.2 - resolution: "type-fest@npm:3.7.2" - checksum: 4ba9da0b4122c6ee455246670ae7ea9c736b00714fa2e0f916ce1d352a3421aa182883b24f43ce2a8c60303b0eaa9469296e58d1ab3e0075383e8d05a883eee8 +"type-fest@npm:~2.19": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb languageName: node linkType: hard @@ -29197,6 +30108,42 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + is-typed-array: ^1.1.10 + checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" @@ -29222,16 +30169,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:*": - version: 5.0.3 - resolution: "typescript@npm:5.0.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 13221c7f7dd2aa9cf8ac2fb1b5ca3825ff3d97a43b4656fd22ca36c0ec30179643b5157d620c3e4af9d3fc9234a571bd3ea175624b3d37c494d7ed159b038df2 - languageName: node - linkType: hard - "typescript@npm:^3 || ^4, typescript@npm:^4.9.3, typescript@npm:~4.9.3": version: 4.9.5 resolution: "typescript@npm:4.9.5" @@ -29252,33 +30189,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.0.4": - version: 5.0.4 - resolution: "typescript@npm:5.0.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 2f5bd1cead194905957cb34e220b1d6ff1662399adef8ec1864f74620922d860ee35b6e50eafb3b636ea6fd437195e454e1146cb630a4236b5095ed7617395c2 - languageName: node - linkType: hard - -"typescript@patch:typescript@*#~builtin<compat/typescript>": - version: 5.0.3 - resolution: "typescript@patch:typescript@npm%3A5.0.3#~builtin<compat/typescript>::version=5.0.3&hash=1f5320" +"typescript@npm:^5.0.3, typescript@npm:^5.0.4": + version: 5.1.6 + resolution: "typescript@npm:5.1.6" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 7e50cd198d2f7f052ac4e10d9a9b6e88ed91b3434c32b6e82f278a4e33727b42fee5d33929ef8a633b409a6bf62fd4bb95df464809507b7a703a4c73269dce3c + checksum: 45ac28e2df8365fd28dac42f5d62edfe69a7203d5ec646732cadc04065331f34f9078f81f150fde42ed9754eed6fa3b06a8f3523c40b821e557b727f1992e025 languageName: node linkType: hard "typescript@patch:typescript@^3 || ^4#~builtin<compat/typescript>, typescript@patch:typescript@^4.9.3#~builtin<compat/typescript>, typescript@patch:typescript@~4.9.3#~builtin<compat/typescript>": version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76" + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=289587" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10d31da0caa997927eab0167b7ddacb9ac8d3fd87e6584185b14da32b7f033e727309682fc0395021f4ac110860a3be6054e9b039a996a24d282a20bafc599f4 + checksum: e3333f887c6829dfe0ab6c1dbe0dd1e3e2aeb56c66460cb85c5440c566f900c833d370ca34eb47558c0c69e78ced4bfe09b8f4f98b6de7afed9b84b8d1dd06a1 languageName: node linkType: hard @@ -29292,13 +30219,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5.0.4#~builtin<compat/typescript>": - version: 5.0.4 - resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin<compat/typescript>::version=5.0.4&hash=1f5320" +"typescript@patch:typescript@^5.0.3#~builtin<compat/typescript>, typescript@patch:typescript@^5.0.4#~builtin<compat/typescript>": + version: 5.1.6 + resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=77c9e2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: db16dd188048c172051825c7e6eea3e6bf577020625e5635fb8265d22683897d9ed7579b41a3a3e961fba5728c58e324d52041e9ca21d0dfc4bafa8bcf8e7a4b + checksum: c134abcd9fc5c393db30498db18d8e89453efae14e11a39c1adb6238138d4c152472e497499b8a67b0c87ca6eafcb26b0eb02f962f240c233c2e0ad3785f8742 languageName: node linkType: hard @@ -29343,13 +30270,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -29491,15 +30411,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 - languageName: node - linkType: hard - "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -29518,15 +30429,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 - languageName: node - linkType: hard - "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" @@ -29684,25 +30586,6 @@ __metadata: languageName: node linkType: hard -"universal-url@npm:^2.0.0": - version: 2.0.0 - resolution: "universal-url@npm:2.0.0" - dependencies: - hasurl: ^1.0.0 - whatwg-url: ^7.0.0 - checksum: 57a5f887676987650f9f2b62811159e2706645e6fbb2b5ed83d802d996310de1e39066478e6f4f11cc9ec4e92624dd0f943f950d9ecaac2763b2b22d2aac8ae0 - languageName: node - linkType: hard - -"universal-user-agent@npm:^4.0.0": - version: 4.0.1 - resolution: "universal-user-agent@npm:4.0.1" - dependencies: - os-name: ^3.1.0 - checksum: e590abd8decb36400d1a630da5957e61f0356492bf413e12f78c169cade915080b03dbfbe8fa62c557bd73413edc681de580ad84488565bf30a9d509fd1b311f - languageName: node - linkType: hard - "universal-user-agent@npm:^5.0.0": version: 5.0.0 resolution: "universal-user-agent@npm:5.0.0" @@ -29747,15 +30630,15 @@ __metadata: languageName: node linkType: hard -"unplugin@npm:^0.10.2": - version: 0.10.2 - resolution: "unplugin@npm:0.10.2" +"unplugin@npm:^1.3.1": + version: 1.4.0 + resolution: "unplugin@npm:1.4.0" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 chokidar: ^3.5.3 webpack-sources: ^3.2.3 - webpack-virtual-modules: ^0.4.5 - checksum: 3e326b470df042af62c1ea1febe43b0681554663ad50257ad2ae14cf261740d0137570d97d2067ee3cdd6b819a4249f1aa3dff05a8c7476ad12715263b0b1ae8 + webpack-virtual-modules: ^0.5.0 + checksum: d006fe3ddfcd6578e36f2951f6a21419af2ba8812bc16681876a725a0981b339c920e6afb2cd222d74ca5943e0aa41260cff8fb3528dae12e66419369ae616fc languageName: node linkType: hard @@ -29783,24 +30666,17 @@ __metadata: languageName: node linkType: hard -"upath@npm:^1.2.0": - version: 1.2.0 - resolution: "upath@npm:1.2.0" - checksum: 3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" +"update-browserslist-db@npm:^1.0.11": + version: 1.0.11 + resolution: "update-browserslist-db@npm:1.0.11" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: e6fa55b515a674cc3b6c045d1f37f72780ddbbbb48b3094391fb2e43357b859ca5cee4c7d3055fd654d442ef032777d0972494a9a2e6c30d3660ee57b7138ae9 + update-browserslist-db: cli.js + checksum: 280d5cf92e302d8de0c12ef840a6af26ec024a5158aa2020975cd01bf0ded09c709793a6f421e6d0f1a47557d6a1a10dc43af80f9c30b8fd0df9691eb98c1c69 languageName: node linkType: hard @@ -29820,10 +30696,10 @@ __metadata: languageName: node linkType: hard -"url-join@npm:^2.0.5": - version: 2.0.5 - resolution: "url-join@npm:2.0.5" - checksum: 4551af5942417c98db5eb43d1eaae65686ddcb7b9374241e93eea2b74e9b7f069c8eb0eac405eea9db496e2a79d73a805e0b85d7ab0b6238d6d771cd926c0dde +"url-join@npm:^4.0.1": + version: 4.0.1 + resolution: "url-join@npm:4.0.1" + checksum: ac65e2c7c562d7b49b68edddcf55385d3e922bc1dd5d90419ea40b53b6de1607d1e45ceb71efb9d60da02c681d13c6cb3a1aa8b13fc0c989dfc219df97ee992d languageName: node linkType: hard @@ -29837,6 +30713,31 @@ __metadata: languageName: node linkType: hard +"url@npm:^0.11.0": + version: 0.11.1 + resolution: "url@npm:0.11.1" + dependencies: + punycode: ^1.4.1 + qs: ^6.11.0 + checksum: 9e18c57b854d6a8e0288c4ddf21f9e30273a0ef2efb28a7e3e3d6eac392637dbdecce0d8f616586d58ff43154997150ecc2c9873e6c845d1e742e24c940b6e12 + languageName: node + linkType: hard + +"use-callback-ref@npm:^1.3.0": + version: 1.3.0 + resolution: "use-callback-ref@npm:1.3.0" + dependencies: + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 8a0867ffd441f358c66d79567970a745cc78ac2f98840a81c1fa749a525e8716116c645497d886a815e1dcf40ad81a107ebd6a7d15fd9ab5925c44a994a1d89a + languageName: node + linkType: hard + "use-composed-ref@npm:^1.3.0": version: 1.3.0 resolution: "use-composed-ref@npm:1.3.0" @@ -29884,6 +30785,22 @@ __metadata: languageName: node linkType: hard +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: ^1.1.0 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 + languageName: node + linkType: hard + "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" @@ -30049,16 +30966,6 @@ __metadata: languageName: node linkType: hard -"vfile-location@npm:^4.0.0": - version: 4.1.0 - resolution: "vfile-location@npm:4.1.0" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: 77097e819579214d3346aaa2b06e4d23e2413221ac4914679d312cf64973011b76f0e2424fa8f18987befcd6ed60f4f6c4c6ebd5d5326062173a95f6b4445a96 - languageName: node - linkType: hard - "vfile-message@npm:^2.0.0": version: 2.0.4 resolution: "vfile-message@npm:2.0.4" @@ -30132,20 +31039,20 @@ __metadata: linkType: hard "vite-plugin-turbosnap@npm:^1.0.1": - version: 1.0.1 - resolution: "vite-plugin-turbosnap@npm:1.0.1" - checksum: 0ebadba21ad7a5220e00fd393f178503fc89b26cb9b880943d64ac65ad1f2a5f99ca456b6218e270ad7e1775eb3c0f84bc9441e200ead437119a9027b611bb57 + version: 1.0.2 + resolution: "vite-plugin-turbosnap@npm:1.0.2" + checksum: baa823428ce62ac935597386a85bb525ec4334f0945aa667aeb011cc1bf23fe52865ec7f3e1bd30a02bb175ef2223a76387862ff20acef1ff2affb6bf3d71553 languageName: node linkType: hard -"vite@npm:4.3.1": - version: 4.3.1 - resolution: "vite@npm:4.3.1" +"vite@npm:4.3.9": + version: 4.3.9 + resolution: "vite@npm:4.3.9" dependencies: esbuild: ^0.17.5 fsevents: ~2.3.2 - postcss: ^8.4.21 - rollup: ^3.20.2 + postcss: ^8.4.23 + rollup: ^3.21.0 peerDependencies: "@types/node": ">= 14" less: "*" @@ -30171,22 +31078,22 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: c9a9ccb0405b2d76c228b989d283a03962d00d2f48491b8b8492162fe7b1f130e77f842970badb691e669ea75e3a137e417ffeeeab0e6944179d71cbd74fa166 + checksum: 9eb1c99f16992e1b29e3eea76df312983f2e59915c369fede0f1e6716b80827857f88cfc75092aac807d20c73033c65be82a315a14ab312a52d22a9bdad1ca82 languageName: node linkType: hard "vite@npm:^4.0.0, vite@npm:^4.0.4": - version: 4.2.1 - resolution: "vite@npm:4.2.1" + version: 4.4.7 + resolution: "vite@npm:4.4.7" dependencies: - esbuild: ^0.17.5 + esbuild: ^0.18.10 fsevents: ~2.3.2 - postcss: ^8.4.21 - resolve: ^1.22.1 - rollup: ^3.18.0 + postcss: ^8.4.26 + rollup: ^3.25.2 peerDependencies: "@types/node": ">= 14" less: "*" + lightningcss: ^1.21.0 sass: "*" stylus: "*" sugarss: "*" @@ -30199,6 +31106,8 @@ __metadata: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -30209,7 +31118,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: a64e3a1563b9584d1fd1ca45e06ee3c9fa4956320e6d4e9d83bf09fc8e64bb9d3ef62f664b6f740141eee16643690e8a41ffdb3030f4f2e170c57894df1f9a5d + checksum: f0cd995ffd6d0311af98fa28a5ed8502c29d3aa4b3a12c812030e688f327ec17a95db0994e569bfddd6cfa602608b6892fc18d2944cbc1150d75c1ab3299bc5c languageName: node linkType: hard @@ -30225,6 +31134,13 @@ __metadata: languageName: node linkType: hard +"vm-browserify@npm:^1.1.2": + version: 1.1.2 + resolution: "vm-browserify@npm:1.1.2" + checksum: 0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b + languageName: node + linkType: hard + "void-elements@npm:^3.1.0": version: 3.1.0 resolution: "void-elements@npm:3.1.0" @@ -30246,9 +31162,9 @@ __metadata: linkType: hard "vscode-languageserver-textdocument@npm:^1.0.3": - version: 1.0.9 - resolution: "vscode-languageserver-textdocument@npm:1.0.9" - checksum: b5bf8dabfbbd046ca071a9ac360b147b23bb05ce1811a2add9d2a89aabc8b67caf118af59a6395c299f98d5ccbe711058a1fd4b3cbdc2e912778191251503746 + version: 1.0.10 + resolution: "vscode-languageserver-textdocument@npm:1.0.10" + checksum: 0f4e82c262eaea2ed84e004c751453ac900a669763287dee92f9b631804a6ef1dabd62880185fa4d9a063f27d46e65c5251f7f0c8329aee5e3b3db6b6dfa2109 languageName: node linkType: hard @@ -30282,22 +31198,29 @@ __metadata: languageName: node linkType: hard +"vue-component-type-helpers@npm:latest": + version: 1.8.6 + resolution: "vue-component-type-helpers@npm:1.8.6" + checksum: e2efe26d879c4f96eb01a9e6fb8764a3eeaba96d2e5ffcc64a7708d280c28b85369e72d99a610536c40f73a4caa9ea3e96647fe246cf0c1a4ad89c50bf5b5e7b + languageName: node + linkType: hard + "vue-docgen-api@npm:^4.40.0, vue-docgen-api@npm:^4.44.23, vue-docgen-api@npm:^4.46.0": - version: 4.64.1 - resolution: "vue-docgen-api@npm:4.64.1" + version: 4.73.1 + resolution: "vue-docgen-api@npm:4.73.1" dependencies: - "@babel/parser": ^7.13.12 - "@babel/types": ^7.18.8 + "@babel/parser": ^7.21.4 + "@babel/types": ^7.21.4 "@vue/compiler-dom": ^3.2.0 "@vue/compiler-sfc": ^3.2.0 - ast-types: 0.14.2 + ast-types: ^0.16.1 hash-sum: ^2.0.0 lru-cache: ^8.0.3 pug: ^3.0.2 - recast: 0.22.0 + recast: ^0.23.1 ts-map: ^1.0.3 - vue-inbrowser-compiler-independent-utils: ^4.64.1 - checksum: 7118a931e041fec1dab88211e3e165b455ff5fd70ccef73980cca238d5102da3bc03a9ba30100f490be701ccbe3b072e20e73d4aeb7f8c6e585fb92828f81ec6 + vue-inbrowser-compiler-independent-utils: ^4.69.0 + checksum: 6ea8e8a4fbc793b79610b8b9a02e0bfae4ff17dc7e6831dbd616e8974b9315cf0497c47fcf4c0ba73d5ca5002232b628b71bba5e15bfd26e878020838de7dcf9 languageName: node linkType: hard @@ -30323,12 +31246,12 @@ __metadata: languageName: node linkType: hard -"vue-inbrowser-compiler-independent-utils@npm:^4.64.1": - version: 4.64.1 - resolution: "vue-inbrowser-compiler-independent-utils@npm:4.64.1" +"vue-inbrowser-compiler-independent-utils@npm:^4.69.0": + version: 4.71.1 + resolution: "vue-inbrowser-compiler-independent-utils@npm:4.71.1" peerDependencies: vue: ">=2" - checksum: c2dc7469f0226e2b7b73c50d56690f1dfd54f80ea6978289751c11e5702942f889ea333f225cb8e4e1d8c4fad8563d6094c5163fbce174ff31982368255f693f + checksum: ff2630639fb4e3a9974927845bb32a6c69a8be82fc224e2a623939a59af5537f1859c8eb13a1e3bfd0811c13409de5501deaf7c719a980f51d7f97bef140cdb5 languageName: node linkType: hard @@ -30428,17 +31351,18 @@ __metadata: languageName: node linkType: hard -"vue-tsc@npm:^1.0.9, vue-tsc@npm:^1.2.0": - version: 1.3.4 - resolution: "vue-tsc@npm:1.3.4" +"vue-tsc@npm:latest": + version: 1.8.6 + resolution: "vue-tsc@npm:1.8.6" dependencies: - "@volar/vue-language-core": 1.3.4 - "@volar/vue-typescript": 1.3.4 + "@vue/language-core": 1.8.6 + "@vue/typescript": 1.8.6 + semver: ^7.3.8 peerDependencies: typescript: "*" bin: vue-tsc: bin/vue-tsc.js - checksum: ee6a391aaba35a7d69ebda0c7bc30ea74031e51624c813dd6492ce5611888c9b8452d218c4f28892c8b63b80421bf4bd12007d434f977f65022bbbf2dfb5d2d4 + checksum: 8a4fa9fc34446f064f09d4222c9b626682278ca79155428b6a0a07eaeafb7091bc0f9f406830331cb86fb95ed86c71c889f77c608d1aad1762836105ed8a05ff languageName: node linkType: hard @@ -30471,33 +31395,15 @@ __metadata: linkType: hard "vue@npm:^3.2.33, vue@npm:^3.2.47": - version: 3.2.47 - resolution: "vue@npm:3.2.47" - dependencies: - "@vue/compiler-dom": 3.2.47 - "@vue/compiler-sfc": 3.2.47 - "@vue/runtime-dom": 3.2.47 - "@vue/server-renderer": 3.2.47 - "@vue/shared": 3.2.47 - checksum: eeed8609d3793d74f25023298365fbfb16f8a437fe1a06031b2ab250e86ea7f0d3bc97cda7f9f125eb5a2c16528a5263b7d3fb40c8abab0e6120233f22cdb49d - languageName: node - linkType: hard - -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: 7795b61fb51ce222414891eef8e6cb13240b62f64351b4474f99c84de2bc37d37dd0efa193f37391e9737097b881a111d1e003e3d7a9583693f8d5a858b02627 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^3.0.0": - version: 3.0.0 - resolution: "w3c-xmlserializer@npm:3.0.0" + version: 3.3.4 + resolution: "vue@npm:3.3.4" dependencies: - xml-name-validator: ^4.0.0 - checksum: 8c455303ee2aec813f8688f4a1618b78d2fd90156a233c8ef60b853418a6b23f00fe86b680f7584f48d1c2348ee0677ad43be6fb6fcc032130cfda4de8c7188e + "@vue/compiler-dom": 3.3.4 + "@vue/compiler-sfc": 3.3.4 + "@vue/runtime-dom": 3.3.4 + "@vue/server-renderer": 3.3.4 + "@vue/shared": 3.3.4 + checksum: cc1a3ae13bd66a84ed6c45af33f8045ec551ac44bdd44ad5b25b08ef34d1737c3d43584d84ac19108f58602b5ba8f2483eee65d51760715589ff118b0c14d6df languageName: node linkType: hard @@ -30510,18 +31416,18 @@ __metadata: languageName: node linkType: hard -"wait-on@npm:^5.2.1": - version: 5.3.0 - resolution: "wait-on@npm:5.3.0" +"wait-on@npm:^7.0.1": + version: 7.0.1 + resolution: "wait-on@npm:7.0.1" dependencies: - axios: ^0.21.1 - joi: ^17.3.0 + axios: ^0.27.2 + joi: ^17.7.0 lodash: ^4.17.21 - minimist: ^1.2.5 - rxjs: ^6.6.3 + minimist: ^1.2.7 + rxjs: ^7.8.0 bin: wait-on: bin/wait-on - checksum: 5ca740e3f2cf4f73ebd2787ff15f7b8d0ee99f188dd37aae0a7d116ae9837f04b8752e4306218aee5165ca4e37cfd3c5b114627748e465e46f8cd51af0da1790 + checksum: 2a9c56d26dac573e6bfd36e85d99f072021c23dc2c0faab900a411460b58e16982b96b018d9168c366040f56196314fa46f3d79ef19e3dc38f55824d5035f2ec languageName: node linkType: hard @@ -30583,7 +31489,7 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": +"watchpack@npm:2.4.0, watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": version: 2.4.0 resolution: "watchpack@npm:2.4.0" dependencies: @@ -30612,8 +31518,8 @@ __metadata: linkType: hard "web-component-analyzer@npm:^1.1.6": - version: 1.1.6 - resolution: "web-component-analyzer@npm:1.1.6" + version: 1.1.7 + resolution: "web-component-analyzer@npm:1.1.7" dependencies: fast-glob: ^3.2.2 ts-simple-type: ~1.0.5 @@ -30622,7 +31528,14 @@ __metadata: bin: wca: cli.js web-component-analyzer: cli.js - checksum: d76361f973a925e84b4aa9ddfe2ffa11d5e97b2afedd61dabef1070ca89c31259871043dc9cb356a101f7481b33752d5281afd18ca4cfd0fddb9e8cf2d072446 + checksum: 9a0cc21c88e651b24ecf82555d316c84c2285739b03275c057e9d5017e8acf49451d3148de55a46f7a53b9feafe13d4dc7624bf68074492dd5e6c4332a4bd007 + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.0.3": + version: 3.2.1 + resolution: "web-streams-polyfill@npm:3.2.1" + checksum: 70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b languageName: node linkType: hard @@ -30633,13 +31546,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^4.0.2": - version: 4.0.2 - resolution: "webidl-conversions@npm:4.0.2" - checksum: def5c5ac3479286dffcb604547628b2e6b46c5c5b8a8cfaa8c71dc3bafc85859bde5fbe89467ff861f571ab38987cf6ab3d6e7c80b39b999e50e803c12f3164f - languageName: node - linkType: hard - "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" @@ -30647,9 +31553,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:*, webpack-dev-middleware@npm:6.0.2": - version: 6.0.2 - resolution: "webpack-dev-middleware@npm:6.0.2" +"webpack-dev-middleware@npm:6.1.1, webpack-dev-middleware@npm:^6.1.1": + version: 6.1.1 + resolution: "webpack-dev-middleware@npm:6.1.1" dependencies: colorette: ^2.0.10 memfs: ^3.4.12 @@ -30661,7 +31567,7 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: fabc2eccc96884b5ef41ca58e9a23454745f891f76feee67de4ade371008fc5a0ed1e7b86af59f5eabed4e6d89e8d394245830e4f8de7639a891411542b090a1 + checksum: f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 languageName: node linkType: hard @@ -30680,9 +31586,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:4.13.2": - version: 4.13.2 - resolution: "webpack-dev-server@npm:4.13.2" +"webpack-dev-server@npm:4.15.0": + version: 4.15.0 + resolution: "webpack-dev-server@npm:4.15.0" dependencies: "@types/bonjour": ^3.5.9 "@types/connect-history-api-fallback": ^1.3.5 @@ -30723,28 +31629,28 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: e787f3122ccf376f4a3f5e981c37aad32686f2fa9f8fdda65938689dc6a43372b88ae98f751ab87df282a12e34effe376828c9ed57103b6831e037228b9d433a + checksum: 7e4555b687071f2f4c6d7ff0faa1c7fc155bc35983c703b6fd250f3fb3e387a18394e0bd43ce0ede9bb433efe0947bc05ad55996b3ac5669a8adb64d6c1abba0 languageName: node linkType: hard "webpack-hot-middleware@npm:^2.25.1": - version: 2.25.3 - resolution: "webpack-hot-middleware@npm:2.25.3" + version: 2.25.4 + resolution: "webpack-hot-middleware@npm:2.25.4" dependencies: ansi-html-community: 0.0.8 html-entities: ^2.1.0 strip-ansi: ^6.0.0 - checksum: dca26d6d32eb684469830b4074dcd11c298036fe3ec8276ea5a69bc14bc8a53aab2494e02871ada146ec0881965d7018d559683cbcc73bcafcfa4da1184e92b5 + checksum: c0702d308a39bdbc9277d66df50272e8c358c2238cecb0881df57136f54cb7a3d8291320b13075325b58f7a3cbf7a1ef10829554a5bc2ddfa3effbf416dc8e8c languageName: node linkType: hard -"webpack-merge@npm:5.8.0": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" +"webpack-merge@npm:5.9.0": + version: 5.9.0 + resolution: "webpack-merge@npm:5.9.0" dependencies: clone-deep: ^4.0.1 wildcard: ^2.0.0 - checksum: 400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb + checksum: 74935a4b03612ee65c0867ca1050788ccfec3efa6d17bb5acceacbd4fbbd0356a073997723eff7380deccd88f13a55c52cb004e80e34f3a67808ac455da6ad64 languageName: node linkType: hard @@ -30780,28 +31686,28 @@ __metadata: languageName: node linkType: hard -"webpack-virtual-modules@npm:^0.4.3, webpack-virtual-modules@npm:^0.4.5": - version: 0.4.6 - resolution: "webpack-virtual-modules@npm:0.4.6" - checksum: d3ecd680289e04f6fac70f09a682385b176303cfdc69ad08f11fce6fa031f9c054b3e728cb54967da48f051cd2ebe3f0d0d02bf78d3dfc8a3a9be91ea7544bbb +"webpack-virtual-modules@npm:^0.5.0": + version: 0.5.0 + resolution: "webpack-virtual-modules@npm:0.5.0" + checksum: 0742e069cd49d91ccd0b59431b3666903d321582c1b1062fa6bdae005c3538af55ff8787ea5eafbf72662f3496d3a879e2c705d55ca0af8283548a925be18484 languageName: node linkType: hard "webpack@npm:5, webpack@npm:^5, webpack@npm:^5.65.0": - version: 5.77.0 - resolution: "webpack@npm:5.77.0" + version: 5.88.2 + resolution: "webpack@npm:5.88.2" dependencies: "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 + "@types/estree": ^1.0.0 + "@webassemblyjs/ast": ^1.11.5 + "@webassemblyjs/wasm-edit": ^1.11.5 + "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 + acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 + enhanced-resolve: ^5.15.0 + es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 @@ -30810,9 +31716,9 @@ __metadata: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.0 + schema-utils: ^3.2.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 + terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: @@ -30820,13 +31726,13 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 998ce43299a700cd62d0c83152097427c7f8384082a3290876ce78ea5e2d243d590518d53c1aa72ca0c9f6c6741bffb195e08016585653cc77ec5d98554eeb47 + checksum: 743acf04cdb7f73ec059761d3921798014139005c88e136ab99fe158f544695eee2caf4be775cc06e7f481d84725d443df2c1c8e00ec24a130e8b8fd514ff7b9 languageName: node linkType: hard -"webpack@npm:5.80.0": - version: 5.80.0 - resolution: "webpack@npm:5.80.0" +"webpack@npm:5.86.0": + version: 5.86.0 + resolution: "webpack@npm:5.86.0" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -30834,10 +31740,10 @@ __metadata: "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 + acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.13.0 + enhanced-resolve: ^5.14.1 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 @@ -30857,7 +31763,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: a5d5c0b738efd0dd84da05f5546ac5d41954cd294bce85ba4bb9f8e7d301b7bfd2dfb75f527a73e5a85fe46d0280c82f028172464f00a5a34ca53f70431f8a2d + checksum: 138cd2f9d6ddd028ce7deec8958e9bc6092471c6514a3429a2383dcf9a33b4060b05de1337c461f1d3038b066f62198e5e820497f8f618441ec63108c83b8711 languageName: node linkType: hard @@ -30895,16 +31801,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^10.0.0": - version: 10.0.0 - resolution: "whatwg-url@npm:10.0.0" - dependencies: - tr46: ^3.0.0 - webidl-conversions: ^7.0.0 - checksum: 57f295913cbad3b8f7843168f30dde5ff0a875cbcf80f9cceb96276e296ba925f0455b2bfd55b6829eb3d770c6ebcac48abcc182826decb748c139dbe85d92e8 - languageName: node - linkType: hard - "whatwg-url@npm:^11.0.0": version: 11.0.0 resolution: "whatwg-url@npm:11.0.0" @@ -30925,17 +31821,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^7.0.0": - version: 7.1.0 - resolution: "whatwg-url@npm:7.1.0" - dependencies: - lodash.sortby: ^4.7.0 - tr46: ^1.0.1 - webidl-conversions: ^4.0.2 - checksum: 2785fe4647690e5a0225a79509ba5e21fdf4a71f9de3eabdba1192483fe006fc79961198e0b99f82751557309f17fc5a07d4d83c251aa5b2f85ba71e674cbee9 - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -30962,9 +31847,9 @@ __metadata: linkType: hard "which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 946ffdbcd6f0cf517638f8f2319c6d51e528c3b41bc2c0f5dc3dc46047347abd7326aea5cdf5def0a8b32bdca313ac87a32ce5a76b943fe1ca876c4557e6b716 + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e languageName: node linkType: hard @@ -30975,17 +31860,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: 7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 + checksum: 2cf4ce417beb50ae0ec3b1b479ea6d72d3e71986462ebd77344ca6398f77c7c59804eebe88f4126ce79f85edbcaa6c7783f54b0a5bf34f785eab7cbb35c30499 languageName: node linkType: hard @@ -31012,13 +31896,13 @@ __metadata: linkType: hard "which@npm:^3.0.0": - version: 3.0.0 - resolution: "which@npm:3.0.0" + version: 3.0.1 + resolution: "which@npm:3.0.1" dependencies: isexe: ^2.0.0 bin: node-which: bin/which.js - checksum: 10bcacbcf5062b5a15caa047b7d81ac03525969dc4a06d085f0a23a1c5bca9e048b6fb3f6fa50fb96de997ab5898934f7627e658c135fff054f61421833475df + checksum: 15263b06161a7c377328fd2066cb1f093f5e8a8f429618b63212b5b8847489be7bcab0ab3eb07f3ecc0eda99a5a7ea52105cf5fa8266bedd083cc5a9f6da24f1 languageName: node linkType: hard @@ -31041,9 +31925,9 @@ __metadata: linkType: hard "wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 languageName: node linkType: hard @@ -31068,13 +31952,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -31093,6 +31970,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + "wrap-ansi@npm:^5.1.0": version: 5.1.0 resolution: "wrap-ansi@npm:5.1.0" @@ -31115,14 +32003,14 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard @@ -31175,12 +32063,12 @@ __metadata: linkType: hard "write-file-atomic@npm:^5.0.0": - version: 5.0.0 - resolution: "write-file-atomic@npm:5.0.0" + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" dependencies: imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: f44c8bc3578c07a68f696f32b57be241ebfd65628dbd15f2b1a943252ad0ed4f0fc05847bb9b0f0fe9cdbdf0943e7012bf7b3fd3d8bb9b0b424f150747e1bf16 + signal-exit: ^4.0.1 + checksum: e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d languageName: node linkType: hard @@ -31248,6 +32136,13 @@ __metadata: languageName: node linkType: hard +"xcase@npm:^2.0.1": + version: 2.0.1 + resolution: "xcase@npm:2.0.1" + checksum: 11b8ae8f6734b29d442a5acf1dff3a896cabbf49e7ffa01472ff6fa687a6e6f6a25889d06c10a41950e7a90fe89239fa78d95eab0c5eb654ca75f0ccd71ba8ed + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -31288,7 +32183,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: 366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e @@ -31348,10 +32243,10 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.0.0": - version: 2.2.1 - resolution: "yaml@npm:2.2.1" - checksum: 12f3a73f2d28970d146184b1425d32a63f65e9f4840eeab09155a4d23a15be8401ac7a3a09b6626895ccf853c1b9069450957c0ad82cfe591369aaa58d1593d6 +"yaml@npm:^2.0.0, yaml@npm:^2.2.2, yaml@npm:^2.3.1": + version: 2.3.1 + resolution: "yaml@npm:2.3.1" + checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 languageName: node linkType: hard @@ -31362,7 +32257,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:21.1.1, yargs-parser@npm:>=21.0.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:21.1.1, yargs-parser@npm:>=21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 @@ -31411,7 +32306,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2": +"yargs@npm:17.7.2, yargs@npm:^17.2.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -31463,21 +32358,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.2.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2": - version: 17.7.1 - resolution: "yargs@npm:17.7.1" - 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 - checksum: 0ed3b7694d94da777f3591f1d786d947ed2e59b897da0a0c30e541109ae087979ac26b4ec39557f5e9c4592f19806447963fb132049b9806a1d416bcdd24d2b4 - languageName: node - linkType: hard - "yauzl@npm:^2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0" @@ -31502,12 +32382,26 @@ __metadata: languageName: node linkType: hard +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + +"zod@npm:3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: 161e8cf7aea38a99244d65da4a9477d9d966f6a533e503feaa20ff7968a9691065c38c6f1eab5cbbdc8374142fff4a05c9cacb8479803ab50ab6a6ca80e5d624 + languageName: node + linkType: hard + "zone.js@npm:^0.13.0": - version: 0.13.0 - resolution: "zone.js@npm:0.13.0" + version: 0.13.1 + resolution: "zone.js@npm:0.13.1" dependencies: tslib: ^2.3.0 - checksum: 6b19d56360354d267de2e762ba6d3f8af1b4f9db55def46b976d9fd865b413a1ef6b033e3fc9a677905af02d691d289228f4a468d5d950b5abe901fec708ebcd + checksum: 3f04ded7d2f5496befbce030aa57ba58d1c604795445e555af1a0079fc9938d0a0a9c128fdbff13563423ea2e2956549383629e39c59a7f1d8d3362deacc5e5b languageName: node linkType: hard diff --git a/docs/addons/addon-final-stage-optimized.mp4 b/docs/addons/addon-final-stage-optimized.mp4 deleted file mode 100644 index adb95b819db4..000000000000 Binary files a/docs/addons/addon-final-stage-optimized.mp4 and /dev/null differ diff --git a/docs/addons/addon-kit-clone-repo.mp4 b/docs/addons/addon-kit-clone-repo.mp4 new file mode 100644 index 000000000000..ea8a65ecbebd Binary files /dev/null and b/docs/addons/addon-kit-clone-repo.mp4 differ diff --git a/docs/addons/addon-types.md b/docs/addons/addon-types.md index 023e615f1d72..8bb21021496d 100644 --- a/docs/addons/addon-types.md +++ b/docs/addons/addon-types.md @@ -88,6 +88,10 @@ Use this boilerplate code while writing your own preset addon. <!-- prettier-ignore-end --> -<div class="aside"> -Learn more about writing your own preset addon <a href="./writing-presets">here</a>. -</div> +## Learn more about the Storybook addon ecosystem + +- Types of addons for other types of addons +- [Writing addons](./writing-addons.md) for the basics of addon development +- [Presets](./writing-presets.md) for preset development +- [Integration catalog](./integration-catalog.md) for requirements and available recipes +- [API reference](./addons-api.md) to learn about the available APIs diff --git a/docs/addons/addons-api.md b/docs/addons/addons-api.md index 8208bf0f7c2c..17c05b0a50d5 100644 --- a/docs/addons/addons-api.md +++ b/docs/addons/addons-api.md @@ -277,7 +277,7 @@ To help streamline addon development and reduce boilerplate code, the API expose ### useStorybookState -It allows access to Storybook's internal state. Similar to the [`useglobals`](#useglobals) hook, we recommend optimizing your addon to rely on [`React.memo`](https://reactjs.org/docs/react-api.html#reactmemo), or the following hooks; [`useMemo`](https://reactjs.org/docs/hooks-reference.html#usememo), [`useCallback`](https://reactjs.org/docs/hooks-reference.html#usecallback) to prevent a high volume of re-render cycles. +It allows access to Storybook's internal state. Similar to the [`useglobals`](#useglobals) hook, we recommend optimizing your addon to rely on [`React.memo`](https://react.dev/reference/react/memo), or the following hooks; [`useMemo`](https://react.dev/reference/react/useMemo), [`useCallback`](https://react.dev/reference/react/useCallback) to prevent a high volume of re-render cycles. <!-- prettier-ignore-start --> @@ -349,7 +349,7 @@ The `useParameter` retrieves the current story's parameters. If the parameter's ### useGlobals -Extremely useful hook for addons that rely on Storybook [Globals](../essentials/toolbars-and-globals.md). It allows you to obtain and update `global` values. We also recommend optimizing your addon to rely on [`React.memo`](https://reactjs.org/docs/react-api.html#reactmemo), or the following hooks; [`useMemo`](https://reactjs.org/docs/hooks-reference.html#usememo), [`useCallback`](https://reactjs.org/docs/hooks-reference.html#usecallback) to prevent a high volume of re-render cycles. +Extremely useful hook for addons that rely on Storybook [Globals](../essentials/toolbars-and-globals.md). It allows you to obtain and update `global` values. We also recommend optimizing your addon to rely on [`React.memo`](https://react.dev/reference/react/memo), or the following hooks; [`useMemo`](https://react.dev/reference/react/useMemo), [`useCallback`](https://react.dev/reference/react/useCallback) to prevent a high volume of re-render cycles. <!-- prettier-ignore-start --> @@ -374,3 +374,11 @@ Hook that allows you to retrieve or update a story's [`args`](../writing-stories /> <!-- prettier-ignore-end --> + +## Learn more about the Storybook addon ecosystem + +- [Types of addons](./addon-types.md) for other types of addons +- [Writing addons](./writing-addons.md) for the basics of addon development +- [Presets](./writing-presets.md) for preset development +- [Integration catalog](./integration-catalog.md) for requirements and available recipes +- API reference to learn about the available APIs diff --git a/docs/addons/github-secrets-screen.png b/docs/addons/github-secrets-screen.png new file mode 100644 index 000000000000..657049ae3e08 Binary files /dev/null and b/docs/addons/github-secrets-screen.png differ diff --git a/docs/addons/integration-catalog.md b/docs/addons/integration-catalog.md index 00fd10fcd84f..e2d1215c0a93 100644 --- a/docs/addons/integration-catalog.md +++ b/docs/addons/integration-catalog.md @@ -101,3 +101,11 @@ Not finding the recipe that you want? If it's popular in the community, our docs ### Request a recipe If you'd like to request a recipe, head over to the [#maintenance channel](https://discord.com/channels/486522875931656193/490070912448724992) of our community Discord and ask. + +## Learn more about the Storybook addon ecosystem + +- [Types of addons](./addon-types.md) for other types of addons +- [Writing addons](./writing-addons.md) for the basics of addon development +- [Presets](./writing-presets.md) for preset development +- Integration catalog for requirements and available recipes +- [API reference](./addons-api.md) to learn about the available APIs diff --git a/docs/addons/storybook-addon-finished-state.mp4 b/docs/addons/storybook-addon-finished-state.mp4 new file mode 100644 index 000000000000..98a740e672d0 Binary files /dev/null and b/docs/addons/storybook-addon-finished-state.mp4 differ diff --git a/docs/addons/storybook-addon-initial-state.png b/docs/addons/storybook-addon-initial-state.png new file mode 100644 index 000000000000..76947325fbc9 Binary files /dev/null and b/docs/addons/storybook-addon-initial-state.png differ diff --git a/docs/addons/writing-addons.md b/docs/addons/writing-addons.md index f3b1c0b18934..db951af33832 100644 --- a/docs/addons/writing-addons.md +++ b/docs/addons/writing-addons.md @@ -2,264 +2,341 @@ title: 'Write an addon' --- -One of Storybook's main features is its robust addon ecosystem. Use addons to enhance and extend your development workflow. This page shows you how to create your own addon. +Storybook addons are a powerful way to extend Storybook's functionality and customize the development experience. They can be used to add new features, customize the UI, or integrate with third-party tools. -## What we're building +## What are we going to build? -For this example, we're going to build a bare-bones addon that: +This reference guide is to help you develop a mental model for how Storybook addons work by building a simple addon based on the popular [Outline addon](https://storybook.js.org/addons/@storybook/addon-outline/). Throughout this guide, you'll learn how addons are structured, Storybook's APIs, how to test your addon locally, and how to publish it. -- Adds a new panel in Storybook. -- Retrieves a custom parameter from the stories. -- Displays the parameter data in the panel. - -### Addon kit - -This guide shows you how to setup an addon from scratch. Alternatively, you can jumpstart your addon development with the [`addon-kit`](https://github.com/storybookjs/addon-kit). - -### Addon directory structure +<video autoPlay muted playsInline loop> + <source + src="storybook-addon-finished-state.mp4" + type="video/mp4" + /> +</video> -We recommend a common addon file and directory structure for consistency. +## Addon anatomy -| Files/Directories | Description | -| :---------------- | :--------------------------------- | -| dist | Transpiled directory for the addon | -| src | Source code for the addon | -| .babelrc.js | Babel configuration | -| preset.js | Addon entry point | -| package.json | Addon metadata information | -| README.md | General information for the addon | +There are two main categories of addons, each with its role: -### Get started +- **UI-based**: These addons are responsible for customizing the interface, enabling shortcuts for common tasks, or displaying additional information in the UI. +- **Presets**: [These](./writing-presets.md) are pre-configured settings or configurations that enable developers to quickly set up and customize their environment with a specific set of features, functionality, or technology. -Open a new terminal and create a new directory called `my-addon`. Inside it, run `npm init` to initialize a new node project. For your project's name, choose `my-addon` and for entry point `dist/preset.js`. +### UI-based addons -Once you've gone through the prompts, your `package.json` should look like: - -```json -{ - "name": "my-addon", - "version": "1.0.0", - "description": "A barebones Storybook addon", - "main": "dist/preset.js", - "files": ["dist/**/*", "README.md", "*.js"], - "keywords": ["storybook", "addons"], - "author": "YourUsername", - "license": "MIT" -} -``` - -### Build system - -We'll need to add the necessary dependencies and make some adjustments. Run the following command to install the required dependencies: +The addon built in this guide is a UI-based addon, specifically a [toolbar](./addon-types.md#toolbars) addon, enabling users to draw outlines around each element in the story through a shortcut or click of a button. UI addons can create other types of UI elements, each with its function: [panels](./addon-types.md#panels) and [tabs](./addon-types.md#tabs), providing users with various ways to interact with the UI. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-write-addon-install-dependencies.yarn.js.mdx', - 'common/storybook-write-addon-install-dependencies.npm.js.mdx', + 'common/storybook-addon-toolkit-toolbar-example.toolbar.ts.mdx', + 'common/storybook-addon-toolkit-panel-example.panel.ts.mdx', + 'common/storybook-addon-toolkit-tab-example.tab.ts.mdx', ]} /> <!-- prettier-ignore-end --> -Initialize a local Storybook instance to allow you to test your addon. +## Setup -```shell -npx storybook@latest init -``` +To create your first addon, you're going to use the [Addon Kit](https://github.com/storybookjs/addon-kit), a ready-to-use template featuring all the required building blocks, dependencies and configurations to help you get started building your addon. In the Addon Kit repository, click the **Use this template** button to create a new repository based on the Addon Kit's code. -<div class="aside"> -💡 Initializing Storybook adds the building blocks for our addon. If you're building a standalone Storybook addon, set the React and Storybook packages as peer dependencies. It prevents the addon from breaking Storybook when there are different versions available. -</div> +<video autoPlay muted playsInline loop> + <source + src="addon-kit-clone-repo.mp4" + type="video/mp4" + /> +</video> -Next, create a `.babelrc.js` file in the root directory with the following: +Clone the repository you just created and install its dependencies. When the installation process finishes, you will be prompted with questions to configure your addon. Answer them, and when you're ready to start building your addon, run the following command to start Storybook in development mode and develop your addon in watch mode: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/my-addon-babel-configuration.js.mdx', + 'common/storybook-addon-run-dev-mode.yarn.js.mdx', + 'common/storybook-addon-run-dev-mode.npm.js.mdx', + 'common/storybook-addon-run-dev-mode.pnpm.js.mdx', ]} /> <!-- prettier-ignore-end --> <div class="aside"> -Babel configuration is required because our addon uses ES6 and JSX. -</div> -Change your `package.json` and add the following script to build the addon: - -```json -{ - "scripts": { - "build": "babel ./src --out-dir ./dist" - } -} -``` +ℹ️ The Addon Kit uses [Typescript](https://www.typescriptlang.org/) by default. If you want to use JavaScript instead, you can run the `eject-ts` command to convert the project to JavaScript. -<div class="aside"> -💡 Running <code>yarn build</code> at this stage will output the code into the <code>dist</code> directory, transpiled into a ES5 module ready to be installed into any Storybook. </div> -Finally, create a new directory called `src` and inside a new file called `preset.js` with the following: +### Understanding the build system + +Addons built in the Storybook ecosystem rely on [tsup](https://tsup.egoist.dev/), a fast, zero-config bundler powered by [esbuild](https://esbuild.github.io/) to transpile your addon's code into modern JavaScript that can run in the browser. Out of the box, the Addon Kit comes with a pre-configured `tsup` configuration file that you can use to customize the build process of your addon. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/my-addon-preset-implementation.js.mdx', + 'common/storybook-addon-toolkit-tsup-config.ts.mdx', ]} /> <!-- prettier-ignore-end --> -Presets are the way addons hook into Storybook. Among other tasks they allow you to: - -- Add to [Storybook's UI](#add-a-panel) -- Add to the [preview iframe](./writing-presets.md#preview-entries) -- Modify [babel](./writing-presets.md#babel) and [webpack settings](./writing-presets.md#webpack) +When the build scripts run, it will look for the configuration file and pre-bundle the addon's code based on the configuration provided. However, there are a few properties that are worth referencing: -For this example, we'll modify Storybook's UI. +- **entry**: Configures the files to be processed by the bundler. It can be extended to include additional files using a regex pattern. +- **format**: Enables the generation of multiple output formats. In this case, we're generating a CommonJS and an ES Module version of our addon. +- **dts**: Auto-generates type definitions for our addon. +- **platform**: Specifies the target platform for our addon. In this case, we're targeting the browser. It can be set to `node` for Node.js environments or `neutral` for universal modules. -### Add a panel +## Register the addon -Now let’s add a panel to Storybook. Inside the `src` directory, create a new file called `manager.js` and add the following: +By default, code for the UI-based addons is located in one of the following files, depending on the type of addon built: **`src/Tool.tsx`**, **`src/Panel.tsx`**, or **`src/Tab.tsx`**. Since we're building a toolbar addon, we can safely remove the `Panel` and `Tab` files and update the remaining file to the following: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/my-addon-initial-panel-state.js.mdx', + 'common/storybook-addon-tool-initial-setup.ts.mdx', ]} /> <!-- prettier-ignore-end --> -<div class="aside"> -💡 Make sure to include the <code>key</code> when you register the addon. It will prevent any issues when the addon renders. -</div> +Going through the code blocks in sequence: + +```ts +import { useGlobals, useStorybookApi } from '@storybook/manager-api'; -Going over the code snippet in more detail. When Storybook starts up: +import { Icons, IconButton } from '@storybook/components'; +``` -1. It [registers](./addons-api.md#addonsregister) the addon -2. [Adds](./addons-api.md#addonsadd) a new `panel` titled `My Addon` to the UI -3. When selected, the `panel` renders the static `div` content +The [`useGlobals`](./addons-api.md#useglobals) and [`useStorybookApi`](./addons-api.md#usestorybookapi) hooks from the `manager-api` package are used to access the Storybook's APIs, allowing users to interact with the addon, such as enabling or disabling it. The `Icons` and `IconButtons` components from the [`@storybook/components`](https://www.npmjs.com/package/@storybook/components) package render the icons and buttons in the toolbar. + +```ts +export const Tool = memo(function MyAddonSelector() { + const [globals, updateGlobals] = useGlobals(); + const api = useStorybookApi(); + + const isActive = [true, 'true'].includes(globals[PARAM_KEY]); + + const toggleMyTool = useCallback(() => { + updateGlobals({ + [PARAM_KEY]: !isActive, + }); + }, [isActive]); + + useEffect(() => { + api.setAddonShortcut(ADDON_ID, { + label: 'Toggle Addon [8]', + defaultShortcut: ['8'], + actionName: 'myaddon', + showInMenu: false, + action: toggleMyTool, + }); + }, [toggleMyTool, api]); + + return ( + <IconButton + key={TOOL_ID} + active={isActive} + title="Apply outlines to the preview" + onClick={toggleMyTool} + > + <Icons icon="lightning" /> + </IconButton> + ); +}); +``` -### Register the addon +The `Tool` component is the entry point of the addon. It renders the UI elements in the toolbar, registers a keyboard shortcut, and handles the logic to enable and disable the addon. -Finally, let’s hook it all up. Change `.storybook/main.js` to the following: +Moving onto the manager, here we register the addon with Storybook using a unique name and identifier. Since we've removed the `Panel` and `Tab` files, we'll need to adjust the file to only reference the addon we're building. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/my-addon-storybook-registration.js.mdx', + 'common/storybook-addon-manager-initial-state.ts.mdx', ]} /> <!-- prettier-ignore-end --> -<div class="aside"> -💡 When you register a Storybook addon, it will look for either <code>register.js</code> or <code>preset.js</code> as the entry points. -</div> +Notice the `match` property. It allows you to control the view mode where the addon is visible. If you only want to show it in a single mode, you must adjust the property to match the specific mode you aim for. In this case, it will be available in both story and documentation. -Run `yarn storybook` and you should see something similar to: +Run the `start` script to build and start Storybook and verify that the addon is registered correctly and showing in the UI. -![Storybook addon initial state](./addon-initial-state.png) +![Addon registered in the toolbar](./storybook-addon-initial-state.png) -### Display story parameter +### Style the addon -Next, let’s replace the `MyPanel` component from above to show the parameter. +In Storybook, applying styles for addons is considered a side-effect. Therefore, we'll need to make some changes to our addon to allow it to use the styles when it is active and remove them when it's disabled. We're going to rely on two of Storybook's features to handle this: [decorators](../writing-stories/decorators.md) and [globals](../essentials/toolbars-and-globals.md#globals). To handle the CSS logic, we must include some helper functions to inject and remove the stylesheets from the DOM. Start by creating the helper file with the following content: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-addon-change-panel.js.mdx', + 'common/storybook-addon-css-helpers.ts.mdx', ]} /> <!-- prettier-ignore-end --> -The new version is made smarter by [`useParameter`](./addons-api.md#useparameter), which is a [React hook](https://reactjs.org/docs/hooks-intro.html) that updates the parameter value and re-renders the panel every time the story changes. +Next, create the file with the styles we want to inject with the following content: + +<!-- prettier-ignore-start --> -The [addon API](./addons-api.md) provides hooks like this, so all of that communication can happen behind the scenes. That means you can focus on your addon's functionality. +<CodeSnippets + paths={[ + 'common/storybook-addon-css-example.ts.mdx', + ]} +/> -### Using the addon with a story +<!-- prettier-ignore-end --> -When Storybook was initialized, it provided a small set of example stories. Change your `Button.stories.js` to the following: +Since the addon can be active in both the story and documentation modes, the DOM node for Storybook's preview `iframe` is different in these two modes. In fact, Storybook renders multiple story previews on one page when in documentation mode. Therefore, we'll need to choose the correct selector for the DOM node where the styles will be injected and ensure the CSS is scoped to that particular selector. That mechanism is provided as an example within the `src/withGlobals.ts` file, which we'll use to connect the styling and helper functions to the addon logic. Update the file to the following: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'react/button-story-with-addon-example.js.mdx', - 'react/button-story-with-addon-example.ts.mdx', - 'react/button-story-with-addon-example.ts.mdx', - 'vue/button-story-with-addon-example.js.mdx', - 'vue/button-story-with-addon-example.ts.mdx', - 'angular/button-story-with-addon-example.ts.mdx', - 'svelte/button-story-with-addon-example.js.mdx', - 'web-components/button-story-with-addon-example.js.mdx', - 'web-components/button-story-with-addon-example.ts.mdx', - 'solid/button-story-with-addon-example.js.mdx', - 'solid/button-story-with-addon-example.ts.mdx', + 'common/storybook-addon-use-global.ts.mdx', ]} - usesCsf3 - csf2Path="addons/writing-addons#snippet-button-story-with-addon-example" /> <!-- prettier-ignore-end --> -After applying the changes to the story, the Storybook UI will show the following: +## Packaging and publishing -<video autoPlay muted playsInline loop> - <source - src="addon-final-stage-optimized.mp4" - type="video/mp4" - /> -</video> +Storybook addons, similar to most packages in the JavaScript ecosystem, are distributed as NPM packages. However, they have specific criteria that need to be met to be published to NPM and crawled by the integration catalog: + +1. Have a `dist` folder with the transpiled code. +2. A `package.json` file declaring: + - Peer dependencies + - Module-related information + - Integration catalog metadata + +### Module Metadata + +The first category of metadata is related to the addon itself. This includes the entry for the module and which files to include when the addon is published. And all the peer-dependencies of the addon (e.g., `react`,`react-dom`, and Storybook's related APIs). + +```json +{ + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + }, + "./manager": { + "require": "./dist/manager.js", + "import": "./dist/manager.mjs", + "types": "./dist/manager.d.ts" + }, + "./preview": { + "require": "./dist/preview.js", + "import": "./dist/preview.mjs", + "types": "./dist/preview.d.ts" + }, + "./package.json": "./package.json" + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": ["dist/**/*", "README.md", "*.js", "*.d.ts"], + "peerDependencies": { + "@storybook/blocks": "^7.0.0", + "@storybook/components": "^7.0.0", + "@storybook/core-events": "^7.0.0", + "@storybook/manager-api": "^7.0.0", + "@storybook/preview-api": "^7.0.0", + "@storybook/theming": "^7.0.0", + "@storybook/types": "^7.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } +} +``` + +#### Why peer-dependencies? + +A standard practice in the JavaScript ecosystem ensuring compatibility between modules or packages that are meant to work together, often in a plugin or extension scenario. Peer-dependencies are dependencies that are not bundled with the addon but are expected to be installed by the consumer of the addon. When a module relies on a specific version of another module, it might assume certain features, APIs, or behavior provided by that dependency. By specifying a peer dependency, the module can indicate its compatibility requirements and avoid potential conflicts or unexpected behavior due to incompatible versions. + +### Integration Catalog Metadata + +The second metadata category is related to the [integration catalog](https://storybook.js.org/integrations). Most of this information is already pre-configured by the Addon Kit. However, items like the display name, icon, and frameworks must be configured via the `storybook` property to be displayed in the catalog. + +```json +{ + "name": "my-storybook-addon", + "version": "1.0.0", + "description": "My first storybook addon", + "author": "Your Name", + "storybook": { + "displayName": "My Storybook Addon", + "unsupportedFrameworks": ["react-native"], + "icon": "https://yoursite.com/link-to-your-icon.png" + }, + "keywords": ["storybook-addons", "appearance", "style", "css", "layout", "debug"] +} +``` + +<div class="aside"> -### Root level preset.js +ℹ️ The `storybook` configuration element includes additional properties that help customize the addon's searchability and indexing. For more information, see the [Integration catalog documentation](./integration-catalog.md). -Before publishing the addon, we'll need to make one last change. In the root directory of the addon, create a new file called `preset.js` and add the following: +</div> + +One essential item to note is the `keywords` property as it maps to the catalog's tag system. Adding the `storybook-addons` ensures that the addon is discoverable in the catalog when searching for addons. The remaining keywords help with the searchability and categorization of the addon. + +### Publishing to NPM + +Once you're ready to publish your addon to NPM, the Addon Kit comes pre-configured with the [Auto](https://github.com/intuit/auto) package for release management. It generates a changelog and uploads the package to NPM and GitHub automatically. Therefore, you need to configure access to both. + +1. Authenticate using [npm adduser](https://docs.npmjs.com/cli/v9/commands/npm-adduser) +2. Generate a [access token](https://docs.npmjs.com/creating-and-viewing-access-tokens#creating-access-tokens) with both `read` and `publish` permissions. +3. Create a [personal access token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) with `repo` and `workflow` scoped permissions. +4. Create a `.env` file in the root of your project and add the following: + +```plaintext +GH_TOKEN=value_you_just_got_from_github +NPM_TOKEN=value_you_just_got_from_npm +``` + +Next, run the following command to create labels on GitHub. You'll use these labels to categorize changes to the package. + +```shell +npx auto create-labels +``` + +Finally, run the following command to create a release for your addon. This will build and package the addon code, bump the version, push the release into GitHub and npm, and generate a changelog. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/my-addon-root-level-preset.js.mdx', + 'common/storybook-addon-release.yarn.js.mdx', + 'common/storybook-addon-release.npm.js.mdx', + 'common/storybook-addon-release.pnpm.js.mdx', ]} /> <!-- prettier-ignore-end --> -This auto-registers the addon without any additional configuration from the user. Storybook looks for either a `preset.js` or a `manager.js` file located at the root level. - -### Packaging and publishing - -Now that you've seen how to create a bare-bones addon let's see how to share it with the community. Before we begin, make sure your addon meets the following requirements: - -- `package.json` file with metadata about the addon -- Peer dependencies of `react` and `@storybook/addons` -- `preset.js` file at the root level written as an ES5 module -- `src` directory containing the ES6 addon code -- `dist` directory containing transpiled ES5 code on publish -- [GitHub](https://github.com/) account to host your code -- [NPM](https://www.npmjs.com/) account to publish the addon - -Reference the [storybook-addon-outline](https://www.npmjs.com/package/storybook-addon-outline) to see a project that meets these requirements. - -Learn how to [add to the addon catalog](../addons/integration-catalog.md#addons). +### CI automation -### More guides and tutorials +By default, the Addon Kit comes pre-configured with a GitHub Actions workflow, enabling you to automate the release management process. This ensures that the package is always up to date with the latest changes and that the changelog is updated accordingly. However, you'll need additional configuration to use your NPM and GitHub tokens to publish the package successfully. In your repository, click the **Settings** tab, then the **Secrets and variables** dropdown, followed by the **Actions** item. You should see the following screen: -In the previous example, we introduced the structure of an addon but barely scratched the surface of what addons can do. +![GitHub secrets page](./github-secrets-screen.png) -To dive deeper, we recommend Storybook's [creating an addon](https://storybook.js.org/tutorials/create-an-addon/) tutorial. It’s an excellent walkthrough covering the same ground as the above introduction but goes further and leads you through the entire process of creating a realistic addon. +Then, click the **New repository secret**, name it `NPM_TOKEN`, and paste the token you generated earlier. Whenever you merge a pull request to the default branch, the workflow will run and publish a new release, automatically incrementing the version number and updating the changelog. -### Addon kit +## Learn more about the Storybook addon ecosystem -To help you jumpstart the addon development, the Storybook maintainers created an [`addon-kit`](https://github.com/storybookjs/addon-kit), use it to bootstrap your next addon. +- [Types of addons](./addon-types.md) for other types of addons +- Writing addons for the basics of addon development +- [Presets](./writing-presets.md) for preset development +- [Integration catalog](./integration-catalog.md) for requirements and available recipes +- [API reference](./addons-api.md) to learn about the available APIs diff --git a/docs/addons/writing-presets.md b/docs/addons/writing-presets.md index 4a8eca84a871..57d243ac74b3 100644 --- a/docs/addons/writing-presets.md +++ b/docs/addons/writing-presets.md @@ -2,237 +2,201 @@ title: 'Write a preset addon' --- -[Storybook preset addons](./addon-types.md#preset-addons) are grouped collections of `babel`, `webpack`, and `addons` configurations that support specific use cases in Storybook, such as TypeScript or MDX support. +Storybook presets are pre-configured settings or configurations that enable developers quickly set up and customize their environment with a specific set of features, functionalities, or integrations. -This doc covers the [presets API](#presets-api) and how to use the presets mechanism for [advanced configuration](#advanced-configuration). +## How presets work -## Presets API +Preset addons allow developers to compose various configuration options and plugins via APIs to integrate with Storybook and customize its behavior and functionality. Typically, presets are separated into two files, each with its specific role. -A preset is a set of hooks that are called by Storybook on initialization and can override configurations for `babel`, `webpack`, `addons`, and `entries`. +### Local presets -Each configuration has a similar signature, accepting a base configuration object and options, as in this Webpack example: +This type of preset allows you to encapsulate and organize configurations specific to the addon, including [builder](../builders/overview.md) support, [Babel](https://babeljs.io/), or third-party integrations. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-webpack-preset-config.js.mdx', + 'common/storybook-addons-local-preset.js.mdx', + 'common/storybook-addons-local-preset.ts.mdx', ]} /> <!-- prettier-ignore-end --> -### Babel - -The babel functions `babel` and `babelDefault` all configure babel in different ways. - -All functions take a [Babel configuration object](https://babeljs.io/docs/en/configuration) as their argument and can modify it or return a new object. +### Root-level presets -For example, Storybook's Mihtril support uses plugins internally and here's how it configures babel: +This type of preset is user-facing and responsible for registering the addon without any additional configuration from the user by bundling Storybook-related features (e.g., [parameters](../writing-stories/parameters.md)) via the [`previewAnnotations`](../api/main-config-preview-annotations.md) and UI related features (e.g., addons) via the `managerEntries` API. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-babel-configuration-example.ts.mdx', + 'common/storybook-addons-root-preset.js.mdx', ]} /> <!-- prettier-ignore-end --> -- `babel` is applied to the preview config, after it has been initialized by storybook -- `babelDefault` is applied to the preview config before any user presets have been applied - -### Webpack +## Presets API -The Webpack functions `webpack`, `webpackFinal`, and `managerWebpack` configure Webpack. +When writing a preset, you can access a select set of APIs to interact with the Storybook environment, including the supported builders (e.g., Webpack, Vite), the Storybook configuration, and UI. Below are the available APIs you can use when writing a preset addon. -All functions take a [webpack4 configuration object](https://webpack.js.org/configuration/). +### Babel -For example, here is how Storybook automatically adopts `create-react-app`'s configuration if it's installed, where `applyCRAWebpackConfig` is a set of smart heuristics for modifying the input config. +To customize Storybook's Babel configuration and add support for additional features, you can use the [`babelDefault`](../api/main-config-babel-default.md) API. It will apply the provided configuration ahead of any other user presets, which can be further customized by the end user via the [`babel`](../api/main-config-babel.md) configuration option. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-webpackfinal-example.js.mdx', + 'common/storybook-addons-preset-babelDefault.js.mdx', + 'common/storybook-addons-preset-babelDefault.ts.mdx', ]} /> <!-- prettier-ignore-end --> -- `webpack` is applied to the preview config after it has been initialized by Storybook -- `webpackFinal` is applied to the preview config after all user presets have been applied -- `managerWebpack` is applied to the manager config - -As of Storybook 6.3, Storybook can run with either `webpack4` or `webpack5` builder. If your addon needs to know which version of Webpack it's running inside, the version and the actual Webpack instance itself are both available inside your preset: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-main-versioned-webpack.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> +### Builders -### Manager entries +By default, Storybook provides support for the leading industry builders, including [Webpack](../builders/webpack.md) and [Vite](../builders/vite.md). If you need additional features for any of these builders, you can use APIs to extend the builder configuration based on your specific needs. -The addon config `managerEntries` allows you to add addons to Storybook from within a preset. For addons that require custom Webpack/Babel configuration, it is easier to install the preset, and it will take care of everything. +#### Vite -For example, the Storysource preset contains the following code: +If you are creating a preset and want to include Vite support, the `viteFinal` API can be used to modify the default configuration and enable additional features. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-storysource-manager-entries.js.mdx', + 'common/storybook-addons-preset-viteFinal.js.mdx', + 'common/storybook-addons-preset-viteFinal.ts.mdx', ]} /> <!-- prettier-ignore-end --> -This is equivalent to [registering the addon manually](../get-started/browse-stories.md#addons) in [`main.js`](../configure/overview.md#configure-story-rendering): +#### Webpack + +To customize the Webpack configuration in Storybook to add support for additional file types, apply specific loaders, configure plugins, or make any other necessary modifications, you can use the `webpackFinal` API. Once invoked, it will extend the default Webpack configuration with the provided configuration. An example of this would be: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-use-manager-entries.js.mdx', + 'common/storybook-addons-preset-webpackFinal.js.mdx', + 'common/storybook-addons-preset-webpackFinal.ts.mdx', ]} /> <!-- prettier-ignore-end --> -### Preview entries - -The addon `config` function allows you to add extra preview configuration from within a preset, for example to add parameters or decorators from an addon. +### ManagerEntries -For example, the Backgrounds preset contains the following code: +If you're writing a preset that loads third-party addons, which you may not have control over, but require access to specific features or additional configuration, you can use the `managerEntries` API. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-backgrounds-preset-config.js.mdx', + 'common/storybook-addons-root-preset-manager-entries.js.mdx', ]} /> <!-- prettier-ignore-end --> -Which in turn invokes: +### PreviewAnnotations + +If you need additional settings to render stories for a preset, like [decorators](../writing-stories/decorators.md) or [parameters](../writing-stories/parameters.md), you can use the `previewAnnotations` API. For example, to apply a decorator to all stories, create a preview file that includes the decorator and make it available to the preset as follows: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-backgrounds-addon-default-params.js.mdx', + 'common/storybook-addons-preset-preview.js.mdx', + 'common/storybook-addons-preset.root-preset.js.mdx', + 'common/storybook-addons-preset-preview.ts.mdx', + 'common/storybook-addons-preset.root-preset.ts.mdx', ]} /> <!-- prettier-ignore-end --> -This is equivalent to exporting the `backgrounds` parameter manually in `main.js`. +## Advanced configuration -### Addons - -For users, the name `managerEntries` might be a bit too technical, so instead both users and preset-authors can simply use the `addons` property: +The presets API is designed to be flexible and allow you to customize Storybook to your specific needs, including using presets for more advanced use cases without publishing them. In such cases, you can rely on a private preset. These private presets contain configuration options meant for development purposes and not for end-users. The `.storybook/main.js|ts` file is an example of such a private preset that empowers you to modify the behavior and functionality of Storybook. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-register-storysource-example.js.mdx', + 'common/storybook-main-advanced-config-example.js.mdx', + 'common/storybook-main-advanced-config-example.ts.mdx', ]} /> <!-- prettier-ignore-end --> -The array of values can support both references to other presets and addons that should be included into the manager. - -Storybook will automatically detect whether a reference to an addon is a preset or a manager entry by checking if the package contains a `./preset.js` or `./register.js` (manager entry), falling back to preset if it is unsure. - -If this heuristic is incorrect for an addon you are using, you can explicitly opt-in to an entry being a manager entry using the `managerEntries` key. +### Addons -Here's what it looks when combining presets and manager entries in the `addons` property: +For addon consumers, the [`managerEntries`](#managerentries) API can be too technical, making it difficult to use. To make it easier to add addons to Storybook, the preset API provides the [`addons`](../api/main-config-addons.md) API, which accepts an array of addon names and will automatically load them for you. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-register-presets-managerentry.js.mdx', + 'common/storybook-main-register-example-addon.js.mdx', + 'common/storybook-main-register-example-addon.ts.mdx', ]} /> <!-- prettier-ignore-end --> -### Entries - -Entries are the place to register entry points for the preview. For example, it could be used to make a basic configure-storybook preset that loads all the `*.stories.js` files into SB, instead of forcing people to copy-paste the same thing everywhere. - -## Advanced Configuration - -The presets API is also more powerful than the [standard configuration options](../builders/webpack.md#override-the-default-configuration) available in Storybook, so it's also possible to use presets for more advanced configuration without actually publishing a preset yourself. +The array of values supports references to additional presets and addons that should be included in the manager. Storybook will automatically detect whether the provided value is a preset or an addon and load it accordingly. -For example, some users want to configure the Webpack for Storybook's UI and addons ([issue](https://github.com/storybookjs/storybook/issues/4995)), but this is not possible using [standard Webpack configuration](../builders/webpack.md#configure) (it used to be possible before SB4.1). However, you can achieve this with a private preset. - -If it doesn't exist yet, create a file `.storybook/main.js`: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-main-advanced-config-example.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> +### Entries -### Preview/Manager templates +Entries are the place to register entry points for the preview. This feature can be utilized to create a configure-storybook preset that automatically loads all `*.stories.js` files into Storybook, eliminating the need for users to copy-paste the same configuration repeatedly. -It's also possible to programmatically modify the preview head/body HTML using a preset, similar to the way `preview-head.html`/`preview-body.html` can be used to [configure story rendering](../configure/story-rendering.md). The `previewHead` and `previewBody` functions accept a string, which is the existing head/body, and return a modified string. +### UI configuration -For example, the following snippet adds a style tag to the preview head programmatically: +The Storybook preset API also provides access to the UI configuration, including the `head` and `body` HTML elements of the preview, configured by the [`previewHead`](../api/main-config-preview-head.md) and [`previewBody`](../api/main-config-preview-body.md) APIs. Both allow you to set up Storybook in a way that is similar to using the [`preview-head.html`](../configure/story-rendering.md#adding-to-head) and [`preview-body.html`](../configure/story-rendering.md#adding-to-body) files. These methods accept a string and return a modified version, injecting the provided content into the HTML element. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-preview-head.js.mdx', + 'common/main-config-preview.head.js.mdx', + 'common/main-config-preview.head.ts.mdx', + 'common/main-config-preview.body.js.mdx', + 'common/main-config-preview.body.ts.mdx', ]} /> <!-- prettier-ignore-end --> -Similarly, the `managerHead` can be used to modify the surrounding "manager" UI, analogous to `manager-head.html`. - -Finally, the preview's main page _template_ can also be overridden using the `previewMainTemplate`, which should return a reference to a file containing an `.ejs` template that gets interpolated with some environment variables. For an example, see the [Storybook's default template](https://github.com/storybookjs/storybook/blob/next/code/lib/core-common/templates/preview.ejs). - -## Sharing advanced configuration - -Change your `main.js` file to: +Additionally, if you need to customize the manager (i.e., where Storybook’s search, navigation, toolbars, and addons render), you can use the [`managerHead`](../api/main-config-manager-head.md) to modify the UI, similar to how you would do it with the `manager-head.html` file. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-import-preset-config.js.mdx', + 'common/storybook-custom-manager-head.js.mdx', + 'common/storybook-custom-manager-head.ts.mdx', ]} /> <!-- prettier-ignore-end --> -and extract the configuration to a new file `./storybook/my-preset.js`: +However, if you need, you can also customize the template used by Storybook to render the UI. To do so, you can use the `previewMainTemplate` API and provide a reference for a custom template created as a `ejs` file. For an example of how to do this, see the [template](https://github.com/storybookjs/storybook/blob/next/code/builders/builder-webpack5/templates/preview.ejs) used by the Webpack 5 builder. -<!-- prettier-ignore-start --> +## Troubleshooting -<CodeSnippets - paths={[ - 'common/storybook-preset-full-config-object.js.mdx', - ]} -/> +### Storybook doesn't load files in my preset -<!-- prettier-ignore-end --> +As Storybook relies on [esbuild](https://esbuild.github.io/) instead of Webpack to build the UI, presets that depend on the `managerWebpack` API to configure the manager or load additional files other than CSS or images will no longer work. We recommend removing it from your preset and adjusting your configuration to convert any additional files to JavaScript. -Place your `my-preset.js` file wherever you want, if you want to share it far and wide you'll want to make it its own package. +- [Types of addons](./addon-types.md) for other types of addons +- [Writing addons](./writing-addons.md) for the basics of addon development +- Presets for preset development +- [Integration catalog](./integration-catalog.md) for requirements and available recipes +- [API reference](./addons-api.md) to learn about the available APIs diff --git a/docs/api/arg-types.md b/docs/api/arg-types.md new file mode 100644 index 000000000000..c6ae8fa6e056 --- /dev/null +++ b/docs/api/arg-types.md @@ -0,0 +1,502 @@ +--- +title: 'ArgTypes' +--- + +ArgTypes specify the behavior of [args](../writing-stories/args.md). By specifying the type of an arg, you constrain the values that it can accept and provide information about args that are not explicitly set (i.e., [description](#description)). + +You can also use argTypes to “annotate” args with information used by addons that make use of those args. For instance, to instruct the [controls addon](../essentials/controls.md) to render a color picker, you could specify the `'color'` [control type](#control). + +The most concrete realization of argTypes is the [`ArgTypes` doc block](./doc-block-argtypes.md) ([`Controls`](./doc-block-controls.md) is similar). Each row in the table corresponds to a single argType and the current value of that arg. + +![ArgTypes table](./doc-block-argtypes.png) + +## Automatic argType inference + +If you are using the Storybook [docs](../writing-docs/introduction.md) addon (installed by default as part of [essentials](../essentials/introduction.md)), then Storybook will infer a set of argTypes for each story based on the `component` specified in the [default export](../writing-stories/introduction#default-export) of the CSF file. + +To do so, Storybook uses various static analysis tools depending on your framework. + +| Framework | Static analysis tool | +| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| React | [react-docgen](https://github.com/reactjs/react-docgen) or [react-docgen-typescript](https://github.com/styleguidist/react-docgen-typescript) | +| Vue | [vue-docgen-api](https://github.com/vue-styleguidist/vue-styleguidist/tree/dev/packages/vue-docgen-api) | +| Angular | [compodoc](https://compodoc.app/) | +| WebComponents | [custom-element.json](https://github.com/webcomponents/custom-elements-json) | +| Ember | [YUI doc](https://github.com/ember-learn/ember-cli-addon-docs-yuidoc#documenting-components) | + +The data structure of `argTypes` is designed to match the output of the these tools. Properties specified manually will override what is inferred. + +## Manually specifying argTypes + +For most Storybook projects, argTypes are [automatically inferred](#automatic-argtype-inference) from your components. Any argTypes specified manually will override the inferred values. + +ArgTypes are most often specified at the meta (component) level, in the [default export](../writing-stories/introduction#default-export) of the CSF file: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-in-meta.ts.mdx', + 'web-components/arg-types-in-meta.js.mdx', + 'web-components/arg-types-in-meta.ts.mdx', + 'common/arg-types-in-meta.js.mdx', + 'common/arg-types-in-meta.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +They can apply to all stories when specified at the project (global) level, in the `preview.js|ts` configuration file: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/arg-types-in-preview.js.mdx', + 'common/arg-types-in-preview.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +Or they can apply only to a [specific story](../writing-stories/introduction#defining-stories): + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-in-story.ts.mdx', + 'web-components/arg-types-in-story.js.mdx', + 'web-components/arg-types-in-story.ts.mdx', + 'common/arg-types-in-story.js.mdx', + 'common/arg-types-in-story.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `argTypes` + +Type: + +```ts +{ + [key: string]: { + control?: ControlType | { type: ControlType; /* See below for more */ }; + description?: string; + if?: Conditional; + mapping?: { [key: string]: { [option: string]: any } }; + name?: string; + options?: string[]; + table?: { + category?: string; + defaultValue?: { summary: string; detail?: string }; + subcategory?: string; + type?: { summary?: string; detail?: string }; + }, + type?: SBType | SBScalarType['name']; + } +} +``` + +You configure argTypes using an object with keys matching the name of args. The value of each key is an object with the following properties: + +### `control` + +Type: + +```ts +| ControlType +| { + type: ControlType, + accept?: string; + labels?: { [option: string]: string }; + max?: number; + min?: number; + presetColors?: string[]; + step?: number; + } +``` + +Default: + +1. `'select'`, if [`options`](#options) are specified +2. Else, inferred from [`type`](#type) +3. Else, `'object'` + +Specify the behavior of the [controls addon](../essentials/controls.md) for the arg. If you specify a string, it's used as the [`type`](#controltype) of the control. If you specify an object, you can provide additional configuration. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-control.ts.mdx', + 'web-components/arg-types-control.js.mdx', + 'web-components/arg-types-control.ts.mdx', + 'common/arg-types-control.js.mdx', + 'common/arg-types-control.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +#### `control.type` + +Type: `ControlType | null` + +Default: [Inferred](#automatic-argtype-inference); `'select'`, if [`options`](#options) are specified; falling back to `'object'` + +Specifies the type of control used to change the arg value with the [controls addon](../essentials/controls.md). Here are the available types, `ControlType`, grouped by the type of data they handle: + +| Data type | ControlType | Description | +| -------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **array** | `'object'` | Provides a JSON-based editor to handle the values of the array. Also allows editing in raw mode.<br/> `{ control: 'object' }` | +| **boolean** | `'boolean'` | Provides a toggle for switching between possible states.<br/> `{ control: 'boolean' }` | +| **enum** | `'check'` | Provides a set of stacked checkboxes for selecting multiple options.<br/> `{ control: 'check', options: ['email', 'phone', 'mail'] }` | +| | `'inline-check'` | Provides a set of inlined checkboxes for selecting multiple options.<br/> `{ control: 'inline-check', options: ['email', 'phone', 'mail'] }` | +| | `'radio'` | Provides a set of stacked radio buttons based on the available options.<br/> `{ control: 'radio', options: ['email', 'phone', 'mail'] }` | +| | `'inline-radio'` | Provides a set of inlined radio buttons based on the available options.<br/> `{ control: 'inline-radio', options: ['email', 'phone', 'mail'] }` | +| | `'select'` | Provides a select to choose a single value from the options.<br/> `{ control: 'select', options: [20, 30, 40, 50] }` | +| | `'multi-select'` | Provides a select to choose multiple values from the options.<br/> `{ control: 'multi-select', options: ['USA', 'Canada', 'Mexico'] }` | +| **number** | `'number'` | Provides a numeric input to include the range of all possible values.<br/> `{ control: { type: 'number', min:1, max:30, step: 2 } }` | +| | `'range'` | Provides a range slider to include all possible values.<br/> `{ control: { type: 'range', min: 1, max: 30, step: 3 } }` | +| **object** | `'file'` | Provides a file input that returns an array of URLs. Can be further customized to accept specific file types.<br/> `{ control: { type: 'file', accept: '.png' } }` | +| | `'object'` | Provides a JSON-based editor to handle the object's values. Also allows editing in raw mode.<br/> `{ control: 'object' }` | +| **string** | `'color'` | Provides a color picker to choose color values. Can be additionally configured to include a set of color presets.<br/> `{ control: { type: 'color', presetColors: ['red', 'green']} }` | +| | `'date'` | Provides a datepicker to choose a date.<br /> `{ control: 'date' }` | +| | `'text'` | Provides a freeform text input.<br/> `{ control: 'text' }` | + +<div class="aside"> + +💡 The `date` control will convert the date into a UNIX timestamp when the value changes. It's a known limitation that will be fixed in a future release. If you need to represent the actual date, you'll need to update the story's implementation and convert the value into a date object. + +</div> + +#### `control.accept` + +Type: `string` + +When `type` is `'file'`, you can specify the file types that are accepted. The value should be a string of comma-separated MIME types. + +#### `control.labels` + +Type: `{ [option: string]: string }` + +Map [`options`](#options) to labels. `labels` doesn't have to be exhaustive. If an option is not in the object's keys, it's used verbatim. + +#### `control.max` + +Type: `number` + +When `type` is `'number'` or `'range'`, sets the maximum allowed value. + +#### `control.min` + +Type: `number` + +When `type` is `'number'` or `'range'`, sets the minimum allowed value. + +#### `control.presetColors` + +Type: `string[]` + +When `type` is `'color'`, defines the set of colors that are available in addition to the general color picker. The values in the array should be valid CSS color values. + +#### `control.step` + +Type: `number` + +When `type` is `'number'` or `'range'`, sets the granularity allowed when incrementing/decrementing the value. + +### `description` + +Type: `string` + +Default: [Inferred](#automatic-argtype-inference) + +Describe the arg. (If you intend to describe the type of the arg, you should use [`table.type`](#tabletype), instead.) + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-description.ts.mdx', + 'web-components/arg-types-description.js.mdx', + 'web-components/arg-types-description.ts.mdx', + 'common/arg-types-description.js.mdx', + 'common/arg-types-description.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### `if` + +Type: + +```ts +{ + [predicateType: 'arg' | 'global']: string; + eq?: any; + exists?: boolean; + neq?: any; + truthy?: boolean; +} +``` + +Conditionally render an argType based on the value of another [arg](../writing-stories/args.md) or [global](../essentials/toolbars-and-globals.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-if.ts.mdx', + 'web-components/arg-types-if.js.mdx', + 'web-components/arg-types-if.ts.mdx', + 'common/arg-types-if.js.mdx', + 'common/arg-types-if.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### `mapping` + +Type: `{ [key: string]: { [option: string]: any } }` + +Map [`options`](#options) to values. + +When dealing with non-primitive values, you'll notice that you'll run into some limitations. The most obvious issue is that not every value can be represented as part of the `args` param in the URL, losing the ability to share and deeplink to such a state. Beyond that, complex values such as JSX cannot be synchronized between the manager (e.g., Controls addon) and the preview (your story). + +`mapping` doesn't have to be exhaustive. If the currently selected option is not listed, it's used verbatim. Can be used with [`control.labels`](#labels). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-mapping.ts.mdx', + 'web-components/arg-types-mapping.js.mdx', + 'web-components/arg-types-mapping.ts.mdx', + 'common/arg-types-mapping.js.mdx', + 'common/arg-types-mapping.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### `name` + +Type: `string` + +The `argTypes` object uses the name of the arg as the key. By default, that key is used when displaying the argType in Storybook. You can override the displayed name by specifying a `name` property. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-name.ts.mdx', + 'web-components/arg-types-name.js.mdx', + 'web-components/arg-types-name.ts.mdx', + 'common/arg-types-name.js.mdx', + 'common/arg-types-name.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<div class="aside"> + +💡 Be careful renaming args in this way. Users of the component you're documenting will not be able to use the documented name as a property of your component and the actual name will not displayed. + +For this reason, the `name` property is best used when defining an `argType` that is only used for documentation purposes and not an actual property of the component. For example, when [providing argTypes for each property of an object](https://stackblitz.com/edit/github-uplqzp?file=src/stories/Button.stories.tsx). + +</div> + +### `options` + +Type: `string[]` + +Default: [Inferred](#automatic-argtype-inference) + +If the arg accepts a finite set of values, you can specify them with `options`. If those values are [complex](../essentials/controls#dealing-with-complex-values), like JSX elements, you can use [`mapping`](#mapping) to map them to string values. You can use [`control.labels`](#labels) to provide custom labels for the options. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-options.ts.mdx', + 'web-components/arg-types-options.js.mdx', + 'web-components/arg-types-options.ts.mdx', + 'common/arg-types-options.js.mdx', + 'common/arg-types-options.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### `table` + +Type: + +```ts +{ + category?: string; + defaultValue?: { + detail?: string; + summary: string; + }; + subcategory?: string; + type?: { + detail?: string; + summary: string; + }; +} +``` + +Default: [Inferred](#automatic-argtype-inference) + +Specify how the arg is documented in the [`ArgTypes` doc block](./doc-block-argtypes.md), [`Controls` doc block](./doc-block-controls.md), and [Controls addon panel](../essentials/controls.md). + +<!-- prettier-ignore-start --> + + <CodeSnippets + paths={[ + 'angular/arg-types-table.ts.mdx', + 'web-components/arg-types-table.js.mdx', + 'web-components/arg-types-table.ts.mdx', + 'common/arg-types-table.js.mdx', + 'common/arg-types-table.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +#### `table.category` + +Type: `string` + +Default: [Inferred](#automatic-argtype-inference), in some frameworks + +Display the argType under a category heading, with the label specified by `category`. + +#### `table.defaultValue` + +Type: `{ detail?: string; summary: string }` + +Default: [Inferred](#automatic-argtype-inference) + +The documented default value of the argType. `summary` is typically used for the value itself, while `detail` is used for additional information. + +#### `table.subcategory` + +Type: `string` + +Display the argType under a subcategory heading (which displays under the [`category`] heading), with the label specified by `subcategory`. + +#### `table.type` + +Type: `{ detail?: string; summary: string }` + +Default: Inferred from [`type`](#type) + +The documented type of the argType. `summary` is typically used for the type itself, while `detail` is used for additional information. + +If you need to specify the actual, semantic type, you should use [`type`](#type), instead. + +### `type` + +Type: `'boolean' | 'function' | 'number' | 'string' | 'symbol' | SBType` + +The full type of `SBType` is: + +<details> +<summary>SBType</summary> + +```ts +interface SBBaseType { + required?: boolean; + raw?: string; +} + +type SBScalarType = SBBaseType & { + name: 'boolean' | 'string' | 'number' | 'function' | 'symbol'; +}; + +type SBArrayType = SBBaseType & { + name: 'array'; + value: SBType; +}; +type SBObjectType = SBBaseType & { + name: 'object'; + value: Record<string, SBType>; +}; +type SBEnumType = SBBaseType & { + name: 'enum'; + value: (string | number)[]; +}; +type SBIntersectionType = SBBaseType & { + name: 'intersection'; + value: SBType[]; +}; +type SBUnionType = SBBaseType & { + name: 'union'; + value: SBType[]; +}; +type SBOtherType = SBBaseType & { + name: 'other'; + value: string; +}; + +type SBType = + | SBScalarType + | SBEnumType + | SBArrayType + | SBObjectType + | SBIntersectionType + | SBUnionType + | SBOtherType; +``` + +</details> + +Default: [Inferred](#automatic-argtype-inference) + +Specifies the semantic type of the argType. When an argType is [inferred](#automatic-argtype-inference), the information from the various tools is summarized in this property, which is then used to infer other properties, like [`control`](#control) and [`table.type`](#tabletype). + +If you only need to specify the documented type, you should use [`table.type`](#tabletype), instead. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-type.ts.mdx', + 'web-components/arg-types-type.js.mdx', + 'web-components/arg-types-type.ts.mdx', + 'common/arg-types-type.js.mdx', + 'common/arg-types-type.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### `defaultValue` + +(⛔️ **Deprecated**) + +Type: `any` + +Define the default value of the argType. Deprecated in favor of defining the [`arg`](../writing-stories/args.md) value directly. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/arg-types-default-value.ts.mdx', + 'web-components/arg-types-default-value.js.mdx', + 'web-components/arg-types-default-value.ts.mdx', + 'common/arg-types-default-value.js.mdx', + 'common/arg-types-default-value.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/argtypes.md b/docs/api/argtypes.md deleted file mode 100644 index da1c1927e683..000000000000 --- a/docs/api/argtypes.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: 'ArgTypes' ---- - -ArgTypes are a first-class feature in Storybook for specifying the behaviour of [Args](../writing-stories/args.md). By specifying the type of an arg, you constrain the values that it can take and provide information about args that are not explicitly set (i.e., not required). - -You can also use argTypes to “annotate” args with information used by addons that make use of those args. For instance, to instruct the controls addon to render a color, you could choose a string-valued arg. - -The most concrete realization of argTypes is the [`ArgTypes` doc block](./doc-block-argtypes.md) ([`Controls`](./doc-block-controls.md) is similar). Each row in the table corresponds to a single argType and the current value of that arg. - -![Storybook inferring automatically the argType](./doc-block-argtypes.png) - -## Automatic argType inference - -If you are using the Storybook [docs](../writing-docs/introduction.md) addon (installed by default as part of [essentials](../essentials/introduction.md)), then Storybook will infer a set of argTypes for each story based on the `component` specified in the [default export](./csf.md#default-export) of the CSF file. - -To do so, Storybook uses various static analysis tools depending on your framework. - -- React - - [react-docgen](https://github.com/reactjs/react-docgen) - - [react-docgen-typescript](https://github.com/styleguidist/react-docgen-typescript) -- Vue - - [vue-docgen-api](https://github.com/vue-styleguidist/vue-styleguidist/tree/dev/packages/vue-docgen-api) -- Angular - - [compodoc](https://compodoc.app/) -- WebComponents - - [custom-element.json](https://github.com/webcomponents/custom-elements-json) -- Ember - - [YUI doc](https://github.com/ember-learn/ember-cli-addon-docs-yuidoc#documenting-components) - -The format of the generated argType will look something like this: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-generated-argtypes.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -This ArgTypes data structure, name, type, defaultValue, and description are standard fields in all ArgTypes (analogous to PropTypes in React). The table and control fields are addon-specific annotations. So, for example, the table annotation provides extra information to customize how the label gets rendered, and the control annotation includes additional information for the control editing the property. - -## Manual specification - -If you want more control over the args table or any other aspect of using argTypes, you can overwrite the generated argTypes for your component on a per-arg basis. For instance, with the above-inferred argTypes and the following default export: - -<div class="aside"> -💡 As with other Storybook properties (e.g., args, decorators), you can also override ArgTypes per story basis. -</div> - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'angular/storybook-customize-argtypes.ts.mdx', - 'web-components/storybook-customize-argtypes.js.mdx', - 'web-components/storybook-customize-argtypes.ts.mdx', - 'common/storybook-customize-argtypes.js.mdx', - 'common/storybook-customize-argtypes.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -The `values.description`, `table.type`, and `controls.type` are merged into the defaults extracted by Storybook. The final merged values would be: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-merged-argtypes.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -In particular, this would render a row with a modified description, a type display with a dropdown that shows the detail, and no control. - -### Available properties - -Here's an explanation of each available property: - -| Property | Description | -| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | The name of the property. <br/> `argTypes: { label: { name: 'Something' } }` | -| `type.name` | Sets a type for the property. <br/> `argTypes: { label: { type: { name: 'number' } } }` | -| `type.required` | Sets the property as optional or required. <br/> `argTypes: { label: { type: { required: true } }` | -| `description` | Sets a Markdown description for the property. <br/> `argTypes: { label: { description: 'Something' } }` | -| `table.type.summary` | Provide a short version of the type. <br/> `argTypes: { label: { table: { type: { summary: 'a short summary' } }}}` | -| `table.type.detail` | Provides an extended version of the type. <br/> `argTypes: { label: { table: { type: { detail: 'something' } }}}` | -| `table.defaultValue.summary` | Provide a short version of the default value. <br/> `argTypes: { label: { table: { defaultValue: { summary: 'Hello World' } }}}` | -| `table.defaultValue.detail` | Provides a longer version of the default value. <br/> `argTypes: { label: { table: { defaultValue: { detail: 'Something' } }}}` | -| `control` | Associates a control for the property. <br/> `argTypes: { label: { control: { type: 'text'} } }` <br/>Read the [Essentials documentation](../essentials/controls.md) to learn more about controls. | - -#### Shorthands - -<div class="aside"> - -💡 The `@storybook/addon-docs` provide a shorthand for common tasks: - -- `type: 'number'` is shorthand for type: { name: 'number' } -- `control: 'radio'` is shorthand for control: { type: 'radio' } - -</div> - -### Grouping - -You can also manually specify groups to organize related `argTypes` into categories or even subcategories. Based on the following component implementation: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'react/button-implementation.js.mdx', - 'react/button-implementation.ts.mdx', - 'angular/button-implementation.ts.mdx', - 'vue/button-implementation.2.js.mdx', - 'vue/button-implementation.2.ts.mdx', - 'vue/button-implementation.3.js.mdx', - 'vue/button-implementation.3.ts.mdx', - 'svelte/button-implementation.js.mdx', - 'web-components/button-implementation.js.mdx', - 'web-components/button-implementation.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -You could group similar properties for better organization and structure. Using the table below as a reference: - -| Field | Category | -| :------------------ | :------: | -| **backgroundColor** | Colors | -| **primary** | Colors | -| **label** | Text | -| **onClick** | Events | -| **size** | Sizes | - -Results in the following change into your story and UI. - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'angular/button-story-argtypes-with-categories.ts.mdx', - 'web-components/button-story-argtypes-with-categories.js.mdx', - 'web-components/button-story-argtypes-with-categories.ts.mdx', - 'common/button-story-argtypes-with-categories.js.mdx', - 'common/button-story-argtypes-with-categories.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -![button story with args grouped into categories](./button-args-grouped-categories.png) - -You can also extend the formula above and introduce subcategories, allowing better structuring and organization. Using the table below as a reference leads to the following change to your story and UI: - -| Field | Category | Subcategory | -| :------------------ | :------: | :-------------: | -| **backgroundColor** | Colors | Button colors | -| **primary** | Colors | Button style | -| **label** | Text | Button contents | -| **onClick** | Events | Button Events | -| **size** | Sizes | | - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'angular/button-story-argtypes-with-subcategories.ts.mdx', - 'web-components/button-story-argtypes-with-subcategories.js.mdx', - 'web-components/button-story-argtypes-with-subcategories.ts.mdx', - 'common/button-story-argtypes-with-subcategories.js.mdx', - 'common/button-story-argtypes-with-subcategories.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -![button story with args grouped into categories](./button-args-grouped-subcategories.png) - -#### Global `argTypes` - -You can also define arg types at the global level; they will apply to every component's stories unless you overwrite them. To do so, export the `argTypes` key in your `preview.js`: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/button-story-project-args-theme.js.mdx', - 'common/button-story-project-args-theme.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -<div class="aside"> -💡 If you define a global arg type for a story that does not have that arg (e.g. if there is no corresponding global arg definition), then the arg type will have no effect. -</div> - -#### Using argTypes in addons - -If you want to access the argTypes of the current component inside an addon, you can use the `useArgTypes` hook from the `@storybook/manager-api` package: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-argtypes-with-addon.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> diff --git a/docs/api/csf.md b/docs/api/csf.md index 8f517ab96c34..76388000ed3e 100644 --- a/docs/api/csf.md +++ b/docs/api/csf.md @@ -8,13 +8,13 @@ Component Story Format (CSF) is the recommended way to [write stories](../writin <div class="aside"> -💡 If you are writing stories in the older `storiesOf()` syntax, you can find documentation in an [advanced README](../../lib/preview-api/docs/storiesOf.md). +💡 If you are writing stories in the older `storiesOf()` syntax, you can find documentation in an [advanced README](https://github.com/storybookjs/storybook/blob/next/code/lib/preview-api/docs/storiesOf.md). </div> In CSF, stories and component metadata are defined as ES Modules. Every component story file consists of a required [default export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export#Using_the_default_export) and one or more [named exports](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export). -CSF is supported in all frameworks except React Native, where you should use the [storiesOf API](../../lib/preview-api/docs/storiesOf.md) instead. +CSF is supported in all frameworks except React Native, where you should use the [storiesOf API](https://github.com/storybookjs/storybook/blob/next/code/lib/preview-api/docs/storiesOf.md) instead. ## Default export diff --git a/docs/api/doc-block-argtypes.md b/docs/api/doc-block-argtypes.md index a7aaf4775844..7ee304217ce5 100644 --- a/docs/api/doc-block-argtypes.md +++ b/docs/api/doc-block-argtypes.md @@ -2,6 +2,8 @@ title: 'ArgTypes' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's ArgTypes Doc Block" params='start=232' /> + The `ArgTypes` block can be used to show a static table of [arg types](./argtypes.md) for a given component, as a way to document its interface. <div class="aside"> diff --git a/docs/api/doc-block-canvas.md b/docs/api/doc-block-canvas.md index ec479efe3f93..8c27490bacb8 100644 --- a/docs/api/doc-block-canvas.md +++ b/docs/api/doc-block-canvas.md @@ -2,6 +2,8 @@ title: 'Canvas' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Canvas Doc Block" params='start=148' /> + The `Canvas` block is a wrapper around a [`Story`](./doc-block-story.md), featuring a toolbar that allows you to interact with its content while automatically providing the required [`Source`](./doc-block-source.md) snippets. ![Screenshot of Canvas block](./doc-block-canvas.png) @@ -202,37 +204,49 @@ Default: `parameters.docs.canvas.withToolbar` Determines whether to render a toolbar containing tools to interact with the story. -### `children` (deprecated) +### `children` + +(⛔️ **Deprecated**) Type: `React.ReactNode` Expects only [Story](./doc-block-story.md) children. Reference the story with the `of` prop instead. -### `columns` (deprecated) +### `columns` + +(⛔️ **Deprecated**) Type: `number` Splits the stories based on the number of defined columns. Multiple stories are not supported. -### `isColumn` (deprecated) +### `isColumn` + +(⛔️ **Deprecated**) Type: `boolean` Displays the stories one above the other. Multiple stories are not supported. -### `mdxSource` (deprecated) +### `mdxSource` + +(⛔️ **Deprecated**) Type: `string` Provides source to display. Use [`source.code`](#source) instead. -### `withSource` (deprecated) +### `withSource` + +(⛔️ **Deprecated**) Type: `'open' | 'closed' | 'none'` Controls the source code block visibility. Use [`sourceState`](#sourcestate) instead. -### `withToolbar` (deprecated) +### `withToolbar` + +(⛔️ **Deprecated**) Type: `boolean` diff --git a/docs/api/doc-block-colorpalette.md b/docs/api/doc-block-colorpalette.md index 62dd565cf884..3229612173c3 100644 --- a/docs/api/doc-block-colorpalette.md +++ b/docs/api/doc-block-colorpalette.md @@ -66,19 +66,25 @@ import { ColorItem } from '@storybook/blocks'; `ColorItem` is configured with the following props: -### `colors` (required) +### `colors` + +(**Required**) Type: `string[] | { [key: string]: string }` Provides the list of colors to be displayed. Accepts any valid CSS color format (hex, RGB, HSL, etc.). When an object is provided, the keys will be displayed above the values. -### `subtitle` (required) +### `subtitle` + +(**Required**) Type: `string` Provides an additional description of the color. -### `title` (required) +### `title` + +(**Required**) Type: `string` diff --git a/docs/api/doc-block-controls.md b/docs/api/doc-block-controls.md index e9824ee7e9d8..835384203a5c 100644 --- a/docs/api/doc-block-controls.md +++ b/docs/api/doc-block-controls.md @@ -2,6 +2,8 @@ title: 'Controls' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Controls Doc Block" params='start=240' /> + The `Controls` block can be used to show a dynamic table of args for a given story, as a way to document its interface, and to allow you to change the args for a (separately) rendered story (via the [`Story`](./doc-block-story.md) or [`Canvas`](./doc-block-canvas.md) blocks). <div class="aside"> @@ -10,6 +12,12 @@ The `Controls` block can be used to show a dynamic table of args for a given sto </div> +<div class="aside"> + +⚠️ The Controls doc block will only have functioning UI controls if you have also installed and registered [`@storybook/addon-controls`](../essentials/controls.md) (included in [`@storybook/addon-essentials`](../essentials/introduction.md)). + +</div> + ![Screenshot of Controls block](./doc-block-controls.png) <!-- prettier-ignore-start --> @@ -66,6 +74,12 @@ The example above applied the parameter at the [component](../writing-stories/pa </details> +<div class="aside"> + +💡 This API configures Controls blocks used within docs pages. To configure the Controls addon panel, see the [Controls addon docs](../essentials/controls.md). To configure individual controls, you can specify [argTypes](./arg-types.md#control) for each. + +</div> + ### `exclude` Type: `string[] | RegExp` diff --git a/docs/api/doc-block-description.md b/docs/api/doc-block-description.md index 4a8a99303888..1c188a239349 100644 --- a/docs/api/doc-block-description.md +++ b/docs/api/doc-block-description.md @@ -2,6 +2,8 @@ title: 'Description' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Description Doc Block" params='start=84' /> + The `Description` block displays the description for a component, story, or meta, obtained from their respective JSDoc comments. ![Screenshot of Description block](./doc-block-title-subtitle-description.png) @@ -35,19 +37,25 @@ Specifies where to pull the description from. It can either point to a story or Descriptions are pulled from the JSDoc comments or parameters, and they are rendered as markdown. See [Writing descriptions](#writing-descriptions) for more details. -### `children` (deprecated) +### `children` + +(⛔️ **Deprecated**) Type: `string` See [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#description-block-parametersnotes-and-parametersinfo). -### `markdown` (deprecated) +### `markdown` + +(⛔️ **Deprecated**) Type: `string` See [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#description-block-parametersnotes-and-parametersinfo). -### `type` (deprecated) +### `type` + +(⛔️ **Deprecated**) Type: `'info' | 'notes' | 'docgen' | 'auto'` diff --git a/docs/api/doc-block-icongallery.md b/docs/api/doc-block-icongallery.md index 56f4fa1a12b2..db16ee30ed53 100644 --- a/docs/api/doc-block-icongallery.md +++ b/docs/api/doc-block-icongallery.md @@ -75,14 +75,16 @@ import { IconItem } from '@storybook/blocks'; `IconItem` is configured with the following props: -### `children` - -Type: `React.ReactNode` +### `name` -Provides the icon to be displayed. - -### `name` (required) +(**Required**) Type: `string` Sets the name of the icon. + +### `children` + +Type: `React.ReactNode` + +Provides the icon to be displayed. diff --git a/docs/api/doc-block-primary.md b/docs/api/doc-block-primary.md index d8b1675eff4d..5d124df65b9f 100644 --- a/docs/api/doc-block-primary.md +++ b/docs/api/doc-block-primary.md @@ -2,6 +2,8 @@ title: 'Primary' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Primary Doc Block" params='start=209' /> + The `Primary` block displays the primary (first defined in the stories file) story, in a [`Story`](./doc-block-story.md) block. It is typically rendered immediately under the title in a docs entry. ![Screenshot of Primary block](./doc-block-primary.png) @@ -27,7 +29,9 @@ import { Primary } from '@storybook/blocks'; `Primary` is configured with the following props: -### `name` (deprecated) +### `name` + +(⛔️ **Deprecated**) Type: `string` diff --git a/docs/api/doc-block-source.md b/docs/api/doc-block-source.md index 5ea1615bec55..0595c387a238 100644 --- a/docs/api/doc-block-source.md +++ b/docs/api/doc-block-source.md @@ -2,6 +2,8 @@ title: 'Source' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Source Doc Block" params='start=136' /> + The `Source` block is used to render a snippet of source code directly. ![Screenshot of Source block](./doc-block-source.png) @@ -141,7 +143,7 @@ Default: `parameters.docs.source.type` or `'auto'` Specifies how the source code is rendered. -- **auto**: Same as **dynamic**, if supported by the framework in use; otherwise same as **code** +- **auto**: Same as **dynamic**, if the story's `render` function accepts args inputs and **dynamic** is supported by the framework in use; otherwise same as **code** - **code**: Renders the value of [`code` prop](#code), otherwise renders static story source - **dynamic**: Renders the story source with dynamically updated arg values @@ -151,13 +153,17 @@ Specifies how the source code is rendered. </div> -### `id` (deprecated) +### `id` + +(⛔️ **Deprecated**) Type: `string` Specifies the story id for which to render the source code. Referencing a story this way is no longer supported; use the [`of` prop](#of), instead. -### `ids` (deprecated) +### `ids` + +(⛔️ **Deprecated**) Type: `string[]` diff --git a/docs/api/doc-block-stories.md b/docs/api/doc-block-stories.md index 657e27beab32..75728b54df71 100644 --- a/docs/api/doc-block-stories.md +++ b/docs/api/doc-block-stories.md @@ -2,6 +2,8 @@ title: 'Stories' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Stories Doc Block" params='start=185' /> + The `Stories` block renders the full collection of stories in a stories file. ![Screenshot of Stories block](./doc-block-stories.png) diff --git a/docs/api/doc-block-story.md b/docs/api/doc-block-story.md index bfb97ead8d22..89499df3328c 100644 --- a/docs/api/doc-block-story.md +++ b/docs/api/doc-block-story.md @@ -2,6 +2,8 @@ title: 'Story' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Story Doc Block" params='start=124' /> + Stories (component tests) are Storybook's fundamental building blocks. In Storybook Docs, you can render any of your stories from your CSF files in the context of an MDX file with all annotations (parameters, args, loaders, decorators, play function) applied using the `Story` block. @@ -124,61 +126,83 @@ Type: Story export Specifies which story is rendered by the `Story` block. If no `of` is defined and the MDX file is [attached](./doc-block-meta.md#attached-vs-unattached), the primary (first) story will be rendered. -### `args` (deprecated) +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Story Doc Block configuration" params='start=160' /> + +### `args` + +(⛔️ **Deprecated**) Type: `Partial<TArgs>` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `argTypes` (deprecated) +### `argTypes` + +(⛔️ **Deprecated**) Type: `Partial<ArgTypes<TArgs>>` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `decorators` (deprecated) +### `decorators` + +(⛔️ **Deprecated**) Type: `DecoratorFunction<TRenderer, TArgs>[]` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `loaders` (deprecated) +### `loaders` + +(⛔️ **Deprecated**) Type: `LoaderFunction<TRenderer, TArgs>[]` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `name` (deprecated) +### `name` + +(⛔️ **Deprecated**) Type: `StoryName` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `parameters` (deprecated) +### `parameters` + +(⛔️ **Deprecated**) Type: `Parameters` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `play` (deprecated) +### `play` + +(⛔️ **Deprecated**) Type: `PlayFunction<TRenderer, TArgs>` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `render` (deprecated) +### `render` + +(⛔️ **Deprecated**) Type: `ArgsStoryFn<TRenderer, TArgs>` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `story` (deprecated) +### `story` + +(⛔️ **Deprecated**) Type: `Omit<StoryAnnotations<TRenderer, TArgs>, 'story'>` Defining and configuring stories in MDX is deprecated. See the [Migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files) for details. -### `storyName` (deprecated) +### `storyName` + +(⛔️ **Deprecated**) Type: `StoryName` diff --git a/docs/api/doc-block-subtitle.md b/docs/api/doc-block-subtitle.md index f0d1d5ed5a6c..1104184c9992 100644 --- a/docs/api/doc-block-subtitle.md +++ b/docs/api/doc-block-subtitle.md @@ -2,6 +2,8 @@ title: 'Subtitle' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Subtitle Doc Block" params='start=98' /> + The `Subtitle` block can serve as a secondary heading for your docs entry. ![Screenshot of Subtitle block](./doc-block-title-subtitle-description.png) diff --git a/docs/api/doc-block-title.md b/docs/api/doc-block-title.md index acdc1cee0f90..886d19075386 100644 --- a/docs/api/doc-block-title.md +++ b/docs/api/doc-block-title.md @@ -2,6 +2,8 @@ title: 'Title' --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook's Title Doc Block" params='start=57' /> + The `Title` block serves as the primary heading for your docs entry. It is typically used to provide the component or page name. ![Screenshot of Title block](./doc-block-title-subtitle-description.png) diff --git a/docs/api/doc-block-useof.md b/docs/api/doc-block-useof.md index 44d4521cd1ab..4499478aef5e 100644 --- a/docs/api/doc-block-useof.md +++ b/docs/api/doc-block-useof.md @@ -67,7 +67,9 @@ useOf = ( ## Parameters -### `moduleExportOrType` (required) +### `moduleExportOrType` + +(**Required**) Type: `ModuleExport | 'story' | 'meta' | 'component'` diff --git a/docs/api/main-config-addons.md b/docs/api/main-config-addons.md new file mode 100644 index 000000000000..f340b581bb02 --- /dev/null +++ b/docs/api/main-config-addons.md @@ -0,0 +1,22 @@ +--- +title: 'addons' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(string | { name: string; options?: AddonOptions })[]` + +Registers the [addons](../addons/install-addons.md) loaded by Storybook. + +For each addon's available options, see their respective [documentation](https://storybook.js.org/integrations). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-addons.js.mdx', + 'common/main-config-addons.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-babel-default.md b/docs/api/main-config-babel-default.md new file mode 100644 index 000000000000..e09f66f34147 --- /dev/null +++ b/docs/api/main-config-babel-default.md @@ -0,0 +1,35 @@ +--- +title: 'babelDefault' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(config: Babel.Config, options: Options) => Babel.Config | Promise<Babel.Config>` + +`babelDefault` allows customization of Storybook's [Babel](https://babeljs.io/) setup. It is applied to the preview config before any user presets have been applied, which makes it useful and recommended for [addon authors](../addons/writing-presets.md#babel) so that the end user's [`babel`](./main-config-babel.md) setup can override it. + +<div class="aside"> + +💡 To adjust your Storybook's Babel setup directly—not via an addon—use [`babel`](./main-config-babel.md) instead. + +</div> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-babel-configuration-example.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `Babel.Config` + +See [Babel docs](https://babeljs.io/docs/options). + +## `Options` + +Type: `{ configType?: 'DEVELOPMENT' | 'PRODUCTION' }` + +There are other options that are difficult to document here. Please introspect the type definition for more information. diff --git a/docs/api/main-config-babel.md b/docs/api/main-config-babel.md new file mode 100644 index 000000000000..3cb1865560f0 --- /dev/null +++ b/docs/api/main-config-babel.md @@ -0,0 +1,36 @@ +--- +title: 'babel' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(config: Babel.Config, options: Options) => Babel.Config | Promise<Babel.Config>` + +Customize Storybook's [Babel](https://babeljs.io/) setup. + +<div class="aside"> + +💡 [Addon authors](../addons/writing-presets.md#babel) should use [`babelDefault`](./main-config-babel-default.md) instead, which is applied to the preview config before any user presets have been applied. + +</div> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-babel.js.mdx', + 'common/main-config-babel.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `Babel.Config` + +See [Babel docs](https://babeljs.io/docs/options). + +## `Options` + +Type: `{ configType?: 'DEVELOPMENT' | 'PRODUCTION' }` + +There are other options that are difficult to document here. Please introspect the type definition for more information. diff --git a/docs/api/main-config-config.md b/docs/api/main-config-config.md new file mode 100644 index 000000000000..326f28f9ace7 --- /dev/null +++ b/docs/api/main-config-config.md @@ -0,0 +1,11 @@ +--- +title: 'config' +--- + +(⛔️ **Deprecated**) + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `string[] | ((config: string[], options: Options) => string[] | Promise<string[]>)` + +Add additional scripts to run in the story preview. Deprecated in favor of [`previewAnnotations`](./main-config-preview-annotations.md). diff --git a/docs/api/main-config-core.md b/docs/api/main-config-core.md new file mode 100644 index 000000000000..56c8cf978208 --- /dev/null +++ b/docs/api/main-config-core.md @@ -0,0 +1,207 @@ +--- +title: 'core' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +{ + builder?: string | { name: string; options?: BuilderOptions }; + channelOptions?: ChannelOptions; + crossOriginIsolated?: boolean; + disableProjectJson?: boolean; + disableTelemetry?: boolean; + disableWebpackDefaults?: boolean; + disableWhatsNewNotifications?: boolean; + enableCrashReports?: boolean; + renderer?: RendererName; +} +``` + +Configures Storybook's internal features. + +## `builder` + +Type: + +```ts +| '@storybook/builder-vite' | '@storybook/builder-webpack5' +| { + name: '@storybook/builder-vite' | '@storybook/builder-webpack5'; + options?: BuilderOptions; + } +``` + +Configures Storybook's builder, [Vite](../builders/vite.md) or [Webpack](../builders/webpack.md). + +<div class="aside"> + +💡 With the new [Framework API](./new-frameworks.md), [`framework.options.builder`](./main-config-framework.md#optionsbuilder) is now the preferred way to configure the builder. + +You should only use `core.builder.options` if you need to configure a builder that is not part of a framework. + +</div> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-builder.js.mdx', + 'common/main-config-core-builder.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `channelOptions` + +Type: `ChannelOptions` + +```ts +{ + allowClass: boolean; + allowDate: boolean; + allowFunction: boolean; + allowRegExp: boolean; + allowSymbol: boolean; + allowUndefined: boolean; + lazyEval: boolean; + maxDepth: number; + space: number | undefined; +} +``` + +Configures the channel used by Storybook to communicate between the manager and preview. + +Only two properties are likely to be used: + +### `channelOptions.allowFunction` + +Type: `boolean` + +Default: `false` + +Enables serializing functions across the channel, which can be a security risk. + +### `channelOptions.maxDepth` + +Type: `number` + +Default: `3` + +The maximum depth of nested objects to serialize across the channel. Larger values will be slower. + +## `crossOriginIsolated` + +Type: `boolean` + +Enable CORS headings to run document in a "secure context". See [SharedArrayBuffer security requirements](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements) + +This enables these headers in development-mode: + +- `Cross-Origin-Opener-Policy: same-origin` +- `Cross-Origin-Embedder-Policy: require-corp` + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-cross-origin-isolated.js.mdx', + 'common/main-config-core-cross-origin-isolated.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `disableProjectJson` + +Type: `boolean` + +Disables the generation of `project.json`, a file containing Storybook metadata + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-disable-project-json.js.mdx', + 'common/main-config-core-disable-project-json.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `disableTelemetry` + +Type: `boolean` + +Disables Storybook's [telemetry collection](../configure/telemetry.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-disable-telemetry.js.mdx', + 'common/main-config-core-disable-telemetry.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `disableWebpackDefaults` + +Type: `boolean` + +Disables Storybook's default Webpack configuration. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-disable-webpack-defaults.js.mdx', + 'common/main-config-core-disable-webpack-defaults.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `disableWhatsNewNotifications` + +Type: `boolean` + +Disables the "What's New" notifications in the UI for new Storybook versions and ecosystem updates (e.g., [addons](https://storybook.js.org/integrations/), [content](https://storybook.js.org/blog/), etc.). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-disable-update-notifications.js.mdx', + 'common/main-config-core-disable-update-notifications.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `enableCrashReports` + +Type: `boolean` + +Enable crash reports to be sent to Storybook [telemetry](../configure/telemetry.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-core-enable-crash-reports.js.mdx', + 'common/main-config-core-enable-crash-reports.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `renderer` + +Type: `RendererName` + +<!-- TOOD: Is this used? Should it be documented? --> diff --git a/docs/api/main-config-docs.md b/docs/api/main-config-docs.md new file mode 100644 index 000000000000..adce197cfdab --- /dev/null +++ b/docs/api/main-config-docs.md @@ -0,0 +1,76 @@ +--- +title: 'docs' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +{ + autodocs?: boolean | 'tag'; + defaultName?: string; + docsMode?: boolean; +} +``` + +Configures Storybook's [auto-generated documentation](../writing-docs/autodocs.md). + +## `autoDocs` + +Type: `boolean | 'tag'` + +Default: `'tag'` + +Enables or disables automatic documentation for stories. + +- `true`: Enables it for all stories +- `false`: Disables it for all stories +- `'tag'`: Enables it for stories tagged with `'autodocs'` + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-docs-autodocs.js.mdx', + 'common/main-config-docs-autodocs.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `defaultName` + +Type: `string` + +Default: `'Docs'` + +Name used for generated documentation pages. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-docs-default-name.js.mdx', + 'common/main-config-docs-default-name.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `docsMode` + +Type: `boolean` + +Only show documentation pages in the sidebar (usually set with the `--docs` CLI flag). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-docs-docs-mode.js.mdx', + 'common/main-config-docs-docs-mode.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-env.md b/docs/api/main-config-env.md new file mode 100644 index 000000000000..31f4abcb9ca5 --- /dev/null +++ b/docs/api/main-config-env.md @@ -0,0 +1,20 @@ +--- +title: 'env' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(config: { [key: string]: string }) => { [key: string]: string }` + +Defines custom Storybook [environment variables](../configure/environment-variables.md#using-storybook-configuration). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-env.js.mdx', + 'common/main-config-env.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-features.md b/docs/api/main-config-features.md new file mode 100644 index 000000000000..b556e8323110 --- /dev/null +++ b/docs/api/main-config-features.md @@ -0,0 +1,130 @@ +--- +title: 'features' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +{ + argTypeTargetsV7?: boolean; + buildStoriesJson?: boolean; + legacyDecoratorFileOrder?: boolean; + legacyMdx1?: boolean; + storyStoreV7?: boolean; +} +``` + +Enables Storybook's additional features. + +## `buildStoriesJson` + +Type: `boolean` + +Generates a `stories.json` file to help story loading with the on-demand mode. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-build-stories-json.js.mdx', + 'common/main-config-features-build-stories-json.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `legacyDecoratorFileOrder` + +Type: `boolean` + +Apply decorators from preview.js before decorators from addons or frameworks. [More information](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#changed-decorator-order-between-previewjs-and-addonsframeworks). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-legacy-decorator-file-order.js.mdx', + 'common/main-config-features-legacy-decorator-file-order.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `legacyMdx1` + +Type: `boolean` + +Enables support for MDX version 1 as a fallback. Requires [@storybook/mdx1-csf](https://github.com/storybookjs/mdx1-csf) to be installed. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-legacy-mdx-1.js.mdx', + 'common/main-config-features-legacy-mdx-1.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `storyStoreV7` + +Type: `boolean` + +Default: `true` + +Opts out of [on-demand story loading](#on-demand-story-loading); loads all stories at build time. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-story-store-v7.js.mdx', + 'common/main-config-features-story-store-v7.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `argTypeTargetsV7` + +(⚠️ **Experimental**) + +Type: `boolean` + +Filter args with a "target" on the type from the render function. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-arg-type-targets-v7.js.mdx', + 'common/main-config-features-arg-type-targets-v7.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## On-demand story loading + +As your Storybook grows, it gets challenging to load all of your stories performantly, slowing down the loading times and yielding a large bundle. Out of the box, Storybook loads your stories on demand rather than during boot-up to improve the performance of your Storybook. If you need to load all of your stories during boot-up, you can disable this feature by setting the `storyStoreV7` feature flag to `false` in your configuration as follows: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-features-story-store-v7.js.mdx', + 'common/main-config-features-story-store-v7.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### Known limitations + +Because of the way stories are currently indexed in Storybook, loading stories on demand with `storyStoreV7` has a couple of minor limitations at the moment: + +- [CSF formats](../api/csf.md) from version 1 to version 3 are supported. The `storiesOf` construct is not. +- Custom [`storySort` functions](../writing-stories/naming-components-and-hierarchy.md#sorting-stories) receive more limited arguments. diff --git a/docs/api/main-config-framework.md b/docs/api/main-config-framework.md new file mode 100644 index 000000000000..4e4e563ee3ee --- /dev/null +++ b/docs/api/main-config-framework.md @@ -0,0 +1,59 @@ +--- +title: 'framework' +--- + +(**Required**) + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `FrameworkName | { name: FrameworkName; options?: FrameworkOptions }` + +Configures Storybook based on a set of [framework-specific](../configure/frameworks.md) settings. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-framework.js.mdx', + 'common/main-config-framework.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `name` + +Type: `string` + +For available frameworks and their options, see their respective [documentation](https://github.com/storybookjs/storybook/tree/next/code/frameworks). + +## `options` + +Type: `Record<string, any>` + +While many options are specific to a framework, there are some options that are shared across some frameworks, e.g. those that configure Storybook's [builder](./main-config-core.md#builder). + +### `options.builder` + +Type: `Record<string, any>` + +Configures Storybook's builder, [Vite](../builders/vite.md) or [Webpack](../builders/webpack.md). + +#### `options.builder.useSWC` + +(⚠️ **Experimental**) + +For frameworks made with the [Webpack](../builders/webpack.md) builder, this option allows you to use the [SWC](https://swc.rs/) compiler instead of [Babel](../configure/babel.md). + +When Storybook loads, it will update Webpack's configuration including the required loaders (e.g., [`TerserPlugin`](https://webpack.js.org/plugins/terser-webpack-plugin/), [`babel-loader`](https://webpack.js.org/loaders/babel-loader/)) with SWC equivalents (e.g., [`swc-loader`](https://swc.rs/docs/usage/swc-loader)) for bundling and minification. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-framework-options-builder-use-swc.js.mdx', + 'common/main-config-framework-options-builder-use-swc.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-log-level.md b/docs/api/main-config-log-level.md new file mode 100644 index 000000000000..4d1699bd93c8 --- /dev/null +++ b/docs/api/main-config-log-level.md @@ -0,0 +1,22 @@ +--- +title: 'logLevel' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `'debug' | 'error' | 'info' | 'trace' | 'warn'` + +Default: `'info'` + +Configures Storybook's logs in the browser terminal. Useful for debugging. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-log-level.js.mdx', + 'common/main-config-log-level.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-manager-head.md b/docs/api/main-config-manager-head.md new file mode 100644 index 000000000000..d44eb52f4a83 --- /dev/null +++ b/docs/api/main-config-manager-head.md @@ -0,0 +1,28 @@ +--- +title: 'managerHead' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(head: string) => string` + +Programmatically adjust the manager's `<head>` of your Storybook. For example, load a custom font or add a script. Most often used by [addon authors](../addons/writing-presets.md#ui-configuration). + +<div class="aside"> + +💡 If you don't need to programmatically adjust the manager head, you can add scripts and styles to `manager-head.html` instead. + +</div> + +For example, you can conditionally add scripts or styles, depending on the environment: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-manager-head.js.mdx', + 'common/main-config-manager-head.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-preview-annotations.md b/docs/api/main-config-preview-annotations.md new file mode 100644 index 000000000000..ccea95d9ea8d --- /dev/null +++ b/docs/api/main-config-preview-annotations.md @@ -0,0 +1,26 @@ +--- +title: 'previewAnnotations' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `string[] | ((config: string[], options: Options) => string[] | Promise<string[]>)` + +Add additional scripts to run in the story preview. + +<div class="aside"> + +💡 Mostly used by [frameworks](../contribute/framework.md#previewjs-example). Storybook users and [addon authors](../addons/writing-presets.md) should add scripts to [`preview.js`](../configure/overview.md#configure-story-rendering) instead. + +</div> + +```ts +// @storybook/nextjs framework's src/preset.ts + +import type { StorybookConfig } from './types'; + +export const previewAnnotations: StorybookConfig['previewAnnotations'] = (entry = []) => [ + ...entry, + require.resolve('@storybook/nextjs/preview.js'), +]; +``` diff --git a/docs/api/main-config-preview-body.md b/docs/api/main-config-preview-body.md new file mode 100644 index 000000000000..f35a05a0c4e0 --- /dev/null +++ b/docs/api/main-config-preview-body.md @@ -0,0 +1,28 @@ +--- +title: 'previewBody' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(body: string) => string` + +Programmatically adjust the [preview `<body>`](../configure/story-rendering.md#adding-to-body) of your Storybook. Most often used by [addon authors](../addons/writing-presets.md#ui-configuration). + +<div class="aside"> + +💡 If you don't need to programmatically adjust the preview body, you can add scripts and styles to [`preview-body.html`](../configure/story-rendering.md#adding-to-body) instead. + +</div> + +For example, you can conditionally add scripts or styles, depending on the environment: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-preview-body.js.mdx', + 'common/main-config-preview-body.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-preview-head.md b/docs/api/main-config-preview-head.md new file mode 100644 index 000000000000..af29ce4442f0 --- /dev/null +++ b/docs/api/main-config-preview-head.md @@ -0,0 +1,28 @@ +--- +title: 'previewHead' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(head: string) => string` + +Programmatically adjust the [preview `<head>`](../configure/story-rendering.md#adding-to-head) of your Storybook. Most often used by [addon authors](../addons/writing-presets.md#ui-configuration). + +<div class="aside"> + +💡 If you don't need to programmatically adjust the preview head, you can add scripts and styles to [`preview-head.html`](../configure/story-rendering.md#adding-to-head) instead. + +</div> + +For example, you can conditionally add scripts or styles, depending on the environment: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-preview-head.js.mdx', + 'common/main-config-preview-head.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-refs.md b/docs/api/main-config-refs.md new file mode 100644 index 000000000000..d9d683ec3222 --- /dev/null +++ b/docs/api/main-config-refs.md @@ -0,0 +1,58 @@ +--- +title: 'refs' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +{ [key: string]: + | { title: string; url: string; expanded?: boolean } + | (config: { title: string; url: string; expanded?: boolean }) => { title: string; url: string; expanded?: boolean } + | { disable: boolean } +} +``` + +Configures [Storybook composition](../sharing/storybook-composition.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-refs.js.mdx', + 'common/main-config-refs.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## Using a function + +You can use a function to dynamically configure refs: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-refs-with-function.js.mdx', + 'common/main-config-refs-with-function.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## Disable a ref + +Some package dependencies automatically [compose their Storybook in yours](../sharing/package-composition.md). You can disable this behavior by setting `disable` to `true` for the package name: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-refs-disable.js.mdx', + 'common/main-config-refs-disable.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-static-dirs.md b/docs/api/main-config-static-dirs.md new file mode 100644 index 000000000000..b80e0441bf35 --- /dev/null +++ b/docs/api/main-config-static-dirs.md @@ -0,0 +1,35 @@ +--- +title: 'staticDirs' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(string | { from: string; to: string })[]` + +Sets a list of directories of [static files](../configure/images-and-assets.md#serving-static-files-via-storybook-configuration) to be loaded by Storybook. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-static-dirs.js.mdx', + 'common/main-config-static-dirs.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## With configuration objects + +You can also use a configuration object to define the directories: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-static-dirs-with-object.js.mdx', + 'common/main-config-static-dirs-with-object.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-stories.md b/docs/api/main-config-stories.md new file mode 100644 index 000000000000..9eefa1360565 --- /dev/null +++ b/docs/api/main-config-stories.md @@ -0,0 +1,135 @@ +--- +title: 'stories' +--- + +(**Required**) + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +| (string | StoriesSpecifier)[] +| async (list: (string | StoriesSpecifier)[]) => (string | StoriesSpecifier)[] +``` + +Configures Storybook to load stories from the specified locations. The intention is for you to colocate a story file along with the component it documents: + +``` +• +└── components + ├── Button.ts + └── Button.stories.ts +``` + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-stories.js.mdx', + 'common/main-config-stories.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<div class="aside"> + +💡 If you want to use a different naming convention, you can alter the glob using the syntax supported by [picomatch](https://github.com/micromatch/picomatch#globbing-features). + +Keep in mind that some addons may assume Storybook's default naming convention. + +</div> + +## With an array of globs + +Storybook will load stories from your project as found by this array of globs (pattern matching strings). + +Stories are loaded in the order they are defined in the array. This allows you to control the order in which stories are displayed in the sidebar: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-stories-ordered.js.mdx', + 'common/main-config-stories-ordered.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## With a configuration object + +Additionally, you can customize your Storybook configuration to load your stories based on a configuration object. This object is of the type `StoriesSpecifier`, defined below. + +For example, if you wanted to load your stories from a `packages/components` directory, you could adjust your `stories` configuration field into the following: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-stories-with-object.js.mdx', + 'common/main-config-stories-with-object.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +When Storybook starts, it will look for any file containing the `stories` extension inside the `packages/components` directory and generate the titles for your stories. + +### `StoriesSpecifier` + +Type: + +```ts +{ + directory: string; + files?: string; + titlePrefix?: string; +} +``` + +#### `StoriesSpecifier.directory` + +(**Required**) + +Type: `string` + +Where to start looking for story files, relative to the root of your project. + +#### `StoriesSpecifier.files` + +Type: `string` + +Default: `'**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))'` + +A glob, relative to `StoriesSpecifier.directory` (with no leading `./`), that matches the filenames to load. + +#### `StoriesSpecifier.titlePrefix` + +Type: `string` + +Default: `''` + +When [auto-titling](../configure/sidebar-and-urls.md#csf-30-auto-titles), prefix used when generating the title for your stories. + +## With a custom implementation + +<div class="aside"> + +💡 With [`storyStoreV7`](./main-config-features.md#storystorev7) (the default in Storybook 7), Storybook now statically analyzes the configuration file to improve performance. Loading stories with a custom implementation may de-optimize or break this ability. + +</div> + +You can also adjust your Storybook configuration and implement custom logic to load your stories. For example, suppose you were working on a project that includes a particular pattern that the conventional ways of loading stories could not solve. In that case, you could adjust your configuration as follows: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-stories-with-logic.js.mdx', + 'common/main-config-stories-with-logic.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-typescript.md b/docs/api/main-config-typescript.md new file mode 100644 index 000000000000..425f8703777a --- /dev/null +++ b/docs/api/main-config-typescript.md @@ -0,0 +1,105 @@ +--- +title: 'typescript' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: + +```ts +{ + check?: boolean; + checkOptions?: CheckOptions; + reactDocgen?: 'react-docgen' | 'react-docgen-typescript' | false; + reactDocgenTypescriptOptions?: ReactDocgenTypescriptOptions; + skipBabel?: boolean; +} +``` + +Configures how Storybook handles [TypeScript files](../configure/typescript.md). + +## `check` + +Type: `boolean` + +Optionally run [fork-ts-checker-webpack-plugin](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin). Note that because this uses a Webpack plugin, it is only available when using the [Webpack builder](../builders/webpack.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typescript-check.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `checkOptions` + +Type: `CheckOptions` + +Options to pass to `fork-ts-checker-webpack-plugin`, if [enabled](#check). See [docs for available options](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/v4.1.6/README.md#options). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typescript-check-options.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `reactDocgen` + +Type: `'react-docgen' | 'react-docgen-typescript' | false` + +Default: + +- `false`: if `@storybook/react` is not installed +- `'react-docgen-typescript'`: if `@storybook/react` and `typescript` are installed +- `'react-docgen'`: if `@storybook/react` is installed + +Only available for React Storybook projects. Configure which library, if any, Storybook uses to parse React components, [react-docgen](https://github.com/reactjs/react-docgen) or [react-docgen-typescript](https://github.com/styleguidist/react-docgen-typescript). Set to `false` to disable parsing React components. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typescript-react-docgen.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `reactDocgenTypescriptOptions` + +Type: `ReactDocgenTypescriptOptions` + +Only available for React Storybook projects. Options to pass to react-docgen-typescript-plugin if react-docgen-typescript is enabled. See [docs for available options](https://github.com/hipstersmoothie/react-docgen-typescript-plugin). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typescript-react-docgen-typescript-options.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `skipBabel` + +Type: `boolean` + +Disable parsing of TypeScript files through babel. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typescript-skip-babel.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/api/main-config-vite-final.md b/docs/api/main-config-vite-final.md new file mode 100644 index 000000000000..c21ba01da4b0 --- /dev/null +++ b/docs/api/main-config-vite-final.md @@ -0,0 +1,26 @@ +--- +title: 'viteFinal' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `(config: Vite.InlineConfig, options: Options) => Vite.InlineConfig | Promise<Vite.InlineConfig>` + +Customize Storybook's Vite setup when using the [vite builder](../builders/vite.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-vite-final.js.mdx', + 'common/main-config-vite-final.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `Options` + +Type: `{ configType?: 'DEVELOPMENT' | 'PRODUCTION' }` + +There are other options that are difficult to document here. Please introspect the type definition for more information. diff --git a/docs/api/main-config-webpack-final.md b/docs/api/main-config-webpack-final.md new file mode 100644 index 000000000000..f3725efa982f --- /dev/null +++ b/docs/api/main-config-webpack-final.md @@ -0,0 +1,26 @@ +--- +title: 'webpackFinal' +--- + +Parent: [main.js|ts configuration](./main-config.md) + +Type: `async (config: Config, options: WebpackOptions) => Config` + +Customize Storybook's Webpack setup when using the [webpack builder](../builders/webpack.md). + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-webpack-final.js.mdx', + 'common/main-config-webpack-final.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## `Options` + +Type: `{ configType?: 'DEVELOPMENT' | 'PRODUCTION' }` + +There are other options that are difficult to document here. Please introspect the type definition for more information. diff --git a/docs/api/main-config.md b/docs/api/main-config.md new file mode 100644 index 000000000000..ed4b1b387319 --- /dev/null +++ b/docs/api/main-config.md @@ -0,0 +1,47 @@ +--- +title: 'Main configuration' +--- + +The main configuration defines a Storybook project's behavior, including the location of stories, addons to use, feature flags, and other project-specific settings. + +## `main.js` or `main.ts` + +This configuration is defined in `.storybook/main.js|ts`, which is located relative to the root of your project. + +A typical Storybook configuration file looks like this: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-typical.js.mdx', + 'common/main-config-typical.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## config + +An object to configure Storybook containing the following properties: + +- [`framework`](./main-config-framework.md) (Required) +- [`stories`](./main-config-stories.md) (Required) +- [`addons`](./main-config-addons.md) +- [`babel`](./main-config-babel.md) +- [`babelDefault`](./main-config-babel-default.md) +- [`core`](./main-config-core.md) +- [`docs`](./main-config-docs.md) +- [`env`](./main-config-env.md) +- [`features`](./main-config-features.md) +- [`logLevel`](./main-config-log-level.md) +- [`managerHead`](./main-config-manager-head.md) +- [`previewAnnotations`](./main-config-preview-annotations.md) +- [`previewBody`](./main-config-preview-body.md) +- [`previewHead`](./main-config-preview-head.md) +- [`refs`](./main-config-refs.md) +- [`staticDirs`](./main-config-static-dirs.md) +- [`typescript`](./main-config-typescript.md) +- [`viteFinal`](./main-config-vite-final.md) +- [`webpackFinal`](./main-config-webpack-final.md) +- [`config`](./main-config-config.md) (⛔️ Deprecated) diff --git a/docs/builders/builder-api.md b/docs/builders/builder-api.md index d21444883388..ae71323218a0 100644 --- a/docs/builders/builder-api.md +++ b/docs/builders/builder-api.md @@ -154,7 +154,7 @@ While running in development mode, the builder's development server must be able ### More information -This area is under rapid development, so the documented is still in progress and subject to change. If you are interested in writing your builder, we encourage you to check [webpack](https://github.com/storybookjs/storybook/tree/next/code/lib/builder-webpack5), [Vite](https://github.com/storybookjs/builder-vite), and Modern Web's [dev-server-storybook](https://github.com/modernweb-dev/web/blob/master/packages/dev-server-storybook/src/serve/storybookPlugin.ts) source code. In addition, we have a wonderful contributor community on [Storybook Discord](https://discord.gg/storybook) if you have questions. Ping us in the [#contributing](https://discord.com/channels/486522875931656193/839297503446695956) channel. +This area is under rapid development, so the documented is still in progress and subject to change. If you are interested in writing your builder, we encourage you to check [webpack](https://github.com/storybookjs/storybook/tree/next/code/builders/builder-webpack5), [Vite](https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite), and Modern Web's [dev-server-storybook](https://github.com/modernweb-dev/web/blob/master/packages/dev-server-storybook/src/serve/storybookPlugin.ts) source code. In addition, we have a wonderful contributor community on [Storybook Discord](https://discord.gg/storybook) if you have questions. Ping us in the [#contributing](https://discord.com/channels/486522875931656193/839297503446695956) channel. #### Learn more about builders diff --git a/docs/builders/vite.md b/docs/builders/vite.md index bdc3798bbdbe..bb56004bb49c 100644 --- a/docs/builders/vite.md +++ b/docs/builders/vite.md @@ -60,7 +60,7 @@ You can also override the builder's configuration based on the environment. For <CodeSnippets paths={[ - 'common/storybook-vite-builder-config-env.js.mdx', + 'common/main-config-vite-final.js.mdx', ]} /> diff --git a/docs/builders/webpack.md b/docs/builders/webpack.md index 9d19918812f0..130ac9bd56e1 100644 --- a/docs/builders/webpack.md +++ b/docs/builders/webpack.md @@ -33,8 +33,8 @@ Storybook's Webpack configuration is based on [Webpack 5](https://webpack.js.org <CodeSnippets paths={[ - 'common/storybook-main-add-sass-config.js.mdx', - 'common/storybook-main-add-sass-config.ts.mdx', + 'common/main-config-webpack-final.js.mdx', + 'common/main-config-webpack-final.ts.mdx', ]} /> @@ -128,6 +128,19 @@ Storybook's default Webpack configuration provides support for most project setu <!-- prettier-ignore-end --> +However, if you're working with a framework that provides a default aliasing configuration (e.g., Next.js, Nuxt) and you want to configure Storybook to use the same aliases, you may not need to install any additional packages. Instead, you can extend the default configuration of Storybook to use the same aliases provided by the framework. For example, to set up an alias for the `@` import path, you can add the following to your `.storybook/main.js|ts` file: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-main-ts-module-resolution-atsign-import.js.mdx', + 'common/storybook-main-ts-module-resolution-atsign-import.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + ### Pre-bundled assets do not show in the Storybook UI As Storybook relies on [esbuild](https://esbuild.github.io/) to build its internal manager, support for bundling assets with the `managerWebpack` will no longer have an impact on the Storybook UI. We recommend removing existing `managerWebpack` configuration elements from your Storybook configuration file and bundling assets other than images or CSS into JavaScript beforehand. diff --git a/docs/configure/babel.md b/docs/configure/babel.md index 78f077000c03..b497a28d4a31 100644 --- a/docs/configure/babel.md +++ b/docs/configure/babel.md @@ -6,7 +6,7 @@ As of version 7.0, Storybook now re-uses your project’s Babel configuration to <div class="aside"> -If you're not using Storybook 7, please reference the <LinkWithVersion version="6.5" href="./babel.md">previous documentation</LinkWithVersion> for guidance on configuring your Babel setup. +If you're not using Storybook 7, please reference the [previous documentation](../../../release-6-5/docs/configure/babel.md) for guidance on configuring your Babel setup. </div> @@ -115,6 +115,8 @@ However, when your Storybook refers to files outside of the current project dire ## Troubleshooting +### Babel configuration not working + To troubleshoot your Babel configuration, set the `BABEL_SHOW_CONFIG_FOR` environment variable. For example, to see how Storybook is transpiling your `.storybook/preview.js` file, add the following environment variable: ```sh @@ -130,3 +132,20 @@ When the command finishes running, it will display the available Babel configura </div> For more info, please refer to the [Babel documentation](https://babeljs.io/docs/en/configuration#print-effective-configs). + +### SWC alternative (experimental) + +If you're working with a Webpack-based project, you can opt into replacing Babel with the [SWC](https://swc.rs/) compiler, which can be faster for some projects. To do so, update your [Storybook configuration file](../api/main-config.md) (e.g., `.storybook/main.js|ts`) to enable the experimental `useSWC` option: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/main-config-framework-options-builder-use-swc.js.mdx', + 'common/main-config-framework-options-builder-use-swc.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +See the [`useSWC` API reference](../api/main-config-framework.md#optionsbuilderuseswc) for more information. diff --git a/docs/configure/environment-variables.md b/docs/configure/environment-variables.md index 0ba21727a4cd..4f32cac6c51b 100644 --- a/docs/configure/environment-variables.md +++ b/docs/configure/environment-variables.md @@ -3,7 +3,7 @@ title: 'Environment variables' --- You can use environment variables in Storybook to change its behavior in different “modes”. -If you supply an environment variable prefixed with `STORYBOOK_`, it will be available in `process.env` when using webpack, or `import.meta.env` when using the vite builder: +If you supply an environment variable prefixed with `STORYBOOK_`, it will be available in `process.env` when using Webpack, or `import.meta.env` when using the Vite builder: ```shell STORYBOOK_THEME=red STORYBOOK_DATA_KEY=12345 npm run storybook @@ -17,14 +17,33 @@ STORYBOOK_THEME=red STORYBOOK_DATA_KEY=12345 npm run storybook Then we can access these environment variables anywhere inside our preview JavaScript code like below: +<IfRenderer renderer={['angular', 'ember' ]}> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-read-environment-variables.node-env.js.mdx', + ]} +/> + +</IfRenderer> + +<!-- prettier-ignore-end --> + +<IfRenderer renderer={['html', 'react', 'qwik', 'preact','svelte', 'solid', 'vue', 'web-components' ]}> + <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-read-environment-variables.js.mdx', + 'common/storybook-read-environment-variables.node-env.js.mdx', + 'common/storybook-read-environment-variables.vite-env.js.mdx', ]} /> +</IfRenderer> + <!-- prettier-ignore-end --> You can also access these variables in your custom `<head>`/`<body>` using the substitution `%STORYBOOK_X%`, for example: `%STORYBOOK_THEME%` will become `red`. @@ -49,25 +68,41 @@ Then you can access this environment variable anywhere, even within your stories <CodeSnippets paths={[ - 'react/my-component-with-env-variables.js.mdx', - 'react/my-component-with-env-variables.ts.mdx', - 'vue/my-component-with-env-variables.js.mdx', - 'vue/my-component-with-env-variables.ts.mdx', 'angular/my-component-with-env-variables.ts.mdx', 'web-components/my-component-with-env-variables.js.mdx', 'web-components/my-component-with-env-variables.ts.mdx', - 'svelte/my-component-with-env-variables.js.mdx', - 'solid/my-component-with-env-variables.js.mdx', - 'solid/my-component-with-env-variables.ts.mdx', + 'common/my-component-with-env-variables.js.mdx', + 'common/my-component-with-env-variables.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<IfRenderer renderer={['html', 'react', 'qwik', 'preact','svelte', 'solid', 'vue', 'web-components' ]}> + +#### With Vite + +Out of the box, Storybook provides a [Vite builder](../builders/vite.md), which does not output Node.js globals like `process.env`. To access environment variables in Storybook (e.g., `STORYBOOK_`, `VITE_`), you can use `import.meta.env`. For example: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'web-components/my-component-vite-env-variables.js.mdx', + 'web-components/my-component-vite-env-variables.ts.mdx', + 'common/my-component-vite-env-variables.js.mdx', + 'common/my-component-vite-env-variables.ts.mdx', ]} - usesCsf3 - csf2Path="configure/environment-variables#snippet-my-component-with-env-variables" /> <!-- prettier-ignore-end --> +</IfRenderer> + <div class="aside"> -You can also use specific files for specific modes. Add a <code>.env.development</code> or <code>.env.production</code> to apply different values to your environment variables. + +You can also use specific files for specific modes. Add a `.env.development` or `.env.production` to apply different values to your environment variables. + </div> You can also pass these environment variables when you are [building your Storybook](../sharing/publish-storybook.md) with `build-storybook`. @@ -76,14 +111,14 @@ Then they'll be hardcoded to the static version of your Storybook. ### Using Storybook configuration -Additionally, you can extend your Storybook configuration file (i.e., [`.storybook/main.js`](../configure/overview.md#configure-story-rendering)) and provide a configuration field that you can use to define specific variables (e.g., API URLs). For example: +Additionally, you can extend your Storybook configuration file (i.e., [`.storybook/main.js|.ts`](../configure/overview.md#configure-story-rendering)) and provide a configuration field that you can use to define specific variables (e.g., API URLs). For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-env-field-config.js.mdx', - 'common/storybook-main-env-field-config.ts.mdx', + 'common/main-config-env.js.mdx', + 'common/main-config-env.ts.mdx', ]} /> @@ -122,3 +157,9 @@ The table below lists the available options: <div class="aside"> 💡 By default, Storybook will open a new Chrome window as part of its startup process. If you don't have Chrome installed, make sure to include one of the following options, or set your default browser accordingly. </div> + +## Troubleshooting + +### Environment variables are not working + +If you're trying to use framework-specific environment variables (e.g.,`VUE_APP_`), you may run into issues primarily due to the fact that Storybook and your framework may have specific configurations and may not be able to recognize and use those environment variables. If you run into a similar situation, you may need to adjust your framework configuration to make sure that it can recognize and use those environment variables. For example, if you're working with a Vite-based framework, you can extend the configuration file and enable the [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) option. Other frameworks may require a similar approach. diff --git a/docs/configure/frameworks.md b/docs/configure/frameworks.md index e94faa961a70..80ebc224932e 100644 --- a/docs/configure/frameworks.md +++ b/docs/configure/frameworks.md @@ -29,8 +29,8 @@ Every modern web application has unique requirements and relies on various tools <CodeSnippets paths={[ - 'common/storybook-framework-config-options.js.mdx', - 'common/storybook-framework-config-options.ts.mdx', + 'common/main-config-framework.js.mdx', + 'common/main-config-framework.ts.mdx', ]} /> @@ -52,7 +52,7 @@ Every modern web application has unique requirements and relies on various tools ### NextJS 13 doesn't work with Storybook -The latest release of [NexJS](https://nextjs.org/) introduced breaking changes (e.g., [TurboPack](https://turbo.build/pack), [Server Component](https://nextjs.org/docs/advanced-features/react-18/server-components), [SWC](https://nextjs.org/docs/advanced-features/compiler#why-swc)) that are not yet fully supported by Storybook. The Storybook team is working on adding support for these features. In the meantime, you can still use Storybook alongside your NextJS 13 project if you're not relying on them. +The latest release of [NextJS](https://nextjs.org/) introduced breaking changes (e.g., [TurboPack](https://turbo.build/pack), [Server Component](https://nextjs.org/docs/advanced-features/react-18/server-components), [SWC](https://nextjs.org/docs/advanced-features/compiler#why-swc)) that are not yet fully supported by Storybook. The Storybook team is working on adding support for these features. In the meantime, you can still use Storybook alongside your NextJS 13 project if you're not relying on them. ### My framework doesn't work with Storybook diff --git a/docs/configure/images-and-assets.md b/docs/configure/images-and-assets.md index 9b38f50aa1d1..8325aed14f6e 100644 --- a/docs/configure/images-and-assets.md +++ b/docs/configure/images-and-assets.md @@ -6,7 +6,7 @@ Components often rely on images, videos, fonts, and other assets to render as th ### Import assets into stories -You can import any media assets by importing (or requiring) them. It works out of the box with our default config. But, if you are using a custom webpack config, you’ll need to add the [file loader](https://v4.webpack.js.org/loaders/) to handle the required files. +You can import any media assets by importing (or requiring) them. It works out of the box with our default config. But, if you are using a custom webpack config, you’ll need to add the [file loader](https://webpack.js.org/loaders/) to handle the required files. Afterward, you can use any asset in your stories: @@ -79,8 +79,8 @@ You can also pass a list of directories separated by commas without spaces inste <CodeSnippets paths={[ - 'common/storybook-main-with-multiple-static-dir.js.mdx', - 'common/storybook-main-with-multiple-static-dir.ts.mdx', + 'common/main-config-static-dirs.js.mdx', + 'common/main-config-static-dirs.ts.mdx', ]} /> @@ -92,8 +92,8 @@ Or even use a configuration object to define the directories: <CodeSnippets paths={[ - 'common/storybook-main-with-object-configuration-static-dir.js.mdx', - 'common/storybook-main-with-object-configuration-static-dir.ts.mdx', + 'common/main-config-static-dirs-with-object.js.mdx', + 'common/main-config-static-dirs-with-object.ts.mdx', ]} /> @@ -137,3 +137,16 @@ In this case, you need to have all your images and media files with relative pat If you load static content via importing, this is automatic, and you do not have to do anything. Suppose you are serving assets in a [static directory](#serving-static-files-via-storybook-configuration) along with your Storybook. In that case, you need to use relative paths to load images or use the base element. + +### Referencing Fonts in Stories + +After configuring Storybook to serve assets from your static folder, you can reference those assets in Storybook. For example, you can reference and apply a custom font in your stories. + +Inside the `.storybook/` configuration folder, create `preview-head.html`, then use `<link />` to reference your font. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={['common/storybook-preview-head-example.html.mdx']} /> + +<!-- prettier-ignore-end --> diff --git a/docs/configure/overview.md b/docs/configure/overview.md index f7fe1787541e..14faf978e1a2 100644 --- a/docs/configure/overview.md +++ b/docs/configure/overview.md @@ -18,8 +18,8 @@ Storybook's main configuration (i.e., the `main.js|ts`) defines your Storybook p <CodeSnippets paths={[ - 'common/storybook-main-default-setup.js.mdx', - 'common/storybook-main-baseline-setup.ts.mdx', + 'common/main-config-typical.js.mdx', + 'common/main-config-typical.ts.mdx', ]} /> @@ -35,12 +35,12 @@ Storybook's main configuration (i.e., the `main.js|ts`) defines your Storybook p | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `stories` | The array of globs that indicates the [location of your story files](#configure-story-loading), relative to `main.js` | | `staticDirs` | Sets a list of directories of [static files](./images-and-assets.md#serving-static-files-via-storybook-configuration) to be loaded by Storybook <br/> `staticDirs: ['../public']` | -| `addons` | Sets the list of [addons](https://storybook.js.org/addons/) loaded by Storybook <br/> `addons: ['@storybook/addon-essentials']` | +| `addons` | Sets the list of [addons](https://storybook.js.org/integrations) loaded by Storybook <br/> `addons: ['@storybook/addon-essentials']` | | `typescript` | Configures how Storybook handles [TypeScript files](./typescript.md) <br/> `typescript: { check: false, checkOptions: {} }` | | `framework` | Configures Storybook based on a set of [framework-specific](./frameworks.md) settings <br/> `framework: { name: '@storybook/svelte-vite', options:{} }` | -| `core` | Configures Storybook's internal features<br/> `core: { disableTelemetry: true, }` | +| `core` | Configures Storybook's [internal features](../api/main-config-core.md) <br/> `core: { disableTelemetry: true, }` | | `docs` | Configures Storybook's [auto-generated documentation](../writing-docs/autodocs.md)<br/> `docs: { autodocs: 'tag' }` | -| `features` | Enables Storybook's additional features<br/> See table below for a list of available features `features: { storyStoreV7: true }` | +| `features` | Enables Storybook's [additional features](../api/main-config-features.md)<br/> See table below for a list of available features `features: { storyStoreV7: true }` | | `refs` | Configures [Storybook composition](../sharing/storybook-composition.md) <br/> `refs:{ example: { title: 'ExampleStorybook', url:'https://your-url.com' } }` | | `logLevel` | Configures Storybook's logs in the browser terminal. Useful for debugging <br/> `logLevel: 'debug'` | | `webpackFinal` | Customize Storybook's [Webpack](../builders/webpack.md) setup <br/> `webpackFinal: async (config:any) => { return config; }` | @@ -85,20 +85,20 @@ For example, if you wanted to pull both `.md` and `.js` files from the `my-proje ### With a configuration object -Additionally, you can customize your Storybook configuration to load your stories based on a configuration object. For example, if you wanted to load your stories from a `packages` directory, you could adjust your `stories` configuration field into the following: +Additionally, you can customize your Storybook configuration to load your stories based on a configuration object. For example, if you wanted to load your stories from a `packages/components` directory, you could adjust your `stories` configuration field into the following: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-storyloading-with-custom-object.js.mdx', - 'common/storybook-storyloading-with-custom-object.ts.mdx', + 'common/main-config-stories-with-object.js.mdx', + 'common/main-config-stories-with-object.ts.mdx', ]} /> <!-- prettier-ignore-end --> -When Storybook starts, it will look for any file containing the `stories` extension inside the `packages/stories` directory and generate the titles for your stories. +When Storybook starts, it will look for any file containing the `stories` extension inside the `packages/components` directory and generate the titles for your stories. ### With a directory @@ -123,8 +123,8 @@ You can also adjust your Storybook configuration and implement custom logic to l <CodeSnippets paths={[ - 'common/storybook-storyloading-custom-logic.js.mdx', - 'common/storybook-storyloading-custom-logic.ts.mdx', + 'common/main-config-stories-with-logic.js.mdx', + 'common/main-config-stories-with-logic.ts.mdx', ]} /> @@ -138,8 +138,8 @@ As your Storybook grows, it gets challenging to load all of your stories perform <CodeSnippets paths={[ - 'common/storybook-on-demand-story-loading.js.mdx', - 'common/storybook-on-demand-story-loading.ts.mdx', + 'common/main-config-features-story-store-v7.js.mdx', + 'common/main-config-features-story-store-v7.ts.mdx', ]} /> diff --git a/docs/configure/sidebar-and-urls.md b/docs/configure/sidebar-and-urls.md index 2290ce5318d7..094add432b1d 100644 --- a/docs/configure/sidebar-and-urls.md +++ b/docs/configure/sidebar-and-urls.md @@ -2,6 +2,8 @@ title: 'Sidebar & URLS' --- +<YouTubeCallout id="zrdcCSTGo4A" title="How to Configure the Sidebar" /> + Storybook’s sidebar lists all your stories grouped by component. When you have many components, you may also wish to group those components. To do so, you can add the `/` separator to the `title` of your CSF file, and Storybook will group the stories into groups based on common prefixes: ![Storybook sidebar anatomy](./sidebar-anatomy.png) @@ -147,7 +149,7 @@ When Storybook generates the titles for all matching stories, they'll retain the ### Story Indexers -Story Indexers are a set of heuristics used by Storybook to crawl your filesystem based on a given glob pattern searching for matching stories, which is then used to generate an index.json (formerly stories.json) file responsible for populating the sidebar with the necessary information. By default, this heuristic will look for files that contain the following scheme \*.stories.@(js|jsx|ts|tsx). However, if you need, you can create your custom story indexer that you can use to include stories that have a different naming convention. For example: +Story Indexers are a set of heuristics used by Storybook to crawl your filesystem based on a given glob pattern searching for matching stories, which is then used to generate an index.json (formerly stories.json) file responsible for populating the sidebar with the necessary information. By default, this heuristic will look for files that contain the following scheme \*.stories.@(js|jsx|mjs|ts|tsx). However, if you need, you can create your custom story indexer that you can use to include stories that have a different naming convention. For example: <!-- prettier-ignore-start --> diff --git a/docs/configure/story-rendering.md b/docs/configure/story-rendering.md index f930fe1e3765..b4b157569eab 100644 --- a/docs/configure/story-rendering.md +++ b/docs/configure/story-rendering.md @@ -24,7 +24,7 @@ Storybook will inject these tags into the _preview iframe_ where your components </div> -It's also possible to modify the preview head HTML programmatically using a preset defined in the `main.js` file. For more information see [Preview/Manager templates](../addons/writing-presets.md#previewmanager-templates). +However, it's also possible to modify the preview head HTML programmatically using a preset defined in the `main.js` file. Read the [presets documentation](../addons/writing-presets.md#ui-configuration) for more information. ## Adding to <body> @@ -60,4 +60,4 @@ Storybook will inject these tags into the _preview iframe_ where your components </div> -Similarly to the preview head HTML, preview body HTML can also be updated programmatically using a preset. See [Preview/Manager templates](../addons/writing-presets.md#previewmanager-templates) for more information. +Just like how you have the ability to customize the preview `head` HTML tag, you can also follow the same steps to customize the preview `body` with a preset. To obtain more information on how to do this, refer to the [presets documentation](../addons/writing-presets.md#ui-configuration). diff --git a/docs/configure/telemetry.md b/docs/configure/telemetry.md index 7e74c9cfd81c..ffd34f8069fa 100644 --- a/docs/configure/telemetry.md +++ b/docs/configure/telemetry.md @@ -32,13 +32,13 @@ Specifically, we track the following information in our telemetry events: - Storybook metadata: - Language (e.g., TypeScript, JavaScript). - Supported view layers (e.g., React, Vue, Angular, Svelte). - - Builder (e.g., Webpack4, Webpack5, Vite). + - Builder (e.g., Webpack5, Vite). - Meta framework (e.g., [Next](https://nextjs.org/), [Gatsby](https://www.gatsbyjs.com/), [CRA](https://create-react-app.dev/)). - - [Addons](https://storybook.js.org/addons/) (e.g., [Essentials](../essentials/introduction.md), [Accessibility](https://storybook.js.org/addons/@storybook/addon-a11y/)). + - [Addons](https://storybook.js.org/integrations) (e.g., [Essentials](../essentials/introduction.md), [Accessibility](https://storybook.js.org/addons/@storybook/addon-a11y/)). - [Feature flags](./overview.md#feature-flags) (e.g., `buildStoriesJson`). - Package manager information (e.g., `npm`, `yarn`). - Monorepo information (e.g., [NX](https://nx.dev/), [Turborepo](https://turborepo.org/)). -- Whether the command was invoked on CI or not. +- In-app events (e.g., [Storybook guided tour](https://github.com/storybookjs/addon-onboarding)). Access to the raw data is highly controlled, limited to select members of Storybook's core team who maintain the telemetry. We cannot identify individual users from the dataset: it is anonymized and untraceable back to the user. @@ -62,71 +62,98 @@ Will generate the following output: ```json { "anonymousId": "8bcfdfd5f9616a1923dd92adf89714331b2d18693c722e05152a47f8093392bb", - "eventType": "start", + "eventType": "dev", "payload": { + "versionStatus": "cached", "storyIndex": { - "storyCount": 4, - "version": 3 + "storyCount": 0, + "componentCount": 0, + "pageStoryCount": 0, + "playStoryCount": 0, + "autodocsCount": 0, + "storiesMdxCount": 0, + "mdxCount": 0, + "exampleStoryCount": 8, + "exampleDocsCount": 3, + "onboardingStoryCount": 0, + "onboardingDocsCount": 0, + "version": 4 } }, - "inCI": false, "metadata": { - "generatedAt": 1648233198722, - "builder": { - "name": "webpack5" - }, + "generatedAt": 1689007841223, "hasCustomBabel": false, - "hasCustomWebpack": true, - "hasStaticDirs": true, + "hasCustomWebpack": false, + "hasStaticDirs": false, "hasStorybookEslint": false, "refCount": 0, - "metaFramework": { - "name": "CRA", - "packageName": "react-scripts", - "version": "4.0.3" - }, "packageManager": { - "name": "yarn", + "type": "yarn", "version": "3.1.1" }, "monorepo": "Nx", "features": { "buildStoriesJson": true }, - "storybookVersion": "6.5.0", + "framework": { + "name": "@storybook/react-vite", + "options": {} + }, + "builder": "@storybook/builder-vite", + "renderer": "@storybook/react", + "storybookVersion": "7.1.0", + "storybookVersionSpecifier": "^7.1.0", "language": "typescript", "storybookPackages": { - "@storybook/addons": { - "version": "6.5.0" - }, - "@storybook/builder-webpack5": { - "version": "6.5.0" + "@storybook/blocks": { + "version": "7.1.0" }, "@storybook/react": { - "version": "6.5.0" + "version": "7.1.0" + }, + "@storybook/react-vite": { + "version": "7.1.0" + }, + "@storybook/testing-library": { + "version": "0.2.0" + }, + "storybook": { + "version": "7.1.0" } }, - "framework": { - "name": "react" - }, "addons": { - "@storybook/preset-create-react-app": { - "version": "3.2.0" - }, - "@storybook/addon-ie11": { - "version": "0.0.7--canary.5e87b64.0" + "@storybook/addon-links": { + "version": "7.1.0" }, "@storybook/addon-essentials": { - "options": { - "viewport": false - }, - "version": "6.5.0" + "version": "7.1.0" + }, + "@storybook/addon-onboarding": { + "version": "1.0.6" + }, + "@storybook/addon-interactions": { + "version": "7.1.0" } } } } ``` +Additionally, if Storybook's guided tour is enabled, it will generate the following output: + +```json +{ + "eventType": "addon-onboarding", + "payload": { + "step": "1:Welcome", + "addonVersion": "1.0.6" + }, + "metadata": { + // See above for metadata that's collected. + } +} +``` + ## Will this data be shared? The data we collect is anonymous, not traceable to the source, and only meaningful in aggregate form. No data we collect is personally identifiable. @@ -152,7 +179,9 @@ You may opt-out of the telemetry by setting Storybook's configuration element `d <!-- prettier-ignore-end --> <div class="aside"> - 💡 There is a <code>boot</code> event that contains no metadata at all (simply used to ensure the telemetry is working). It is sent prior to evaluating your <code>main.js</code>, so it is unaffected by the <code>disableTelemetry</code> option. If you want to ensure that event is not sent, be sure to use the <code>STORYBOOK_DISABLE_TELEMETRY</code> environment variable. + +💡 There is a `boot` event containing no metadata (used to ensure the telemetry is working). It is sent prior to evaluating your [Storybook configuration file](../api/main-config.md) (i.e., `main.js|ts`), so it is unaffected by the `disableTelemetry` option. If you want to ensure that the event is not sent, use the `STORYBOOK_DISABLE_TELEMETRY` environment variable. + </div> ## Crash reports (disabled by default) diff --git a/docs/configure/typescript.md b/docs/configure/typescript.md index 016b99e436b7..ba89ad2dcca4 100644 --- a/docs/configure/typescript.md +++ b/docs/configure/typescript.md @@ -6,34 +6,19 @@ Storybook provides an integrated [TypeScript](https://www.typescriptlang.org/) e ## Configure Storybook with TypeScript -Storybook's configuration file (i.e., `main.ts`) is defined as an ESM module written in TypeScript, providing you with the baseline configuration to support your existing framework while enabling you stricter type-checking and autocompletion in your editor. Below is an abridged configuration file and additional information about the various configuration elements. +Storybook's configuration file (i.e., `main.ts`) is defined as an ESM module written in TypeScript, providing you with the baseline configuration to support your existing framework while enabling you stricter type-checking and autocompletion in your editor. Below is an abridged configuration file. <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-default-setup.ts.mdx', + 'common/main-config-typical.ts.mdx', ]} /> - <!-- prettier-ignore-end --> -| Configuration element | Description | -| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `stories` | The array of globs that indicates the [location of your story files](#configure-story-loading), relative to `main.ts` | -| `staticDirs` | Sets a list of directories of [static files](./images-and-assets.md#serving-static-files-via-storybook-configuration) to be loaded by Storybook <br/> `staticDirs:['../public']` | -| `addons` | Sets the list of [addons](https://storybook.js.org/addons/) loaded by Storybook <br/> `addons: ['@storybook/addon-essentials']` | -| `typescript` | Configures how Storybook handles [TypeScript files](#extending-the-default-configuration) <br/> `typescript: { check: false, checkOptions: {} }` | -| `framework` | Configures Storybook based on a set of [framework-specific](./frameworks.md) settings <br/> `framework: { name: '@storybook/svelte-vite', options:{} }` | -| `core` | Configures Storybook's internal features.<br/> `core: { disableTelemetry: true, }` | -| `docs` | Configures Storybook's [auto-generated documentation](../writing-docs/docs-page.md)<br/> `docs: { autodocs: 'tag' }` | -| `features` | Enables Storybook's additional features<br/> See table below for a list of available features `features: { storyStoreV7: true }` | -| `refs` | Configures [Storybook composition](../sharing/storybook-composition.md) <br/> `refs:{ example: { title: 'ExampleStorybook', url:'https://your-url.com' } }` | -| `logLevel` | Configures Storybook's logs in the browser terminal. Useful for debugging <br/> `logLevel: 'debug'` | -| `webpackFinal` | Customize Storybook's [Webpack](../builders/webpack.md) setup <br/> `webpackFinal: async (config:any) => { return config; }` | -| `viteFinal` | Customize Storybook's Vite setup when using the [vite builder](https://github.com/storybookjs/builder-vite) <br/> `viteFinal: async (config: Vite.InlineConfig, options: Options) => { return config; }` | -| `env` | Defines custom Storybook [environment variables](./environment-variables.md#using-storybook-configuration). <br/> `env: (config) => ({...config, EXAMPLE_VAR: 'Example var' }),` | +See the [main configuration API reference](../api/main-config) for more details and additional properties. <div class="aside"> @@ -43,24 +28,7 @@ Storybook's configuration file (i.e., `main.ts`) is defined as an ESM module wri ### Extending the default configuration -Out of the box, Storybook is built to work with a wide range of third-party libraries, enabling you to safely access and document metadata (e.g., props, inputs) from your components without any additional configuration. It relies on [`babel-loader`](https://webpack.js.org/loaders/babel-loader/) for TypeScript support and optionally [`fork-ts-checker-webpack-plugin`](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/v4.1.6/README.md#options) for type checking. Since Storybook supports multiple frameworks, it also includes a set of third-party packages to support each framework (e.g., `ts-loader` and `ngx-template-loader` for Angular, `react-docgen-typescript-plugin` for React). If you need to customize the default configuration for a specific use case scenario, you can extend the default configuration to suit your needs. Listed below are some examples and a table with the available options. - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-main-add-ts-config.ts.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -| Field | Framework | Description | Type | -| :------------------------------- | :-------- | :------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------- | -| **check** | All | Optionally run fork-ts-checker-webpack-plugin | boolean | -| **checkOptions** | All | Options to pass to fork-ts-checker-webpack-plugin if it's enabled | <a href="https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/v4.1.6/README.md#options">See Docs</a> | -| **reactDocgen** | React | Which react docgen processor to run: `"react-docgen-typescript"`, `"react-docgen"`, `false` | string or false | -| **reactDocgenTypescriptOptions** | React | Options to pass to react-docgen-typescript-plugin if react-docgen-typescript is enabled. | [See docs](https://github.com/hipstersmoothie/react-docgen-typescript-plugin) | +Out of the box, Storybook is built to work with a wide range of third-party libraries, enabling you to safely access and document metadata (e.g., props, inputs) from your components without any additional configuration. It relies on [`babel-loader`](https://webpack.js.org/loaders/babel-loader/) for TypeScript support and optionally [`fork-ts-checker-webpack-plugin`](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/v4.1.6/README.md#options) for type checking. Since Storybook supports multiple frameworks, it also includes a set of third-party packages to support each framework (e.g., `ts-loader` and `ngx-template-loader` for Angular, `react-docgen-typescript-plugin` for React). If you need to customize the default configuration for a specific use case scenario, refer to the [`config.typescript` API reference](../api/main-config-typescript.md). The above example extends the baseline configuration to remove existing props from third-party libraries. Useful if you want to document only your components. However, if you need to include them, you can do so by adjusting your configuration as follows: diff --git a/docs/configure/upgrading.md b/docs/configure/upgrading.md index 8d9ab6a4322a..97b9d785fc20 100644 --- a/docs/configure/upgrading.md +++ b/docs/configure/upgrading.md @@ -22,7 +22,10 @@ To help ease the pain of keeping Storybook up-to-date, we provide a command-line <!-- prettier-ignore-end --> -This upgrades all of the Storybook packages in your project to the latest stable version, perform confidence checks of your package versions, and checks for opportunities to run [automigrations](#automigrate) to update your configuration automatically. +After running the command the script will: + +- Upgrade all Storybook packages in your project to the latest stable version +- Run the relevant [automigrations](../migration-guide.md#automatic-upgrade) factoring in the [breaking changes](../migration-guide.md#major-breaking-changes) between your current version and the latest stable version <div class="aside"> @@ -34,9 +37,17 @@ In addition to running the command, we also recommend checking the [MIGRATION.md Storybook upgrades are not the only thing to consider: changes in the ecosystem also present challenges. For example, lots of frameworks ([Angular 12](https://angular.io/guide/updating-to-version-12#breaking-changes-in-angular-version-12), [Create React App v5](https://github.com/facebook/create-react-app/pull/11201), [NextJS](https://nextjs.org/docs/upgrading#webpack-5)) have recently migrated from [Webpack 4 to Webpack 5](https://webpack.js.org/migrate/5/), so even if you don't upgrade your Storybook version, you might need to update your configuration accordingly. That's what Automigrate is for: -``` -npx storybook@latest automigrate -``` +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-automigrate.npm.js.mdx', + 'common/storybook-automigrate.pnpm.js.mdx', + 'common/storybook-automigrate.yarn.js.mdx' + ]} +/> + +<!-- prettier-ignore-end --> It runs a set of standard configuration checks, explains what is potentially out-of-date, and offers to fix it for you automatically. It also points to the relevant documentation so you can learn more. It runs automatically as part of [`storybook upgrade`](#upgrade-script) command, but it's also available on its own if you don't want to upgrade Storybook. @@ -52,6 +63,7 @@ To upgrade to the latest pre-release: paths={[ 'common/storybook-upgrade-prerelease.npm.js.mdx', 'common/storybook-upgrade-prerelease.pnpm.js.mdx', + 'common/storybook-upgrade-prerelease.yarn.js.mdx', ]} /> diff --git a/docs/configure/webpack.md b/docs/configure/webpack.md index c7699a081f8e..b23700a38ee2 100644 --- a/docs/configure/webpack.md +++ b/docs/configure/webpack.md @@ -59,7 +59,7 @@ Starting with Storybook 6.4, [bundle splitting](https://v4.webpack.js.org/guides <CodeSnippets paths={[ - 'common/storybook-on-demand-story-loading.js.mdx', + 'common/main-config-features-story-store-v7.js.mdx', ]} /> @@ -121,13 +121,14 @@ To extend the above configuration, use the `webpackFinal` field of [`.storybook/ The value should export a `function`, which will receive the default config as its first argument. The second argument is an options object from Storybook, and this will have information about where config came from, whether we're in production or development mode, etc. -For example, if you wanted to add [Sass](https://sass-lang.com/) support, you can adjust your configuration as such: +For example, if you need to adjust the config for a specific environment, you can do so like this: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/storybook-main-add-sass-config.js.mdx', + 'common/main-config-webpack-final.js.mdx', + 'common/main-config-webpack-final.ts.mdx', ]} /> diff --git a/docs/contribute/RFC.md b/docs/contribute/RFC.md new file mode 100644 index 000000000000..e920e6b6bead --- /dev/null +++ b/docs/contribute/RFC.md @@ -0,0 +1,55 @@ +--- +title: 'RFC process' +--- + +The RFC (Request for Comment) process is intended to provide a consistent and controlled path for new features to enter the project. It helps ensure that new features are well-designed, well-implemented, and well-tested, and they do not conflict with the project's overall direction and scope. + +## Goal + +Many changes, such as bug fixes and documentation improvements, can be implemented and reviewed via the normal GitHub pull request workflow. Some changes, however, are considered “substantial”, and we ask that these undergo a design process, solicit community input, and reach a consensus among the Storybook core team. + +The purpose of the RFC (Request for Comment) process is to: + +- Provide a transparent system for proposing new feature ideas. +- Establish a reliable and well-regulated process for introducing new features into the project. +- Provide a way for the community to participate in developing new features. + +### “Feature Request” vs. “RFC” + +A _feature request_ is a straightforward and relatively informal way for Storybook users to suggest a new feature or enhancement to the project. While feature requests can provide valuable insights and ideas, they typically do not involve an in-depth design process or require consensus among the core team. Feature requests are usually open to discussion and may or may not be implemented based on factors like popularity, feasibility, and alignment with the project's goals. + +On the other hand, an _RFC_ is a more formalized and structured process for proposing substantial changes or additions to the project. It involves following a defined set of steps to ensure that the proposed feature or modification receives proper consideration, design, and feedback. RFCs are typically used for changes that significantly impact the project, such as introducing new API functionality, removing existing features, or establishing new usage conventions. The RFC process aims to foster discussions, gather feedback from a wider audience, and reach consensus among the core team before integrating the proposed change into the project. Accepted RFCs are more likely to be implemented than regular feature requests. + +## The RFC lifecycle + +### 1. `Status: Proposed` + +Open a new GitHub discussion in the [“RFC” category](https://github.com/storybookjs/storybook/discussions/new?category=rfc). Fill out the form as instructed. + +_Details matter_: RFCs that do not present convincing motivation, demonstrate a lack of understanding of the design's impact, or are disingenuous about the drawbacks or alternatives tend to be poorly received. + +### 2. `Status: In review` + +RFCs tend to remain in this stage for a while, giving the community and core team members time to weigh in. During this period, the author of an RFC should be prepared to revise the proposal, integrate feedback, and build consensus. RFCs that have broad support are much more likely to make progress than those that don't receive any comments. + +Every Monday at 11 a.m. (EST), the Storybook core team conducts a weekly triage meeting to review open RFCs as part of the meeting's agenda. The meeting is held in the [Storybook Discord's Watercooler channel](https://discord.com/channels/486522875931656193/486522876388704260). We invite the RFC author(s) and interested members of the community to participate and engage in a more detailed discussion of the RFC. If a core team member deems it necessary, they will be assigned as the "champion" of the RFC. The champion will collaborate with the RFC author and assist them throughout the RFC process. + +### 3. `Status: accepted/rejected` + +Eventually, the team will decide whether the RFC is a candidate for inclusion in Storybook. On the other hand, an RFC may be rejected by the team after a public discussion has settled and comments have been made summarizing the rationale for rejection. + +## Implementing an accepted RFC + +The author of an RFC is not obligated to implement it. Of course, the RFC author (like any other developer) is welcome to post an implementation for review after the RFC has been accepted. However, note that the “accepted” status does not indicate priority nor whether it’s being actively worked on. + +If you are interested in implementing an "active" RFC, but cannot determine if someone else is already working on it, feel free to ask (e.g., by leaving a comment on the associated issue). + +This RFC process took heavy inspiration from the RFC processes from [Rust](https://github.com/rust-lang/rfcs) and [Gatsby](https://www.gatsbyjs.com/contributing/rfc-process/). + +## Learn more about contributing to Storybook + +- RFC process for authoring feature requests +- [Code](./code.md) for features and bug fixes +- [Frameworks](./framework.md) to get started with a new framework +- [Documentation](./documentation-updates.md) for documentation improvements, typos, and clarifications +- [Examples](./new-snippets.md) for new snippets and examples diff --git a/docs/contribute/code.md b/docs/contribute/code.md index ece3481c1e1c..e0317f634c8d 100644 --- a/docs/contribute/code.md +++ b/docs/contribute/code.md @@ -254,11 +254,10 @@ It's troublesome to know which packages you'll change ahead of time, and watchin </details> -## Other ways to contribute +## Learn more about contributing to Storybook -Learn about other ways you can contribute to Storybook. - -- [**Overview**](./how-to-contribute.md): General guidance -- [**Docs**](./documentation-updates.md): Typos, clarifications -- [**Addons**](./../addons/introduction.md): Build an addon and share it with the community -- [**Frameworks**](./framework.md): Integrate Storybook with your favorite library +- [RFC process](./RFC.md) for authoring feature requests +- Code for features and bug fixes +- [Frameworks](./framework.md) to get started with a new framework +- [Documentation](./documentation-updates.md) for documentation improvements, typos, and clarifications +- [Examples](./new-snippets.md) for new snippets and examples diff --git a/docs/contribute/documentation-updates.md b/docs/contribute/documentation-updates.md index 2e3a630585c7..76808e2c786b 100644 --- a/docs/contribute/documentation-updates.md +++ b/docs/contribute/documentation-updates.md @@ -22,11 +22,10 @@ Scroll down to the bottom of the document page on GitHub and describe what you c In the Storybook repository, create a pull request that describes changes and includes additional context that would help maintainers review. Once you submit the PR, a maintainer will guide you through the triage and merge process. -## Other ways to contribute +## Learn more about contributing to Storybook -Learn about other ways you can contribute to Storybook. - -- [**Overview**](./how-to-contribute.md): General guidance -- [**Code**](./code.md): Features, bug fixes, dependency updates -- [**Addons**](./../addons/introduction.md): Build an addon and share it with the community -- [**Frameworks**](./framework.md): Integrate Storybook with your favorite library +- [RFC process](./RFC.md) for authoring feature requests +- [Code](./code.md) for features and bug fixes +- [Frameworks](./framework.md) to get started with a new framework +- Documentation for documentation improvements, typos, and clarifications +- [Examples](./new-snippets.md) for new snippets and examples diff --git a/docs/contribute/framework.md b/docs/contribute/framework.md index a84cc735f728..f3125080a4b9 100644 --- a/docs/contribute/framework.md +++ b/docs/contribute/framework.md @@ -130,7 +130,7 @@ The [preset API](../addons/writing-presets) is where you will configure the Stor #### `preview.js` ([example](https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/src/preview.tsx)) -The (optional) [preview API](../configure/overview#configure-story-rendering) is where you configure the rendering of stories, such as global decorators or initializing some runtime config needed for your framework to behave as expected. If your framework requires this file, note that you also need to [configure the `previewAnnotations` in `preset.js`](https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/src/preset.ts#L66-L69). +The (optional) [preview API](../configure/overview#configure-story-rendering) is where you configure the rendering of stories, such as global decorators or initializing some runtime config needed for your framework to behave as expected. If your framework requires this file, note that you also need to [configure the `previewAnnotations` in `preset.js`](https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/src/preset.ts#L71-L74). #### `types.ts` ([example](https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/src/types.ts)) @@ -144,11 +144,10 @@ Test it in a fresh project using a Storybook set up as close as possible to your Once it's fully tested and released, please let us know about your framework by either announcing it in the `#showcase` channel of the [Storybook Discord](https://discord.gg/storybook) or tweeting it and mentioning `@storybookjs`. It's our hope that well-made community frameworks can eventually move into the Storybook codebase and be considered "officially" supported. -## Other ways to contribute +## Learn more about contributing to Storybook -Learn about other ways you can contribute to Storybook. - -- [**Contribution overview**](./how-to-contribute.md): General guidance -- [**Code**](./code.md): Features, bug fixes, dependency updates -- [**Docs**](./documentation-updates.md): Typos, clarifications -- [**Addons**](./../addons/introduction.md): Build an addon and share it with the community +- [RFC process](./RFC.md) for authoring feature requests +- [Code](./code.md) for features and bug fixes +- Frameworks to get started with a new framework +- [Documentation](./documentation-updates.md) for documentation improvements, typos, and clarifications +- [Examples](./new-snippets.md) for new snippets and examples diff --git a/docs/contribute/how-to-contribute.md b/docs/contribute/how-to-contribute.md index 4e079a212fcb..35faaa534d55 100644 --- a/docs/contribute/how-to-contribute.md +++ b/docs/contribute/how-to-contribute.md @@ -6,14 +6,16 @@ Storybook is a community-oriented open source project that welcomes contribution ## Contributor covenant -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.[Continue reading our contributor covenant »](https://github.com/storybookjs/storybook/blob/next/CODE_OF_CONDUCT.md) +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. [Continue reading our contributor covenant »](https://github.com/storybookjs/storybook/blob/next/CODE_OF_CONDUCT.md) ## Ways to contribute -- [**Code**](./code.md): Features, bug fixes, dependency updates -- [**Docs**](./documentation-updates.md): Typos, clarifications -- [**Addons**](./../addons/introduction.md): Build an addon and share it with the community -- [**Frameworks**](./framework.md): Integrate Storybook with your favorite library +- [**RFC process**](./RFC.md) for authoring feature requests +- [**Code**](./code.md) for features and bug fixes +- [**Frameworks**](./framework.md) to get started with a new framework +- [**Documentation**](./documentation-updates.md) for documentation improvements, typos, and clarifications +- [**Examples**](./new-snippets.md) for new snippets and examples +- [**Addons**](./../addons/introduction.md) for new addons ## Not sure how to get started? diff --git a/docs/contribute/new-snippets.md b/docs/contribute/new-snippets.md index 49bd3a6c8b0a..1698945a64ac 100644 --- a/docs/contribute/new-snippets.md +++ b/docs/contribute/new-snippets.md @@ -126,3 +126,11 @@ Go through the documentation and check your work. ## Submit your contribution Finally, commit, push and open a pull request in the Storybook monorepo. Add a clear description of the work you've done, and one of the maintainers will guide you through the merge process. + +## Learn more about contributing to Storybook + +- [RFC process](./RFC.md) for authoring feature requests +- [Code](./code.md) for features and bug fixes +- [Frameworks](./framework.md) to get started with a new framework +- [Documentation](./documentation-updates.md) for documentation improvements, typos, and clarifications +- [Examples](./new-snippets.md) for new snippets and examples diff --git a/docs/essentials/addon-themes-example.gif b/docs/essentials/addon-themes-example.gif new file mode 100644 index 000000000000..f4fc95ef5919 Binary files /dev/null and b/docs/essentials/addon-themes-example.gif differ diff --git a/docs/essentials/auto-generated-controls/angular.mdx b/docs/essentials/auto-generated-controls/angular.mdx index f4fdf0225b11..22417afdbb66 100644 --- a/docs/essentials/auto-generated-controls/angular.mdx +++ b/docs/essentials/auto-generated-controls/angular.mdx @@ -4,7 +4,6 @@ To use auto-detected controls with Angular, you must fill in the `component` fie import { Button } from './button.component'; export default { - title: 'Button', component: Button, }; ``` diff --git a/docs/essentials/auto-generated-controls/ember.mdx b/docs/essentials/auto-generated-controls/ember.mdx index bf21b7d1ab62..1696095183a9 100644 --- a/docs/essentials/auto-generated-controls/ember.mdx +++ b/docs/essentials/auto-generated-controls/ember.mdx @@ -24,7 +24,6 @@ Finally, to use auto-detected controls with Ember, you must fill in the `compone ```ts export default { - title: 'Button', component: 'button', // name of your button component from docgen-json file (index.js) }; ``` diff --git a/docs/essentials/auto-generated-controls/react.mdx b/docs/essentials/auto-generated-controls/react.mdx index b3653588a1ce..29bb07ede5c1 100644 --- a/docs/essentials/auto-generated-controls/react.mdx +++ b/docs/essentials/auto-generated-controls/react.mdx @@ -1,12 +1,11 @@ To use auto-detected controls with React, you must fill in the `component` field in your story metadata: -```ts -// Button.stories.js|jsx|ts|tsx +```js +// Button.stories.js|jsx|mjs|ts|tsx import { Button } from './Button'; export default { - title: 'Button', component: Button, }; ``` diff --git a/docs/essentials/auto-generated-controls/vue.mdx b/docs/essentials/auto-generated-controls/vue.mdx index a1817b3587ee..740ea7bec825 100644 --- a/docs/essentials/auto-generated-controls/vue.mdx +++ b/docs/essentials/auto-generated-controls/vue.mdx @@ -1,10 +1,9 @@ To use auto-detected controls with Vue, you must fill in the `component` field in your story metadata: -```ts +```js import { Button } from './Button.vue'; export default { - title: 'Button', component: Button, }; ``` diff --git a/docs/essentials/auto-generated-controls/web-components.mdx b/docs/essentials/auto-generated-controls/web-components.mdx index fe7d59233220..473b67f07b21 100644 --- a/docs/essentials/auto-generated-controls/web-components.mdx +++ b/docs/essentials/auto-generated-controls/web-components.mdx @@ -1,9 +1,8 @@ To use auto-detected controls with Web components, you must fill in the `component` field in your story metadata: -```ts +```js export default { - title: 'Button', - component: 'button', // name of your button component + component: 'button', }; ``` @@ -18,4 +17,4 @@ import customElements from '../custom-elements.json'; setCustomElementsManifest(customElements); ``` -You can generate a `custom-elements.json` using [@custom-elements-manifest/analyzer](https://github.com/open-wc/custom-elements-manifest). If you're using the pre-v1.0.0 version of `custom-elements.json` you can use either [web-component-analyzer](https://github.com/runem/web-component-analyzer) or [stenciljs](https://stenciljs.com/) (if you're using Stencil). +You can generate a `custom-elements.json` using [@custom-elements-manifest/analyzer](https://github.com/open-wc/custom-elements-manifest). If you're using the pre-v1.0.0 version of `custom-elements.json` you can use either [web-component-analyzer](https://github.com/runem/web-component-analyzer). diff --git a/docs/essentials/controls.md b/docs/essentials/controls.md index 5266c0760f02..cc0f937ec97b 100644 --- a/docs/essentials/controls.md +++ b/docs/essentials/controls.md @@ -123,26 +123,26 @@ If you haven't used the CLI to setup the configuration, or if you want to define ## Fully custom args -Until now, we only used auto-generated controls based on the component we're writing stories for. If we are writing [complex stories](../writing-stories/stories-for-multiple-components.md), we may want to add controls for args that aren’t part of the component. +Until now, we only used auto-generated controls based on the component we're writing stories for. If we are writing [complex stories](../writing-stories/stories-for-multiple-components.md), we may want to add controls for args that aren’t part of the component. For example, here's how you could use a `footer` arg to populate a child component: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'react/table-story-fully-customize-controls.js.mdx', - 'react/table-story-fully-customize-controls.ts.mdx', - 'vue/table-story-fully-customize-controls.2.js.mdx', - 'vue/table-story-fully-customize-controls.2.ts.mdx', - 'vue/table-story-fully-customize-controls.3.js.mdx', - 'vue/table-story-fully-customize-controls.3.ts.mdx', - 'angular/table-story-fully-customize-controls.ts.mdx', - 'web-components/table-story-fully-customize-controls.js.mdx', - 'web-components/table-story-fully-customize-controls.ts.mdx', - 'solid/table-story-fully-customize-controls.js.mdx', - 'solid/table-story-fully-customize-controls.ts.mdx', + 'react/page-story-slots.js.mdx', + 'react/page-story-slots.ts.mdx', + 'vue/page-story-slots.2.js.mdx', + 'vue/page-story-slots.2.ts.mdx', + 'vue/page-story-slots.3.js.mdx', + 'vue/page-story-slots.3.ts.mdx', + 'angular/page-story-slots.ts.mdx', + 'web-components/page-story-slots.js.mdx', + 'web-components/page-story-slots.ts.mdx', + 'solid/page-story-slots.js.mdx', + 'solid/page-story-slots.ts.mdx', ]} usesCsf3 - csf2Path="essentials/controls#snippet-table-story-fully-customize-controls" + csf2Path="writing-stories/args#snippet-page-story-slots" /> <!-- prettier-ignore-end --> diff --git a/docs/essentials/highlight.md b/docs/essentials/highlight.md index 926f1a9589e4..c1f8222a9885 100644 --- a/docs/essentials/highlight.md +++ b/docs/essentials/highlight.md @@ -2,36 +2,51 @@ title: 'Highlight' --- -Storybook's [Highlight](https://storybook.js.org/addons/@storybook/addon-highlight/) addon allows you to highlight specific DOM nodes within your story. You can use it to call attention to particular parts of the story. +Storybook's [Highlight](https://storybook.js.org/addons/@storybook/addon-highlight/) addon is a helpful tool for visually debugging your components, allowing you to highlight specific DOM nodes within your story when used as a standalone addon or enhancing other addons such as the [Accessibility addon](https://storybook.js.org/addons/@storybook/addon-a11y/) to inform you of accessibility issues within your components. -![](highlight.png) +![Story with highlighted elements](./highlight.png) -This addon can be used to enhance other addons. For example, [Accessibility](https://storybook.js.org/addons/@storybook/addon-a11y/) addon uses it to highlight DOM nodes that are failing accessibility checks. +## Highlighting DOM Elements -## Apply or clear highlights - -Highlight DOM nodes by emitting the `HIGHLIGHT` event from within a story or an addon. The event payload must contain a list of selectors you want to highlight. +To highlight DOM elements with the addon, you'll need to emit the `HIGHLIGHT` event from within a story or an addon. The event payload must contain an `elements` property assigned to an array of selectors matching the elements you want to highlight. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ 'react/component-story-highlight-addon.js.mdx', + 'react/component-story-highlight-addon.ts.mdx', 'angular/component-story-highlight-addon.ts.mdx', 'vue/component-story-highlight-addon.js.mdx', + 'vue/component-story-highlight-addon.ts.mdx', 'web-components/component-story-highlight-addon.js.mdx', + 'web-components/component-story-highlight-addon.ts.mdx', ]} /> <!-- prettier-ignore-end --> -Highlights are automatically cleared when the story changes. You can also manually clear them by emitting the `RESET_HIGHLIGHT` event. +<div class="aside"> + +💡 We recommend choosing the most specific selector possible to avoid highlighting elements other addons use. This is because the addon tries to match selectors against the entire DOM tree. + +</div> + +### Reset highlighted elements + +Out of the box, Storybook automatically removes highlighted elements when transitioning between stories. However, if you need to clear them manually, you can emit the `RESET_HIGHLIGHT` event from within a story or an addon. For example: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/addon-highlight-reset.js.mdx', + 'react/addon-highlight-reset.js.mdx', + 'react/addon-highlight-reset.ts.mdx', + 'angular/addon-highlight-reset.ts.mdx', + 'vue/addon-highlight-reset.js.mdx', + 'vue/addon-highlight-reset.ts.mdx', + 'web-components/addon-highlight-reset.js.mdx', + 'web-components/addon-highlight-reset.ts.mdx', ]} /> @@ -39,11 +54,19 @@ Highlights are automatically cleared when the story changes. You can also manual ## Customize style +By default, the addon applies a standard style to the highlighted elements you've enabled for the story. However, you can enable your custom style by extending the payload object and providing a `color` and/or `style` properties. For example: + <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/addon-highlight-customize.js.mdx', + 'react/highlight-addon-custom-style.js.mdx', + 'react/highlight-addon-custom-style.ts.mdx', + 'angular/highlight-addon-custom-style.ts.mdx', + 'vue/highlight-addon-custom-style.js.mdx', + 'vue/highlight-addon-custom-style.ts.mdx', + 'web-components/highlight-addon-custom-style.js.mdx', + 'web-components/highlight-addon-custom-style.ts.mdx', ]} /> diff --git a/docs/essentials/highlight.png b/docs/essentials/highlight.png index 616e42e388b5..2d1aef2f56ea 100644 Binary files a/docs/essentials/highlight.png and b/docs/essentials/highlight.png differ diff --git a/docs/essentials/interactions.md b/docs/essentials/interactions.md index a8c212b15c12..6baff2197774 100644 --- a/docs/essentials/interactions.md +++ b/docs/essentials/interactions.md @@ -82,3 +82,9 @@ The above example uses the `canvasElement` to scope your element queries to the While you can refer to the [Testing Library documentation](https://testing-library.com/docs/) for details on how to use it, there's an important detail that's different when using the Storybook wrapper: **method invocations must be `await`-ed**. It allows you to step back and forth through your interactions using the debugger. Any `args` that have been marked as an Action, either using the [argTypes annotation](./actions.md#action-argtype-annotation) or the [argTypesRegex](./actions.md#automatically-matching-args), will be automatically converted to a [Jest mock function](https://jestjs.io/docs/mock-function-api) (spy). This allows you to make assertions about calls to these functions. + +<div class="aside"> + +ℹ️ To mock functions in your Storybook stories for reliable and isolated component testing, use the `jest` import from `@storybook/jest`. This allows you to avoid configuring Jest globally in your project. + +</div> diff --git a/docs/essentials/introduction.md b/docs/essentials/introduction.md index 7b3f9d1d9524..7a16ef0962d9 100644 --- a/docs/essentials/introduction.md +++ b/docs/essentials/introduction.md @@ -4,14 +4,14 @@ title: 'Essential addons' A major strength of Storybook are [addons](https://storybook.js.org/addons) that extend Storybook’s UI and behavior. Storybook ships by default with a set of “essential” addons that add to the initial user experience. There are many third-party addons as well as “official” addons developed by the Storybook core team. -- [Docs](../writing-docs/introduction.md) -- [Controls](./controls.md) - [Actions](./actions.md) -- [Viewport](./viewport.md) - [Backgrounds](./backgrounds.md) -- [Toolbars & globals](./toolbars-and-globals.md) -- [Measure & outline](./measure-and-outline.md) +- [Controls](./controls.md) +- [Docs](../writing-docs/introduction.md) - [Highlight](./highlight.md) +- [Measure & outline](./measure-and-outline.md) +- [Toolbars & globals](./toolbars-and-globals.md) +- [Viewport](./viewport.md) ### Installation @@ -119,6 +119,6 @@ For example, if you wanted to disable the [backgrounds addon](./backgrounds.md), <div class="aside"> -💡 You can use the following keys for each individual addon: `actions`, `backgrounds`, `controls`, `docs`, `viewport`, `toolbars`, `measure`, `outline`, `highlight`. +💡 You can use the following keys for each individual addon: `actions`, `backgrounds`, `controls`, `docs`, `viewport`, `toolbars`, `measure`, `outline`, and `highlight`. </div> diff --git a/docs/essentials/themes.md b/docs/essentials/themes.md new file mode 100644 index 000000000000..cdb199452ef0 --- /dev/null +++ b/docs/essentials/themes.md @@ -0,0 +1,56 @@ +--- +title: 'Themes' +--- + +Storybook's [Themes](https://github.com/storybookjs/storybook/tree/next/code/addons/themes) addon allows you to switch between multiple themes for your components inside of the preview in [Storybook](https://storybook.js.org). + +![Switching between themes in Storybook](./addon-themes-example.gif) + +## Theme decorators + +To make your themes accessible to your stories, `@storybook/addon-themes` exposes three [decorators](https://storybook.js.org/docs/react/writing-stories/decorators) for different methods of theming. + +### JSX providers + +For libraries that expose themes to components through providers, such as [Material UI](https://storybook.js.org/recipes/@mui/material/), [Styled-components](https://storybook.js.org/recipes/styled-components/), and [Emotion](https://storybook.js.org/recipes/@emotion/styled/), use the `withThemeFromJSXProvider`. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-addon-themes-jsx-provider-decorator.js.mdx', + 'common/storybook-addon-themes-jsx-provider-decorator.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### CSS classes + +For libraries that rely on CSS classes on a parent element to determine the theme, you can use the `withThemeByClassName` decorator. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-addon-themes-classname-decorator.js.mdx', + 'common/storybook-addon-themes-classname-decorator.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### Data attributes + +For libraries that rely on data attributes on a parent element to determine the theme, you can use the `withThemeByDataAttribute` decorator. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-addon-themes-data-attribute-decorator.js.mdx', + 'common/storybook-addon-themes-data-attribute-decorator.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> diff --git a/docs/essentials/toolbars-and-globals.md b/docs/essentials/toolbars-and-globals.md index 261a73bdc0cb..bd10a38499e2 100644 --- a/docs/essentials/toolbars-and-globals.md +++ b/docs/essentials/toolbars-and-globals.md @@ -166,8 +166,6 @@ Using the ThemeProvider example above, you could expand it to display which them If you're working on a Storybook addon that needs to update the global and refreshes the UI, you can do so. As mentioned previously, the `@storybook/manager-api` package provides the necessary hook for this scenario. You can use the `updateGlobals` function to update any global values you need. -Also, you can use both `@storybook/addons` and `@storybook/core-events` packages together to trigger the refresh. - For example, if you were working on a [toolbar addon](../addons/addon-types.md#toolbars), and you want to refresh the UI and update the global once the user clicks on a button: <!-- prettier-ignore-start --> diff --git a/docs/essentials/viewport.md b/docs/essentials/viewport.md index ec6b7caddf45..d2742b73b81b 100644 --- a/docs/essentials/viewport.md +++ b/docs/essentials/viewport.md @@ -32,11 +32,12 @@ If you want to change the default set of viewports, you can set the global `para The viewport global can take an object with the following keys: -| Field | Type | Description | Default Value | -| ------------------- | :-----: | :---------------------------------------: | :------------: | -| **defaultViewport** | String | Sets the default viewport | `'responsive'` | -| **disable** | Boolean | Disables the viewport | N/A | -| **viewports** | Object | The configuration object for the viewport | `{}` | +| Field | Type | Description | Default Value | +| ---------------------- | :-----: | :-------------------------------------------------------: | :------------: | +| **defaultViewport** | String | Sets the default viewport | `'responsive'` | +| **defaultOrientation** | String | Sets the default orientation (e.g. portrait or landscape) | `'portrait'` | +| **disable** | Boolean | Disables the viewport | N/A | +| **viewports** | Object | The configuration object for the viewport | `{}` | The viewports object needs the following keys: diff --git a/docs/faq.md b/docs/faq.md index 47b3d016f752..83756f4152c9 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -10,12 +10,13 @@ Here are some answers to frequently asked questions. If you have a question, you - [How can I run coverage tests with Create React App and leave out stories?](#how-can-i-run-coverage-tests-with-create-react-app-and-leave-out-stories) - [I see `ReferenceError: React is not defined` when using Storybook with Next.js](#i-see-referenceerror-react-is-not-defined-when-using-storybook-with-nextjs) - [How do I setup Storybook to share Webpack configuration with Next.js?](#how-do-i-setup-storybook-to-share-webpack-configuration-with-nextjs) -- [How do I fix module resolution while using pnpm Plug-n-Play?](#how-do-i-fix-module-resolution-while-using-pnpm-plug-n-play) +- [How do I fix module resolution in special environments?](#how-do-i-fix-module-resolution-in-special-environments) - [How do I setup React Fast Refresh with Storybook?](#how-do-i-setup-react-fast-refresh-with-storybook) - [How do I setup the new React Context Root API with Storybook?](#how-do-i-setup-the-new-react-context-root-api-with-storybook) - [Why is there no addons channel?](#why-is-there-no-addons-channel) - [Why aren't Controls visible in the Canvas panel but visible in Docs?](#why-arent-controls-visible-in-the-canvas-panel-but-visible-in-docs) - [Why aren't the addons working in a composed Storybook?](#why-arent-the-addons-working-in-a-composed-storybook) +- [Can I have a Storybook with no local stories?](#can-i-have-a-storybook-with-no-local-stories) - [Which community addons are compatible with the latest version of Storybook?](#which-community-addons-are-compatible-with-the-latest-version-of-storybook) - [Is it possible to browse the documentation for past versions of Storybook?](#is-it-possible-to-browse-the-documentation-for-past-versions-of-storybook) - [What icons are available for my toolbar or my addon?](#what-icons-are-available-for-my-toolbar-or-my-addon) @@ -117,9 +118,9 @@ export default { }; ``` -## How do I fix module resolution while using pnpm Plug-n-Play? +## How do I fix module resolution in special environments? -In case you are using [pnpm](https://pnpm.io/), you might run into issues with module resolution similar to this when running Storybook: +In case you are using [yarn Plug-n-Play](https://yarnpkg.com/features/pnp) or your project is set up within a mono repository environment, you might run into issues with module resolution similar to this when running Storybook: ```shell WARN Failed to load preset: "@storybook/react-webpack5/preset"` @@ -191,7 +192,7 @@ A common error is that an addon tries to access the "channel", but the channel i 1. You're trying to access addon channel (e.g., by calling `setOptions`) in a non-browser environment like Jest. You may need to add a channel mock: ```js - import { addons, mockChannel } from '@storybook/addons'; + import { addons, mockChannel } from '@storybook/preview-api'; addons.setChannel(mockChannel()); ``` @@ -218,6 +219,38 @@ For now, the addons you're using in a composed Storybook will not work. We're working on overcoming this limitation, and soon you'll be able to use them as if you are working with a non-composed Storybook. +## Can I have a Storybook with no local stories? + +Storybook does not work unless you have at least one local story (or docs page) defined in your project. In this context, local means a `.stories.*` or `.mdx` file that is referenced in your project's `.storybook/main.js` config. + +If you're in a [Storybook composition](https://storybook.js.org/docs/react/sharing/storybook-composition) scenario, where you have multiple Storybooks, and want to have an extra Storybook with no stories of its own, that serves as a "glue" for all the other Storybooks in a project for demo/documentation purposes, you can do the following steps: + +Introduce a single `.mdx` docs page (addon-essentials or addon-docs required), that serves as an Introduction page, like so: + +```mdx +<!-- Introduction.mdx --> +# Welcome + +Some description here +``` + +And then refer to it in your Storybook config file: + +```ts +// .storybook/main.js +const config = { + // define at least one local story/page here + stories: ['../Introduction.mdx'], + // define composed Storybooks here + refs: { + firstProject: { title: 'First', url: 'some-url' }, + secondProject: { title: 'Second', url: 'other-url' }, + } + // ... +} +export default config; +``` + ## Which community addons are compatible with the latest version of Storybook? Starting with Storybook version 6.0, we've introduced some great features aimed at streamlining your development workflow. @@ -253,7 +286,8 @@ We're only covering versions 5.3 and 5.0 as they were important milestones for S | | Accessibility tests | [See current documentation](./writing-tests/accessibility-testing.md) | Non existing feature or undocumented | Non existing feature or undocumented | | | Interaction tests | [See current documentation](./writing-tests/interaction-testing.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/testing/interaction-testing) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/testing/interaction-testing) | | | Snapshot tests | [See current documentation](./writing-tests/snapshot-testing.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/testing/structural-testing) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/testing/structural-testing) | -| | Import stories in tests | [See current documentation](./writing-tests/importing-stories-in-tests.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/testing/react-ui-testing) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/testing/react-ui-testing) | +| | Import stories in tests/Unit tests | [See current documentation](./writing-tests/stories-in-unit-tests.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/testing/react-ui-testing) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/testing/react-ui-testing) | +| | Import stories in tests/End-to-end testing | [See current documentation](./writing-tests/stories-in-end-to-end-tests.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/testing/react-ui-testing) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/testing/react-ui-testing) | | Sharing | Publish Storybook | [See current documentation](./sharing/publish-storybook.md) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.3/docs/src/pages/basics/exporting-storybook) | [See versioned documentation](https://github.com/storybookjs/storybook/tree/release/5.0/docs/src/pages/basics/exporting-storybook) | | | Embed | [See current documentation](./sharing/embed.md) | Non existing feature or undocumented | Non existing feature or undocumented | | | Composition | [See current documentation](./sharing/storybook-composition.md) | Non existing feature or undocumented | Non existing feature or undocumented | diff --git a/docs/get-started/example-onboarding-wizard.png b/docs/get-started/example-onboarding-wizard.png new file mode 100644 index 000000000000..bc1c173ae0a6 Binary files /dev/null and b/docs/get-started/example-onboarding-wizard.png differ diff --git a/docs/get-started/example-welcome.png b/docs/get-started/example-welcome.png index 617ae488d068..f9e103cd6657 100644 Binary files a/docs/get-started/example-welcome.png and b/docs/get-started/example-welcome.png differ diff --git a/docs/get-started/install.md b/docs/get-started/install.md index 749705af2f98..b74c9657a3f3 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -46,7 +46,21 @@ The command above will make the following changes to your local environment: - 📝 Add some boilerplate stories to get you started. - 📡 Set up telemetry to help us improve Storybook. Read more about it [here](../configure/telemetry.md). -Depending on your framework, first, build your app and then check that everything worked by running: +<IfRenderer renderer='react'> + +## Run the Setup Wizard + +If all goes well, you should see a setup wizard that will help you get started with Storybook introducing you to the main concepts and features, including how the UI is organized, how to write your first story, and how to test your components' response to various inputs utilizing [controls](../essentials/controls). + +![Storybook onboarding](./example-onboarding-wizard.png) + +If you skipped the wizard, you can always run it again by adding the `?path=/onboarding` query parameter to the URL of your Storybook instance, provided that the example stories are still available. + +</IfRenderer> + +## Start Storybook + +Storybook comes with a built-in development server featuring everything you need for project development. Depending on your system configuration, running the `storybook` command will start the local development server, output the address for you, and automatically open the address in a new browser tab where a welcome screen greets you. <!-- prettier-ignore-start --> @@ -61,8 +75,6 @@ Depending on your framework, first, build your app and then check that everythin <!-- prettier-ignore-end --> -It will start Storybook locally and output the address. Depending on your system configuration, it will automatically open the address in a new browser tab, and you'll be greeted by a welcome screen. - ![Storybook welcome screen](./example-welcome.png) There are some noteworthy items here: @@ -101,8 +113,18 @@ Storybook collects completely anonymous data to help us improve user experience. </div> -If all else fails, try asking for [help](https://storybook.js.org/support) +If all else fails, try asking for [help](https://storybook.js.org/community#support) </details> +<IfRenderer renderer='react'> + +Now that you have successfully installed Storybook and understood how it works, let's continue where you left off in the [setup wizard](#run-the-setup-wizard) and delve deeper into writing stories. + +</IfRenderer> + +<IfRenderer renderer={['angular', 'vue', 'web-components', 'ember', 'html', 'svelte', 'preact', 'qwik','solid' ]}> + Now that you installed Storybook successfully, let’s take a look at a story that was written for us. + +</IfRenderer> diff --git a/docs/get-started/setup.md b/docs/get-started/setup.md index a781b7d7bf8d..c454a7648edc 100644 --- a/docs/get-started/setup.md +++ b/docs/get-started/setup.md @@ -20,6 +20,7 @@ Pick a simple component from your project, like a Button, and write a `.stories. 'web-components/your-component.js.mdx', 'web-components/your-component.ts.mdx', 'svelte/your-component.js.mdx', + 'svelte/your-component.ts.mdx', 'html/your-component.js.mdx', 'html/your-component.ts.mdx', 'preact/your-component.js.mdx', diff --git a/docs/get-started/whats-a-story.md b/docs/get-started/whats-a-story.md index 513fd58c9ee4..5adfded2f947 100644 --- a/docs/get-started/whats-a-story.md +++ b/docs/get-started/whats-a-story.md @@ -22,6 +22,7 @@ Let’s start with the `Button` component. A story is a function that describes 'web-components/button-story.js.mdx', 'web-components/button-story.ts.mdx', 'svelte/button-story.js.mdx', + 'svelte/button-story.ts.mdx', 'html/button-story.js.mdx', 'html/button-story.ts.mdx', 'preact/button-story.js.mdx', @@ -54,6 +55,7 @@ The above story definition can be further improved to take advantage of [Storybo 'web-components/button-story-with-args.js.mdx', 'web-components/button-story-with-args.ts.mdx', 'svelte/button-story-with-args.js.mdx', + 'svelte/button-story-with-args.ts.mdx', 'html/button-story-with-args.js.mdx', 'html/button-story-with-args.ts.mdx', 'preact/button-story-with-args.js.mdx', diff --git a/docs/get-started/why-storybook.md b/docs/get-started/why-storybook.md index 015d6eb5bdcc..39451d4ee4b7 100644 --- a/docs/get-started/why-storybook.md +++ b/docs/get-started/why-storybook.md @@ -47,6 +47,7 @@ You write stories for granular UI component variation and then use those stories 'vue/histogram-story.3.js.mdx', 'vue/histogram-story.3.ts.mdx', 'svelte/histogram-story.js.mdx', + 'svelte/histogram-story.ts.mdx', 'web-components/histogram-story.js.mdx', 'web-components/histogram-story.ts.mdx', 'preact/histogram-story.js.mdx', diff --git a/docs/migration-guide.md b/docs/migration-guide.md index 508e790bfc20..ddd2d8faeab0 100644 --- a/docs/migration-guide.md +++ b/docs/migration-guide.md @@ -6,14 +6,16 @@ Storybook 7 is our first major release in over 2 years. A lot has changed during ## Major breaking changes -The rest of this guide will help you upgrade successfully, either automatically or manually. But first, we’ve accumulated a lot of breaking changes in Storybook 7. Here are the most impactful changes you should know about before you go further: +The rest of this guide will help you upgrade successfully, either automatically or manually. But first, we’ve accumulated a lot of [breaking changes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#70-breaking-changes) in Storybook 7. Here are the most impactful changes you should know about before you go further: - [Webpack4 support discontinued](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued) - [IE11 support discontinued](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#modern-browser-support) - [Minimum supported version of node is 16](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-support-for-node-15-and-below) +- [Babel mode v7 exclusively](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#babel-mode-v7-exclusively) +- [Start and build CLI binaries removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed) - [Some community addons might not work yet](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#specific-instructions-for-addon-users) -If any of these apply to your project, please read through the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-65x-to-700) before continuing. If these are hard requirements, you should probably stick with Storybook 6.x. +If any of these apply to your project, please read through the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-65x-to-700) before continuing. If any of these new requirements or changes do not fit your project, you should probably stick with Storybook 6.x. ## Automatic upgrade @@ -105,8 +107,8 @@ To use MDX1: <CodeSnippets paths={[ - 'common/storybook-main-fallback-mdx.js.mdx', - 'common/storybook-main-fallback-mdx.ts.mdx' + 'common/main-config-features-legacy-mdx-1.js.mdx', + 'common/main-config-features-legacy-mdx-1.ts.mdx' ]} /> @@ -126,8 +128,8 @@ To opt out, add the `storyStoreV7` feature flag in `.storybook/main.js`: <CodeSnippets paths={[ - 'common/storybook-on-demand-story-loading.js.mdx', - 'common/storybook-on-demand-story-loading.ts.mdx' + 'common/main-config-features-story-store-v7.js.mdx', + 'common/main-config-features-story-store-v7.ts.mdx' ]} /> @@ -223,7 +225,7 @@ export default { // .storybook/main.js module.exports = { - stories: ['../src/**.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**.stories.@(js|jsx|mjs|ts|tsx)'], }; ``` @@ -263,6 +265,6 @@ Finally, you’ll need to add the MDX files to `.storybook/main.js` so that they // .storybook/main.js module.exports = { - stories: ['../src/**.mdx', '../src/**.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**.mdx', '../src/**.stories.@(js|jsx|mjs|ts|tsx)'], }; ``` diff --git a/docs/sharing/design-integrations.md b/docs/sharing/design-integrations.md index 1ce35fa81d05..cf2e5ac4934c 100644 --- a/docs/sharing/design-integrations.md +++ b/docs/sharing/design-integrations.md @@ -75,12 +75,6 @@ Run the following command to install the addon. <!-- prettier-ignore-end --> -<div class="aside"> - -ℹ️ This addon is still being converted to fully support Storybook 7.0. If you're adding this addon to a Storybook 7.0 instance or migrating from a previous version, you must install the `beta` version. - -</div> - Update your Storybook configuration (in `.storybook/main.js|ts`) to include the addon. <!-- prettier-ignore-start --> @@ -88,6 +82,7 @@ Update your Storybook configuration (in `.storybook/main.js|ts`) to include the <CodeSnippets paths={[ 'common/storybook-main-figma-addon-register.js.mdx', + 'common/storybook-main-figma-addon-register.ts.mdx', ]} /> diff --git a/docs/sharing/embed.md b/docs/sharing/embed.md index 01b697f3f62a..fac0efba259c 100644 --- a/docs/sharing/embed.md +++ b/docs/sharing/embed.md @@ -2,6 +2,8 @@ title: 'Embed stories' --- +<YouTubeCallout id="2tqRpBcV8ug" title="Your Storybook EVERYWHERE | Embeds with Chromatic" /> + Embed stories to showcase your work to teammates and the developer community at large. In order to use embeds, your Storybook must be published and publicly accessible. Storybook supports `<iframe>` embeds out of the box. If you use Chromatic to [publish Storybook](./publish-storybook.md#publish-storybook-with-chromatic), you can also embed stories in Notion, Medium, and countless other platforms that support the oEmbed standard. diff --git a/docs/sharing/package-composition.md b/docs/sharing/package-composition.md index abf45f8a301c..b7b798936c50 100644 --- a/docs/sharing/package-composition.md +++ b/docs/sharing/package-composition.md @@ -26,8 +26,8 @@ If you want to configure how the composed Storybook behaves, you can disable the <CodeSnippets paths={[ - 'common/storybook-main-disable-refs.js.mdx', - 'common/storybook-main-disable-refs.ts.mdx', + 'common/main-config-refs-disable.js.mdx', + 'common/main-config-refs-disable.ts.mdx', ]} /> diff --git a/docs/sharing/publish-storybook.md b/docs/sharing/publish-storybook.md index 7d790066b6f6..0c89b6978653 100644 --- a/docs/sharing/publish-storybook.md +++ b/docs/sharing/publish-storybook.md @@ -2,6 +2,8 @@ title: 'Publish Storybook' --- +<YouTubeCallout id="zhrboql8UuU" title="How to Test UI AUTOMATICALLY — Storybook and Chromatic" /> + Teams publish Storybook online to review and collaborate on works in progress. That allows developers, designers, PMs, and other stakeholders to check if the UI looks right without touching code or requiring a local dev environment. <video autoPlay muted playsInline loop> @@ -50,7 +52,7 @@ Storybook will create a static web application capable of being served by any we ## Publish Storybook with Chromatic -Once you've built your Storybook as a static web app, you can publish it to your web host. We recommend [Chromatic](https://www.chromatic.com/?utm_source=storybook_website&utm_medium=link&utm_campaign=storybook), a free publishing service made for Storybook that documents, versions, and indexes your UI components securely in the cloud. +Once you've built your Storybook as a static web application, you can publish it to your web host. We recommend [Chromatic](https://www.chromatic.com/?utm_source=storybook_website&utm_medium=link&utm_campaign=storybook), a free publishing service made for Storybook that documents, versions, and indexes your UI components securely in the cloud. ![Storybook publishing workflow](./workflow-publish.png) @@ -129,9 +131,14 @@ When you publish Storybook, you also get component history and versioning down t ## Publish Storybook to other services -You can publish the static Storybook web app to many hosts. We maintain [`storybook-deployer`](https://github.com/storybookjs/storybook-deployer), a handy tool to help you publish to AWS or GitHub pages. +Since Storybook is built as a static web application, you can also publish it to any web host, including [GitHub Pages](https://docs.github.com/en/pages), [Netlify](https://www.netlify.com/), [AWS S3](https://aws.amazon.com/s3/), and more. However, features such as [Composition](./storybook-composition.md), +[embedding stories](./embed.md), history, and versioning require tighter integration with Storybook APIs and secure authentication. Your hosting provider may not be capable of supporting these features. Learn about the Component Publishing Protocol (CPP) to see what. + +<div class="aside"> -But features like [Composition](./storybook-composition.md), [embed](./embed.md), history, and versioning require tighter integration with Storybook APIs and secure authentication. Your hosting provider may not be capable of supporting these features. Learn about the Component Publishing Protocol (CPP) to see what. +ℹ️ Additional header configuration may be required to serve Storybook's static files correctly on your host. For more information on the required headers, see the [Migration guide](https://github.com/storybookjs/storybook/blob/main/MIGRATION.md#deploying-build-artifacts). + +</div> <details> diff --git a/docs/sharing/storybook-composition.md b/docs/sharing/storybook-composition.md index af4092edc2e6..b9dde4a0e094 100644 --- a/docs/sharing/storybook-composition.md +++ b/docs/sharing/storybook-composition.md @@ -23,8 +23,8 @@ In your [`.storybook/main.js`](../configure/overview.md#configure-story-renderin <CodeSnippets paths={[ - 'common/storybook-main-ref-remote.js.mdx', - 'common/storybook-main-ref-remote.ts.mdx', + 'common/main-config-refs.js.mdx', + 'common/main-config-refs.ts.mdx', ]} /> @@ -59,8 +59,8 @@ You can also compose Storybooks based on the current development environment (e. <CodeSnippets paths={[ - 'common/storybook-main-ref-per-environment.js.mdx', - 'common/storybook-main-ref-per-environment.ts.mdx', + 'common/main-config-refs-with-function.js.mdx', + 'common/main-config-refs-with-function.ts.mdx', ]} /> @@ -84,8 +84,8 @@ If you're using Storybook 6.4, or higher, you can optimize your composition via <CodeSnippets paths={[ - 'common/storybook-enable-buildstoriesjson.js.mdx', - 'common/storybook-enable-buildstoriesjson.ts.mdx', + 'common/main-config-features-build-stories-json.js.mdx', + 'common/main-config-features-build-stories-json.ts.mdx', ]} /> diff --git a/docs/snippets/angular/addon-highlight-reset.ts.mdx b/docs/snippets/angular/addon-highlight-reset.ts.mdx new file mode 100644 index 000000000000..04fe5864f9fe --- /dev/null +++ b/docs/snippets/angular/addon-highlight-reset.ts.mdx @@ -0,0 +1,30 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/angular'; +import { componentWrapperDecorator } from '@storybook/angular'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent.component'; + +const meta: Meta<MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<MyComponent>; + +export const ResetHighlight: Story = { + decorators: [ + componentWrapperDecorator((story) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return story; + }), + ], +}; +``` diff --git a/docs/snippets/angular/app-story-with-mock.ts.mdx b/docs/snippets/angular/app-story-with-mock.ts.mdx index cce7c255d645..79fd261a6ef5 100644 --- a/docs/snippets/angular/app-story-with-mock.ts.mdx +++ b/docs/snippets/angular/app-story-with-mock.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { App } from './app.component'; const meta: Meta<App> = { - title: 'App', component: App, }; diff --git a/docs/snippets/angular/arg-types-control.ts.mdx b/docs/snippets/angular/arg-types-control.ts.mdx new file mode 100644 index 000000000000..94f8365e086e --- /dev/null +++ b/docs/snippets/angular/arg-types-control.ts.mdx @@ -0,0 +1,23 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-default-value.ts.mdx b/docs/snippets/angular/arg-types-default-value.ts.mdx new file mode 100644 index 000000000000..acd4522cf751 --- /dev/null +++ b/docs/snippets/angular/arg-types-default-value.ts.mdx @@ -0,0 +1,23 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + value: { + // ⛔️ Deprecated, do not use + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-description.ts.mdx b/docs/snippets/angular/arg-types-description.ts.mdx new file mode 100644 index 000000000000..154c1b1f4a6b --- /dev/null +++ b/docs/snippets/angular/arg-types-description.ts.mdx @@ -0,0 +1,18 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-if.ts.mdx b/docs/snippets/angular/arg-types-if.ts.mdx new file mode 100644 index 000000000000..d1887b8bfbcd --- /dev/null +++ b/docs/snippets/angular/arg-types-if.ts.mdx @@ -0,0 +1,40 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-in-meta.ts.mdx b/docs/snippets/angular/arg-types-in-meta.ts.mdx new file mode 100644 index 000000000000..1bc7fd43f2f5 --- /dev/null +++ b/docs/snippets/angular/arg-types-in-meta.ts.mdx @@ -0,0 +1,20 @@ +```ts +// Button.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Button } from './button.component'; + +const meta: Meta<Button> = { + component: Button, + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-in-story.ts.mdx b/docs/snippets/angular/arg-types-in-story.ts.mdx new file mode 100644 index 000000000000..ae446e2d4a13 --- /dev/null +++ b/docs/snippets/angular/arg-types-in-story.ts.mdx @@ -0,0 +1,25 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/angular'; + +import { Button } from './button.component'; + +const meta: Meta<Button> = { + component: Button, +}; + +export default meta; + +type Story = StoryObj<typeof Button>; + +export const Basic: Story = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/angular/arg-types-mapping.ts.mdx b/docs/snippets/angular/arg-types-mapping.ts.mdx new file mode 100644 index 000000000000..0a3fc9d135dd --- /dev/null +++ b/docs/snippets/angular/arg-types-mapping.ts.mdx @@ -0,0 +1,22 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + label: { + options: ['Normal', 'Bold', 'Italic'], + mapping: { + Bold: <b>Bold</b>, + Italic: <i>Italic</i>, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-name.ts.mdx b/docs/snippets/angular/arg-types-name.ts.mdx new file mode 100644 index 000000000000..8cc989fd70e0 --- /dev/null +++ b/docs/snippets/angular/arg-types-name.ts.mdx @@ -0,0 +1,18 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-options.ts.mdx b/docs/snippets/angular/arg-types-options.ts.mdx new file mode 100644 index 000000000000..733fb12c9697 --- /dev/null +++ b/docs/snippets/angular/arg-types-options.ts.mdx @@ -0,0 +1,18 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-table.ts.mdx b/docs/snippets/angular/arg-types-table.ts.mdx new file mode 100644 index 000000000000..60492389fb10 --- /dev/null +++ b/docs/snippets/angular/arg-types-table.ts.mdx @@ -0,0 +1,21 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/arg-types-type.ts.mdx b/docs/snippets/angular/arg-types-type.ts.mdx new file mode 100644 index 000000000000..6ab986e41331 --- /dev/null +++ b/docs/snippets/angular/arg-types-type.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { Example } from './Example'; + +const meta: Meta<Example> = { + component: Example, + argTypes: { + value: { type: 'number' }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/button-group-story.ts.mdx b/docs/snippets/angular/button-group-story.ts.mdx index 29a38182fcca..818dbb88caea 100644 --- a/docs/snippets/angular/button-group-story.ts.mdx +++ b/docs/snippets/angular/button-group-story.ts.mdx @@ -14,11 +14,6 @@ import { Button } from './button.component'; import * as ButtonStories from './Button.stories'; const meta: Meta<ButtonGroup> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, decorators: [ moduleMetadata({ @@ -31,11 +26,6 @@ const meta: Meta<ButtonGroup> = { export default meta; type Story = StoryObj<ButtonGroup>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const Pair: Story = { args: { buttons: [{ ...ButtonStories.Primary.args }, { ...ButtonStories.Secondary.args }], diff --git a/docs/snippets/angular/button-story-action-event-handle.ts.mdx b/docs/snippets/angular/button-story-action-event-handle.ts.mdx index d0f22ea20a77..9196288b4bb7 100644 --- a/docs/snippets/angular/button-story-action-event-handle.ts.mdx +++ b/docs/snippets/angular/button-story-action-event-handle.ts.mdx @@ -8,11 +8,6 @@ import { withActions } from '@storybook/addon-actions/decorator'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { diff --git a/docs/snippets/angular/button-story-argtypes-with-categories.ts.mdx b/docs/snippets/angular/button-story-argtypes-with-categories.ts.mdx index ccc15247d228..b559a013e62c 100644 --- a/docs/snippets/angular/button-story-argtypes-with-categories.ts.mdx +++ b/docs/snippets/angular/button-story-argtypes-with-categories.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/angular/button-story-argtypes-with-subcategories.ts.mdx b/docs/snippets/angular/button-story-argtypes-with-subcategories.ts.mdx index 14b67ec5bec1..cb291207aea7 100644 --- a/docs/snippets/angular/button-story-argtypes-with-subcategories.ts.mdx +++ b/docs/snippets/angular/button-story-argtypes-with-subcategories.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/angular/button-story-auto-docs.ts.mdx b/docs/snippets/angular/button-story-auto-docs.ts.mdx index 8e7bbdd5046d..d0b433899e96 100644 --- a/docs/snippets/angular/button-story-auto-docs.ts.mdx +++ b/docs/snippets/angular/button-story-auto-docs.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/angular/button-story-baseline.ts.mdx b/docs/snippets/angular/button-story-baseline.ts.mdx index d48afc5c59e9..6269c5aaea66 100644 --- a/docs/snippets/angular/button-story-baseline.ts.mdx +++ b/docs/snippets/angular/button-story-baseline.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-click-handler-args.ts.mdx b/docs/snippets/angular/button-story-click-handler-args.ts.mdx index 7bf1e9526fa9..76e7798c81fc 100644 --- a/docs/snippets/angular/button-story-click-handler-args.ts.mdx +++ b/docs/snippets/angular/button-story-click-handler-args.ts.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-click-handler-simplificated.ts.mdx b/docs/snippets/angular/button-story-click-handler-simplificated.ts.mdx index aeaec7a06377..0badb17bf9a3 100644 --- a/docs/snippets/angular/button-story-click-handler-simplificated.ts.mdx +++ b/docs/snippets/angular/button-story-click-handler-simplificated.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-click-handler.ts.mdx b/docs/snippets/angular/button-story-click-handler.ts.mdx index aa1bb7cf4fe5..7d8159824699 100644 --- a/docs/snippets/angular/button-story-click-handler.ts.mdx +++ b/docs/snippets/angular/button-story-click-handler.ts.mdx @@ -8,11 +8,6 @@ import { Button } from './button.component'; import { action } from '@storybook/addon-actions'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-component-args-primary.ts.mdx b/docs/snippets/angular/button-story-component-args-primary.ts.mdx index e8c29a9a0b81..a63159aa3f40 100644 --- a/docs/snippets/angular/button-story-component-args-primary.ts.mdx +++ b/docs/snippets/angular/button-story-component-args-primary.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/angular/button-story-component-decorator.ts.mdx b/docs/snippets/angular/button-story-component-decorator.ts.mdx index 6a494dc54ae4..b3bb636fea4f 100644 --- a/docs/snippets/angular/button-story-component-decorator.ts.mdx +++ b/docs/snippets/angular/button-story-component-decorator.ts.mdx @@ -10,11 +10,6 @@ import { Button } from './button.component'; import { Parent } from './parent.component'; // Parent contains ng-content const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/button-story-controls-primary-variant.ts.mdx b/docs/snippets/angular/button-story-controls-primary-variant.ts.mdx index 324b77020e46..0beccf9c2787 100644 --- a/docs/snippets/angular/button-story-controls-primary-variant.ts.mdx +++ b/docs/snippets/angular/button-story-controls-primary-variant.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-controls-radio-group.ts.mdx b/docs/snippets/angular/button-story-controls-radio-group.ts.mdx index 3837c6c29dfe..25196375760e 100644 --- a/docs/snippets/angular/button-story-controls-radio-group.ts.mdx +++ b/docs/snippets/angular/button-story-controls-radio-group.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { variant: { diff --git a/docs/snippets/angular/button-story-decorator.ts.mdx b/docs/snippets/angular/button-story-decorator.ts.mdx index 7d9e9495169d..84ef59b6e356 100644 --- a/docs/snippets/angular/button-story-decorator.ts.mdx +++ b/docs/snippets/angular/button-story-decorator.ts.mdx @@ -10,11 +10,6 @@ import { Button } from './button.component'; import { Parent } from './parent.component'; // Parent contains ng-content const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-default-export-with-component.ts.mdx b/docs/snippets/angular/button-story-default-export-with-component.ts.mdx index 1fde5eafe2ee..ec5bd7c6712d 100644 --- a/docs/snippets/angular/button-story-default-export-with-component.ts.mdx +++ b/docs/snippets/angular/button-story-default-export-with-component.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-disable-addon.ts.mdx b/docs/snippets/angular/button-story-disable-addon.ts.mdx index e55c6da6f29c..808f3a9985cd 100644 --- a/docs/snippets/angular/button-story-disable-addon.ts.mdx +++ b/docs/snippets/angular/button-story-disable-addon.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { myAddon: { disable: true }, // Disables the addon diff --git a/docs/snippets/angular/button-story-hide-nocontrols-warning.ts.mdx b/docs/snippets/angular/button-story-hide-nocontrols-warning.ts.mdx index 697e92179756..9462922bc188 100644 --- a/docs/snippets/angular/button-story-hide-nocontrols-warning.ts.mdx +++ b/docs/snippets/angular/button-story-hide-nocontrols-warning.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-matching-argtypes.ts.mdx b/docs/snippets/angular/button-story-matching-argtypes.ts.mdx index 9df29871fc0b..20f4d0f92594 100644 --- a/docs/snippets/angular/button-story-matching-argtypes.ts.mdx +++ b/docs/snippets/angular/button-story-matching-argtypes.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { argTypesRegex: '^on.*' } }, }; diff --git a/docs/snippets/angular/button-story-onclick-action-argtype.ts.mdx b/docs/snippets/angular/button-story-onclick-action-argtype.ts.mdx index e4b596459285..b04c9d1b8ba4 100644 --- a/docs/snippets/angular/button-story-onclick-action-argtype.ts.mdx +++ b/docs/snippets/angular/button-story-onclick-action-argtype.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { onClick: { action: 'clicked' } }, }; diff --git a/docs/snippets/angular/button-story-primary-composition.ts.mdx b/docs/snippets/angular/button-story-primary-composition.ts.mdx index b56f034c3133..b67964fc0fdc 100644 --- a/docs/snippets/angular/button-story-primary-composition.ts.mdx +++ b/docs/snippets/angular/button-story-primary-composition.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-primary-long-name.ts.mdx b/docs/snippets/angular/button-story-primary-long-name.ts.mdx index fc60a2e023ab..6de7e29b5db2 100644 --- a/docs/snippets/angular/button-story-primary-long-name.ts.mdx +++ b/docs/snippets/angular/button-story-primary-long-name.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-rename-story.ts.mdx b/docs/snippets/angular/button-story-rename-story.ts.mdx index efc01dc91dbf..08c0c9a903e7 100644 --- a/docs/snippets/angular/button-story-rename-story.ts.mdx +++ b/docs/snippets/angular/button-story-rename-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story-using-args.ts.mdx b/docs/snippets/angular/button-story-using-args.ts.mdx index 0c07ef2ba9d0..ddf6c38d0942 100644 --- a/docs/snippets/angular/button-story-using-args.ts.mdx +++ b/docs/snippets/angular/button-story-using-args.ts.mdx @@ -6,22 +6,12 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const Primary: Story = { args: { label: 'Button', diff --git a/docs/snippets/angular/button-story-with-args.ts.mdx b/docs/snippets/angular/button-story-with-args.ts.mdx index 372cc4031885..501527df2dd2 100644 --- a/docs/snippets/angular/button-story-with-args.ts.mdx +++ b/docs/snippets/angular/button-story-with-args.ts.mdx @@ -6,22 +6,12 @@ import type { Meta, StoryObj } from '@storybook/angular/'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const Primary: Story = { args: { primary: true, diff --git a/docs/snippets/angular/button-story-with-blue-args.ts.mdx b/docs/snippets/angular/button-story-with-blue-args.ts.mdx index fc4a522d2f8c..09da9c69fa8b 100644 --- a/docs/snippets/angular/button-story-with-blue-args.ts.mdx +++ b/docs/snippets/angular/button-story-with-blue-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/angular/button-story-with-emojis.ts.mdx b/docs/snippets/angular/button-story-with-emojis.ts.mdx index 37525e9be2b0..b89137122e33 100644 --- a/docs/snippets/angular/button-story-with-emojis.ts.mdx +++ b/docs/snippets/angular/button-story-with-emojis.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/button-story.ts.mdx b/docs/snippets/angular/button-story.ts.mdx index 758c5e70ea56..4afae9406a3a 100644 --- a/docs/snippets/angular/button-story.ts.mdx +++ b/docs/snippets/angular/button-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/checkbox-story-csf.ts.mdx b/docs/snippets/angular/checkbox-story-csf.ts.mdx index 031a41ff18e1..babc3ace071f 100644 --- a/docs/snippets/angular/checkbox-story-csf.ts.mdx +++ b/docs/snippets/angular/checkbox-story-csf.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Checkbox } from './checkbox.component'; const meta: Meta<Checkbox> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Checkbox', component: Checkbox, }; diff --git a/docs/snippets/angular/component-story-conditional-controls-mutual-exclusion.ts.mdx b/docs/snippets/angular/component-story-conditional-controls-mutual-exclusion.ts.mdx index 9c0f93fb59ee..f76e8cb1fc53 100644 --- a/docs/snippets/angular/component-story-conditional-controls-mutual-exclusion.ts.mdx +++ b/docs/snippets/angular/component-story-conditional-controls-mutual-exclusion.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/angular/component-story-conditional-controls-toggle.ts.mdx b/docs/snippets/angular/component-story-conditional-controls-toggle.ts.mdx index eb1227044c51..48f50c70de8d 100644 --- a/docs/snippets/angular/component-story-conditional-controls-toggle.ts.mdx +++ b/docs/snippets/angular/component-story-conditional-controls-toggle.ts.mdx @@ -6,16 +6,11 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/angular/component-story-custom-args-complex.ts.mdx b/docs/snippets/angular/component-story-custom-args-complex.ts.mdx index 836c63c79913..4f5ab8853d1e 100644 --- a/docs/snippets/angular/component-story-custom-args-complex.ts.mdx +++ b/docs/snippets/angular/component-story-custom-args-complex.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { YourComponent } from './your-component.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -27,16 +22,10 @@ const meta: Meta<YourComponent> = { export default meta; type Story = StoryObj<YourComponent>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA: String, valuePropertyB: String) => { - // Makes some computations and returns something + // Do some logic here }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const ExampleStory: Story = { render: (args) => { const { propertyA, propertyB } = args; diff --git a/docs/snippets/angular/component-story-custom-args-mapping.ts.mdx b/docs/snippets/angular/component-story-custom-args-mapping.ts.mdx index 6ab0d6ad801d..a13411c867b4 100644 --- a/docs/snippets/angular/component-story-custom-args-mapping.ts.mdx +++ b/docs/snippets/angular/component-story-custom-args-mapping.ts.mdx @@ -10,11 +10,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { arrow: { diff --git a/docs/snippets/angular/component-story-custom-params.ts.mdx b/docs/snippets/angular/component-story-custom-params.ts.mdx index 23d162442cc3..d8184f0bba34 100644 --- a/docs/snippets/angular/component-story-custom-params.ts.mdx +++ b/docs/snippets/angular/component-story-custom-params.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/component-story-disable-controls-alt.ts.mdx b/docs/snippets/angular/component-story-disable-controls-alt.ts.mdx index 4945236fdaf9..b9afc29b920b 100644 --- a/docs/snippets/angular/component-story-disable-controls-alt.ts.mdx +++ b/docs/snippets/angular/component-story-disable-controls-alt.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { YourComponent } from './YourComponent.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/angular/component-story-disable-controls-regex.ts.mdx b/docs/snippets/angular/component-story-disable-controls-regex.ts.mdx index bf2bed0a771b..fa9b894c73a2 100644 --- a/docs/snippets/angular/component-story-disable-controls-regex.ts.mdx +++ b/docs/snippets/angular/component-story-disable-controls-regex.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { YourComponent } from './YourComponent.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/angular/component-story-disable-controls.ts.mdx b/docs/snippets/angular/component-story-disable-controls.ts.mdx index 7080a4f65684..d15002981582 100644 --- a/docs/snippets/angular/component-story-disable-controls.ts.mdx +++ b/docs/snippets/angular/component-story-disable-controls.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { YourComponent } from './YourComponent.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/angular/component-story-figma-integration.ts.mdx b/docs/snippets/angular/component-story-figma-integration.ts.mdx index c5be0d8f85e4..5b030c422fd2 100644 --- a/docs/snippets/angular/component-story-figma-integration.ts.mdx +++ b/docs/snippets/angular/component-story-figma-integration.ts.mdx @@ -9,7 +9,6 @@ import { MyComponent } from './MyComponent.component'; // More on default export: https://storybook.js.org/docs/angular/writing-stories/introduction#default-export const meta: Meta<MyComponent> = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; diff --git a/docs/snippets/angular/component-story-highlight-addon.ts.mdx b/docs/snippets/angular/component-story-highlight-addon.ts.mdx index 1786f86192e0..b64a6c96bac7 100644 --- a/docs/snippets/angular/component-story-highlight-addon.ts.mdx +++ b/docs/snippets/angular/component-story-highlight-addon.ts.mdx @@ -1,34 +1,29 @@ ```ts -// Card.stories.ts +// MyComponent.stories.ts -import { componentWrapperDecorator } from '@storybook/angular'; import type { Meta, StoryObj } from '@storybook/angular'; +import { componentWrapperDecorator } from '@storybook/angular'; import { useChannel } from '@storybook/preview-api'; -import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; -import { Card } from './card.component'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; -const meta: Meta<Card> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Card', - component: Card, +import { MyComponent } from './MyComponent.component'; + +const meta: Meta<MyComponent> = { + component: MyComponent, }; export default meta; -type Story = StoryObj<Card>; +type Story = StoryObj<MyComponent>; -export const Default: Story = (args) => ({ - template: '<app-card></app-card>', +export const Highlighted: Story = { decorators: [ componentWrapperDecorator((story) => { const emit = useChannel({}); emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], + elements: ['h2', 'a', '.storybook-button'], }); return story; }), ], -}); +}; ``` diff --git a/docs/snippets/angular/component-story-sort-controls.ts.mdx b/docs/snippets/angular/component-story-sort-controls.ts.mdx index 2bcb35760e9f..a5c5dcf6815f 100644 --- a/docs/snippets/angular/component-story-sort-controls.ts.mdx +++ b/docs/snippets/angular/component-story-sort-controls.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from from '@storybook/angular'; import { YourComponent } from './YourComponent.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, parameters: { controls: { sort: 'requiredFirst' } }, }; diff --git a/docs/snippets/angular/component-story-static-asset-cdn.ts.mdx b/docs/snippets/angular/component-story-static-asset-cdn.ts.mdx index 6d4a6237f588..de438cc36b41 100644 --- a/docs/snippets/angular/component-story-static-asset-cdn.ts.mdx +++ b/docs/snippets/angular/component-story-static-asset-cdn.ts.mdx @@ -6,22 +6,12 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ props: { diff --git a/docs/snippets/angular/component-story-static-asset-with-import.ts.mdx b/docs/snippets/angular/component-story-static-asset-with-import.ts.mdx index 0a7da09005d5..7b6d12ee2581 100644 --- a/docs/snippets/angular/component-story-static-asset-with-import.ts.mdx +++ b/docs/snippets/angular/component-story-static-asset-with-import.ts.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent.component'; import imageFile from './static/image.png'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -24,11 +19,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ props: { diff --git a/docs/snippets/angular/component-story-static-asset-without-import.ts.mdx b/docs/snippets/angular/component-story-static-asset-without-import.ts.mdx index 2d34f0a17c70..80e98e30a3f3 100644 --- a/docs/snippets/angular/component-story-static-asset-without-import.ts.mdx +++ b/docs/snippets/angular/component-story-static-asset-without-import.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; diff --git a/docs/snippets/angular/component-story-with-accessibility.ts.mdx b/docs/snippets/angular/component-story-with-accessibility.ts.mdx index ea79af3689b9..63b276aa3d69 100644 --- a/docs/snippets/angular/component-story-with-accessibility.ts.mdx +++ b/docs/snippets/angular/component-story-with-accessibility.ts.mdx @@ -6,10 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './Button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/angular/component-story-with-custom-render-function.ts.mdx b/docs/snippets/angular/component-story-with-custom-render-function.ts.mdx index e4cc5ded0dc9..7894bbf57045 100644 --- a/docs/snippets/angular/component-story-with-custom-render-function.ts.mdx +++ b/docs/snippets/angular/component-story-with-custom-render-function.ts.mdx @@ -12,11 +12,6 @@ import { Layout } from './Layout.component'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, decorators: [ moduleMetadata({ @@ -29,6 +24,7 @@ const meta: Meta<MyComponent> = { export default meta; type Story = StoryObj<MyComponent>; +// This story uses a render function to fully control how the component renders. export const Example: Story = { render: () => ({ template: ` diff --git a/docs/snippets/angular/documentscreen-story-msw-graphql-query.ts.mdx b/docs/snippets/angular/documentscreen-story-msw-graphql-query.ts.mdx index fb77bc13e45e..716ac4a0356b 100644 --- a/docs/snippets/angular/documentscreen-story-msw-graphql-query.ts.mdx +++ b/docs/snippets/angular/documentscreen-story-msw-graphql-query.ts.mdx @@ -18,11 +18,6 @@ import { PageLayout } from './PageLayout.component'; import { MockGraphQLModule } from './mock-graphql.module'; const meta: Meta<DocumentScreen> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, decorators: [ moduleMetadata({ @@ -56,30 +51,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/angular/documentscreen-story-msw-rest-request.ts.mdx b/docs/snippets/angular/documentscreen-story-msw-rest-request.ts.mdx index 3cff84f1e07a..271ad00de38f 100644 --- a/docs/snippets/angular/documentscreen-story-msw-rest-request.ts.mdx +++ b/docs/snippets/angular/documentscreen-story-msw-rest-request.ts.mdx @@ -8,7 +8,6 @@ import { rest } from 'msw'; import { DocumentScreen } from './YourPage.component'; const meta: Meta<DocumentScreen> = { - title: 'DocumentScreen', component: DocumentScreen, }; @@ -37,30 +36,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/angular/gizmo-story-controls-customization.ts.mdx b/docs/snippets/angular/gizmo-story-controls-customization.ts.mdx index 6387a40f2c16..393d283fd517 100644 --- a/docs/snippets/angular/gizmo-story-controls-customization.ts.mdx +++ b/docs/snippets/angular/gizmo-story-controls-customization.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Gizmo } from './Gizmo.component'; const meta: Meta<Gizmo> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Gizmo', component: Gizmo, argTypes: { canRotate: { diff --git a/docs/snippets/angular/highlight-addon-custom-style.ts.mdx b/docs/snippets/angular/highlight-addon-custom-style.ts.mdx new file mode 100644 index 000000000000..193a4387e614 --- /dev/null +++ b/docs/snippets/angular/highlight-addon-custom-style.ts.mdx @@ -0,0 +1,31 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/angular'; +import { componentWrapperDecorator } from '@storybook/angular'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent.component'; + +const meta: Meta<MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<MyComponent>; + +export const StyledHighlight: Story = { + decorators: [ + componentWrapperDecorator((story) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return story; + }), + ], +}; +``` diff --git a/docs/snippets/angular/histogram-story.ts.mdx b/docs/snippets/angular/histogram-story.ts.mdx index b56310b88522..d611d61fa728 100644 --- a/docs/snippets/angular/histogram-story.ts.mdx +++ b/docs/snippets/angular/histogram-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { HistogramComponent } from './histogram.component'; const meta: Meta<HistogramComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: HistogramComponent, }; diff --git a/docs/snippets/angular/list-story-expanded.ts.mdx b/docs/snippets/angular/list-story-expanded.ts.mdx index 4da46379e231..fe1d3873cb5f 100644 --- a/docs/snippets/angular/list-story-expanded.ts.mdx +++ b/docs/snippets/angular/list-story-expanded.ts.mdx @@ -11,11 +11,6 @@ import { List } from './list.component'; import { ListItem } from './list-item.component'; const meta: Meta<List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/list-story-reuse-data.ts.mdx b/docs/snippets/angular/list-story-reuse-data.ts.mdx index e5518668fd5e..ce151c88fee7 100644 --- a/docs/snippets/angular/list-story-reuse-data.ts.mdx +++ b/docs/snippets/angular/list-story-reuse-data.ts.mdx @@ -14,11 +14,6 @@ import { ListItem } from './list-item.component'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta<List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/list-story-starter.ts.mdx b/docs/snippets/angular/list-story-starter.ts.mdx index abcb05168454..745247b73f68 100644 --- a/docs/snippets/angular/list-story-starter.ts.mdx +++ b/docs/snippets/angular/list-story-starter.ts.mdx @@ -10,10 +10,6 @@ import { CommonModule } from '@angular/common'; import { List } from './list.component'; const meta: Meta<List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ component: List, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/loader-story.ts.mdx b/docs/snippets/angular/loader-story.ts.mdx index aa60154f53b2..b7f15ac294a2 100644 --- a/docs/snippets/angular/loader-story.ts.mdx +++ b/docs/snippets/angular/loader-story.ts.mdx @@ -12,11 +12,6 @@ import { CommonModule } from '@angular/common'; import { TodoItem } from './TodoItem'; const meta: Meta<TodoItem> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/login-form-with-play-function.ts.mdx b/docs/snippets/angular/login-form-with-play-function.ts.mdx index 54a9d0362e41..076c8719d478 100644 --- a/docs/snippets/angular/login-form-with-play-function.ts.mdx +++ b/docs/snippets/angular/login-form-with-play-function.ts.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm.component'; const meta: Meta<LoginForm> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/angular/my-component-argtypes-with-mapping.ts.mdx b/docs/snippets/angular/my-component-argtypes-with-mapping.ts.mdx deleted file mode 100644 index ec5202d70346..000000000000 --- a/docs/snippets/angular/my-component-argtypes-with-mapping.ts.mdx +++ /dev/null @@ -1,27 +0,0 @@ -```ts -// MyComponent.stories.ts - -import type { Meta } from '@storybook/angular'; - -import { MyComponent } from './MyComponent'; - -const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, - argTypes: { - label: { - options: ['Normal', 'Bold', 'Italic'], - mapping: { - Bold: <b>Bold</b>, - Italic: <i>Italic</i>, - }, - }, - }, -}; - -export default meta; -``` diff --git a/docs/snippets/angular/my-component-disable-toc.ts.mdx b/docs/snippets/angular/my-component-disable-toc.ts.mdx new file mode 100644 index 000000000000..6882159c2318 --- /dev/null +++ b/docs/snippets/angular/my-component-disable-toc.ts.mdx @@ -0,0 +1,21 @@ +```ts +// MyComponent.stories.ts + +import type { Meta } from '@storybook/angular'; + +import { MyComponent } from './MyComponent.component'; + +const meta: Meta<MyComponent> = { + component: MyComponent, + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/angular/my-component-env-var-config.ts.mdx b/docs/snippets/angular/my-component-env-var-config.ts.mdx index 0d35434c2d2c..1114d8a6a32a 100644 --- a/docs/snippets/angular/my-component-env-var-config.ts.mdx +++ b/docs/snippets/angular/my-component-env-var-config.ts.mdx @@ -7,11 +7,6 @@ import { MyComponent } from './MyComponent'; // To apply a set of backgrounds to all stories of Button: const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-alt-queries.ts.mdx b/docs/snippets/angular/my-component-play-function-alt-queries.ts.mdx index a377758d478f..9811e482dce6 100644 --- a/docs/snippets/angular/my-component-play-function-alt-queries.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-alt-queries.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'QueryMethods', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-composition.ts.mdx b/docs/snippets/angular/my-component-play-function-composition.ts.mdx index e2efd87f13cc..ab10e2c86316 100644 --- a/docs/snippets/angular/my-component-play-function-composition.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-composition.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-query-findby.ts.mdx b/docs/snippets/angular/my-component-play-function-query-findby.ts.mdx index 1891b7ef7c35..d85ab7053a8c 100644 --- a/docs/snippets/angular/my-component-play-function-query-findby.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-query-findby.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'Async Query Methods', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-waitfor.ts.mdx b/docs/snippets/angular/my-component-play-function-waitfor.ts.mdx index f7bb65cf1e24..94a155754bb1 100644 --- a/docs/snippets/angular/my-component-play-function-waitfor.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-waitfor.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'WithAsync', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-with-canvas.ts.mdx b/docs/snippets/angular/my-component-play-function-with-canvas.ts.mdx index d146f1715ee6..0e779966b11d 100644 --- a/docs/snippets/angular/my-component-play-function-with-canvas.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-with-canvas.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'WithCanvasElement', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-with-clickevent.ts.mdx b/docs/snippets/angular/my-component-play-function-with-clickevent.ts.mdx index e7c6490c6f4a..85fa8655e5e4 100644 --- a/docs/snippets/angular/my-component-play-function-with-clickevent.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-with-clickevent.ts.mdx @@ -8,7 +8,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'ClickExamples', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-with-delay.ts.mdx b/docs/snippets/angular/my-component-play-function-with-delay.ts.mdx index 7e2da2345e88..91b835eee7e8 100644 --- a/docs/snippets/angular/my-component-play-function-with-delay.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-with-delay.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'WithDelay', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-play-function-with-selectevent.ts.mdx b/docs/snippets/angular/my-component-play-function-with-selectevent.ts.mdx index 015fcb098b2a..4ab4e2e37200 100644 --- a/docs/snippets/angular/my-component-play-function-with-selectevent.ts.mdx +++ b/docs/snippets/angular/my-component-play-function-with-selectevent.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'WithSelectEvent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-story-basic-and-props.ts.mdx b/docs/snippets/angular/my-component-story-basic-and-props.ts.mdx index 7204cf076277..0e0928469a88 100644 --- a/docs/snippets/angular/my-component-story-basic-and-props.ts.mdx +++ b/docs/snippets/angular/my-component-story-basic-and-props.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-story-configure-viewports.ts.mdx b/docs/snippets/angular/my-component-story-configure-viewports.ts.mdx index 1bc7138f7f69..5cb0ba3f7b9e 100644 --- a/docs/snippets/angular/my-component-story-configure-viewports.ts.mdx +++ b/docs/snippets/angular/my-component-story-configure-viewports.ts.mdx @@ -8,11 +8,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon @@ -29,11 +24,6 @@ const meta: Meta<MyComponent> = { export default meta; type Story = StoryObj<MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { render: () => ({ template: '<MyComponent></MyComponent>', diff --git a/docs/snippets/angular/my-component-story-use-globaltype.ts.mdx b/docs/snippets/angular/my-component-story-use-globaltype.ts.mdx index 4c7f8e3e35ce..31d0f4e9f5c0 100644 --- a/docs/snippets/angular/my-component-story-use-globaltype.ts.mdx +++ b/docs/snippets/angular/my-component-story-use-globaltype.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-story-with-nonstory.ts.mdx b/docs/snippets/angular/my-component-story-with-nonstory.ts.mdx index dfbecc0ec347..984d4173b262 100644 --- a/docs/snippets/angular/my-component-story-with-nonstory.ts.mdx +++ b/docs/snippets/angular/my-component-story-with-nonstory.ts.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent.component'; import someData from './data.json'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/angular/my-component-story-with-storyname.ts.mdx b/docs/snippets/angular/my-component-story-with-storyname.ts.mdx index 1d78a06b5edf..c43744c30c60 100644 --- a/docs/snippets/angular/my-component-story-with-storyname.ts.mdx +++ b/docs/snippets/angular/my-component-story-with-storyname.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/my-component-with-env-variables.ts.mdx b/docs/snippets/angular/my-component-with-env-variables.ts.mdx index 5f39146d2387..6fb974f2373c 100644 --- a/docs/snippets/angular/my-component-with-env-variables.ts.mdx +++ b/docs/snippets/angular/my-component-with-env-variables.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/page-story-slots.ts.mdx b/docs/snippets/angular/page-story-slots.ts.mdx index 9354dc86b49e..63ac7f3309cc 100644 --- a/docs/snippets/angular/page-story-slots.ts.mdx +++ b/docs/snippets/angular/page-story-slots.ts.mdx @@ -5,31 +5,23 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Page } from './page.component'; -const meta: Meta<Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', - component: Page, -}; - -export default meta; -type Story = StoryObj<Page>; +type PagePropsAndCustomArgs = Page & { footer?: string }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ -export const CustomFooter: Story = { - render: (args) => ({ +const meta: Meta<PagePropsAndCustomArgs> = { + component: Page, + render: ({ footer, ...args }) => ({ props: args, template: ` <storybook-page> - <ng-container footer>${args.footer}</ng-container> + <ng-container footer>${footer}</ng-container> </storybook-page>`, }), +}; +export default meta; + +type Story = StoryObj<PagePropsAndCustomArgs>; + +export const CustomFooter: Story = { args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/angular/page-story-with-args-composition.ts.mdx b/docs/snippets/angular/page-story-with-args-composition.ts.mdx index 367a783464e8..f6826ab5f7ee 100644 --- a/docs/snippets/angular/page-story-with-args-composition.ts.mdx +++ b/docs/snippets/angular/page-story-with-args-composition.ts.mdx @@ -11,7 +11,6 @@ import * as DocumentHeader from './DocumentHeader.stories'; import * as DocumentList from './DocumentList.stories'; const meta: Meta<DocumentScreen> = { - title: 'DocumentScreen', component: DocumentScreen, }; diff --git a/docs/snippets/angular/page-story.ts.mdx b/docs/snippets/angular/page-story.ts.mdx index 5aa8b4bca390..fbb347f4bcb7 100644 --- a/docs/snippets/angular/page-story.ts.mdx +++ b/docs/snippets/angular/page-story.ts.mdx @@ -15,11 +15,6 @@ import { Page } from './page.component'; import * as HeaderStories from './Header.stories'; const meta: Meta<Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, decorators: [ moduleMetadata({ diff --git a/docs/snippets/angular/register-component-with-play-function.ts.mdx b/docs/snippets/angular/register-component-with-play-function.ts.mdx index 8f2c5c0585aa..083c1591fdb8 100644 --- a/docs/snippets/angular/register-component-with-play-function.ts.mdx +++ b/docs/snippets/angular/register-component-with-play-function.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { RegistrationForm } from './RegistrationForm.component'; const meta: Meta<RegistrationForm> = { - title: 'RegistrationForm', component: RegistrationForm, }; diff --git a/docs/snippets/angular/storybook-addon-a11y-component-config.ts.mdx b/docs/snippets/angular/storybook-addon-a11y-component-config.ts.mdx index dff3dff5c200..a708e95eac7d 100644 --- a/docs/snippets/angular/storybook-addon-a11y-component-config.ts.mdx +++ b/docs/snippets/angular/storybook-addon-a11y-component-config.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { MyComponent } from './MyComponent'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, parameters: { a11y: { diff --git a/docs/snippets/angular/storybook-addon-a11y-disable.ts.mdx b/docs/snippets/angular/storybook-addon-a11y-disable.ts.mdx index 01294f095a56..6e409f0cc574 100644 --- a/docs/snippets/angular/storybook-addon-a11y-disable.ts.mdx +++ b/docs/snippets/angular/storybook-addon-a11y-disable.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; diff --git a/docs/snippets/angular/storybook-addon-a11y-story-config.ts.mdx b/docs/snippets/angular/storybook-addon-a11y-story-config.ts.mdx index df8bf777cdc3..3ea86e1bf8fb 100644 --- a/docs/snippets/angular/storybook-addon-a11y-story-config.ts.mdx +++ b/docs/snippets/angular/storybook-addon-a11y-story-config.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; diff --git a/docs/snippets/angular/storybook-addon-backgrounds-configure-backgrounds.ts.mdx b/docs/snippets/angular/storybook-addon-backgrounds-configure-backgrounds.ts.mdx index b8a0c4e51c97..bae9bba9015e 100644 --- a/docs/snippets/angular/storybook-addon-backgrounds-configure-backgrounds.ts.mdx +++ b/docs/snippets/angular/storybook-addon-backgrounds-configure-backgrounds.ts.mdx @@ -7,11 +7,6 @@ import { Button } from './button.component'; // To apply a set of backgrounds to all stories of Button: const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { diff --git a/docs/snippets/angular/storybook-addon-backgrounds-configure-grid.ts.mdx b/docs/snippets/angular/storybook-addon-backgrounds-configure-grid.ts.mdx index a06c4f6281f2..f3a792672622 100644 --- a/docs/snippets/angular/storybook-addon-backgrounds-configure-grid.ts.mdx +++ b/docs/snippets/angular/storybook-addon-backgrounds-configure-grid.ts.mdx @@ -7,11 +7,6 @@ import { Button } from './button.component'; // To apply a set of backgrounds to all stories of Button: const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { @@ -19,8 +14,8 @@ const meta: Meta<Button> = { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/angular/storybook-addon-backgrounds-disable-backgrounds.ts.mdx b/docs/snippets/angular/storybook-addon-backgrounds-disable-backgrounds.ts.mdx index a40ae647d30b..ea30487c253b 100644 --- a/docs/snippets/angular/storybook-addon-backgrounds-disable-backgrounds.ts.mdx +++ b/docs/snippets/angular/storybook-addon-backgrounds-disable-backgrounds.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/storybook-addon-backgrounds-disable-grid.ts.mdx b/docs/snippets/angular/storybook-addon-backgrounds-disable-grid.ts.mdx index 5a855243eee7..b6f323a0f410 100644 --- a/docs/snippets/angular/storybook-addon-backgrounds-disable-grid.ts.mdx +++ b/docs/snippets/angular/storybook-addon-backgrounds-disable-grid.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/storybook-addon-backgrounds-override-background-color.ts.mdx b/docs/snippets/angular/storybook-addon-backgrounds-override-background-color.ts.mdx index 55399284c7d4..73270622202b 100644 --- a/docs/snippets/angular/storybook-addon-backgrounds-override-background-color.ts.mdx +++ b/docs/snippets/angular/storybook-addon-backgrounds-override-background-color.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/storybook-component-layout-param.ts.mdx b/docs/snippets/angular/storybook-component-layout-param.ts.mdx index 45746977de9b..1f30ed4c0c04 100644 --- a/docs/snippets/angular/storybook-component-layout-param.ts.mdx +++ b/docs/snippets/angular/storybook-component-layout-param.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/angular/storybook-customize-argtypes.ts.mdx b/docs/snippets/angular/storybook-customize-argtypes.ts.mdx deleted file mode 100644 index e8982ed1c6f8..000000000000 --- a/docs/snippets/angular/storybook-customize-argtypes.ts.mdx +++ /dev/null @@ -1,32 +0,0 @@ -```ts -// Button.stories.ts - -import type { Meta, StoryObj } from '@storybook/angular'; - -import { Button } from './button.component'; - -const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', - component: Button, - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -}; - -export default meta; -``` diff --git a/docs/snippets/angular/storybook-interactions-play-function.ts.mdx b/docs/snippets/angular/storybook-interactions-play-function.ts.mdx index 0ccef11493c8..5dbed73bfb99 100644 --- a/docs/snippets/angular/storybook-interactions-play-function.ts.mdx +++ b/docs/snippets/angular/storybook-interactions-play-function.ts.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { Form } from './Form.component'; const meta: Meta<Form> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, argTypes: { onSubmit: { action: true }, diff --git a/docs/snippets/angular/storybook-interactions-step-function.ts.mdx b/docs/snippets/angular/storybook-interactions-step-function.ts.mdx index 2c1a66e71ea8..9374ac5cb3cb 100644 --- a/docs/snippets/angular/storybook-interactions-step-function.ts.mdx +++ b/docs/snippets/angular/storybook-interactions-step-function.ts.mdx @@ -8,7 +8,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent.component'; const meta: Meta<MyComponent> = { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/angular/storybook-story-layout-param.ts.mdx b/docs/snippets/angular/storybook-story-layout-param.ts.mdx index c408aba095b9..4341efcf43fb 100644 --- a/docs/snippets/angular/storybook-story-layout-param.ts.mdx +++ b/docs/snippets/angular/storybook-story-layout-param.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { Button } from './button.component'; const meta: Meta<Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/angular/table-story-fully-customize-controls.ts.mdx b/docs/snippets/angular/table-story-fully-customize-controls.ts.mdx deleted file mode 100644 index 5abdc597eeb1..000000000000 --- a/docs/snippets/angular/table-story-fully-customize-controls.ts.mdx +++ /dev/null @@ -1,49 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/angular'; - -import { Table } from './Table.component'; - -const meta: Meta<Table> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -export default meta; -type Story = StoryObj<Table>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/angular/api/csf - * to learn how to use render functions. - */ -export const Numeric: Story = { - render: (args) => ({ - props: args, - template: ` - <table> - <tbody> - <tr *ngFor="let row of data; let i=index"> - <td *ngFor="let col of row; let j=index"> - {{data[i][j]}} - </td> - </tr> - </tbody> - </table> - `, - }), - args: { - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/angular/typed-csf-file.ts.mdx b/docs/snippets/angular/typed-csf-file.ts.mdx new file mode 100644 index 000000000000..6ac8b473a93b --- /dev/null +++ b/docs/snippets/angular/typed-csf-file.ts.mdx @@ -0,0 +1,22 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/angular'; + +import { Button } from './button.component'; + +const meta: Meta<Button> = { + component: Button, +}; +export default meta; + +type Story = StoryObj<Button>; + +export const Basic: Story = {}; + +export const Primary: Story = { + args: { + primary: true, + }, +}; +``` diff --git a/docs/snippets/angular/your-component-with-decorator.ts.mdx b/docs/snippets/angular/your-component-with-decorator.ts.mdx index 815808b5d281..fce0c1e64588 100644 --- a/docs/snippets/angular/your-component-with-decorator.ts.mdx +++ b/docs/snippets/angular/your-component-with-decorator.ts.mdx @@ -8,11 +8,6 @@ import type { Meta } from '@storybook/angular'; import { YourComponent } from './your.component'; const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [componentWrapperDecorator((story) => `<div style="margin: 3em">${story}</div>`)], }; diff --git a/docs/snippets/angular/your-component.ts.mdx b/docs/snippets/angular/your-component.ts.mdx index 1cd03bce7da7..005b234e585a 100644 --- a/docs/snippets/angular/your-component.ts.mdx +++ b/docs/snippets/angular/your-component.ts.mdx @@ -7,11 +7,6 @@ import { YourComponent } from './your.component'; //👇 This default export determines where your story goes in the story list const meta: Meta<YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/common/addon-highlight-customize.js.mdx b/docs/snippets/common/addon-highlight-customize.js.mdx deleted file mode 100644 index 45d07886f32e..000000000000 --- a/docs/snippets/common/addon-highlight-customize.js.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```js -// MyComponent.stories.js - -emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - color: 'red', - style: 'solid', // 'dotted' | 'dashed' | 'solid' | 'double' -}); -``` diff --git a/docs/snippets/common/addon-highlight-reset.js.mdx b/docs/snippets/common/addon-highlight-reset.js.mdx deleted file mode 100644 index 54d5252ed60b..000000000000 --- a/docs/snippets/common/addon-highlight-reset.js.mdx +++ /dev/null @@ -1,5 +0,0 @@ -```js -// MyComponent.stories.js - -emit(RESET_HIGHLIGHT); -``` diff --git a/docs/snippets/common/api-doc-block-argtypes-parameter.ts-4-9.mdx b/docs/snippets/common/api-doc-block-argtypes-parameter.ts-4-9.mdx index da1ec2c8251f..0e3c21ff0382 100644 --- a/docs/snippets/common/api-doc-block-argtypes-parameter.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-argtypes-parameter.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta } from '@storybook/<your-framework>'; +import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-argtypes-parameter.ts.mdx b/docs/snippets/common/api-doc-block-argtypes-parameter.ts.mdx index 1daa1c1c2d22..adb56a0b82f8 100644 --- a/docs/snippets/common/api-doc-block-argtypes-parameter.ts.mdx +++ b/docs/snippets/common/api-doc-block-argtypes-parameter.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta } from '@storybook/<your-framework>'; +import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-canvas-parameter.ts-4-9.mdx b/docs/snippets/common/api-doc-block-canvas-parameter.ts-4-9.mdx index 808b7d885052..1b100d2be0a6 100644 --- a/docs/snippets/common/api-doc-block-canvas-parameter.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-canvas-parameter.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-canvas-parameter.ts.mdx b/docs/snippets/common/api-doc-block-canvas-parameter.ts.mdx index e9289baf9485..ec65837bc0cd 100644 --- a/docs/snippets/common/api-doc-block-canvas-parameter.ts.mdx +++ b/docs/snippets/common/api-doc-block-canvas-parameter.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-controls-parameter.ts-4-9.mdx b/docs/snippets/common/api-doc-block-controls-parameter.ts-4-9.mdx index da1ec2c8251f..0e3c21ff0382 100644 --- a/docs/snippets/common/api-doc-block-controls-parameter.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-controls-parameter.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta } from '@storybook/<your-framework>'; +import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-controls-parameter.ts.mdx b/docs/snippets/common/api-doc-block-controls-parameter.ts.mdx index 1daa1c1c2d22..adb56a0b82f8 100644 --- a/docs/snippets/common/api-doc-block-controls-parameter.ts.mdx +++ b/docs/snippets/common/api-doc-block-controls-parameter.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta } from '@storybook/<your-framework>'; +import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-description-example.ts-4-9.mdx b/docs/snippets/common/api-doc-block-description-example.ts-4-9.mdx index 69cbed812f55..cfcba681498f 100644 --- a/docs/snippets/common/api-doc-block-description-example.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-description-example.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-description-example.ts.mdx b/docs/snippets/common/api-doc-block-description-example.ts.mdx index 5778ccfa36a1..a80af244f6fa 100644 --- a/docs/snippets/common/api-doc-block-description-example.ts.mdx +++ b/docs/snippets/common/api-doc-block-description-example.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-source-parameter.ts-4-9.mdx b/docs/snippets/common/api-doc-block-source-parameter.ts-4-9.mdx index 1637a35f52ef..2448a241f527 100644 --- a/docs/snippets/common/api-doc-block-source-parameter.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-source-parameter.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-source-parameter.ts.mdx b/docs/snippets/common/api-doc-block-source-parameter.ts.mdx index 021c62795f1d..df1189339a01 100644 --- a/docs/snippets/common/api-doc-block-source-parameter.ts.mdx +++ b/docs/snippets/common/api-doc-block-source-parameter.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-story-parameter.ts-4-9.mdx b/docs/snippets/common/api-doc-block-story-parameter.ts-4-9.mdx index e5ec7ceb2f35..28635c232d4e 100644 --- a/docs/snippets/common/api-doc-block-story-parameter.ts-4-9.mdx +++ b/docs/snippets/common/api-doc-block-story-parameter.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/api-doc-block-story-parameter.ts.mdx b/docs/snippets/common/api-doc-block-story-parameter.ts.mdx index d5c8ec6feea2..cfbdf48ff780 100644 --- a/docs/snippets/common/api-doc-block-story-parameter.ts.mdx +++ b/docs/snippets/common/api-doc-block-story-parameter.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; diff --git a/docs/snippets/common/app-story-with-mock.js.mdx b/docs/snippets/common/app-story-with-mock.js.mdx index 89e3cfc72f62..5e9815db826f 100644 --- a/docs/snippets/common/app-story-with-mock.js.mdx +++ b/docs/snippets/common/app-story-with-mock.js.mdx @@ -4,7 +4,6 @@ import App from './App'; export default { - title: 'App', component: App, }; diff --git a/docs/snippets/common/app-story-with-mock.ts-4-9.mdx b/docs/snippets/common/app-story-with-mock.ts-4-9.mdx index ba609196c2e1..14d0a19c7719 100644 --- a/docs/snippets/common/app-story-with-mock.ts-4-9.mdx +++ b/docs/snippets/common/app-story-with-mock.ts-4-9.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import App from './App'; const meta = { - title: 'App', component: App, } satisfies Meta<typeof App>; diff --git a/docs/snippets/common/app-story-with-mock.ts.mdx b/docs/snippets/common/app-story-with-mock.ts.mdx index 50486b9d5977..dfaa74bf679b 100644 --- a/docs/snippets/common/app-story-with-mock.ts.mdx +++ b/docs/snippets/common/app-story-with-mock.ts.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import App from './App'; const meta: Meta<typeof App> = { - title: 'App', component: App, }; diff --git a/docs/snippets/common/arg-types-control.js.mdx b/docs/snippets/common/arg-types-control.js.mdx new file mode 100644 index 000000000000..a290da32894f --- /dev/null +++ b/docs/snippets/common/arg-types-control.js.mdx @@ -0,0 +1,19 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-control.ts-4-9.mdx b/docs/snippets/common/arg-types-control.ts-4-9.mdx new file mode 100644 index 000000000000..298cad744000 --- /dev/null +++ b/docs/snippets/common/arg-types-control.ts-4-9.mdx @@ -0,0 +1,24 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-control.ts.mdx b/docs/snippets/common/arg-types-control.ts.mdx new file mode 100644 index 000000000000..861d1626c6d4 --- /dev/null +++ b/docs/snippets/common/arg-types-control.ts.mdx @@ -0,0 +1,24 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-default-value.js.mdx b/docs/snippets/common/arg-types-default-value.js.mdx new file mode 100644 index 000000000000..2b978568c148 --- /dev/null +++ b/docs/snippets/common/arg-types-default-value.js.mdx @@ -0,0 +1,19 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + value: { + // ⛔️ Deprecated, do not use + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-default-value.ts-4-9.mdx b/docs/snippets/common/arg-types-default-value.ts-4-9.mdx new file mode 100644 index 000000000000..43735e92669a --- /dev/null +++ b/docs/snippets/common/arg-types-default-value.ts-4-9.mdx @@ -0,0 +1,24 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + value: { + // ❌ Deprecated + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-default-value.ts.mdx b/docs/snippets/common/arg-types-default-value.ts.mdx new file mode 100644 index 000000000000..1f8b26d385e8 --- /dev/null +++ b/docs/snippets/common/arg-types-default-value.ts.mdx @@ -0,0 +1,24 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + value: { + // ⛔️ Deprecated, do not use + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-description.js.mdx b/docs/snippets/common/arg-types-description.js.mdx new file mode 100644 index 000000000000..11165006392c --- /dev/null +++ b/docs/snippets/common/arg-types-description.js.mdx @@ -0,0 +1,14 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-description.ts-4-9.mdx b/docs/snippets/common/arg-types-description.ts-4-9.mdx new file mode 100644 index 000000000000..fb8f7d10aabd --- /dev/null +++ b/docs/snippets/common/arg-types-description.ts-4-9.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-description.ts.mdx b/docs/snippets/common/arg-types-description.ts.mdx new file mode 100644 index 000000000000..4155fe0a89f2 --- /dev/null +++ b/docs/snippets/common/arg-types-description.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-if.js.mdx b/docs/snippets/common/arg-types-if.js.mdx new file mode 100644 index 000000000000..f834be56ac41 --- /dev/null +++ b/docs/snippets/common/arg-types-if.js.mdx @@ -0,0 +1,36 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-if.ts-4-9.mdx b/docs/snippets/common/arg-types-if.ts-4-9.mdx new file mode 100644 index 000000000000..fb63efe55432 --- /dev/null +++ b/docs/snippets/common/arg-types-if.ts-4-9.mdx @@ -0,0 +1,41 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-if.ts.mdx b/docs/snippets/common/arg-types-if.ts.mdx new file mode 100644 index 000000000000..bd67a9378d87 --- /dev/null +++ b/docs/snippets/common/arg-types-if.ts.mdx @@ -0,0 +1,41 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-in-meta.js.mdx b/docs/snippets/common/arg-types-in-meta.js.mdx new file mode 100644 index 000000000000..b6be63d6118a --- /dev/null +++ b/docs/snippets/common/arg-types-in-meta.js.mdx @@ -0,0 +1,16 @@ +```js +// Button.stories.js|jsx + +import { Button } from './Button'; + +export default { + component: Button, + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-in-meta.ts-4-9.mdx b/docs/snippets/common/arg-types-in-meta.ts-4-9.mdx new file mode 100644 index 000000000000..c0d05d83b083 --- /dev/null +++ b/docs/snippets/common/arg-types-in-meta.ts-4-9.mdx @@ -0,0 +1,21 @@ +```ts +// Button.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta = { + component: Button, + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +} satisfies Meta<typeof Button>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-in-meta.ts.mdx b/docs/snippets/common/arg-types-in-meta.ts.mdx new file mode 100644 index 000000000000..c1f00e3e5c5c --- /dev/null +++ b/docs/snippets/common/arg-types-in-meta.ts.mdx @@ -0,0 +1,21 @@ +```ts +// Button.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta: Meta<typeof Button> = { + component: Button, + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-in-preview.js.mdx b/docs/snippets/common/arg-types-in-preview.js.mdx new file mode 100644 index 000000000000..328286330773 --- /dev/null +++ b/docs/snippets/common/arg-types-in-preview.js.mdx @@ -0,0 +1,13 @@ +```js +// .storybook/preview.js + +export default { + argTypes: { + // 👇 All stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-in-preview.ts-4-9.mdx b/docs/snippets/common/arg-types-in-preview.ts-4-9.mdx new file mode 100644 index 000000000000..96b6adfc61d1 --- /dev/null +++ b/docs/snippets/common/arg-types-in-preview.ts-4-9.mdx @@ -0,0 +1,18 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Preview } from '@storybook/your-renderer'; + +const preview = { + argTypes: { + // 👇 All stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +} satisfies Preview; + +export default preview; +``` diff --git a/docs/snippets/common/arg-types-in-preview.ts.mdx b/docs/snippets/common/arg-types-in-preview.ts.mdx new file mode 100644 index 000000000000..79015b8464ce --- /dev/null +++ b/docs/snippets/common/arg-types-in-preview.ts.mdx @@ -0,0 +1,18 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Preview } from '@storybook/your-renderer'; + +const preview: Preview = { + argTypes: { + // 👇 All stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; + +export default preview; +``` diff --git a/docs/snippets/common/arg-types-in-story.js.mdx b/docs/snippets/common/arg-types-in-story.js.mdx new file mode 100644 index 000000000000..cfb95d6416a8 --- /dev/null +++ b/docs/snippets/common/arg-types-in-story.js.mdx @@ -0,0 +1,19 @@ +```js +// Button.stories.js|jsx + +import { Button } from './Button'; + +export default { + component: Button, +}; + +export const Basic = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-in-story.ts-4-9.mdx b/docs/snippets/common/arg-types-in-story.ts-4-9.mdx new file mode 100644 index 000000000000..3164c0dceaaf --- /dev/null +++ b/docs/snippets/common/arg-types-in-story.ts-4-9.mdx @@ -0,0 +1,26 @@ +```ts +// Button.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta = { + component: Button, +} satisfies Meta<typeof Button>; + +export default meta; + +type Story = StoryObj<typeof Meta>; + +export const Basic = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +} satisfies Story; +``` diff --git a/docs/snippets/common/arg-types-in-story.ts.mdx b/docs/snippets/common/arg-types-in-story.ts.mdx new file mode 100644 index 000000000000..c0f5641a257c --- /dev/null +++ b/docs/snippets/common/arg-types-in-story.ts.mdx @@ -0,0 +1,26 @@ +```ts +// Button.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta, StoryObj } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta: Meta<typeof Button> = { + component: Button, +}; + +export default meta; + +type Story = StoryObj<typeof Button>; + +export const Basic: Story = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-mapping.js.mdx b/docs/snippets/common/arg-types-mapping.js.mdx new file mode 100644 index 000000000000..742b30fe4194 --- /dev/null +++ b/docs/snippets/common/arg-types-mapping.js.mdx @@ -0,0 +1,18 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + label: { + options: ['Normal', 'Bold', 'Italic'], + mapping: { + Bold: <b>Bold</b>, + Italic: <i>Italic</i>, + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-mapping.ts-4-9.mdx b/docs/snippets/common/arg-types-mapping.ts-4-9.mdx new file mode 100644 index 000000000000..83a452e84c2d --- /dev/null +++ b/docs/snippets/common/arg-types-mapping.ts-4-9.mdx @@ -0,0 +1,23 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + label: { + options: ['Normal', 'Bold', 'Italic'], + mapping: { + Bold: <b>Bold</b>, + Italic: <i>Italic</i>, + }, + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-mapping.ts.mdx b/docs/snippets/common/arg-types-mapping.ts.mdx new file mode 100644 index 000000000000..3c3898eeb9e0 --- /dev/null +++ b/docs/snippets/common/arg-types-mapping.ts.mdx @@ -0,0 +1,23 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + label: { + options: ['Normal', 'Bold', 'Italic'], + mapping: { + Bold: <b>Bold</b>, + Italic: <i>Italic</i>, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-name.js.mdx b/docs/snippets/common/arg-types-name.js.mdx new file mode 100644 index 000000000000..245814b881dd --- /dev/null +++ b/docs/snippets/common/arg-types-name.js.mdx @@ -0,0 +1,14 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-name.ts-4-9.mdx b/docs/snippets/common/arg-types-name.ts-4-9.mdx new file mode 100644 index 000000000000..8210f31618a7 --- /dev/null +++ b/docs/snippets/common/arg-types-name.ts-4-9.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-name.ts.mdx b/docs/snippets/common/arg-types-name.ts.mdx new file mode 100644 index 000000000000..80083a4de4b4 --- /dev/null +++ b/docs/snippets/common/arg-types-name.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-options.js.mdx b/docs/snippets/common/arg-types-options.js.mdx new file mode 100644 index 000000000000..80922b2c82a8 --- /dev/null +++ b/docs/snippets/common/arg-types-options.js.mdx @@ -0,0 +1,14 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-options.ts-4-9.mdx b/docs/snippets/common/arg-types-options.ts-4-9.mdx new file mode 100644 index 000000000000..98845d54c0a9 --- /dev/null +++ b/docs/snippets/common/arg-types-options.ts-4-9.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-options.ts.mdx b/docs/snippets/common/arg-types-options.ts.mdx new file mode 100644 index 000000000000..1b1c904106dc --- /dev/null +++ b/docs/snippets/common/arg-types-options.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-table.js.mdx b/docs/snippets/common/arg-types-table.js.mdx new file mode 100644 index 000000000000..0c4bbf404445 --- /dev/null +++ b/docs/snippets/common/arg-types-table.js.mdx @@ -0,0 +1,17 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-table.ts-4-9.mdx b/docs/snippets/common/arg-types-table.ts-4-9.mdx new file mode 100644 index 000000000000..0ba400c1ea6d --- /dev/null +++ b/docs/snippets/common/arg-types-table.ts-4-9.mdx @@ -0,0 +1,22 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-table.ts.mdx b/docs/snippets/common/arg-types-table.ts.mdx new file mode 100644 index 000000000000..adcd3dc19fba --- /dev/null +++ b/docs/snippets/common/arg-types-table.ts.mdx @@ -0,0 +1,22 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-type.js.mdx b/docs/snippets/common/arg-types-type.js.mdx new file mode 100644 index 000000000000..1ead0022bee7 --- /dev/null +++ b/docs/snippets/common/arg-types-type.js.mdx @@ -0,0 +1,12 @@ +```js +// Example.stories.js|jsx + +import { Example } from './Example'; + +export default { + component: Example, + argTypes: { + value: { type: 'number' }, + }, +}; +``` diff --git a/docs/snippets/common/arg-types-type.ts-4-9.mdx b/docs/snippets/common/arg-types-type.ts-4-9.mdx new file mode 100644 index 000000000000..ae9382c8dd84 --- /dev/null +++ b/docs/snippets/common/arg-types-type.ts-4-9.mdx @@ -0,0 +1,17 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta = { + component: Example, + argTypes: { + value: { type: 'number' }, + }, +} satisfies Meta<typeof Example>; + +export default meta; +``` diff --git a/docs/snippets/common/arg-types-type.ts.mdx b/docs/snippets/common/arg-types-type.ts.mdx new file mode 100644 index 000000000000..c0d8c6834428 --- /dev/null +++ b/docs/snippets/common/arg-types-type.ts.mdx @@ -0,0 +1,17 @@ +```ts +// Example.stories.ts|tsx + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import type { Meta } from '@storybook/your-renderer'; + +import { Example } from './Example'; + +const meta: Meta<typeof Example> = { + component: Example, + argTypes: { + value: { type: 'number' }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/args-in-preview.js.mdx b/docs/snippets/common/args-in-preview.js.mdx new file mode 100644 index 000000000000..621cd5a1d231 --- /dev/null +++ b/docs/snippets/common/args-in-preview.js.mdx @@ -0,0 +1,8 @@ +```js +// .storybook/preview.js + +export default { + // The default value of the theme arg for all stories + args: { theme: 'light' }, +}; +``` diff --git a/docs/snippets/common/args-in-preview.ts-4-9.mdx b/docs/snippets/common/args-in-preview.ts-4-9.mdx new file mode 100644 index 000000000000..ec2bae9e0b56 --- /dev/null +++ b/docs/snippets/common/args-in-preview.ts-4-9.mdx @@ -0,0 +1,13 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import { Preview } from '@storybook/your-renderer'; + +const preview = { + // The default value of the theme arg for all stories + args: { theme: 'light' }, +} satisfies Preview; + +export default preview; +``` diff --git a/docs/snippets/common/args-in-preview.ts.mdx b/docs/snippets/common/args-in-preview.ts.mdx new file mode 100644 index 000000000000..94fc08255312 --- /dev/null +++ b/docs/snippets/common/args-in-preview.ts.mdx @@ -0,0 +1,13 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, angular, etc.) +import { Preview } from '@storybook/your-renderer'; + +const preview: Preview = { + // The default value of the theme arg for all stories + args: { theme: 'light' }, +}; + +export default preview; +``` diff --git a/docs/snippets/common/button-story-action-event-handle.js.mdx b/docs/snippets/common/button-story-action-event-handle.js.mdx index 9ef08b482d1d..17c749431c15 100644 --- a/docs/snippets/common/button-story-action-event-handle.js.mdx +++ b/docs/snippets/common/button-story-action-event-handle.js.mdx @@ -6,11 +6,6 @@ import { Button } from './Button'; import { withActions } from '@storybook/addon-actions/decorator'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { diff --git a/docs/snippets/common/button-story-action-event-handle.ts-4-9.mdx b/docs/snippets/common/button-story-action-event-handle.ts-4-9.mdx index 8c6f1c5b73a8..eedbb1c08f58 100644 --- a/docs/snippets/common/button-story-action-event-handle.ts-4-9.mdx +++ b/docs/snippets/common/button-story-action-event-handle.ts-4-9.mdx @@ -9,11 +9,6 @@ import { withActions } from '@storybook/addon-actions/decorator'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { diff --git a/docs/snippets/common/button-story-action-event-handle.ts.mdx b/docs/snippets/common/button-story-action-event-handle.ts.mdx index 98326c8fa922..99b50d272f8f 100644 --- a/docs/snippets/common/button-story-action-event-handle.ts.mdx +++ b/docs/snippets/common/button-story-action-event-handle.ts.mdx @@ -9,11 +9,6 @@ import { withActions } from '@storybook/addon-actions/decorator'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { diff --git a/docs/snippets/common/button-story-argtypes-with-categories.js.mdx b/docs/snippets/common/button-story-argtypes-with-categories.js.mdx index 417cc7f6ebd1..913b03e600b9 100644 --- a/docs/snippets/common/button-story-argtypes-with-categories.js.mdx +++ b/docs/snippets/common/button-story-argtypes-with-categories.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-argtypes-with-categories.ts-4-9.mdx b/docs/snippets/common/button-story-argtypes-with-categories.ts-4-9.mdx index bcacbe508d84..79b34563f18d 100644 --- a/docs/snippets/common/button-story-argtypes-with-categories.ts-4-9.mdx +++ b/docs/snippets/common/button-story-argtypes-with-categories.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-argtypes-with-categories.ts.mdx b/docs/snippets/common/button-story-argtypes-with-categories.ts.mdx index 9f01134a5a0c..fc76034c57f6 100644 --- a/docs/snippets/common/button-story-argtypes-with-categories.ts.mdx +++ b/docs/snippets/common/button-story-argtypes-with-categories.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-argtypes-with-subcategories.js.mdx b/docs/snippets/common/button-story-argtypes-with-subcategories.js.mdx index f8bd55f339a7..bc7c5fa7cdbc 100644 --- a/docs/snippets/common/button-story-argtypes-with-subcategories.js.mdx +++ b/docs/snippets/common/button-story-argtypes-with-subcategories.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-argtypes-with-subcategories.ts-4-9.mdx b/docs/snippets/common/button-story-argtypes-with-subcategories.ts-4-9.mdx index b9214bab0d18..a558d174c096 100644 --- a/docs/snippets/common/button-story-argtypes-with-subcategories.ts-4-9.mdx +++ b/docs/snippets/common/button-story-argtypes-with-subcategories.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-argtypes-with-subcategories.ts.mdx b/docs/snippets/common/button-story-argtypes-with-subcategories.ts.mdx index e46f637b4f98..fcae208203e6 100644 --- a/docs/snippets/common/button-story-argtypes-with-subcategories.ts.mdx +++ b/docs/snippets/common/button-story-argtypes-with-subcategories.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/common/button-story-baseline-with-satisfies-story-level.ts-4-9.mdx b/docs/snippets/common/button-story-baseline-with-satisfies-story-level.ts-4-9.mdx index fb0b53c60847..90b466673063 100644 --- a/docs/snippets/common/button-story-baseline-with-satisfies-story-level.ts-4-9.mdx +++ b/docs/snippets/common/button-story-baseline-with-satisfies-story-level.ts-4-9.mdx @@ -2,16 +2,11 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-baseline-with-satisfies.ts-4-9.mdx b/docs/snippets/common/button-story-baseline-with-satisfies.ts-4-9.mdx index f1ed8edee258..bf4f06efd8fd 100644 --- a/docs/snippets/common/button-story-baseline-with-satisfies.ts-4-9.mdx +++ b/docs/snippets/common/button-story-baseline-with-satisfies.ts-4-9.mdx @@ -7,7 +7,6 @@ import type { Meta } from '@storybook/<your-framework>'; import { Button } from './Button'; const meta = { - title: 'Button', component: Button, } satisfies Meta<typeof Button>; // 👈 Satisfies operator being used for stricter type checking. diff --git a/docs/snippets/common/button-story-baseline.ts.mdx b/docs/snippets/common/button-story-baseline.ts.mdx index b58cf225fb99..db8f3ec55afe 100644 --- a/docs/snippets/common/button-story-baseline.ts.mdx +++ b/docs/snippets/common/button-story-baseline.ts.mdx @@ -2,16 +2,11 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-controls-primary-variant.js.mdx b/docs/snippets/common/button-story-controls-primary-variant.js.mdx index b872d809975d..2eeef2913d93 100644 --- a/docs/snippets/common/button-story-controls-primary-variant.js.mdx +++ b/docs/snippets/common/button-story-controls-primary-variant.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-controls-primary-variant.ts-4-9.mdx b/docs/snippets/common/button-story-controls-primary-variant.ts-4-9.mdx index 87fd89a27629..bb7d462245bf 100644 --- a/docs/snippets/common/button-story-controls-primary-variant.ts-4-9.mdx +++ b/docs/snippets/common/button-story-controls-primary-variant.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-controls-primary-variant.ts.mdx b/docs/snippets/common/button-story-controls-primary-variant.ts.mdx index 6d230d282783..227ab3f541d6 100644 --- a/docs/snippets/common/button-story-controls-primary-variant.ts.mdx +++ b/docs/snippets/common/button-story-controls-primary-variant.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-controls-radio-group.js.mdx b/docs/snippets/common/button-story-controls-radio-group.js.mdx index 2ddecb43f9b3..587dba29e1fb 100644 --- a/docs/snippets/common/button-story-controls-radio-group.js.mdx +++ b/docs/snippets/common/button-story-controls-radio-group.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { variant: { diff --git a/docs/snippets/common/button-story-controls-radio-group.ts-4-9.mdx b/docs/snippets/common/button-story-controls-radio-group.ts-4-9.mdx index 6b5496b0bc64..6cfb2ec3cd71 100644 --- a/docs/snippets/common/button-story-controls-radio-group.ts-4-9.mdx +++ b/docs/snippets/common/button-story-controls-radio-group.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { variant: { diff --git a/docs/snippets/common/button-story-controls-radio-group.ts.mdx b/docs/snippets/common/button-story-controls-radio-group.ts.mdx index fb8d8bab6d4e..0f8ed3088dc5 100644 --- a/docs/snippets/common/button-story-controls-radio-group.ts.mdx +++ b/docs/snippets/common/button-story-controls-radio-group.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { variant: { diff --git a/docs/snippets/common/button-story-hide-nocontrols-warning.js.mdx b/docs/snippets/common/button-story-hide-nocontrols-warning.js.mdx index e59520eb1981..c1394acb3f19 100644 --- a/docs/snippets/common/button-story-hide-nocontrols-warning.js.mdx +++ b/docs/snippets/common/button-story-hide-nocontrols-warning.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-hide-nocontrols-warning.ts-4-9.mdx b/docs/snippets/common/button-story-hide-nocontrols-warning.ts-4-9.mdx index b20f58997188..f768b89363a6 100644 --- a/docs/snippets/common/button-story-hide-nocontrols-warning.ts-4-9.mdx +++ b/docs/snippets/common/button-story-hide-nocontrols-warning.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-hide-nocontrols-warning.ts.mdx b/docs/snippets/common/button-story-hide-nocontrols-warning.ts.mdx index 8608b939725e..5687e605ccf0 100644 --- a/docs/snippets/common/button-story-hide-nocontrols-warning.ts.mdx +++ b/docs/snippets/common/button-story-hide-nocontrols-warning.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-hoisted.ts-4-9.mdx b/docs/snippets/common/button-story-hoisted.ts-4-9.mdx index 128b5e783b91..6071a4884449 100644 --- a/docs/snippets/common/button-story-hoisted.ts-4-9.mdx +++ b/docs/snippets/common/button-story-hoisted.ts-4-9.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, Storybook } from '@storybook/your-framework'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button as ButtonComponent } from './Button'; diff --git a/docs/snippets/common/button-story-hoisted.ts.mdx b/docs/snippets/common/button-story-hoisted.ts.mdx index 3a592eb4752e..e2de1afe4f6d 100644 --- a/docs/snippets/common/button-story-hoisted.ts.mdx +++ b/docs/snippets/common/button-story-hoisted.ts.mdx @@ -2,7 +2,7 @@ // Button.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, Storybook } from '@storybook/your-framework'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button as ButtonComponent } from './Button'; diff --git a/docs/snippets/common/button-story-hypothetical-example.js.mdx b/docs/snippets/common/button-story-hypothetical-example.js.mdx index 461f288875f9..8ac26711515c 100644 --- a/docs/snippets/common/button-story-hypothetical-example.js.mdx +++ b/docs/snippets/common/button-story-hypothetical-example.js.mdx @@ -4,19 +4,9 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const Sample = { render: () => ({ template: '<button :label=label />', diff --git a/docs/snippets/common/button-story-hypothetical-example.ts-4-9.mdx b/docs/snippets/common/button-story-hypothetical-example.ts-4-9.mdx index 2bcae9240820..cd313b674952 100644 --- a/docs/snippets/common/button-story-hypothetical-example.ts-4-9.mdx +++ b/docs/snippets/common/button-story-hypothetical-example.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const Sample: Story = { render: () => ({ template: '<button :label=label />', diff --git a/docs/snippets/common/button-story-hypothetical-example.ts.mdx b/docs/snippets/common/button-story-hypothetical-example.ts.mdx index 2ac7485a753a..b7362d71fb3c 100644 --- a/docs/snippets/common/button-story-hypothetical-example.ts.mdx +++ b/docs/snippets/common/button-story-hypothetical-example.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const Sample: Story = { render: () => ({ template: '<button :label=label />', diff --git a/docs/snippets/common/button-story-matching-argtypes.js.mdx b/docs/snippets/common/button-story-matching-argtypes.js.mdx index 4fcd0ffa22e3..3541899fda95 100644 --- a/docs/snippets/common/button-story-matching-argtypes.js.mdx +++ b/docs/snippets/common/button-story-matching-argtypes.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { argTypesRegex: '^on.*' } }, }; diff --git a/docs/snippets/common/button-story-matching-argtypes.ts-4-9.mdx b/docs/snippets/common/button-story-matching-argtypes.ts-4-9.mdx index fb01fb66088c..655bbdda85a2 100644 --- a/docs/snippets/common/button-story-matching-argtypes.ts-4-9.mdx +++ b/docs/snippets/common/button-story-matching-argtypes.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { argTypesRegex: '^on.*' } }, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-matching-argtypes.ts.mdx b/docs/snippets/common/button-story-matching-argtypes.ts.mdx index a9c3793e509e..65db88d4fddb 100644 --- a/docs/snippets/common/button-story-matching-argtypes.ts.mdx +++ b/docs/snippets/common/button-story-matching-argtypes.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { actions: { argTypesRegex: '^on.*' } }, }; diff --git a/docs/snippets/common/button-story-onclick-action-argtype.js.mdx b/docs/snippets/common/button-story-onclick-action-argtype.js.mdx index 037c85eb5713..2a273a0c638b 100644 --- a/docs/snippets/common/button-story-onclick-action-argtype.js.mdx +++ b/docs/snippets/common/button-story-onclick-action-argtype.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { onClick: { action: 'clicked' } }, }; diff --git a/docs/snippets/common/button-story-onclick-action-argtype.ts-4-9.mdx b/docs/snippets/common/button-story-onclick-action-argtype.ts-4-9.mdx index eb4c3f4a0aed..799ce6f8f114 100644 --- a/docs/snippets/common/button-story-onclick-action-argtype.ts-4-9.mdx +++ b/docs/snippets/common/button-story-onclick-action-argtype.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { onClick: { action: 'clicked' } }, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-onclick-action-argtype.ts.mdx b/docs/snippets/common/button-story-onclick-action-argtype.ts.mdx index f74fc8349b1e..7188d41d211a 100644 --- a/docs/snippets/common/button-story-onclick-action-argtype.ts.mdx +++ b/docs/snippets/common/button-story-onclick-action-argtype.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { onClick: { action: 'clicked' } }, }; diff --git a/docs/snippets/common/button-story-primary-composition.js.mdx b/docs/snippets/common/button-story-primary-composition.js.mdx index 3bdeb29557cd..815d2914b1a5 100644 --- a/docs/snippets/common/button-story-primary-composition.js.mdx +++ b/docs/snippets/common/button-story-primary-composition.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-primary-composition.ts-4-9.mdx b/docs/snippets/common/button-story-primary-composition.ts-4-9.mdx index 53acb03152fb..eb2ab5ceb92c 100644 --- a/docs/snippets/common/button-story-primary-composition.ts-4-9.mdx +++ b/docs/snippets/common/button-story-primary-composition.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-primary-composition.ts.mdx b/docs/snippets/common/button-story-primary-composition.ts.mdx index 67767755cecb..c54cc0614c0d 100644 --- a/docs/snippets/common/button-story-primary-composition.ts.mdx +++ b/docs/snippets/common/button-story-primary-composition.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-primary-long-name.js.mdx b/docs/snippets/common/button-story-primary-long-name.js.mdx index 98234d54471d..845091fceff6 100644 --- a/docs/snippets/common/button-story-primary-long-name.js.mdx +++ b/docs/snippets/common/button-story-primary-long-name.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-primary-long-name.ts-4-9.mdx b/docs/snippets/common/button-story-primary-long-name.ts-4-9.mdx index e1abd4ab3d53..09b0774e7b66 100644 --- a/docs/snippets/common/button-story-primary-long-name.ts-4-9.mdx +++ b/docs/snippets/common/button-story-primary-long-name.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/button-story-primary-long-name.ts.mdx b/docs/snippets/common/button-story-primary-long-name.ts.mdx index 6ecb6ef7775a..cbc45a68e514 100644 --- a/docs/snippets/common/button-story-primary-long-name.ts.mdx +++ b/docs/snippets/common/button-story-primary-long-name.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/button-story-project-args-theme.js.mdx b/docs/snippets/common/button-story-project-args-theme.js.mdx deleted file mode 100644 index ff852cd2da40..000000000000 --- a/docs/snippets/common/button-story-project-args-theme.js.mdx +++ /dev/null @@ -1,11 +0,0 @@ -```js -// .storybook/preview.js - -export default { - // All stories expect a theme arg - argTypes: { theme: { control: 'select', options: ['light', 'dark'] } }, - - // The default value of the theme arg to all stories - args: { theme: 'light' }, -}; -``` diff --git a/docs/snippets/common/button-story-with-parameters.js.mdx b/docs/snippets/common/button-story-with-parameters.js.mdx index 8008f38381e2..21ca61edc70f 100644 --- a/docs/snippets/common/button-story-with-parameters.js.mdx +++ b/docs/snippets/common/button-story-with-parameters.js.mdx @@ -1,5 +1,5 @@ ```js -// Button.stories.js|jsx|ts|tsx +// Button.stories.js|jsx|mjs|ts|tsx import { Button } from './Button'; diff --git a/docs/snippets/common/checkbox-story-csf.js.mdx b/docs/snippets/common/checkbox-story-csf.js.mdx index b1614892d91e..fc4f82e182d7 100644 --- a/docs/snippets/common/checkbox-story-csf.js.mdx +++ b/docs/snippets/common/checkbox-story-csf.js.mdx @@ -4,11 +4,6 @@ import { Checkbox } from './Checkbox'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Checkbox', component: Checkbox, }; diff --git a/docs/snippets/common/checkbox-story-csf.ts-4-9.mdx b/docs/snippets/common/checkbox-story-csf.ts-4-9.mdx index 8fce030ed61d..684dac0519e0 100644 --- a/docs/snippets/common/checkbox-story-csf.ts-4-9.mdx +++ b/docs/snippets/common/checkbox-story-csf.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Checkbox } from './Checkbox'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Checkbox', component: Checkbox, } satisfies Meta<typeof Checkbox>; diff --git a/docs/snippets/common/checkbox-story-csf.ts.mdx b/docs/snippets/common/checkbox-story-csf.ts.mdx index 353354a7c331..83ad0b08e932 100644 --- a/docs/snippets/common/checkbox-story-csf.ts.mdx +++ b/docs/snippets/common/checkbox-story-csf.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Checkbox } from './Checkbox'; const meta: Meta<typeof Checkbox> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Checkbox', component: Checkbox, }; diff --git a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.js.mdx b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.js.mdx index faf1703d3eb0..377584226b99 100644 --- a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.js.mdx +++ b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts-4-9.mdx b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts-4-9.mdx index b49eb23e16e3..d1a2eeffae77 100644 --- a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts-4-9.mdx +++ b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts.mdx b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts.mdx index b74930571e1d..cd70b5be2754 100644 --- a/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts.mdx +++ b/docs/snippets/common/component-story-conditional-controls-mutual-exclusion.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/common/component-story-conditional-controls-toggle.js.mdx b/docs/snippets/common/component-story-conditional-controls-toggle.js.mdx index 29c85d6b5646..13b54468b55b 100644 --- a/docs/snippets/common/component-story-conditional-controls-toggle.js.mdx +++ b/docs/snippets/common/component-story-conditional-controls-toggle.js.mdx @@ -4,16 +4,11 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/common/component-story-conditional-controls-toggle.ts-4-9.mdx b/docs/snippets/common/component-story-conditional-controls-toggle.ts-4-9.mdx index d4800d0d48ee..28107f7557d5 100644 --- a/docs/snippets/common/component-story-conditional-controls-toggle.ts-4-9.mdx +++ b/docs/snippets/common/component-story-conditional-controls-toggle.ts-4-9.mdx @@ -7,16 +7,11 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/common/component-story-conditional-controls-toggle.ts.mdx b/docs/snippets/common/component-story-conditional-controls-toggle.ts.mdx index c9667b93a2e1..0a50dc90659a 100644 --- a/docs/snippets/common/component-story-conditional-controls-toggle.ts.mdx +++ b/docs/snippets/common/component-story-conditional-controls-toggle.ts.mdx @@ -7,16 +7,11 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/common/component-story-custom-args-mapping.js.mdx b/docs/snippets/common/component-story-custom-args-mapping.js.mdx index 0175da8889d6..c7e24ed888fe 100644 --- a/docs/snippets/common/component-story-custom-args-mapping.js.mdx +++ b/docs/snippets/common/component-story-custom-args-mapping.js.mdx @@ -8,11 +8,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { arrow: { diff --git a/docs/snippets/common/component-story-custom-args-mapping.ts-4-9.mdx b/docs/snippets/common/component-story-custom-args-mapping.ts-4-9.mdx index 96a874456261..4e084aa4b0e1 100644 --- a/docs/snippets/common/component-story-custom-args-mapping.ts-4-9.mdx +++ b/docs/snippets/common/component-story-custom-args-mapping.ts-4-9.mdx @@ -11,11 +11,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { arrow: { diff --git a/docs/snippets/common/component-story-custom-args-mapping.ts.mdx b/docs/snippets/common/component-story-custom-args-mapping.ts.mdx index 0e1aca56702f..8565370cad79 100644 --- a/docs/snippets/common/component-story-custom-args-mapping.ts.mdx +++ b/docs/snippets/common/component-story-custom-args-mapping.ts.mdx @@ -11,11 +11,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, argTypes: { arrow: { diff --git a/docs/snippets/common/component-story-custom-params.js.mdx b/docs/snippets/common/component-story-custom-params.js.mdx index 95baccff5e1e..7498212ddd9c 100644 --- a/docs/snippets/common/component-story-custom-params.js.mdx +++ b/docs/snippets/common/component-story-custom-params.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/component-story-custom-params.ts-4-9.mdx b/docs/snippets/common/component-story-custom-params.ts-4-9.mdx index be08a6d13a03..9cc86cdda2f4 100644 --- a/docs/snippets/common/component-story-custom-params.ts-4-9.mdx +++ b/docs/snippets/common/component-story-custom-params.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/component-story-custom-params.ts.mdx b/docs/snippets/common/component-story-custom-params.ts.mdx index 820bd69c8458..10881c99ab5e 100644 --- a/docs/snippets/common/component-story-custom-params.ts.mdx +++ b/docs/snippets/common/component-story-custom-params.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/component-story-disable-controls-alt.js.mdx b/docs/snippets/common/component-story-disable-controls-alt.js.mdx index 1d40d583e196..4a90308a3832 100644 --- a/docs/snippets/common/component-story-disable-controls-alt.js.mdx +++ b/docs/snippets/common/component-story-disable-controls-alt.js.mdx @@ -4,11 +4,6 @@ import { YourComponent } from './YourComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-disable-controls-alt.ts-4-9.mdx b/docs/snippets/common/component-story-disable-controls-alt.ts-4-9.mdx index 3925ee34217b..b33946fc0b7f 100644 --- a/docs/snippets/common/component-story-disable-controls-alt.ts-4-9.mdx +++ b/docs/snippets/common/component-story-disable-controls-alt.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-disable-controls-alt.ts.mdx b/docs/snippets/common/component-story-disable-controls-alt.ts.mdx index b52f08127123..4d18d9ddd5fc 100644 --- a/docs/snippets/common/component-story-disable-controls-alt.ts.mdx +++ b/docs/snippets/common/component-story-disable-controls-alt.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-disable-controls-regex.js.mdx b/docs/snippets/common/component-story-disable-controls-regex.js.mdx index 0c022763d236..0f449b7fded3 100644 --- a/docs/snippets/common/component-story-disable-controls-regex.js.mdx +++ b/docs/snippets/common/component-story-disable-controls-regex.js.mdx @@ -4,11 +4,6 @@ import { YourComponent } from './YourComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/common/component-story-disable-controls-regex.ts-4-9.mdx b/docs/snippets/common/component-story-disable-controls-regex.ts-4-9.mdx index 1a7f8ff9ef56..3dcbb8f47282 100644 --- a/docs/snippets/common/component-story-disable-controls-regex.ts-4-9.mdx +++ b/docs/snippets/common/component-story-disable-controls-regex.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/common/component-story-disable-controls-regex.ts.mdx b/docs/snippets/common/component-story-disable-controls-regex.ts.mdx index 050bfa2004e9..98a20e45efd6 100644 --- a/docs/snippets/common/component-story-disable-controls-regex.ts.mdx +++ b/docs/snippets/common/component-story-disable-controls-regex.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/common/component-story-disable-controls.js.mdx b/docs/snippets/common/component-story-disable-controls.js.mdx index 7bdca71f036d..0dc8f79e697d 100644 --- a/docs/snippets/common/component-story-disable-controls.js.mdx +++ b/docs/snippets/common/component-story-disable-controls.js.mdx @@ -4,11 +4,6 @@ import { YourComponent } from './YourComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-disable-controls.ts-4-9.mdx b/docs/snippets/common/component-story-disable-controls.ts-4-9.mdx index 369fb588da8f..66af5a04c492 100644 --- a/docs/snippets/common/component-story-disable-controls.ts-4-9.mdx +++ b/docs/snippets/common/component-story-disable-controls.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-disable-controls.ts.mdx b/docs/snippets/common/component-story-disable-controls.ts.mdx index df8dd4cd7220..c90982b70dc1 100644 --- a/docs/snippets/common/component-story-disable-controls.ts.mdx +++ b/docs/snippets/common/component-story-disable-controls.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/common/component-story-sort-controls.js.mdx b/docs/snippets/common/component-story-sort-controls.js.mdx index 5c016826d0f1..3b43ee19c8ab 100644 --- a/docs/snippets/common/component-story-sort-controls.js.mdx +++ b/docs/snippets/common/component-story-sort-controls.js.mdx @@ -4,11 +4,6 @@ import { YourComponent } from './your-component'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, parameters: { controls: { sort: 'requiredFirst' } }, }; diff --git a/docs/snippets/common/component-story-sort-controls.ts-4-9.mdx b/docs/snippets/common/component-story-sort-controls.ts-4-9.mdx index f8b4ecb77c10..1e805e71182e 100644 --- a/docs/snippets/common/component-story-sort-controls.ts-4-9.mdx +++ b/docs/snippets/common/component-story-sort-controls.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, parameters: { controls: { sort: 'requiredFirst' } }, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/common/component-story-sort-controls.ts.mdx b/docs/snippets/common/component-story-sort-controls.ts.mdx index 28232ce3fd22..fd6276f06a5e 100644 --- a/docs/snippets/common/component-story-sort-controls.ts.mdx +++ b/docs/snippets/common/component-story-sort-controls.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, parameters: { controls: { sort: 'requiredFirst' } }, }; diff --git a/docs/snippets/common/documentscreen-story-msw-rest-request.js.mdx b/docs/snippets/common/documentscreen-story-msw-rest-request.js.mdx index 187eacccb6ef..7eb1e65ba90d 100644 --- a/docs/snippets/common/documentscreen-story-msw-rest-request.js.mdx +++ b/docs/snippets/common/documentscreen-story-msw-rest-request.js.mdx @@ -6,7 +6,6 @@ import { rest } from 'msw'; import { DocumentScreen } from './YourPage'; export default { - title: 'DocumentScreen', component: DocumentScreen, }; @@ -32,30 +31,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/common/documentscreen-story-msw-rest-request.ts-4-9.mdx b/docs/snippets/common/documentscreen-story-msw-rest-request.ts-4-9.mdx index ce5db719ecab..50dde4300363 100644 --- a/docs/snippets/common/documentscreen-story-msw-rest-request.ts-4-9.mdx +++ b/docs/snippets/common/documentscreen-story-msw-rest-request.ts-4-9.mdx @@ -9,7 +9,6 @@ import { rest } from 'msw'; import { MyComponent } from './MyComponent'; const meta = { - title: 'DocumentScreen', component: DocumentScreen, } satisfies Meta<typeof MyComponent>; @@ -38,30 +37,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/common/documentscreen-story-msw-rest-request.ts.mdx b/docs/snippets/common/documentscreen-story-msw-rest-request.ts.mdx index d15db1994693..a4ae3d1723f7 100644 --- a/docs/snippets/common/documentscreen-story-msw-rest-request.ts.mdx +++ b/docs/snippets/common/documentscreen-story-msw-rest-request.ts.mdx @@ -9,7 +9,6 @@ import { rest } from 'msw'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'DocumentScreen', component: DocumentScreen, }; @@ -38,30 +37,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/common/gizmo-story-controls-customization.js.mdx b/docs/snippets/common/gizmo-story-controls-customization.js.mdx index 146bb0d89b77..70676e2ebb09 100644 --- a/docs/snippets/common/gizmo-story-controls-customization.js.mdx +++ b/docs/snippets/common/gizmo-story-controls-customization.js.mdx @@ -4,11 +4,6 @@ import { Gizmo } from './Gizmo'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Gizmo', component: Gizmo, argTypes: { canRotate: { diff --git a/docs/snippets/common/gizmo-story-controls-customization.ts-4-9.mdx b/docs/snippets/common/gizmo-story-controls-customization.ts-4-9.mdx index f2ba0eda6c77..69c7c65e6421 100644 --- a/docs/snippets/common/gizmo-story-controls-customization.ts-4-9.mdx +++ b/docs/snippets/common/gizmo-story-controls-customization.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Gizmo } from './Gizmo'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Gizmo', component: Gizmo, argTypes: { canRotate: { diff --git a/docs/snippets/common/gizmo-story-controls-customization.ts.mdx b/docs/snippets/common/gizmo-story-controls-customization.ts.mdx index 47e8e8ad9d27..93a8d57c7e58 100644 --- a/docs/snippets/common/gizmo-story-controls-customization.ts.mdx +++ b/docs/snippets/common/gizmo-story-controls-customization.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Gizmo } from './Gizmo'; const meta: Meta<typeof Gizmo> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Gizmo', component: Gizmo, argTypes: { canRotate: { diff --git a/docs/snippets/common/main-config-addons.js.mdx b/docs/snippets/common/main-config-addons.js.mdx new file mode 100644 index 000000000000..9658ffd13d43 --- /dev/null +++ b/docs/snippets/common/main-config-addons.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + '@storybook/addon-essentials', + { + name: '@storybook/addon-styling', + options: { + postCss: true, + }, + }, + ], +}; +``` diff --git a/docs/snippets/common/main-config-addons.ts.mdx b/docs/snippets/common/main-config-addons.ts.mdx new file mode 100644 index 000000000000..1038c4a4b41f --- /dev/null +++ b/docs/snippets/common/main-config-addons.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + '@storybook/addon-essentials', + { + name: '@storybook/addon-styling', + options: { + postCss: true, + }, + }, + ], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-babel.js.mdx b/docs/snippets/common/main-config-babel.js.mdx new file mode 100644 index 000000000000..c944fe1bed2e --- /dev/null +++ b/docs/snippets/common/main-config-babel.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async babel(config, { configType }) { + if (configType === 'DEVELOPMENT') { + // Your development configuration goes here + } + if (configType === 'PRODUCTION') { + // Your production configuration goes here. + } + return config; + }, +}; +``` diff --git a/docs/snippets/common/main-config-babel.ts.mdx b/docs/snippets/common/main-config-babel.ts.mdx new file mode 100644 index 000000000000..b0d7220db898 --- /dev/null +++ b/docs/snippets/common/main-config-babel.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async babel(config, { configType }) { + if (configType === 'DEVELOPMENT') { + // Your development configuration goes here + } + if (configType === 'PRODUCTION') { + // Your production configuration goes here. + } + return config; + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-builder.js.mdx b/docs/snippets/common/main-config-core-builder.js.mdx new file mode 100644 index 000000000000..53078cebde63 --- /dev/null +++ b/docs/snippets/common/main-config-core-builder.js.mdx @@ -0,0 +1,17 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + builder: { + name: '@storybook/builder-vite', + options: { + viteConfigPath: '../../../vite.config.js', + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-builder.ts.mdx b/docs/snippets/common/main-config-core-builder.ts.mdx new file mode 100644 index 000000000000..95bd7c6b8203 --- /dev/null +++ b/docs/snippets/common/main-config-core-builder.ts.mdx @@ -0,0 +1,21 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + builder: { + name: '@storybook/builder-vite', + options: { + viteConfigPath: '../../../vite.config.js', + }, + }, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-cross-origin-isolated.js.mdx b/docs/snippets/common/main-config-core-cross-origin-isolated.js.mdx new file mode 100644 index 000000000000..524466e3a765 --- /dev/null +++ b/docs/snippets/common/main-config-core-cross-origin-isolated.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + crossOriginIsolated: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-cross-origin-isolated.ts.mdx b/docs/snippets/common/main-config-core-cross-origin-isolated.ts.mdx new file mode 100644 index 000000000000..cf7dfe367b03 --- /dev/null +++ b/docs/snippets/common/main-config-core-cross-origin-isolated.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + crossOriginIsolated: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-disable-project-json.js.mdx b/docs/snippets/common/main-config-core-disable-project-json.js.mdx new file mode 100644 index 000000000000..a964cbbc5ddf --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-project-json.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableProjectJson: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-disable-project-json.ts.mdx b/docs/snippets/common/main-config-core-disable-project-json.ts.mdx new file mode 100644 index 000000000000..abb711c51a49 --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-project-json.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableProjectJson: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-disable-telemetry.js.mdx b/docs/snippets/common/main-config-core-disable-telemetry.js.mdx new file mode 100644 index 000000000000..d4aa4620e534 --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-telemetry.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableTelemetry: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-disable-telemetry.ts.mdx b/docs/snippets/common/main-config-core-disable-telemetry.ts.mdx new file mode 100644 index 000000000000..930ee3605668 --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-telemetry.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableTelemetry: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-disable-update-notifications.js.mdx b/docs/snippets/common/main-config-core-disable-update-notifications.js.mdx new file mode 100644 index 000000000000..d57d697ebc08 --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-update-notifications.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableWhatsNewNotifications: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-disable-update-notifications.ts.mdx b/docs/snippets/common/main-config-core-disable-update-notifications.ts.mdx new file mode 100644 index 000000000000..cfcf12a5268d --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-update-notifications.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableWhatsNewNotifications: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-disable-webpack-defaults.js.mdx b/docs/snippets/common/main-config-core-disable-webpack-defaults.js.mdx new file mode 100644 index 000000000000..da1f8c93d360 --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-webpack-defaults.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableWebpackDefaults: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-disable-webpack-defaults.ts.mdx b/docs/snippets/common/main-config-core-disable-webpack-defaults.ts.mdx new file mode 100644 index 000000000000..4f6bf8b4f81b --- /dev/null +++ b/docs/snippets/common/main-config-core-disable-webpack-defaults.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + disableWebpackDefaults: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-core-enable-crash-reports.js.mdx b/docs/snippets/common/main-config-core-enable-crash-reports.js.mdx new file mode 100644 index 000000000000..b79e8f384cfe --- /dev/null +++ b/docs/snippets/common/main-config-core-enable-crash-reports.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events + }, +}; +``` diff --git a/docs/snippets/common/main-config-core-enable-crash-reports.ts.mdx b/docs/snippets/common/main-config-core-enable-crash-reports.ts.mdx new file mode 100644 index 000000000000..ceabd58ad8b9 --- /dev/null +++ b/docs/snippets/common/main-config-core-enable-crash-reports.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + core: { + enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-docs-autodocs.js.mdx b/docs/snippets/common/main-config-docs-autodocs.js.mdx new file mode 100644 index 000000000000..e16db3a8d9a5 --- /dev/null +++ b/docs/snippets/common/main-config-docs-autodocs.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + autodocs: 'tag', + }, +}; +``` diff --git a/docs/snippets/common/main-config-docs-autodocs.ts.mdx b/docs/snippets/common/main-config-docs-autodocs.ts.mdx new file mode 100644 index 000000000000..927eb78c0837 --- /dev/null +++ b/docs/snippets/common/main-config-docs-autodocs.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + autodocs: 'tag', + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-docs-default-name.js.mdx b/docs/snippets/common/main-config-docs-default-name.js.mdx new file mode 100644 index 000000000000..de5608c116e2 --- /dev/null +++ b/docs/snippets/common/main-config-docs-default-name.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + defaultName: 'Documentation', + }, +}; +``` diff --git a/docs/snippets/common/main-config-docs-default-name.ts.mdx b/docs/snippets/common/main-config-docs-default-name.ts.mdx new file mode 100644 index 000000000000..3ebe947b8a09 --- /dev/null +++ b/docs/snippets/common/main-config-docs-default-name.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + defaultName: 'Documentation', + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-docs-docs-mode.js.mdx b/docs/snippets/common/main-config-docs-docs-mode.js.mdx new file mode 100644 index 000000000000..3eba728db211 --- /dev/null +++ b/docs/snippets/common/main-config-docs-docs-mode.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + docsMode: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-docs-docs-mode.ts.mdx b/docs/snippets/common/main-config-docs-docs-mode.ts.mdx new file mode 100644 index 000000000000..a632dd4fc506 --- /dev/null +++ b/docs/snippets/common/main-config-docs-docs-mode.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + docs: { + docsMode: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-main-env-field-config.js.mdx b/docs/snippets/common/main-config-env.js.mdx similarity index 61% rename from docs/snippets/common/storybook-main-env-field-config.js.mdx rename to docs/snippets/common/main-config-env.js.mdx index 581cda0c3fcb..6d37069cdb4d 100644 --- a/docs/snippets/common/storybook-main-env-field-config.js.mdx +++ b/docs/snippets/common/main-config-env.js.mdx @@ -2,12 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], /* * 👇 The `config` argument contains all the other existing environment variables. * Either configured in an `.env` file or configured on the command line. diff --git a/docs/snippets/common/storybook-main-env-field-config.ts.mdx b/docs/snippets/common/main-config-env.ts.mdx similarity index 69% rename from docs/snippets/common/storybook-main-env-field-config.ts.mdx rename to docs/snippets/common/main-config-env.ts.mdx index 33566b015c8a..d5c0acc1ee2a 100644 --- a/docs/snippets/common/storybook-main-env-field-config.ts.mdx +++ b/docs/snippets/common/main-config-env.ts.mdx @@ -1,16 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], /* * 👇 The `config` argument contains all the other existing environment variables. * Either configured in an `.env` file or configured on the command line. diff --git a/docs/snippets/common/main-config-features-arg-type-targets-v7.js.mdx b/docs/snippets/common/main-config-features-arg-type-targets-v7.js.mdx new file mode 100644 index 000000000000..676bbf628fe8 --- /dev/null +++ b/docs/snippets/common/main-config-features-arg-type-targets-v7.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + argTypeTargetsV7: true, + }, +}; +``` diff --git a/docs/snippets/common/storybook-enable-buildstoriesjson.ts.mdx b/docs/snippets/common/main-config-features-arg-type-targets-v7.ts.mdx similarity index 58% rename from docs/snippets/common/storybook-enable-buildstoriesjson.ts.mdx rename to docs/snippets/common/main-config-features-arg-type-targets-v7.ts.mdx index e8c0a215dd5b..907f5ce59ab3 100644 --- a/docs/snippets/common/storybook-enable-buildstoriesjson.ts.mdx +++ b/docs/snippets/common/main-config-features-arg-type-targets-v7.ts.mdx @@ -1,16 +1,14 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: [], - addons: [ - // Other Storybook addons - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], features: { - buildStoriesJson: true, // 👈 Enable this to build the stories.json file + argTypeTargetsV7: true, }, }; diff --git a/docs/snippets/common/main-config-features-build-stories-json.js.mdx b/docs/snippets/common/main-config-features-build-stories-json.js.mdx new file mode 100644 index 000000000000..cad496dd3d4e --- /dev/null +++ b/docs/snippets/common/main-config-features-build-stories-json.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + buildStoriesJson: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-features-build-stories-json.ts.mdx b/docs/snippets/common/main-config-features-build-stories-json.ts.mdx new file mode 100644 index 000000000000..4a4966a7a371 --- /dev/null +++ b/docs/snippets/common/main-config-features-build-stories-json.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + buildStoriesJson: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-features-legacy-decorator-file-order.js.mdx b/docs/snippets/common/main-config-features-legacy-decorator-file-order.js.mdx new file mode 100644 index 000000000000..e7a1177f9620 --- /dev/null +++ b/docs/snippets/common/main-config-features-legacy-decorator-file-order.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + legacyDecoratorFileOrder: true, + }, +}; +``` diff --git a/docs/snippets/common/main-config-features-legacy-decorator-file-order.ts.mdx b/docs/snippets/common/main-config-features-legacy-decorator-file-order.ts.mdx new file mode 100644 index 000000000000..46f83c552a79 --- /dev/null +++ b/docs/snippets/common/main-config-features-legacy-decorator-file-order.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + legacyDecoratorFileOrder: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-features-legacy-mdx-1.js.mdx b/docs/snippets/common/main-config-features-legacy-mdx-1.js.mdx new file mode 100644 index 000000000000..e961bf074cb3 --- /dev/null +++ b/docs/snippets/common/main-config-features-legacy-mdx-1.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + legacyMdx1: true, // 👈 Enables MDX v1 support + }, +}; +``` diff --git a/docs/snippets/common/storybook-main-fallback-mdx.ts.mdx b/docs/snippets/common/main-config-features-legacy-mdx-1.ts.mdx similarity index 55% rename from docs/snippets/common/storybook-main-fallback-mdx.ts.mdx rename to docs/snippets/common/main-config-features-legacy-mdx-1.ts.mdx index 1841c8b29216..c983311700f4 100644 --- a/docs/snippets/common/storybook-main-fallback-mdx.ts.mdx +++ b/docs/snippets/common/main-config-features-legacy-mdx-1.ts.mdx @@ -1,15 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], - framework: { - name: '@storybook/react-webpack5', - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], features: { legacyMdx1: true, // 👈 Enables MDX v1 support }, diff --git a/docs/snippets/common/main-config-features-story-store-v7.js.mdx b/docs/snippets/common/main-config-features-story-store-v7.js.mdx new file mode 100644 index 000000000000..532af975ead3 --- /dev/null +++ b/docs/snippets/common/main-config-features-story-store-v7.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + features: { + storyStoreV7: false, // 👈 Opt out of on-demand story loading + }, +}; +``` diff --git a/docs/snippets/common/storybook-on-demand-story-loading.ts.mdx b/docs/snippets/common/main-config-features-story-store-v7.ts.mdx similarity index 56% rename from docs/snippets/common/storybook-on-demand-story-loading.ts.mdx rename to docs/snippets/common/main-config-features-story-store-v7.ts.mdx index c04344258bbc..55f3c4858dc0 100644 --- a/docs/snippets/common/storybook-on-demand-story-loading.ts.mdx +++ b/docs/snippets/common/main-config-features-story-store-v7.ts.mdx @@ -1,15 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], - framework: { - name: '@storybook/react-webpack5', - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], features: { storyStoreV7: false, // 👈 Opt out of on-demand story loading }, diff --git a/docs/snippets/common/main-config-framework-options-builder-use-swc.js.mdx b/docs/snippets/common/main-config-framework-options-builder-use-swc.js.mdx new file mode 100644 index 000000000000..12b5629fd8d7 --- /dev/null +++ b/docs/snippets/common/main-config-framework-options-builder-use-swc.js.mdx @@ -0,0 +1,16 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the webpack-based framework you are using (e.g., react-webpack5) + framework: { + name: '@storybook/your-framework', + options: { + builder: { + useSWC: true, + }, + }, + }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; +``` diff --git a/docs/snippets/common/main-config-framework-options-builder-use-swc.ts.mdx b/docs/snippets/common/main-config-framework-options-builder-use-swc.ts.mdx new file mode 100644 index 000000000000..8f70a9e1b166 --- /dev/null +++ b/docs/snippets/common/main-config-framework-options-builder-use-swc.ts.mdx @@ -0,0 +1,20 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the webpack-based framework you are using (e.g., react-webpack5) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: { + name: '@storybook/your-framework', + options: { + builder: { + useSWC: true, + }, + }, + }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-framework.js.mdx b/docs/snippets/common/main-config-framework.js.mdx new file mode 100644 index 000000000000..dfe7c04aaf23 --- /dev/null +++ b/docs/snippets/common/main-config-framework.js.mdx @@ -0,0 +1,14 @@ +```js +// .storybook/main.js + +export default { + framework: { + // Replace react-vite with the framework you are using (e.g., react-webpack5) + name: '@storybook/react-vite', + options: { + legacyRootApi: true, + }, + }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; +``` diff --git a/docs/snippets/common/main-config-framework.ts.mdx b/docs/snippets/common/main-config-framework.ts.mdx new file mode 100644 index 000000000000..644c9d6c2f0c --- /dev/null +++ b/docs/snippets/common/main-config-framework.ts.mdx @@ -0,0 +1,18 @@ +```ts +// .storybook/main.ts + +// Replace react-vite with the framework you are using (e.g., react-webpack5) +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + framework: { + name: '@storybook/react-vite', + options: { + legacyRootApi: true, + }, + }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-log-level.js.mdx b/docs/snippets/common/main-config-log-level.js.mdx new file mode 100644 index 000000000000..92f8ed3629b8 --- /dev/null +++ b/docs/snippets/common/main-config-log-level.js.mdx @@ -0,0 +1,10 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + logLevel: 'debug', +}; +``` diff --git a/docs/snippets/common/main-config-log-level.ts.mdx b/docs/snippets/common/main-config-log-level.ts.mdx new file mode 100644 index 000000000000..88ffbee8fa0a --- /dev/null +++ b/docs/snippets/common/main-config-log-level.ts.mdx @@ -0,0 +1,14 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + logLevel: 'debug', +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-manager-head.js.mdx b/docs/snippets/common/main-config-manager-head.js.mdx new file mode 100644 index 000000000000..0459c15a7c84 --- /dev/null +++ b/docs/snippets/common/main-config-manager-head.js.mdx @@ -0,0 +1,13 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + managerHead: (head) => ` + ${head} + <link rel="preload" href="/fonts/my-custom-manager-font.woff2" /> + `, +}; +``` diff --git a/docs/snippets/common/main-config-manager-head.ts.mdx b/docs/snippets/common/main-config-manager-head.ts.mdx new file mode 100644 index 000000000000..6392d59d2cba --- /dev/null +++ b/docs/snippets/common/main-config-manager-head.ts.mdx @@ -0,0 +1,17 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + managerHead: (head) => ` + ${head} + <link rel="preload" href="/fonts/my-custom-manager-font.woff2" /> + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-preview-body.js.mdx b/docs/snippets/common/main-config-preview-body.js.mdx new file mode 100644 index 000000000000..53b0638f735e --- /dev/null +++ b/docs/snippets/common/main-config-preview-body.js.mdx @@ -0,0 +1,15 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + previewBody: (body) => ` + ${body} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; +``` diff --git a/docs/snippets/common/main-config-preview-body.ts.mdx b/docs/snippets/common/main-config-preview-body.ts.mdx new file mode 100644 index 000000000000..11429924ac03 --- /dev/null +++ b/docs/snippets/common/main-config-preview-body.ts.mdx @@ -0,0 +1,19 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + previewBody: (body) => ` + ${body} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-preview-head.js.mdx b/docs/snippets/common/main-config-preview-head.js.mdx new file mode 100644 index 000000000000..f0453e9069c4 --- /dev/null +++ b/docs/snippets/common/main-config-preview-head.js.mdx @@ -0,0 +1,15 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + previewHead: (head) => ` + ${head} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; +``` diff --git a/docs/snippets/common/main-config-preview-head.ts.mdx b/docs/snippets/common/main-config-preview-head.ts.mdx new file mode 100644 index 000000000000..bde2b5816cc6 --- /dev/null +++ b/docs/snippets/common/main-config-preview-head.ts.mdx @@ -0,0 +1,19 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + previewHead: (head) => ` + ${head} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-preview.body.js.mdx b/docs/snippets/common/main-config-preview.body.js.mdx new file mode 100644 index 000000000000..a1c4e6b2f441 --- /dev/null +++ b/docs/snippets/common/main-config-preview.body.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + previewBody: (body) => ` + ${body} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; +``` diff --git a/docs/snippets/common/main-config-preview.body.ts.mdx b/docs/snippets/common/main-config-preview.body.ts.mdx new file mode 100644 index 000000000000..d721710529ed --- /dev/null +++ b/docs/snippets/common/main-config-preview.body.ts.mdx @@ -0,0 +1,17 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + previewBody: (body) => ` + ${body} + ${ + process.env.ANALYTICS_ID ? '<script src="https://cdn.example.com/analytics.js"></script>' : '' + } + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-preview.head.js.mdx b/docs/snippets/common/main-config-preview.head.js.mdx new file mode 100644 index 000000000000..059f91223503 --- /dev/null +++ b/docs/snippets/common/main-config-preview.head.js.mdx @@ -0,0 +1,14 @@ +```js +// .storybook/main.js + +export default { + previewHead: (head) => ` + ${head} + <style> + html, body { + background: #827979; + } + </style> + `, +}; +``` diff --git a/docs/snippets/common/main-config-preview.head.ts.mdx b/docs/snippets/common/main-config-preview.head.ts.mdx new file mode 100644 index 000000000000..2623d0c3c7e4 --- /dev/null +++ b/docs/snippets/common/main-config-preview.head.ts.mdx @@ -0,0 +1,19 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + previewHead: (head) => ` + ${head} + <style> + html, body { + background: #827979; + } + </style> + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-refs-disable.js.mdx b/docs/snippets/common/main-config-refs-disable.js.mdx new file mode 100644 index 000000000000..b1bf75e08d9c --- /dev/null +++ b/docs/snippets/common/main-config-refs-disable.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + refs: { + 'package-name': { disable: true }, + }, +}; +``` diff --git a/docs/snippets/common/storybook-main-disable-refs.ts.mdx b/docs/snippets/common/main-config-refs-disable.ts.mdx similarity index 65% rename from docs/snippets/common/storybook-main-disable-refs.ts.mdx rename to docs/snippets/common/main-config-refs-disable.ts.mdx index 8ff381750d68..586096d20ff5 100644 --- a/docs/snippets/common/storybook-main-disable-refs.ts.mdx +++ b/docs/snippets/common/main-config-refs-disable.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - // Your Storybook configuration + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], refs: { 'package-name': { disable: true }, }, diff --git a/docs/snippets/common/storybook-main-ref-per-environment.js.mdx b/docs/snippets/common/main-config-refs-with-function.js.mdx similarity index 79% rename from docs/snippets/common/storybook-main-ref-per-environment.js.mdx rename to docs/snippets/common/main-config-refs-with-function.js.mdx index 0a531ef9fc8a..5fc96d6cc28a 100644 --- a/docs/snippets/common/storybook-main-ref-per-environment.js.mdx +++ b/docs/snippets/common/main-config-refs-with-function.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - // Your existing Storybook configuration + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], // 👇 Retrieve the current environment from the configType argument refs: (config, { configType }) => { diff --git a/docs/snippets/common/storybook-main-ref-per-environment.ts.mdx b/docs/snippets/common/main-config-refs-with-function.ts.mdx similarity index 87% rename from docs/snippets/common/storybook-main-ref-per-environment.ts.mdx rename to docs/snippets/common/main-config-refs-with-function.ts.mdx index 43d81bd7500d..e66643eddc5e 100644 --- a/docs/snippets/common/storybook-main-ref-per-environment.ts.mdx +++ b/docs/snippets/common/main-config-refs-with-function.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - // Your existing Storybook configuration + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], // 👇 Retrieve the current environment from the configType argument refs: (config, { configType }) => { diff --git a/docs/snippets/common/main-config-refs.js.mdx b/docs/snippets/common/main-config-refs.js.mdx new file mode 100644 index 000000000000..403c205db4cc --- /dev/null +++ b/docs/snippets/common/main-config-refs.js.mdx @@ -0,0 +1,16 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + refs: { + 'design-system': { + title: 'Storybook Design System', + url: 'https://master--5ccbc373887ca40020446347.chromatic.com/', + expanded: false, // Optional, true by default + }, + }, +}; +``` diff --git a/docs/snippets/common/storybook-main-ref-remote.ts.mdx b/docs/snippets/common/main-config-refs.ts.mdx similarity index 62% rename from docs/snippets/common/storybook-main-ref-remote.ts.mdx rename to docs/snippets/common/main-config-refs.ts.mdx index 0e5a1d0f87ad..ecccd8cbaa0a 100644 --- a/docs/snippets/common/storybook-main-ref-remote.ts.mdx +++ b/docs/snippets/common/main-config-refs.ts.mdx @@ -1,15 +1,16 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - // Your Storybook configuration + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], refs: { 'design-system': { title: 'Storybook Design System', - url: 'https://5ccbc373887ca40020446347-yldsqjoxzb.chromatic.com', + url: 'https://master--5ccbc373887ca40020446347.chromatic.com/', expanded: false, // Optional, true by default }, }, diff --git a/docs/snippets/common/main-config-static-dirs-with-object.js.mdx b/docs/snippets/common/main-config-static-dirs-with-object.js.mdx new file mode 100644 index 000000000000..250d5ae5f319 --- /dev/null +++ b/docs/snippets/common/main-config-static-dirs-with-object.js.mdx @@ -0,0 +1,10 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + staticDirs: [{ from: '../my-custom-assets/images', to: '/assets' }], +}; +``` diff --git a/docs/snippets/common/main-config-static-dirs-with-object.ts.mdx b/docs/snippets/common/main-config-static-dirs-with-object.ts.mdx new file mode 100644 index 000000000000..59d261a4a460 --- /dev/null +++ b/docs/snippets/common/main-config-static-dirs-with-object.ts.mdx @@ -0,0 +1,14 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + staticDirs: [{ from: '../my-custom-assets/images', to: '/assets' }], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-static-dirs.js.mdx b/docs/snippets/common/main-config-static-dirs.js.mdx new file mode 100644 index 000000000000..3ef837411079 --- /dev/null +++ b/docs/snippets/common/main-config-static-dirs.js.mdx @@ -0,0 +1,10 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + staticDirs: ['../public', '../static'], +}; +``` diff --git a/docs/snippets/common/storybook-main-with-multiple-static-dir.ts.mdx b/docs/snippets/common/main-config-static-dirs.ts.mdx similarity index 64% rename from docs/snippets/common/storybook-main-with-multiple-static-dir.ts.mdx rename to docs/snippets/common/main-config-static-dirs.ts.mdx index af7682bcbb4b..63a9345742d7 100644 --- a/docs/snippets/common/storybook-main-with-multiple-static-dir.ts.mdx +++ b/docs/snippets/common/main-config-static-dirs.ts.mdx @@ -1,12 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: [], - addons: [], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], staticDirs: ['../public', '../static'], }; diff --git a/docs/snippets/common/main-config-stories-ordered.js.mdx b/docs/snippets/common/main-config-stories-ordered.js.mdx new file mode 100644 index 000000000000..6c07a42b86e0 --- /dev/null +++ b/docs/snippets/common/main-config-stories-ordered.js.mdx @@ -0,0 +1,12 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: [ + '../src/**/*.mdx', // 👈 These will display first in the sidebar + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', // 👈 Followed by these + ], +}; +``` diff --git a/docs/snippets/common/main-config-stories-ordered.ts.mdx b/docs/snippets/common/main-config-stories-ordered.ts.mdx new file mode 100644 index 000000000000..b4909c9f625f --- /dev/null +++ b/docs/snippets/common/main-config-stories-ordered.ts.mdx @@ -0,0 +1,13 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-stories-with-logic.js.mdx b/docs/snippets/common/main-config-stories-with-logic.js.mdx new file mode 100644 index 000000000000..423862fae265 --- /dev/null +++ b/docs/snippets/common/main-config-stories-with-logic.js.mdx @@ -0,0 +1,17 @@ +```js +// .storybook/main.js + +async function findStories() { + // your custom logic returns a list of files +} + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: async (list) => [ + ...list, + // 👇 Add your found stories to the existing list of story files + ...(await findStories()), + ], +}; +``` diff --git a/docs/snippets/common/main-config-stories-with-logic.ts.mdx b/docs/snippets/common/main-config-stories-with-logic.ts.mdx new file mode 100644 index 000000000000..9fc8480c6656 --- /dev/null +++ b/docs/snippets/common/main-config-stories-with-logic.ts.mdx @@ -0,0 +1,21 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +async function findStories() { + // your custom logic returns a list of files +} + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: async (list) => [ + ...list, + // 👇 Add your found stories to the existing list of story files + ...(await findStories()), + ], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-stories-with-object.js.mdx b/docs/snippets/common/main-config-stories-with-object.js.mdx new file mode 100644 index 000000000000..04dbbe9e28b3 --- /dev/null +++ b/docs/snippets/common/main-config-stories-with-object.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: [ + { + // 👇 Sets the directory containing your stories + directory: '../packages/components', + // 👇 Storybook will load all files that match this glob + files: '*.stories.*', + // 👇 Used when generating automatic titles for your stories + titlePrefix: 'MyComponents', + }, + ], +}; +``` diff --git a/docs/snippets/common/main-config-stories-with-object.ts.mdx b/docs/snippets/common/main-config-stories-with-object.ts.mdx new file mode 100644 index 000000000000..522c8e511e79 --- /dev/null +++ b/docs/snippets/common/main-config-stories-with-object.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: [ + { + // 👇 Sets the directory containing your stories + directory: '../packages/components', + // 👇 Storybook will load all files that match this glob + files: '*.stories.*', + // 👇 Used when generating automatic titles for your stories + titlePrefix: 'MyComponents', + }, + ], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-stories.js.mdx b/docs/snippets/common/main-config-stories.js.mdx new file mode 100644 index 000000000000..d59db1bcbaf8 --- /dev/null +++ b/docs/snippets/common/main-config-stories.js.mdx @@ -0,0 +1,9 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; +``` diff --git a/docs/snippets/common/main-config-stories.ts.mdx b/docs/snippets/common/main-config-stories.ts.mdx new file mode 100644 index 000000000000..b4909c9f625f --- /dev/null +++ b/docs/snippets/common/main-config-stories.ts.mdx @@ -0,0 +1,13 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-typescript-check-options.ts.mdx b/docs/snippets/common/main-config-typescript-check-options.ts.mdx new file mode 100644 index 000000000000..0581f7ee5ebf --- /dev/null +++ b/docs/snippets/common/main-config-typescript-check-options.ts.mdx @@ -0,0 +1,19 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + typescript: { + check: true, + checkOptions: { + eslint: true, + }, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-typescript-check.ts.mdx b/docs/snippets/common/main-config-typescript-check.ts.mdx new file mode 100644 index 000000000000..5f0149dfcb5e --- /dev/null +++ b/docs/snippets/common/main-config-typescript-check.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + typescript: { + check: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-main-add-ts-config.ts.mdx b/docs/snippets/common/main-config-typescript-react-docgen-typescript-options.ts.mdx similarity index 68% rename from docs/snippets/common/storybook-main-add-ts-config.ts.mdx rename to docs/snippets/common/main-config-typescript-react-docgen-typescript-options.ts.mdx index 20e7d952a7d2..fc36649054e1 100644 --- a/docs/snippets/common/storybook-main-add-ts-config.ts.mdx +++ b/docs/snippets/common/main-config-typescript-react-docgen-typescript-options.ts.mdx @@ -1,18 +1,17 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: [], - addons: [], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], typescript: { - check: false, - checkOptions: {}, reactDocgen: 'react-docgen-typescript', reactDocgenTypescriptOptions: { shouldExtractLiteralValuesFromEnum: true, + // 👇 Default prop filter, which excludes props from node_modules propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true), }, }, diff --git a/docs/snippets/common/main-config-typescript-react-docgen.ts.mdx b/docs/snippets/common/main-config-typescript-react-docgen.ts.mdx new file mode 100644 index 000000000000..6b908ac4000f --- /dev/null +++ b/docs/snippets/common/main-config-typescript-react-docgen.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + typescript: { + reactDocgen: 'react-docgen-typescript', + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-typescript-skip-babel.ts.mdx b/docs/snippets/common/main-config-typescript-skip-babel.ts.mdx new file mode 100644 index 000000000000..c0c39d39a12d --- /dev/null +++ b/docs/snippets/common/main-config-typescript-skip-babel.ts.mdx @@ -0,0 +1,16 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + typescript: { + skipBabel: true, + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-typical.js.mdx b/docs/snippets/common/main-config-typical.js.mdx new file mode 100644 index 000000000000..4f31198b4088 --- /dev/null +++ b/docs/snippets/common/main-config-typical.js.mdx @@ -0,0 +1,17 @@ +```js +// .storybook/main.js + +const config = { + // Required + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + // Optional + addons: ['@storybook/addon-essentials'], + docs: { + autodocs: 'tag', + }, + staticDirs: ['../public'], +}; +export default config; +``` diff --git a/docs/snippets/common/storybook-storyloading-custom-logic.ts.mdx b/docs/snippets/common/main-config-typical.ts.mdx similarity index 52% rename from docs/snippets/common/storybook-storyloading-custom-logic.ts.mdx rename to docs/snippets/common/main-config-typical.ts.mdx index 6ef4c6cafd50..d71cf4994cb5 100644 --- a/docs/snippets/common/storybook-storyloading-custom-logic.ts.mdx +++ b/docs/snippets/common/main-config-typical.ts.mdx @@ -1,17 +1,19 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; -function findStories() { - // your custom logic returns a list of files -} - const config: StorybookConfig = { - // 👇 Storybook will load all existing stories within the MyStories folder - stories: async (list) => [...list, ...findStories()], + // Required + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + // Optional addons: ['@storybook/addon-essentials'], + docs: { + autodocs: 'tag', + }, + staticDirs: ['../public'], }; export default config; diff --git a/docs/snippets/common/storybook-vite-builder-config-env.js.mdx b/docs/snippets/common/main-config-vite-final.js.mdx similarity index 72% rename from docs/snippets/common/storybook-vite-builder-config-env.js.mdx rename to docs/snippets/common/main-config-vite-final.js.mdx index eea8ead3280b..b2987dcd412c 100644 --- a/docs/snippets/common/storybook-vite-builder-config-env.js.mdx +++ b/docs/snippets/common/main-config-vite-final.js.mdx @@ -1,14 +1,12 @@ ```js -// .storybook/main.js|ts +// .storybook/main.js import { mergeConfig } from 'vite'; export default { - stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-links', '@storybook/addon-essentials'], - core: { - builder: '@storybook/builder-vite', - }, + // Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], async viteFinal(config, { configType }) { if (configType === 'DEVELOPMENT') { // Your development configuration goes here diff --git a/docs/snippets/common/main-config-vite-final.ts.mdx b/docs/snippets/common/main-config-vite-final.ts.mdx new file mode 100644 index 000000000000..a82973f98afc --- /dev/null +++ b/docs/snippets/common/main-config-vite-final.ts.mdx @@ -0,0 +1,25 @@ +```js +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; +import { mergeConfig } from 'vite'; + +const config = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async viteFinal(config, { configType }) { + if (configType === 'DEVELOPMENT') { + // Your development configuration goes here + } + if (configType === 'PRODUCTION') { + // Your production configuration goes here. + } + return mergeConfig(config, { + // Your environment configuration here + }); + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/main-config-webpack-final.js.mdx b/docs/snippets/common/main-config-webpack-final.js.mdx new file mode 100644 index 000000000000..65d346eb38db --- /dev/null +++ b/docs/snippets/common/main-config-webpack-final.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async webpackFinal(config, { configType }) { + if (configType === 'DEVELOPMENT') { + // Modify config for development + } + if (configType === 'PRODUCTION') { + // Modify config for production + } + return config; + }, +}; +``` diff --git a/docs/snippets/common/main-config-webpack-final.ts.mdx b/docs/snippets/common/main-config-webpack-final.ts.mdx new file mode 100644 index 000000000000..c3d1e9aa2185 --- /dev/null +++ b/docs/snippets/common/main-config-webpack-final.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async webpackFinal(config, { configType }) { + if (configType === 'DEVELOPMENT') { + // Modify config for development + } + if (configType === 'PRODUCTION') { + // Modify config for production + } + return config; + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/my-addon-babel-configuration.js.mdx b/docs/snippets/common/my-addon-babel-configuration.js.mdx deleted file mode 100644 index 7fdc781547ae..000000000000 --- a/docs/snippets/common/my-addon-babel-configuration.js.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```js -// /my-addon/.babelrc.js - -export default { - presets: ['@babel/preset-env', '@babel/preset-react'], -}; -``` diff --git a/docs/snippets/common/my-addon-initial-panel-state.js.mdx b/docs/snippets/common/my-addon-initial-panel-state.js.mdx deleted file mode 100644 index a6b69c859a21..000000000000 --- a/docs/snippets/common/my-addon-initial-panel-state.js.mdx +++ /dev/null @@ -1,27 +0,0 @@ -```js -// /my-addon/src/manager.js - -import React from 'react'; - -import { addons, types } from '@storybook/manager-api'; - -import { AddonPanel } from '@storybook/components'; - -const ADDON_ID = 'myaddon'; -const PANEL_ID = `${ADDON_ID}/panel`; - -// give a unique name for the panel -const MyPanel = () => <div>MyAddon</div>; - -addons.register(ADDON_ID, (api) => { - addons.add(PANEL_ID, { - type: types.PANEL, - title: 'My Addon', - render: ({ active, key }) => ( - <AddonPanel active={active} key={key}> - <MyPanel /> - </AddonPanel> - ), - }); -}); -``` diff --git a/docs/snippets/common/my-addon-preset-implementation.js.mdx b/docs/snippets/common/my-addon-preset-implementation.js.mdx deleted file mode 100644 index fad71a878675..000000000000 --- a/docs/snippets/common/my-addon-preset-implementation.js.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```js -// /my-addon/src/preset.js - -function managerEntries(entry = []) { - return [...entry, require.resolve('./register')]; //👈 Addon implementation -} - -export default { managerEntries }; -``` diff --git a/docs/snippets/common/my-addon-root-level-preset.js.mdx b/docs/snippets/common/my-addon-root-level-preset.js.mdx deleted file mode 100644 index 5af0d6d61a4d..000000000000 --- a/docs/snippets/common/my-addon-root-level-preset.js.mdx +++ /dev/null @@ -1,5 +0,0 @@ -```js -// /my-addon/preset.js - -module.exports = require('./dist/preset.js'); -``` diff --git a/docs/snippets/common/my-addon-storybook-registration.js.mdx b/docs/snippets/common/my-addon-storybook-registration.js.mdx deleted file mode 100644 index b8b01ec48d2d..000000000000 --- a/docs/snippets/common/my-addon-storybook-registration.js.mdx +++ /dev/null @@ -1,13 +0,0 @@ -```js -// /my-addon/.storybook/main.js - -export default { - stories: [], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/preset-create-react-app', - '../src/preset.js', //👈 Our addon registered here - ], -}; -``` diff --git a/docs/snippets/common/my-component-argtypes-with-mapping.js.mdx b/docs/snippets/common/my-component-argtypes-with-mapping.js.mdx deleted file mode 100644 index 891c4e6c9821..000000000000 --- a/docs/snippets/common/my-component-argtypes-with-mapping.js.mdx +++ /dev/null @@ -1,23 +0,0 @@ -```js -// MyComponent.stories.js|jsx - -import { MyComponent } from './MyComponent'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, - argTypes: { - label: { - options: ['Normal', 'Bold', 'Italic'], - mapping: { - Bold: <b>Bold</b>, - Italic: <i>Italic</i>, - }, - }, - }, -}; -``` diff --git a/docs/snippets/common/my-component-argtypes-with-mapping.ts-4-9.mdx b/docs/snippets/common/my-component-argtypes-with-mapping.ts-4-9.mdx deleted file mode 100644 index 833d6c8c7550..000000000000 --- a/docs/snippets/common/my-component-argtypes-with-mapping.ts-4-9.mdx +++ /dev/null @@ -1,28 +0,0 @@ -```ts -// MyComponent.stories.ts|tsx - -// Replace your-framework with the name of your framework -import type { Meta } from '@storybook/your-framework'; - -import { MyComponent } from './MyComponent'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, - argTypes: { - label: { - options: ['Normal', 'Bold', 'Italic'], - mapping: { - Bold: <b>Bold</b>, - Italic: <i>Italic</i>, - }, - }, - }, -} satisfies Meta<typeof MyComponent>; - -export default meta; -``` diff --git a/docs/snippets/common/my-component-argtypes-with-mapping.ts.mdx b/docs/snippets/common/my-component-argtypes-with-mapping.ts.mdx deleted file mode 100644 index e7d2bdf00227..000000000000 --- a/docs/snippets/common/my-component-argtypes-with-mapping.ts.mdx +++ /dev/null @@ -1,28 +0,0 @@ -```ts -// MyComponent.stories.ts|tsx - -// Replace your-framework with the name of your framework -import type { Meta } from '@storybook/your-framework'; - -import { MyComponent } from './MyComponent'; - -const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, - argTypes: { - label: { - options: ['Normal', 'Bold', 'Italic'], - mapping: { - Bold: <b>Bold</b>, - Italic: <i>Italic</i>, - }, - }, - }, -}; - -export default meta; -``` diff --git a/docs/snippets/common/my-component-disable-toc.js.mdx b/docs/snippets/common/my-component-disable-toc.js.mdx new file mode 100644 index 000000000000..e78fca95fafd --- /dev/null +++ b/docs/snippets/common/my-component-disable-toc.js.mdx @@ -0,0 +1,17 @@ +```js +// MyComponent.stories.js|jsx + +import { MyComponent } from './MyComponent'; + +export default { + component: MyComponent, + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/my-component-disable-toc.ts-4-9.mdx b/docs/snippets/common/my-component-disable-toc.ts-4-9.mdx new file mode 100644 index 000000000000..b61b5eca2a87 --- /dev/null +++ b/docs/snippets/common/my-component-disable-toc.ts-4-9.mdx @@ -0,0 +1,22 @@ +```ts +// MyComponent.stories.ts|tsx + +// Replace your-framework with the name of your framework +import type { Meta } from '@storybook/your-framework'; + +import { MyComponent } from './MyComponent'; + +const meta = { + component: MyComponent, + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +} satisfies Meta<typeof MyComponent>; + +export default meta; +``` diff --git a/docs/snippets/common/my-component-disable-toc.ts.mdx b/docs/snippets/common/my-component-disable-toc.ts.mdx new file mode 100644 index 000000000000..eda13b92ab13 --- /dev/null +++ b/docs/snippets/common/my-component-disable-toc.ts.mdx @@ -0,0 +1,22 @@ +```ts +// MyComponent.stories.ts|tsx + +// Replace your-framework with the name of your framework +import type { Meta } from '@storybook/your-framework'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/common/my-component-env-var-config.js.mdx b/docs/snippets/common/my-component-env-var-config.js.mdx index dd8d6ffa5879..6b8f83ad5735 100644 --- a/docs/snippets/common/my-component-env-var-config.js.mdx +++ b/docs/snippets/common/my-component-env-var-config.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-env-var-config.ts-4-9.mdx b/docs/snippets/common/my-component-env-var-config.ts-4-9.mdx index 3483cc9a62f7..77947c80123c 100644 --- a/docs/snippets/common/my-component-env-var-config.ts-4-9.mdx +++ b/docs/snippets/common/my-component-env-var-config.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-env-var-config.ts.mdx b/docs/snippets/common/my-component-env-var-config.ts.mdx index 0a78a52604b3..73ad1d3ce3ff 100644 --- a/docs/snippets/common/my-component-env-var-config.ts.mdx +++ b/docs/snippets/common/my-component-env-var-config.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-alt-queries.js.mdx b/docs/snippets/common/my-component-play-function-alt-queries.js.mdx index 5ad6ab702f64..ee3451219be0 100644 --- a/docs/snippets/common/my-component-play-function-alt-queries.js.mdx +++ b/docs/snippets/common/my-component-play-function-alt-queries.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'QueryMethods', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-alt-queries.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-alt-queries.ts-4-9.mdx index 46bcda5718be..be129ab2a271 100644 --- a/docs/snippets/common/my-component-play-function-alt-queries.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-alt-queries.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'QueryMethods', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-alt-queries.ts.mdx b/docs/snippets/common/my-component-play-function-alt-queries.ts.mdx index bbb0e74d454f..249b71db4bed 100644 --- a/docs/snippets/common/my-component-play-function-alt-queries.ts.mdx +++ b/docs/snippets/common/my-component-play-function-alt-queries.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'QueryMethods', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-composition.js.mdx b/docs/snippets/common/my-component-play-function-composition.js.mdx index aa181690d552..6fab14e41807 100644 --- a/docs/snippets/common/my-component-play-function-composition.js.mdx +++ b/docs/snippets/common/my-component-play-function-composition.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-composition.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-composition.ts-4-9.mdx index 49f3d56a1e48..016260754908 100644 --- a/docs/snippets/common/my-component-play-function-composition.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-composition.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-composition.ts.mdx b/docs/snippets/common/my-component-play-function-composition.ts.mdx index cee172c68645..e58c1768c532 100644 --- a/docs/snippets/common/my-component-play-function-composition.ts.mdx +++ b/docs/snippets/common/my-component-play-function-composition.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-query-findby.js.mdx b/docs/snippets/common/my-component-play-function-query-findby.js.mdx index 08d8c80f0981..28847498a2fb 100644 --- a/docs/snippets/common/my-component-play-function-query-findby.js.mdx +++ b/docs/snippets/common/my-component-play-function-query-findby.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'Async Query Methods', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-query-findby.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-query-findby.ts-4-9.mdx index 6a9cd99770cc..583296aa108c 100644 --- a/docs/snippets/common/my-component-play-function-query-findby.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-query-findby.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'Async Query Methods', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-query-findby.ts.mdx b/docs/snippets/common/my-component-play-function-query-findby.ts.mdx index cf9e08cd8201..968689d8f825 100644 --- a/docs/snippets/common/my-component-play-function-query-findby.ts.mdx +++ b/docs/snippets/common/my-component-play-function-query-findby.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'Async Query Methods', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-waitfor.js.mdx b/docs/snippets/common/my-component-play-function-waitfor.js.mdx index 95213e43c479..825577bf9443 100644 --- a/docs/snippets/common/my-component-play-function-waitfor.js.mdx +++ b/docs/snippets/common/my-component-play-function-waitfor.js.mdx @@ -6,7 +6,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'WithAsync', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-waitfor.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-waitfor.ts-4-9.mdx index d54f77371334..f601b7661bb6 100644 --- a/docs/snippets/common/my-component-play-function-waitfor.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-waitfor.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'WithAsync', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-waitfor.ts.mdx b/docs/snippets/common/my-component-play-function-waitfor.ts.mdx index 8b75573d0fb6..a7c257a16eff 100644 --- a/docs/snippets/common/my-component-play-function-waitfor.ts.mdx +++ b/docs/snippets/common/my-component-play-function-waitfor.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'WithAsync', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-canvas.js.mdx b/docs/snippets/common/my-component-play-function-with-canvas.js.mdx index fa2c9d62bb07..26ec005f70fa 100644 --- a/docs/snippets/common/my-component-play-function-with-canvas.js.mdx +++ b/docs/snippets/common/my-component-play-function-with-canvas.js.mdx @@ -6,7 +6,6 @@ import { getByRole, userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'WithCanvasElement', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-canvas.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-with-canvas.ts-4-9.mdx index 5ce3c0f8ba44..7e520ef0db5a 100644 --- a/docs/snippets/common/my-component-play-function-with-canvas.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-with-canvas.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'WithCanvasElement', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-with-canvas.ts.mdx b/docs/snippets/common/my-component-play-function-with-canvas.ts.mdx index 8051cf7ca0eb..41afc7e31081 100644 --- a/docs/snippets/common/my-component-play-function-with-canvas.ts.mdx +++ b/docs/snippets/common/my-component-play-function-with-canvas.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'WithCanvasElement', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-clickevent.js.mdx b/docs/snippets/common/my-component-play-function-with-clickevent.js.mdx index 0b2b44958dbd..e91d5125f6d6 100644 --- a/docs/snippets/common/my-component-play-function-with-clickevent.js.mdx +++ b/docs/snippets/common/my-component-play-function-with-clickevent.js.mdx @@ -6,7 +6,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'ClickExamples', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-clickevent.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-with-clickevent.ts-4-9.mdx index cd840074c51c..dc6a71c73db0 100644 --- a/docs/snippets/common/my-component-play-function-with-clickevent.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-with-clickevent.ts-4-9.mdx @@ -9,7 +9,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'ClickExamples', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-with-clickevent.ts.mdx b/docs/snippets/common/my-component-play-function-with-clickevent.ts.mdx index d058a6854de7..fc3092dafdca 100644 --- a/docs/snippets/common/my-component-play-function-with-clickevent.ts.mdx +++ b/docs/snippets/common/my-component-play-function-with-clickevent.ts.mdx @@ -9,7 +9,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'ClickExamples', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-delay.js.mdx b/docs/snippets/common/my-component-play-function-with-delay.js.mdx index 6e650def7780..ace73e5f0ace 100644 --- a/docs/snippets/common/my-component-play-function-with-delay.js.mdx +++ b/docs/snippets/common/my-component-play-function-with-delay.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'WithDelay', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-delay.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-with-delay.ts-4-9.mdx index ad98db24f035..690a07110717 100644 --- a/docs/snippets/common/my-component-play-function-with-delay.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-with-delay.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'WithDelay', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-with-delay.ts.mdx b/docs/snippets/common/my-component-play-function-with-delay.ts.mdx index e8b45fd7fab2..ac62dd697b9e 100644 --- a/docs/snippets/common/my-component-play-function-with-delay.ts.mdx +++ b/docs/snippets/common/my-component-play-function-with-delay.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'WithDelay', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-selectevent.js.mdx b/docs/snippets/common/my-component-play-function-with-selectevent.js.mdx index 1bed754ea3e1..0ae5a89c877e 100644 --- a/docs/snippets/common/my-component-play-function-with-selectevent.js.mdx +++ b/docs/snippets/common/my-component-play-function-with-selectevent.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'WithSelectEvent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-play-function-with-selectevent.ts-4-9.mdx b/docs/snippets/common/my-component-play-function-with-selectevent.ts-4-9.mdx index a86ab5621813..c48571a3891c 100644 --- a/docs/snippets/common/my-component-play-function-with-selectevent.ts-4-9.mdx +++ b/docs/snippets/common/my-component-play-function-with-selectevent.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'WithSelectEvent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-play-function-with-selectevent.ts.mdx b/docs/snippets/common/my-component-play-function-with-selectevent.ts.mdx index 232d6aff7a6a..63ca967308ec 100644 --- a/docs/snippets/common/my-component-play-function-with-selectevent.ts.mdx +++ b/docs/snippets/common/my-component-play-function-with-selectevent.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'WithSelectEvent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-story-import-json.js.mdx b/docs/snippets/common/my-component-story-import-json.js.mdx index 61e6135a819a..b3c7087c79c6 100644 --- a/docs/snippets/common/my-component-story-import-json.js.mdx +++ b/docs/snippets/common/my-component-story-import-json.js.mdx @@ -1,5 +1,5 @@ ```js -// MyComponent.stories.js|jsx|ts|tsx +// MyComponent.stories.js|jsx|mjs|ts|tsx // This will automatically be parsed to the contents of `data.json` import data from './data.json'; diff --git a/docs/snippets/common/my-component-story-import-static-asset.js.mdx b/docs/snippets/common/my-component-story-import-static-asset.js.mdx index b62d06a85e80..b0a0b84a3a75 100644 --- a/docs/snippets/common/my-component-story-import-static-asset.js.mdx +++ b/docs/snippets/common/my-component-story-import-static-asset.js.mdx @@ -1,5 +1,5 @@ ```js -// MyComponent.stories.js|jsx|ts|tsx +// MyComponent.stories.js|jsx|mjs|ts|tsx // This will include './static/image.png' in the bundle. // And return a path to be included in a src attribute diff --git a/docs/snippets/common/my-component-story-with-storyname.js.mdx b/docs/snippets/common/my-component-story-with-storyname.js.mdx index ed99aae4b1cd..b3b3ad5bf89d 100644 --- a/docs/snippets/common/my-component-story-with-storyname.js.mdx +++ b/docs/snippets/common/my-component-story-with-storyname.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-story-with-storyname.ts-4-9.mdx b/docs/snippets/common/my-component-story-with-storyname.ts-4-9.mdx index 399afe28ca29..3ef9528331ab 100644 --- a/docs/snippets/common/my-component-story-with-storyname.ts-4-9.mdx +++ b/docs/snippets/common/my-component-story-with-storyname.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/my-component-story-with-storyname.ts.mdx b/docs/snippets/common/my-component-story-with-storyname.ts.mdx index 1e48ed8cf1e9..e84f3fbb6ab9 100644 --- a/docs/snippets/common/my-component-story-with-storyname.ts.mdx +++ b/docs/snippets/common/my-component-story-with-storyname.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/my-component-story.js.mdx b/docs/snippets/common/my-component-story.js.mdx index b8843b66f251..a4bc0493fbb0 100644 --- a/docs/snippets/common/my-component-story.js.mdx +++ b/docs/snippets/common/my-component-story.js.mdx @@ -1,5 +1,5 @@ ```js -// MyComponent.stories.js|jsx|ts|tsx +// MyComponent.stories.js|jsx|mjs|ts|tsx import { MyComponent } from './MyComponent'; diff --git a/docs/snippets/common/my-component-vite-env-variables.js.mdx b/docs/snippets/common/my-component-vite-env-variables.js.mdx new file mode 100644 index 000000000000..08fe0cef60e6 --- /dev/null +++ b/docs/snippets/common/my-component-vite-env-variables.js.mdx @@ -0,0 +1,16 @@ +```js +// MyComponent.stories.js|jsx + +import { MyComponent } from './MyComponent'; + +export default { + component: MyComponent, +}; + +export const ExampleStory = { + args: { + propertyA: import.meta.env.STORYBOOK_DATA_KEY, + propertyB: import.meta.env.VITE_CUSTOM_VAR, + }, +}; +``` diff --git a/docs/snippets/common/my-component-vite-env-variables.ts-4-9.mdx b/docs/snippets/common/my-component-vite-env-variables.ts-4-9.mdx new file mode 100644 index 000000000000..77f63ce7ce00 --- /dev/null +++ b/docs/snippets/common/my-component-vite-env-variables.ts-4-9.mdx @@ -0,0 +1,22 @@ +```tsx +// MyComponent.stories.ts|tsx + +// Replace your-framework with the name of your framework +import type { Meta, StoryObj } from '@storybook/your-framework'; + +import { MyComponent } from './MyComponent'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const ExampleStory: Story = { + args: { + propertyA: import.meta.env.STORYBOOK_DATA_KEY, + propertyB: import.meta.env.VITE_CUSTOM_VAR, + }, +}; +``` diff --git a/docs/snippets/common/my-component-vite-env-variables.ts.mdx b/docs/snippets/common/my-component-vite-env-variables.ts.mdx new file mode 100644 index 000000000000..63873e873ece --- /dev/null +++ b/docs/snippets/common/my-component-vite-env-variables.ts.mdx @@ -0,0 +1,22 @@ +```tsx +// MyComponent.stories.ts|tsx + +// Replace your-framework with the name of your framework +import type { Meta, StoryObj } from '@storybook/your-framework'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const ExampleStory: Story = { + args: { + propertyA: import.meta.env.STORYBOOK_DATA_KEY, + propertyB: import.meta.env.VITE_CUSTOM_VAR, + }, +}; +``` diff --git a/docs/snippets/react/my-component-with-env-variables.js.mdx b/docs/snippets/common/my-component-with-env-variables.js.mdx similarity index 53% rename from docs/snippets/react/my-component-with-env-variables.js.mdx rename to docs/snippets/common/my-component-with-env-variables.js.mdx index 48aebac4f1de..50eaf6c05e2c 100644 --- a/docs/snippets/react/my-component-with-env-variables.js.mdx +++ b/docs/snippets/common/my-component-with-env-variables.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/react/my-component-with-env-variables.ts-4-9.mdx b/docs/snippets/common/my-component-with-env-variables.ts-4-9.mdx similarity index 50% rename from docs/snippets/react/my-component-with-env-variables.ts-4-9.mdx rename to docs/snippets/common/my-component-with-env-variables.ts-4-9.mdx index 762d7c961814..27f2b085bac5 100644 --- a/docs/snippets/react/my-component-with-env-variables.ts-4-9.mdx +++ b/docs/snippets/common/my-component-with-env-variables.ts-4-9.mdx @@ -1,16 +1,12 @@ ```ts -// MyComponent.stories.ts| tsx +// MyComponent.stories.ts|tsx -import type { Meta, StoryObj } from '@storybook/react'; +// Replace your-framework with the name of your framework +import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/my-component-with-env-variables.ts.mdx b/docs/snippets/common/my-component-with-env-variables.ts.mdx similarity index 50% rename from docs/snippets/react/my-component-with-env-variables.ts.mdx rename to docs/snippets/common/my-component-with-env-variables.ts.mdx index df291ff47555..d765be75bb29 100644 --- a/docs/snippets/react/my-component-with-env-variables.ts.mdx +++ b/docs/snippets/common/my-component-with-env-variables.ts.mdx @@ -1,16 +1,12 @@ ```ts -// MyComponent.stories.ts| tsx +// MyComponent.stories.ts|tsx -import type { Meta, StoryObj } from '@storybook/react'; +// Replace your-framework with the name of your framework +import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/page-story-with-args-composition.js.mdx b/docs/snippets/common/page-story-with-args-composition.js.mdx index 8519dce5908d..351ea46bdc70 100644 --- a/docs/snippets/common/page-story-with-args-composition.js.mdx +++ b/docs/snippets/common/page-story-with-args-composition.js.mdx @@ -9,7 +9,6 @@ import * as DocumentHeader from './DocumentHeader.stories'; import * as DocumentList from './DocumentList.stories'; export default { - title: 'DocumentScreen', component: DocumentScreen, }; diff --git a/docs/snippets/common/page-story-with-args-composition.ts-4-9.mdx b/docs/snippets/common/page-story-with-args-composition.ts-4-9.mdx index 6234e68dfd0d..c08c880b095a 100644 --- a/docs/snippets/common/page-story-with-args-composition.ts-4-9.mdx +++ b/docs/snippets/common/page-story-with-args-composition.ts-4-9.mdx @@ -12,7 +12,6 @@ import * as DocumentHeader from './DocumentHeader.stories'; import * as DocumentList from './DocumentList.stories'; const meta = { - title: 'DocumentScreen', component: DocumentScreen, } satisfies Meta<typeof DocumentScreen>; diff --git a/docs/snippets/common/page-story-with-args-composition.ts.mdx b/docs/snippets/common/page-story-with-args-composition.ts.mdx index a4ebdd1a534a..7ae28b21085e 100644 --- a/docs/snippets/common/page-story-with-args-composition.ts.mdx +++ b/docs/snippets/common/page-story-with-args-composition.ts.mdx @@ -12,7 +12,6 @@ import * as DocumentHeader from './DocumentHeader.stories'; import * as DocumentList from './DocumentList.stories'; const meta: Meta<typeof DocumentScreen> = { - title: 'DocumentScreen', component: DocumentScreen, }; diff --git a/docs/snippets/common/register-component-with-play-function.js.mdx b/docs/snippets/common/register-component-with-play-function.js.mdx index 4a1dfd9e95ba..3b98d3d75e3a 100644 --- a/docs/snippets/common/register-component-with-play-function.js.mdx +++ b/docs/snippets/common/register-component-with-play-function.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { RegistrationForm } from './RegistrationForm'; export default { - title: 'RegistrationForm', component: RegistrationForm, }; diff --git a/docs/snippets/common/register-component-with-play-function.ts-4-9.mdx b/docs/snippets/common/register-component-with-play-function.ts-4-9.mdx index 76bd67586426..57b542477b7d 100644 --- a/docs/snippets/common/register-component-with-play-function.ts-4-9.mdx +++ b/docs/snippets/common/register-component-with-play-function.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { RegistrationForm } from './RegistrationForm'; const meta = { - title: 'RegistrationForm', component: RegistrationForm, } satisfies Meta<typeof RegistrationForm>; diff --git a/docs/snippets/common/register-component-with-play-function.ts.mdx b/docs/snippets/common/register-component-with-play-function.ts.mdx index 3357548f1244..1a6ba449c7ac 100644 --- a/docs/snippets/common/register-component-with-play-function.ts.mdx +++ b/docs/snippets/common/register-component-with-play-function.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { RegistrationForm } from './RegistrationForm'; const meta: Meta<typeof RegistrationForm> = { - title: 'RegistrationForm', component: RegistrationForm, }; diff --git a/docs/snippets/common/storybook-a11y-register.js.mdx b/docs/snippets/common/storybook-a11y-register.js.mdx index 9641345c0e78..8d962d452579 100644 --- a/docs/snippets/common/storybook-a11y-register.js.mdx +++ b/docs/snippets/common/storybook-a11y-register.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other Storybook addons '@storybook/addon-a11y', //👈 The a11y addon goes here diff --git a/docs/snippets/common/storybook-a11y-register.ts.mdx b/docs/snippets/common/storybook-a11y-register.ts.mdx index 45827698ba02..06d1e9dd10ec 100644 --- a/docs/snippets/common/storybook-a11y-register.ts.mdx +++ b/docs/snippets/common/storybook-a11y-register.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other Storybook addons '@storybook/addon-a11y', //👈 The a11y addon goes here diff --git a/docs/snippets/common/storybook-addon-a11y-component-config.js.mdx b/docs/snippets/common/storybook-addon-a11y-component-config.js.mdx index 29519080f66f..7423922d2f63 100644 --- a/docs/snippets/common/storybook-addon-a11y-component-config.js.mdx +++ b/docs/snippets/common/storybook-addon-a11y-component-config.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, parameters: { a11y: { diff --git a/docs/snippets/common/storybook-addon-a11y-component-config.ts-4-9.mdx b/docs/snippets/common/storybook-addon-a11y-component-config.ts-4-9.mdx index 049c78ac82fa..b35a73f6be28 100644 --- a/docs/snippets/common/storybook-addon-a11y-component-config.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-a11y-component-config.ts-4-9.mdx @@ -9,11 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, parameters: { a11y: { diff --git a/docs/snippets/common/storybook-addon-a11y-component-config.ts.mdx b/docs/snippets/common/storybook-addon-a11y-component-config.ts.mdx index 482711642acd..c05b1bdfb97b 100644 --- a/docs/snippets/common/storybook-addon-a11y-component-config.ts.mdx +++ b/docs/snippets/common/storybook-addon-a11y-component-config.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, parameters: { a11y: { diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.js.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.js.mdx index 364787276696..a9d776a3c1db 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.js.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.js.mdx @@ -5,11 +5,6 @@ import { Button } from './Button'; // To apply a set of backgrounds to all stories of Button: export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts-4-9.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts-4-9.mdx index 09c449212b28..ab68e4833685 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts-4-9.mdx @@ -8,11 +8,6 @@ import { Button } from './Button'; // To apply a set of backgrounds to all stories of Button: const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts.mdx index 2c6a974e9552..e2bbdba0602a 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-backgrounds.ts.mdx @@ -8,11 +8,6 @@ import { Button } from './Button'; // To apply a set of backgrounds to all stories of Button: const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.js.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.js.mdx index 51f538735c4c..c3516bc085d7 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.js.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.js.mdx @@ -5,11 +5,6 @@ import { Button } from './Button'; // To apply a grid to all stories of Button: export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { @@ -17,8 +12,8 @@ export default { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts-4-9.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts-4-9.mdx index 8700892434e8..7cc9abb5203c 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts-4-9.mdx @@ -8,11 +8,6 @@ import { Button } from './Button'; // To apply a set of backgrounds to all stories of Button: const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { @@ -20,8 +15,8 @@ const meta = { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts.mdx b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts.mdx index a709b8822b2a..44bcac14d625 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-configure-grid.ts.mdx @@ -8,11 +8,6 @@ import { Button } from './Button'; // To apply a set of backgrounds to all stories of Button: const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, parameters: { backgrounds: { @@ -20,8 +15,8 @@ const meta: Meta<typeof Button> = { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.js.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.js.mdx index 9ce9f5c23fa1..b3c9e09d548a 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.js.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts-4-9.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts-4-9.mdx index ecc785d8b7dc..9e3f90e91b7c 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts.mdx index d16e54ce0e94..165ea1e4000b 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-backgrounds.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.js.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.js.mdx index a2e330ca50a1..6630646e0d64 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.js.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts-4-9.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts-4-9.mdx index 72b7be9054ad..47a5e14b6d3d 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts.mdx b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts.mdx index 107a035ff35a..00ccf95c7afe 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-disable-grid.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.js.mdx b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.js.mdx index 648214cf220a..55ecc448bcef 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.js.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts-4-9.mdx b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts-4-9.mdx index 505f0c25b3b4..b05b88f8317a 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts-4-9.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts.mdx b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts.mdx index 582c712c217f..a6a0079709ee 100644 --- a/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts.mdx +++ b/docs/snippets/common/storybook-addon-backgrounds-override-background-color.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-addon-change-panel.js.mdx b/docs/snippets/common/storybook-addon-change-panel.js.mdx deleted file mode 100644 index 0ffef55d741d..000000000000 --- a/docs/snippets/common/storybook-addon-change-panel.js.mdx +++ /dev/null @@ -1,13 +0,0 @@ -```js -// /my-addon/src/manager.js - -import { useParameter } from '@storybook/manager-api'; - -const PARAM_KEY = 'myAddon'; - -const MyPanel = () => { - const value = useParameter(PARAM_KEY, null); - const item = value ? value.data : 'No story parameter defined'; - return <div>{item}</div>; -}; -``` diff --git a/docs/snippets/common/storybook-addon-css-example.ts.mdx b/docs/snippets/common/storybook-addon-css-example.ts.mdx new file mode 100644 index 000000000000..0f5b2c64f204 --- /dev/null +++ b/docs/snippets/common/storybook-addon-css-example.ts.mdx @@ -0,0 +1,404 @@ +```ts +// src/OutlineCSS.ts + +import { dedent } from 'ts-dedent'; + +export default function outlineCSS(selector: string) { + return dedent/* css */ ` + ${selector} body { + outline: 1px solid #2980b9 !important; + } + + ${selector} article { + outline: 1px solid #3498db !important; + } + + ${selector} nav { + outline: 1px solid #0088c3 !important; + } + + ${selector} aside { + outline: 1px solid #33a0ce !important; + } + + ${selector} section { + outline: 1px solid #66b8da !important; + } + + ${selector} header { + outline: 1px solid #99cfe7 !important; + } + + ${selector} footer { + outline: 1px solid #cce7f3 !important; + } + + ${selector} h1 { + outline: 1px solid #162544 !important; + } + + ${selector} h2 { + outline: 1px solid #314e6e !important; + } + + ${selector} h3 { + outline: 1px solid #3e5e85 !important; + } + + ${selector} h4 { + outline: 1px solid #449baf !important; + } + + ${selector} h5 { + outline: 1px solid #c7d1cb !important; + } + + ${selector} h6 { + outline: 1px solid #4371d0 !important; + } + + ${selector} main { + outline: 1px solid #2f4f90 !important; + } + + ${selector} address { + outline: 1px solid #1a2c51 !important; + } + + ${selector} div { + outline: 1px solid #036cdb !important; + } + + ${selector} p { + outline: 1px solid #ac050b !important; + } + + ${selector} hr { + outline: 1px solid #ff063f !important; + } + + ${selector} pre { + outline: 1px solid #850440 !important; + } + + ${selector} blockquote { + outline: 1px solid #f1b8e7 !important; + } + + ${selector} ol { + outline: 1px solid #ff050c !important; + } + + ${selector} ul { + outline: 1px solid #d90416 !important; + } + + ${selector} li { + outline: 1px solid #d90416 !important; + } + + ${selector} dl { + outline: 1px solid #fd3427 !important; + } + + ${selector} dt { + outline: 1px solid #ff0043 !important; + } + + ${selector} dd { + outline: 1px solid #e80174 !important; + } + + ${selector} figure { + outline: 1px solid #ff00bb !important; + } + + ${selector} figcaption { + outline: 1px solid #bf0032 !important; + } + + ${selector} table { + outline: 1px solid #00cc99 !important; + } + + ${selector} caption { + outline: 1px solid #37ffc4 !important; + } + + ${selector} thead { + outline: 1px solid #98daca !important; + } + + ${selector} tbody { + outline: 1px solid #64a7a0 !important; + } + + ${selector} tfoot { + outline: 1px solid #22746b !important; + } + + ${selector} tr { + outline: 1px solid #86c0b2 !important; + } + + ${selector} th { + outline: 1px solid #a1e7d6 !important; + } + + ${selector} td { + outline: 1px solid #3f5a54 !important; + } + + ${selector} col { + outline: 1px solid #6c9a8f !important; + } + + ${selector} colgroup { + outline: 1px solid #6c9a9d !important; + } + + ${selector} button { + outline: 1px solid #da8301 !important; + } + + ${selector} datalist { + outline: 1px solid #c06000 !important; + } + + ${selector} fieldset { + outline: 1px solid #d95100 !important; + } + + ${selector} form { + outline: 1px solid #d23600 !important; + } + + ${selector} input { + outline: 1px solid #fca600 !important; + } + + ${selector} keygen { + outline: 1px solid #b31e00 !important; + } + + ${selector} label { + outline: 1px solid #ee8900 !important; + } + + ${selector} legend { + outline: 1px solid #de6d00 !important; + } + + ${selector} meter { + outline: 1px solid #e8630c !important; + } + + ${selector} optgroup { + outline: 1px solid #b33600 !important; + } + + ${selector} option { + outline: 1px solid #ff8a00 !important; + } + + ${selector} output { + outline: 1px solid #ff9619 !important; + } + + ${selector} progress { + outline: 1px solid #e57c00 !important; + } + + ${selector} select { + outline: 1px solid #e26e0f !important; + } + + ${selector} textarea { + outline: 1px solid #cc5400 !important; + } + + ${selector} details { + outline: 1px solid #33848f !important; + } + + ${selector} summary { + outline: 1px solid #60a1a6 !important; + } + + ${selector} command { + outline: 1px solid #438da1 !important; + } + + ${selector} menu { + outline: 1px solid #449da6 !important; + } + + ${selector} del { + outline: 1px solid #bf0000 !important; + } + + ${selector} ins { + outline: 1px solid #400000 !important; + } + + ${selector} img { + outline: 1px solid #22746b !important; + } + + ${selector} iframe { + outline: 1px solid #64a7a0 !important; + } + + ${selector} embed { + outline: 1px solid #98daca !important; + } + + ${selector} object { + outline: 1px solid #00cc99 !important; + } + + ${selector} param { + outline: 1px solid #37ffc4 !important; + } + + ${selector} video { + outline: 1px solid #6ee866 !important; + } + + ${selector} audio { + outline: 1px solid #027353 !important; + } + + ${selector} source { + outline: 1px solid #012426 !important; + } + + ${selector} canvas { + outline: 1px solid #a2f570 !important; + } + + ${selector} track { + outline: 1px solid #59a600 !important; + } + + ${selector} map { + outline: 1px solid #7be500 !important; + } + + ${selector} area { + outline: 1px solid #305900 !important; + } + + ${selector} a { + outline: 1px solid #ff62ab !important; + } + + ${selector} em { + outline: 1px solid #800b41 !important; + } + + ${selector} strong { + outline: 1px solid #ff1583 !important; + } + + ${selector} i { + outline: 1px solid #803156 !important; + } + + ${selector} b { + outline: 1px solid #cc1169 !important; + } + + ${selector} u { + outline: 1px solid #ff0430 !important; + } + + ${selector} s { + outline: 1px solid #f805e3 !important; + } + + ${selector} small { + outline: 1px solid #d107b2 !important; + } + + ${selector} abbr { + outline: 1px solid #4a0263 !important; + } + + ${selector} q { + outline: 1px solid #240018 !important; + } + + ${selector} cite { + outline: 1px solid #64003c !important; + } + + ${selector} dfn { + outline: 1px solid #b4005a !important; + } + + ${selector} sub { + outline: 1px solid #dba0c8 !important; + } + + ${selector} sup { + outline: 1px solid #cc0256 !important; + } + + ${selector} time { + outline: 1px solid #d6606d !important; + } + + ${selector} code { + outline: 1px solid #e04251 !important; + } + + ${selector} kbd { + outline: 1px solid #5e001f !important; + } + + ${selector} samp { + outline: 1px solid #9c0033 !important; + } + + ${selector} var { + outline: 1px solid #d90047 !important; + } + + ${selector} mark { + outline: 1px solid #ff0053 !important; + } + + ${selector} bdi { + outline: 1px solid #bf3668 !important; + } + + ${selector} bdo { + outline: 1px solid #6f1400 !important; + } + + ${selector} ruby { + outline: 1px solid #ff7b93 !important; + } + + ${selector} rt { + outline: 1px solid #ff2f54 !important; + } + + ${selector} rp { + outline: 1px solid #803e49 !important; + } + + ${selector} span { + outline: 1px solid #cc2643 !important; + } + + ${selector} br { + outline: 1px solid #db687d !important; + } + + ${selector} wbr { + outline: 1px solid #db175b !important; + }`; +} +``` diff --git a/docs/snippets/common/storybook-addon-css-helpers.ts.mdx b/docs/snippets/common/storybook-addon-css-helpers.ts.mdx new file mode 100644 index 000000000000..7b440ed15934 --- /dev/null +++ b/docs/snippets/common/storybook-addon-css-helpers.ts.mdx @@ -0,0 +1,32 @@ +```ts +// src/helpers.ts + +import { global } from '@storybook/global'; + +export const clearStyles = (selector: string | string[]) => { + const selectors = Array.isArray(selector) ? selector : [selector]; + selectors.forEach(clearStyle); +}; + +const clearStyle = (input: string | string[]) => { + const selector = typeof input === 'string' ? input : input.join(''); + const element = global.document.getElementById(selector); + if (element && element.parentElement) { + element.parentElement.removeChild(element); + } +}; + +export const addOutlineStyles = (selector: string, css: string) => { + const existingStyle = global.document.getElementById(selector); + if (existingStyle) { + if (existingStyle.innerHTML !== css) { + existingStyle.innerHTML = css; + } + } else { + const style = global.document.createElement('style'); + style.setAttribute('id', selector); + style.innerHTML = css; + global.document.head.appendChild(style); + } +}; +``` diff --git a/docs/snippets/common/storybook-addon-manager-initial-state.ts.mdx b/docs/snippets/common/storybook-addon-manager-initial-state.ts.mdx new file mode 100644 index 000000000000..cccdd53fe226 --- /dev/null +++ b/docs/snippets/common/storybook-addon-manager-initial-state.ts.mdx @@ -0,0 +1,18 @@ +```ts +// src/manager.ts + +import { addons, types } from '@storybook/manager-api'; +import { ADDON_ID, TOOL_ID } from './constants'; +import { Tool } from './Tool'; + +// Register the addon +addons.register(ADDON_ID, () => { + // Register the tool + addons.add(TOOL_ID, { + type: types.TOOL, + title: 'My addon', + match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), + render: Tool, + }); +}); +``` diff --git a/docs/snippets/common/storybook-addon-release.npm.js.mdx b/docs/snippets/common/storybook-addon-release.npm.js.mdx new file mode 100644 index 000000000000..5871d280d8de --- /dev/null +++ b/docs/snippets/common/storybook-addon-release.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm run release +``` diff --git a/docs/snippets/common/storybook-addon-release.pnpm.js.mdx b/docs/snippets/common/storybook-addon-release.pnpm.js.mdx new file mode 100644 index 000000000000..50160c688a53 --- /dev/null +++ b/docs/snippets/common/storybook-addon-release.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm run release +``` diff --git a/docs/snippets/common/storybook-addon-release.yarn.js.mdx b/docs/snippets/common/storybook-addon-release.yarn.js.mdx new file mode 100644 index 000000000000..dca2997c2ca0 --- /dev/null +++ b/docs/snippets/common/storybook-addon-release.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn release +``` diff --git a/docs/snippets/common/storybook-addon-run-dev-mode.npm.js.mdx b/docs/snippets/common/storybook-addon-run-dev-mode.npm.js.mdx new file mode 100644 index 000000000000..16221782e3e9 --- /dev/null +++ b/docs/snippets/common/storybook-addon-run-dev-mode.npm.js.mdx @@ -0,0 +1,3 @@ +```sh +npm run start +``` diff --git a/docs/snippets/common/storybook-addon-run-dev-mode.pnpm.js.mdx b/docs/snippets/common/storybook-addon-run-dev-mode.pnpm.js.mdx new file mode 100644 index 000000000000..a5eea36913f9 --- /dev/null +++ b/docs/snippets/common/storybook-addon-run-dev-mode.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm run start +``` diff --git a/docs/snippets/common/storybook-addon-run-dev-mode.yarn.js.mdx b/docs/snippets/common/storybook-addon-run-dev-mode.yarn.js.mdx new file mode 100644 index 000000000000..c1fe65f7e747 --- /dev/null +++ b/docs/snippets/common/storybook-addon-run-dev-mode.yarn.js.mdx @@ -0,0 +1,3 @@ +```sh +yarn start +``` diff --git a/docs/snippets/common/storybook-addon-themes-classname-decorator.js.mdx b/docs/snippets/common/storybook-addon-themes-classname-decorator.js.mdx new file mode 100644 index 000000000000..017ec93a260c --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-classname-decorator.js.mdx @@ -0,0 +1,21 @@ +```js +// .storybook/preview.js + +import { withThemeByClassName } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview = { + decorators: [ + withThemeByClassName({ + themes: { + light: '', + dark: 'dark', + }, + defaultTheme: 'light', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-classname-decorator.ts-4-9.mdx b/docs/snippets/common/storybook-addon-themes-classname-decorator.ts-4-9.mdx new file mode 100644 index 000000000000..cc74ae0a663f --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-classname-decorator.ts-4-9.mdx @@ -0,0 +1,23 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeByClassName } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview: Preview = { + decorators: [ + withThemeByClassName<Renderer>({ + themes: { + light: '', + dark: 'dark', + }, + defaultTheme: 'light', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-classname-decorator.ts.mdx b/docs/snippets/common/storybook-addon-themes-classname-decorator.ts.mdx new file mode 100644 index 000000000000..cc74ae0a663f --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-classname-decorator.ts.mdx @@ -0,0 +1,23 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeByClassName } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview: Preview = { + decorators: [ + withThemeByClassName<Renderer>({ + themes: { + light: '', + dark: 'dark', + }, + defaultTheme: 'light', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.js.mdx b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.js.mdx new file mode 100644 index 000000000000..d097c1c4ed37 --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.js.mdx @@ -0,0 +1,22 @@ +```js +// .storybook/preview.js + +import { withThemeByDataAttribute } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview = { + decorators: [ + withThemeByDataAttribute({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + attributeName: 'data-theme', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts-4-9.mdx b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts-4-9.mdx new file mode 100644 index 000000000000..3baa5a6dc5da --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts-4-9.mdx @@ -0,0 +1,24 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeByDataAttribute } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview: Preview = { + decorators: [ + withThemeByDataAttribute<Renderer>({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + attributeName: 'data-theme', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts.mdx b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts.mdx new file mode 100644 index 000000000000..3baa5a6dc5da --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-data-attribute-decorator.ts.mdx @@ -0,0 +1,24 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeByDataAttribute } from '@storybook/addon-themes'; + +import '../src/index.css'; // Your application's global CSS file + +const preview: Preview = { + decorators: [ + withThemeByDataAttribute<Renderer>({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + attributeName: 'data-theme', + }), + ], +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.js.mdx b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.js.mdx new file mode 100644 index 000000000000..d140e0859a5a --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.js.mdx @@ -0,0 +1,30 @@ +```js +// .storybook/preview.js + +import { withThemeFromJSXProvider } from '@storybook/addon-themes'; + +import { createGlobalStyle, ThemeProvider } from 'styled-components'; +import { lightTheme, darkTheme } from '../src/themes'; + +const GlobalStyles = createGlobalStyle` + body { + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + } +`; + +const preview = { + decorators: [ + withThemeFromJSXProvider({ + themes: { + light: lightTheme, + dark: darkTheme, + } + defaultTheme: 'light', + Provider: ThemeProvider, + GlobalStyles, + }) + ] +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts-4-9.mdx b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts-4-9.mdx new file mode 100644 index 000000000000..dd87c4add821 --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts-4-9.mdx @@ -0,0 +1,32 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeFromJSXProvider } from '@storybook/addon-themes'; + +import { createGlobalStyle, ThemeProvider } from 'styled-components'; +import { lightTheme, darkTheme } from '../src/themes'; + +const GlobalStyles = createGlobalStyle` + body { + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + } +`; + +const preview: Preview = { + decorators: [ + withThemeFromJSXProvider<Renderer>({ + themes: { + light: lightTheme, + dark: darkTheme, + } + defaultTheme: 'light', + Provider: ThemeProvider, + GlobalStyles, + }), + ] +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts.mdx b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts.mdx new file mode 100644 index 000000000000..6c8b9027e44e --- /dev/null +++ b/docs/snippets/common/storybook-addon-themes-jsx-provider-decorator.ts.mdx @@ -0,0 +1,31 @@ +```ts +// .storybook/preview.ts + +// Replace your-renderer with the framework you are using (e.g., react, vue3) +import { Preview, Renderer } from '@storybook/your-renderer'; +import { withThemeFromJSXProvider } from '@storybook/addon-themes'; + +import { createGlobalStyle, ThemeProvider } from 'styled-components'; +import { lightTheme, darkTheme } from '../src/themes'; + +const GlobalStyles = createGlobalStyle` + body { + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + } +`; + +const preview: Preview = { + decorators: [ + withThemeFromJSXProvider<Renderer>({ + themes: { + light: lightTheme, + dark: darkTheme, + } + defaultTheme: 'light', + Provider: ThemeProvider, + GlobalStyles, +})] +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addon-tool-initial-setup.ts.mdx b/docs/snippets/common/storybook-addon-tool-initial-setup.ts.mdx new file mode 100644 index 000000000000..7300ceffa32a --- /dev/null +++ b/docs/snippets/common/storybook-addon-tool-initial-setup.ts.mdx @@ -0,0 +1,43 @@ +```tsx +// src/Tool.tsx + +import React, { memo, useCallback, useEffect } from 'react'; + +import { useGlobals, useStorybookApi } from '@storybook/manager-api'; +import { Icons, IconButton } from '@storybook/components'; +import { ADDON_ID, PARAM_KEY, TOOL_ID } from './constants'; + +export const Tool = memo(function MyAddonSelector() { + const [globals, updateGlobals] = useGlobals(); + const api = useStorybookApi(); + + const isActive = [true, 'true'].includes(globals[PARAM_KEY]); + + const toggleMyTool = useCallback(() => { + updateGlobals({ + [PARAM_KEY]: !isActive, + }); + }, [isActive]); + + useEffect(() => { + api.setAddonShortcut(ADDON_ID, { + label: 'Toggle Addon [8]', + defaultShortcut: ['8'], + actionName: 'myaddon', + showInMenu: false, + action: toggleMyTool, + }); + }, [toggleMyTool, api]); + + return ( + <IconButton + key={TOOL_ID} + active={isActive} + title="Apply outlines to the preview" + onClick={toggleMyTool} + > + <Icons icon="lightning" /> + </IconButton> + ); +}); +``` diff --git a/docs/snippets/common/storybook-addon-toolkit-panel-example.panel.ts.mdx b/docs/snippets/common/storybook-addon-toolkit-panel-example.panel.ts.mdx new file mode 100644 index 000000000000..56cdca962478 --- /dev/null +++ b/docs/snippets/common/storybook-addon-toolkit-panel-example.panel.ts.mdx @@ -0,0 +1,43 @@ +```tsx +// src/Panel.tsx + +import React from 'react'; + +import { useAddonState, useChannel } from '@storybook/manager-api'; +import { AddonPanel } from '@storybook/components'; +import { ADDON_ID, EVENTS } from './constants'; + +// See https://github.com/storybookjs/addon-kit/blob/main/src/components/PanelContent.tsx for an example of a PanelContent component +import { PanelContent } from './components/PanelContent'; + +interface PanelProps { + active: boolean; +} + +export const Panel: React.FC<PanelProps> = (props) => { + // https://storybook.js.org/docs/react/addons/addons-api#useaddonstate + const [results, setState] = useAddonState(ADDON_ID, { + danger: [], + warning: [], + }); + + // https://storybook.js.org/docs/react/addons/addons-api#usechannel + const emit = useChannel({ + [EVENTS.RESULT]: (newResults) => setState(newResults), + }); + + return ( + <AddonPanel {...props}> + <PanelContent + results={results} + fetchData={() => { + emit(EVENTS.REQUEST); + }} + clearData={() => { + emit(EVENTS.CLEAR); + }} + /> + </AddonPanel> + ); +}; +``` diff --git a/docs/snippets/common/storybook-addon-toolkit-tab-example.tab.ts.mdx b/docs/snippets/common/storybook-addon-toolkit-tab-example.tab.ts.mdx new file mode 100644 index 000000000000..3e5b748894ee --- /dev/null +++ b/docs/snippets/common/storybook-addon-toolkit-tab-example.tab.ts.mdx @@ -0,0 +1,22 @@ +```tsx +// src/Tab.tsx + +import React from 'react'; + +import { useParameter } from '@storybook/manager-api'; +import { PARAM_KEY } from './constants'; + +// See https://github.com/storybookjs/addon-kit/blob/main/src/components/TabContent.tsx for an example of a TabContent component +import { TabContent } from './components/TabContent'; + +interface TabProps { + active: boolean; +} + +export const Tab: React.FC<TabProps> = ({ active }) => { + // https://storybook.js.org/docs/react/addons/addons-api#useparameter + const paramData = useParameter<string>(PARAM_KEY, ''); + + return active ? <TabContent code={paramData} /> : null; +}; +``` diff --git a/docs/snippets/common/storybook-addon-toolkit-toolbar-example.toolbar.ts.mdx b/docs/snippets/common/storybook-addon-toolkit-toolbar-example.toolbar.ts.mdx new file mode 100644 index 000000000000..7894ddad1b9f --- /dev/null +++ b/docs/snippets/common/storybook-addon-toolkit-toolbar-example.toolbar.ts.mdx @@ -0,0 +1,38 @@ +```tsx +// src/Tool.tsx + +import React, { memo, useCallback, useEffect } from 'react'; + +import { useGlobals, useStorybookApi } from '@storybook/manager-api'; +import { Icons, IconButton } from '@storybook/components'; +import { ADDON_ID, PARAM_KEY, TOOL_ID } from './constants'; + +export const Tool = memo(function MyAddonSelector() { + const [globals, updateGlobals] = useGlobals(); + const api = useStorybookApi(); + + const isActive = [true, 'true'].includes(globals[PARAM_KEY]); + + const toggleMyTool = useCallback(() => { + updateGlobals({ + [PARAM_KEY]: !isActive, + }); + }, [isActive]); + + useEffect(() => { + api.setAddonShortcut(ADDON_ID, { + label: 'Toggle Measure [O]', + defaultShortcut: ['O'], + actionName: 'outline', + showInMenu: false, + action: toggleMyTool, + }); + }, [toggleMyTool, api]); + + return ( + <IconButton key={TOOL_ID} active={isActive} title="Enable my addon" onClick={toggleMyTool}> + <Icons icon="lightning" /> + </IconButton> + ); +}); +``` diff --git a/docs/snippets/common/storybook-addon-toolkit-tsup-config.ts.mdx b/docs/snippets/common/storybook-addon-toolkit-tsup-config.ts.mdx new file mode 100644 index 000000000000..bf7c81d23cab --- /dev/null +++ b/docs/snippets/common/storybook-addon-toolkit-tsup-config.ts.mdx @@ -0,0 +1,22 @@ +```ts +// tsup.config.ts + +import { defineConfig } from 'tsup'; + +export default defineConfig((options) => ({ + entry: ['src/index.ts', 'src/preview.ts', 'src/manager.ts'], + splitting: false, + minify: !options.watch, + format: ['cjs', 'esm'], + dts: { + resolve: true, + }, + treeshake: true, + sourcemap: true, + clean: true, + platform: 'browser', + esbuildOptions(options) { + options.conditions = ['module']; + }, +})); +``` diff --git a/docs/snippets/common/storybook-addon-use-global.ts.mdx b/docs/snippets/common/storybook-addon-use-global.ts.mdx new file mode 100644 index 000000000000..54b4d120c16c --- /dev/null +++ b/docs/snippets/common/storybook-addon-use-global.ts.mdx @@ -0,0 +1,43 @@ +```ts +// src/withGlobals.ts + +import type { Renderer, PartialStoryFn as StoryFunction, StoryContext } from '@storybook/types'; + +import { useEffect, useMemo, useGlobals } from '@storybook/preview-api'; +import { PARAM_KEY } from './constants'; + +import { clearStyles, addOutlineStyles } from './helpers'; + +import outlineCSS from './outlineCSS'; + +export const withGlobals = (StoryFn: StoryFunction<Renderer>, context: StoryContext<Renderer>) => { + const [globals] = useGlobals(); + + const isActive = [true, 'true'].includes(globals[PARAM_KEY]); + + // Is the addon being used in the docs panel + const isInDocs = context.viewMode === 'docs'; + + const outlineStyles = useMemo(() => { + const selector = isInDocs ? `#anchor--${context.id} .docs-story` : '.sb-show-main'; + + return outlineCSS(selector); + }, [context.id]); + useEffect(() => { + const selectorId = isInDocs ? `my-addon-docs-${context.id}` : `my-addon`; + + if (!isActive) { + clearStyles(selectorId); + return; + } + + addOutlineStyles(selectorId, outlineStyles); + + return () => { + clearStyles(selectorId); + }; + }, [isActive, outlineStyles, context.id]); + + return StoryFn(); +}; +``` diff --git a/docs/snippets/common/storybook-addons-local-preset.js.mdx b/docs/snippets/common/storybook-addons-local-preset.js.mdx new file mode 100644 index 000000000000..02af1d762aac --- /dev/null +++ b/docs/snippets/common/storybook-addons-local-preset.js.mdx @@ -0,0 +1,11 @@ +```js +// example-addon/src/preset.js + +import { webpackFinal as webpack } from './webpack/webpackFinal'; +import { viteFinal as vite } from './vite/viteFinal'; +import { babelDefault as babel } from './babel/babelDefault'; + +export const webpackFinal = webpack; +export const viteFinal = vite; +export const babelDefault = babel; +``` diff --git a/docs/snippets/common/storybook-addons-local-preset.ts.mdx b/docs/snippets/common/storybook-addons-local-preset.ts.mdx new file mode 100644 index 000000000000..4ac61204e639 --- /dev/null +++ b/docs/snippets/common/storybook-addons-local-preset.ts.mdx @@ -0,0 +1,15 @@ +```ts +// example-addon/src/preset.ts + +import { webpackFinal as webpack } from './webpack/webpackFinal'; + +import { viteFinal as vite } from './vite/viteFinal'; + +import { babelDefault as babel } from './babel/babelDefault'; + +export const webpackFinal = webpack as any; + +export const viteFinal = vite as any; + +export const babelDefault = babel as any; +``` diff --git a/docs/snippets/common/storybook-addons-preset-babelDefault.js.mdx b/docs/snippets/common/storybook-addons-preset-babelDefault.js.mdx new file mode 100644 index 000000000000..eb831ba140d8 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-babelDefault.js.mdx @@ -0,0 +1,13 @@ +```js +// example-addon/src/babel/babelDefault.js + +export function babelDefault(config) { + return { + ...config, + plugins: [ + ...config.plugins, + [require.resolve('@babel/plugin-transform-react-jsx'), {}, 'preset'], + ], + }; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset-babelDefault.ts.mdx b/docs/snippets/common/storybook-addons-preset-babelDefault.ts.mdx new file mode 100644 index 000000000000..85f9b7e01c74 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-babelDefault.ts.mdx @@ -0,0 +1,15 @@ +```ts +// example-addon/src/babel/babelDefault.ts + +import { TransformOptions } from '@babel/core'; + +export function babelDefault(config: TransformOptions) { + return { + ...config, + plugins: [ + ...config.plugins, + [require.resolve('@babel/plugin-transform-react-jsx'), {}, 'preset'], + ], + }; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset-preview.js.mdx b/docs/snippets/common/storybook-addons-preset-preview.js.mdx new file mode 100644 index 000000000000..dcf618e5b884 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-preview.js.mdx @@ -0,0 +1,16 @@ +```js +// example-addon/src/preview.js + +import { PARAM_KEY } from './constants'; + +import { CustomDecorator } from './decorators'; + +const preview = { + decorators: [CustomDecorator], + globals: { + [PARAM_KEY]: false, + }, +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addons-preset-preview.ts.mdx b/docs/snippets/common/storybook-addons-preset-preview.ts.mdx new file mode 100644 index 000000000000..d12ef155f0cb --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-preview.ts.mdx @@ -0,0 +1,16 @@ +```ts +// example-addon/src/preview.ts + +import type { Renderer, ProjectAnnotations } from '@storybook/types'; +import { PARAM_KEY } from './constants'; +import { CustomDecorator } from './decorators'; + +const preview: ProjectAnnotations<Renderer> = { + decorators: [CustomDecorator], + globals: { + [PARAM_KEY]: false, + }, +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-addons-preset-viteFinal.js.mdx b/docs/snippets/common/storybook-addons-preset-viteFinal.js.mdx new file mode 100644 index 000000000000..f2302c3104e5 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-viteFinal.js.mdx @@ -0,0 +1,13 @@ +```js +// example-addon/src/vite/viteFinal.js + +export function ViteFinal(config, options = {}) { + config.plugins.push( + new MyCustomPlugin({ + someOption: true, + }) + ); + + return config; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset-viteFinal.ts.mdx b/docs/snippets/common/storybook-addons-preset-viteFinal.ts.mdx new file mode 100644 index 000000000000..db3232d8514a --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-viteFinal.ts.mdx @@ -0,0 +1,13 @@ +```ts +// example-addon/src/vite/viteFinal.ts + +export function ViteFinal(config: any, options: any = {}) { + config.plugins.push( + new MyCustomPlugin({ + someOption: true, + }) + ); + + return config; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset-webpackFinal.js.mdx b/docs/snippets/common/storybook-addons-preset-webpackFinal.js.mdx new file mode 100644 index 000000000000..d1174811ae69 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-webpackFinal.js.mdx @@ -0,0 +1,16 @@ +```js +// example-addon/src/webpack/webpackFinal.js + +export function webpackFinal(config, options = {}) { + const rules = [ + ...(config.module?.rules || []), + { + test: /\.custom-file-extension$/, + loader: require.resolve(`custom-loader`), + }, + ]; + config.module.rules = rules; + + return config; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset-webpackFinal.ts.mdx b/docs/snippets/common/storybook-addons-preset-webpackFinal.ts.mdx new file mode 100644 index 000000000000..bce57149a35e --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset-webpackFinal.ts.mdx @@ -0,0 +1,18 @@ +```ts +// example-addon/src/webpack/webpackFinal.ts + +import type { Configuration as WebpackConfig } from 'webpack'; + +export function webpackFinal(config: WebpackConfig, options: any = {}) { + const rules = [ + ...(config.module?.rules || []), + { + test: /\.custom-file$/, + loader: require.resolve(`custom-loader`), + }, + ]; + config.module.rules = rules; + + return config; +} +``` diff --git a/docs/snippets/common/storybook-addons-preset.root-preset.js.mdx b/docs/snippets/common/storybook-addons-preset.root-preset.js.mdx new file mode 100644 index 000000000000..f6357949c067 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset.root-preset.js.mdx @@ -0,0 +1,7 @@ +```js +// preset.js + +export const previewAnnotations = (entry = [], options) => { + return [...entry, require.resolve('./dist/preview')]; +}; +``` diff --git a/docs/snippets/common/storybook-addons-preset.root-preset.ts.mdx b/docs/snippets/common/storybook-addons-preset.root-preset.ts.mdx new file mode 100644 index 000000000000..f6357949c067 --- /dev/null +++ b/docs/snippets/common/storybook-addons-preset.root-preset.ts.mdx @@ -0,0 +1,7 @@ +```js +// preset.js + +export const previewAnnotations = (entry = [], options) => { + return [...entry, require.resolve('./dist/preview')]; +}; +``` diff --git a/docs/snippets/common/storybook-addons-root-preset-manager-entries.js.mdx b/docs/snippets/common/storybook-addons-root-preset-manager-entries.js.mdx new file mode 100644 index 000000000000..199408a5c8c4 --- /dev/null +++ b/docs/snippets/common/storybook-addons-root-preset-manager-entries.js.mdx @@ -0,0 +1,7 @@ +```js +//example-addon/preset.js + +export const managerEntries = (entry = []) => { + return [...entry, require.resolve('path-to-third-party-addon')]; +}; +``` diff --git a/docs/snippets/common/storybook-addons-root-preset-preview-annotations.js.mdx b/docs/snippets/common/storybook-addons-root-preset-preview-annotations.js.mdx new file mode 100644 index 000000000000..f6357949c067 --- /dev/null +++ b/docs/snippets/common/storybook-addons-root-preset-preview-annotations.js.mdx @@ -0,0 +1,7 @@ +```js +// preset.js + +export const previewAnnotations = (entry = [], options) => { + return [...entry, require.resolve('./dist/preview')]; +}; +``` diff --git a/docs/snippets/common/storybook-addons-root-preset.js.mdx b/docs/snippets/common/storybook-addons-root-preset.js.mdx new file mode 100644 index 000000000000..8c82ae3c80ac --- /dev/null +++ b/docs/snippets/common/storybook-addons-root-preset.js.mdx @@ -0,0 +1,9 @@ +```js +// example-addon/preset.js + +export const previewAnnotations = [require.resolve('./dist/preview')]; + +export const managerEntries = [require.resolve('./dist/manager')]; + +export * from './dist/preset'; +``` diff --git a/docs/snippets/common/storybook-auto-docs-full-config.js.mdx b/docs/snippets/common/storybook-auto-docs-full-config.js.mdx index 842fe449fe6e..3ff19b4d7b83 100644 --- a/docs/snippets/common/storybook-auto-docs-full-config.js.mdx +++ b/docs/snippets/common/storybook-auto-docs-full-config.js.mdx @@ -2,17 +2,10 @@ // .storybook/main.js export default { - stories: ['../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // Replace your-framework with the name of your framework (e.g., react-webpack5, vue3-webpack5) - name: '@storybook/your-framework', - options: {}, - }, + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: ['@storybook/addon-essentials'], docs: { //👇 See the table below for the list of supported options autodocs: 'tag', diff --git a/docs/snippets/common/storybook-auto-docs-full-config.ts.mdx b/docs/snippets/common/storybook-auto-docs-full-config.ts.mdx index d536c018bbfb..2c1eb1bac113 100644 --- a/docs/snippets/common/storybook-auto-docs-full-config.ts.mdx +++ b/docs/snippets/common/storybook-auto-docs-full-config.ts.mdx @@ -1,21 +1,13 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: {}, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: ['@storybook/addon-essentials'], docs: { //👇 See the table below for the list of supported options autodocs: 'tag', diff --git a/docs/snippets/common/storybook-auto-docs-main-mdx-config.js.mdx b/docs/snippets/common/storybook-auto-docs-main-mdx-config.js.mdx index 0cc90e6ed1e1..d4a801158196 100644 --- a/docs/snippets/common/storybook-auto-docs-main-mdx-config.js.mdx +++ b/docs/snippets/common/storybook-auto-docs-main-mdx-config.js.mdx @@ -2,20 +2,13 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', stories: [ //👇 Your documentation written in MDX along with your stories goes here '../src/**/*.mdx', - '../src/**/*.stories.@(js|ts)', + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', ], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) - name: '@storybook/your-framework', - options: {}, - }, + addons: ['@storybook/addon-essentials'], }; ``` diff --git a/docs/snippets/common/storybook-auto-docs-main-mdx-config.ts.mdx b/docs/snippets/common/storybook-auto-docs-main-mdx-config.ts.mdx index a80885a005d8..37014b66e0ff 100644 --- a/docs/snippets/common/storybook-auto-docs-main-mdx-config.ts.mdx +++ b/docs/snippets/common/storybook-auto-docs-main-mdx-config.ts.mdx @@ -1,25 +1,18 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', stories: [ //👇 Your documentation written in MDX along with your stories goes here '../src/**/*.mdx', - '../src/**/*.stories.@(js|ts)', + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', ], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: {}, - }, + addons: ['@storybook/addon-essentials'], }; export default config; diff --git a/docs/snippets/common/storybook-automigrate.npm.js.mdx b/docs/snippets/common/storybook-automigrate.npm.js.mdx new file mode 100644 index 000000000000..6a5f7ebdbd5b --- /dev/null +++ b/docs/snippets/common/storybook-automigrate.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npx storybook@latest automigrate +``` diff --git a/docs/snippets/common/storybook-automigrate.pnpm.js.mdx b/docs/snippets/common/storybook-automigrate.pnpm.js.mdx new file mode 100644 index 000000000000..375ba9755861 --- /dev/null +++ b/docs/snippets/common/storybook-automigrate.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm dlx storybook@latest automigrate +``` diff --git a/docs/snippets/common/storybook-automigrate.yarn.js.mdx b/docs/snippets/common/storybook-automigrate.yarn.js.mdx new file mode 100644 index 000000000000..67d30472ba9c --- /dev/null +++ b/docs/snippets/common/storybook-automigrate.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn dlx storybook@latest automigrate +``` diff --git a/docs/snippets/common/storybook-canvas-doc-block-story.js.mdx b/docs/snippets/common/storybook-canvas-doc-block-story.js.mdx index a54c3e4ccf89..fbd25cb54807 100644 --- a/docs/snippets/common/storybook-canvas-doc-block-story.js.mdx +++ b/docs/snippets/common/storybook-canvas-doc-block-story.js.mdx @@ -6,11 +6,6 @@ import { ColorItem, ColorPalette } from '@storybook/blocks'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/storybook-canvas-doc-block-story.ts-4-9.mdx b/docs/snippets/common/storybook-canvas-doc-block-story.ts-4-9.mdx index c3da0b742e7a..41f68c189683 100644 --- a/docs/snippets/common/storybook-canvas-doc-block-story.ts-4-9.mdx +++ b/docs/snippets/common/storybook-canvas-doc-block-story.ts-4-9.mdx @@ -9,11 +9,6 @@ import { ColorItem, ColorPalette } from '@storybook/blocks'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/storybook-canvas-doc-block-story.ts.mdx b/docs/snippets/common/storybook-canvas-doc-block-story.ts.mdx index f91dd4b891c7..32387321d3dd 100644 --- a/docs/snippets/common/storybook-canvas-doc-block-story.ts.mdx +++ b/docs/snippets/common/storybook-canvas-doc-block-story.ts.mdx @@ -9,11 +9,6 @@ import { ColorItem, ColorPalette } from '@storybook/blocks'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/storybook-client-preview.ts.mdx b/docs/snippets/common/storybook-client-preview.ts.mdx index 02c41f0d9bb0..301fb4d52d8f 100644 --- a/docs/snippets/common/storybook-client-preview.ts.mdx +++ b/docs/snippets/common/storybook-client-preview.ts.mdx @@ -1,7 +1,7 @@ ```ts // your-framework/src/client/preview/index.ts -import { start } from '@storybook/core-client'; +import { start } from '@storybook/preview-api'; import './globals'; diff --git a/docs/snippets/common/storybook-component-layout-param.js.mdx b/docs/snippets/common/storybook-component-layout-param.js.mdx index 9a124181ea47..86550543e676 100644 --- a/docs/snippets/common/storybook-component-layout-param.js.mdx +++ b/docs/snippets/common/storybook-component-layout-param.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/common/storybook-component-layout-param.ts-4-9.mdx b/docs/snippets/common/storybook-component-layout-param.ts-4-9.mdx index 55648f7d0e96..ec50f99bcd5b 100644 --- a/docs/snippets/common/storybook-component-layout-param.ts-4-9.mdx +++ b/docs/snippets/common/storybook-component-layout-param.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/common/storybook-component-layout-param.ts.mdx b/docs/snippets/common/storybook-component-layout-param.ts.mdx index d73cc59c67b7..8044c2b779fc 100644 --- a/docs/snippets/common/storybook-component-layout-param.ts.mdx +++ b/docs/snippets/common/storybook-component-layout-param.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/common/storybook-custom-manager-head.js.mdx b/docs/snippets/common/storybook-custom-manager-head.js.mdx new file mode 100644 index 000000000000..1ee1111d1602 --- /dev/null +++ b/docs/snippets/common/storybook-custom-manager-head.js.mdx @@ -0,0 +1,10 @@ +```js +// .storybook/main.js + +export default { + managerHead: (head) => ` + ${head} + <link rel="icon" type="image/png" href="/logo192.png" sizes="192x192" /> + `, +}; +``` diff --git a/docs/snippets/common/storybook-custom-manager-head.ts.mdx b/docs/snippets/common/storybook-custom-manager-head.ts.mdx new file mode 100644 index 000000000000..3437c2b451db --- /dev/null +++ b/docs/snippets/common/storybook-custom-manager-head.ts.mdx @@ -0,0 +1,15 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + managerHead: (head) => ` + ${head} + <link rel="icon" type="image/png" href="/logo192.png" sizes="192x192" /> + `, +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-customize-argtypes.js.mdx b/docs/snippets/common/storybook-customize-argtypes.js.mdx deleted file mode 100644 index 6d8c5622b7f7..000000000000 --- a/docs/snippets/common/storybook-customize-argtypes.js.mdx +++ /dev/null @@ -1,28 +0,0 @@ -```js -// Button.stories.js|jsx - -import { Button } from './Button'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', - component: Button, - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -}; -``` diff --git a/docs/snippets/common/storybook-customize-argtypes.ts-4-9.mdx b/docs/snippets/common/storybook-customize-argtypes.ts-4-9.mdx deleted file mode 100644 index edc3b2e1ce66..000000000000 --- a/docs/snippets/common/storybook-customize-argtypes.ts-4-9.mdx +++ /dev/null @@ -1,33 +0,0 @@ -```ts -// Button.stories.ts|tsx - -// Replace your-framework with the name of your framework -import type { Meta } from '@storybook/your-framework'; - -import { Button } from './Button'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', - component: Button, - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -} satisfies Meta<typeof Button>; - -export default meta; -``` diff --git a/docs/snippets/common/storybook-customize-argtypes.ts.mdx b/docs/snippets/common/storybook-customize-argtypes.ts.mdx deleted file mode 100644 index d67e87ee19f4..000000000000 --- a/docs/snippets/common/storybook-customize-argtypes.ts.mdx +++ /dev/null @@ -1,33 +0,0 @@ -```ts -// Button.stories.ts|tsx - -// Replace your-framework with the name of your framework -import type { Meta } from '@storybook/your-framework'; - -import { Button } from './Button'; - -const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', - component: Button, - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -}; - -export default meta; -``` diff --git a/docs/snippets/common/storybook-enable-buildstoriesjson.js.mdx b/docs/snippets/common/storybook-enable-buildstoriesjson.js.mdx deleted file mode 100644 index 4aada839ed49..000000000000 --- a/docs/snippets/common/storybook-enable-buildstoriesjson.js.mdx +++ /dev/null @@ -1,13 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: [], - addons: [ - // Other Storybook addons - ], - features: { - buildStoriesJson: true, // 👈 Enable this to build the stories.json file - }, -}; -``` diff --git a/docs/snippets/common/storybook-figma-addon-install.npm.js.mdx b/docs/snippets/common/storybook-figma-addon-install.npm.js.mdx index b09592930ccc..8b4450fcfbeb 100644 --- a/docs/snippets/common/storybook-figma-addon-install.npm.js.mdx +++ b/docs/snippets/common/storybook-figma-addon-install.npm.js.mdx @@ -1,3 +1,3 @@ ```shell -npm install --save-dev storybook-addon-designs@beta +npm install --save-dev @storybook/addon-designs ``` diff --git a/docs/snippets/common/storybook-figma-addon-install.pnpm.js.mdx b/docs/snippets/common/storybook-figma-addon-install.pnpm.js.mdx index deac368cc436..84611d606fb0 100644 --- a/docs/snippets/common/storybook-figma-addon-install.pnpm.js.mdx +++ b/docs/snippets/common/storybook-figma-addon-install.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell -pnpm add --save-dev storybook-addon-designs@beta +pnpm add --save-dev @storybook/addon-designs ``` diff --git a/docs/snippets/common/storybook-figma-addon-install.yarn.js.mdx b/docs/snippets/common/storybook-figma-addon-install.yarn.js.mdx index 98c343b260ca..188862d539f0 100644 --- a/docs/snippets/common/storybook-figma-addon-install.yarn.js.mdx +++ b/docs/snippets/common/storybook-figma-addon-install.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell -yarn add --dev storybook-addon-designs@beta +yarn add --dev @storybook/addon-designs ``` diff --git a/docs/snippets/common/storybook-framework-config-options.js.mdx b/docs/snippets/common/storybook-framework-config-options.js.mdx deleted file mode 100644 index d6949daaf13e..000000000000 --- a/docs/snippets/common/storybook-framework-config-options.js.mdx +++ /dev/null @@ -1,20 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: ['../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: { - legacyRootApi: true, - strictMode: true, - }, - }, -}; -``` diff --git a/docs/snippets/common/storybook-framework-config-options.ts.mdx b/docs/snippets/common/storybook-framework-config-options.ts.mdx deleted file mode 100644 index 351aedeb6b0e..000000000000 --- a/docs/snippets/common/storybook-framework-config-options.ts.mdx +++ /dev/null @@ -1,25 +0,0 @@ -```ts -// .storybook/main.ts - -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) -import type { StorybookConfig } from '@storybook/your-framework'; - -const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: { - legacyRootApi: true, - strictMode: true, - }, - }, -}; - -export default config; -``` diff --git a/docs/snippets/common/storybook-interactions-addon-registration.js.mdx b/docs/snippets/common/storybook-interactions-addon-registration.js.mdx index 3d260ff3c950..cec3e7796484 100644 --- a/docs/snippets/common/storybook-interactions-addon-registration.js.mdx +++ b/docs/snippets/common/storybook-interactions-addon-registration.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other Storybook addons '@storybook/addon-interactions', // 👈 Register the addon diff --git a/docs/snippets/common/storybook-interactions-addon-registration.ts.mdx b/docs/snippets/common/storybook-interactions-addon-registration.ts.mdx index 0abff69d1b7b..25a5d322873e 100644 --- a/docs/snippets/common/storybook-interactions-addon-registration.ts.mdx +++ b/docs/snippets/common/storybook-interactions-addon-registration.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other Storybook addons '@storybook/addon-interactions', // 👈 Register the addon diff --git a/docs/snippets/common/storybook-interactions-play-function.js.mdx b/docs/snippets/common/storybook-interactions-play-function.js.mdx index eb4430682445..19179f5c9ef8 100644 --- a/docs/snippets/common/storybook-interactions-play-function.js.mdx +++ b/docs/snippets/common/storybook-interactions-play-function.js.mdx @@ -8,11 +8,6 @@ import { expect } from '@storybook/jest'; import { Form } from './Form'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: Form, argTypes: { onSubmit: { action: true }, diff --git a/docs/snippets/common/storybook-interactions-play-function.ts-4-9.mdx b/docs/snippets/common/storybook-interactions-play-function.ts-4-9.mdx index 362d4425ade5..262fba679659 100644 --- a/docs/snippets/common/storybook-interactions-play-function.ts-4-9.mdx +++ b/docs/snippets/common/storybook-interactions-play-function.ts-4-9.mdx @@ -2,7 +2,7 @@ // Form.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { userEvent, waitFor, within } from '@storybook/testing-library'; @@ -11,11 +11,6 @@ import { expect } from '@storybook/jest'; import { Form } from './Form'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: Form, argTypes: { onSubmit: { action: true }, diff --git a/docs/snippets/common/storybook-interactions-play-function.ts.mdx b/docs/snippets/common/storybook-interactions-play-function.ts.mdx index 52636bac5c33..69facbbf7998 100644 --- a/docs/snippets/common/storybook-interactions-play-function.ts.mdx +++ b/docs/snippets/common/storybook-interactions-play-function.ts.mdx @@ -2,7 +2,7 @@ // Form.stories.ts|tsx // Replace your-framework with the name of your framework -import type { Meta, StoryObj } from '@storybook/<your-framework>'; +import type { Meta, StoryObj } from '@storybook/your-framework'; import { userEvent, waitFor, within } from '@storybook/testing-library'; @@ -11,12 +11,7 @@ import { expect } from '@storybook/jest'; import { Form } from './Form'; const meta: Meta<typeof Form> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, + component: Form, argTypes: { onSubmit: { action: true }, }, diff --git a/docs/snippets/common/storybook-interactions-step-function.js.mdx b/docs/snippets/common/storybook-interactions-step-function.js.mdx index a3cbbfd513f1..3b6e9fafcd35 100644 --- a/docs/snippets/common/storybook-interactions-step-function.js.mdx +++ b/docs/snippets/common/storybook-interactions-step-function.js.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; export default { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/storybook-interactions-step-function.ts-4-9.mdx b/docs/snippets/common/storybook-interactions-step-function.ts-4-9.mdx index 22acc0021e7e..ad51d3ebd3ec 100644 --- a/docs/snippets/common/storybook-interactions-step-function.ts-4-9.mdx +++ b/docs/snippets/common/storybook-interactions-step-function.ts-4-9.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta = { - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/common/storybook-interactions-step-function.ts.mdx b/docs/snippets/common/storybook-interactions-step-function.ts.mdx index f4ce1c25d97e..65062c0c44f9 100644 --- a/docs/snippets/common/storybook-interactions-step-function.ts.mdx +++ b/docs/snippets/common/storybook-interactions-step-function.ts.mdx @@ -9,7 +9,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/common/storybook-main-add-sass-config.js.mdx b/docs/snippets/common/storybook-main-add-sass-config.js.mdx deleted file mode 100644 index abdf13c264ef..000000000000 --- a/docs/snippets/common/storybook-main-add-sass-config.js.mdx +++ /dev/null @@ -1,30 +0,0 @@ -```js -// .storybook/main.js - -import * as path from 'path'; - -// Export a function. Accept the base config as the only param. -export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - webpackFinal: async (config, { configType }) => { - // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' - // You can change the configuration based on that. - // 'PRODUCTION' is used when building the static version of storybook. - - // Make whatever fine-grained changes you need - config.module.rules.push({ - test: /\.scss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - include: path.resolve(__dirname, '../'), - }); - - // Return the altered config - return config; - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-add-sass-config.ts.mdx b/docs/snippets/common/storybook-main-add-sass-config.ts.mdx deleted file mode 100644 index 099939c045f7..000000000000 --- a/docs/snippets/common/storybook-main-add-sass-config.ts.mdx +++ /dev/null @@ -1,35 +0,0 @@ -```ts -// .storybook/main.ts - -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) -import type { StorybookConfig } from '@storybook/your-framework'; - -// your app's webpack.config.js -import custom from '../webpack.config.js'; - -const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - webpackFinal: async (config, { configType }) => { - // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' - // You can change the configuration based on that. - // 'PRODUCTION' is used when building the static version of storybook. - - // Make whatever fine-grained changes you need - config.module.rules.push({ - test: /\.scss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - include: path.resolve(__dirname, '../'), - }); - - // Return the altered config - return config; - }, -}; - -export default config; -``` diff --git a/docs/snippets/common/storybook-main-advanced-config-example.js.mdx b/docs/snippets/common/storybook-main-advanced-config-example.js.mdx index 6f9085749fb5..375ac6f6e7dc 100644 --- a/docs/snippets/common/storybook-main-advanced-config-example.js.mdx +++ b/docs/snippets/common/storybook-main-advanced-config-example.js.mdx @@ -2,12 +2,12 @@ // .storybook/main.js export default { - managerWebpack: async (config, options) => { - // update config here + viteFinal: async (config, options) => { + // Update config here return config; }, webpackFinal: async (config, options) => { - // change webpack config + // Change webpack config return config; }, babel: async (config, options) => { diff --git a/docs/snippets/common/storybook-main-advanced-config-example.ts.mdx b/docs/snippets/common/storybook-main-advanced-config-example.ts.mdx new file mode 100644 index 000000000000..a18f54d7178b --- /dev/null +++ b/docs/snippets/common/storybook-main-advanced-config-example.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + viteFinal: async (config, options) => { + // Update config here + return config; + }, + webpackFinal: async (config, options) => { + // Change webpack config + return config; + }, + babel: async (config, options) => { + return config; + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-main-auto-title-custom.js.mdx b/docs/snippets/common/storybook-main-auto-title-custom.js.mdx index 7a8a7dcd3877..b60850e5ab00 100644 --- a/docs/snippets/common/storybook-main-auto-title-custom.js.mdx +++ b/docs/snippets/common/storybook-main-auto-title-custom.js.mdx @@ -2,15 +2,13 @@ // .storybook/main.js export default { - stories: [{ directory: '../src', titlePrefix: 'Custom' }], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: [ + { + directory: '../src', + titlePrefix: 'Custom', // 👈 Configure the title prefix + }, ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, }; ``` diff --git a/docs/snippets/common/storybook-main-auto-title-custom.ts.mdx b/docs/snippets/common/storybook-main-auto-title-custom.ts.mdx index e93152e7768f..63fa32d33149 100644 --- a/docs/snippets/common/storybook-main-auto-title-custom.ts.mdx +++ b/docs/snippets/common/storybook-main-auto-title-custom.ts.mdx @@ -1,20 +1,17 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: [{ directory: '../src', titlePrefix: 'Custom' }], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', + framework: '@storybook/your-framework', + stories: [ + { + directory: '../src', + titlePrefix: 'Custom', // 👈 Configure the title prefix + }, ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, }; export default config; diff --git a/docs/snippets/common/storybook-main-baseline-setup.ts.mdx b/docs/snippets/common/storybook-main-baseline-setup.ts.mdx deleted file mode 100644 index 52c770c53ec4..000000000000 --- a/docs/snippets/common/storybook-main-baseline-setup.ts.mdx +++ /dev/null @@ -1,36 +0,0 @@ -```ts -// .storybook/main.ts - -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) -import type { StorybookConfig } from '@storybook/your-framework'; - -const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - staticDirs: ['../public'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/preset-create-react-app', - '@storybook/addon-interactions', - ], - docs: { - autodocs: 'tag', - }, - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, - babel: async (options) => ({ - // Update your babel configuration here - ...options, - }), - - webpackFinal: async (config, { configType }) => { - // Make whatever fine-grained changes you need - // Return the altered config - return config; - }, -}; - -export default config; -``` diff --git a/docs/snippets/common/storybook-main-config-remark-options.js.mdx b/docs/snippets/common/storybook-main-config-remark-options.js.mdx index 98fb0c852b80..f8cf30c06a14 100644 --- a/docs/snippets/common/storybook-main-config-remark-options.js.mdx +++ b/docs/snippets/common/storybook-main-config-remark-options.js.mdx @@ -4,7 +4,9 @@ import remarkGfm from 'remark-gfm'; export default { - stories: ['../src/**/*.stories.@(js|ts)'], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other addons go here { @@ -18,13 +20,5 @@ export default { }, }, ], - framework: { - // Replace your-framework with the name of your framework (e.g., react-webpack5, vue3-webpack5) - name: '@storybook/your-framework', - options: {}, - }, - docs: { - autodocs: 'tag', - }, }; ``` diff --git a/docs/snippets/common/storybook-main-config-remark-options.ts.mdx b/docs/snippets/common/storybook-main-config-remark-options.ts.mdx index a5e26376abaa..00dba480a139 100644 --- a/docs/snippets/common/storybook-main-config-remark-options.ts.mdx +++ b/docs/snippets/common/storybook-main-config-remark-options.ts.mdx @@ -3,11 +3,12 @@ import remarkGfm from 'remark-gfm'; -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|ts)'], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other addons go here { @@ -21,14 +22,6 @@ const config: StorybookConfig = { }, }, ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: {}, - }, - docs: { - autodocs: 'tag', - }, }; export default config; diff --git a/docs/snippets/common/storybook-main-configuration-src-dir.main-js.js.mdx b/docs/snippets/common/storybook-main-configuration-src-dir.main-js.js.mdx index 5f38866fbdb5..408623d70a69 100644 --- a/docs/snippets/common/storybook-main-configuration-src-dir.main-js.js.mdx +++ b/docs/snippets/common/storybook-main-configuration-src-dir.main-js.js.mdx @@ -2,15 +2,8 @@ // ./storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', stories: ['../src'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, }; ``` diff --git a/docs/snippets/common/storybook-main-configuration-src-dir.main-ts.ts.mdx b/docs/snippets/common/storybook-main-configuration-src-dir.main-ts.ts.mdx index 36a86c01bc98..32018a354594 100644 --- a/docs/snippets/common/storybook-main-configuration-src-dir.main-ts.ts.mdx +++ b/docs/snippets/common/storybook-main-configuration-src-dir.main-ts.ts.mdx @@ -1,20 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + framework: '@storybook/your-framework', stories: ['../src'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, }; export default config; diff --git a/docs/snippets/common/storybook-main-default-setup.js.mdx b/docs/snippets/common/storybook-main-default-setup.js.mdx deleted file mode 100644 index 112e808c7de2..000000000000 --- a/docs/snippets/common/storybook-main-default-setup.js.mdx +++ /dev/null @@ -1,31 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - staticDirs: ['../public'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/preset-create-react-app', - '@storybook/addon-interactions', - ], - docs: { - autodocs: 'tag', - }, - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, - babel: async (options) => ({ - // Update your babel configuration here - ...options, - }), - - webpackFinal: async (config, { configType }) => { - // Make whatever fine-grained changes you need - // Return the altered config - return config; - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-default-setup.ts.mdx b/docs/snippets/common/storybook-main-default-setup.ts.mdx deleted file mode 100644 index 3aca24258d20..000000000000 --- a/docs/snippets/common/storybook-main-default-setup.ts.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```ts -// .storybook/main.ts - -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) -import type { StorybookConfig } from '@storybook/your-framework'; - -const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - staticDirs: ['../public'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/preset-create-react-app', - '@storybook/addon-interactions', - ], - typescript: { - check: false, - checkOptions: {}, - reactDocgen: 'react-docgen-typescript', - reactDocgenTypescriptOptions: { - shouldExtractLiteralValuesFromEnum: true, - propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true), - }, - }, - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, - core: { - disableTelemetry: true, - }, - docs: { - autodocs: 'tag', - }, - refs: { - 'design-system': { - title: 'Storybook Design System', - url: 'https://5ccbc373887ca40020446347-yldsqjoxzb.chromatic.com', - }, - }, -}; - -export default config; -``` diff --git a/docs/snippets/common/storybook-main-disable-addon.js.mdx b/docs/snippets/common/storybook-main-disable-addon.js.mdx index db60484817bd..4940a5b604da 100644 --- a/docs/snippets/common/storybook-main-disable-addon.js.mdx +++ b/docs/snippets/common/storybook-main-disable-addon.js.mdx @@ -2,11 +2,14 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ { name: '@storybook/addon-essentials', options: { - backgrounds: false, + backgrounds: false, // 👈 disable the backgrounds addon }, }, ], diff --git a/docs/snippets/common/storybook-main-disable-addon.ts.mdx b/docs/snippets/common/storybook-main-disable-addon.ts.mdx index 6bcfae1ecd12..16b51553b473 100644 --- a/docs/snippets/common/storybook-main-disable-addon.ts.mdx +++ b/docs/snippets/common/storybook-main-disable-addon.ts.mdx @@ -1,15 +1,17 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ { name: '@storybook/addon-essentials', options: { - backgrounds: false, + backgrounds: false, // 👈 disable the backgrounds addon }, }, ], diff --git a/docs/snippets/common/storybook-main-disable-refs.js.mdx b/docs/snippets/common/storybook-main-disable-refs.js.mdx deleted file mode 100644 index db8d91885f31..000000000000 --- a/docs/snippets/common/storybook-main-disable-refs.js.mdx +++ /dev/null @@ -1,10 +0,0 @@ -```js -// .storybook/main.js - -export default { - // Your Storybook configuration - refs: { - 'package-name': { disable: true }, - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx b/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx index 90a8043e6e83..88304ed3dbbc 100644 --- a/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx +++ b/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx @@ -2,17 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/preset-create-react-app', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], core: { disableTelemetry: true, // 👈 Disables telemetry }, diff --git a/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx b/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx index 6677dec59256..c155d3a0142d 100644 --- a/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx +++ b/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx @@ -1,21 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/preset-create-react-app', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], core: { disableTelemetry: true, // 👈 Disables telemetry }, diff --git a/docs/snippets/common/storybook-main-enable-transcludemarkdown.js.mdx b/docs/snippets/common/storybook-main-enable-transcludemarkdown.js.mdx index 0e7e090c8ddf..afb2522e6dbe 100644 --- a/docs/snippets/common/storybook-main-enable-transcludemarkdown.js.mdx +++ b/docs/snippets/common/storybook-main-enable-transcludemarkdown.js.mdx @@ -5,7 +5,7 @@ export default { stories: [ //👇 Changes the load order of our stories. First loads the Changelog page '../src/Changelog.mdx', - '../stories/**/*.stories.@(js|jsx|ts|tsx)', + '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)', ], addons: [ '@storybook/addon-links', diff --git a/docs/snippets/common/storybook-main-extend-ts-config.js.mdx b/docs/snippets/common/storybook-main-extend-ts-config.js.mdx deleted file mode 100644 index b9e42a92bb97..000000000000 --- a/docs/snippets/common/storybook-main-extend-ts-config.js.mdx +++ /dev/null @@ -1,17 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: [], - addons: [], - typescript: { - reactDocgen: 'react-docgen-typescript', - reactDocgenTypescriptOptions: { - compilerOptions: { - allowSyntheticDefaultImports: false, - esModuleInterop: false, - }, - }, - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-extend-ts-config.ts.mdx b/docs/snippets/common/storybook-main-extend-ts-config.ts.mdx index 3217e6540fec..a7fa7fd28444 100644 --- a/docs/snippets/common/storybook-main-extend-ts-config.ts.mdx +++ b/docs/snippets/common/storybook-main-extend-ts-config.ts.mdx @@ -1,12 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: [], - addons: [], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], typescript: { reactDocgen: 'react-docgen-typescript', reactDocgenTypescriptOptions: { @@ -14,6 +14,7 @@ const config: StorybookConfig = { allowSyntheticDefaultImports: false, esModuleInterop: false, }, + propFilter: () => true, }, }, }; diff --git a/docs/snippets/common/storybook-main-fallback-mdx.js.mdx b/docs/snippets/common/storybook-main-fallback-mdx.js.mdx deleted file mode 100644 index 8276d37a0921..000000000000 --- a/docs/snippets/common/storybook-main-fallback-mdx.js.mdx +++ /dev/null @@ -1,14 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], - framework: { - name: '@storybook/react-webpack5', - }, - features: { - legacyMdx1: true, // 👈 Enables MDX v1 support - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-figma-addon-register.js.mdx b/docs/snippets/common/storybook-main-figma-addon-register.js.mdx index 751be2a42985..9550e34d64dc 100644 --- a/docs/snippets/common/storybook-main-figma-addon-register.js.mdx +++ b/docs/snippets/common/storybook-main-figma-addon-register.js.mdx @@ -1,11 +1,11 @@ ```js -// .storybook/main.js|ts +// .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ // Other Storybook addons - 'storybook-addon-designs', // 👈 Addon is registered here + '@storybook/addon-designs', // 👈 Addon is registered here ], }; ``` diff --git a/docs/snippets/common/storybook-main-figma-addon-register.ts.mdx b/docs/snippets/common/storybook-main-figma-addon-register.ts.mdx new file mode 100644 index 000000000000..be1188d84598 --- /dev/null +++ b/docs/snippets/common/storybook-main-figma-addon-register.ts.mdx @@ -0,0 +1,17 @@ +```ts +// .storybook/main.ts + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + // Other Storybook addons + '@storybook/addon-designs', // 👈 Addon is registered here + ], +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.js.mdx b/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.js.mdx index d6ae2f961a8a..0011fc2f7377 100644 --- a/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.js.mdx +++ b/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.js.mdx @@ -2,17 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) - name: '@storybook/your-framework', - options: {}, - }, + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], typescript: { // Overrides the default Typescript configuration to allow multi-package components to be documented via Autodocs. reactDocgen: 'react-docgen', diff --git a/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.ts.mdx b/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.ts.mdx index 254dfa57961f..45ed76c75eb9 100644 --- a/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.ts.mdx +++ b/docs/snippets/common/storybook-main-fix-imports-autodocs-monorepo.ts.mdx @@ -1,21 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|ts)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - // The name of the framework you want to use goes here - name: '@storybook/your-framework', - options: {}, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], typescript: { // Overrides the default Typescript configuration to allow multi-package components to be documented via Autodocs. reactDocgen: 'react-docgen', diff --git a/docs/snippets/common/storybook-main-full-individual-essentials-config.js.mdx b/docs/snippets/common/storybook-main-full-individual-essentials-config.js.mdx index 491588e4c8dd..07391e43ad0b 100644 --- a/docs/snippets/common/storybook-main-full-individual-essentials-config.js.mdx +++ b/docs/snippets/common/storybook-main-full-individual-essentials-config.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ '@storybook/addon-links', '@storybook/addon-actions', diff --git a/docs/snippets/common/storybook-main-full-individual-essentials-config.ts.mdx b/docs/snippets/common/storybook-main-full-individual-essentials-config.ts.mdx index 2741a83cd2eb..b2407522632b 100644 --- a/docs/snippets/common/storybook-main-full-individual-essentials-config.ts.mdx +++ b/docs/snippets/common/storybook-main-full-individual-essentials-config.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ '@storybook/addon-links', '@storybook/addon-actions', diff --git a/docs/snippets/common/storybook-main-import-preset-config.js.mdx b/docs/snippets/common/storybook-main-import-preset-config.js.mdx deleted file mode 100644 index 4388bbd92911..000000000000 --- a/docs/snippets/common/storybook-main-import-preset-config.js.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```js -// .storybook/main.js - -import * as path from 'path'; - -export default { - addons: [path.resolve('./.storybook/my-preset')], -}; -``` diff --git a/docs/snippets/common/storybook-main-js-md-files.js.mdx b/docs/snippets/common/storybook-main-js-md-files.js.mdx index a969537373f1..259ae63b8712 100644 --- a/docs/snippets/common/storybook-main-js-md-files.js.mdx +++ b/docs/snippets/common/storybook-main-js-md-files.js.mdx @@ -2,6 +2,8 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', stories: ['../my-project/src/components/*.@(js|md)'], }; ``` diff --git a/docs/snippets/common/storybook-main-js-md-files.ts.mdx b/docs/snippets/common/storybook-main-js-md-files.ts.mdx index 5a7f1aaf9d21..0be00e3e0583 100644 --- a/docs/snippets/common/storybook-main-js-md-files.ts.mdx +++ b/docs/snippets/common/storybook-main-js-md-files.ts.mdx @@ -1,10 +1,11 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + framework: '@storybook/your-framework', stories: ['../my-project/src/components/*.@(js|md)'], }; diff --git a/docs/snippets/common/storybook-main-pnpm-with-module-resolution.js.mdx b/docs/snippets/common/storybook-main-pnpm-with-module-resolution.js.mdx index 1956d047fd68..4ffa05ad3ff6 100644 --- a/docs/snippets/common/storybook-main-pnpm-with-module-resolution.js.mdx +++ b/docs/snippets/common/storybook-main-pnpm-with-module-resolution.js.mdx @@ -3,19 +3,19 @@ import path from 'path'; -const wrapForPnp = (packageName) => +const getAbsolutePath = (packageName) => path.dirname(require.resolve(path.join(packageName, 'package.json'))); export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - //👇 Use wrapForPnp when referencing Storybook's addons and frameworks - wrapForPnp('@storybook/addon-essentials'), - ], framework: { - // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) - name: wrapForPnp('@storybook/your-framework'), + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + name: getAbsolutePath('@storybook/your-framework'), options: {}, }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + //👇 Use getAbsolutePath when referencing Storybook's addons and frameworks + getAbsolutePath('@storybook/addon-essentials'), + ], }; ``` diff --git a/docs/snippets/common/storybook-main-pnpm-with-module-resolution.ts.mdx b/docs/snippets/common/storybook-main-pnpm-with-module-resolution.ts.mdx index 4ac45efe0cdd..a7e750975b3d 100644 --- a/docs/snippets/common/storybook-main-pnpm-with-module-resolution.ts.mdx +++ b/docs/snippets/common/storybook-main-pnpm-with-module-resolution.ts.mdx @@ -1,25 +1,25 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; import path from 'path'; -const wrapForPnp = (packageName: string) => +const getAbsolutePath = (packageName: string): any => path.dirname(require.resolve(path.join(packageName, 'package.json'))); const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - //👇 Use wrapForPnp when referencing Storybook's addons and frameworks - wrapForPnp('@storybook/addon-essentials'), - ], framework: { // Replace your-framework with the same one you've imported above. - name: wrapForPnp('@storybook/your-framework'), + name: getAbsolutePath('@storybook/your-framework'), options: {}, }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + //👇 Use getAbsolutePath when referencing Storybook's addons and frameworks + getAbsolutePath('@storybook/addon-essentials'), + ], }; export default config; diff --git a/docs/snippets/common/storybook-main-preset-config.js.mdx b/docs/snippets/common/storybook-main-preset-config.js.mdx index ea259282c811..20aedeebf98f 100644 --- a/docs/snippets/common/storybook-main-preset-config.js.mdx +++ b/docs/snippets/common/storybook-main-preset-config.js.mdx @@ -2,6 +2,9 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/preset-scss'], }; ``` diff --git a/docs/snippets/common/storybook-main-preset-config.ts.mdx b/docs/snippets/common/storybook-main-preset-config.ts.mdx index a565276e3b50..ff07205c2bdd 100644 --- a/docs/snippets/common/storybook-main-preset-config.ts.mdx +++ b/docs/snippets/common/storybook-main-preset-config.ts.mdx @@ -1,10 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/preset-scss'], }; diff --git a/docs/snippets/common/storybook-main-ref-local.js.mdx b/docs/snippets/common/storybook-main-ref-local.js.mdx index 797ef77374e8..6cb230e0d9fe 100644 --- a/docs/snippets/common/storybook-main-ref-local.js.mdx +++ b/docs/snippets/common/storybook-main-ref-local.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - // Your Storybook configuration + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], refs: { react: { title: 'React', diff --git a/docs/snippets/common/storybook-main-ref-local.ts.mdx b/docs/snippets/common/storybook-main-ref-local.ts.mdx index 6f32fb2d1b58..561050b14aa5 100644 --- a/docs/snippets/common/storybook-main-ref-local.ts.mdx +++ b/docs/snippets/common/storybook-main-ref-local.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - // Your Storybook configuration + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], refs: { react: { title: 'React', diff --git a/docs/snippets/common/storybook-main-ref-remote.js.mdx b/docs/snippets/common/storybook-main-ref-remote.js.mdx deleted file mode 100644 index d5f526a9f9cd..000000000000 --- a/docs/snippets/common/storybook-main-ref-remote.js.mdx +++ /dev/null @@ -1,14 +0,0 @@ -```js -// .storybook/main.js - -export default { - // Your Storybook configuration - refs: { - 'design-system': { - title: 'Storybook Design System', - url: 'https://5ccbc373887ca40020446347-yldsqjoxzb.chromatic.com', - expanded: false, // Optional, true by default - }, - }, -}; -``` diff --git a/docs/snippets/common/storybook-main-register-essentials-addon.js.mdx b/docs/snippets/common/storybook-main-register-essentials-addon.js.mdx index 15c422327a1f..6e7e2fca09fe 100644 --- a/docs/snippets/common/storybook-main-register-essentials-addon.js.mdx +++ b/docs/snippets/common/storybook-main-register-essentials-addon.js.mdx @@ -2,11 +2,8 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: ['@storybook/addon-essentials'], // 👈 Register addon-essentials }; ``` diff --git a/docs/snippets/common/storybook-main-register-essentials-addon.ts.mdx b/docs/snippets/common/storybook-main-register-essentials-addon.ts.mdx index 8ff381750d68..d4e42fd31129 100644 --- a/docs/snippets/common/storybook-main-register-essentials-addon.ts.mdx +++ b/docs/snippets/common/storybook-main-register-essentials-addon.ts.mdx @@ -1,14 +1,13 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - // Your Storybook configuration - refs: { - 'package-name': { disable: true }, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: ['@storybook/addon-essentials'], // 👈 Register addon-essentials }; export default config; diff --git a/docs/snippets/common/storybook-main-register-example-addon.js.mdx b/docs/snippets/common/storybook-main-register-example-addon.js.mdx new file mode 100644 index 000000000000..825e02ecd719 --- /dev/null +++ b/docs/snippets/common/storybook-main-register-example-addon.js.mdx @@ -0,0 +1,10 @@ +```js +// .storybook/main.js + +export default { + addons: [ + // Other Storybook addons + '@storybook/addon-a11y', + ], +}; +``` diff --git a/docs/snippets/common/storybook-main-with-object-configuration-static-dir.ts.mdx b/docs/snippets/common/storybook-main-register-example-addon.ts.mdx similarity index 68% rename from docs/snippets/common/storybook-main-with-object-configuration-static-dir.ts.mdx rename to docs/snippets/common/storybook-main-register-example-addon.ts.mdx index ba4dc2c4ea0a..d81ba1231da3 100644 --- a/docs/snippets/common/storybook-main-with-object-configuration-static-dir.ts.mdx +++ b/docs/snippets/common/storybook-main-register-example-addon.ts.mdx @@ -1,11 +1,14 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - staticDirs: [{ from: '../my-custom-assets/images', to: '/assets' }], + addons: [ + // Other Storybook addons + '@storybook/addon-a11y', + ], }; export default config; diff --git a/docs/snippets/common/storybook-main-register-individual-actions-addon.js.mdx b/docs/snippets/common/storybook-main-register-individual-actions-addon.js.mdx index 13f0a9b955db..7a84d97d9606 100644 --- a/docs/snippets/common/storybook-main-register-individual-actions-addon.js.mdx +++ b/docs/snippets/common/storybook-main-register-individual-actions-addon.js.mdx @@ -2,7 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-actions'], }; ``` diff --git a/docs/snippets/common/storybook-main-register-individual-actions-addon.ts.mdx b/docs/snippets/common/storybook-main-register-individual-actions-addon.ts.mdx index b32a40afa0f3..f2ca23b47431 100644 --- a/docs/snippets/common/storybook-main-register-individual-actions-addon.ts.mdx +++ b/docs/snippets/common/storybook-main-register-individual-actions-addon.ts.mdx @@ -1,11 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-actions'], }; diff --git a/docs/snippets/common/storybook-main-register-storysource-example.js.mdx b/docs/snippets/common/storybook-main-register-storysource-example.js.mdx deleted file mode 100644 index 24f744a3b2dc..000000000000 --- a/docs/snippets/common/storybook-main-register-storysource-example.js.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```js -// .storybook/main.js - -export default { - addons: ['@storybook/addon-storysource'], -}; -``` diff --git a/docs/snippets/common/storybook-main-simplified-config.js.mdx b/docs/snippets/common/storybook-main-simplified-config.js.mdx index 7c769e100b14..4e10ee8faaf3 100644 --- a/docs/snippets/common/storybook-main-simplified-config.js.mdx +++ b/docs/snippets/common/storybook-main-simplified-config.js.mdx @@ -2,12 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { config.plugins.push(...); return config; diff --git a/docs/snippets/common/storybook-main-simplified-config.ts.mdx b/docs/snippets/common/storybook-main-simplified-config.ts.mdx index 04ede18a5e0b..8fe2fee95565 100644 --- a/docs/snippets/common/storybook-main-simplified-config.ts.mdx +++ b/docs/snippets/common/storybook-main-simplified-config.ts.mdx @@ -1,16 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { config.plugins.push(...); return config; diff --git a/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.js.mdx b/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.js.mdx new file mode 100644 index 000000000000..f939a55bc21b --- /dev/null +++ b/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.js.mdx @@ -0,0 +1,19 @@ +```js +// .storybook/main.js +import path from 'path'; + +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + webpackFinal: async (config) => { + if (config.resolve) { + config.resolve.alias = { + ...config.resolve.alias, + '@': path.resolve(__dirname, '../src'), + }; + } + return config; + }, +}; +``` diff --git a/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.ts.mdx b/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.ts.mdx new file mode 100644 index 000000000000..4aaff2dec353 --- /dev/null +++ b/docs/snippets/common/storybook-main-ts-module-resolution-atsign-import.ts.mdx @@ -0,0 +1,22 @@ +```ts +// .storybook/main.ts +import path from 'path'; +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + webpackFinal: async (config) => { + if (config.resolve) { + config.resolve.alias = { + ...config.resolve.alias, + '@': path.resolve(__dirname, '../src'), + }; + } + return config; + }, +}; + +export default config; +``` diff --git a/docs/snippets/common/storybook-main-ts-module-resolution.js.mdx b/docs/snippets/common/storybook-main-ts-module-resolution.js.mdx index 9720e6f2435c..dea7293b4f81 100644 --- a/docs/snippets/common/storybook-main-ts-module-resolution.js.mdx +++ b/docs/snippets/common/storybook-main-ts-module-resolution.js.mdx @@ -4,13 +4,18 @@ import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { - config.resolve.plugins = [ - ...(config.resolve.plugins || []), - new TsconfigPathsPlugin({ - extensions: config.resolve.extensions, - }), - ]; + if (config.resolve) { + config.resolve.plugins = [ + ...(config.resolve.plugins || []), + new TsconfigPathsPlugin({ + extensions: config.resolve.extensions, + }), + ]; + } return config; }, }; diff --git a/docs/snippets/common/storybook-main-ts-module-resolution.ts.mdx b/docs/snippets/common/storybook-main-ts-module-resolution.ts.mdx index 0139b6003ef5..ab865ed2fcdb 100644 --- a/docs/snippets/common/storybook-main-ts-module-resolution.ts.mdx +++ b/docs/snippets/common/storybook-main-ts-module-resolution.ts.mdx @@ -1,19 +1,23 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { - config.resolve.plugins = [ - ...(config.resolve.plugins || []), - new TsconfigPathsPlugin({ - extensions: config.resolve.extensions, - }), - ]; + if (config.resolve) { + config.resolve.plugins = [ + ...(config.resolve.plugins || []), + new TsconfigPathsPlugin({ + extensions: config.resolve.extensions, + }), + ]; + } return config; }, }; diff --git a/docs/snippets/common/storybook-main-using-existing-config.js.mdx b/docs/snippets/common/storybook-main-using-existing-config.js.mdx index 6f190418e0c0..f2b5b4a659ea 100644 --- a/docs/snippets/common/storybook-main-using-existing-config.js.mdx +++ b/docs/snippets/common/storybook-main-using-existing-config.js.mdx @@ -4,12 +4,9 @@ import custom from '../webpack.config.js'; // 👈 Custom Webpack configuration being imported. export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { return { ...config, diff --git a/docs/snippets/common/storybook-main-using-existing-config.ts.mdx b/docs/snippets/common/storybook-main-using-existing-config.ts.mdx index 4271590758a2..fcd34d2ab296 100644 --- a/docs/snippets/common/storybook-main-using-existing-config.ts.mdx +++ b/docs/snippets/common/storybook-main-using-existing-config.ts.mdx @@ -1,18 +1,14 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; import custom from '../webpack.config.js'; // 👈 Custom Webpack configuration being imported. const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], webpackFinal: async (config) => { return { ...config, diff --git a/docs/snippets/common/storybook-main-webpack-options.js.mdx b/docs/snippets/common/storybook-main-webpack-options.js.mdx index 94c354b21042..4642087270c0 100644 --- a/docs/snippets/common/storybook-main-webpack-options.js.mdx +++ b/docs/snippets/common/storybook-main-webpack-options.js.mdx @@ -2,12 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], features: { storyStoreV7: false, }, diff --git a/docs/snippets/common/storybook-main-webpack-options.ts.mdx b/docs/snippets/common/storybook-main-webpack-options.ts.mdx index 6a5dd3e765d1..5a8295602d6c 100644 --- a/docs/snippets/common/storybook-main-webpack-options.ts.mdx +++ b/docs/snippets/common/storybook-main-webpack-options.ts.mdx @@ -1,16 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], features: { storyStoreV7: false, }, diff --git a/docs/snippets/common/storybook-main-with-multiple-static-dir.js.mdx b/docs/snippets/common/storybook-main-with-multiple-static-dir.js.mdx deleted file mode 100644 index 4fd9bf121b43..000000000000 --- a/docs/snippets/common/storybook-main-with-multiple-static-dir.js.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: [], - addons: [], - staticDirs: ['../public', '../static'], -}; -``` diff --git a/docs/snippets/common/storybook-main-with-object-configuration-static-dir.js.mdx b/docs/snippets/common/storybook-main-with-object-configuration-static-dir.js.mdx deleted file mode 100644 index 5addd7e0949f..000000000000 --- a/docs/snippets/common/storybook-main-with-object-configuration-static-dir.js.mdx +++ /dev/null @@ -1,7 +0,0 @@ -```js -// .storybook/main.js - -export default { - staticDirs: [{ from: '../my-custom-assets/images', to: '/assets' }], -}; -``` diff --git a/docs/snippets/common/storybook-main-with-single-static-dir.js.mdx b/docs/snippets/common/storybook-main-with-single-static-dir.js.mdx index 801cae1f86ad..50898439ff1c 100644 --- a/docs/snippets/common/storybook-main-with-single-static-dir.js.mdx +++ b/docs/snippets/common/storybook-main-with-single-static-dir.js.mdx @@ -2,12 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], staticDirs: ['../public'], //👈 Configures the static asset folder in Storybook }; ``` diff --git a/docs/snippets/common/storybook-main-with-single-static-dir.ts.mdx b/docs/snippets/common/storybook-main-with-single-static-dir.ts.mdx index 0b2199e44e7f..779ebee771f3 100644 --- a/docs/snippets/common/storybook-main-with-single-static-dir.ts.mdx +++ b/docs/snippets/common/storybook-main-with-single-static-dir.ts.mdx @@ -1,16 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], staticDirs: ['../public'], //👈 Configures the static asset folder in Storybook }; diff --git a/docs/snippets/common/storybook-on-demand-story-loading.js.mdx b/docs/snippets/common/storybook-on-demand-story-loading.js.mdx deleted file mode 100644 index de34243fc5dc..000000000000 --- a/docs/snippets/common/storybook-on-demand-story-loading.js.mdx +++ /dev/null @@ -1,14 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], - framework: { - name: '@storybook/react-webpack5', - }, - features: { - storyStoreV7: false, // 👈 Opt out of on-demand story loading - }, -}; -``` diff --git a/docs/snippets/common/storybook-preset-configuration.js.mdx b/docs/snippets/common/storybook-preset-configuration.js.mdx index 7a5933e17646..d13ec2b360bf 100644 --- a/docs/snippets/common/storybook-preset-configuration.js.mdx +++ b/docs/snippets/common/storybook-preset-configuration.js.mdx @@ -2,6 +2,9 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ { name: '@storybook/preset-scss', diff --git a/docs/snippets/common/storybook-preset-configuration.ts.mdx b/docs/snippets/common/storybook-preset-configuration.ts.mdx index 626c306a3353..86cc4e9877a3 100644 --- a/docs/snippets/common/storybook-preset-configuration.ts.mdx +++ b/docs/snippets/common/storybook-preset-configuration.ts.mdx @@ -1,10 +1,13 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ { name: '@storybook/preset-scss', diff --git a/docs/snippets/common/storybook-preview-custom-toc.js.mdx b/docs/snippets/common/storybook-preview-custom-toc.js.mdx new file mode 100644 index 000000000000..0d326085ae03 --- /dev/null +++ b/docs/snippets/common/storybook-preview-custom-toc.js.mdx @@ -0,0 +1,20 @@ +```js +// .storybook/preview.js + +export default { + parameters: { + docs: { + toc: { + contentsSelector: '.sbdocs-content', + headingSelector: 'h1, h2, h3', + ignoreSelector: '#primary', + title: 'Table of Contents', + disable: false, + unsafeTocbotOptions: { + orderedList: false, + }, + }, + }, + }, +}; +``` diff --git a/docs/snippets/common/storybook-preview-custom-toc.ts.mdx b/docs/snippets/common/storybook-preview-custom-toc.ts.mdx new file mode 100644 index 000000000000..366447ac9772 --- /dev/null +++ b/docs/snippets/common/storybook-preview-custom-toc.ts.mdx @@ -0,0 +1,25 @@ +```ts +// .storybook/preview.ts + +// Replace your-framework with the framework you are using (e.g., react, vue3) +import { Preview } from '@storybook/your-framework'; + +const preview: Preview = { + parameters: { + docs: { + toc: { + contentsSelector: '.sbdocs-content', + headingSelector: 'h1, h2, h3', + ignoreSelector: '#primary', + title: 'Table of Contents', + disable: false, + unsafeTocbotOptions: { + orderedList: false, + }, + }, + }, + }, +}; + +export default preview; +``` diff --git a/docs/snippets/common/storybook-preview-enable-toc.js.mdx b/docs/snippets/common/storybook-preview-enable-toc.js.mdx new file mode 100644 index 000000000000..42b7a5a00d49 --- /dev/null +++ b/docs/snippets/common/storybook-preview-enable-toc.js.mdx @@ -0,0 +1,11 @@ +```js +// .storybook/preview.js + +export default { + parameters: { + docs: { + toc: true, // 👈 Enables the table of contents + }, + }, +}; +``` diff --git a/docs/snippets/common/button-story-project-args-theme.ts.mdx b/docs/snippets/common/storybook-preview-enable-toc.ts.mdx similarity index 53% rename from docs/snippets/common/button-story-project-args-theme.ts.mdx rename to docs/snippets/common/storybook-preview-enable-toc.ts.mdx index d9f6529a08d7..83adea500cf5 100644 --- a/docs/snippets/common/button-story-project-args-theme.ts.mdx +++ b/docs/snippets/common/storybook-preview-enable-toc.ts.mdx @@ -5,11 +5,11 @@ import { Preview } from '@storybook/your-framework'; const preview: Preview = { - // All stories expect a theme arg - argTypes: { theme: { control: 'select', options: ['light', 'dark'] } }, - - // The default value of the theme arg to all stories - args: { theme: 'light' }, + parameters: { + docs: { + toc: true, // 👈 Enables the table of contents + }, + }, }; export default preview; diff --git a/docs/snippets/common/storybook-preview-head-example.html.mdx b/docs/snippets/common/storybook-preview-head-example.html.mdx index f9e869b582d4..ffcb25def6eb 100644 --- a/docs/snippets/common/storybook-preview-head-example.html.mdx +++ b/docs/snippets/common/storybook-preview-head-example.html.mdx @@ -2,8 +2,8 @@ <!-- .storybook/preview-head.html --> <!-- Pull in static files served from your Static directory or the internet --> - -<link rel=”preload” href=”your/font” /> +<!-- Example: `main.js|ts` is configured with staticDirs: ['../public'] and your font is located in the `fonts` directory inside your `public` directory --> +<link rel="preload" href="/fonts/my-font.woff2" /> <!-- Or you can load custom head-tag JavaScript: --> diff --git a/docs/snippets/common/storybook-read-environment-variables.js.mdx b/docs/snippets/common/storybook-read-environment-variables.node-env.js.mdx similarity index 100% rename from docs/snippets/common/storybook-read-environment-variables.js.mdx rename to docs/snippets/common/storybook-read-environment-variables.node-env.js.mdx diff --git a/docs/snippets/common/storybook-read-environment-variables.vite-env.js.mdx b/docs/snippets/common/storybook-read-environment-variables.vite-env.js.mdx new file mode 100644 index 000000000000..6f99f3972ce9 --- /dev/null +++ b/docs/snippets/common/storybook-read-environment-variables.vite-env.js.mdx @@ -0,0 +1,4 @@ +```js +console.log(import.meta.env.STORYBOOK_THEME); +console.log(import.meta.env.STORYBOOK_DATA_KEY); +``` diff --git a/docs/snippets/common/storybook-story-layout-param.js.mdx b/docs/snippets/common/storybook-story-layout-param.js.mdx index cf34e4362e98..cd0f1963d270 100644 --- a/docs/snippets/common/storybook-story-layout-param.js.mdx +++ b/docs/snippets/common/storybook-story-layout-param.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button': export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } diff --git a/docs/snippets/common/storybook-story-layout-param.ts-4-9.mdx b/docs/snippets/common/storybook-story-layout-param.ts-4-9.mdx index d4e206604739..cb347dbe90a9 100644 --- a/docs/snippets/common/storybook-story-layout-param.ts-4-9.mdx +++ b/docs/snippets/common/storybook-story-layout-param.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/common/storybook-story-layout-param.ts.mdx b/docs/snippets/common/storybook-story-layout-param.ts.mdx index d71cacc329cb..eeaac88af3e3 100644 --- a/docs/snippets/common/storybook-story-layout-param.ts.mdx +++ b/docs/snippets/common/storybook-story-layout-param.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/common/storybook-storyloading-custom-logic.js.mdx b/docs/snippets/common/storybook-storyloading-custom-logic.js.mdx deleted file mode 100644 index b4f8f1eae27b..000000000000 --- a/docs/snippets/common/storybook-storyloading-custom-logic.js.mdx +++ /dev/null @@ -1,12 +0,0 @@ -```js -// .storybook/main.js - -function findStories() { - // your custom logic returns a list of files -} - -export default { - stories: async (list) => [...list, ...findStories()], - addons: ['@storybook/addon-essentials'], -}; -``` diff --git a/docs/snippets/common/storybook-storyloading-with-custom-object.js.mdx b/docs/snippets/common/storybook-storyloading-with-custom-object.js.mdx deleted file mode 100644 index 6a157fe21b4d..000000000000 --- a/docs/snippets/common/storybook-storyloading-with-custom-object.js.mdx +++ /dev/null @@ -1,17 +0,0 @@ -```js -// .storybook/main.js - -export default { - stories: [ - { - // 👇 The directory field sets the directory your stories - directory: '../packages/stories', - // 👇 The titlePrefix field will generate automatic titles for your stories - titlePrefix: 'MyComponents', - // 👇 Storybook will load all files that contain the stories extension - files: '*.stories.*', - }, - ], - addons: ['@storybook/addon-essentials'], -}; -``` diff --git a/docs/snippets/common/storybook-storyloading-with-custom-object.ts.mdx b/docs/snippets/common/storybook-storyloading-with-custom-object.ts.mdx deleted file mode 100644 index 76204cd6918e..000000000000 --- a/docs/snippets/common/storybook-storyloading-with-custom-object.ts.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```ts -// .storybook/main.ts - -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) -import type { StorybookConfig } from '@storybook/your-framework'; - -const config: StorybookConfig = { - stories: [ - { - // 👇 The directory field sets the directory your stories - directory: '../packages/stories', - // 👇 The titlePrefix field will generate automatic titles for your stories - titlePrefix: 'MyComponents', - // 👇 Storybook will load all files that contain the stories extension - files: '*.stories.*', - }, - ], - addons: ['@storybook/addon-essentials'], -}; - -export default config; -``` diff --git a/docs/snippets/common/storybook-storyloading-with-directory.js.mdx b/docs/snippets/common/storybook-storyloading-with-directory.js.mdx index be68556b75bc..b9451bf46d6c 100644 --- a/docs/snippets/common/storybook-storyloading-with-directory.js.mdx +++ b/docs/snippets/common/storybook-storyloading-with-directory.js.mdx @@ -2,8 +2,9 @@ // .storybook/main.js export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', // 👇 Storybook will load all existing stories within the MyStories folder stories: ['../packages/MyStories'], - addons: ['@storybook/addon-essentials'], }; ``` diff --git a/docs/snippets/common/storybook-storyloading-with-directory.ts.mdx b/docs/snippets/common/storybook-storyloading-with-directory.ts.mdx index 9d7b3cb5cb85..a7993195d5ec 100644 --- a/docs/snippets/common/storybook-storyloading-with-directory.ts.mdx +++ b/docs/snippets/common/storybook-storyloading-with-directory.ts.mdx @@ -1,13 +1,13 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { + framework: '@storybook/your-framework', // 👇 Storybook will load all existing stories within the MyStories folder stories: ['../packages/MyStories'], - addons: ['@storybook/addon-essentials'], }; export default config; diff --git a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx index 58e042ff4289..b79e8f384cfe 100644 --- a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx +++ b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx @@ -2,17 +2,9 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/preset-create-react-app', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, + // Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], core: { enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events }, diff --git a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx index 13680a58d5dc..ceabd58ad8b9 100644 --- a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx +++ b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx @@ -1,21 +1,12 @@ ```ts // .storybook/main.ts -// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-webpack5) +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/preset-create-react-app', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], core: { enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events }, diff --git a/docs/snippets/common/storybook-vite-builder-aliasing.js.mdx b/docs/snippets/common/storybook-vite-builder-aliasing.js.mdx index 086effb9eb80..ea5f2e7550de 100644 --- a/docs/snippets/common/storybook-vite-builder-aliasing.js.mdx +++ b/docs/snippets/common/storybook-vite-builder-aliasing.js.mdx @@ -4,7 +4,7 @@ import { mergeConfig } from 'vite'; export default { - stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-essentials'], core: { builder: '@storybook/builder-vite', diff --git a/docs/snippets/common/storybook-vite-builder-react-docgen.js.mdx b/docs/snippets/common/storybook-vite-builder-react-docgen.js.mdx index 9c78fae2f166..63dcbfaea126 100644 --- a/docs/snippets/common/storybook-vite-builder-react-docgen.js.mdx +++ b/docs/snippets/common/storybook-vite-builder-react-docgen.js.mdx @@ -2,7 +2,7 @@ // .storybook/main.js export default { - stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-essentials'], core: { builder: '@storybook/builder-vite', diff --git a/docs/snippets/common/storybook-vite-builder-register.js.mdx b/docs/snippets/common/storybook-vite-builder-register.js.mdx index b950549bb84c..ecd1a215c3dc 100644 --- a/docs/snippets/common/storybook-vite-builder-register.js.mdx +++ b/docs/snippets/common/storybook-vite-builder-register.js.mdx @@ -2,7 +2,7 @@ // .storybook/main.js|ts export default { - stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-essentials'], core: { builder: '@storybook/builder-vite', // 👈 The builder enabled here. diff --git a/docs/snippets/common/storybook-vite-builder-ts-configure.ts.mdx b/docs/snippets/common/storybook-vite-builder-ts-configure.ts.mdx index 38fc82b0bd9b..397e526c0b0a 100644 --- a/docs/snippets/common/storybook-vite-builder-ts-configure.ts.mdx +++ b/docs/snippets/common/storybook-vite-builder-ts-configure.ts.mdx @@ -1,15 +1,12 @@ ```ts // .storybook/main.ts -import type { StorybookConfig } from '@storybook/react-vite'; +// Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], - addons: ['@storybook/addon-links', '@storybook/addon-essentials'], - framework: { - name: '@storybook/react-vite', - options: {}, - }, + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], async viteFinal(config, options) { // Add your configuration here return config; diff --git a/docs/snippets/common/storybook-write-addon-install-dependencies.npm.js.mdx b/docs/snippets/common/storybook-write-addon-install-dependencies.npm.js.mdx deleted file mode 100644 index c735181d1b6d..000000000000 --- a/docs/snippets/common/storybook-write-addon-install-dependencies.npm.js.mdx +++ /dev/null @@ -1,3 +0,0 @@ -```shell -npm install react react-dom @babel/cli -``` diff --git a/docs/snippets/common/storybook-write-addon-install-dependencies.yarn.js.mdx b/docs/snippets/common/storybook-write-addon-install-dependencies.yarn.js.mdx deleted file mode 100644 index 5fa3643b1cc5..000000000000 --- a/docs/snippets/common/storybook-write-addon-install-dependencies.yarn.js.mdx +++ /dev/null @@ -1,3 +0,0 @@ -```shell -yarn add react react-dom @babel/cli -``` diff --git a/docs/snippets/common/typed-csf-file.ts-4-9.mdx b/docs/snippets/common/typed-csf-file.ts-4-9.mdx new file mode 100644 index 000000000000..103c3317cd41 --- /dev/null +++ b/docs/snippets/common/typed-csf-file.ts-4-9.mdx @@ -0,0 +1,23 @@ +```ts +// Button.stories.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, etc.) +import type { Meta, StoryObj } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta = { + component: Button, +} satisfies Meta<typeof Button>; +export default meta; + +type Story = StoryObj<typeof meta>; + +export const Basic = {} satisfies Story; + +export const Primary = { + args: { + primary: true, + }, +} satisfies Story; +``` diff --git a/docs/snippets/common/typed-csf-file.ts.mdx b/docs/snippets/common/typed-csf-file.ts.mdx new file mode 100644 index 000000000000..1380398b0ac7 --- /dev/null +++ b/docs/snippets/common/typed-csf-file.ts.mdx @@ -0,0 +1,23 @@ +```ts +// Button.stories.ts + +// Replace your-renderer with the renderer you are using (e.g., react, vue3, etc.) +import type { Meta, StoryObj } from '@storybook/your-renderer'; + +import { Button } from './Button'; + +const meta: Meta<typeof Button> = { + component: Button, +}; +export default meta; + +type Story = StoryObj<typeof Button>; + +export const Basic: Story = {}; + +export const Primary: Story = { + args: { + primary: true, + }, +}; +``` diff --git a/docs/snippets/html/button-story.ts.mdx b/docs/snippets/html/button-story.ts.mdx index 42cf5f06cc3d..4a48ff30739d 100644 --- a/docs/snippets/html/button-story.ts.mdx +++ b/docs/snippets/html/button-story.ts.mdx @@ -18,7 +18,7 @@ export default meta; * See https://storybook.js.org/docs/html/api/csf * to learn how to use render functions. */ -export const Primary: Story = { +export const Primary: StoryObj = { render: () => { const btn = document.createElement('button'); btn.innerText = 'Button'; diff --git a/docs/snippets/preact/button-story-with-args.js.mdx b/docs/snippets/preact/button-story-with-args.js.mdx index 08b00f4bb092..1a966082e02c 100644 --- a/docs/snippets/preact/button-story-with-args.js.mdx +++ b/docs/snippets/preact/button-story-with-args.js.mdx @@ -7,11 +7,6 @@ import { h } from 'preact'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/preact/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/preact/button-story.js.mdx b/docs/snippets/preact/button-story.js.mdx index 5f509b964661..646fa09ecb46 100644 --- a/docs/snippets/preact/button-story.js.mdx +++ b/docs/snippets/preact/button-story.js.mdx @@ -7,11 +7,6 @@ import { h } from 'preact'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/preact/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/preact/component-story-with-custom-render-function.js.mdx b/docs/snippets/preact/component-story-with-custom-render-function.js.mdx index 3c02f0197039..c7d710a67622 100644 --- a/docs/snippets/preact/component-story-with-custom-render-function.js.mdx +++ b/docs/snippets/preact/component-story-with-custom-render-function.js.mdx @@ -9,11 +9,6 @@ import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/preact/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/preact/histogram-story.js.mdx b/docs/snippets/preact/histogram-story.js.mdx index 6d7061599af4..fab69b7b7f7c 100644 --- a/docs/snippets/preact/histogram-story.js.mdx +++ b/docs/snippets/preact/histogram-story.js.mdx @@ -7,11 +7,6 @@ import { h } from 'preact'; import { Histogram } from './Histogram'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/preact/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/preact/your-component.js.mdx b/docs/snippets/preact/your-component.js.mdx index bd0b784054bc..17f4cba4351f 100644 --- a/docs/snippets/preact/your-component.js.mdx +++ b/docs/snippets/preact/your-component.js.mdx @@ -8,11 +8,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/preact/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/react/addon-highlight-reset.js.mdx b/docs/snippets/react/addon-highlight-reset.js.mdx new file mode 100644 index 000000000000..f969cce998a4 --- /dev/null +++ b/docs/snippets/react/addon-highlight-reset.js.mdx @@ -0,0 +1,25 @@ +```js +// MyComponent.stories.js|jsx + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +export default { + component: MyComponent, +}; + +export const ResetHighlight = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/addon-highlight-reset.ts-4-9.mdx b/docs/snippets/react/addon-highlight-reset.ts-4-9.mdx new file mode 100644 index 000000000000..07e9f341c064 --- /dev/null +++ b/docs/snippets/react/addon-highlight-reset.ts-4-9.mdx @@ -0,0 +1,29 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const ResetHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/addon-highlight-reset.ts.mdx b/docs/snippets/react/addon-highlight-reset.ts.mdx new file mode 100644 index 000000000000..7ff20b0a39e5 --- /dev/null +++ b/docs/snippets/react/addon-highlight-reset.ts.mdx @@ -0,0 +1,29 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const ResetHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/button-group-story.js.mdx b/docs/snippets/react/button-group-story.js.mdx index 75330fd30a8e..bb82e5ac2e3a 100644 --- a/docs/snippets/react/button-group-story.js.mdx +++ b/docs/snippets/react/button-group-story.js.mdx @@ -1,19 +1,12 @@ ```js // ButtonGroup.stories.js|jsx -import React from 'react'; - import { ButtonGroup } from '../ButtonGroup'; //👇 Imports the Button stories import * as ButtonStories from './Button.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/react/button-group-story.ts-4-9.mdx b/docs/snippets/react/button-group-story.ts-4-9.mdx index c54f99805fc8..d3f99052a66e 100644 --- a/docs/snippets/react/button-group-story.ts-4-9.mdx +++ b/docs/snippets/react/button-group-story.ts-4-9.mdx @@ -9,11 +9,6 @@ import { ButtonGroup } from '../ButtonGroup'; import * as ButtonStories from './Button.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, } satisfies Meta<typeof ButtonGroup>; diff --git a/docs/snippets/react/button-group-story.ts.mdx b/docs/snippets/react/button-group-story.ts.mdx index 4e00dc151072..6311bc0e54ec 100644 --- a/docs/snippets/react/button-group-story.ts.mdx +++ b/docs/snippets/react/button-group-story.ts.mdx @@ -9,11 +9,6 @@ import { ButtonGroup } from '../ButtonGroup'; import * as ButtonStories from './Button.stories'; const meta: Meta<typeof ButtonGroup> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/react/button-story-auto-docs.js.mdx b/docs/snippets/react/button-story-auto-docs.js.mdx index c48e89a20803..b91d82f70638 100644 --- a/docs/snippets/react/button-story-auto-docs.js.mdx +++ b/docs/snippets/react/button-story-auto-docs.js.mdx @@ -4,7 +4,6 @@ import { Button } from './Button'; export default { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/react/button-story-auto-docs.ts-4-9.mdx b/docs/snippets/react/button-story-auto-docs.ts-4-9.mdx index 6c1201e7e99c..14f45d47dc56 100644 --- a/docs/snippets/react/button-story-auto-docs.ts-4-9.mdx +++ b/docs/snippets/react/button-story-auto-docs.ts-4-9.mdx @@ -6,7 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/react/button-story-auto-docs.ts.mdx b/docs/snippets/react/button-story-auto-docs.ts.mdx index 3534a8dd90d0..6d9974b9d1d0 100644 --- a/docs/snippets/react/button-story-auto-docs.ts.mdx +++ b/docs/snippets/react/button-story-auto-docs.ts.mdx @@ -6,7 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/react/button-story-click-handler-args.js.mdx b/docs/snippets/react/button-story-click-handler-args.js.mdx index 9413debd5f60..e8ed7a43a215 100644 --- a/docs/snippets/react/button-story-click-handler-args.js.mdx +++ b/docs/snippets/react/button-story-click-handler-args.js.mdx @@ -1,18 +1,11 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { action } from '@storybook/addon-actions'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-click-handler-args.ts-4-9.mdx b/docs/snippets/react/button-story-click-handler-args.ts-4-9.mdx index cf07742ff672..b8e1da1f4f08 100644 --- a/docs/snippets/react/button-story-click-handler-args.ts-4-9.mdx +++ b/docs/snippets/react/button-story-click-handler-args.ts-4-9.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-click-handler-args.ts.mdx b/docs/snippets/react/button-story-click-handler-args.ts.mdx index e77ef0f8d83b..ac26677e7d4f 100644 --- a/docs/snippets/react/button-story-click-handler-args.ts.mdx +++ b/docs/snippets/react/button-story-click-handler-args.ts.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-click-handler-simple-docs.js.mdx b/docs/snippets/react/button-story-click-handler-simple-docs.js.mdx index 4d501ecd2e98..15bb26911238 100644 --- a/docs/snippets/react/button-story-click-handler-simple-docs.js.mdx +++ b/docs/snippets/react/button-story-click-handler-simple-docs.js.mdx @@ -1,18 +1,11 @@ ```js -// Button.stories.js|jsx|ts|tsx - -import React from 'react'; +// Button.stories.js|jsx import { action } from '@storybook/addon-actions'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-click-handler-simplificated.js.mdx b/docs/snippets/react/button-story-click-handler-simplificated.js.mdx index 730e156339d5..7737407e7aeb 100644 --- a/docs/snippets/react/button-story-click-handler-simplificated.js.mdx +++ b/docs/snippets/react/button-story-click-handler-simplificated.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } diff --git a/docs/snippets/react/button-story-click-handler-simplificated.ts-4-9.mdx b/docs/snippets/react/button-story-click-handler-simplificated.ts-4-9.mdx index 785199348068..e5c5ad5be29c 100644 --- a/docs/snippets/react/button-story-click-handler-simplificated.ts-4-9.mdx +++ b/docs/snippets/react/button-story-click-handler-simplificated.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-click-handler-simplificated.ts.mdx b/docs/snippets/react/button-story-click-handler-simplificated.ts.mdx index 395a235ab66f..3c3f0eeb0eb1 100644 --- a/docs/snippets/react/button-story-click-handler-simplificated.ts.mdx +++ b/docs/snippets/react/button-story-click-handler-simplificated.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-click-handler.js.mdx b/docs/snippets/react/button-story-click-handler.js.mdx index 12743ca475fa..062a1cbaa7a8 100644 --- a/docs/snippets/react/button-story-click-handler.js.mdx +++ b/docs/snippets/react/button-story-click-handler.js.mdx @@ -1,18 +1,11 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { action } from '@storybook/addon-actions'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-click-handler.ts-4-9.mdx b/docs/snippets/react/button-story-click-handler.ts-4-9.mdx index e86252f4d2ac..8102c71db99a 100644 --- a/docs/snippets/react/button-story-click-handler.ts-4-9.mdx +++ b/docs/snippets/react/button-story-click-handler.ts-4-9.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-click-handler.ts.mdx b/docs/snippets/react/button-story-click-handler.ts.mdx index fccd1782af73..ee1c106af89e 100644 --- a/docs/snippets/react/button-story-click-handler.ts.mdx +++ b/docs/snippets/react/button-story-click-handler.ts.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-component-args-primary.js.mdx b/docs/snippets/react/button-story-component-args-primary.js.mdx index c8efec2672c5..fff9e33773a2 100644 --- a/docs/snippets/react/button-story-component-args-primary.js.mdx +++ b/docs/snippets/react/button-story-component-args-primary.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/react/button-story-component-args-primary.ts-4-9.mdx b/docs/snippets/react/button-story-component-args-primary.ts-4-9.mdx index dc24262d04aa..cef596a5b4fb 100644 --- a/docs/snippets/react/button-story-component-args-primary.ts-4-9.mdx +++ b/docs/snippets/react/button-story-component-args-primary.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/react/button-story-component-args-primary.ts.mdx b/docs/snippets/react/button-story-component-args-primary.ts.mdx index ae4875c1ba1c..c9a88021fd50 100644 --- a/docs/snippets/react/button-story-component-args-primary.ts.mdx +++ b/docs/snippets/react/button-story-component-args-primary.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/react/button-story-component-decorator.js.mdx b/docs/snippets/react/button-story-component-decorator.js.mdx index c4520f5c165a..c565eabe4b30 100644 --- a/docs/snippets/react/button-story-component-decorator.js.mdx +++ b/docs/snippets/react/button-story-component-decorator.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/react/button-story-component-decorator.ts-4-9.mdx b/docs/snippets/react/button-story-component-decorator.ts-4-9.mdx index 939f85fdb819..7483aa1f61b9 100644 --- a/docs/snippets/react/button-story-component-decorator.ts-4-9.mdx +++ b/docs/snippets/react/button-story-component-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/react/button-story-component-decorator.ts.mdx b/docs/snippets/react/button-story-component-decorator.ts.mdx index 2dcb20213abf..658181e8c9e1 100644 --- a/docs/snippets/react/button-story-component-decorator.ts.mdx +++ b/docs/snippets/react/button-story-component-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/react/button-story-decorator.js.mdx b/docs/snippets/react/button-story-decorator.js.mdx index 8b3aff2af1c7..20a4568d5a56 100644 --- a/docs/snippets/react/button-story-decorator.js.mdx +++ b/docs/snippets/react/button-story-decorator.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-decorator.ts-4-9.mdx b/docs/snippets/react/button-story-decorator.ts-4-9.mdx index e058d1dc875f..22bd11b258df 100644 --- a/docs/snippets/react/button-story-decorator.ts-4-9.mdx +++ b/docs/snippets/react/button-story-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-decorator.ts.mdx b/docs/snippets/react/button-story-decorator.ts.mdx index 2bcbedd95fcf..a4ee539203aa 100644 --- a/docs/snippets/react/button-story-decorator.ts.mdx +++ b/docs/snippets/react/button-story-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-default-export-with-component.js.mdx b/docs/snippets/react/button-story-default-export-with-component.js.mdx index cfe5cc2c0500..dfffb5de27e3 100644 --- a/docs/snippets/react/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/react/button-story-default-export-with-component.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; ``` diff --git a/docs/snippets/react/button-story-default-export-with-component.ts-4-9.mdx b/docs/snippets/react/button-story-default-export-with-component.ts-4-9.mdx index 957878216e9c..baf8ce395ad5 100644 --- a/docs/snippets/react/button-story-default-export-with-component.ts-4-9.mdx +++ b/docs/snippets/react/button-story-default-export-with-component.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-default-export-with-component.ts.mdx b/docs/snippets/react/button-story-default-export-with-component.ts.mdx index 6e8e2d867c21..c9bf040b6352 100644 --- a/docs/snippets/react/button-story-default-export-with-component.ts.mdx +++ b/docs/snippets/react/button-story-default-export-with-component.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-rename-story.js.mdx b/docs/snippets/react/button-story-rename-story.js.mdx index bd5bdd75533d..97b44b48d937 100644 --- a/docs/snippets/react/button-story-rename-story.js.mdx +++ b/docs/snippets/react/button-story-rename-story.js.mdx @@ -1,19 +1,17 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ export const Primary = { name: 'I am the primary', render: () => <Button primary label="Button" />, diff --git a/docs/snippets/react/button-story-rename-story.ts-4-9.mdx b/docs/snippets/react/button-story-rename-story.ts-4-9.mdx index 74271a88a069..1fb21b9d7217 100644 --- a/docs/snippets/react/button-story-rename-story.ts-4-9.mdx +++ b/docs/snippets/react/button-story-rename-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-rename-story.ts.mdx b/docs/snippets/react/button-story-rename-story.ts.mdx index ea49bd6a9534..edf9d8e3a3cc 100644 --- a/docs/snippets/react/button-story-rename-story.ts.mdx +++ b/docs/snippets/react/button-story-rename-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-using-args.js.mdx b/docs/snippets/react/button-story-using-args.js.mdx index de8dd6135156..65cfeddc8fa2 100644 --- a/docs/snippets/react/button-story-using-args.js.mdx +++ b/docs/snippets/react/button-story-using-args.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-using-args.ts-4-9.mdx b/docs/snippets/react/button-story-using-args.ts-4-9.mdx index ec73b84b8c46..d819292ca985 100644 --- a/docs/snippets/react/button-story-using-args.ts-4-9.mdx +++ b/docs/snippets/react/button-story-using-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-using-args.ts.mdx b/docs/snippets/react/button-story-using-args.ts.mdx index 1767423689be..ca6c78f78b35 100644 --- a/docs/snippets/react/button-story-using-args.ts.mdx +++ b/docs/snippets/react/button-story-using-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-with-args.js.mdx b/docs/snippets/react/button-story-with-args.js.mdx index 1947a547b93a..b185421f6c95 100644 --- a/docs/snippets/react/button-story-with-args.js.mdx +++ b/docs/snippets/react/button-story-with-args.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-with-args.ts-4-9.mdx b/docs/snippets/react/button-story-with-args.ts-4-9.mdx index d8d5d56e44ae..32e4ac97662a 100644 --- a/docs/snippets/react/button-story-with-args.ts-4-9.mdx +++ b/docs/snippets/react/button-story-with-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button, ButtonProps } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-with-args.ts.mdx b/docs/snippets/react/button-story-with-args.ts.mdx index 0c095ef33c7e..3464a9dc5c27 100644 --- a/docs/snippets/react/button-story-with-args.ts.mdx +++ b/docs/snippets/react/button-story-with-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button, ButtonProps } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-with-blue-args.js.mdx b/docs/snippets/react/button-story-with-blue-args.js.mdx index a068bdcd2364..85834a81f1f0 100644 --- a/docs/snippets/react/button-story-with-blue-args.js.mdx +++ b/docs/snippets/react/button-story-with-blue-args.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/react/button-story-with-blue-args.ts-4-9.mdx b/docs/snippets/react/button-story-with-blue-args.ts-4-9.mdx index 28a5241bfc1e..166c6f808f11 100644 --- a/docs/snippets/react/button-story-with-blue-args.ts-4-9.mdx +++ b/docs/snippets/react/button-story-with-blue-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/react/button-story-with-blue-args.ts.mdx b/docs/snippets/react/button-story-with-blue-args.ts.mdx index 31cf0c2e362b..0583e58ec44d 100644 --- a/docs/snippets/react/button-story-with-blue-args.ts.mdx +++ b/docs/snippets/react/button-story-with-blue-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/react/button-story-with-emojis.js.mdx b/docs/snippets/react/button-story-with-emojis.js.mdx index 51c3103e6b45..bc6a1a6cf6c7 100644 --- a/docs/snippets/react/button-story-with-emojis.js.mdx +++ b/docs/snippets/react/button-story-with-emojis.js.mdx @@ -1,16 +1,9 @@ ```ts // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-with-emojis.ts-4-9.mdx b/docs/snippets/react/button-story-with-emojis.ts-4-9.mdx index f1e0a55f0583..3b13911185db 100644 --- a/docs/snippets/react/button-story-with-emojis.ts-4-9.mdx +++ b/docs/snippets/react/button-story-with-emojis.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story-with-emojis.ts.mdx b/docs/snippets/react/button-story-with-emojis.ts.mdx index aae45f1d14ad..9cb540188976 100644 --- a/docs/snippets/react/button-story-with-emojis.ts.mdx +++ b/docs/snippets/react/button-story-with-emojis.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story-with-sample.js.mdx b/docs/snippets/react/button-story-with-sample.js.mdx index 368a56b1e5fd..64fd26d83463 100644 --- a/docs/snippets/react/button-story-with-sample.js.mdx +++ b/docs/snippets/react/button-story-with-sample.js.mdx @@ -1,24 +1,12 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const Sample = { render: () => <Button label="hello button" />, }; diff --git a/docs/snippets/react/button-story.js.mdx b/docs/snippets/react/button-story.js.mdx index 37d0e824c58d..ef7934b1f945 100644 --- a/docs/snippets/react/button-story.js.mdx +++ b/docs/snippets/react/button-story.js.mdx @@ -1,16 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story.ts-4-9.mdx b/docs/snippets/react/button-story.ts-4-9.mdx index 6cc69c3009b5..e39cdf7c69a7 100644 --- a/docs/snippets/react/button-story.ts-4-9.mdx +++ b/docs/snippets/react/button-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/react/button-story.ts.mdx b/docs/snippets/react/button-story.ts.mdx index 95c10549c0fc..e7fbac238ab1 100644 --- a/docs/snippets/react/button-story.ts.mdx +++ b/docs/snippets/react/button-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story.with-hooks.js.mdx b/docs/snippets/react/button-story.with-hooks.js.mdx index 06c4cfec6cc6..98b87256271b 100644 --- a/docs/snippets/react/button-story.with-hooks.js.mdx +++ b/docs/snippets/react/button-story.with-hooks.js.mdx @@ -6,11 +6,6 @@ import React, { useState } from 'react'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/react/button-story.with-hooks.ts-4-9.mdx b/docs/snippets/react/button-story.with-hooks.ts-4-9.mdx index 486cc3b59644..bbe75ff837b2 100644 --- a/docs/snippets/react/button-story.with-hooks.ts-4-9.mdx +++ b/docs/snippets/react/button-story.with-hooks.ts-4-9.mdx @@ -2,20 +2,16 @@ // Button.stories.ts|tsx import React, { useState } from 'react'; + import { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; -export default meta; +export default meta; type Story = StoryObj<typeof meta>; /* diff --git a/docs/snippets/react/button-story.with-hooks.ts.mdx b/docs/snippets/react/button-story.with-hooks.ts.mdx index cc5df8a2289d..338480ef0749 100644 --- a/docs/snippets/react/button-story.with-hooks.ts.mdx +++ b/docs/snippets/react/button-story.with-hooks.ts.mdx @@ -1,21 +1,17 @@ -```js +```tsx // Button.stories.ts|tsx import React, { useState } from 'react'; + import { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; -export default meta; +export default meta; type Story = StoryObj<typeof Button>; /* diff --git a/docs/snippets/react/component-story-custom-args-complex.js.mdx b/docs/snippets/react/component-story-custom-args-complex.js.mdx index 05ce698faf56..3f2303040abf 100644 --- a/docs/snippets/react/component-story-custom-args-complex.js.mdx +++ b/docs/snippets/react/component-story-custom-args-complex.js.mdx @@ -1,16 +1,9 @@ ```js // YourComponent.stories.js|jsx -import React from 'react'; - import { YourComponent } from './your-component'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -24,9 +17,8 @@ export default { }, }; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory = { diff --git a/docs/snippets/react/component-story-custom-args-complex.ts-4-9.mdx b/docs/snippets/react/component-story-custom-args-complex.ts-4-9.mdx index 550a39198de4..72c253704303 100644 --- a/docs/snippets/react/component-story-custom-args-complex.ts-4-9.mdx +++ b/docs/snippets/react/component-story-custom-args-complex.ts-4-9.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { YourComponent } from './your-component'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', + component: YourComponent, //👇 Creates specific argTypes with options argTypes: { propertyA: { @@ -26,9 +22,8 @@ const meta = { export default meta; type Story = StoryObj<typeof meta>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory: Story = { diff --git a/docs/snippets/react/component-story-custom-args-complex.ts.mdx b/docs/snippets/react/component-story-custom-args-complex.ts.mdx index 123408ee928e..8e19f0a717e1 100644 --- a/docs/snippets/react/component-story-custom-args-complex.ts.mdx +++ b/docs/snippets/react/component-story-custom-args-complex.ts.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { YourComponent } from './your-component'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', + component: YourComponent, //👇 Creates specific argTypes with options argTypes: { propertyA: { @@ -26,9 +22,8 @@ const meta: Meta<typeof YourComponent> = { export default meta; type Story = StoryObj<typeof YourComponent>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory: Story = { diff --git a/docs/snippets/react/component-story-figma-integration.js.mdx b/docs/snippets/react/component-story-figma-integration.js.mdx index e6b246afbf5b..442c797e71f6 100644 --- a/docs/snippets/react/component-story-figma-integration.js.mdx +++ b/docs/snippets/react/component-story-figma-integration.js.mdx @@ -1,15 +1,12 @@ ```js // MyComponent.stories.js|jsx -import React from 'react'; - import { withDesign } from 'storybook-addon-designs'; import { MyComponent } from './MyComponent'; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; diff --git a/docs/snippets/react/component-story-figma-integration.ts-4-9.mdx b/docs/snippets/react/component-story-figma-integration.ts-4-9.mdx index eb42082d0934..dbc6a9eb0cc6 100644 --- a/docs/snippets/react/component-story-figma-integration.ts-4-9.mdx +++ b/docs/snippets/react/component-story-figma-integration.ts-4-9.mdx @@ -9,7 +9,6 @@ import { MyComponent } from './MyComponent'; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export const meta = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/component-story-figma-integration.ts.mdx b/docs/snippets/react/component-story-figma-integration.ts.mdx index 2c87853852f2..19c6080436a8 100644 --- a/docs/snippets/react/component-story-figma-integration.ts.mdx +++ b/docs/snippets/react/component-story-figma-integration.ts.mdx @@ -9,7 +9,6 @@ import { MyComponent } from './MyComponent'; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export const meta: Meta<typeof MyComponent> = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; diff --git a/docs/snippets/react/component-story-highlight-addon.js.mdx b/docs/snippets/react/component-story-highlight-addon.js.mdx index db3e9abfe4ce..9d0f8b146d17 100644 --- a/docs/snippets/react/component-story-highlight-addon.js.mdx +++ b/docs/snippets/react/component-story-highlight-addon.js.mdx @@ -1,27 +1,24 @@ ```js -// Card.stories.js|jsx +// MyComponent.stories.js|jsx -import React, { useEffect } from 'react'; import { useChannel } from '@storybook/preview-api'; -import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; -import { Card } form './Card'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Card', - component: Card + component: MyComponent, }; -export const Default = () => <Card />; -Default.decorators = [ - (storyFn) => { - emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - }); - return storyFn(); - }, -]; +export const Highlighted = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return storyFn(); + }, + ], +}; ``` diff --git a/docs/snippets/react/component-story-highlight-addon.ts-4-9.mdx b/docs/snippets/react/component-story-highlight-addon.ts-4-9.mdx new file mode 100644 index 000000000000..1d43de9ca1c6 --- /dev/null +++ b/docs/snippets/react/component-story-highlight-addon.ts-4-9.mdx @@ -0,0 +1,28 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const Highlighted: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/component-story-highlight-addon.ts.mdx b/docs/snippets/react/component-story-highlight-addon.ts.mdx new file mode 100644 index 000000000000..bed23c3c4ba2 --- /dev/null +++ b/docs/snippets/react/component-story-highlight-addon.ts.mdx @@ -0,0 +1,28 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const Highlighted: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/component-story-static-asset-cdn.js.mdx b/docs/snippets/react/component-story-static-asset-cdn.js.mdx index bd55438019d1..d4cec49790ec 100644 --- a/docs/snippets/react/component-story-static-asset-cdn.js.mdx +++ b/docs/snippets/react/component-story-static-asset-cdn.js.mdx @@ -1,21 +1,12 @@ ```js // MyComponent.stories.js|jsx -import React from 'react'; +import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ( <img src="https://storybook.js.org/images/placeholders/350x150.png" alt="My CDN placeholder" /> diff --git a/docs/snippets/react/component-story-static-asset-cdn.ts-4-9.mdx b/docs/snippets/react/component-story-static-asset-cdn.ts-4-9.mdx index 3230c7fc14d5..4af9db90d2ac 100644 --- a/docs/snippets/react/component-story-static-asset-cdn.ts-4-9.mdx +++ b/docs/snippets/react/component-story-static-asset-cdn.ts-4-9.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; diff --git a/docs/snippets/react/component-story-static-asset-cdn.ts.mdx b/docs/snippets/react/component-story-static-asset-cdn.ts.mdx index 51ddd9c5dc8b..d5ac81e22c70 100644 --- a/docs/snippets/react/component-story-static-asset-cdn.ts.mdx +++ b/docs/snippets/react/component-story-static-asset-cdn.ts.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; diff --git a/docs/snippets/react/component-story-static-asset-with-import.js.mdx b/docs/snippets/react/component-story-static-asset-with-import.js.mdx index 398479cc0fb1..b3a7aaa175cd 100644 --- a/docs/snippets/react/component-story-static-asset-with-import.js.mdx +++ b/docs/snippets/react/component-story-static-asset-with-import.js.mdx @@ -1,16 +1,12 @@ ```js // MyComponent.stories.js|jsx -import React from 'react'; +import { MyComponent } from './MyComponent'; import imageFile from './static/image.png'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; const image = { @@ -18,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docsct/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/react/component-story-static-asset-with-import.ts-4-9.mdx b/docs/snippets/react/component-story-static-asset-with-import.ts-4-9.mdx index 3bf2123238e4..e0646f871914 100644 --- a/docs/snippets/react/component-story-static-asset-with-import.ts-4-9.mdx +++ b/docs/snippets/react/component-story-static-asset-with-import.ts-4-9.mdx @@ -8,11 +8,7 @@ import imageFile from './static/image.png'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; @@ -23,11 +19,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/react/component-story-static-asset-with-import.ts.mdx b/docs/snippets/react/component-story-static-asset-with-import.ts.mdx index d1cbe5abe1a6..ebc35a334ea3 100644 --- a/docs/snippets/react/component-story-static-asset-with-import.ts.mdx +++ b/docs/snippets/react/component-story-static-asset-with-import.ts.mdx @@ -8,11 +8,7 @@ import imageFile from './static/image.png'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; @@ -23,11 +19,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/react/component-story-static-asset-without-import.js.mdx b/docs/snippets/react/component-story-static-asset-without-import.js.mdx index 39738691266b..4dcb30e21c0b 100644 --- a/docs/snippets/react/component-story-static-asset-without-import.js.mdx +++ b/docs/snippets/react/component-story-static-asset-without-import.js.mdx @@ -1,14 +1,10 @@ ```js // MyComponent.stories.js|jsx -import React from 'react'; +import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; // Assume image.png is located in the "public" directory. diff --git a/docs/snippets/react/component-story-static-asset-without-import.ts-4-9.mdx b/docs/snippets/react/component-story-static-asset-without-import.ts-4-9.mdx index a2b89d2b4e95..ce6a73cbc6da 100644 --- a/docs/snippets/react/component-story-static-asset-without-import.ts-4-9.mdx +++ b/docs/snippets/react/component-story-static-asset-without-import.ts-4-9.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; diff --git a/docs/snippets/react/component-story-static-asset-without-import.ts.mdx b/docs/snippets/react/component-story-static-asset-without-import.ts.mdx index adf739db45cf..1996030fe2f7 100644 --- a/docs/snippets/react/component-story-static-asset-without-import.ts.mdx +++ b/docs/snippets/react/component-story-static-asset-without-import.ts.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; diff --git a/docs/snippets/react/component-story-with-accessibility.js.mdx b/docs/snippets/react/component-story-with-accessibility.js.mdx index 77817116c310..31766b3e6b15 100644 --- a/docs/snippets/react/component-story-with-accessibility.js.mdx +++ b/docs/snippets/react/component-story-with-accessibility.js.mdx @@ -1,15 +1,9 @@ ```js // Button.stories.js|jsx -import React from 'react'; - import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/react/component-story-with-accessibility.ts-4-9.mdx b/docs/snippets/react/component-story-with-accessibility.ts-4-9.mdx index 90bbd5a2c562..c4d1ce0a5856 100644 --- a/docs/snippets/react/component-story-with-accessibility.ts-4-9.mdx +++ b/docs/snippets/react/component-story-with-accessibility.ts-4-9.mdx @@ -6,10 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/react/component-story-with-accessibility.ts.mdx b/docs/snippets/react/component-story-with-accessibility.ts.mdx index 83b4b781f44c..fc54e6e0fcce 100644 --- a/docs/snippets/react/component-story-with-accessibility.ts.mdx +++ b/docs/snippets/react/component-story-with-accessibility.ts.mdx @@ -6,10 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/react/component-story-with-custom-render-function.js.mdx b/docs/snippets/react/component-story-with-custom-render-function.js.mdx index 35ce299f3acf..1d725864532a 100644 --- a/docs/snippets/react/component-story-with-custom-render-function.js.mdx +++ b/docs/snippets/react/component-story-with-custom-render-function.js.mdx @@ -1,18 +1,11 @@ ```js // MyComponent.stories.js|jsx -import React from 'react'; - import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/react/component-story-with-custom-render-function.ts-4-9.mdx b/docs/snippets/react/component-story-with-custom-render-function.ts-4-9.mdx index f58abda2effc..04d947c414f6 100644 --- a/docs/snippets/react/component-story-with-custom-render-function.ts-4-9.mdx +++ b/docs/snippets/react/component-story-with-custom-render-function.ts-4-9.mdx @@ -8,11 +8,6 @@ import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/component-story-with-custom-render-function.ts.mdx b/docs/snippets/react/component-story-with-custom-render-function.ts.mdx index 270bf04d8d57..e9f4ddbb5e5b 100644 --- a/docs/snippets/react/component-story-with-custom-render-function.ts.mdx +++ b/docs/snippets/react/component-story-with-custom-render-function.ts.mdx @@ -8,11 +8,6 @@ import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/react/component-test-with-testing-library.js.mdx b/docs/snippets/react/component-test-with-testing-library.js.mdx index 9d2ee0d66853..856327c6ad3a 100644 --- a/docs/snippets/react/component-test-with-testing-library.js.mdx +++ b/docs/snippets/react/component-test-with-testing-library.js.mdx @@ -1,16 +1,24 @@ ```js -// Form.test.js +// Form.test.js|jsx -import { render, fireEvent } from '@testing-library/react'; +import { fireEvent, render, screen } from '@testing-library/react'; -import { InvalidForm } from './LoginForm.stories'; //👈 Our stories imported here. +import { composeStory } from '@storybook/react'; -it('Checks if the form is valid', () => { - const { getByTestId, getByText } = render(<InvalidForm {...InvalidForm.args} />); +import Meta, { InvalidForm as InvalidFormStory } from './LoginForm.stories'; //👈 Our stories imported here. - fireEvent.click(getByText('Submit')); +const FormError = composeStory(InvalidFormStory, Meta); - const isFormValid = getByTestId('invalid-form'); +test('Checks if the form is valid', () => { + render(<FormError />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); expect(isFormValid).toBeInTheDocument(); }); ``` diff --git a/docs/snippets/react/component-test-with-testing-library.ts.mdx b/docs/snippets/react/component-test-with-testing-library.ts.mdx index 71bb2c0c22c3..bf798e1f97eb 100644 --- a/docs/snippets/react/component-test-with-testing-library.ts.mdx +++ b/docs/snippets/react/component-test-with-testing-library.ts.mdx @@ -1,19 +1,24 @@ ```ts // Form.test.ts|tsx -import { render, fireEvent } from '@testing-library/react'; +import { fireEvent, render, screen } from '@testing-library/react'; import { composeStory } from '@storybook/react'; -import Meta, { InvalidForm } from './LoginForm.stories'; //👈 Our stories imported here. +import Meta, { InvalidForm as InvalidFormStory } from './LoginForm.stories'; //👈 Our stories imported here. -it('Checks if the form is valid', () => { - const ComposedInvalidForm = composeStory(InvalidForm, Meta); - const { getByTestId, getByText } = render(<ComposedInvalidForm />); +const FormError = composeStory(InvalidFormStory, Meta); - fireEvent.click(getByText('Submit')); +test('Checks if the form is valid', () => { + render(<FormError />); - const isFormValid = getByTestId('invalid-form'); + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); expect(isFormValid).toBeInTheDocument(); }); ``` diff --git a/docs/snippets/react/document-screen-fetch.js.mdx b/docs/snippets/react/document-screen-fetch.js.mdx index c92db05537d6..ca98cd83e4ae 100644 --- a/docs/snippets/react/document-screen-fetch.js.mdx +++ b/docs/snippets/react/document-screen-fetch.js.mdx @@ -1,5 +1,5 @@ ```js -// YourPage.js|jsx|ts|tsx +// YourPage.js|jsx|mjs|ts|tsx import React, { useState, useEffect } from 'react'; diff --git a/docs/snippets/react/document-screen-with-graphql.ts.mdx b/docs/snippets/react/document-screen-with-graphql.ts.mdx index 2848acd29092..61a6cc29365e 100644 --- a/docs/snippets/react/document-screen-with-graphql.ts.mdx +++ b/docs/snippets/react/document-screen-with-graphql.ts.mdx @@ -55,7 +55,7 @@ interface Data { } function useFetchInfo() { - const { loading, error, data } = useQueryuseQuery<Data>(AllInfoQuery); + const { loading, error, data } = useQuery<Data>(AllInfoQuery); return { loading, error, data }; } diff --git a/docs/snippets/react/documentscreen-story-msw-graphql-query.js.mdx b/docs/snippets/react/documentscreen-story-msw-graphql-query.js.mdx index 0a1e181a3a58..3b6aca7ba1c8 100644 --- a/docs/snippets/react/documentscreen-story-msw-graphql-query.js.mdx +++ b/docs/snippets/react/documentscreen-story-msw-graphql-query.js.mdx @@ -44,39 +44,10 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, decorators: [ (Story) => ( diff --git a/docs/snippets/react/documentscreen-story-msw-graphql-query.ts-4-9.mdx b/docs/snippets/react/documentscreen-story-msw-graphql-query.ts-4-9.mdx index e9e03073fc59..d70235f57e74 100644 --- a/docs/snippets/react/documentscreen-story-msw-graphql-query.ts-4-9.mdx +++ b/docs/snippets/react/documentscreen-story-msw-graphql-query.ts-4-9.mdx @@ -46,38 +46,9 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, decorators: [ (Story) => ( diff --git a/docs/snippets/react/documentscreen-story-msw-graphql-query.ts.mdx b/docs/snippets/react/documentscreen-story-msw-graphql-query.ts.mdx index 17d5afdcb7d1..d3422a78bc8e 100644 --- a/docs/snippets/react/documentscreen-story-msw-graphql-query.ts.mdx +++ b/docs/snippets/react/documentscreen-story-msw-graphql-query.ts.mdx @@ -46,38 +46,9 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; const meta: Meta<typeof DocumentScreen> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, decorators: [ (Story) => ( diff --git a/docs/snippets/react/highlight-addon-custom-style.js.mdx b/docs/snippets/react/highlight-addon-custom-style.js.mdx new file mode 100644 index 000000000000..18e410be4e1d --- /dev/null +++ b/docs/snippets/react/highlight-addon-custom-style.js.mdx @@ -0,0 +1,26 @@ +```js +// MyComponent.stories.js|jsx + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +export default { + component: MyComponent, +}; + +export const StyledHighlight = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/highlight-addon-custom-style.ts-4-9.mdx b/docs/snippets/react/highlight-addon-custom-style.ts-4-9.mdx new file mode 100644 index 000000000000..969e2ea13e6e --- /dev/null +++ b/docs/snippets/react/highlight-addon-custom-style.ts-4-9.mdx @@ -0,0 +1,30 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const StyledHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/highlight-addon-custom-style.ts.mdx b/docs/snippets/react/highlight-addon-custom-style.ts.mdx new file mode 100644 index 000000000000..ea4534dd16a5 --- /dev/null +++ b/docs/snippets/react/highlight-addon-custom-style.ts.mdx @@ -0,0 +1,30 @@ +```ts +// MyComponent.stories.ts|tsx + +import type { Meta, StoryObj } from '@storybook/react'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import { MyComponent } from './MyComponent'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const StyledHighlight: Story = { + decorators: [ + (storyFn) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return storyFn(); + }, + ], +}; +``` diff --git a/docs/snippets/react/histogram-story.js.mdx b/docs/snippets/react/histogram-story.js.mdx index e6ebd84203b7..a84781630fc6 100644 --- a/docs/snippets/react/histogram-story.js.mdx +++ b/docs/snippets/react/histogram-story.js.mdx @@ -4,11 +4,6 @@ import { Histogram } from './Histogram'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/react/histogram-story.ts-4-9.mdx b/docs/snippets/react/histogram-story.ts-4-9.mdx index 6a39ecc04fac..2091dcde597f 100644 --- a/docs/snippets/react/histogram-story.ts-4-9.mdx +++ b/docs/snippets/react/histogram-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Histogram } from './Histogram'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, } satisfies Meta<typeof Histogram>; diff --git a/docs/snippets/react/histogram-story.ts.mdx b/docs/snippets/react/histogram-story.ts.mdx index c2440cd6116a..eb5dcc4729c3 100644 --- a/docs/snippets/react/histogram-story.ts.mdx +++ b/docs/snippets/react/histogram-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Histogram } from './Histogram'; const meta: Meta<typeof Histogram> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/react/list-story-expanded.js.mdx b/docs/snippets/react/list-story-expanded.js.mdx index bf62f96ecd0c..94f93bde32df 100644 --- a/docs/snippets/react/list-story-expanded.js.mdx +++ b/docs/snippets/react/list-story-expanded.js.mdx @@ -1,17 +1,10 @@ ```js // List.stories.js|jsx -import React from 'react'; - import { List } from './List'; import { ListItem } from './ListItem'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-expanded.ts-4-9.mdx b/docs/snippets/react/list-story-expanded.ts-4-9.mdx index 177988879130..b300733c40f6 100644 --- a/docs/snippets/react/list-story-expanded.ts-4-9.mdx +++ b/docs/snippets/react/list-story-expanded.ts-4-9.mdx @@ -7,11 +7,6 @@ import { List } from './List'; import { ListItem } from './ListItem'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/react/list-story-expanded.ts.mdx b/docs/snippets/react/list-story-expanded.ts.mdx index 632a1412c577..fb2f3ed35277 100644 --- a/docs/snippets/react/list-story-expanded.ts.mdx +++ b/docs/snippets/react/list-story-expanded.ts.mdx @@ -7,11 +7,6 @@ import { List } from './List'; import { ListItem } from './ListItem'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-reuse-data.js.mdx b/docs/snippets/react/list-story-reuse-data.js.mdx index ddd739c58d59..c02be6eae0e1 100644 --- a/docs/snippets/react/list-story-reuse-data.js.mdx +++ b/docs/snippets/react/list-story-reuse-data.js.mdx @@ -10,11 +10,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-reuse-data.ts-4-9.mdx b/docs/snippets/react/list-story-reuse-data.ts-4-9.mdx index 0e442a455ece..33e41c5b597b 100644 --- a/docs/snippets/react/list-story-reuse-data.ts-4-9.mdx +++ b/docs/snippets/react/list-story-reuse-data.ts-4-9.mdx @@ -10,11 +10,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/react/list-story-reuse-data.ts.mdx b/docs/snippets/react/list-story-reuse-data.ts.mdx index be6d3a0b780b..dc00fd4bfeae 100644 --- a/docs/snippets/react/list-story-reuse-data.ts.mdx +++ b/docs/snippets/react/list-story-reuse-data.ts.mdx @@ -10,11 +10,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-starter.js.mdx b/docs/snippets/react/list-story-starter.js.mdx index 80cb195f2cea..b6443261d408 100644 --- a/docs/snippets/react/list-story-starter.js.mdx +++ b/docs/snippets/react/list-story-starter.js.mdx @@ -1,16 +1,9 @@ ```js // List.stories.js|jsx -import React from 'react'; - import { List } from './List'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-starter.ts-4-9.mdx b/docs/snippets/react/list-story-starter.ts-4-9.mdx index 16648f802e0c..1eebe1586c3f 100644 --- a/docs/snippets/react/list-story-starter.ts-4-9.mdx +++ b/docs/snippets/react/list-story-starter.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { List } from './List'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/react/list-story-starter.ts.mdx b/docs/snippets/react/list-story-starter.ts.mdx index 75b5a70e7f16..28c03dd8fb36 100644 --- a/docs/snippets/react/list-story-starter.ts.mdx +++ b/docs/snippets/react/list-story-starter.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { List } from './List'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/react/list-story-template.js.mdx b/docs/snippets/react/list-story-template.js.mdx index 4109eb0af18e..f7aca086f51b 100644 --- a/docs/snippets/react/list-story-template.js.mdx +++ b/docs/snippets/react/list-story-template.js.mdx @@ -1,8 +1,6 @@ ```js // List.stories.js|jsx -import React from 'react'; - import { List } from './List'; import { ListItem } from './ListItem'; diff --git a/docs/snippets/react/list-story-unchecked.js.mdx b/docs/snippets/react/list-story-unchecked.js.mdx index 2fbb3e557d38..5ffd677d28df 100644 --- a/docs/snippets/react/list-story-unchecked.js.mdx +++ b/docs/snippets/react/list-story-unchecked.js.mdx @@ -1,8 +1,6 @@ ```js // List.stories.js|jsx -import React from 'react'; - import { List } from './List'; //👇 Instead of importing ListItem, we import the stories diff --git a/docs/snippets/react/list-story-with-unchecked-children.js.mdx b/docs/snippets/react/list-story-with-unchecked-children.js.mdx index e308a5473137..2a8135832bf8 100644 --- a/docs/snippets/react/list-story-with-unchecked-children.js.mdx +++ b/docs/snippets/react/list-story-with-unchecked-children.js.mdx @@ -1,8 +1,6 @@ ```js // List.stories.js|jsx -import React from 'react'; - import { List } from './List'; //👇 Instead of importing ListItem, we import the stories diff --git a/docs/snippets/react/loader-story.js.mdx b/docs/snippets/react/loader-story.js.mdx index b1b31fdc9381..85a607515896 100644 --- a/docs/snippets/react/loader-story.js.mdx +++ b/docs/snippets/react/loader-story.js.mdx @@ -1,18 +1,16 @@ ```js // TodoItem.stories.js|jsx -import React from 'react'; - import fetch from 'node-fetch'; import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader' component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, }; @@ -20,9 +18,7 @@ export default { export const Primary = { loaders: [ async () => ({ - todo: await ( - await fetch('https://jsonplaceholder.typicode.com/todos/1') - ).json(), + todo: await (await fetch('https://jsonplaceholder.typicode.com/todos/1')).json(), }), ], }; diff --git a/docs/snippets/react/loader-story.ts-4-9.mdx b/docs/snippets/react/loader-story.ts-4-9.mdx index ef8ad0a1c7d8..b8292975d725 100644 --- a/docs/snippets/react/loader-story.ts-4-9.mdx +++ b/docs/snippets/react/loader-story.ts-4-9.mdx @@ -7,12 +7,12 @@ import fetch from 'node-fetch'; import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, } satisfies Meta<typeof TodoItem>; diff --git a/docs/snippets/react/loader-story.ts.mdx b/docs/snippets/react/loader-story.ts.mdx index 4d7a4b0994ea..e145a319dc89 100644 --- a/docs/snippets/react/loader-story.ts.mdx +++ b/docs/snippets/react/loader-story.ts.mdx @@ -7,12 +7,12 @@ import fetch from 'node-fetch'; import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ const meta: Meta<typeof TodoItem> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, }; diff --git a/docs/snippets/react/login-form-with-play-function.js.mdx b/docs/snippets/react/login-form-with-play-function.js.mdx index c343961270ee..b96bb882e2b5 100644 --- a/docs/snippets/react/login-form-with-play-function.js.mdx +++ b/docs/snippets/react/login-form-with-play-function.js.mdx @@ -8,11 +8,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/react/login-form-with-play-function.ts-4-9.mdx b/docs/snippets/react/login-form-with-play-function.ts-4-9.mdx index b9fc0501a5c3..f890687348f4 100644 --- a/docs/snippets/react/login-form-with-play-function.ts-4-9.mdx +++ b/docs/snippets/react/login-form-with-play-function.ts-4-9.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, } satisfies Meta<typeof LoginForm>; diff --git a/docs/snippets/react/login-form-with-play-function.ts.mdx b/docs/snippets/react/login-form-with-play-function.ts.mdx index c0c597ea1b49..1dd85a94669d 100644 --- a/docs/snippets/react/login-form-with-play-function.ts.mdx +++ b/docs/snippets/react/login-form-with-play-function.ts.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; const meta: Meta<typeof LoginForm> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/react/mock-context-container.js.mdx b/docs/snippets/react/mock-context-container.js.mdx index 7b5dc78a0125..650bb5b29370 100644 --- a/docs/snippets/react/mock-context-container.js.mdx +++ b/docs/snippets/react/mock-context-container.js.mdx @@ -10,11 +10,6 @@ import { UserPosts } from './UserPosts'; import { Normal as UserFriendsNormal } from './UserFriends.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ProfilePage', component: ProfilePage, }; diff --git a/docs/snippets/react/multiple-stories-test.js.mdx b/docs/snippets/react/multiple-stories-test.js.mdx new file mode 100644 index 000000000000..cf80fd785237 --- /dev/null +++ b/docs/snippets/react/multiple-stories-test.js.mdx @@ -0,0 +1,37 @@ +```js +// Form.test.js|jsx + +import { fireEvent, render, screen } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as FormStories from './LoginForm.stories'; + +const { InvalidForm, ValidForm } = composeStories(FormStories); + +test('Tests invalid form state', () => { + render(<InvalidForm />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); + +test('Tests filled form', () => { + render(<ValidForm />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/react/multiple-stories-test.ts.mdx b/docs/snippets/react/multiple-stories-test.ts.mdx new file mode 100644 index 000000000000..1dee14b27732 --- /dev/null +++ b/docs/snippets/react/multiple-stories-test.ts.mdx @@ -0,0 +1,37 @@ +```ts +// Form.test.ts|tsx + +import { fireEvent, render, screen } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as FormStories from './LoginForm.stories'; + +const { InvalidForm, ValidForm } = composeStories(FormStories); + +test('Tests invalid form state', () => { + render(<InvalidForm />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); + +test('Tests filled form', () => { + render(<ValidForm />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/react/my-component-story-basic-and-props.js.mdx b/docs/snippets/react/my-component-story-basic-and-props.js.mdx index 0a1a5aa1f2ed..c1e3bc64d80f 100644 --- a/docs/snippets/react/my-component-story-basic-and-props.js.mdx +++ b/docs/snippets/react/my-component-story-basic-and-props.js.mdx @@ -1,16 +1,9 @@ ```js // MyComponent.story.js|jsx -import React from 'react'; - import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/react/my-component-story-basic-and-props.ts-4-9.mdx b/docs/snippets/react/my-component-story-basic-and-props.ts-4-9.mdx index b24c24470301..f693a660cf14 100644 --- a/docs/snippets/react/my-component-story-basic-and-props.ts-4-9.mdx +++ b/docs/snippets/react/my-component-story-basic-and-props.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/my-component-story-basic-and-props.ts.mdx b/docs/snippets/react/my-component-story-basic-and-props.ts.mdx index 8723addee8cd..ee42d9ce9fd2 100644 --- a/docs/snippets/react/my-component-story-basic-and-props.ts.mdx +++ b/docs/snippets/react/my-component-story-basic-and-props.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/react/my-component-story-configure-viewports.js.mdx b/docs/snippets/react/my-component-story-configure-viewports.js.mdx index 0bd1d124cd9b..3034db56937c 100644 --- a/docs/snippets/react/my-component-story-configure-viewports.js.mdx +++ b/docs/snippets/react/my-component-story-configure-viewports.js.mdx @@ -6,11 +6,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/react/my-component-story-configure-viewports.ts-4-9.mdx b/docs/snippets/react/my-component-story-configure-viewports.ts-4-9.mdx index 4ffc3f2890cb..6d1510b1d231 100644 --- a/docs/snippets/react/my-component-story-configure-viewports.ts-4-9.mdx +++ b/docs/snippets/react/my-component-story-configure-viewports.ts-4-9.mdx @@ -8,11 +8,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/react/my-component-story-configure-viewports.ts.mdx b/docs/snippets/react/my-component-story-configure-viewports.ts.mdx index 335ddf5f38fc..9325ed705c8c 100644 --- a/docs/snippets/react/my-component-story-configure-viewports.ts.mdx +++ b/docs/snippets/react/my-component-story-configure-viewports.ts.mdx @@ -8,11 +8,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/react/my-component-story-use-globaltype-backwards-compat.js.mdx b/docs/snippets/react/my-component-story-use-globaltype-backwards-compat.js.mdx index e53c6cd9f9c3..a7def3291707 100644 --- a/docs/snippets/react/my-component-story-use-globaltype-backwards-compat.js.mdx +++ b/docs/snippets/react/my-component-story-use-globaltype-backwards-compat.js.mdx @@ -1,5 +1,5 @@ ```js -// MyComponent.stories.js|jsx|ts|tsx +// MyComponent.stories.js|jsx|mjs|ts|tsx export const StoryWithLocale = ({ globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/react/my-component-story-use-globaltype.js.mdx b/docs/snippets/react/my-component-story-use-globaltype.js.mdx index 7740ce9d7a90..c8d0f82b2c54 100644 --- a/docs/snippets/react/my-component-story-use-globaltype.js.mdx +++ b/docs/snippets/react/my-component-story-use-globaltype.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -27,11 +22,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/react/my-component-story-use-globaltype.ts-4-9.mdx b/docs/snippets/react/my-component-story-use-globaltype.ts-4-9.mdx index 9cbea19d732c..70fd88a3329e 100644 --- a/docs/snippets/react/my-component-story-use-globaltype.ts-4-9.mdx +++ b/docs/snippets/react/my-component-story-use-globaltype.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; @@ -32,11 +27,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/react/my-component-story-use-globaltype.ts.mdx b/docs/snippets/react/my-component-story-use-globaltype.ts.mdx index 93ed776d2429..fba8d1fdf9af 100644 --- a/docs/snippets/react/my-component-story-use-globaltype.ts.mdx +++ b/docs/snippets/react/my-component-story-use-globaltype.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -32,11 +27,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/react/my-component-story-with-nonstory.js.mdx b/docs/snippets/react/my-component-story-with-nonstory.js.mdx index 8770d01a3295..51bbcdc7bc1a 100644 --- a/docs/snippets/react/my-component-story-with-nonstory.js.mdx +++ b/docs/snippets/react/my-component-story-with-nonstory.js.mdx @@ -6,11 +6,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/react/my-component-story-with-nonstory.ts-4-9.mdx b/docs/snippets/react/my-component-story-with-nonstory.ts-4-9.mdx index 603975f0484a..15e87f4a8a1e 100644 --- a/docs/snippets/react/my-component-story-with-nonstory.ts-4-9.mdx +++ b/docs/snippets/react/my-component-story-with-nonstory.ts-4-9.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/react/my-component-story-with-nonstory.ts.mdx b/docs/snippets/react/my-component-story-with-nonstory.ts.mdx index 833067bb750b..156971af0c6d 100644 --- a/docs/snippets/react/my-component-story-with-nonstory.ts.mdx +++ b/docs/snippets/react/my-component-story-with-nonstory.ts.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/react/override-compose-story-test.compose-stories.js.mdx b/docs/snippets/react/override-compose-story-test.compose-stories.js.mdx new file mode 100644 index 000000000000..32dec5d22b7a --- /dev/null +++ b/docs/snippets/react/override-compose-story-test.compose-stories.js.mdx @@ -0,0 +1,19 @@ +```js +// Form.test.js|jsx + +import { composeStories } from '@storybook/react'; + +import * as FormStories from './LoginForm.stories'; + +const { ValidForm } = composeStories(FormStories, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/react/override-compose-story-test.compose-stories.ts.mdx b/docs/snippets/react/override-compose-story-test.compose-stories.ts.mdx new file mode 100644 index 000000000000..51682febcb5f --- /dev/null +++ b/docs/snippets/react/override-compose-story-test.compose-stories.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Form.test.ts|tsx + +import { composeStories } from '@storybook/react'; + +import * as FormStories from './LoginForm.stories'; + +const { ValidForm } = composeStories(FormStories, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/react/override-compose-story-test.compose-story.js.mdx b/docs/snippets/react/override-compose-story-test.compose-story.js.mdx new file mode 100644 index 000000000000..726d814a9909 --- /dev/null +++ b/docs/snippets/react/override-compose-story-test.compose-story.js.mdx @@ -0,0 +1,19 @@ +```js +// Form.test.js|jsx + +import { composeStory } from '@storybook/react'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormValidation = composeStory(ValidFormStory, Meta, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/react/override-compose-story-test.compose-story.ts.mdx b/docs/snippets/react/override-compose-story-test.compose-story.ts.mdx new file mode 100644 index 000000000000..a1b5eb71012d --- /dev/null +++ b/docs/snippets/react/override-compose-story-test.compose-story.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Form.test.ts|tsx + +import { composeStory } from '@storybook/react'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormValidation = composeStory(ValidFormStory, Meta, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/react/page-story-slots.js.mdx b/docs/snippets/react/page-story-slots.js.mdx index c9adf77274f8..18b06c59a907 100644 --- a/docs/snippets/react/page-story-slots.js.mdx +++ b/docs/snippets/react/page-story-slots.js.mdx @@ -1,30 +1,18 @@ ```js // Page.stories.js|jsx -import React from 'react'; - import { Page } from './Page'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ -export const CustomFooter = { - render: (args) => ( + render: ({ footer, ...args }) => ( <Page {...args}> - <footer>{args.footer}</footer> + <footer>{footer}</footer> </Page> ), +}; + +export const CustomFooter = { args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/react/page-story-slots.ts-4-9.mdx b/docs/snippets/react/page-story-slots.ts-4-9.mdx index 512bd6d1820f..d67486842a2e 100644 --- a/docs/snippets/react/page-story-slots.ts-4-9.mdx +++ b/docs/snippets/react/page-story-slots.ts-4-9.mdx @@ -5,26 +5,23 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Page } from './Page'; +type PagePropsAndCustomArgs = React.ComponentProps<typeof Page> & { footer?: string }; + const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -} satisfies Meta<typeof Page>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const CustomFooter: Story = { - render: (args) => ( + render: ({ footer, ...args }) => ( <Page {...args}> - <footer>{args.footer}</footer> + <footer>{footer}</footer> </Page> ), +} satisfies Meta<PagePropsAndCustomArgs>; +export default meta; + +type Story = StoryObj<typeof meta>; + +export const CustomFooter = { args: { footer: 'Built with Storybook', }, -}; +} satisfies Story; ``` diff --git a/docs/snippets/react/page-story-slots.ts.mdx b/docs/snippets/react/page-story-slots.ts.mdx index 85789cd44ffa..d28aadf26523 100644 --- a/docs/snippets/react/page-story-slots.ts.mdx +++ b/docs/snippets/react/page-story-slots.ts.mdx @@ -5,24 +5,21 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Page } from './Page'; -const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', +type PagePropsAndCustomArgs = React.ComponentProps<typeof Page> & { footer?: string }; + +const meta: Meta<PagePropsAndCustomArgs> = { component: Page, + render: ({ footer, ...args }) => ( + <Page {...args}> + <footer>{footer}</footer> + </Page> + ), }; - export default meta; -type Story = StoryObj<typeof Page>; + +type Story = StoryObj<PagePropsAndCustomArgs>; export const CustomFooter: Story = { - render: (args) => ( - <Page {...args}> - <footer>{args.footer}</footer> - </Page> - ), args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/react/page-story.js.mdx b/docs/snippets/react/page-story.js.mdx index a8e978783d23..49c2f8297eb9 100644 --- a/docs/snippets/react/page-story.js.mdx +++ b/docs/snippets/react/page-story.js.mdx @@ -7,11 +7,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/react/page-story.ts-4-9.mdx b/docs/snippets/react/page-story.ts-4-9.mdx index 6c1702daeab2..63d162e2baf3 100644 --- a/docs/snippets/react/page-story.ts-4-9.mdx +++ b/docs/snippets/react/page-story.ts-4-9.mdx @@ -9,11 +9,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, } satisfies Meta<typeof Page>; diff --git a/docs/snippets/react/page-story.ts.mdx b/docs/snippets/react/page-story.ts.mdx index efbec4192f77..72fe76c4bcc7 100644 --- a/docs/snippets/react/page-story.ts.mdx +++ b/docs/snippets/react/page-story.ts.mdx @@ -9,11 +9,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/react/storybook-testing-addon-optional-config-scripts.json.mdx b/docs/snippets/react/react-test-scripts-optional-config-scripts.json.mdx similarity index 100% rename from docs/snippets/react/storybook-testing-addon-optional-config-scripts.json.mdx rename to docs/snippets/react/react-test-scripts-optional-config-scripts.json.mdx diff --git a/docs/snippets/react/reuse-args-test.js.mdx b/docs/snippets/react/reuse-args-test.js.mdx new file mode 100644 index 000000000000..cb71c04e892b --- /dev/null +++ b/docs/snippets/react/reuse-args-test.js.mdx @@ -0,0 +1,19 @@ +```js +// Button.test.js|jsx + +import { render, screen } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as stories from './Button.stories'; + +const { Primary } = composeStories(stories); + +test('reuses args from composed story', () => { + render(<Primary />); + + const buttonElement = screen.getByRole('button'); + // Testing against values coming from the story itself! No need for duplication + expect(buttonElement.textContent).toEqual(Primary.args.label); +}); +``` diff --git a/docs/snippets/react/reuse-args-test.ts.mdx b/docs/snippets/react/reuse-args-test.ts.mdx new file mode 100644 index 000000000000..143b3a1cf2a7 --- /dev/null +++ b/docs/snippets/react/reuse-args-test.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Button.test.ts|tsx + +import { render, screen } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as stories from './Button.stories'; + +const { Primary } = composeStories(stories); + +test('reuses args from composed story', () => { + render(<Primary />); + + const buttonElement = screen.getByRole('button'); + // Testing against values coming from the story itself! No need for duplication + expect(buttonElement.textContent).toEqual(Primary.args.label); +}); +``` diff --git a/docs/snippets/react/simple-page-implementation.ts.mdx b/docs/snippets/react/simple-page-implementation.ts.mdx index 913064973839..02629a7a3bb9 100644 --- a/docs/snippets/react/simple-page-implementation.ts.mdx +++ b/docs/snippets/react/simple-page-implementation.ts.mdx @@ -7,13 +7,13 @@ import SubDocuments from './SubDocuments'; import DocumentHeader from './DocumentHeader'; import DocumentList from './DocumentList'; -export interface DocumentScreen { +export interface DocumentScreenProps { user?: {}; document?: Document; subdocuments?: SubDocuments[]; } -function DocumentScreen({ user, document, subdocuments }) { +export function DocumentScreen({ user, document, subdocuments }: DocumentScreenProps) { return ( <PageLayout user={user}> <DocumentHeader document={document} /> diff --git a/docs/snippets/react/single-story-test.js.mdx b/docs/snippets/react/single-story-test.js.mdx new file mode 100644 index 000000000000..b47e0ad42194 --- /dev/null +++ b/docs/snippets/react/single-story-test.js.mdx @@ -0,0 +1,24 @@ +```js +// Form.test.js|jsx + +import { fireEvent, render, screen } from '@testing-library/react'; + +import { composeStory } from '@storybook/react'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormOK = composeStory(ValidFormStory, Meta); + +test('Validates form', () => { + render(<FormOK />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/react/single-story-test.ts.mdx b/docs/snippets/react/single-story-test.ts.mdx new file mode 100644 index 000000000000..167767ce72f4 --- /dev/null +++ b/docs/snippets/react/single-story-test.ts.mdx @@ -0,0 +1,24 @@ +```ts +// Form.test.ts|tsx + +import { fireEvent, render, screen } from '@testing-library/react'; + +import { composeStory } from '@storybook/react'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormOK = composeStory(ValidFormStory, Meta); + +test('Validates form', () => { + render(<FormOK />); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/react/storybook-addon-a11y-disable.js.mdx b/docs/snippets/react/storybook-addon-a11y-disable.js.mdx index 10a09301e4c3..aaa982dbbc06 100644 --- a/docs/snippets/react/storybook-addon-a11y-disable.js.mdx +++ b/docs/snippets/react/storybook-addon-a11y-disable.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; diff --git a/docs/snippets/react/storybook-addon-a11y-disable.ts-4-9.mdx b/docs/snippets/react/storybook-addon-a11y-disable.ts-4-9.mdx index 4044b263d628..d94fada8ffcf 100644 --- a/docs/snippets/react/storybook-addon-a11y-disable.ts-4-9.mdx +++ b/docs/snippets/react/storybook-addon-a11y-disable.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/storybook-addon-a11y-disable.ts.mdx b/docs/snippets/react/storybook-addon-a11y-disable.ts.mdx index afaa0b5d5f48..4ce786cf4a0d 100644 --- a/docs/snippets/react/storybook-addon-a11y-disable.ts.mdx +++ b/docs/snippets/react/storybook-addon-a11y-disable.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; diff --git a/docs/snippets/react/storybook-addon-a11y-story-config.js.mdx b/docs/snippets/react/storybook-addon-a11y-story-config.js.mdx index 72b261bb7dd7..665224ce8798 100644 --- a/docs/snippets/react/storybook-addon-a11y-story-config.js.mdx +++ b/docs/snippets/react/storybook-addon-a11y-story-config.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; diff --git a/docs/snippets/react/storybook-addon-a11y-story-config.ts-4-9.mdx b/docs/snippets/react/storybook-addon-a11y-story-config.ts-4-9.mdx index 3099e4bab471..a6ed20bdbbca 100644 --- a/docs/snippets/react/storybook-addon-a11y-story-config.ts-4-9.mdx +++ b/docs/snippets/react/storybook-addon-a11y-story-config.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/react/storybook-addon-a11y-story-config.ts.mdx b/docs/snippets/react/storybook-addon-a11y-story-config.ts.mdx index 5e180e23239b..c51c416357d6 100644 --- a/docs/snippets/react/storybook-addon-a11y-story-config.ts.mdx +++ b/docs/snippets/react/storybook-addon-a11y-story-config.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; diff --git a/docs/snippets/react/storybook-testing-addon-optional-config.js.mdx b/docs/snippets/react/storybook-testing-addon-optional-config.js.mdx index 628e34004556..90b2cb1e1833 100644 --- a/docs/snippets/react/storybook-testing-addon-optional-config.js.mdx +++ b/docs/snippets/react/storybook-testing-addon-optional-config.js.mdx @@ -1,11 +1,10 @@ ```js -// setupFile.js - -import { setGlobalConfig } from '@storybook/testing-react'; +// setupFile.js|ts // Storybook's preview file location import * as globalStorybookConfig from './.storybook/preview'; -// Replace with setProjectAnnotations if you are using the new pre-release version the addon -setGlobalConfig(globalStorybookConfig); +import { setProjectAnnotations } from '@storybook/react'; + +setProjectAnnotations(globalStorybookConfig); ``` diff --git a/docs/snippets/react/table-story-fully-customize-controls.js.mdx b/docs/snippets/react/table-story-fully-customize-controls.js.mdx deleted file mode 100644 index 9dcfb86c5e6f..000000000000 --- a/docs/snippets/react/table-story-fully-customize-controls.js.mdx +++ /dev/null @@ -1,46 +0,0 @@ -```js -// Table.stories.js|jsx - -import React from 'react'; - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/react/api/csf - * to learn how to use render functions. - */ -export const TableStory = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/react/table-story-fully-customize-controls.ts-4-9.mdx b/docs/snippets/react/table-story-fully-customize-controls.ts-4-9.mdx deleted file mode 100644 index 9fc31cefb415..000000000000 --- a/docs/snippets/react/table-story-fully-customize-controls.ts-4-9.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```tsx -// Table.stories.ts|tsx - -import type { Meta, StoryObj } from '@storybook/react'; - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -} satisfies Meta<typeof Table>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const TableStory: Story = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/react/table-story-fully-customize-controls.ts.mdx b/docs/snippets/react/table-story-fully-customize-controls.ts.mdx deleted file mode 100644 index 80ef5aad5ff8..000000000000 --- a/docs/snippets/react/table-story-fully-customize-controls.ts.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```ts -// Table.stories.ts|tsx - -import type { Meta, StoryObj } from '@storybook/react'; - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -const meta: Meta<typeof Table> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -export default meta; -type Story = StoryObj<typeof Table>; - -export const TableStory: Story = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/react/your-component-with-decorator.js.mdx b/docs/snippets/react/your-component-with-decorator.js.mdx index 7b34c9607840..4a369d1981cf 100644 --- a/docs/snippets/react/your-component-with-decorator.js.mdx +++ b/docs/snippets/react/your-component-with-decorator.js.mdx @@ -1,16 +1,9 @@ ```js // YourComponent.stories.js|jsx -import React from 'react'; - import { YourComponent } from './YourComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/react/your-component-with-decorator.ts-4-9.mdx b/docs/snippets/react/your-component-with-decorator.ts-4-9.mdx index 7a29346ab9d9..f496c316f5b6 100644 --- a/docs/snippets/react/your-component-with-decorator.ts-4-9.mdx +++ b/docs/snippets/react/your-component-with-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/react/your-component-with-decorator.ts.mdx b/docs/snippets/react/your-component-with-decorator.ts.mdx index a58b7ab66c5c..5138b2f275cb 100644 --- a/docs/snippets/react/your-component-with-decorator.ts.mdx +++ b/docs/snippets/react/your-component-with-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from '@storybook/react'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/react/your-component.js.mdx b/docs/snippets/react/your-component.js.mdx index d4a7d96e11e8..3fc6d4fd7682 100644 --- a/docs/snippets/react/your-component.js.mdx +++ b/docs/snippets/react/your-component.js.mdx @@ -5,11 +5,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/react/your-component.ts-4-9.mdx b/docs/snippets/react/your-component.ts-4-9.mdx index 62743ecce0a8..8641996581e7 100644 --- a/docs/snippets/react/your-component.ts-4-9.mdx +++ b/docs/snippets/react/your-component.ts-4-9.mdx @@ -7,11 +7,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/react/your-component.ts.mdx b/docs/snippets/react/your-component.ts.mdx index ee932e4cc06c..d36554a00187 100644 --- a/docs/snippets/react/your-component.ts.mdx +++ b/docs/snippets/react/your-component.ts.mdx @@ -7,11 +7,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/solid/button-group-story.js.mdx b/docs/snippets/solid/button-group-story.js.mdx index e18fee243331..bb82e5ac2e3a 100644 --- a/docs/snippets/solid/button-group-story.js.mdx +++ b/docs/snippets/solid/button-group-story.js.mdx @@ -7,11 +7,6 @@ import { ButtonGroup } from '../ButtonGroup'; import * as ButtonStories from './Button.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/solid/button-group-story.ts-4-9.mdx b/docs/snippets/solid/button-group-story.ts-4-9.mdx index dcfa788a4b36..5f92b24feb38 100644 --- a/docs/snippets/solid/button-group-story.ts-4-9.mdx +++ b/docs/snippets/solid/button-group-story.ts-4-9.mdx @@ -9,11 +9,6 @@ import { ButtonGroup } from '../ButtonGroup'; import * as ButtonStories from './Button.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, } satisfies Meta<typeof ButtonGroup>; diff --git a/docs/snippets/solid/button-group-story.ts.mdx b/docs/snippets/solid/button-group-story.ts.mdx index dde961bec25b..94cd07dee5a5 100644 --- a/docs/snippets/solid/button-group-story.ts.mdx +++ b/docs/snippets/solid/button-group-story.ts.mdx @@ -9,11 +9,6 @@ import { ButtonGroup } from '../ButtonGroup'; import * as ButtonStories from './Button.stories'; const meta: Meta<typeof ButtonGroup> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/solid/button-story-auto-docs.js.mdx b/docs/snippets/solid/button-story-auto-docs.js.mdx index c48e89a20803..b91d82f70638 100644 --- a/docs/snippets/solid/button-story-auto-docs.js.mdx +++ b/docs/snippets/solid/button-story-auto-docs.js.mdx @@ -4,7 +4,6 @@ import { Button } from './Button'; export default { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/solid/button-story-auto-docs.ts-4-9.mdx b/docs/snippets/solid/button-story-auto-docs.ts-4-9.mdx index 532a394a46eb..164bb2d6617a 100644 --- a/docs/snippets/solid/button-story-auto-docs.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-auto-docs.ts-4-9.mdx @@ -6,7 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/solid/button-story-auto-docs.ts.mdx b/docs/snippets/solid/button-story-auto-docs.ts.mdx index 1571f4a6b22b..95eee64f8b77 100644 --- a/docs/snippets/solid/button-story-auto-docs.ts.mdx +++ b/docs/snippets/solid/button-story-auto-docs.ts.mdx @@ -6,7 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/solid/button-story-click-handler-args.js.mdx b/docs/snippets/solid/button-story-click-handler-args.js.mdx index 27855b9293e0..e8ed7a43a215 100644 --- a/docs/snippets/solid/button-story-click-handler-args.js.mdx +++ b/docs/snippets/solid/button-story-click-handler-args.js.mdx @@ -1,18 +1,11 @@ ```js // Button.stories.js|jsx -import solid from 'solid'; - import { action } from '@storybook/addon-actions'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-click-handler-args.ts-4-9.mdx b/docs/snippets/solid/button-story-click-handler-args.ts-4-9.mdx index 51ca6fbd78ea..f414d1a1716c 100644 --- a/docs/snippets/solid/button-story-click-handler-args.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-click-handler-args.ts-4-9.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-click-handler-args.ts.mdx b/docs/snippets/solid/button-story-click-handler-args.ts.mdx index fec2ce463127..f5d18b9037e4 100644 --- a/docs/snippets/solid/button-story-click-handler-args.ts.mdx +++ b/docs/snippets/solid/button-story-click-handler-args.ts.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-click-handler-simplificated.js.mdx b/docs/snippets/solid/button-story-click-handler-simplificated.js.mdx index 883e15211754..7737407e7aeb 100644 --- a/docs/snippets/solid/button-story-click-handler-simplificated.js.mdx +++ b/docs/snippets/solid/button-story-click-handler-simplificated.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } diff --git a/docs/snippets/solid/button-story-click-handler-simplificated.ts-4-9.mdx b/docs/snippets/solid/button-story-click-handler-simplificated.ts-4-9.mdx index 198bab5e50f3..67ae1e3f2b69 100644 --- a/docs/snippets/solid/button-story-click-handler-simplificated.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-click-handler-simplificated.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-click-handler-simplificated.ts.mdx b/docs/snippets/solid/button-story-click-handler-simplificated.ts.mdx index f2b4efe56023..a1f2375e69f3 100644 --- a/docs/snippets/solid/button-story-click-handler-simplificated.ts.mdx +++ b/docs/snippets/solid/button-story-click-handler-simplificated.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-click-handler.js.mdx b/docs/snippets/solid/button-story-click-handler.js.mdx index 91e0b20e428a..062a1cbaa7a8 100644 --- a/docs/snippets/solid/button-story-click-handler.js.mdx +++ b/docs/snippets/solid/button-story-click-handler.js.mdx @@ -6,11 +6,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-click-handler.ts-4-9.mdx b/docs/snippets/solid/button-story-click-handler.ts-4-9.mdx index 9dd558d76c56..49ecb3e2358d 100644 --- a/docs/snippets/solid/button-story-click-handler.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-click-handler.ts-4-9.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-click-handler.ts.mdx b/docs/snippets/solid/button-story-click-handler.ts.mdx index f471eebc71dd..c77a6f033145 100644 --- a/docs/snippets/solid/button-story-click-handler.ts.mdx +++ b/docs/snippets/solid/button-story-click-handler.ts.mdx @@ -8,11 +8,6 @@ import { action } from '@storybook/addon-actions'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-component-args-primary.js.mdx b/docs/snippets/solid/button-story-component-args-primary.js.mdx index eabb4eabf755..fff9e33773a2 100644 --- a/docs/snippets/solid/button-story-component-args-primary.js.mdx +++ b/docs/snippets/solid/button-story-component-args-primary.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/solid/button-story-component-args-primary.ts-4-9.mdx b/docs/snippets/solid/button-story-component-args-primary.ts-4-9.mdx index 2c16d4e7528e..1fbf94adf584 100644 --- a/docs/snippets/solid/button-story-component-args-primary.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-component-args-primary.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/solid/button-story-component-args-primary.ts.mdx b/docs/snippets/solid/button-story-component-args-primary.ts.mdx index 1f7f1c1295b2..8113965f7833 100644 --- a/docs/snippets/solid/button-story-component-args-primary.ts.mdx +++ b/docs/snippets/solid/button-story-component-args-primary.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/solid/button-story-component-decorator.js.mdx b/docs/snippets/solid/button-story-component-decorator.js.mdx index 142b51099cbb..96d5b9929365 100644 --- a/docs/snippets/solid/button-story-component-decorator.js.mdx +++ b/docs/snippets/solid/button-story-component-decorator.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/button-story-component-decorator.ts-4-9.mdx b/docs/snippets/solid/button-story-component-decorator.ts-4-9.mdx index 816cfbfe49c9..b52e4cd10297 100644 --- a/docs/snippets/solid/button-story-component-decorator.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-component-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/button-story-component-decorator.ts.mdx b/docs/snippets/solid/button-story-component-decorator.ts.mdx index 3533e9695295..74bccdb6223b 100644 --- a/docs/snippets/solid/button-story-component-decorator.ts.mdx +++ b/docs/snippets/solid/button-story-component-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/button-story-decorator.js.mdx b/docs/snippets/solid/button-story-decorator.js.mdx index bad4922e413a..3b20f9abf956 100644 --- a/docs/snippets/solid/button-story-decorator.js.mdx +++ b/docs/snippets/solid/button-story-decorator.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-decorator.ts-4-9.mdx b/docs/snippets/solid/button-story-decorator.ts-4-9.mdx index 75508c5c2d5e..be34fb09d2ab 100644 --- a/docs/snippets/solid/button-story-decorator.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-decorator.ts.mdx b/docs/snippets/solid/button-story-decorator.ts.mdx index 65923c9eb871..df3cf720b4b1 100644 --- a/docs/snippets/solid/button-story-decorator.ts.mdx +++ b/docs/snippets/solid/button-story-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-default-export-with-component.js.mdx b/docs/snippets/solid/button-story-default-export-with-component.js.mdx index d1199e97cd76..dfffb5de27e3 100644 --- a/docs/snippets/solid/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/solid/button-story-default-export-with-component.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; ``` diff --git a/docs/snippets/solid/button-story-default-export-with-component.ts-4-9.mdx b/docs/snippets/solid/button-story-default-export-with-component.ts-4-9.mdx index 68f045e4c3b5..1afbbbab85d4 100644 --- a/docs/snippets/solid/button-story-default-export-with-component.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-default-export-with-component.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-default-export-with-component.ts.mdx b/docs/snippets/solid/button-story-default-export-with-component.ts.mdx index 998dd5cb0666..dcc16eb5771f 100644 --- a/docs/snippets/solid/button-story-default-export-with-component.ts.mdx +++ b/docs/snippets/solid/button-story-default-export-with-component.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-rename-story.js.mdx b/docs/snippets/solid/button-story-rename-story.js.mdx index 4c70cf4ae287..69eee222e874 100644 --- a/docs/snippets/solid/button-story-rename-story.js.mdx +++ b/docs/snippets/solid/button-story-rename-story.js.mdx @@ -4,14 +4,14 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/solid/api/csf + * to learn how to use render functions. + */ export const Primary = { name: 'I am the primary', render: () => <Button primary label="Button" />, diff --git a/docs/snippets/solid/button-story-rename-story.ts-4-9.mdx b/docs/snippets/solid/button-story-rename-story.ts-4-9.mdx index 2a7b8dd718d0..80f74054c90a 100644 --- a/docs/snippets/solid/button-story-rename-story.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-rename-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-rename-story.ts.mdx b/docs/snippets/solid/button-story-rename-story.ts.mdx index e07adf5ebe39..f850fd5dfd03 100644 --- a/docs/snippets/solid/button-story-rename-story.ts.mdx +++ b/docs/snippets/solid/button-story-rename-story.ts.mdx @@ -5,11 +5,6 @@ import { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-using-args.js.mdx b/docs/snippets/solid/button-story-using-args.js.mdx index 7f557ab1cb9b..65cfeddc8fa2 100644 --- a/docs/snippets/solid/button-story-using-args.js.mdx +++ b/docs/snippets/solid/button-story-using-args.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-using-args.ts-4-9.mdx b/docs/snippets/solid/button-story-using-args.ts-4-9.mdx index 689374869b03..7556b41a3e51 100644 --- a/docs/snippets/solid/button-story-using-args.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-using-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-using-args.ts.mdx b/docs/snippets/solid/button-story-using-args.ts.mdx index 701ae1fd9104..caf8ab0905b2 100644 --- a/docs/snippets/solid/button-story-using-args.ts.mdx +++ b/docs/snippets/solid/button-story-using-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-with-args.js.mdx b/docs/snippets/solid/button-story-with-args.js.mdx index 89d34fc639ee..b185421f6c95 100644 --- a/docs/snippets/solid/button-story-with-args.js.mdx +++ b/docs/snippets/solid/button-story-with-args.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-with-args.ts-4-9.mdx b/docs/snippets/solid/button-story-with-args.ts-4-9.mdx index 5017c3eada77..cc5c4cd8f6a9 100644 --- a/docs/snippets/solid/button-story-with-args.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-with-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-with-args.ts.mdx b/docs/snippets/solid/button-story-with-args.ts.mdx index 37bfaa0ec4ac..fadaa3424123 100644 --- a/docs/snippets/solid/button-story-with-args.ts.mdx +++ b/docs/snippets/solid/button-story-with-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-with-blue-args.js.mdx b/docs/snippets/solid/button-story-with-blue-args.js.mdx index dff6aeed748e..85834a81f1f0 100644 --- a/docs/snippets/solid/button-story-with-blue-args.js.mdx +++ b/docs/snippets/solid/button-story-with-blue-args.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/solid/button-story-with-blue-args.ts-4-9.mdx b/docs/snippets/solid/button-story-with-blue-args.ts-4-9.mdx index 6f3432754b3a..b5d300bbfe72 100644 --- a/docs/snippets/solid/button-story-with-blue-args.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-with-blue-args.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/solid/button-story-with-blue-args.ts.mdx b/docs/snippets/solid/button-story-with-blue-args.ts.mdx index fadc25603f03..f45bd802022d 100644 --- a/docs/snippets/solid/button-story-with-blue-args.ts.mdx +++ b/docs/snippets/solid/button-story-with-blue-args.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/solid/button-story-with-emojis.js.mdx b/docs/snippets/solid/button-story-with-emojis.js.mdx index b359184a6879..2e03e4a75415 100644 --- a/docs/snippets/solid/button-story-with-emojis.js.mdx +++ b/docs/snippets/solid/button-story-with-emojis.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-with-emojis.ts-4-9.mdx b/docs/snippets/solid/button-story-with-emojis.ts-4-9.mdx index e959f82d0a0b..3c9a7ef40476 100644 --- a/docs/snippets/solid/button-story-with-emojis.ts-4-9.mdx +++ b/docs/snippets/solid/button-story-with-emojis.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story-with-emojis.ts.mdx b/docs/snippets/solid/button-story-with-emojis.ts.mdx index 6f155ebd8a62..bc6242f41209 100644 --- a/docs/snippets/solid/button-story-with-emojis.ts.mdx +++ b/docs/snippets/solid/button-story-with-emojis.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story-with-sample.js.mdx b/docs/snippets/solid/button-story-with-sample.js.mdx index 490f2d833afa..64fd26d83463 100644 --- a/docs/snippets/solid/button-story-with-sample.js.mdx +++ b/docs/snippets/solid/button-story-with-sample.js.mdx @@ -4,19 +4,9 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const Sample = { render: () => <Button label="hello button" />, }; diff --git a/docs/snippets/solid/button-story.js.mdx b/docs/snippets/solid/button-story.js.mdx index f908db235f84..52b62dd75c31 100644 --- a/docs/snippets/solid/button-story.js.mdx +++ b/docs/snippets/solid/button-story.js.mdx @@ -4,11 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story.ts-4-9.mdx b/docs/snippets/solid/button-story.ts-4-9.mdx index e006f2e8d46e..4f75b9cc0514 100644 --- a/docs/snippets/solid/button-story.ts-4-9.mdx +++ b/docs/snippets/solid/button-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/solid/button-story.ts.mdx b/docs/snippets/solid/button-story.ts.mdx index bcb7303b201d..2dd769204c18 100644 --- a/docs/snippets/solid/button-story.ts.mdx +++ b/docs/snippets/solid/button-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story.with-hooks.js.mdx b/docs/snippets/solid/button-story.with-hooks.js.mdx index 79c6f054452a..b41881651f14 100644 --- a/docs/snippets/solid/button-story.with-hooks.js.mdx +++ b/docs/snippets/solid/button-story.with-hooks.js.mdx @@ -1,16 +1,11 @@ ```js -// Button.stories.js|ts|jsx|tsx +// Button.stories.js|jsx import { createSignal } from 'solid-js'; import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/solid/button-story.with-hooks.ts-4-9.mdx b/docs/snippets/solid/button-story.with-hooks.ts-4-9.mdx new file mode 100644 index 000000000000..60422480efc3 --- /dev/null +++ b/docs/snippets/solid/button-story.with-hooks.ts-4-9.mdx @@ -0,0 +1,39 @@ +```tsx +// Button.stories.ts|tsx + +import type { Meta, StoryObj } from 'storybook-solidjs'; + +import { createSignal } from 'solid-js'; + +import { Button } from './Button'; + +const meta = { + component: Button, +} satisfies Meta<typeof Button>; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + * Example Button story with Solid Hooks. + * See note below related to this example. + */ +const ButtonWithHooks = () => { + // Sets the hooks for both the label and primary props + const [value, setValue] = createSignal('Secondary'); + const [isPrimary, setIsPrimary] = createSignal(false); + + // Sets a click handler to change the label's value + const handleOnChange = () => { + if (!isPrimary()) { + setIsPrimary(true); + setValue('Primary'); + } + }; + return <Button primary={isPrimary()} onClick={handleOnChange} label={value()} />; +}; + +export const Primary = { + render: () => <ButtonWithHooks />, +} satisfies Story; +``` diff --git a/docs/snippets/solid/button-story.with-hooks.ts.mdx b/docs/snippets/solid/button-story.with-hooks.ts.mdx new file mode 100644 index 000000000000..9716bb8f535e --- /dev/null +++ b/docs/snippets/solid/button-story.with-hooks.ts.mdx @@ -0,0 +1,39 @@ +```tsx +// Button.stories.ts|tsx + +import type { Meta, StoryObj } from 'storybook-solidjs'; + +import { createSignal } from 'solid-js'; + +import { Button } from './Button'; + +const meta: Meta<typeof Button> = { + component: Button, +}; + +export default meta; +type Story = StoryObj<typeof Button>; + +/* + * Example Button story with Solid Hooks. + * See note below related to this example. + */ +const ButtonWithHooks = () => { + // Sets the hooks for both the label and primary props + const [value, setValue] = createSignal('Secondary'); + const [isPrimary, setIsPrimary] = createSignal(false); + + // Sets a click handler to change the label's value + const handleOnChange = () => { + if (!isPrimary()) { + setIsPrimary(true); + setValue('Primary'); + } + }; + return <Button primary={isPrimary()} onClick={handleOnChange} label={value()} />; +}; + +export const Primary: Story = { + render: () => <ButtonWithHooks />, +}; +``` diff --git a/docs/snippets/solid/component-story-custom-args-complex.js.mdx b/docs/snippets/solid/component-story-custom-args-complex.js.mdx index a661f5731586..060b5d236878 100644 --- a/docs/snippets/solid/component-story-custom-args-complex.js.mdx +++ b/docs/snippets/solid/component-story-custom-args-complex.js.mdx @@ -5,11 +5,6 @@ import { createSignal, createEffect } from 'solid-js'; import { YourComponent } from './your-component'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -23,9 +18,8 @@ export default { }, }; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory = { diff --git a/docs/snippets/solid/component-story-custom-args-complex.ts-4-9.mdx b/docs/snippets/solid/component-story-custom-args-complex.ts-4-9.mdx index 2e45b37edb8d..58d27e6e230d 100644 --- a/docs/snippets/solid/component-story-custom-args-complex.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-custom-args-complex.ts-4-9.mdx @@ -7,11 +7,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { YourComponent } from './your-component'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', + component: YourComponent, //👇 Creates specific argTypes with options argTypes: { propertyA: { @@ -27,9 +23,8 @@ const meta = { export default meta; type Story = StoryObj<typeof meta>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory: Story = { diff --git a/docs/snippets/solid/component-story-custom-args-complex.ts.mdx b/docs/snippets/solid/component-story-custom-args-complex.ts.mdx index 8ce7252d309b..9d61b897d7ec 100644 --- a/docs/snippets/solid/component-story-custom-args-complex.ts.mdx +++ b/docs/snippets/solid/component-story-custom-args-complex.ts.mdx @@ -7,11 +7,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { YourComponent } from './your-component'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', + component: YourComponent, //👇 Creates specific argTypes with options argTypes: { propertyA: { @@ -27,9 +23,8 @@ const meta: Meta<typeof YourComponent> = { export default meta; type Story = StoryObj<typeof YourComponent>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory: Story = { diff --git a/docs/snippets/solid/component-story-figma-integration.js.mdx b/docs/snippets/solid/component-story-figma-integration.js.mdx index fe959db7d08b..4184c0493454 100644 --- a/docs/snippets/solid/component-story-figma-integration.js.mdx +++ b/docs/snippets/solid/component-story-figma-integration.js.mdx @@ -6,7 +6,6 @@ import { withDesign } from 'storybook-addon-designs'; import { MyComponent } from './MyComponent'; export default { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; diff --git a/docs/snippets/solid/component-story-figma-integration.ts-4-9.mdx b/docs/snippets/solid/component-story-figma-integration.ts-4-9.mdx index 899629ed8a40..c868aeadfb25 100644 --- a/docs/snippets/solid/component-story-figma-integration.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-figma-integration.ts-4-9.mdx @@ -8,7 +8,6 @@ import { withDesign } from 'storybook-addon-designs'; import { MyComponent } from './MyComponent'; const meta = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/solid/component-story-figma-integration.ts.mdx b/docs/snippets/solid/component-story-figma-integration.ts.mdx index e86cf73a6596..e04c4b3b1651 100644 --- a/docs/snippets/solid/component-story-figma-integration.ts.mdx +++ b/docs/snippets/solid/component-story-figma-integration.ts.mdx @@ -8,7 +8,6 @@ import { withDesign } from 'storybook-addon-designs'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; diff --git a/docs/snippets/solid/component-story-static-asset-cdn.js.mdx b/docs/snippets/solid/component-story-static-asset-cdn.js.mdx index cb4f754e5825..d4cec49790ec 100644 --- a/docs/snippets/solid/component-story-static-asset-cdn.js.mdx +++ b/docs/snippets/solid/component-story-static-asset-cdn.js.mdx @@ -1,19 +1,12 @@ ```js // MyComponent.stories.js|jsx +import { MyComponent } from './MyComponent'; + export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ( <img src="https://storybook.js.org/images/placeholders/350x150.png" alt="My CDN placeholder" /> diff --git a/docs/snippets/solid/component-story-static-asset-cdn.ts-4-9.mdx b/docs/snippets/solid/component-story-static-asset-cdn.ts-4-9.mdx index cb4c267785d2..fb20844c5431 100644 --- a/docs/snippets/solid/component-story-static-asset-cdn.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-static-asset-cdn.ts-4-9.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; diff --git a/docs/snippets/solid/component-story-static-asset-cdn.ts.mdx b/docs/snippets/solid/component-story-static-asset-cdn.ts.mdx index c941d44cc415..7e64a0c88e9b 100644 --- a/docs/snippets/solid/component-story-static-asset-cdn.ts.mdx +++ b/docs/snippets/solid/component-story-static-asset-cdn.ts.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; diff --git a/docs/snippets/solid/component-story-static-asset-with-import.js.mdx b/docs/snippets/solid/component-story-static-asset-with-import.js.mdx index 8fcda0fa1343..f3d3ef8dd57b 100644 --- a/docs/snippets/solid/component-story-static-asset-with-import.js.mdx +++ b/docs/snippets/solid/component-story-static-asset-with-import.js.mdx @@ -3,12 +3,10 @@ import imageFile from './static/image.png'; +import { MyComponent } from './MyComponent'; + export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; const image = { @@ -16,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/solid/component-story-static-asset-with-import.ts-4-9.mdx b/docs/snippets/solid/component-story-static-asset-with-import.ts-4-9.mdx index 5a4c73d6e70d..8ed5339b1a33 100644 --- a/docs/snippets/solid/component-story-static-asset-with-import.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-static-asset-with-import.ts-4-9.mdx @@ -8,11 +8,7 @@ import imageFile from './static/image.png'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; @@ -23,11 +19,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/solid/component-story-static-asset-with-import.ts.mdx b/docs/snippets/solid/component-story-static-asset-with-import.ts.mdx index 5456329c8832..08ee67af80d8 100644 --- a/docs/snippets/solid/component-story-static-asset-with-import.ts.mdx +++ b/docs/snippets/solid/component-story-static-asset-with-import.ts.mdx @@ -8,11 +8,7 @@ import imageFile from './static/image.png'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; @@ -23,11 +19,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => <img src={image.src} alt={image.alt} />, }; diff --git a/docs/snippets/solid/component-story-static-asset-without-import.js.mdx b/docs/snippets/solid/component-story-static-asset-without-import.js.mdx index 9fac78b10638..4dcb30e21c0b 100644 --- a/docs/snippets/solid/component-story-static-asset-without-import.js.mdx +++ b/docs/snippets/solid/component-story-static-asset-without-import.js.mdx @@ -1,12 +1,10 @@ ```js // MyComponent.stories.js|jsx +import { MyComponent } from './MyComponent'; + export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; // Assume image.png is located in the "public" directory. diff --git a/docs/snippets/solid/component-story-static-asset-without-import.ts-4-9.mdx b/docs/snippets/solid/component-story-static-asset-without-import.ts-4-9.mdx index 87531563b84d..dc246f730bd7 100644 --- a/docs/snippets/solid/component-story-static-asset-without-import.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-static-asset-without-import.ts-4-9.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; diff --git a/docs/snippets/solid/component-story-static-asset-without-import.ts.mdx b/docs/snippets/solid/component-story-static-asset-without-import.ts.mdx index 7672b26191f3..e1e89ae9dd77 100644 --- a/docs/snippets/solid/component-story-static-asset-without-import.ts.mdx +++ b/docs/snippets/solid/component-story-static-asset-without-import.ts.mdx @@ -6,11 +6,7 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; export default meta; diff --git a/docs/snippets/solid/component-story-with-accessibility.js.mdx b/docs/snippets/solid/component-story-with-accessibility.js.mdx index c2e7963b0d97..31766b3e6b15 100644 --- a/docs/snippets/solid/component-story-with-accessibility.js.mdx +++ b/docs/snippets/solid/component-story-with-accessibility.js.mdx @@ -4,10 +4,6 @@ import { Button } from './Button'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/solid/component-story-with-accessibility.ts-4-9.mdx b/docs/snippets/solid/component-story-with-accessibility.ts-4-9.mdx index d0329d5a4c4f..a652ea8ec9a8 100644 --- a/docs/snippets/solid/component-story-with-accessibility.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-with-accessibility.ts-4-9.mdx @@ -6,10 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/solid/component-story-with-accessibility.ts.mdx b/docs/snippets/solid/component-story-with-accessibility.ts.mdx index ba07c69bf7c1..a72236c178f3 100644 --- a/docs/snippets/solid/component-story-with-accessibility.ts.mdx +++ b/docs/snippets/solid/component-story-with-accessibility.ts.mdx @@ -6,10 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Button } from './Button'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/solid/component-story-with-custom-render-function.js.mdx b/docs/snippets/solid/component-story-with-custom-render-function.js.mdx index 1b0cf09e8d74..462b847c87b3 100644 --- a/docs/snippets/solid/component-story-with-custom-render-function.js.mdx +++ b/docs/snippets/solid/component-story-with-custom-render-function.js.mdx @@ -1,17 +1,11 @@ ```js // MyComponent.stories.js|jsx -import solid from 'solid'; - import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/solid/component-story-with-custom-render-function.ts-4-9.mdx b/docs/snippets/solid/component-story-with-custom-render-function.ts-4-9.mdx index 88687e8b3345..0658a83ae528 100644 --- a/docs/snippets/solid/component-story-with-custom-render-function.ts-4-9.mdx +++ b/docs/snippets/solid/component-story-with-custom-render-function.ts-4-9.mdx @@ -8,11 +8,6 @@ import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/solid/component-story-with-custom-render-function.ts.mdx b/docs/snippets/solid/component-story-with-custom-render-function.ts.mdx index f085cbbd6fbb..f89d8b3966c5 100644 --- a/docs/snippets/solid/component-story-with-custom-render-function.ts.mdx +++ b/docs/snippets/solid/component-story-with-custom-render-function.ts.mdx @@ -8,11 +8,6 @@ import { Layout } from './Layout'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/solid/document-screen-fetch.js.mdx b/docs/snippets/solid/document-screen-fetch.js.mdx index 17c028587220..a7f5e5b0f3b9 100644 --- a/docs/snippets/solid/document-screen-fetch.js.mdx +++ b/docs/snippets/solid/document-screen-fetch.js.mdx @@ -1,5 +1,5 @@ ```js -// YourPage.js|jsx|ts|tsx +// YourPage.js|jsx|mjs|ts|tsx import { createSignal, Match, Switch } from 'solid-js'; diff --git a/docs/snippets/solid/histogram-story.js.mdx b/docs/snippets/solid/histogram-story.js.mdx index 7b3c56747102..a84781630fc6 100644 --- a/docs/snippets/solid/histogram-story.js.mdx +++ b/docs/snippets/solid/histogram-story.js.mdx @@ -4,11 +4,6 @@ import { Histogram } from './Histogram'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/solid/histogram-story.ts-4-9.mdx b/docs/snippets/solid/histogram-story.ts-4-9.mdx index d7e9d23470fd..ea8ff6bcf0fb 100644 --- a/docs/snippets/solid/histogram-story.ts-4-9.mdx +++ b/docs/snippets/solid/histogram-story.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Histogram } from './Histogram'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, } satisfies Meta<typeof Histogram>; diff --git a/docs/snippets/solid/histogram-story.ts.mdx b/docs/snippets/solid/histogram-story.ts.mdx index 118e6143e87f..a07c6e473d1d 100644 --- a/docs/snippets/solid/histogram-story.ts.mdx +++ b/docs/snippets/solid/histogram-story.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { Histogram } from './Histogram'; const meta: Meta<typeof Histogram> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/solid/list-story-expanded.js.mdx b/docs/snippets/solid/list-story-expanded.js.mdx index 62dfad44b781..2c231a3b3a2e 100644 --- a/docs/snippets/solid/list-story-expanded.js.mdx +++ b/docs/snippets/solid/list-story-expanded.js.mdx @@ -5,11 +5,6 @@ import { List } from './List'; import { ListItem } from './ListItem'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/list-story-expanded.ts-4-9.mdx b/docs/snippets/solid/list-story-expanded.ts-4-9.mdx index e38a7d348551..7a2d454ed710 100644 --- a/docs/snippets/solid/list-story-expanded.ts-4-9.mdx +++ b/docs/snippets/solid/list-story-expanded.ts-4-9.mdx @@ -7,11 +7,6 @@ import { List } from './List'; import { ListItem } from './ListItem'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/solid/list-story-expanded.ts.mdx b/docs/snippets/solid/list-story-expanded.ts.mdx index 3da14debe5bc..98a5230fc7f4 100644 --- a/docs/snippets/solid/list-story-expanded.ts.mdx +++ b/docs/snippets/solid/list-story-expanded.ts.mdx @@ -7,11 +7,6 @@ import { List } from './List'; import { ListItem } from './ListItem'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/list-story-reuse-data.js.mdx b/docs/snippets/solid/list-story-reuse-data.js.mdx index a163cd935883..e9e68346f46f 100644 --- a/docs/snippets/solid/list-story-reuse-data.js.mdx +++ b/docs/snippets/solid/list-story-reuse-data.js.mdx @@ -8,11 +8,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/list-story-reuse-data.ts-4-9.mdx b/docs/snippets/solid/list-story-reuse-data.ts-4-9.mdx index cc88cf8ea45f..68ac816d433f 100644 --- a/docs/snippets/solid/list-story-reuse-data.ts-4-9.mdx +++ b/docs/snippets/solid/list-story-reuse-data.ts-4-9.mdx @@ -10,11 +10,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/solid/list-story-reuse-data.ts.mdx b/docs/snippets/solid/list-story-reuse-data.ts.mdx index 4d3b52291480..a1c94ffbc954 100644 --- a/docs/snippets/solid/list-story-reuse-data.ts.mdx +++ b/docs/snippets/solid/list-story-reuse-data.ts.mdx @@ -10,11 +10,6 @@ import { ListItem } from './ListItem'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/list-story-starter.js.mdx b/docs/snippets/solid/list-story-starter.js.mdx index 6abf097599dc..b6443261d408 100644 --- a/docs/snippets/solid/list-story-starter.js.mdx +++ b/docs/snippets/solid/list-story-starter.js.mdx @@ -4,11 +4,6 @@ import { List } from './List'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/list-story-starter.ts-4-9.mdx b/docs/snippets/solid/list-story-starter.ts-4-9.mdx index 2262fd761860..9ed712dced70 100644 --- a/docs/snippets/solid/list-story-starter.ts-4-9.mdx +++ b/docs/snippets/solid/list-story-starter.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { List } from './List'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/solid/list-story-starter.ts.mdx b/docs/snippets/solid/list-story-starter.ts.mdx index ff4ba5ad8f5a..3f9c89b749d4 100644 --- a/docs/snippets/solid/list-story-starter.ts.mdx +++ b/docs/snippets/solid/list-story-starter.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { List } from './List'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/solid/loader-story.js.mdx b/docs/snippets/solid/loader-story.js.mdx index ad4377f5e550..d45ba1d6478e 100644 --- a/docs/snippets/solid/loader-story.js.mdx +++ b/docs/snippets/solid/loader-story.js.mdx @@ -3,12 +3,12 @@ import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/solid/api/csf + * to learn how to use render functions. + */ export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader' component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, }; @@ -16,9 +16,7 @@ export default { export const Primary = { loaders: [ async () => ({ - todo: await ( - await fetch('https://jsonplaceholder.typicode.com/todos/1') - ).json(), + todo: await (await fetch('https://jsonplaceholder.typicode.com/todos/1')).json(), }), ], }; diff --git a/docs/snippets/solid/loader-story.ts-4-9.mdx b/docs/snippets/solid/loader-story.ts-4-9.mdx index c29990961068..3114872f47b9 100644 --- a/docs/snippets/solid/loader-story.ts-4-9.mdx +++ b/docs/snippets/solid/loader-story.ts-4-9.mdx @@ -5,12 +5,12 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/solid/api/csf + * to learn how to use render functions. + */ const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, } satisfies Meta<typeof TodoItem>; diff --git a/docs/snippets/solid/loader-story.ts.mdx b/docs/snippets/solid/loader-story.ts.mdx index f582fc1e405c..bfa55ee360a6 100644 --- a/docs/snippets/solid/loader-story.ts.mdx +++ b/docs/snippets/solid/loader-story.ts.mdx @@ -5,12 +5,12 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { TodoItem } from './TodoItem'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/solid/api/csf + * to learn how to use render functions. + */ const meta: Meta<typeof TodoItem> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, render: (args, { loaded: { todo } }) => <TodoItem {...args} {...todo} />, }; diff --git a/docs/snippets/solid/login-form-with-play-function.js.mdx b/docs/snippets/solid/login-form-with-play-function.js.mdx index 96b63bf36ae8..6f14787ff12a 100644 --- a/docs/snippets/solid/login-form-with-play-function.js.mdx +++ b/docs/snippets/solid/login-form-with-play-function.js.mdx @@ -8,11 +8,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/solid/login-form-with-play-function.ts-4-9.mdx b/docs/snippets/solid/login-form-with-play-function.ts-4-9.mdx index 6869e1adc3ed..0b1a0923d5a2 100644 --- a/docs/snippets/solid/login-form-with-play-function.ts-4-9.mdx +++ b/docs/snippets/solid/login-form-with-play-function.ts-4-9.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, } satisfies Meta<typeof LoginForm>; diff --git a/docs/snippets/solid/login-form-with-play-function.ts.mdx b/docs/snippets/solid/login-form-with-play-function.ts.mdx index 3501b373e44e..cdbc20f6269b 100644 --- a/docs/snippets/solid/login-form-with-play-function.ts.mdx +++ b/docs/snippets/solid/login-form-with-play-function.ts.mdx @@ -10,11 +10,6 @@ import { expect } from '@storybook/jest'; import { LoginForm } from './LoginForm'; const meta: Meta<typeof LoginForm> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/solid/mock-context-container.js.mdx b/docs/snippets/solid/mock-context-container.js.mdx index 379488e50b16..2bfc54cb84fe 100644 --- a/docs/snippets/solid/mock-context-container.js.mdx +++ b/docs/snippets/solid/mock-context-container.js.mdx @@ -8,11 +8,6 @@ import { UserPosts } from './UserPosts'; import { Normal as UserFriendsNormal } from './UserFriends.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ProfilePage', component: ProfilePage, }; diff --git a/docs/snippets/solid/my-component-story-basic-and-props.js.mdx b/docs/snippets/solid/my-component-story-basic-and-props.js.mdx index a3e499390cbe..c1e3bc64d80f 100644 --- a/docs/snippets/solid/my-component-story-basic-and-props.js.mdx +++ b/docs/snippets/solid/my-component-story-basic-and-props.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/solid/my-component-story-basic-and-props.ts-4-9.mdx b/docs/snippets/solid/my-component-story-basic-and-props.ts-4-9.mdx index da1756ac690d..61d3a9876214 100644 --- a/docs/snippets/solid/my-component-story-basic-and-props.ts-4-9.mdx +++ b/docs/snippets/solid/my-component-story-basic-and-props.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/solid/my-component-story-basic-and-props.ts.mdx b/docs/snippets/solid/my-component-story-basic-and-props.ts.mdx index 85081b8676be..51f3f38c0593 100644 --- a/docs/snippets/solid/my-component-story-basic-and-props.ts.mdx +++ b/docs/snippets/solid/my-component-story-basic-and-props.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/solid/my-component-story-configure-viewports.js.mdx b/docs/snippets/solid/my-component-story-configure-viewports.js.mdx index eefefbf7ca58..3034db56937c 100644 --- a/docs/snippets/solid/my-component-story-configure-viewports.js.mdx +++ b/docs/snippets/solid/my-component-story-configure-viewports.js.mdx @@ -6,11 +6,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/solid/my-component-story-configure-viewports.ts-4-9.mdx b/docs/snippets/solid/my-component-story-configure-viewports.ts-4-9.mdx index 10406d9b5ac8..abcc10710baa 100644 --- a/docs/snippets/solid/my-component-story-configure-viewports.ts-4-9.mdx +++ b/docs/snippets/solid/my-component-story-configure-viewports.ts-4-9.mdx @@ -8,11 +8,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/solid/my-component-story-configure-viewports.ts.mdx b/docs/snippets/solid/my-component-story-configure-viewports.ts.mdx index 85b926b87d7e..5a0ca3a80ad1 100644 --- a/docs/snippets/solid/my-component-story-configure-viewports.ts.mdx +++ b/docs/snippets/solid/my-component-story-configure-viewports.ts.mdx @@ -8,11 +8,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon diff --git a/docs/snippets/solid/my-component-story-use-globaltype.js.mdx b/docs/snippets/solid/my-component-story-use-globaltype.js.mdx index ab68f6bdc72e..c8d0f82b2c54 100644 --- a/docs/snippets/solid/my-component-story-use-globaltype.js.mdx +++ b/docs/snippets/solid/my-component-story-use-globaltype.js.mdx @@ -4,11 +4,6 @@ import { MyComponent } from './MyComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -27,11 +22,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/solid/my-component-story-use-globaltype.ts-4-9.mdx b/docs/snippets/solid/my-component-story-use-globaltype.ts-4-9.mdx index 95dc65e7d853..2e41b4632f2b 100644 --- a/docs/snippets/solid/my-component-story-use-globaltype.ts-4-9.mdx +++ b/docs/snippets/solid/my-component-story-use-globaltype.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; @@ -32,11 +27,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/solid/my-component-story-use-globaltype.ts.mdx b/docs/snippets/solid/my-component-story-use-globaltype.ts.mdx index 0351a5fa34b6..0eacbdd675b0 100644 --- a/docs/snippets/solid/my-component-story-use-globaltype.ts.mdx +++ b/docs/snippets/solid/my-component-story-use-globaltype.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from 'storybook-solidjs'; import { MyComponent } from './MyComponent'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -32,11 +27,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/solid/my-component-story-with-nonstory.js.mdx b/docs/snippets/solid/my-component-story-with-nonstory.js.mdx index c90bff2d85c7..51bbcdc7bc1a 100644 --- a/docs/snippets/solid/my-component-story-with-nonstory.js.mdx +++ b/docs/snippets/solid/my-component-story-with-nonstory.js.mdx @@ -6,11 +6,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/solid/my-component-story-with-nonstory.ts-4-9.mdx b/docs/snippets/solid/my-component-story-with-nonstory.ts-4-9.mdx index db72f00d0431..abadda6da7b3 100644 --- a/docs/snippets/solid/my-component-story-with-nonstory.ts-4-9.mdx +++ b/docs/snippets/solid/my-component-story-with-nonstory.ts-4-9.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/solid/my-component-story-with-nonstory.ts.mdx b/docs/snippets/solid/my-component-story-with-nonstory.ts.mdx index 343a920d2185..91cffadf8ed2 100644 --- a/docs/snippets/solid/my-component-story-with-nonstory.ts.mdx +++ b/docs/snippets/solid/my-component-story-with-nonstory.ts.mdx @@ -8,11 +8,6 @@ import { MyComponent } from './MyComponent'; import someData from './data.json'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/solid/my-component-with-env-variables.js.mdx b/docs/snippets/solid/my-component-with-env-variables.js.mdx deleted file mode 100644 index ba861114bb8f..000000000000 --- a/docs/snippets/solid/my-component-with-env-variables.js.mdx +++ /dev/null @@ -1,20 +0,0 @@ -```js -// MyComponent.stories.js|jsx - -import { MyComponent } from './MyComponent'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -}; - -export const ExampleStory = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/solid/my-component-with-env-variables.ts-4-9.mdx b/docs/snippets/solid/my-component-with-env-variables.ts-4-9.mdx deleted file mode 100644 index aa3f1acf0cbc..000000000000 --- a/docs/snippets/solid/my-component-with-env-variables.ts-4-9.mdx +++ /dev/null @@ -1,25 +0,0 @@ -```tsx -// MyComponent.stories.ts| tsx - -import type { Meta, StoryObj } from 'storybook-solidjs'; - -import { MyComponent } from './MyComponent'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -} satisfies Meta<typeof MyComponent>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const ExampleStory: Story = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/solid/my-component-with-env-variables.ts.mdx b/docs/snippets/solid/my-component-with-env-variables.ts.mdx deleted file mode 100644 index 4c2a5655db91..000000000000 --- a/docs/snippets/solid/my-component-with-env-variables.ts.mdx +++ /dev/null @@ -1,25 +0,0 @@ -```tsx -// MyComponent.stories.ts| tsx - -import type { Meta, StoryObj } from 'storybook-solidjs'; - -import { MyComponent } from './MyComponent'; - -const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -}; - -export default meta; -type Story = StoryObj<typeof MyComponent>; - -export const ExampleStory: Story = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/solid/page-story-slots.js.mdx b/docs/snippets/solid/page-story-slots.js.mdx index 1213055be823..18b06c59a907 100644 --- a/docs/snippets/solid/page-story-slots.js.mdx +++ b/docs/snippets/solid/page-story-slots.js.mdx @@ -4,25 +4,15 @@ import { Page } from './Page'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ -export const CustomFooter = { - render: (args) => ( + render: ({ footer, ...args }) => ( <Page {...args}> - <footer>{args.footer}</footer> + <footer>{footer}</footer> </Page> ), +}; + +export const CustomFooter = { args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/solid/page-story-slots.ts-4-9.mdx b/docs/snippets/solid/page-story-slots.ts-4-9.mdx index 9e10eeff49ea..83431768d59e 100644 --- a/docs/snippets/solid/page-story-slots.ts-4-9.mdx +++ b/docs/snippets/solid/page-story-slots.ts-4-9.mdx @@ -1,30 +1,28 @@ ```tsx // Page.stories.ts|tsx +import type { ComponentProps } from 'solid-js'; import type { Meta, StoryObj } from 'storybook-solidjs'; import { Page } from './Page'; +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; + const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -} satisfies Meta<typeof Page>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const CustomFooter: Story = { - render: (args) => ( + render: ({ footer, ...args }) => ( <Page {...args}> - <footer>{args.footer}</footer> + <footer>{footer}</footer> </Page> ), +} satisfies Meta<PagePropsAndCustomArgs>; +export default meta; + +type Story = StoryObj<typeof meta>; + +export const CustomFooter = { args: { footer: 'Built with Storybook', }, -}; +} satisfies Story; ``` diff --git a/docs/snippets/solid/page-story-slots.ts.mdx b/docs/snippets/solid/page-story-slots.ts.mdx index 252a0bde3e73..c372bf6e38d7 100644 --- a/docs/snippets/solid/page-story-slots.ts.mdx +++ b/docs/snippets/solid/page-story-slots.ts.mdx @@ -1,28 +1,26 @@ ```tsx // Page.stories.ts|tsx +import type { ComponentProps } from 'solid-js'; import type { Meta, StoryObj } from 'storybook-solidjs'; import { Page } from './Page'; -const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; + +const meta: Meta<PagePropsAndCustomArgs> = { component: Page, + render: ({ footer, ...args }) => ( + <Page {...args}> + <footer>{footer}</footer> + </Page> + ), }; - export default meta; -type Story = StoryObj<typeof Page>; + +type Story = StoryObj<PagePropsAndCustomArgs>; export const CustomFooter: Story = { - render: (args) => ( - <Page {...args}> - <footer>{args.footer}</footer> - </Page> - ), args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/solid/page-story.js.mdx b/docs/snippets/solid/page-story.js.mdx index 7745fdb789e2..49c2f8297eb9 100644 --- a/docs/snippets/solid/page-story.js.mdx +++ b/docs/snippets/solid/page-story.js.mdx @@ -7,11 +7,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/solid/page-story.ts-4-9.mdx b/docs/snippets/solid/page-story.ts-4-9.mdx index 56ca8a81dd9d..f1fb4ae8a3f8 100644 --- a/docs/snippets/solid/page-story.ts-4-9.mdx +++ b/docs/snippets/solid/page-story.ts-4-9.mdx @@ -9,11 +9,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, } satisfies Meta<typeof Page>; diff --git a/docs/snippets/solid/page-story.ts.mdx b/docs/snippets/solid/page-story.ts.mdx index 1f2ed6134904..c1ae6ab7c75e 100644 --- a/docs/snippets/solid/page-story.ts.mdx +++ b/docs/snippets/solid/page-story.ts.mdx @@ -9,11 +9,6 @@ import { Page } from './Page'; import * as HeaderStories from './Header.stories'; const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/solid/table-story-fully-customize-controls.js.mdx b/docs/snippets/solid/table-story-fully-customize-controls.js.mdx deleted file mode 100644 index d74266156ad5..000000000000 --- a/docs/snippets/solid/table-story-fully-customize-controls.js.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```js -// Table.stories.js|jsx - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/solid/api/csf - * to learn how to use render functions. - */ -export const TableStory = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/solid/table-story-fully-customize-controls.ts-4-9.mdx b/docs/snippets/solid/table-story-fully-customize-controls.ts-4-9.mdx deleted file mode 100644 index e18ccfe8682c..000000000000 --- a/docs/snippets/solid/table-story-fully-customize-controls.ts-4-9.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```tsx -// Table.stories.ts|tsx - -import type { Meta, StoryObj } from 'storybook-solidjs'; - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -} satisfies Meta<typeof Table>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const TableStory: Story = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/solid/table-story-fully-customize-controls.ts.mdx b/docs/snippets/solid/table-story-fully-customize-controls.ts.mdx deleted file mode 100644 index 2c15c85ec0e2..000000000000 --- a/docs/snippets/solid/table-story-fully-customize-controls.ts.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```ts -// Table.stories.ts|tsx - -import type { Meta, StoryObj } from 'storybook-solidjs'; - -import { Table } from './Table'; -import { TD } from './TableDataCell'; -import { TR } from './TableRow'; - -const meta: Meta<typeof Table> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -export default meta; -type Story = StoryObj<typeof Table>; - -export const TableStory: Story = { - render: ({ data, ...args }) => ( - <Table {...args}> - {data.map((row) => ( - <TR> - {row.map((item) => ( - <TD>{item}</TD> - ))} - </TR> - ))} - </Table> - ), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/solid/your-component-with-decorator.js.mdx b/docs/snippets/solid/your-component-with-decorator.js.mdx index e6610f6679e2..e75528448ad2 100644 --- a/docs/snippets/solid/your-component-with-decorator.js.mdx +++ b/docs/snippets/solid/your-component-with-decorator.js.mdx @@ -4,11 +4,6 @@ import { YourComponent } from './YourComponent'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/your-component-with-decorator.story-function-js.js.mdx b/docs/snippets/solid/your-component-with-decorator.story-function-js.js.mdx index ba2047cecdd3..333a73e2f48c 100644 --- a/docs/snippets/solid/your-component-with-decorator.story-function-js.js.mdx +++ b/docs/snippets/solid/your-component-with-decorator.story-function-js.js.mdx @@ -5,13 +5,7 @@ import { YourComponent } from './YourComponent'; // Replacing the <Story/> element with a Story function is also a good way of writing decorators. // Useful to prevent the full remount of the component's story. - export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [(Story) => <div style={{ margin: '3em' }}>{Story()}</div>], }; diff --git a/docs/snippets/solid/your-component-with-decorator.story-function-ts.ts.mdx b/docs/snippets/solid/your-component-with-decorator.story-function-ts.ts.mdx index ff08d940fcf2..bc3c29eb2f07 100644 --- a/docs/snippets/solid/your-component-with-decorator.story-function-ts.ts.mdx +++ b/docs/snippets/solid/your-component-with-decorator.story-function-ts.ts.mdx @@ -8,11 +8,6 @@ import { YourComponent } from './YourComponent'; // Replacing the <Story/> element with a Story function is also a good way of writing decorators. // Useful to prevent the full remount of the component's story. const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [(Story) => <div style={{ margin: '3em' }}>{Story()}</div>], }; diff --git a/docs/snippets/solid/your-component-with-decorator.ts-4-9.mdx b/docs/snippets/solid/your-component-with-decorator.ts-4-9.mdx index e759310c5a0a..233731f5c9c8 100644 --- a/docs/snippets/solid/your-component-with-decorator.ts-4-9.mdx +++ b/docs/snippets/solid/your-component-with-decorator.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { YourComponent } from './YourComponent'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/your-component-with-decorator.ts.mdx b/docs/snippets/solid/your-component-with-decorator.ts.mdx index 5ff32a6db123..dc07ea7f9560 100644 --- a/docs/snippets/solid/your-component-with-decorator.ts.mdx +++ b/docs/snippets/solid/your-component-with-decorator.ts.mdx @@ -6,11 +6,6 @@ import type { Meta } from 'storybook-solidjs'; import { YourComponent } from './YourComponent'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [ (Story) => ( diff --git a/docs/snippets/solid/your-component.js.mdx b/docs/snippets/solid/your-component.js.mdx index e73ee1aca727..3fc6d4fd7682 100644 --- a/docs/snippets/solid/your-component.js.mdx +++ b/docs/snippets/solid/your-component.js.mdx @@ -5,11 +5,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/solid/your-component.ts-4-9.mdx b/docs/snippets/solid/your-component.ts-4-9.mdx index 0024158f6381..d5fc4b2febe1 100644 --- a/docs/snippets/solid/your-component.ts-4-9.mdx +++ b/docs/snippets/solid/your-component.ts-4-9.mdx @@ -7,11 +7,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/solid/your-component.ts.mdx b/docs/snippets/solid/your-component.ts.mdx index c50b8229794d..a8b836aab991 100644 --- a/docs/snippets/solid/your-component.ts.mdx +++ b/docs/snippets/solid/your-component.ts.mdx @@ -7,11 +7,6 @@ import { YourComponent } from './YourComponent'; //👇 This default export determines where your story goes in the story list const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/solid/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/svelte/button-group-story.js.mdx b/docs/snippets/svelte/button-group-story.js.mdx index f3b2463db7d4..b7172bf69332 100644 --- a/docs/snippets/svelte/button-group-story.js.mdx +++ b/docs/snippets/svelte/button-group-story.js.mdx @@ -7,11 +7,6 @@ import ButtonGroup from '../ButtonGroup.svelte'; import * as ButtonStories from './Button.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/svelte/button-story-auto-docs.js.mdx b/docs/snippets/svelte/button-story-auto-docs.js.mdx index 8608c9ce1eba..013999d572dd 100644 --- a/docs/snippets/svelte/button-story-auto-docs.js.mdx +++ b/docs/snippets/svelte/button-story-auto-docs.js.mdx @@ -4,7 +4,6 @@ import Button from './Button.svelte'; export default { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], @@ -13,11 +12,6 @@ export default { }, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const Primary = { render: (args) => ({ Component: Button, diff --git a/docs/snippets/svelte/button-story-click-handler-args.js.mdx b/docs/snippets/svelte/button-story-click-handler-args.js.mdx index b0b3fda69e33..240d178f480c 100644 --- a/docs/snippets/svelte/button-story-click-handler-args.js.mdx +++ b/docs/snippets/svelte/button-story-click-handler-args.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.svelte'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-click-handler.js.mdx b/docs/snippets/svelte/button-story-click-handler.js.mdx index 7cb1cae6e823..ff58c6e44a2c 100644 --- a/docs/snippets/svelte/button-story-click-handler.js.mdx +++ b/docs/snippets/svelte/button-story-click-handler.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.svelte'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-component-args-primary.js.mdx b/docs/snippets/svelte/button-story-component-args-primary.js.mdx index 7ad921bd7560..94e036a09ee3 100644 --- a/docs/snippets/svelte/button-story-component-args-primary.js.mdx +++ b/docs/snippets/svelte/button-story-component-args-primary.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/svelte/button-story-component-decorator.js.mdx b/docs/snippets/svelte/button-story-component-decorator.js.mdx index 95a3c4816669..75984c49a1ea 100644 --- a/docs/snippets/svelte/button-story-component-decorator.js.mdx +++ b/docs/snippets/svelte/button-story-component-decorator.js.mdx @@ -5,11 +5,6 @@ import Button from './Button.svelte'; import MarginDecorator from './MarginDecorator.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [() => MarginDecorator], }; diff --git a/docs/snippets/svelte/button-story-decorator.js.mdx b/docs/snippets/svelte/button-story-decorator.js.mdx index 10897918790a..255abb8b4989 100644 --- a/docs/snippets/svelte/button-story-decorator.js.mdx +++ b/docs/snippets/svelte/button-story-decorator.js.mdx @@ -5,11 +5,6 @@ import Button from './Button.svelte'; import MarginDecorator from './MarginDecorator.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-default-export-with-component.js.mdx b/docs/snippets/svelte/button-story-default-export-with-component.js.mdx index 0ed0bade5cda..89a10479f2ec 100644 --- a/docs/snippets/svelte/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/svelte/button-story-default-export-with-component.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; ``` diff --git a/docs/snippets/svelte/button-story-rename-story.js.mdx b/docs/snippets/svelte/button-story-rename-story.js.mdx index 4e6d4312cfd9..436d2d3f1755 100644 --- a/docs/snippets/svelte/button-story-rename-story.js.mdx +++ b/docs/snippets/svelte/button-story-rename-story.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-using-args.js.mdx b/docs/snippets/svelte/button-story-using-args.js.mdx index 61c3d375e6e4..b5a1ed944f9c 100644 --- a/docs/snippets/svelte/button-story-using-args.js.mdx +++ b/docs/snippets/svelte/button-story-using-args.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-with-args.js.mdx b/docs/snippets/svelte/button-story-with-args.js.mdx index b34bda3b8c2b..5334391185cd 100644 --- a/docs/snippets/svelte/button-story-with-args.js.mdx +++ b/docs/snippets/svelte/button-story-with-args.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story-with-args.ts-4-9.mdx b/docs/snippets/svelte/button-story-with-args.ts-4-9.mdx new file mode 100644 index 000000000000..6d780e370dfa --- /dev/null +++ b/docs/snippets/svelte/button-story-with-args.ts-4-9.mdx @@ -0,0 +1,30 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Button from './Button.svelte'; + +const meta = { + component: Button, +} satisfies Meta<typeof Button>; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Primary: Story = { + render: (args) => ({ + Component: Button, + props: args, + }), + args: { + primary: true, + label: 'Button', + }, +}; +``` diff --git a/docs/snippets/svelte/button-story-with-args.ts.mdx b/docs/snippets/svelte/button-story-with-args.ts.mdx new file mode 100644 index 000000000000..cee784e8c3c0 --- /dev/null +++ b/docs/snippets/svelte/button-story-with-args.ts.mdx @@ -0,0 +1,30 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Button from './Button.svelte'; + +const meta: Meta<typeof Button> = { + component: Button, +}; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Primary: Story = { + render: (args) => ({ + Component: Button, + props: args, + }), + args: { + primary: true, + label: 'Button', + }, +}; +``` diff --git a/docs/snippets/svelte/button-story-with-blue-args.js.mdx b/docs/snippets/svelte/button-story-with-blue-args.js.mdx index 138041775836..f2cb754f595b 100644 --- a/docs/snippets/svelte/button-story-with-blue-args.js.mdx +++ b/docs/snippets/svelte/button-story-with-blue-args.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/svelte/button-story-with-emojis.js.mdx b/docs/snippets/svelte/button-story-with-emojis.js.mdx index c7f8ed4d7497..72f2f225faa7 100644 --- a/docs/snippets/svelte/button-story-with-emojis.js.mdx +++ b/docs/snippets/svelte/button-story-with-emojis.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story.js.mdx b/docs/snippets/svelte/button-story.js.mdx index 955ba0848584..dfc35a4009b5 100644 --- a/docs/snippets/svelte/button-story.js.mdx +++ b/docs/snippets/svelte/button-story.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/svelte/button-story.ts-4-9.mdx b/docs/snippets/svelte/button-story.ts-4-9.mdx new file mode 100644 index 000000000000..4553efbb1fa0 --- /dev/null +++ b/docs/snippets/svelte/button-story.ts-4-9.mdx @@ -0,0 +1,29 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Button from './Button.svelte'; + +const meta = { + component: Button, +} satisfies Meta<typeof Button>; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Primary: Story = { + render: () => ({ + Component: Button, + props: { + primary: true, + label: 'Button', + }, + }), +}; +``` diff --git a/docs/snippets/svelte/button-story.ts.mdx b/docs/snippets/svelte/button-story.ts.mdx new file mode 100644 index 000000000000..71fd009b30f5 --- /dev/null +++ b/docs/snippets/svelte/button-story.ts.mdx @@ -0,0 +1,29 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Button from './Button.svelte'; + +const meta: Meta<typeof Button> = { + component: Button, +}; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Primary: Story = { + render: () => ({ + Component: Button, + props: { + primary: true, + label: 'Button', + }, + }), +}; +``` diff --git a/docs/snippets/svelte/component-story-custom-args-complex.js.mdx b/docs/snippets/svelte/component-story-custom-args-complex.js.mdx index 7282db347809..c596e646c196 100644 --- a/docs/snippets/svelte/component-story-custom-args-complex.js.mdx +++ b/docs/snippets/svelte/component-story-custom-args-complex.js.mdx @@ -4,11 +4,6 @@ import YourComponent from './YourComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes argTypes: { @@ -22,16 +17,10 @@ export default { }, }; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const ExampleStory = { render: ({ propertyA, propertyB }) => { //👇 Assigns the function result to a variable diff --git a/docs/snippets/svelte/component-story-figma-integration.js.mdx b/docs/snippets/svelte/component-story-figma-integration.js.mdx index ce7858d7d81f..c7c65ed0e8f3 100644 --- a/docs/snippets/svelte/component-story-figma-integration.js.mdx +++ b/docs/snippets/svelte/component-story-figma-integration.js.mdx @@ -7,16 +7,10 @@ import MyComponent from './MyComponent.svelte'; // More on default export: https://storybook.js.org/docs/svelte/writing-stories/introduction#default-export export default { - title: 'FigmaExample', component: { MyComponent }, decorators: [withDesign], }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const Example = { render: () => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/component-story-static-asset-cdn.js.mdx b/docs/snippets/svelte/component-story-static-asset-cdn.js.mdx index 7f3dcc0054c0..08dc3c0289a6 100644 --- a/docs/snippets/svelte/component-story-static-asset-cdn.js.mdx +++ b/docs/snippets/svelte/component-story-static-asset-cdn.js.mdx @@ -4,19 +4,9 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/component-story-static-asset-with-import.js.mdx b/docs/snippets/svelte/component-story-static-asset-with-import.js.mdx index 59e455dc8b4d..54db828925b6 100644 --- a/docs/snippets/svelte/component-story-static-asset-with-import.js.mdx +++ b/docs/snippets/svelte/component-story-static-asset-with-import.js.mdx @@ -6,11 +6,6 @@ import MyComponent from './MyComponent.svelte'; import imageFile from './static/image.png'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -19,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/component-story-static-asset-without-import.js.mdx b/docs/snippets/svelte/component-story-static-asset-without-import.js.mdx index a29fddcfed9e..128d2f0166b5 100644 --- a/docs/snippets/svelte/component-story-static-asset-without-import.js.mdx +++ b/docs/snippets/svelte/component-story-static-asset-without-import.js.mdx @@ -4,24 +4,15 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ +// Assume image.png is located in the "public" directory. export const WithAnImage = { render: () => ({ Component: MyComponent, props: { - src: '/image.png', //👈 Assume image.png is located in the "public" directory. + src: '/image.png', alt: 'my image', }, }), diff --git a/docs/snippets/svelte/component-story-with-accessibility.js.mdx b/docs/snippets/svelte/component-story-with-accessibility.js.mdx index e8b1802e596d..50ec0a686df4 100644 --- a/docs/snippets/svelte/component-story-with-accessibility.js.mdx +++ b/docs/snippets/svelte/component-story-with-accessibility.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/svelte/documentscreen-story-msw-graphql-query.js.mdx b/docs/snippets/svelte/documentscreen-story-msw-graphql-query.js.mdx index 2e709c353bb9..7f44a194d27d 100644 --- a/docs/snippets/svelte/documentscreen-story-msw-graphql-query.js.mdx +++ b/docs/snippets/svelte/documentscreen-story-msw-graphql-query.js.mdx @@ -7,11 +7,6 @@ import DocumentScreen from './YourPage.svelte'; import MockApolloWrapperClient from './MockApolloWrapperClient.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, decorators: [() => MockGraphqlProvider], }; @@ -38,30 +33,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/svelte/histogram-story.js.mdx b/docs/snippets/svelte/histogram-story.js.mdx index a1ff321b86b8..a3f8a27065d9 100644 --- a/docs/snippets/svelte/histogram-story.js.mdx +++ b/docs/snippets/svelte/histogram-story.js.mdx @@ -4,11 +4,6 @@ import Histogram from './Histogram.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/svelte/histogram-story.ts-4-9.mdx b/docs/snippets/svelte/histogram-story.ts-4-9.mdx new file mode 100644 index 000000000000..634f710bfa23 --- /dev/null +++ b/docs/snippets/svelte/histogram-story.ts-4-9.mdx @@ -0,0 +1,32 @@ +```ts +// Histogram.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Histogram from './Histogram.svelte'; + +const meta = { + component: Histogram, +} satisfies Meta<typeof Histogram>; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Default: Story = { + render: (args) => ({ + Component: Histogram, + props: args, + }), + args: { + dataType: 'latency', + showHistogramLabels: true, + histogramAccentColor: '#1EA7FD', + label: 'Latency distribution', + }, +}; +``` diff --git a/docs/snippets/svelte/histogram-story.ts.mdx b/docs/snippets/svelte/histogram-story.ts.mdx new file mode 100644 index 000000000000..2aeb83c2ae9e --- /dev/null +++ b/docs/snippets/svelte/histogram-story.ts.mdx @@ -0,0 +1,32 @@ +```ts +// Histogram.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import Histogram from './Histogram.svelte'; + +const meta: Meta<typeof Histogram> = { + component: Histogram, +}; + +export default meta; +type Story = StoryObj<typeof meta>; + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/svelte/api/csf + * to learn how to use render functions. + */ +export const Default: Story = { + render: (args) => ({ + Component: Histogram, + props: args, + }), + args: { + dataType: 'latency', + showHistogramLabels: true, + histogramAccentColor: '#1EA7FD', + label: 'Latency distribution', + }, +}; +``` diff --git a/docs/snippets/svelte/loader-story.js.mdx b/docs/snippets/svelte/loader-story.js.mdx index c08e1913f3cd..474e6c781c8d 100644 --- a/docs/snippets/svelte/loader-story.js.mdx +++ b/docs/snippets/svelte/loader-story.js.mdx @@ -6,11 +6,6 @@ import fetch from 'node-fetch'; import TodoItem from './TodoItem.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, }; diff --git a/docs/snippets/svelte/login-form-with-play-function.js.mdx b/docs/snippets/svelte/login-form-with-play-function.js.mdx index a9821b23a482..c4b1565ffaf4 100644 --- a/docs/snippets/svelte/login-form-with-play-function.js.mdx +++ b/docs/snippets/svelte/login-form-with-play-function.js.mdx @@ -8,11 +8,6 @@ import { expect } from '@storybook/jest'; import LoginForm from './LoginForm.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; diff --git a/docs/snippets/svelte/my-component-story-basic-and-props.js.mdx b/docs/snippets/svelte/my-component-story-basic-and-props.js.mdx index 85dca5d7df91..baaf11c2767c 100644 --- a/docs/snippets/svelte/my-component-story-basic-and-props.js.mdx +++ b/docs/snippets/svelte/my-component-story-basic-and-props.js.mdx @@ -4,11 +4,6 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; diff --git a/docs/snippets/svelte/my-component-story-configure-viewports.js.mdx b/docs/snippets/svelte/my-component-story-configure-viewports.js.mdx index cec0d4344830..075779bbb1bb 100644 --- a/docs/snippets/svelte/my-component-story-configure-viewports.js.mdx +++ b/docs/snippets/svelte/my-component-story-configure-viewports.js.mdx @@ -6,11 +6,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon @@ -23,11 +18,6 @@ export default { }, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const MyStory = { render: () => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/my-component-story-use-globaltype.js.mdx b/docs/snippets/svelte/my-component-story-use-globaltype.js.mdx index 1f6c30a92201..176e9cae2381 100644 --- a/docs/snippets/svelte/my-component-story-use-globaltype.js.mdx +++ b/docs/snippets/svelte/my-component-story-use-globaltype.js.mdx @@ -4,11 +4,6 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -27,11 +22,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/svelte/my-component-story-with-nonstory.js.mdx b/docs/snippets/svelte/my-component-story-with-nonstory.js.mdx index 3219c51259e1..a1d49428d9fa 100644 --- a/docs/snippets/svelte/my-component-story-with-nonstory.js.mdx +++ b/docs/snippets/svelte/my-component-story-with-nonstory.js.mdx @@ -6,11 +6,6 @@ import MyComponent from './MyComponent.svelte'; import someData from './data.json'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data @@ -19,11 +14,6 @@ export default { export const simpleData = { foo: 1, bar: 'baz' }; export const complexData = { foo: 1, foobar: { bar: 'baz', baz: someData } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const SimpleStory = { render: (args) => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/my-component-with-env-variables.js.mdx b/docs/snippets/svelte/my-component-with-env-variables.js.mdx deleted file mode 100644 index d7715a079d75..000000000000 --- a/docs/snippets/svelte/my-component-with-env-variables.js.mdx +++ /dev/null @@ -1,29 +0,0 @@ -```js -// MyComponent.stories.js - -import MyComponent from './MyComponent.svelte'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ -export const ExampleStory = { - render: (args) => ({ - Component: MyComponent, - props: args, - }), - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/svelte/page-story.js.mdx b/docs/snippets/svelte/page-story.js.mdx index 1f23c2f996aa..d55dc030dc0d 100644 --- a/docs/snippets/svelte/page-story.js.mdx +++ b/docs/snippets/svelte/page-story.js.mdx @@ -7,11 +7,6 @@ import Page from './Page.svelte'; import * as HeaderStories from './Header.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/svelte/storybook-addon-a11y-disable.js.mdx b/docs/snippets/svelte/storybook-addon-a11y-disable.js.mdx index 5c328c794166..448436303a53 100644 --- a/docs/snippets/svelte/storybook-addon-a11y-disable.js.mdx +++ b/docs/snippets/svelte/storybook-addon-a11y-disable.js.mdx @@ -4,20 +4,9 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ - export const NonA11yStory = { render: (args) => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/storybook-addon-a11y-story-config.js.mdx b/docs/snippets/svelte/storybook-addon-a11y-story-config.js.mdx index f46e453daf7d..65635998e178 100644 --- a/docs/snippets/svelte/storybook-addon-a11y-story-config.js.mdx +++ b/docs/snippets/svelte/storybook-addon-a11y-story-config.js.mdx @@ -4,19 +4,9 @@ import MyComponent from './MyComponent.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/svelte/api/csf - * to learn how to use render functions. - */ export const ExampleStory = { render: (args) => ({ Component: MyComponent, diff --git a/docs/snippets/svelte/your-component-with-decorator.js.mdx b/docs/snippets/svelte/your-component-with-decorator.js.mdx index 0240cfb0c036..a5dfce20e711 100644 --- a/docs/snippets/svelte/your-component-with-decorator.js.mdx +++ b/docs/snippets/svelte/your-component-with-decorator.js.mdx @@ -6,11 +6,6 @@ import YourComponent from './YourComponent.svelte'; import MarginDecorator from './MarginDecorator.svelte'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [() => MarginDecorator], }; diff --git a/docs/snippets/svelte/your-component.js.mdx b/docs/snippets/svelte/your-component.js.mdx index 7d4ca45cc86e..b11b6e63c529 100644 --- a/docs/snippets/svelte/your-component.js.mdx +++ b/docs/snippets/svelte/your-component.js.mdx @@ -5,11 +5,6 @@ import YourComponent from './YourComponent.svelte'; //👇This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/svelte/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/svelte/your-component.ts-4-9.mdx b/docs/snippets/svelte/your-component.ts-4-9.mdx new file mode 100644 index 000000000000..b22bdcd14841 --- /dev/null +++ b/docs/snippets/svelte/your-component.ts-4-9.mdx @@ -0,0 +1,21 @@ +```ts +// YourComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import YourComponent from './YourComponent.svelte'; + +//👇This default export determines where your story goes in the story list +const meta = { + component: YourComponent, +} satisfies Meta<typeof YourComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const FirstStory: Story = { + args: { + //👇 The args you need here will depend on your component + }, +}; +``` diff --git a/docs/snippets/svelte/your-component.ts.mdx b/docs/snippets/svelte/your-component.ts.mdx new file mode 100644 index 000000000000..84c1fa290c50 --- /dev/null +++ b/docs/snippets/svelte/your-component.ts.mdx @@ -0,0 +1,21 @@ +```ts +// YourComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/svelte'; + +import YourComponent from './YourComponent.svelte'; + +//👇This default export determines where your story goes in the story list +const meta: Meta<typeof YourComponent> = { + component: YourComponent, +}; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const FirstStory: Story = { + args: { + //👇 The args you need here will depend on your component + }, +}; +``` diff --git a/docs/snippets/vue/addon-highlight-reset.js.mdx b/docs/snippets/vue/addon-highlight-reset.js.mdx new file mode 100644 index 000000000000..18cbab4e2dc6 --- /dev/null +++ b/docs/snippets/vue/addon-highlight-reset.js.mdx @@ -0,0 +1,27 @@ +```js +// MyComponent.stories.js + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +export default { + component: MyComponent, +}; + +export const ResetHighlight = { + decorators: [ + () => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/addon-highlight-reset.ts-4-9.mdx b/docs/snippets/vue/addon-highlight-reset.ts-4-9.mdx new file mode 100644 index 000000000000..0a80a0f6c9ab --- /dev/null +++ b/docs/snippets/vue/addon-highlight-reset.ts-4-9.mdx @@ -0,0 +1,32 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const ResetHighlight: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/addon-highlight-reset.ts.mdx b/docs/snippets/vue/addon-highlight-reset.ts.mdx new file mode 100644 index 000000000000..c0b777d21590 --- /dev/null +++ b/docs/snippets/vue/addon-highlight-reset.ts.mdx @@ -0,0 +1,32 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const ResetHighlight: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/button-group-story.2.js.mdx b/docs/snippets/vue/button-group-story.2.js.mdx index 30f9d629d26e..f946fe81190a 100644 --- a/docs/snippets/vue/button-group-story.2.js.mdx +++ b/docs/snippets/vue/button-group-story.2.js.mdx @@ -7,11 +7,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/vue/button-group-story.2.ts-4-9.mdx b/docs/snippets/vue/button-group-story.2.ts-4-9.mdx index 9517a8cd1cd2..092fb2a0d0e2 100644 --- a/docs/snippets/vue/button-group-story.2.ts-4-9.mdx +++ b/docs/snippets/vue/button-group-story.2.ts-4-9.mdx @@ -9,11 +9,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, } satisfies Meta<typeof ButtonGroup>; diff --git a/docs/snippets/vue/button-group-story.2.ts.mdx b/docs/snippets/vue/button-group-story.2.ts.mdx index 6e8b551f6d22..05369c08aa1d 100644 --- a/docs/snippets/vue/button-group-story.2.ts.mdx +++ b/docs/snippets/vue/button-group-story.2.ts.mdx @@ -9,11 +9,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; const meta: Meta<typeof ButtonGroup> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/vue/button-group-story.3.js.mdx b/docs/snippets/vue/button-group-story.3.js.mdx index 2a025292dafd..cb418ce78bef 100644 --- a/docs/snippets/vue/button-group-story.3.js.mdx +++ b/docs/snippets/vue/button-group-story.3.js.mdx @@ -7,11 +7,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/vue/button-group-story.3.ts-4-9.mdx b/docs/snippets/vue/button-group-story.3.ts-4-9.mdx index c256b05640d2..44f45718891a 100644 --- a/docs/snippets/vue/button-group-story.3.ts-4-9.mdx +++ b/docs/snippets/vue/button-group-story.3.ts-4-9.mdx @@ -9,11 +9,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, } satisfies Meta<typeof ButtonGroup>; diff --git a/docs/snippets/vue/button-group-story.3.ts.mdx b/docs/snippets/vue/button-group-story.3.ts.mdx index 8a2a2f103b48..5b33e4c7b011 100644 --- a/docs/snippets/vue/button-group-story.3.ts.mdx +++ b/docs/snippets/vue/button-group-story.3.ts.mdx @@ -9,11 +9,6 @@ import ButtonGroup from './ButtonGroup.vue'; import * as ButtonStories from './Button.stories'; const meta: Meta<typeof ButtonGroup> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'ButtonGroup', component: ButtonGroup, }; diff --git a/docs/snippets/vue/button-story-auto-docs.js.mdx b/docs/snippets/vue/button-story-auto-docs.js.mdx index bfab3dc1edee..3eeb837b4db7 100644 --- a/docs/snippets/vue/button-story-auto-docs.js.mdx +++ b/docs/snippets/vue/button-story-auto-docs.js.mdx @@ -4,7 +4,6 @@ import Button from './Button.vue'; export default { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/vue/button-story-auto-docs.ts-4-9.mdx b/docs/snippets/vue/button-story-auto-docs.ts-4-9.mdx index 29b5967cd26d..3c03a16deab1 100644 --- a/docs/snippets/vue/button-story-auto-docs.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-auto-docs.ts-4-9.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/vue/button-story-auto-docs.ts.mdx b/docs/snippets/vue/button-story-auto-docs.ts.mdx index e92a18d30fc1..5a04f54f5b22 100644 --- a/docs/snippets/vue/button-story-auto-docs.ts.mdx +++ b/docs/snippets/vue/button-story-auto-docs.ts.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - title: 'Button', component: Button, //👇 Enables auto-generated documentation for the component story tags: ['autodocs'], diff --git a/docs/snippets/vue/button-story-click-handler-args.2.js.mdx b/docs/snippets/vue/button-story-click-handler-args.2.js.mdx index e913e6faede1..6984b666d5a3 100644 --- a/docs/snippets/vue/button-story-click-handler-args.2.js.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.2.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-click-handler-args.2.ts-4-9.mdx b/docs/snippets/vue/button-story-click-handler-args.2.ts-4-9.mdx index 480b3f612e33..5863454b909a 100644 --- a/docs/snippets/vue/button-story-click-handler-args.2.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.2.ts-4-9.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: (args, { argTypes }) => ({ props: Object.keys(argTypes), diff --git a/docs/snippets/vue/button-story-click-handler-args.2.ts.mdx b/docs/snippets/vue/button-story-click-handler-args.2.ts.mdx index a0024db57631..af71892017e1 100644 --- a/docs/snippets/vue/button-story-click-handler-args.2.ts.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.2.ts.mdx @@ -8,22 +8,12 @@ import type { Meta, StoryObj } from '@storybook/vue'; import { action } from '@storybook/addon-actions'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: (args, { argTypes }) => ({ props: Object.keys(argTypes), diff --git a/docs/snippets/vue/button-story-click-handler-args.3.js.mdx b/docs/snippets/vue/button-story-click-handler-args.3.js.mdx index b2083c891386..37dce06185a4 100644 --- a/docs/snippets/vue/button-story-click-handler-args.3.js.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.3.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-click-handler-args.3.ts-4-9.mdx b/docs/snippets/vue/button-story-click-handler-args.3.ts-4-9.mdx index 9c9110ab8e3a..16b2306a9930 100644 --- a/docs/snippets/vue/button-story-click-handler-args.3.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.3.ts-4-9.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Primary: Story = { render: (args) => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler-args.3.ts.mdx b/docs/snippets/vue/button-story-click-handler-args.3.ts.mdx index 8bc415cbc62a..8aaf4e7241f6 100644 --- a/docs/snippets/vue/button-story-click-handler-args.3.ts.mdx +++ b/docs/snippets/vue/button-story-click-handler-args.3.ts.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Primary: Story = { render: (args) => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler-simplificated.js.mdx b/docs/snippets/vue/button-story-click-handler-simplificated.js.mdx index 9d60731253c0..eac7b27a4575 100644 --- a/docs/snippets/vue/button-story-click-handler-simplificated.js.mdx +++ b/docs/snippets/vue/button-story-click-handler-simplificated.js.mdx @@ -4,16 +4,7 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, - /* - * See https://storybook.js.org/docs/vue/essentials/actions#action-argtype-annotation - * to learn how to set up argTypes for actions - */ argTypes: { onClick: {}, }, diff --git a/docs/snippets/vue/button-story-click-handler-simplificated.ts-4-9.mdx b/docs/snippets/vue/button-story-click-handler-simplificated.ts-4-9.mdx index 171a2dfbe477..296b0e375674 100644 --- a/docs/snippets/vue/button-story-click-handler-simplificated.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-click-handler-simplificated.ts-4-9.mdx @@ -6,16 +6,8 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ title: 'Button', component: Button, - /* - * See https://storybook.js.org/docs/vue/essentials/actions#action-argtype-annotation - * to learn how to set up argTypes for actions - */ argTypes: { onClick: {}, }, @@ -24,11 +16,6 @@ const meta = { export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: (args) => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler-simplificated.ts.mdx b/docs/snippets/vue/button-story-click-handler-simplificated.ts.mdx index 93c27eeb3bcf..b85bfea9d0c1 100644 --- a/docs/snippets/vue/button-story-click-handler-simplificated.ts.mdx +++ b/docs/snippets/vue/button-story-click-handler-simplificated.ts.mdx @@ -6,16 +6,8 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ title: 'Button', component: Button, - /* - * See https://storybook.js.org/docs/vue/essentials/actions#action-argtype-annotation - * to learn how to set up argTypes for actions - */ argTypes: { onClick: {}, }, @@ -24,11 +16,6 @@ const meta: Meta<typeof Button> = { export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: (args) => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler.2.js.mdx b/docs/snippets/vue/button-story-click-handler.2.js.mdx index 47c343cb6901..856492d832d0 100644 --- a/docs/snippets/vue/button-story-click-handler.2.js.mdx +++ b/docs/snippets/vue/button-story-click-handler.2.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-click-handler.2.ts-4-9.mdx b/docs/snippets/vue/button-story-click-handler.2.ts-4-9.mdx index 0001bb4a331e..5616d0c44e22 100644 --- a/docs/snippets/vue/button-story-click-handler.2.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-click-handler.2.ts-4-9.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: () => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler.2.ts.mdx b/docs/snippets/vue/button-story-click-handler.2.ts.mdx index e66cab772324..4e32db755bc1 100644 --- a/docs/snippets/vue/button-story-click-handler.2.ts.mdx +++ b/docs/snippets/vue/button-story-click-handler.2.ts.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: () => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler.3.js.mdx b/docs/snippets/vue/button-story-click-handler.3.js.mdx index bab6c3cbccc9..bb97eb5b6222 100644 --- a/docs/snippets/vue/button-story-click-handler.3.js.mdx +++ b/docs/snippets/vue/button-story-click-handler.3.js.mdx @@ -6,11 +6,6 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-click-handler.3.ts-4-9.mdx b/docs/snippets/vue/button-story-click-handler.3.ts-4-9.mdx index 6aa3bdbf3440..e2044f58f753 100644 --- a/docs/snippets/vue/button-story-click-handler.3.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-click-handler.3.ts-4-9.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: () => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-click-handler.3.ts.mdx b/docs/snippets/vue/button-story-click-handler.3.ts.mdx index d32c629901a0..c47f3c18cd13 100644 --- a/docs/snippets/vue/button-story-click-handler.3.ts.mdx +++ b/docs/snippets/vue/button-story-click-handler.3.ts.mdx @@ -8,22 +8,12 @@ import Button from './Button.vue'; import { action } from '@storybook/addon-actions'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; export default meta; type Story = StoryObj<typeof Button>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Text: Story = { render: () => ({ components: { Button }, diff --git a/docs/snippets/vue/button-story-component-args-primary.js.mdx b/docs/snippets/vue/button-story-component-args-primary.js.mdx index bf25d4d6b165..836df2f8d7e0 100644 --- a/docs/snippets/vue/button-story-component-args-primary.js.mdx +++ b/docs/snippets/vue/button-story-component-args-primary.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/vue/button-story-component-args-primary.ts-4-9.mdx b/docs/snippets/vue/button-story-component-args-primary.ts-4-9.mdx index f11a8a3e9e9e..1c6f820e0ab2 100644 --- a/docs/snippets/vue/button-story-component-args-primary.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-component-args-primary.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/vue/button-story-component-args-primary.ts.mdx b/docs/snippets/vue/button-story-component-args-primary.ts.mdx index bb93f61e9f04..07cd0f7335a8 100644 --- a/docs/snippets/vue/button-story-component-args-primary.ts.mdx +++ b/docs/snippets/vue/button-story-component-args-primary.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/vue/button-story-component-decorator.js.mdx b/docs/snippets/vue/button-story-component-decorator.js.mdx index 64eee2359fbf..90257aa9c660 100644 --- a/docs/snippets/vue/button-story-component-decorator.js.mdx +++ b/docs/snippets/vue/button-story-component-decorator.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [() => ({ template: '<div style="margin: 3em;"><story /></div>' })], }; diff --git a/docs/snippets/vue/button-story-component-decorator.ts-4-9.mdx b/docs/snippets/vue/button-story-component-decorator.ts-4-9.mdx index de21eeafa945..b486353bec9f 100644 --- a/docs/snippets/vue/button-story-component-decorator.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-component-decorator.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [() => ({ template: '<div style="margin: 3em;"><story /></div>' })], } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-component-decorator.ts.mdx b/docs/snippets/vue/button-story-component-decorator.ts.mdx index fa1cdf77e315..0aa95856874f 100644 --- a/docs/snippets/vue/button-story-component-decorator.ts.mdx +++ b/docs/snippets/vue/button-story-component-decorator.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, decorators: [() => ({ template: '<div style="margin: 3em;"><story /></div>' })], }; diff --git a/docs/snippets/vue/button-story-decorator.js.mdx b/docs/snippets/vue/button-story-decorator.js.mdx index a18bce00d4a2..6fb9ec55de09 100644 --- a/docs/snippets/vue/button-story-decorator.js.mdx +++ b/docs/snippets/vue/button-story-decorator.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-decorator.ts-4-9.mdx b/docs/snippets/vue/button-story-decorator.ts-4-9.mdx index 8d66fd93865f..37c6a5cf2a2e 100644 --- a/docs/snippets/vue/button-story-decorator.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-decorator.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-decorator.ts.mdx b/docs/snippets/vue/button-story-decorator.ts.mdx index ca61da1a8cc7..ea41a8de08b0 100644 --- a/docs/snippets/vue/button-story-decorator.ts.mdx +++ b/docs/snippets/vue/button-story-decorator.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-default-export-with-component.js.mdx b/docs/snippets/vue/button-story-default-export-with-component.js.mdx index 9dd771fd7fd4..5c7b45d8dec4 100644 --- a/docs/snippets/vue/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/vue/button-story-default-export-with-component.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; ``` diff --git a/docs/snippets/vue/button-story-default-export-with-component.ts-4-9.mdx b/docs/snippets/vue/button-story-default-export-with-component.ts-4-9.mdx index b50cb380ce6f..0c1f576e8723 100644 --- a/docs/snippets/vue/button-story-default-export-with-component.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-default-export-with-component.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-default-export-with-component.ts.mdx b/docs/snippets/vue/button-story-default-export-with-component.ts.mdx index 9e707f4966dc..93f1abd5c52b 100644 --- a/docs/snippets/vue/button-story-default-export-with-component.ts.mdx +++ b/docs/snippets/vue/button-story-default-export-with-component.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-rename-story.js.mdx b/docs/snippets/vue/button-story-rename-story.js.mdx index 0cb4ac65d9e9..42e85ddb0b68 100644 --- a/docs/snippets/vue/button-story-rename-story.js.mdx +++ b/docs/snippets/vue/button-story-rename-story.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-rename-story.ts-4-9.mdx b/docs/snippets/vue/button-story-rename-story.ts-4-9.mdx index f64818364b6d..878dfe065dd6 100644 --- a/docs/snippets/vue/button-story-rename-story.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-rename-story.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-rename-story.ts.mdx b/docs/snippets/vue/button-story-rename-story.ts.mdx index 44a0bddbfa79..30d38983f8e0 100644 --- a/docs/snippets/vue/button-story-rename-story.ts.mdx +++ b/docs/snippets/vue/button-story-rename-story.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-using-args.2.js.mdx b/docs/snippets/vue/button-story-using-args.2.js.mdx index 83eb1a95c2b7..6789b70fe03c 100644 --- a/docs/snippets/vue/button-story-using-args.2.js.mdx +++ b/docs/snippets/vue/button-story-using-args.2.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-using-args.2.ts-4-9.mdx b/docs/snippets/vue/button-story-using-args.2.ts-4-9.mdx index 1bd07c16f04e..d0020f05a17d 100644 --- a/docs/snippets/vue/button-story-using-args.2.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-using-args.2.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-using-args.2.ts.mdx b/docs/snippets/vue/button-story-using-args.2.ts.mdx index 359c2d3fc01a..03cf3af9d6fc 100644 --- a/docs/snippets/vue/button-story-using-args.2.ts.mdx +++ b/docs/snippets/vue/button-story-using-args.2.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-using-args.3.js.mdx b/docs/snippets/vue/button-story-using-args.3.js.mdx index 28c45121e1be..93cd24bdf957 100644 --- a/docs/snippets/vue/button-story-using-args.3.js.mdx +++ b/docs/snippets/vue/button-story-using-args.3.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-using-args.3.ts-4-9.mdx b/docs/snippets/vue/button-story-using-args.3.ts-4-9.mdx index 2f3ec915f5a0..ad704be7353e 100644 --- a/docs/snippets/vue/button-story-using-args.3.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-using-args.3.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-using-args.3.ts.mdx b/docs/snippets/vue/button-story-using-args.3.ts.mdx index 598777aa7ca3..f7664df7ffab 100644 --- a/docs/snippets/vue/button-story-using-args.3.ts.mdx +++ b/docs/snippets/vue/button-story-using-args.3.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-args.2.js.mdx b/docs/snippets/vue/button-story-with-args.2.js.mdx index 59c7f02bbbae..3c0bb01b1cba 100644 --- a/docs/snippets/vue/button-story-with-args.2.js.mdx +++ b/docs/snippets/vue/button-story-with-args.2.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-args.2.ts-4-9.mdx b/docs/snippets/vue/button-story-with-args.2.ts-4-9.mdx index 7defac72580f..030eb1fb9346 100644 --- a/docs/snippets/vue/button-story-with-args.2.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-with-args.2.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-with-args.2.ts.mdx b/docs/snippets/vue/button-story-with-args.2.ts.mdx index cf08e29772f0..e04f170987c6 100644 --- a/docs/snippets/vue/button-story-with-args.2.ts.mdx +++ b/docs/snippets/vue/button-story-with-args.2.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-args.3.js.mdx b/docs/snippets/vue/button-story-with-args.3.js.mdx index 4fa3fec07290..ae20e71bd125 100644 --- a/docs/snippets/vue/button-story-with-args.3.js.mdx +++ b/docs/snippets/vue/button-story-with-args.3.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-args.3.ts-4-9.mdx b/docs/snippets/vue/button-story-with-args.3.ts-4-9.mdx index a9d59267ab6a..7e4225a5d5ea 100644 --- a/docs/snippets/vue/button-story-with-args.3.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-with-args.3.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-with-args.3.ts.mdx b/docs/snippets/vue/button-story-with-args.3.ts.mdx index fc10f68188fb..a77183621247 100644 --- a/docs/snippets/vue/button-story-with-args.3.ts.mdx +++ b/docs/snippets/vue/button-story-with-args.3.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-blue-args.js.mdx b/docs/snippets/vue/button-story-with-blue-args.js.mdx index 0454f7aa686d..c37f2a2401d6 100644 --- a/docs/snippets/vue/button-story-with-blue-args.js.mdx +++ b/docs/snippets/vue/button-story-with-blue-args.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/vue/button-story-with-blue-args.ts-4-9.mdx b/docs/snippets/vue/button-story-with-blue-args.ts-4-9.mdx index 81f3fbff8b81..1dcd6200a60b 100644 --- a/docs/snippets/vue/button-story-with-blue-args.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-with-blue-args.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/vue/button-story-with-blue-args.ts.mdx b/docs/snippets/vue/button-story-with-blue-args.ts.mdx index 27018b18d00a..2cb562e228b6 100644 --- a/docs/snippets/vue/button-story-with-blue-args.ts.mdx +++ b/docs/snippets/vue/button-story-with-blue-args.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/vue/button-story-with-emojis.js.mdx b/docs/snippets/vue/button-story-with-emojis.js.mdx index 097b727cda47..b3d34beb1ed1 100644 --- a/docs/snippets/vue/button-story-with-emojis.js.mdx +++ b/docs/snippets/vue/button-story-with-emojis.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story-with-emojis.ts-4-9.mdx b/docs/snippets/vue/button-story-with-emojis.ts-4-9.mdx index e01e96ecf683..521e7e8fd5a6 100644 --- a/docs/snippets/vue/button-story-with-emojis.ts-4-9.mdx +++ b/docs/snippets/vue/button-story-with-emojis.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story-with-emojis.ts.mdx b/docs/snippets/vue/button-story-with-emojis.ts.mdx index d24f87356249..4ad8095fcff9 100644 --- a/docs/snippets/vue/button-story-with-emojis.ts.mdx +++ b/docs/snippets/vue/button-story-with-emojis.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story.js.mdx b/docs/snippets/vue/button-story.js.mdx index ab77a807e25f..c4b30351962f 100644 --- a/docs/snippets/vue/button-story.js.mdx +++ b/docs/snippets/vue/button-story.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/button-story.ts-4-9.mdx b/docs/snippets/vue/button-story.ts-4-9.mdx index f5598b37b142..4303db29e3f3 100644 --- a/docs/snippets/vue/button-story.ts-4-9.mdx +++ b/docs/snippets/vue/button-story.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, } satisfies Meta<typeof Button>; diff --git a/docs/snippets/vue/button-story.ts.mdx b/docs/snippets/vue/button-story.ts.mdx index 41e2b7a7e159..9dc7c8f73a1d 100644 --- a/docs/snippets/vue/button-story.ts.mdx +++ b/docs/snippets/vue/button-story.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: Button, }; diff --git a/docs/snippets/vue/component-story-custom-args-complex.js.mdx b/docs/snippets/vue/component-story-custom-args-complex.js.mdx index 2ab9cc72a4e3..a95a1447f0df 100644 --- a/docs/snippets/vue/component-story-custom-args-complex.js.mdx +++ b/docs/snippets/vue/component-story-custom-args-complex.js.mdx @@ -4,11 +4,6 @@ import YourComponent from './YourComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -22,9 +17,8 @@ export default { }, }; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export const ExampleStory = { diff --git a/docs/snippets/vue/component-story-custom-args-complex.ts-4-9.mdx b/docs/snippets/vue/component-story-custom-args-complex.ts-4-9.mdx index 025265f4cfad..ce7d870381b6 100644 --- a/docs/snippets/vue/component-story-custom-args-complex.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-custom-args-complex.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -24,19 +19,13 @@ const meta = { }, } satisfies Meta<typeof YourComponent>; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const ExampleStory: Story = { render: ({ args }) => { const { propertyA, propertyB } = args; diff --git a/docs/snippets/vue/component-story-custom-args-complex.ts.mdx b/docs/snippets/vue/component-story-custom-args-complex.ts.mdx index e38fa416d231..f496cfc58644 100644 --- a/docs/snippets/vue/component-story-custom-args-complex.ts.mdx +++ b/docs/snippets/vue/component-story-custom-args-complex.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, //👇 Creates specific argTypes with options argTypes: { @@ -24,19 +19,13 @@ const meta: Meta<typeof YourComponent> = { }, }; -//👇 Some function to demonstrate the behavior const someFunction = (valuePropertyA, valuePropertyB) => { - // Makes some computations and returns something + // Do some logic here }; export default meta; type Story = StoryObj<typeof YourComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const ExampleStory: Story = { render: ({ args }) => { const { propertyA, propertyB } = args; diff --git a/docs/snippets/vue/component-story-figma-integration.js.mdx b/docs/snippets/vue/component-story-figma-integration.js.mdx index da70a488bdbf..4c50c25667f1 100644 --- a/docs/snippets/vue/component-story-figma-integration.js.mdx +++ b/docs/snippets/vue/component-story-figma-integration.js.mdx @@ -7,16 +7,10 @@ import MyComponent from './MyComponent.vue'; // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export export default { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Example = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/component-story-figma-integration.ts-4-9.mdx b/docs/snippets/vue/component-story-figma-integration.ts-4-9.mdx index 91bf3dd99446..6ffc2c47f7d7 100644 --- a/docs/snippets/vue/component-story-figma-integration.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-figma-integration.ts-4-9.mdx @@ -10,7 +10,6 @@ import MyComponent from './MyComponent.vue'; // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export const meta = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], } satisfies Meta<typeof MyComponent>; @@ -18,11 +17,6 @@ const meta = { export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Example: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/component-story-figma-integration.ts.mdx b/docs/snippets/vue/component-story-figma-integration.ts.mdx index 5734882c7ccf..982f804920ba 100644 --- a/docs/snippets/vue/component-story-figma-integration.ts.mdx +++ b/docs/snippets/vue/component-story-figma-integration.ts.mdx @@ -10,7 +10,6 @@ import MyComponent from './MyComponent.vue'; // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export const meta: Meta<typeof MyComponent> = { - title: 'FigmaExample', component: MyComponent, decorators: [withDesign], }; @@ -18,11 +17,6 @@ const meta: Meta<typeof MyComponent> = { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Example: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/component-story-highlight-addon.js.mdx b/docs/snippets/vue/component-story-highlight-addon.js.mdx index 9acba2faa662..3781ac9d3fc5 100644 --- a/docs/snippets/vue/component-story-highlight-addon.js.mdx +++ b/docs/snippets/vue/component-story-highlight-addon.js.mdx @@ -1,32 +1,26 @@ ```js -// Card.stories.js +// MyComponent.stories.js import { useChannel } from '@storybook/preview-api'; -import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; -import { Card } form './Card.vue'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/angular/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Card', - component: Card + component: MyComponent, }; -export const Default: Story = (args) => ({ - template: '<Card />', -}); -Default.decorators = [ - (story) => { - const emit = useChannel({}); - emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - }); - return { - components: { story }, - template: '<story />', - }; - }, -]; +export const Highlighted = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return { + template: '<story />', + }; + }, + ], +}; ``` diff --git a/docs/snippets/vue/component-story-highlight-addon.ts-4-9.mdx b/docs/snippets/vue/component-story-highlight-addon.ts-4-9.mdx new file mode 100644 index 000000000000..462c54498449 --- /dev/null +++ b/docs/snippets/vue/component-story-highlight-addon.ts-4-9.mdx @@ -0,0 +1,31 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const Highlighted: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/component-story-highlight-addon.ts.mdx b/docs/snippets/vue/component-story-highlight-addon.ts.mdx new file mode 100644 index 000000000000..94ad9f9c0a0f --- /dev/null +++ b/docs/snippets/vue/component-story-highlight-addon.ts.mdx @@ -0,0 +1,31 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const Highlighted: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/component-story-static-asset-cdn.js.mdx b/docs/snippets/vue/component-story-static-asset-cdn.js.mdx index 674f22137f4f..b3561688edd5 100644 --- a/docs/snippets/vue/component-story-static-asset-cdn.js.mdx +++ b/docs/snippets/vue/component-story-static-asset-cdn.js.mdx @@ -4,18 +4,9 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', + component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ({ template: diff --git a/docs/snippets/vue/component-story-static-asset-cdn.ts-4-9.mdx b/docs/snippets/vue/component-story-static-asset-cdn.ts-4-9.mdx index 41af1cfe78fd..8729c40fe45d 100644 --- a/docs/snippets/vue/component-story-static-asset-cdn.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-static-asset-cdn.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ template: diff --git a/docs/snippets/vue/component-story-static-asset-cdn.ts.mdx b/docs/snippets/vue/component-story-static-asset-cdn.ts.mdx index 1267c3d1e65e..fa413c88c05e 100644 --- a/docs/snippets/vue/component-story-static-asset-cdn.ts.mdx +++ b/docs/snippets/vue/component-story-static-asset-cdn.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ template: diff --git a/docs/snippets/vue/component-story-static-asset-with-import.2.js.mdx b/docs/snippets/vue/component-story-static-asset-with-import.2.js.mdx index daab78ba81b0..fcdd31f73fb3 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.2.js.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.2.js.mdx @@ -6,11 +6,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -19,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ({ props: { diff --git a/docs/snippets/vue/component-story-static-asset-with-import.2.ts-4-9.mdx b/docs/snippets/vue/component-story-static-asset-with-import.2.ts-4-9.mdx index 9bdcfdba8b63..9144b3355ebc 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.2.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.2.ts-4-9.mdx @@ -8,11 +8,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, } satisfies Meta<typeof MyComponent>; @@ -23,11 +18,6 @@ const image = { export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ props: { diff --git a/docs/snippets/vue/component-story-static-asset-with-import.2.ts.mdx b/docs/snippets/vue/component-story-static-asset-with-import.2.ts.mdx index 131d2f46dcd4..57b30d627ee3 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.2.ts.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.2.ts.mdx @@ -8,11 +8,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -24,11 +19,6 @@ const image = { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ props: { diff --git a/docs/snippets/vue/component-story-static-asset-with-import.3.js.mdx b/docs/snippets/vue/component-story-static-asset-with-import.3.js.mdx index 39c0180b868e..854c557620f5 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.3.js.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.3.js.mdx @@ -6,11 +6,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -19,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => ({ setup() { diff --git a/docs/snippets/vue/component-story-static-asset-with-import.3.ts-4-9.mdx b/docs/snippets/vue/component-story-static-asset-with-import.3.ts-4-9.mdx index 478883f7039a..87773ea8b590 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.3.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.3.ts-4-9.mdx @@ -8,11 +8,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, } satisfies Meta<typeof MyComponent>; @@ -24,11 +19,6 @@ const image = { export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ setup() { diff --git a/docs/snippets/vue/component-story-static-asset-with-import.3.ts.mdx b/docs/snippets/vue/component-story-static-asset-with-import.3.ts.mdx index 85b7e1ae2645..18ccfbdaa60d 100644 --- a/docs/snippets/vue/component-story-static-asset-with-import.3.ts.mdx +++ b/docs/snippets/vue/component-story-static-asset-with-import.3.ts.mdx @@ -8,11 +8,6 @@ import MyComponent from './MyComponent.vue'; import imageFile from './static/image.png'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; @@ -24,11 +19,6 @@ const image = { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ setup() { diff --git a/docs/snippets/vue/component-story-static-asset-without-import.js.mdx b/docs/snippets/vue/component-story-static-asset-without-import.js.mdx index 4c438fb059fb..9ba58a8d7de2 100644 --- a/docs/snippets/vue/component-story-static-asset-without-import.js.mdx +++ b/docs/snippets/vue/component-story-static-asset-without-import.js.mdx @@ -4,11 +4,6 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; diff --git a/docs/snippets/vue/component-story-static-asset-without-import.ts-4-9.mdx b/docs/snippets/vue/component-story-static-asset-without-import.ts-4-9.mdx index 8f0961f13059..f4f363ef2e80 100644 --- a/docs/snippets/vue/component-story-static-asset-without-import.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-static-asset-without-import.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ template: '<img src="image.png" alt="my image" />', diff --git a/docs/snippets/vue/component-story-static-asset-without-import.ts.mdx b/docs/snippets/vue/component-story-static-asset-without-import.ts.mdx index 634de52f0b54..d87da7a9a030 100644 --- a/docs/snippets/vue/component-story-static-asset-without-import.ts.mdx +++ b/docs/snippets/vue/component-story-static-asset-without-import.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'img', component: MyComponent, }; export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => ({ template: '<img src="image.png" alt="my image" />', diff --git a/docs/snippets/vue/component-story-with-accessibility.2.js.mdx b/docs/snippets/vue/component-story-with-accessibility.2.js.mdx index c567ad53fcc2..4a36fc84eed0 100644 --- a/docs/snippets/vue/component-story-with-accessibility.2.js.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.2.js.mdx @@ -4,11 +4,6 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/vue/component-story-with-accessibility.2.ts-4-9.mdx b/docs/snippets/vue/component-story-with-accessibility.2.ts-4-9.mdx index 23dab633f796..ad1c2bda0339 100644 --- a/docs/snippets/vue/component-story-with-accessibility.2.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.2.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/vue/component-story-with-accessibility.2.ts.mdx b/docs/snippets/vue/component-story-with-accessibility.2.ts.mdx index 5970d6d22434..bc6fbbaab5cf 100644 --- a/docs/snippets/vue/component-story-with-accessibility.2.ts.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.2.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/vue/component-story-with-accessibility.3.js.mdx b/docs/snippets/vue/component-story-with-accessibility.3.js.mdx index 9801eeef2911..cbc23e4d7ae1 100644 --- a/docs/snippets/vue/component-story-with-accessibility.3.js.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.3.js.mdx @@ -4,25 +4,12 @@ import Button from './Button.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, }, }; -const Template = (args) => ({ - components: { Button }, - setup() { - return { args }; - }, - template: '<Button v-bind="args" />', -}); - // This is an accessible story export const Accessible = { render: (args) => ({ diff --git a/docs/snippets/vue/component-story-with-accessibility.3.ts-4-9.mdx b/docs/snippets/vue/component-story-with-accessibility.3.ts-4-9.mdx index 4d5f9f6a95e4..c8bb9abfc89e 100644 --- a/docs/snippets/vue/component-story-with-accessibility.3.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.3.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/vue/component-story-with-accessibility.3.ts.mdx b/docs/snippets/vue/component-story-with-accessibility.3.ts.mdx index 1c6d5f43da41..4f6b726eb855 100644 --- a/docs/snippets/vue/component-story-with-accessibility.3.ts.mdx +++ b/docs/snippets/vue/component-story-with-accessibility.3.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Button from './Button.vue'; const meta: Meta<typeof Button> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Accessibility testing', component: Button, argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/vue/component-story-with-custom-render-function.js.mdx b/docs/snippets/vue/component-story-with-custom-render-function.js.mdx index 2f5c76e8acf6..44b1314936c1 100644 --- a/docs/snippets/vue/component-story-with-custom-render-function.js.mdx +++ b/docs/snippets/vue/component-story-with-custom-render-function.js.mdx @@ -6,11 +6,6 @@ import Layout from './Layout.vue'; import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/vue/component-story-with-custom-render-function.ts-4-9.mdx b/docs/snippets/vue/component-story-with-custom-render-function.ts-4-9.mdx index 48678c2c4bc5..53c61aef7f3f 100644 --- a/docs/snippets/vue/component-story-with-custom-render-function.ts-4-9.mdx +++ b/docs/snippets/vue/component-story-with-custom-render-function.ts-4-9.mdx @@ -9,11 +9,6 @@ import Layout from './Layout.vue'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; diff --git a/docs/snippets/vue/component-story-with-custom-render-function.ts.mdx b/docs/snippets/vue/component-story-with-custom-render-function.ts.mdx index 4dbf93828dce..bc3ddbebdea3 100644 --- a/docs/snippets/vue/component-story-with-custom-render-function.ts.mdx +++ b/docs/snippets/vue/component-story-with-custom-render-function.ts.mdx @@ -9,11 +9,6 @@ import Layout from './Layout.vue'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; diff --git a/docs/snippets/vue/component-test-with-testing-library.3.js.mdx b/docs/snippets/vue/component-test-with-testing-library.3.js.mdx new file mode 100644 index 000000000000..d726c9337a7d --- /dev/null +++ b/docs/snippets/vue/component-test-with-testing-library.3.js.mdx @@ -0,0 +1,24 @@ +```js +// tests/Form.test.js + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { InvalidForm as InvalidFormStory } from './LoginForm.stories'; //👈 Our stories imported here. + +const FormError = composeStory(InvalidFormStory, Meta); + +test('Checks if the form is valid', () => { + render(FormError()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/component-test-with-testing-library.3.ts.mdx b/docs/snippets/vue/component-test-with-testing-library.3.ts.mdx new file mode 100644 index 000000000000..e89b5673b0c1 --- /dev/null +++ b/docs/snippets/vue/component-test-with-testing-library.3.ts.mdx @@ -0,0 +1,24 @@ +```ts +// tests/Form.test.ts + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { InvalidForm as InvalidFormStory } from './LoginForm.stories'; //👈 Our stories imported here. + +const FormError = composeStory(InvalidFormStory, Meta); + +test('Checks if the form is valid', () => { + render(FormError()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/component-test-with-testing-library.js.mdx b/docs/snippets/vue/component-test-with-testing-library.js.mdx deleted file mode 100644 index 58b8c744a2e3..000000000000 --- a/docs/snippets/vue/component-test-with-testing-library.js.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```js -// tests/unit/Form.spec.js - -import { render, fireEvent } from '@testing-library/vue'; - -import LoginForm from '../../src/components/LoginForm.vue'; - -import { InvalidForm } from './LoginForm.stories'; //👈 Our stories imported here. - -test('Checks if the form is valid', () => { - const { getByTestId, getByText } = render(LoginForm, { - props: { - ...InvalidForm.args, - }, - }); - - await fireEvent.click(getByText('Submit')); - - const isFormValid = getByTestId('invalid-form'); - expect(isFormValid).toBeInTheDocument(); -}); -``` diff --git a/docs/snippets/vue/documentscreen-story-msw-graphql-query.js.mdx b/docs/snippets/vue/documentscreen-story-msw-graphql-query.js.mdx index 8906b748b0fa..6a77f50c0158 100644 --- a/docs/snippets/vue/documentscreen-story-msw-graphql-query.js.mdx +++ b/docs/snippets/vue/documentscreen-story-msw-graphql-query.js.mdx @@ -8,11 +8,6 @@ import WrapperComponent from './ApolloWrapperClient.vue'; import { graphql } from 'msw'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, }; @@ -38,30 +33,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts-4-9.mdx b/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts-4-9.mdx index c4f632af7372..801b49e5d35f 100644 --- a/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts-4-9.mdx +++ b/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts-4-9.mdx @@ -10,11 +10,6 @@ import DocumentScreen from './YourPage.vue'; import WrapperComponent from './ApolloWrapperClient.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, } satisfies Meta<typeof DocumentScreen>; @@ -40,30 +35,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts.mdx b/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts.mdx index e74cf181191e..2d1119e70764 100644 --- a/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts.mdx +++ b/docs/snippets/vue/documentscreen-story-msw-graphql-query.ts.mdx @@ -10,11 +10,6 @@ import DocumentScreen from './YourPage.vue'; import WrapperComponent from './ApolloWrapperClient.vue'; const meta: Meta<typeof DocumentScreen> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'DocumentScreen', component: DocumentScreen, }; @@ -40,30 +35,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/vue/highlight-addon-custom-style.js.mdx b/docs/snippets/vue/highlight-addon-custom-style.js.mdx new file mode 100644 index 000000000000..443a8476a384 --- /dev/null +++ b/docs/snippets/vue/highlight-addon-custom-style.js.mdx @@ -0,0 +1,28 @@ +```js +// MyComponent.stories.js + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +export default { + component: MyComponent, +}; + +export const StyledHighlight = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/highlight-addon-custom-style.ts-4-9.mdx b/docs/snippets/vue/highlight-addon-custom-style.ts-4-9.mdx new file mode 100644 index 000000000000..eec2829fc50c --- /dev/null +++ b/docs/snippets/vue/highlight-addon-custom-style.ts-4-9.mdx @@ -0,0 +1,33 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta = { + component: MyComponent, +} satisfies Meta<typeof MyComponent>; + +export default meta; +type Story = StoryObj<typeof meta>; + +export const StyledHighlight: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/highlight-addon-custom-style.ts.mdx b/docs/snippets/vue/highlight-addon-custom-style.ts.mdx new file mode 100644 index 000000000000..34dd55cebca5 --- /dev/null +++ b/docs/snippets/vue/highlight-addon-custom-style.ts.mdx @@ -0,0 +1,33 @@ +```ts +// MyComponent.stories.ts + +// Replace vue3 with vue if you are using Storybook for Vue 2 +import type { Meta, StoryObj } from '@storybook/vue3'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +import MyComponent from './MyComponent.vue'; + +const meta: Meta<typeof MyComponent> = { + component: MyComponent, +}; + +export default meta; +type Story = StoryObj<typeof MyComponent>; + +export const StyledHighlight: Story = { + decorators: [ + () => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return { + template: '<story />', + }; + }, + ], +}; +``` diff --git a/docs/snippets/vue/histogram-story.2.js.mdx b/docs/snippets/vue/histogram-story.2.js.mdx index de9bc9023c89..ad0560e2510f 100644 --- a/docs/snippets/vue/histogram-story.2.js.mdx +++ b/docs/snippets/vue/histogram-story.2.js.mdx @@ -4,11 +4,6 @@ import Histogram from './Histogram.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/vue/histogram-story.2.ts-4-9.mdx b/docs/snippets/vue/histogram-story.2.ts-4-9.mdx index 8dd1e3fdc1ed..90431598ef62 100644 --- a/docs/snippets/vue/histogram-story.2.ts-4-9.mdx +++ b/docs/snippets/vue/histogram-story.2.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Histogram from './Histogram.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, } satisfies Meta<typeof Histogram>; diff --git a/docs/snippets/vue/histogram-story.2.ts.mdx b/docs/snippets/vue/histogram-story.2.ts.mdx index 0ef0c7897f9a..cd98e18cf4a3 100644 --- a/docs/snippets/vue/histogram-story.2.ts.mdx +++ b/docs/snippets/vue/histogram-story.2.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import Histogram from './Histogram.vue'; const meta: Meta<typeof Histogram> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/vue/histogram-story.3.js.mdx b/docs/snippets/vue/histogram-story.3.js.mdx index 5502eb88b769..3acbff7e6895 100644 --- a/docs/snippets/vue/histogram-story.3.js.mdx +++ b/docs/snippets/vue/histogram-story.3.js.mdx @@ -4,11 +4,6 @@ import Histogram from './Histogram.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/vue/histogram-story.3.ts-4-9.mdx b/docs/snippets/vue/histogram-story.3.ts-4-9.mdx index 4938ab30b521..62b36701fec9 100644 --- a/docs/snippets/vue/histogram-story.3.ts-4-9.mdx +++ b/docs/snippets/vue/histogram-story.3.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Histogram from './Histogram.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, } satisfies Meta<typeof Histogram>; diff --git a/docs/snippets/vue/histogram-story.3.ts.mdx b/docs/snippets/vue/histogram-story.3.ts.mdx index 4e813c20078a..b38506a54b49 100644 --- a/docs/snippets/vue/histogram-story.3.ts.mdx +++ b/docs/snippets/vue/histogram-story.3.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import Histogram from './Histogram.vue'; const meta: Meta<typeof Histogram> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Histogram', component: Histogram, }; diff --git a/docs/snippets/vue/list-story-expanded.js.mdx b/docs/snippets/vue/list-story-expanded.js.mdx index f4200c5f9e06..e4f432967936 100644 --- a/docs/snippets/vue/list-story-expanded.js.mdx +++ b/docs/snippets/vue/list-story-expanded.js.mdx @@ -5,11 +5,6 @@ import List from './ListComponent.vue'; import ListItem from './ListItem.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-expanded.ts-4-9.mdx b/docs/snippets/vue/list-story-expanded.ts-4-9.mdx index 23c7c37b8fcc..3e327a3eb9aa 100644 --- a/docs/snippets/vue/list-story-expanded.ts-4-9.mdx +++ b/docs/snippets/vue/list-story-expanded.ts-4-9.mdx @@ -8,11 +8,6 @@ import List from './ListComponent.vue'; import ListItem from './ListItem.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/vue/list-story-expanded.ts.mdx b/docs/snippets/vue/list-story-expanded.ts.mdx index 4340289945b3..457ffe638fb3 100644 --- a/docs/snippets/vue/list-story-expanded.ts.mdx +++ b/docs/snippets/vue/list-story-expanded.ts.mdx @@ -8,11 +8,6 @@ import List from './ListComponent.vue'; import ListItem from './ListItem.vue'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-reuse-data.2.js.mdx b/docs/snippets/vue/list-story-reuse-data.2.js.mdx index 6d9c2e1734d6..6fb197e89bf7 100644 --- a/docs/snippets/vue/list-story-reuse-data.2.js.mdx +++ b/docs/snippets/vue/list-story-reuse-data.2.js.mdx @@ -8,11 +8,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-reuse-data.2.ts-4-9.mdx b/docs/snippets/vue/list-story-reuse-data.2.ts-4-9.mdx index 07d8fd14671d..b45c9adcafe9 100644 --- a/docs/snippets/vue/list-story-reuse-data.2.ts-4-9.mdx +++ b/docs/snippets/vue/list-story-reuse-data.2.ts-4-9.mdx @@ -10,11 +10,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/vue/list-story-reuse-data.2.ts.mdx b/docs/snippets/vue/list-story-reuse-data.2.ts.mdx index b5822bc48cb1..78f0c4443f1a 100644 --- a/docs/snippets/vue/list-story-reuse-data.2.ts.mdx +++ b/docs/snippets/vue/list-story-reuse-data.2.ts.mdx @@ -10,11 +10,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-reuse-data.3.js.mdx b/docs/snippets/vue/list-story-reuse-data.3.js.mdx index 5fff9cd7ca2b..29d8fe3c00f4 100644 --- a/docs/snippets/vue/list-story-reuse-data.3.js.mdx +++ b/docs/snippets/vue/list-story-reuse-data.3.js.mdx @@ -8,11 +8,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-reuse-data.3.ts-4-9.mdx b/docs/snippets/vue/list-story-reuse-data.3.ts-4-9.mdx index fb37dba592c3..06309a60e655 100644 --- a/docs/snippets/vue/list-story-reuse-data.3.ts-4-9.mdx +++ b/docs/snippets/vue/list-story-reuse-data.3.ts-4-9.mdx @@ -10,11 +10,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/vue/list-story-reuse-data.3.ts.mdx b/docs/snippets/vue/list-story-reuse-data.3.ts.mdx index c9687e9cff73..8b4b249d8cfd 100644 --- a/docs/snippets/vue/list-story-reuse-data.3.ts.mdx +++ b/docs/snippets/vue/list-story-reuse-data.3.ts.mdx @@ -10,11 +10,6 @@ import ListItem from './ListItem.vue'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-starter.js.mdx b/docs/snippets/vue/list-story-starter.js.mdx index a1b30c5b8e20..644bb4d4f2ca 100644 --- a/docs/snippets/vue/list-story-starter.js.mdx +++ b/docs/snippets/vue/list-story-starter.js.mdx @@ -4,11 +4,6 @@ import List from './ListComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/list-story-starter.ts-4-9.mdx b/docs/snippets/vue/list-story-starter.ts-4-9.mdx index 85a57a8dcf1b..a2fdcbac82fe 100644 --- a/docs/snippets/vue/list-story-starter.ts-4-9.mdx +++ b/docs/snippets/vue/list-story-starter.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import List from './ListComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, } satisfies Meta<typeof List>; diff --git a/docs/snippets/vue/list-story-starter.ts.mdx b/docs/snippets/vue/list-story-starter.ts.mdx index cd18dc571a46..a8e45ef4ace6 100644 --- a/docs/snippets/vue/list-story-starter.ts.mdx +++ b/docs/snippets/vue/list-story-starter.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import List from './ListComponent.vue'; const meta: Meta<typeof List> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'List', component: List, }; diff --git a/docs/snippets/vue/loader-story.js.mdx b/docs/snippets/vue/loader-story.js.mdx index 8f51a800edad..6294b3e6f5d6 100644 --- a/docs/snippets/vue/loader-story.js.mdx +++ b/docs/snippets/vue/loader-story.js.mdx @@ -6,14 +6,14 @@ import TodoItem from './TodoItem.vue'; import fetch from 'node-fetch'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, }; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/vue/api/csf + * to learn how to use render functions. + */ export const Primary = { render: (args, { loaded: { todo } }) => ({ components: { TodoItem }, diff --git a/docs/snippets/vue/loader-story.ts-4-9.mdx b/docs/snippets/vue/loader-story.ts-4-9.mdx index 62c09c6447c0..7beb2ab4d477 100644 --- a/docs/snippets/vue/loader-story.ts-4-9.mdx +++ b/docs/snippets/vue/loader-story.ts-4-9.mdx @@ -8,11 +8,6 @@ import TodoItem from './TodoItem.vue'; import fetch from 'node-fetch'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, } satisfies Meta<typeof TodoItem>; diff --git a/docs/snippets/vue/loader-story.ts.mdx b/docs/snippets/vue/loader-story.ts.mdx index fb420584042d..0fa62aa418ae 100644 --- a/docs/snippets/vue/loader-story.ts.mdx +++ b/docs/snippets/vue/loader-story.ts.mdx @@ -8,11 +8,6 @@ import TodoItem from './TodoItem.vue'; import fetch from 'node-fetch'; const meta: Meta<typeof TodoItem> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Examples/Loader', component: TodoItem, }; diff --git a/docs/snippets/vue/login-form-with-play-function.js.mdx b/docs/snippets/vue/login-form-with-play-function.js.mdx index ce3cdb4778e6..cc049a899f5e 100644 --- a/docs/snippets/vue/login-form-with-play-function.js.mdx +++ b/docs/snippets/vue/login-form-with-play-function.js.mdx @@ -8,19 +8,9 @@ import { expect } from '@storybook/jest'; import LoginForm from './LoginForm.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const EmptyForm = { render: () => ({ components: { LoginForm }, diff --git a/docs/snippets/vue/login-form-with-play-function.ts-4-9.mdx b/docs/snippets/vue/login-form-with-play-function.ts-4-9.mdx index 2964adabe75d..1c23c91321f5 100644 --- a/docs/snippets/vue/login-form-with-play-function.ts-4-9.mdx +++ b/docs/snippets/vue/login-form-with-play-function.ts-4-9.mdx @@ -11,22 +11,12 @@ import { expect } from '@storybook/jest'; import LoginForm from './LoginForm.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, } satisfies Meta<typeof LoginForm>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const EmptyForm: Story = { render: () => ({ components: { LoginForm }, diff --git a/docs/snippets/vue/login-form-with-play-function.ts.mdx b/docs/snippets/vue/login-form-with-play-function.ts.mdx index 82d839137b32..259cf5aa6bf3 100644 --- a/docs/snippets/vue/login-form-with-play-function.ts.mdx +++ b/docs/snippets/vue/login-form-with-play-function.ts.mdx @@ -11,22 +11,12 @@ import { expect } from '@storybook/jest'; import LoginForm from './LoginForm.vue'; const meta: Meta<typeof LoginForm> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Form', component: LoginForm, }; export default meta; type Story = StoryObj<typeof LoginForm>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const EmptyForm: Story = { render: () => ({ components: { LoginForm }, diff --git a/docs/snippets/vue/multiple-stories-test.3.js.mdx b/docs/snippets/vue/multiple-stories-test.3.js.mdx new file mode 100644 index 000000000000..3d5e38c3e014 --- /dev/null +++ b/docs/snippets/vue/multiple-stories-test.3.js.mdx @@ -0,0 +1,37 @@ +```js +// tests/Form.test.js + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStories } from '@storybook/testing-vue3'; + +import * as FormStories from './LoginForm.stories'; + +const { InvalidForm, ValidForm } = composeStories(FormStories); + +test('Tests invalid form state', () => { + render(InvalidForm()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); + +test('Tests filled form', () => { + render(ValidForm()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/multiple-stories-test.3.ts.mdx b/docs/snippets/vue/multiple-stories-test.3.ts.mdx new file mode 100644 index 000000000000..16d0b1603eb9 --- /dev/null +++ b/docs/snippets/vue/multiple-stories-test.3.ts.mdx @@ -0,0 +1,37 @@ +```ts +// tests/Form.test.ts + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStories } from '@storybook/testing-vue3'; + +import * as FormStories from './LoginForm.stories'; + +const { InvalidForm, ValidForm } = composeStories(FormStories); + +test('Tests invalid form state', () => { + render(InvalidForm()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).toBeInTheDocument(); +}); + +test('Tests filled form', () => { + render(ValidForm()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/my-component-story-basic-and-props.js.mdx b/docs/snippets/vue/my-component-story-basic-and-props.js.mdx index 2a4f838f0a5f..5e44bd0077c2 100644 --- a/docs/snippets/vue/my-component-story-basic-and-props.js.mdx +++ b/docs/snippets/vue/my-component-story-basic-and-props.js.mdx @@ -4,19 +4,9 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Basic = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-basic-and-props.ts-4-9.mdx b/docs/snippets/vue/my-component-story-basic-and-props.ts-4-9.mdx index a23b6d3129ac..dfe13e09018d 100644 --- a/docs/snippets/vue/my-component-story-basic-and-props.ts-4-9.mdx +++ b/docs/snippets/vue/my-component-story-basic-and-props.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Basic: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-basic-and-props.ts.mdx b/docs/snippets/vue/my-component-story-basic-and-props.ts.mdx index 262880da76a6..48c8f1e24119 100644 --- a/docs/snippets/vue/my-component-story-basic-and-props.ts.mdx +++ b/docs/snippets/vue/my-component-story-basic-and-props.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Path/To/MyComponent', component: MyComponent, }; export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const Basic: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-configure-viewports.js.mdx b/docs/snippets/vue/my-component-story-configure-viewports.js.mdx index 40261fa87ebf..aff73e0bde98 100644 --- a/docs/snippets/vue/my-component-story-configure-viewports.js.mdx +++ b/docs/snippets/vue/my-component-story-configure-viewports.js.mdx @@ -6,11 +6,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon @@ -24,11 +19,6 @@ export default { }, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const MyStory = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-configure-viewports.ts-4-9.mdx b/docs/snippets/vue/my-component-story-configure-viewports.ts-4-9.mdx index 0d23e4476674..54b88d011534 100644 --- a/docs/snippets/vue/my-component-story-configure-viewports.ts-4-9.mdx +++ b/docs/snippets/vue/my-component-story-configure-viewports.ts-4-9.mdx @@ -9,11 +9,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon @@ -30,11 +25,6 @@ const meta = { export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-configure-viewports.ts.mdx b/docs/snippets/vue/my-component-story-configure-viewports.ts.mdx index e6eb53176870..af4762a8f9f7 100644 --- a/docs/snippets/vue/my-component-story-configure-viewports.ts.mdx +++ b/docs/snippets/vue/my-component-story-configure-viewports.ts.mdx @@ -9,11 +9,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, parameters: { //👇 The viewports object from the Essentials addon @@ -30,11 +25,6 @@ const meta: Meta<typeof MyComponent> = { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/my-component-story-use-globaltype.js.mdx b/docs/snippets/vue/my-component-story-use-globaltype.js.mdx index 94ab7c09d446..9d3a3a77303c 100644 --- a/docs/snippets/vue/my-component-story-use-globaltype.js.mdx +++ b/docs/snippets/vue/my-component-story-use-globaltype.js.mdx @@ -4,11 +4,6 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -27,11 +22,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/vue/my-component-story-use-globaltype.ts-4-9.mdx b/docs/snippets/vue/my-component-story-use-globaltype.ts-4-9.mdx index 63a0682c32ac..0efbeca17bc1 100644 --- a/docs/snippets/vue/my-component-story-use-globaltype.ts-4-9.mdx +++ b/docs/snippets/vue/my-component-story-use-globaltype.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, } satisfies Meta<typeof MyComponent>; @@ -36,11 +31,6 @@ const getCaptionForLocale = (locale) => { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/vue/my-component-story-use-globaltype.ts.mdx b/docs/snippets/vue/my-component-story-use-globaltype.ts.mdx index 27352db8acf5..73c71c3b6d6a 100644 --- a/docs/snippets/vue/my-component-story-use-globaltype.ts.mdx +++ b/docs/snippets/vue/my-component-story-use-globaltype.ts.mdx @@ -7,11 +7,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, }; @@ -33,11 +28,6 @@ const getCaptionForLocale = (locale) => { export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/vue/my-component-story-with-nonstory.js.mdx b/docs/snippets/vue/my-component-story-with-nonstory.js.mdx index 4f8e55ffdf1f..aa4104408293 100644 --- a/docs/snippets/vue/my-component-story-with-nonstory.js.mdx +++ b/docs/snippets/vue/my-component-story-with-nonstory.js.mdx @@ -6,11 +6,6 @@ import MyComponent from './MyComponent.vue'; import someData from './data.json'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/vue/my-component-story-with-nonstory.ts-4-9.mdx b/docs/snippets/vue/my-component-story-with-nonstory.ts-4-9.mdx index 43542e7147cd..3a9ae44502ee 100644 --- a/docs/snippets/vue/my-component-story-with-nonstory.ts-4-9.mdx +++ b/docs/snippets/vue/my-component-story-with-nonstory.ts-4-9.mdx @@ -9,11 +9,6 @@ import MyComponent from './MyComponent.vue'; import someData from './data.json'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/vue/my-component-story-with-nonstory.ts.mdx b/docs/snippets/vue/my-component-story-with-nonstory.ts.mdx index 64846258b98a..52dd9dc71837 100644 --- a/docs/snippets/vue/my-component-story-with-nonstory.ts.mdx +++ b/docs/snippets/vue/my-component-story-with-nonstory.ts.mdx @@ -9,11 +9,6 @@ import MyComponent from './MyComponent.vue'; import someData from './data.json'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', component: MyComponent, includeStories: ['SimpleStory', 'ComplexStory'], excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/vue/my-component-with-env-variables.js.mdx b/docs/snippets/vue/my-component-with-env-variables.js.mdx deleted file mode 100644 index 5d412ae57094..000000000000 --- a/docs/snippets/vue/my-component-with-env-variables.js.mdx +++ /dev/null @@ -1,20 +0,0 @@ -```js -// MyComponent.stories.js - -import MyComponent from './MyComponent.vue'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -}; - -export const ExampleStory = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/vue/my-component-with-env-variables.ts-4-9.mdx b/docs/snippets/vue/my-component-with-env-variables.ts-4-9.mdx deleted file mode 100644 index b962940b906b..000000000000 --- a/docs/snippets/vue/my-component-with-env-variables.ts-4-9.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```ts -// MyComponent.stories.ts - -// Replace vue3 with vue if you are using Storybook for Vue 2 -import type { Meta, StoryObj } from '@storybook/vue3'; - -import MyComponent from './YourPage.vue'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -} satisfies Meta<typeof MyComponent>; - -export default meta; -type Story = StoryObj<typeof meta>; - -export const ExampleStory: Story = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/vue/my-component-with-env-variables.ts.mdx b/docs/snippets/vue/my-component-with-env-variables.ts.mdx deleted file mode 100644 index 1da27ef2ac27..000000000000 --- a/docs/snippets/vue/my-component-with-env-variables.ts.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```ts -// MyComponent.stories.ts - -// Replace vue3 with vue if you are using Storybook for Vue 2 -import type { Meta, StoryObj } from '@storybook/vue3'; - -import MyComponent from './YourPage.vue'; - -const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'MyComponent', - component: MyComponent, -}; - -export default meta; -type Story = StoryObj<typeof MyComponent>; - -export const ExampleStory: Story = { - args: { - propertyA: process.env.STORYBOOK_DATA_KEY, - }, -}; -``` diff --git a/docs/snippets/vue/override-compose-story-test.compose-stories.3.js.mdx b/docs/snippets/vue/override-compose-story-test.compose-stories.3.js.mdx new file mode 100644 index 000000000000..d6f7801907be --- /dev/null +++ b/docs/snippets/vue/override-compose-story-test.compose-stories.3.js.mdx @@ -0,0 +1,19 @@ +```js +// tests/Form.test.js + +import { composeStory } from '@storybook/testing-vue3'; + +import * as FormStories from './LoginForm.stories'; + +const { ValidForm } = composeStories(FormStories, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/vue/override-compose-story-test.compose-stories.3.ts.mdx b/docs/snippets/vue/override-compose-story-test.compose-stories.3.ts.mdx new file mode 100644 index 000000000000..d8bace872090 --- /dev/null +++ b/docs/snippets/vue/override-compose-story-test.compose-stories.3.ts.mdx @@ -0,0 +1,19 @@ +```ts +// tests/Form.test.ts + +import { composeStory } from '@storybook/testing-vue3'; + +import * as FormStories from './LoginForm.stories'; + +const { ValidForm } = composeStories(FormStories, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/vue/override-compose-story-test.compose-story.3.js.mdx b/docs/snippets/vue/override-compose-story-test.compose-story.3.js.mdx new file mode 100644 index 000000000000..b377e1fa713e --- /dev/null +++ b/docs/snippets/vue/override-compose-story-test.compose-story.3.js.mdx @@ -0,0 +1,19 @@ +```js +// tests/Form.test.js + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormValidation = composeStory(ValidFormStory, Meta, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/vue/override-compose-story-test.compose-story.3.ts.mdx b/docs/snippets/vue/override-compose-story-test.compose-story.3.ts.mdx new file mode 100644 index 000000000000..987e05cc7905 --- /dev/null +++ b/docs/snippets/vue/override-compose-story-test.compose-story.3.ts.mdx @@ -0,0 +1,19 @@ +```ts +// tests/Form.test.ts + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormValidation = composeStory(ValidFormStory, Meta, { + decorators: [ + // Define your story-level decorators here + ], + globalTypes: { + // Define your global types here + }, + parameters: { + // Define your story-level parameters here + }, +}); +``` diff --git a/docs/snippets/vue/page-story-slots.2.js.mdx b/docs/snippets/vue/page-story-slots.2.js.mdx index cc7c920c76d3..cd3774707be6 100644 --- a/docs/snippets/vue/page-story-slots.2.js.mdx +++ b/docs/snippets/vue/page-story-slots.2.js.mdx @@ -4,20 +4,7 @@ import Page from './Page.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const CustomFooter = { render: (args, { argTypes }) => ({ components: { Page }, props: Object.keys(argTypes), @@ -29,8 +16,11 @@ export const CustomFooter = { </page> `, }), +}; + +export const CustomFooter = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, }; ``` diff --git a/docs/snippets/vue/page-story-slots.2.ts-4-9.mdx b/docs/snippets/vue/page-story-slots.2.ts-4-9.mdx index 81e278f30824..2d6c35078af6 100644 --- a/docs/snippets/vue/page-story-slots.2.ts-4-9.mdx +++ b/docs/snippets/vue/page-story-slots.2.ts-4-9.mdx @@ -1,28 +1,16 @@ ```ts // Page.stories.ts +// https://www.npmjs.com/package/vue-component-type-helpers +import type { ComponentProps } from 'vue-component-type-helpers'; import type { Meta, StoryObj } from '@storybook/vue'; import Page from './Page.vue'; +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; + const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -} satisfies Meta<typeof Page>; - -export default meta; -type Story = StoryObj<typeof meta>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const Primary: Story = { render: (args, { argTypes }) => ({ components: { Page }, props: Object.keys(argTypes), @@ -34,8 +22,14 @@ export const Primary: Story = { </page> `, }), +} satisfies Meta<PagePropsAndCustomArgs>; +export default meta; + +type Story = StoryObj<typeof meta>; + +export const Primary = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, -}; +} satisfies Story; ``` diff --git a/docs/snippets/vue/page-story-slots.2.ts.mdx b/docs/snippets/vue/page-story-slots.2.ts.mdx index 68dff1af0806..b43d05f9b85e 100644 --- a/docs/snippets/vue/page-story-slots.2.ts.mdx +++ b/docs/snippets/vue/page-story-slots.2.ts.mdx @@ -1,28 +1,16 @@ ```ts // Page.stories.ts +// https://www.npmjs.com/package/vue-component-type-helpers +import type { ComponentProps } from 'vue-component-type-helpers'; import type { Meta, StoryObj } from '@storybook/vue'; import Page from './Page.vue'; -const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', - component: Page, -}; - -export default meta; -type Story = StoryObj<typeof Page>; +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const Primary: Story = { +const meta: Meta<PagePropsAndCustomArgs> = { + component: Page, render: (args, { argTypes }) => ({ components: { Page }, props: Object.keys(argTypes), @@ -34,8 +22,14 @@ export const Primary: Story = { </page> `, }), +}; +export default meta; + +type Story = StoryObj<PagePropsAndCustomArgs>; + +export const Primary: Story = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, }; ``` diff --git a/docs/snippets/vue/page-story-slots.3.js.mdx b/docs/snippets/vue/page-story-slots.3.js.mdx index 44ec341e835c..b15a0fab3d48 100644 --- a/docs/snippets/vue/page-story-slots.3.js.mdx +++ b/docs/snippets/vue/page-story-slots.3.js.mdx @@ -4,20 +4,7 @@ import Page from './Page.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const CustomFooter = { render: (args) => ({ components: { Page }, setup() { @@ -31,8 +18,11 @@ export const CustomFooter = { </page> `, }), +}; + +export const CustomFooter = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, }; ``` diff --git a/docs/snippets/vue/page-story-slots.3.ts-4-9.mdx b/docs/snippets/vue/page-story-slots.3.ts-4-9.mdx index b72579621242..afb00a498398 100644 --- a/docs/snippets/vue/page-story-slots.3.ts-4-9.mdx +++ b/docs/snippets/vue/page-story-slots.3.ts-4-9.mdx @@ -1,28 +1,16 @@ ```ts // Page.stories.ts +// https://www.npmjs.com/package/vue-component-type-helpers +import type { ComponentProps } from 'vue-component-type-helpers'; import type { Meta, StoryObj } from '@storybook/vue3'; import Page from './Page.vue'; +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; + const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, -} satisfies Meta<typeof Page>; - -export default meta; -type Story = StoryObj<typeof meta>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const Primary: Story = { render: (args) => ({ components: { Page }, setup() { @@ -36,8 +24,14 @@ export const Primary: Story = { </page> `, }), +} satisfies Meta<PagePropsAndCustomArgs>; +export default meta; + +type Story = StoryObj<typeof meta>; + +export const Primary = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, -}; +} satisfies Story; ``` diff --git a/docs/snippets/vue/page-story-slots.3.ts.mdx b/docs/snippets/vue/page-story-slots.3.ts.mdx index 7da46597a581..fc7eb08b54fd 100644 --- a/docs/snippets/vue/page-story-slots.3.ts.mdx +++ b/docs/snippets/vue/page-story-slots.3.ts.mdx @@ -1,28 +1,16 @@ ```ts // Page.stories.ts +// https://www.npmjs.com/package/vue-component-type-helpers +import type { ComponentProps } from 'vue-component-type-helpers'; import type { Meta, StoryObj } from '@storybook/vue3'; import Page from './Page.vue'; -const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', - component: Page, -}; - -export default meta; -type Story = StoryObj<typeof Page>; +type PagePropsAndCustomArgs = ComponentProps<typeof Page> & { footer?: string }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const Primary: Story = { +const meta: Meta<PagePropsAndCustomArgs> = { + component: Page, render: (args) => ({ components: { Page }, setup() { @@ -36,8 +24,14 @@ export const Primary: Story = { </page> `, }), +}; +export default meta; + +type Story = StoryObj<PagePropsAndCustomArgs>; + +export const Primary: Story = { args: { - footer: '<a href="https://storybook.js.org/">Built with Storybook</a>', + footer: 'Built with Storybook', }, }; ``` diff --git a/docs/snippets/vue/page-story.2.-ts-4-9.mdx b/docs/snippets/vue/page-story.2.-ts-4-9.mdx index 329537de6b3d..2d2c46a5903c 100644 --- a/docs/snippets/vue/page-story.2.-ts-4-9.mdx +++ b/docs/snippets/vue/page-story.2.-ts-4-9.mdx @@ -9,11 +9,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, } satisfies Meta<typeof Table>; diff --git a/docs/snippets/vue/page-story.2.js.mdx b/docs/snippets/vue/page-story.2.js.mdx index 1cbf7b779bc8..98ae26c35541 100644 --- a/docs/snippets/vue/page-story.2.js.mdx +++ b/docs/snippets/vue/page-story.2.js.mdx @@ -7,11 +7,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/vue/page-story.2.ts.mdx b/docs/snippets/vue/page-story.2.ts.mdx index f5ede333ac10..bf1d063780cb 100644 --- a/docs/snippets/vue/page-story.2.ts.mdx +++ b/docs/snippets/vue/page-story.2.ts.mdx @@ -9,11 +9,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/vue/page-story.3.js.mdx b/docs/snippets/vue/page-story.3.js.mdx index 000c989cd6bb..89ddd08f701c 100644 --- a/docs/snippets/vue/page-story.3.js.mdx +++ b/docs/snippets/vue/page-story.3.js.mdx @@ -7,11 +7,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/vue/page-story.3.ts-4-9.mdx b/docs/snippets/vue/page-story.3.ts-4-9.mdx index 0a61bcdd3575..576d5ed65c04 100644 --- a/docs/snippets/vue/page-story.3.ts-4-9.mdx +++ b/docs/snippets/vue/page-story.3.ts-4-9.mdx @@ -9,11 +9,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, } satisfies Meta<typeof Page>; diff --git a/docs/snippets/vue/page-story.3.ts.mdx b/docs/snippets/vue/page-story.3.ts.mdx index 51cb6fdc0eda..a2155000b50a 100644 --- a/docs/snippets/vue/page-story.3.ts.mdx +++ b/docs/snippets/vue/page-story.3.ts.mdx @@ -9,11 +9,6 @@ import Page from './Page.vue'; import * as HeaderStories from './Header.stories'; const meta: Meta<typeof Page> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Page', component: Page, }; diff --git a/docs/snippets/vue/reuse-args-test.3.js.mdx b/docs/snippets/vue/reuse-args-test.3.js.mdx new file mode 100644 index 000000000000..359039264697 --- /dev/null +++ b/docs/snippets/vue/reuse-args-test.3.js.mdx @@ -0,0 +1,19 @@ +```js +// tests/Button.test.js + +import { render, screen } from '@testing-library/vue'; + +import { composeStories } from '@storybook/testing-vue3'; + +import * as stories from './Button.stories'; + +const { Primary } = composeStories(stories); + +test('reuses args from composed story', () => { + render(Primary()); + + const buttonElement = screen.getByRole('button'); + // Testing against values coming from the story itself! No need for duplication + expect(buttonElement.textContent).toEqual(Primary.args.label); +}); +``` diff --git a/docs/snippets/vue/reuse-args-test.3.ts.mdx b/docs/snippets/vue/reuse-args-test.3.ts.mdx new file mode 100644 index 000000000000..bfc8a8f69f33 --- /dev/null +++ b/docs/snippets/vue/reuse-args-test.3.ts.mdx @@ -0,0 +1,19 @@ +```ts +// tests/Button.test.ts + +import { render, screen } from '@testing-library/vue'; + +import { composeStories } from '@storybook/testing-vue3'; + +import * as stories from './Button.stories'; + +const { Primary } = composeStories(stories); + +test('reuses args from composed story', () => { + render(Primary()); + + const buttonElement = screen.getByRole('button'); + // Testing against values coming from the story itself! No need for duplication + expect(buttonElement.textContent).toEqual(Primary.args.label); +}); +``` diff --git a/docs/snippets/vue/single-story-test.3.js.mdx b/docs/snippets/vue/single-story-test.3.js.mdx new file mode 100644 index 000000000000..5e75d53fb765 --- /dev/null +++ b/docs/snippets/vue/single-story-test.3.js.mdx @@ -0,0 +1,24 @@ +```js +// tests/Form.test.js + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormOK = composeStory(ValidFormStory, Meta); + +test('Validates form', () => { + render(FormOK()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/single-story-test.3.ts.mdx b/docs/snippets/vue/single-story-test.3.ts.mdx new file mode 100644 index 000000000000..a9a03b4108aa --- /dev/null +++ b/docs/snippets/vue/single-story-test.3.ts.mdx @@ -0,0 +1,24 @@ +```ts +// tests/Form.test.ts + +import { fireEvent, render, screen } from '@testing-library/vue'; + +import { composeStory } from '@storybook/testing-vue3'; + +import Meta, { ValidForm as ValidFormStory } from './LoginForm.stories'; + +const FormOK = composeStory(ValidFormStory, Meta); + +test('Validates form', () => { + render(FormOK()); + + const buttonElement = screen.getByRole('button', { + name: 'Submit', + }); + + fireEvent.click(buttonElement); + + const isFormValid = screen.getByLabelText('invalid-form'); + expect(isFormValid).not.toBeInTheDocument(); +}); +``` diff --git a/docs/snippets/vue/storybook-addon-a11y-disable.js.mdx b/docs/snippets/vue/storybook-addon-a11y-disable.js.mdx index 59e3720a6a98..631dea64662a 100644 --- a/docs/snippets/vue/storybook-addon-a11y-disable.js.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-disable.js.mdx @@ -4,19 +4,9 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const NonA11yStory = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-addon-a11y-disable.ts-4-9.mdx b/docs/snippets/vue/storybook-addon-a11y-disable.ts-4-9.mdx index 4ccac42e4a44..d3e6630cb085 100644 --- a/docs/snippets/vue/storybook-addon-a11y-disable.ts-4-9.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-disable.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const NonA11yStory: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-addon-a11y-disable.ts.mdx b/docs/snippets/vue/storybook-addon-a11y-disable.ts.mdx index 553506e8e86e..27a59ab15167 100644 --- a/docs/snippets/vue/storybook-addon-a11y-disable.ts.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-disable.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Disable a11y addon', component: MyComponent, }; export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const NonA11yStory: Story = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-addon-a11y-story-config.js.mdx b/docs/snippets/vue/storybook-addon-a11y-story-config.js.mdx index dee9f58315bb..56bf00f7f3b5 100644 --- a/docs/snippets/vue/storybook-addon-a11y-story-config.js.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-story-config.js.mdx @@ -4,19 +4,9 @@ import MyComponent from './MyComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const ExampleStory = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-addon-a11y-story-config.ts-4-9.mdx b/docs/snippets/vue/storybook-addon-a11y-story-config.ts-4-9.mdx index 011d9667a6d2..7ae20fed5fc1 100644 --- a/docs/snippets/vue/storybook-addon-a11y-story-config.ts-4-9.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-story-config.ts-4-9.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, } satisfies Meta<typeof MyComponent>; export default meta; type Story = StoryObj<typeof meta>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const ExampleStory = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-addon-a11y-story-config.ts.mdx b/docs/snippets/vue/storybook-addon-a11y-story-config.ts.mdx index cb44a052bcc0..e2239aaae692 100644 --- a/docs/snippets/vue/storybook-addon-a11y-story-config.ts.mdx +++ b/docs/snippets/vue/storybook-addon-a11y-story-config.ts.mdx @@ -7,22 +7,12 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import MyComponent from './MyComponent.vue'; const meta: Meta<typeof MyComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Configure a11y addon', component: MyComponent, }; export default meta; type Story = StoryObj<typeof MyComponent>; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ export const ExampleStory = { render: () => ({ components: { MyComponent }, diff --git a/docs/snippets/vue/storybook-testing-addon-optional-config.3.js.mdx b/docs/snippets/vue/storybook-testing-addon-optional-config.3.js.mdx deleted file mode 100644 index 9b51354b19c3..000000000000 --- a/docs/snippets/vue/storybook-testing-addon-optional-config.3.js.mdx +++ /dev/null @@ -1,10 +0,0 @@ -```js -// setupFile.js - -import { setGlobalConfig } from '@storybook/testing-vue3'; - -// Storybook's preview file location -import * as globalStorybookConfig from './.storybook/preview'; - -setGlobalConfig(globalStorybookConfig); -``` diff --git a/docs/snippets/vue/storybook-testing-addon-optional-config.js.mdx b/docs/snippets/vue/storybook-testing-addon-optional-config.js.mdx new file mode 100644 index 000000000000..c2f2b12d1a5f --- /dev/null +++ b/docs/snippets/vue/storybook-testing-addon-optional-config.js.mdx @@ -0,0 +1,10 @@ +```js +// setupFile.js|ts + +// Storybook's preview file location +import * as globalStorybookConfig from './.storybook/preview'; + +import { setProjectAnnotations } from '@storybook/testing-vue3'; + +setProjectAnnotations(globalStorybookConfig); +``` diff --git a/docs/snippets/vue/storybook-testing-addon-optional-config.vite.js.mdx b/docs/snippets/vue/storybook-testing-addon-optional-config.vite.js.mdx new file mode 100644 index 000000000000..eec5a755b75a --- /dev/null +++ b/docs/snippets/vue/storybook-testing-addon-optional-config.vite.js.mdx @@ -0,0 +1,20 @@ +```js +// vitest.config.js + +import { defineConfig } from 'vitest/config'; +import { mergeConfig } from 'vite'; + +import viteConfig from './vite.config'; + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + globals: true, + environment: 'jsdom', + clearMocks: true, + setupFiles: './src/setupTests.js', //👈 Our configuration file enabled here + }, + }) +); +``` diff --git a/docs/snippets/vue/storybook-testing-addon-optional-config.vite.ts.mdx b/docs/snippets/vue/storybook-testing-addon-optional-config.vite.ts.mdx new file mode 100644 index 000000000000..bb74aa0295fe --- /dev/null +++ b/docs/snippets/vue/storybook-testing-addon-optional-config.vite.ts.mdx @@ -0,0 +1,21 @@ +```ts +// vitest.config.ts + +/// <reference types="vitest" /> +import { defineConfig } from 'vitest/config'; +import { mergeConfig } from 'vite'; + +import viteConfig from './vite.config'; + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + globals: true, + environment: 'jsdom', + clearMocks: true, + setupFiles: './src/setupTests.ts', //👈 Our configuration file enabled here + }, + }) +); +``` diff --git a/docs/snippets/vue/storybook-testing-library-install.npm.js.mdx b/docs/snippets/vue/storybook-testing-library-install.npm.js.mdx new file mode 100644 index 000000000000..c71c6a486789 --- /dev/null +++ b/docs/snippets/vue/storybook-testing-library-install.npm.js.mdx @@ -0,0 +1,3 @@ +```sh +npm install --save-dev @storybook/testing-vue3 +``` diff --git a/docs/snippets/vue/storybook-testing-library-install.pnpm.js.mdx b/docs/snippets/vue/storybook-testing-library-install.pnpm.js.mdx new file mode 100644 index 000000000000..8d079ae0b22f --- /dev/null +++ b/docs/snippets/vue/storybook-testing-library-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm add --save-dev @storybook/testing-vue3 +``` diff --git a/docs/snippets/vue/storybook-testing-library-install.yarn.js.mdx b/docs/snippets/vue/storybook-testing-library-install.yarn.js.mdx new file mode 100644 index 000000000000..ee260ff86a91 --- /dev/null +++ b/docs/snippets/vue/storybook-testing-library-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```sh +yarn add --dev @storybook/testing-vue3 +``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.2.js.mdx b/docs/snippets/vue/table-story-fully-customize-controls.2.js.mdx deleted file mode 100644 index e4772953b720..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.2.js.mdx +++ /dev/null @@ -1,44 +0,0 @@ -```js -// Table.stories.js - -import Table from './Table.vue'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory = { - render: (args, { argTypes }) => ({ - components: { Table }, - props: Object.keys(argTypes), - template: ` - <Table v-bind="$props"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.2.ts-4-9.mdx b/docs/snippets/vue/table-story-fully-customize-controls.2.ts-4-9.mdx deleted file mode 100644 index b415e3aad221..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.2.ts-4-9.mdx +++ /dev/null @@ -1,49 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/vue'; - -import Table from './Table.vue'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -} satisfies Meta<typeof Table>; - -export default meta; -type Story = StoryObj<typeof meta>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory: Story = { - render: (args, { argTypes }) => ({ - components: { Table }, - props: Object.keys(argTypes), - template: ` - <Table v-bind="$props"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.2.ts.mdx b/docs/snippets/vue/table-story-fully-customize-controls.2.ts.mdx deleted file mode 100644 index 43288ff53f70..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.2.ts.mdx +++ /dev/null @@ -1,49 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/vue'; - -import Table from './Table.vue'; - -const meta: Meta<typeof Table> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -export default meta; -type Story = StoryObj<typeof Table>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory: Story = { - render: (args, { argTypes }) => ({ - components: { Table }, - props: Object.keys(argTypes), - template: ` - <Table v-bind="$props"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.3.js.mdx b/docs/snippets/vue/table-story-fully-customize-controls.3.js.mdx deleted file mode 100644 index 507a53c7c92b..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.3.js.mdx +++ /dev/null @@ -1,46 +0,0 @@ -```js -// Table.stories.js - -import Table from './Table.vue'; - -export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory = { - render: (args) => ({ - components: { Table }, - setup() { - return { args }; - }, - template: ` - <Table v-bind="args"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.3.ts-4-9.mdx b/docs/snippets/vue/table-story-fully-customize-controls.3.ts-4-9.mdx deleted file mode 100644 index 30bb0911ab04..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.3.ts-4-9.mdx +++ /dev/null @@ -1,51 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/vue3'; - -import Table from './Table.vue'; - -const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -} satisfies Meta<typeof Table>; - -export default meta; -type Story = StoryObj<typeof meta>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory: Story = { - render: (args) => ({ - components: { Table }, - setup() { - return { args }; - }, - template: ` - <Table v-bind="args"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/table-story-fully-customize-controls.3.ts.mdx b/docs/snippets/vue/table-story-fully-customize-controls.3.ts.mdx deleted file mode 100644 index b3d5aed452ea..000000000000 --- a/docs/snippets/vue/table-story-fully-customize-controls.3.ts.mdx +++ /dev/null @@ -1,51 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/vue3'; - -import Table from './Table.vue'; - -const meta: Meta<typeof Table> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Custom Table', - component: Table, -}; - -export default meta; -type Story = StoryObj<typeof Table>; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/vue/api/csf - * to learn how to use render functions. - */ -export const TableStory: Story = { - render: (args) => ({ - components: { Table }, - setup() { - return { args }; - }, - template: ` - <Table v-bind="args"> - <tr v-for="(row, idx1) in data"> - <td v-for="(col, idx2) in row"> - {{ data[idx1][idx2] }} - </td> - </tr> - </Table> - `, - }), - args: { - //👇 This arg is for the story component - data: [ - [1, 2, 3], - [4, 5, 6], - ], - //👇 The remaining args get passed to the `Table` component - size: 'large', - }, -}; -``` diff --git a/docs/snippets/vue/storybook-testing-addon-optional-config-scripts.json.mdx b/docs/snippets/vue/vue-jest-optional-config-scripts.jest.js.mdx similarity index 100% rename from docs/snippets/vue/storybook-testing-addon-optional-config-scripts.json.mdx rename to docs/snippets/vue/vue-jest-optional-config-scripts.jest.js.mdx diff --git a/docs/snippets/vue/vue-jest-optional-config-scripts.jest.ts.mdx b/docs/snippets/vue/vue-jest-optional-config-scripts.jest.ts.mdx new file mode 100644 index 000000000000..6e0a504e6a0a --- /dev/null +++ b/docs/snippets/vue/vue-jest-optional-config-scripts.jest.ts.mdx @@ -0,0 +1,7 @@ +```json +{ + "scripts": { + "test": "jest --setupFiles ./setupFile.js" + } +} +``` diff --git a/docs/snippets/vue/your-component-with-decorator.js.mdx b/docs/snippets/vue/your-component-with-decorator.js.mdx index 419ae42a0a88..2bec032fb58a 100644 --- a/docs/snippets/vue/your-component-with-decorator.js.mdx +++ b/docs/snippets/vue/your-component-with-decorator.js.mdx @@ -4,11 +4,6 @@ import YourComponent from './YourComponent.vue'; export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [() => ({ template: '<div style="margin: 3em;"><story/></div>' })], }; diff --git a/docs/snippets/vue/your-component-with-decorator.ts-4-9.mdx b/docs/snippets/vue/your-component-with-decorator.ts-4-9.mdx index 3fd4953bda4c..2ef17e7d20a7 100644 --- a/docs/snippets/vue/your-component-with-decorator.ts-4-9.mdx +++ b/docs/snippets/vue/your-component-with-decorator.ts-4-9.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [() => ({ template: '<div style="margin: 3em;"><story/></div>' })], } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/vue/your-component-with-decorator.ts.mdx b/docs/snippets/vue/your-component-with-decorator.ts.mdx index a07d604a26d1..a67b925bf130 100644 --- a/docs/snippets/vue/your-component-with-decorator.ts.mdx +++ b/docs/snippets/vue/your-component-with-decorator.ts.mdx @@ -7,11 +7,6 @@ import type { Meta } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, decorators: [() => ({ template: '<div style="margin: 3em;"><story/></div>' })], }; diff --git a/docs/snippets/vue/your-component.2.js.mdx b/docs/snippets/vue/your-component.2.js.mdx index a03f07b25a3a..d9d14d4dadeb 100644 --- a/docs/snippets/vue/your-component.2.js.mdx +++ b/docs/snippets/vue/your-component.2.js.mdx @@ -5,11 +5,6 @@ import YourComponent from './YourComponent.vue'; //👇 This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/vue/your-component.2.ts-4-9.mdx b/docs/snippets/vue/your-component.2.ts-4-9.mdx index 0d316f737769..ed3a1a6cd67c 100644 --- a/docs/snippets/vue/your-component.2.ts-4-9.mdx +++ b/docs/snippets/vue/your-component.2.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import YourComponent from './YourComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/vue/your-component.2.ts.mdx b/docs/snippets/vue/your-component.2.ts.mdx index c198807240be..74dfd2ab8019 100644 --- a/docs/snippets/vue/your-component.2.ts.mdx +++ b/docs/snippets/vue/your-component.2.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue'; import YourComponent from './YourComponent.vue'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/vue/your-component.3.js.mdx b/docs/snippets/vue/your-component.3.js.mdx index 3944a4340c27..e95d708270f9 100644 --- a/docs/snippets/vue/your-component.3.js.mdx +++ b/docs/snippets/vue/your-component.3.js.mdx @@ -5,11 +5,6 @@ import YourComponent from './YourComponent.vue'; //👇 This default export determines where your story goes in the story list export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/vue/your-component.3.ts-4-9.mdx b/docs/snippets/vue/your-component.3.ts-4-9.mdx index 8d85373c0846..26fea976a609 100644 --- a/docs/snippets/vue/your-component.3.ts-4-9.mdx +++ b/docs/snippets/vue/your-component.3.ts-4-9.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, } satisfies Meta<typeof YourComponent>; diff --git a/docs/snippets/vue/your-component.3.ts.mdx b/docs/snippets/vue/your-component.3.ts.mdx index d29b797a4942..00a78194a414 100644 --- a/docs/snippets/vue/your-component.3.ts.mdx +++ b/docs/snippets/vue/your-component.3.ts.mdx @@ -6,11 +6,6 @@ import type { Meta, StoryObj } from '@storybook/vue3'; import YourComponent from './YourComponent.vue'; const meta: Meta<typeof YourComponent> = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'YourComponent', component: YourComponent, }; diff --git a/docs/snippets/web-components/addon-highlight-reset.js.mdx b/docs/snippets/web-components/addon-highlight-reset.js.mdx new file mode 100644 index 000000000000..120eb341e106 --- /dev/null +++ b/docs/snippets/web-components/addon-highlight-reset.js.mdx @@ -0,0 +1,23 @@ +```js +// MyComponent.stories.js + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +export default { + component: 'my-component', +}; + +export const ResetHighlight = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return story(); + }, + ], +}; +``` diff --git a/docs/snippets/web-components/addon-highlight-reset.ts.mdx b/docs/snippets/web-components/addon-highlight-reset.ts.mdx new file mode 100644 index 000000000000..a226b045580f --- /dev/null +++ b/docs/snippets/web-components/addon-highlight-reset.ts.mdx @@ -0,0 +1,24 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; + +export default { + component: 'my-component', +}; + +export const ResetHighlight: Story = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(RESET_HIGHLIGHT); //👈 Remove previously highlighted elements + emit(HIGHLIGHT, { + elements: ['header', 'section', 'footer'], + }); + return story(); + }, + ], +}; +``` diff --git a/docs/snippets/web-components/app-story-with-mock.js.mdx b/docs/snippets/web-components/app-story-with-mock.js.mdx index e47c6c8659f9..2d5b9a38f63a 100644 --- a/docs/snippets/web-components/app-story-with-mock.js.mdx +++ b/docs/snippets/web-components/app-story-with-mock.js.mdx @@ -2,7 +2,6 @@ // App.stories.js export default { - title: 'App', component: 'demo-app', }; diff --git a/docs/snippets/web-components/app-story-with-mock.ts.mdx b/docs/snippets/web-components/app-story-with-mock.ts.mdx index 2834b34f9bee..e8de25628bd7 100644 --- a/docs/snippets/web-components/app-story-with-mock.ts.mdx +++ b/docs/snippets/web-components/app-story-with-mock.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'App', component: 'demo-app', }; diff --git a/docs/snippets/web-components/arg-types-control.js.mdx b/docs/snippets/web-components/arg-types-control.js.mdx new file mode 100644 index 000000000000..caa3f03d85dc --- /dev/null +++ b/docs/snippets/web-components/arg-types-control.js.mdx @@ -0,0 +1,17 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-control.ts.mdx b/docs/snippets/web-components/arg-types-control.ts.mdx new file mode 100644 index 000000000000..7c989cd85cb4 --- /dev/null +++ b/docs/snippets/web-components/arg-types-control.ts.mdx @@ -0,0 +1,21 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + value: { + control: { + type: 'number', + min: 0, + max: 100, + step: 10, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-default-value.js.mdx b/docs/snippets/web-components/arg-types-default-value.js.mdx new file mode 100644 index 000000000000..1adbe70fb486 --- /dev/null +++ b/docs/snippets/web-components/arg-types-default-value.js.mdx @@ -0,0 +1,17 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + value: { + // ⛔️ Deprecated, do not use + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-default-value.ts.mdx b/docs/snippets/web-components/arg-types-default-value.ts.mdx new file mode 100644 index 000000000000..73a989becbbe --- /dev/null +++ b/docs/snippets/web-components/arg-types-default-value.ts.mdx @@ -0,0 +1,21 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + value: { + // ⛔️ Deprecated, do not use + defaultValue: 0, + }, + }, + // ✅ Do this instead + args: { + value: 0, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-description.js.mdx b/docs/snippets/web-components/arg-types-description.js.mdx new file mode 100644 index 000000000000..54dd87327e3e --- /dev/null +++ b/docs/snippets/web-components/arg-types-description.js.mdx @@ -0,0 +1,12 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-description.ts.mdx b/docs/snippets/web-components/arg-types-description.ts.mdx new file mode 100644 index 000000000000..6ee86c3b3f0e --- /dev/null +++ b/docs/snippets/web-components/arg-types-description.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + value: { + description: 'The value of the slider', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-if.js.mdx b/docs/snippets/web-components/arg-types-if.js.mdx new file mode 100644 index 000000000000..2b0f86869835 --- /dev/null +++ b/docs/snippets/web-components/arg-types-if.js.mdx @@ -0,0 +1,34 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-if.ts.mdx b/docs/snippets/web-components/arg-types-if.ts.mdx new file mode 100644 index 000000000000..80d27cf5b83a --- /dev/null +++ b/docs/snippets/web-components/arg-types-if.ts.mdx @@ -0,0 +1,38 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + parent: { control: 'select', options: ['one', 'two', 'three'] }, + + // 👇 Only shown when `parent` arg exists + parentExists: { if: { arg: 'parent', exists: true } }, + + // 👇 Only shown when `parent` arg does not exist + parentDoesNotExist: { if: { arg: 'parent', exists: false } }, + + // 👇 Only shown when `parent` arg value is truthy + parentIsTruthy: { if: { arg: 'parent' } }, + parentIsTruthyVerbose: { if: { arg: 'parent', truthy: true } }, + + // 👇 Only shown when `parent` arg value is not truthy + parentIsNotTruthy: { if: { arg: 'parent', truthy: false } }, + + // 👇 Only shown when `parent` arg value is 'three' + parentIsEqToValue: { if: { arg: 'parent', eq: 'three' } }, + + // 👇 Only shown when `parent` arg value is not 'three' + parentIsNotEqToValue: { if: { arg: 'parent', neq: 'three' } }, + + // Each of the above can also be conditional on the value of a globalType, e.g.: + + // 👇 Only shown when `theme` global exists + parentExists: { if: { global: 'theme', exists: true } }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-in-meta.js.mdx b/docs/snippets/web-components/arg-types-in-meta.js.mdx new file mode 100644 index 000000000000..b4522d4b5464 --- /dev/null +++ b/docs/snippets/web-components/arg-types-in-meta.js.mdx @@ -0,0 +1,14 @@ +```js +// Button.stories.js + +export default { + component: 'demo-button', + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-in-meta.ts.mdx b/docs/snippets/web-components/arg-types-in-meta.ts.mdx new file mode 100644 index 000000000000..bdc172197117 --- /dev/null +++ b/docs/snippets/web-components/arg-types-in-meta.ts.mdx @@ -0,0 +1,18 @@ +```ts +// Button.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-button', + argTypes: { + // 👇 All Button stories expect a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-in-story.js.mdx b/docs/snippets/web-components/arg-types-in-story.js.mdx new file mode 100644 index 000000000000..b42be873c969 --- /dev/null +++ b/docs/snippets/web-components/arg-types-in-story.js.mdx @@ -0,0 +1,17 @@ +```js +// Button.stories.js + +export default { + component: 'demo-button', +}; + +export const Basic = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-in-story.ts.mdx b/docs/snippets/web-components/arg-types-in-story.ts.mdx new file mode 100644 index 000000000000..8c7eef9efacd --- /dev/null +++ b/docs/snippets/web-components/arg-types-in-story.ts.mdx @@ -0,0 +1,23 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-button', +}; + +export default meta; + +type Story = StoryObj<typeof Button>; + +export const Basic: Story = { + argTypes: { + // 👇 This story expects a label arg + label: { + control: 'text', + description: 'Overwritten description', + }, + }, +}; +``` diff --git a/docs/snippets/web-components/my-component-argtypes-with-mapping.js.mdx b/docs/snippets/web-components/arg-types-mapping.js.mdx similarity index 74% rename from docs/snippets/web-components/my-component-argtypes-with-mapping.js.mdx rename to docs/snippets/web-components/arg-types-mapping.js.mdx index a9bd4de8cbf4..65b296831f75 100644 --- a/docs/snippets/web-components/my-component-argtypes-with-mapping.js.mdx +++ b/docs/snippets/web-components/arg-types-mapping.js.mdx @@ -1,11 +1,10 @@ ```js -// MyComponent.stories.js +// Example.stories.js import { html } from 'lit'; export default { - title: 'MyComponent', - component: 'demo-my-component', + component: 'demo-example', argTypes: { label: { options: ['Normal', 'Bold', 'Italic'], diff --git a/docs/snippets/web-components/my-component-argtypes-with-mapping.ts.mdx b/docs/snippets/web-components/arg-types-mapping.ts.mdx similarity index 79% rename from docs/snippets/web-components/my-component-argtypes-with-mapping.ts.mdx rename to docs/snippets/web-components/arg-types-mapping.ts.mdx index 0dc8d957d96e..1f8bdc9f48f2 100644 --- a/docs/snippets/web-components/my-component-argtypes-with-mapping.ts.mdx +++ b/docs/snippets/web-components/arg-types-mapping.ts.mdx @@ -1,13 +1,12 @@ ```ts -// MyComponent.stories.ts +// Example.stories.ts import type { Meta } from '@storybook/web-components'; import { html } from 'lit'; const meta: Meta = { - title: 'MyComponent', - component: 'demo-my-component', + component: 'demo-example', argTypes: { label: { options: ['Normal', 'Bold', 'Italic'], diff --git a/docs/snippets/web-components/arg-types-name.js.mdx b/docs/snippets/web-components/arg-types-name.js.mdx new file mode 100644 index 000000000000..a87c2fdf2704 --- /dev/null +++ b/docs/snippets/web-components/arg-types-name.js.mdx @@ -0,0 +1,12 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-name.ts.mdx b/docs/snippets/web-components/arg-types-name.ts.mdx new file mode 100644 index 000000000000..117ee4dc2c4b --- /dev/null +++ b/docs/snippets/web-components/arg-types-name.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + actualArgName: { + name: 'Friendly name', + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-options.js.mdx b/docs/snippets/web-components/arg-types-options.js.mdx new file mode 100644 index 000000000000..a49ccacc9fc4 --- /dev/null +++ b/docs/snippets/web-components/arg-types-options.js.mdx @@ -0,0 +1,12 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-options.ts.mdx b/docs/snippets/web-components/arg-types-options.ts.mdx new file mode 100644 index 000000000000..912c035dd30d --- /dev/null +++ b/docs/snippets/web-components/arg-types-options.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + icon: { + options: ['arrow-up', 'arrow-down', 'loading'], + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-table.js.mdx b/docs/snippets/web-components/arg-types-table.js.mdx new file mode 100644 index 000000000000..a891b937c8ec --- /dev/null +++ b/docs/snippets/web-components/arg-types-table.js.mdx @@ -0,0 +1,15 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-table.ts.mdx b/docs/snippets/web-components/arg-types-table.ts.mdx new file mode 100644 index 000000000000..0756a77f4d9e --- /dev/null +++ b/docs/snippets/web-components/arg-types-table.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + value: { + table: { + defaultValue: { summary: 0 }, + type: { summary: 'number' }, + }, + }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/arg-types-type.js.mdx b/docs/snippets/web-components/arg-types-type.js.mdx new file mode 100644 index 000000000000..4254ebee1df5 --- /dev/null +++ b/docs/snippets/web-components/arg-types-type.js.mdx @@ -0,0 +1,10 @@ +```js +// Example.stories.js + +export default { + component: 'demo-example', + argTypes: { + value: { type: 'number' }, + }, +}; +``` diff --git a/docs/snippets/web-components/arg-types-type.ts.mdx b/docs/snippets/web-components/arg-types-type.ts.mdx new file mode 100644 index 000000000000..c4b25ec2ba27 --- /dev/null +++ b/docs/snippets/web-components/arg-types-type.ts.mdx @@ -0,0 +1,14 @@ +```ts +// Example.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'demo-example', + argTypes: { + value: { type: 'number' }, + }, +}; + +export default meta; +``` diff --git a/docs/snippets/web-components/button-group-story.js.mdx b/docs/snippets/web-components/button-group-story.js.mdx index 5e684c80d36f..956f7d5b4e2f 100644 --- a/docs/snippets/web-components/button-group-story.js.mdx +++ b/docs/snippets/web-components/button-group-story.js.mdx @@ -5,7 +5,6 @@ import * as ButtonStories from './Button.stories'; export default { - title: 'ButtonGroup', component: 'demo-button-group', }; diff --git a/docs/snippets/web-components/button-group-story.ts.mdx b/docs/snippets/web-components/button-group-story.ts.mdx index 90779953a0cd..6e53fb91ffea 100644 --- a/docs/snippets/web-components/button-group-story.ts.mdx +++ b/docs/snippets/web-components/button-group-story.ts.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import * as ButtonStories from './Button.stories'; const meta: Meta = { - title: 'ButtonGroup', component: 'demo-button-group', }; export default meta; diff --git a/docs/snippets/web-components/button-story-action-event-handle.js.mdx b/docs/snippets/web-components/button-story-action-event-handle.js.mdx index 0a528fcd8bc1..ff5eb2da04ba 100644 --- a/docs/snippets/web-components/button-story-action-event-handle.js.mdx +++ b/docs/snippets/web-components/button-story-action-event-handle.js.mdx @@ -4,7 +4,6 @@ import { withActions } from '@storybook/addon-actions/decorator'; export default { - title: 'Button', component: 'demo-button', parameters: { actions: { diff --git a/docs/snippets/web-components/button-story-action-event-handle.ts.mdx b/docs/snippets/web-components/button-story-action-event-handle.ts.mdx index 133f4f627107..67b76d259a4e 100644 --- a/docs/snippets/web-components/button-story-action-event-handle.ts.mdx +++ b/docs/snippets/web-components/button-story-action-event-handle.ts.mdx @@ -6,7 +6,6 @@ import type { Meta } from '@storybook/web-components'; import { withActions } from '@storybook/addon-actions/decorator'; const meta: Meta = { - title: 'Button', component: 'demo-button', parameters: { actions: { diff --git a/docs/snippets/web-components/button-story-argtypes-with-categories.js.mdx b/docs/snippets/web-components/button-story-argtypes-with-categories.js.mdx index d211dc4c48b6..aebfd72d2581 100644 --- a/docs/snippets/web-components/button-story-argtypes-with-categories.js.mdx +++ b/docs/snippets/web-components/button-story-argtypes-with-categories.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/web-components/button-story-argtypes-with-categories.ts.mdx b/docs/snippets/web-components/button-story-argtypes-with-categories.ts.mdx index ef1e94df2cdb..d052b262bd5e 100644 --- a/docs/snippets/web-components/button-story-argtypes-with-categories.ts.mdx +++ b/docs/snippets/web-components/button-story-argtypes-with-categories.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/web-components/button-story-argtypes-with-subcategories.js.mdx b/docs/snippets/web-components/button-story-argtypes-with-subcategories.js.mdx index 8ba7cca7da32..ae39da3579e0 100644 --- a/docs/snippets/web-components/button-story-argtypes-with-subcategories.js.mdx +++ b/docs/snippets/web-components/button-story-argtypes-with-subcategories.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/web-components/button-story-argtypes-with-subcategories.ts.mdx b/docs/snippets/web-components/button-story-argtypes-with-subcategories.ts.mdx index 400732c1f1a1..8124b83554bc 100644 --- a/docs/snippets/web-components/button-story-argtypes-with-subcategories.ts.mdx +++ b/docs/snippets/web-components/button-story-argtypes-with-subcategories.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { // Assigns the argTypes to the Colors category diff --git a/docs/snippets/web-components/button-story-auto-docs.js.mdx b/docs/snippets/web-components/button-story-auto-docs.js.mdx index 2577ae6959e9..c45b64d54fde 100644 --- a/docs/snippets/web-components/button-story-auto-docs.js.mdx +++ b/docs/snippets/web-components/button-story-auto-docs.js.mdx @@ -2,10 +2,9 @@ // Button.stories.js export default { - title: 'Button', component: 'custom-button', //👇 Enables auto-generated documentation for the component story - tags: ['docsPage'], + tags: ['autodocs'], argTypes: { backgroundColor: { control: 'color' }, }, diff --git a/docs/snippets/web-components/button-story-auto-docs.ts.mdx b/docs/snippets/web-components/button-story-auto-docs.ts.mdx index 30fbef167fd9..10bed84c1567 100644 --- a/docs/snippets/web-components/button-story-auto-docs.ts.mdx +++ b/docs/snippets/web-components/button-story-auto-docs.ts.mdx @@ -4,10 +4,9 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const Meta: Meta = { - title: 'Button', component: 'custom-button', //👇 Enables auto-generated documentation for the component story - tags: ['docsPage'], + tags: ['autodocs'], argTypes: { backgroundColor: { control: 'color' }, }, diff --git a/docs/snippets/web-components/button-story-baseline.ts.mdx b/docs/snippets/web-components/button-story-baseline.ts.mdx index f81918843d78..1ac5690369a1 100644 --- a/docs/snippets/web-components/button-story-baseline.ts.mdx +++ b/docs/snippets/web-components/button-story-baseline.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { Button } from './Button'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-click-handler-args.js.mdx b/docs/snippets/web-components/button-story-click-handler-args.js.mdx index 0a2c67226f57..6afc85655fc3 100644 --- a/docs/snippets/web-components/button-story-click-handler-args.js.mdx +++ b/docs/snippets/web-components/button-story-click-handler-args.js.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import { action } from '@storybook/addon-actions'; export default { - title: 'Button', component: 'custom-button', }; diff --git a/docs/snippets/web-components/button-story-click-handler-args.ts.mdx b/docs/snippets/web-components/button-story-click-handler-args.ts.mdx index 7226f89b8894..6e3d484c6033 100644 --- a/docs/snippets/web-components/button-story-click-handler-args.ts.mdx +++ b/docs/snippets/web-components/button-story-click-handler-args.ts.mdx @@ -8,7 +8,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { action } from '@storybook/addon-actions'; const meta: Meta = { - title: 'Button', component: 'custom-button', }; diff --git a/docs/snippets/web-components/button-story-click-handler-simplificated.js.mdx b/docs/snippets/web-components/button-story-click-handler-simplificated.js.mdx index 5436172ae94e..ad0ac5a99e12 100644 --- a/docs/snippets/web-components/button-story-click-handler-simplificated.js.mdx +++ b/docs/snippets/web-components/button-story-click-handler-simplificated.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'custom-button', argTypes: { onClick: { action: 'onClick' }, diff --git a/docs/snippets/web-components/button-story-click-handler-simplificated.ts.mdx b/docs/snippets/web-components/button-story-click-handler-simplificated.ts.mdx index c5b95a902ff0..b4acbace86f5 100644 --- a/docs/snippets/web-components/button-story-click-handler-simplificated.ts.mdx +++ b/docs/snippets/web-components/button-story-click-handler-simplificated.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'custom-button', argTypes: { onClick: { action: 'onClick' }, diff --git a/docs/snippets/web-components/button-story-click-handler.js.mdx b/docs/snippets/web-components/button-story-click-handler.js.mdx index 1f1ff9f7e810..b42a3778224b 100644 --- a/docs/snippets/web-components/button-story-click-handler.js.mdx +++ b/docs/snippets/web-components/button-story-click-handler.js.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import { action } from '@storybook/addon-actions'; export default { - title: 'Button', component: 'custom-button', }; diff --git a/docs/snippets/web-components/button-story-click-handler.ts.mdx b/docs/snippets/web-components/button-story-click-handler.ts.mdx index 701032cac230..32d8c5e5a8b8 100644 --- a/docs/snippets/web-components/button-story-click-handler.ts.mdx +++ b/docs/snippets/web-components/button-story-click-handler.ts.mdx @@ -8,7 +8,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { action } from '@storybook/addon-actions'; const meta: Meta = { - title: 'Button', component: 'custom-button', }; diff --git a/docs/snippets/web-components/button-story-component-args-primary.js.mdx b/docs/snippets/web-components/button-story-component-args-primary.js.mdx index d7e4f5b73638..bc5387444526 100644 --- a/docs/snippets/web-components/button-story-component-args-primary.js.mdx +++ b/docs/snippets/web-components/button-story-component-args-primary.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', // 👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/web-components/button-story-component-args-primary.ts.mdx b/docs/snippets/web-components/button-story-component-args-primary.ts.mdx index c5028c6cb040..abdbfdff0c98 100644 --- a/docs/snippets/web-components/button-story-component-args-primary.ts.mdx +++ b/docs/snippets/web-components/button-story-component-args-primary.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', // 👇 Creates specific argTypes argTypes: { diff --git a/docs/snippets/web-components/button-story-component-decorator.js.mdx b/docs/snippets/web-components/button-story-component-decorator.js.mdx index be22c2a17b70..5576589ab27f 100644 --- a/docs/snippets/web-components/button-story-component-decorator.js.mdx +++ b/docs/snippets/web-components/button-story-component-decorator.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'Button', component: 'demo-button', decorators: [(story) => html`<div style="margin: 3em">${story()}</div>`], }; diff --git a/docs/snippets/web-components/button-story-component-decorator.ts.mdx b/docs/snippets/web-components/button-story-component-decorator.ts.mdx index 0d148abc88d5..6cd86765f50b 100644 --- a/docs/snippets/web-components/button-story-component-decorator.ts.mdx +++ b/docs/snippets/web-components/button-story-component-decorator.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; const meta: Meta = { - title: 'Button', component: 'demo-button', decorators: [(story) => html`<div style="margin: 3em">${story()}</div>`], }; diff --git a/docs/snippets/web-components/button-story-controls-primary-variant.js.mdx b/docs/snippets/web-components/button-story-controls-primary-variant.js.mdx index a3a2ef0fe589..e188de89cbc9 100644 --- a/docs/snippets/web-components/button-story-controls-primary-variant.js.mdx +++ b/docs/snippets/web-components/button-story-controls-primary-variant.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-controls-primary-variant.ts.mdx b/docs/snippets/web-components/button-story-controls-primary-variant.ts.mdx index 72bf2a1499a5..dd31c77c00f5 100644 --- a/docs/snippets/web-components/button-story-controls-primary-variant.ts.mdx +++ b/docs/snippets/web-components/button-story-controls-primary-variant.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-controls-radio-group.js.mdx b/docs/snippets/web-components/button-story-controls-radio-group.js.mdx index 1deeff4bf51b..6e7599153253 100644 --- a/docs/snippets/web-components/button-story-controls-radio-group.js.mdx +++ b/docs/snippets/web-components/button-story-controls-radio-group.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', argTypes: { variant: { diff --git a/docs/snippets/web-components/button-story-controls-radio-group.ts.mdx b/docs/snippets/web-components/button-story-controls-radio-group.ts.mdx index 683a6493f8b3..d68f1fd8c8b6 100644 --- a/docs/snippets/web-components/button-story-controls-radio-group.ts.mdx +++ b/docs/snippets/web-components/button-story-controls-radio-group.ts.mdx @@ -1,11 +1,9 @@ ```ts // Button.stories.ts -// Replace your-framework with the name of your framework import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { variant: { diff --git a/docs/snippets/web-components/button-story-decorator.js.mdx b/docs/snippets/web-components/button-story-decorator.js.mdx index 97f8980d28e1..5291a359acf5 100644 --- a/docs/snippets/web-components/button-story-decorator.js.mdx +++ b/docs/snippets/web-components/button-story-decorator.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-decorator.ts.mdx b/docs/snippets/web-components/button-story-decorator.ts.mdx index de29e8c44d07..033fe4eb5bfe 100644 --- a/docs/snippets/web-components/button-story-decorator.ts.mdx +++ b/docs/snippets/web-components/button-story-decorator.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-default-export-with-component.js.mdx b/docs/snippets/web-components/button-story-default-export-with-component.js.mdx index 1db6ccfc2f33..ac5eb51344b6 100644 --- a/docs/snippets/web-components/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/web-components/button-story-default-export-with-component.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; ``` diff --git a/docs/snippets/web-components/button-story-disable-addon.js.mdx b/docs/snippets/web-components/button-story-disable-addon.js.mdx index 9fd3bb8a78d3..b3c12110dc9b 100644 --- a/docs/snippets/web-components/button-story-disable-addon.js.mdx +++ b/docs/snippets/web-components/button-story-disable-addon.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', parameters: { myAddon: { disable: true }, // Disables the addon diff --git a/docs/snippets/web-components/button-story-disable-addon.ts.mdx b/docs/snippets/web-components/button-story-disable-addon.ts.mdx index 0448cdf5f489..0ad564b6fb24 100644 --- a/docs/snippets/web-components/button-story-disable-addon.ts.mdx +++ b/docs/snippets/web-components/button-story-disable-addon.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', parameters: { myAddon: { disable: true }, // Disables the addon diff --git a/docs/snippets/web-components/button-story-hide-nocontrols-warning.js.mdx b/docs/snippets/web-components/button-story-hide-nocontrols-warning.js.mdx index 013fc1d95b85..d525dcb8faf9 100644 --- a/docs/snippets/web-components/button-story-hide-nocontrols-warning.js.mdx +++ b/docs/snippets/web-components/button-story-hide-nocontrols-warning.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-hide-nocontrols-warning.ts.mdx b/docs/snippets/web-components/button-story-hide-nocontrols-warning.ts.mdx index 65adf26ea9df..ac2dd28b43d6 100644 --- a/docs/snippets/web-components/button-story-hide-nocontrols-warning.ts.mdx +++ b/docs/snippets/web-components/button-story-hide-nocontrols-warning.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-hoisted.ts.mdx b/docs/snippets/web-components/button-story-hoisted.ts.mdx index baf7d0ab2bfc..229356102a70 100644 --- a/docs/snippets/web-components/button-story-hoisted.ts.mdx +++ b/docs/snippets/web-components/button-story-hoisted.ts.mdx @@ -1,7 +1,7 @@ ```ts // Button.stories.ts -import type { Meta, Storybook } from '@storybook/your-framework'; +import type { Meta, StoryObj } from '@storybook/your-framework'; const meta: Meta = { title: 'Design System/Atoms/Button', diff --git a/docs/snippets/web-components/button-story-matching-argtypes.js.mdx b/docs/snippets/web-components/button-story-matching-argtypes.js.mdx index 067c2540865f..19e76aa44805 100644 --- a/docs/snippets/web-components/button-story-matching-argtypes.js.mdx +++ b/docs/snippets/web-components/button-story-matching-argtypes.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', parameters: { actions: { argTypesRegex: '^on.*' } }, }; diff --git a/docs/snippets/web-components/button-story-matching-argtypes.ts.mdx b/docs/snippets/web-components/button-story-matching-argtypes.ts.mdx index ab7655c2f84a..6192762d4670 100644 --- a/docs/snippets/web-components/button-story-matching-argtypes.ts.mdx +++ b/docs/snippets/web-components/button-story-matching-argtypes.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', parameters: { actions: { argTypesRegex: '^on.*' } }, }; diff --git a/docs/snippets/web-components/button-story-primary-composition.js.mdx b/docs/snippets/web-components/button-story-primary-composition.js.mdx index cebd20067e42..971b19a40f60 100644 --- a/docs/snippets/web-components/button-story-primary-composition.js.mdx +++ b/docs/snippets/web-components/button-story-primary-composition.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-primary-composition.ts.mdx b/docs/snippets/web-components/button-story-primary-composition.ts.mdx index 5f6441c6f4ee..74a1db41c188 100644 --- a/docs/snippets/web-components/button-story-primary-composition.ts.mdx +++ b/docs/snippets/web-components/button-story-primary-composition.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-primary-long-name.js.mdx b/docs/snippets/web-components/button-story-primary-long-name.js.mdx index 464ddc8e466f..288aac913191 100644 --- a/docs/snippets/web-components/button-story-primary-long-name.js.mdx +++ b/docs/snippets/web-components/button-story-primary-long-name.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-primary-long-name.ts.mdx b/docs/snippets/web-components/button-story-primary-long-name.ts.mdx index 0f379cd12b39..8afe31185b74 100644 --- a/docs/snippets/web-components/button-story-primary-long-name.ts.mdx +++ b/docs/snippets/web-components/button-story-primary-long-name.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-rename-story.js.mdx b/docs/snippets/web-components/button-story-rename-story.js.mdx index 4025faac0cab..a513b8a06d69 100644 --- a/docs/snippets/web-components/button-story-rename-story.js.mdx +++ b/docs/snippets/web-components/button-story-rename-story.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-rename-story.ts.mdx b/docs/snippets/web-components/button-story-rename-story.ts.mdx index 2b53733285cd..92fa9661a9d6 100644 --- a/docs/snippets/web-components/button-story-rename-story.ts.mdx +++ b/docs/snippets/web-components/button-story-rename-story.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-using-args.js.mdx b/docs/snippets/web-components/button-story-using-args.js.mdx index 6675d09eef9f..e030adc5f449 100644 --- a/docs/snippets/web-components/button-story-using-args.js.mdx +++ b/docs/snippets/web-components/button-story-using-args.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-using-args.ts.mdx b/docs/snippets/web-components/button-story-using-args.ts.mdx index 11a4c622ce99..88f568a2504d 100644 --- a/docs/snippets/web-components/button-story-using-args.ts.mdx +++ b/docs/snippets/web-components/button-story-using-args.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { Button } from './Button'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-with-args.js.mdx b/docs/snippets/web-components/button-story-with-args.js.mdx index 3ebe26d9844b..c1bfcfc2c893 100644 --- a/docs/snippets/web-components/button-story-with-args.js.mdx +++ b/docs/snippets/web-components/button-story-with-args.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story-with-args.ts.mdx b/docs/snippets/web-components/button-story-with-args.ts.mdx index 1d4380b34e05..499ac88de429 100644 --- a/docs/snippets/web-components/button-story-with-args.ts.mdx +++ b/docs/snippets/web-components/button-story-with-args.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/button-story-with-blue-args.js.mdx b/docs/snippets/web-components/button-story-with-blue-args.js.mdx index f5d4354f9edf..4ace9d6c0a83 100644 --- a/docs/snippets/web-components/button-story-with-blue-args.js.mdx +++ b/docs/snippets/web-components/button-story-with-blue-args.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/web-components/button-story-with-blue-args.ts.mdx b/docs/snippets/web-components/button-story-with-blue-args.ts.mdx index 9b2065350142..a0372aaafdda 100644 --- a/docs/snippets/web-components/button-story-with-blue-args.ts.mdx +++ b/docs/snippets/web-components/button-story-with-blue-args.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', //👇 Creates specific parameters for the story parameters: { diff --git a/docs/snippets/web-components/button-story-with-emojis.js.mdx b/docs/snippets/web-components/button-story-with-emojis.js.mdx index 36433ffdd8e6..071c1273d6b6 100644 --- a/docs/snippets/web-components/button-story-with-emojis.js.mdx +++ b/docs/snippets/web-components/button-story-with-emojis.js.mdx @@ -4,10 +4,14 @@ import { html } from 'lit'; export default { - title: 'Button', component: 'demo-button', }; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/web-components/api/csf + * to learn how to use render functions. + */ export const Primary = { render: () => html`<demo-button .background="#ff0" .label="Button"></demo-button>`, }; diff --git a/docs/snippets/web-components/button-story-with-emojis.ts.mdx b/docs/snippets/web-components/button-story-with-emojis.ts.mdx index b24a11b63e06..5bf8d8c6f79b 100644 --- a/docs/snippets/web-components/button-story-with-emojis.ts.mdx +++ b/docs/snippets/web-components/button-story-with-emojis.ts.mdx @@ -6,13 +6,17 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; type Story = StoryObj; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/web-components/api/csf + * to learn how to use render functions. + */ export const Primary: Story = { render: () => html`<demo-button .background="#ff0" .label="Button"></demo-button>`, }; diff --git a/docs/snippets/web-components/button-story.js.mdx b/docs/snippets/web-components/button-story.js.mdx index 36e4ce0460a9..04a9a0831f2d 100644 --- a/docs/snippets/web-components/button-story.js.mdx +++ b/docs/snippets/web-components/button-story.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/button-story.ts.mdx b/docs/snippets/web-components/button-story.ts.mdx index e0800d7b0369..2a9f519318fe 100644 --- a/docs/snippets/web-components/button-story.ts.mdx +++ b/docs/snippets/web-components/button-story.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/checkbox-story-csf.ts.mdx b/docs/snippets/web-components/checkbox-story-csf.ts.mdx index 57e62b497e34..d5069a0b3d43 100644 --- a/docs/snippets/web-components/checkbox-story-csf.ts.mdx +++ b/docs/snippets/web-components/checkbox-story-csf.ts.mdx @@ -4,8 +4,7 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Checkbox', - component: 'checkbox', + component: 'checkbox-element', }; export default meta; diff --git a/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.js.mdx b/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.js.mdx index a383b79f5a66..7ca861999e43 100644 --- a/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.js.mdx +++ b/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.ts.mdx b/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.ts.mdx index f0d06e12ca21..6e2304a6beab 100644 --- a/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.ts.mdx +++ b/docs/snippets/web-components/component-story-conditional-controls-mutual-exclusion.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { // Button can be passed a label or an image, not both diff --git a/docs/snippets/web-components/component-story-conditional-controls-toggle.js.mdx b/docs/snippets/web-components/component-story-conditional-controls-toggle.js.mdx index 3909ac5023bd..a2897b3a92da 100644 --- a/docs/snippets/web-components/component-story-conditional-controls-toggle.js.mdx +++ b/docs/snippets/web-components/component-story-conditional-controls-toggle.js.mdx @@ -2,12 +2,11 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/web-components/component-story-conditional-controls-toggle.ts.mdx b/docs/snippets/web-components/component-story-conditional-controls-toggle.ts.mdx index b1553d5f1419..b38aac5d379a 100644 --- a/docs/snippets/web-components/component-story-conditional-controls-toggle.ts.mdx +++ b/docs/snippets/web-components/component-story-conditional-controls-toggle.ts.mdx @@ -4,12 +4,11 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { - label: { control: 'text' }, // always shows + label: { control: 'text' }, // Always shows the control advanced: { control: 'boolean' }, - // Below are only included when advanced is true + // Only enabled if advanced is true margin: { control: 'number', if: { arg: 'advanced' } }, padding: { control: 'number', if: { arg: 'advanced' } }, cornerRadius: { control: 'number', if: { arg: 'advanced' } }, diff --git a/docs/snippets/web-components/component-story-custom-args-mapping.js.mdx b/docs/snippets/web-components/component-story-custom-args-mapping.js.mdx index 906e150c5a72..913e601abd29 100644 --- a/docs/snippets/web-components/component-story-custom-args-mapping.js.mdx +++ b/docs/snippets/web-components/component-story-custom-args-mapping.js.mdx @@ -6,7 +6,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; export default { - title: 'Button', component: 'demo-button', argTypes: { arrow: { diff --git a/docs/snippets/web-components/component-story-custom-args-mapping.ts.mdx b/docs/snippets/web-components/component-story-custom-args-mapping.ts.mdx index e47c7b24896e..c0d8f01cb70b 100644 --- a/docs/snippets/web-components/component-story-custom-args-mapping.ts.mdx +++ b/docs/snippets/web-components/component-story-custom-args-mapping.ts.mdx @@ -8,7 +8,6 @@ import { ArrowUp, ArrowDown, ArrowLeft, ArrowRight } from './icons'; const arrows = { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; const meta: Meta = { - title: 'Button', component: 'demo-button', argTypes: { arrow: { diff --git a/docs/snippets/web-components/component-story-custom-params.js.mdx b/docs/snippets/web-components/component-story-custom-params.js.mdx index f80255925a41..c6d66695a4b7 100644 --- a/docs/snippets/web-components/component-story-custom-params.js.mdx +++ b/docs/snippets/web-components/component-story-custom-params.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/component-story-custom-params.ts.mdx b/docs/snippets/web-components/component-story-custom-params.ts.mdx index 5302a7c2458a..7d5f8917d402 100644 --- a/docs/snippets/web-components/component-story-custom-params.ts.mdx +++ b/docs/snippets/web-components/component-story-custom-params.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; export default meta; diff --git a/docs/snippets/web-components/component-story-disable-controls-alt.js.mdx b/docs/snippets/web-components/component-story-disable-controls-alt.js.mdx index 9c5c6dc1952d..fde027b0c20f 100644 --- a/docs/snippets/web-components/component-story-disable-controls-alt.js.mdx +++ b/docs/snippets/web-components/component-story-disable-controls-alt.js.mdx @@ -2,7 +2,6 @@ // YourComponent.stories.js export default { - title: 'YourComponent', component: 'your-component', argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/web-components/component-story-disable-controls-alt.ts.mdx b/docs/snippets/web-components/component-story-disable-controls-alt.ts.mdx index 90b85e136f3f..7b911c9f82c2 100644 --- a/docs/snippets/web-components/component-story-disable-controls-alt.ts.mdx +++ b/docs/snippets/web-components/component-story-disable-controls-alt.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'YourComponent', component: 'your-component', argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/web-components/component-story-disable-controls-regex.js.mdx b/docs/snippets/web-components/component-story-disable-controls-regex.js.mdx index 0647e8da799e..8a2ab40890ea 100644 --- a/docs/snippets/web-components/component-story-disable-controls-regex.js.mdx +++ b/docs/snippets/web-components/component-story-disable-controls-regex.js.mdx @@ -2,7 +2,6 @@ // YourComponent.stories.js export default { - title: 'YourComponent', component: 'your-component', }; diff --git a/docs/snippets/web-components/component-story-disable-controls-regex.ts.mdx b/docs/snippets/web-components/component-story-disable-controls-regex.ts.mdx index f818de90d5b6..9e254537af1d 100644 --- a/docs/snippets/web-components/component-story-disable-controls-regex.ts.mdx +++ b/docs/snippets/web-components/component-story-disable-controls-regex.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'YourComponent', component: 'your-component', }; diff --git a/docs/snippets/web-components/component-story-disable-controls.js.mdx b/docs/snippets/web-components/component-story-disable-controls.js.mdx index c0d2113b5cfc..f6f0fbc7fb57 100644 --- a/docs/snippets/web-components/component-story-disable-controls.js.mdx +++ b/docs/snippets/web-components/component-story-disable-controls.js.mdx @@ -2,7 +2,6 @@ // YourComponent.stories.js export default { - title: 'YourComponent', component: 'your-component', argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/web-components/component-story-disable-controls.ts.mdx b/docs/snippets/web-components/component-story-disable-controls.ts.mdx index d7007952c26b..628491f4380d 100644 --- a/docs/snippets/web-components/component-story-disable-controls.ts.mdx +++ b/docs/snippets/web-components/component-story-disable-controls.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'YourComponent', component: 'your-component', argTypes: { // foo is the property we want to remove from the UI diff --git a/docs/snippets/web-components/component-story-figma-integration.js.mdx b/docs/snippets/web-components/component-story-figma-integration.js.mdx index 992e8fb0d5f9..d9ac011de780 100644 --- a/docs/snippets/web-components/component-story-figma-integration.js.mdx +++ b/docs/snippets/web-components/component-story-figma-integration.js.mdx @@ -4,7 +4,6 @@ import { withDesign } from 'storybook-addon-designs'; export default { - title: 'FigmaExample', component: 'my-component', decorators: [withDesign], }; diff --git a/docs/snippets/web-components/component-story-figma-integration.ts.mdx b/docs/snippets/web-components/component-story-figma-integration.ts.mdx index 54ad7dfe90c1..264c5f846cec 100644 --- a/docs/snippets/web-components/component-story-figma-integration.ts.mdx +++ b/docs/snippets/web-components/component-story-figma-integration.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { withDesign } from 'storybook-addon-designs'; const meta: Meta = { - title: 'FigmaExample', component: 'my-component', decorators: [withDesign], }; diff --git a/docs/snippets/web-components/component-story-highlight-addon.js.mdx b/docs/snippets/web-components/component-story-highlight-addon.js.mdx index 936b9fdf9b41..cfa00a6804a7 100644 --- a/docs/snippets/web-components/component-story-highlight-addon.js.mdx +++ b/docs/snippets/web-components/component-story-highlight-addon.js.mdx @@ -1,25 +1,22 @@ ```js -// card-component.stories.js +// MyComponent.stories.js -import { html } from 'lit'; import { useChannel } from '@storybook/preview-api'; -import { HIGHLIGHT, RESET_HIGHLIGHT } from '@storybook/addon-highlight'; -import './card-component'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; export default { - title: 'Card', + component: 'my-component', }; -export const Default: Story = (args) => ({ - template: html`<sb-card></sb-card>`, -}); -Default.decorators = [ - (story) => { - const emit = useChannel({}); - emit(HIGHLIGHT, { - elements: ['.title', '.subtitle'], - }); - return story(); - }, -]; +export const Highlighted = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return story(); + }, + ], +}; ``` diff --git a/docs/snippets/web-components/component-story-highlight-addon.ts.mdx b/docs/snippets/web-components/component-story-highlight-addon.ts.mdx new file mode 100644 index 000000000000..ce3194d54795 --- /dev/null +++ b/docs/snippets/web-components/component-story-highlight-addon.ts.mdx @@ -0,0 +1,23 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +export default { + component: 'my-component', +}; + +export const Highlighted: Story = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + }); + return story(); + }, + ], +}; +``` diff --git a/docs/snippets/web-components/component-story-sort-controls.js.mdx b/docs/snippets/web-components/component-story-sort-controls.js.mdx index 05544cf03dcd..82b7c605ca83 100644 --- a/docs/snippets/web-components/component-story-sort-controls.js.mdx +++ b/docs/snippets/web-components/component-story-sort-controls.js.mdx @@ -2,7 +2,6 @@ // YourComponent.stories.js export default { - title: 'YourComponent', component: 'your-component', parameters: { controls: { sort: 'requiredFirst' } }, }; diff --git a/docs/snippets/web-components/component-story-sort-controls.ts.mdx b/docs/snippets/web-components/component-story-sort-controls.ts.mdx index f18b8447fabb..f857b7bc06f9 100644 --- a/docs/snippets/web-components/component-story-sort-controls.ts.mdx +++ b/docs/snippets/web-components/component-story-sort-controls.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'YourComponent', component: 'your-component', parameters: { controls: { sort: 'requiredFirst' } }, }; diff --git a/docs/snippets/web-components/component-story-static-asset-cdn.js.mdx b/docs/snippets/web-components/component-story-static-asset-cdn.js.mdx index ba16cfda4258..b29413c43c7d 100644 --- a/docs/snippets/web-components/component-story-static-asset-cdn.js.mdx +++ b/docs/snippets/web-components/component-story-static-asset-cdn.js.mdx @@ -4,15 +4,9 @@ import { html } from 'lit'; export default { - title: 'img', component: 'my-component', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => html`<img src="https://storybook.js.org/images/placeholders/350x150.png" diff --git a/docs/snippets/web-components/component-story-static-asset-cdn.ts.mdx b/docs/snippets/web-components/component-story-static-asset-cdn.ts.mdx index e587e24850f5..4da5804853cc 100644 --- a/docs/snippets/web-components/component-story-static-asset-cdn.ts.mdx +++ b/docs/snippets/web-components/component-story-static-asset-cdn.ts.mdx @@ -6,18 +6,12 @@ import { html } from 'lit'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'img', component: 'my-component', }; export default meta; type Story = StoryObj; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => html`<img src="https://storybook.js.org/images/placeholders/350x150.png" diff --git a/docs/snippets/web-components/component-story-static-asset-with-import.js.mdx b/docs/snippets/web-components/component-story-static-asset-with-import.js.mdx index 025a0664b154..952676b62b57 100644 --- a/docs/snippets/web-components/component-story-static-asset-with-import.js.mdx +++ b/docs/snippets/web-components/component-story-static-asset-with-import.js.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import imageFile from './static/image.png'; export default { - title: 'img', component: 'my-component', }; @@ -15,11 +14,6 @@ const image = { alt: 'my image', }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const WithAnImage = { render: () => html`<img src="${image.src}" alt="${image.alt}" /> `, }; diff --git a/docs/snippets/web-components/component-story-static-asset-with-import.ts.mdx b/docs/snippets/web-components/component-story-static-asset-with-import.ts.mdx index ac521c3845f1..cd746f173829 100644 --- a/docs/snippets/web-components/component-story-static-asset-with-import.ts.mdx +++ b/docs/snippets/web-components/component-story-static-asset-with-import.ts.mdx @@ -8,7 +8,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import imageFile from './static/image.png'; const meta: Meta = { - title: 'img', component: 'my-component', }; @@ -20,11 +19,6 @@ const image = { export default meta; type Story = StoryObj; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const WithAnImage: Story = { render: () => html`<img src="${image.src}" alt="${image.alt}" />`, }; diff --git a/docs/snippets/web-components/component-story-static-asset-without-import.js.mdx b/docs/snippets/web-components/component-story-static-asset-without-import.js.mdx index ee1bc612504a..40c32016fae8 100644 --- a/docs/snippets/web-components/component-story-static-asset-without-import.js.mdx +++ b/docs/snippets/web-components/component-story-static-asset-without-import.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'img', component: 'my-component', }; diff --git a/docs/snippets/web-components/component-story-static-asset-without-import.ts.mdx b/docs/snippets/web-components/component-story-static-asset-without-import.ts.mdx index 8bec45adddb5..81583de47c96 100644 --- a/docs/snippets/web-components/component-story-static-asset-without-import.ts.mdx +++ b/docs/snippets/web-components/component-story-static-asset-without-import.ts.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'img', component: 'my-component', }; diff --git a/docs/snippets/web-components/component-story-with-accessibility.js.mdx b/docs/snippets/web-components/component-story-with-accessibility.js.mdx index 4a25caf689c9..e5c0eef83e8a 100644 --- a/docs/snippets/web-components/component-story-with-accessibility.js.mdx +++ b/docs/snippets/web-components/component-story-with-accessibility.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Accessibility testing', component: 'custom-button', argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/web-components/component-story-with-accessibility.ts.mdx b/docs/snippets/web-components/component-story-with-accessibility.ts.mdx index 774c2ebd8a7a..238e06d9f147 100644 --- a/docs/snippets/web-components/component-story-with-accessibility.ts.mdx +++ b/docs/snippets/web-components/component-story-with-accessibility.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Accessibility testing', component: 'custom-button', argTypes: { backgroundColor: { control: 'color' }, diff --git a/docs/snippets/web-components/component-story-with-custom-render-function.js.mdx b/docs/snippets/web-components/component-story-with-custom-render-function.js.mdx index 723fd072ebef..17c3e445172e 100644 --- a/docs/snippets/web-components/component-story-with-custom-render-function.js.mdx +++ b/docs/snippets/web-components/component-story-with-custom-render-function.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/component-story-with-custom-render-function.ts.mdx b/docs/snippets/web-components/component-story-with-custom-render-function.ts.mdx index 653cd08b6aa5..c8a87872602e 100644 --- a/docs/snippets/web-components/component-story-with-custom-render-function.ts.mdx +++ b/docs/snippets/web-components/component-story-with-custom-render-function.ts.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/documentscreen-story-msw-rest-request.js.mdx b/docs/snippets/web-components/documentscreen-story-msw-rest-request.js.mdx index b9f9a8f7bc41..6a4fce7cc13c 100644 --- a/docs/snippets/web-components/documentscreen-story-msw-rest-request.js.mdx +++ b/docs/snippets/web-components/documentscreen-story-msw-rest-request.js.mdx @@ -4,7 +4,6 @@ import { rest } from 'msw'; export default { - title: 'DocumentScreen', component: 'demo-document-screen', }; @@ -30,30 +29,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/web-components/documentscreen-story-msw-rest-request.ts.mdx b/docs/snippets/web-components/documentscreen-story-msw-rest-request.ts.mdx index 05304ace97f4..9329c3b3f293 100644 --- a/docs/snippets/web-components/documentscreen-story-msw-rest-request.ts.mdx +++ b/docs/snippets/web-components/documentscreen-story-msw-rest-request.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { rest } from 'msw'; const meta: Meta = { - title: 'DocumentScreen', component: 'demo-document-screen', }; @@ -35,30 +34,6 @@ const TestData = { 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', status: 'approved', }, - { - id: 2, - userID: 1, - title: 'Something else', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'awaiting review', - }, - { - id: 3, - userID: 2, - title: 'Another document', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, - { - id: 4, - userID: 2, - title: 'Something', - content: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - status: 'approved', - }, ], }; diff --git a/docs/snippets/web-components/gizmo-story-controls-customization.js.mdx b/docs/snippets/web-components/gizmo-story-controls-customization.js.mdx index 16061da45f94..8a5948d21ad3 100644 --- a/docs/snippets/web-components/gizmo-story-controls-customization.js.mdx +++ b/docs/snippets/web-components/gizmo-story-controls-customization.js.mdx @@ -2,7 +2,6 @@ // Gizmo.stories.js export default { - title: 'Gizmo', component: 'gizmo-element', argTypes: { canRotate: { diff --git a/docs/snippets/web-components/gizmo-story-controls-customization.ts.mdx b/docs/snippets/web-components/gizmo-story-controls-customization.ts.mdx index 9e732d7edd6b..04217d100ae9 100644 --- a/docs/snippets/web-components/gizmo-story-controls-customization.ts.mdx +++ b/docs/snippets/web-components/gizmo-story-controls-customization.ts.mdx @@ -4,7 +4,6 @@ import type { Meta } from '@storybook/web-components'; const meta: Meta = { - title: 'Gizmo', component: 'gizmo-element', argTypes: { canRotate: { diff --git a/docs/snippets/web-components/highlight-addon-custom-style.js.mdx b/docs/snippets/web-components/highlight-addon-custom-style.js.mdx new file mode 100644 index 000000000000..0f2ffb53cb41 --- /dev/null +++ b/docs/snippets/web-components/highlight-addon-custom-style.js.mdx @@ -0,0 +1,24 @@ +```js +// MyComponent.stories.js + +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +export default { + component: 'my-component', +}; + +export const StyledHighlight = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return story(); + }, + ], +}; +``` diff --git a/docs/snippets/web-components/highlight-addon-custom-style.ts.mdx b/docs/snippets/web-components/highlight-addon-custom-style.ts.mdx new file mode 100644 index 000000000000..97967c3a6d1f --- /dev/null +++ b/docs/snippets/web-components/highlight-addon-custom-style.ts.mdx @@ -0,0 +1,25 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; +import { useChannel } from '@storybook/preview-api'; +import { HIGHLIGHT } from '@storybook/addon-highlight'; + +export default { + component: 'my-component', +}; + +export const StyledHighlight: Story = { + decorators: [ + (story) => { + const emit = useChannel({}); + emit(HIGHLIGHT, { + elements: ['h2', 'a', '.storybook-button'], + color: 'blue', + style: 'double', // 'dotted' | 'dashed' | 'solid' | 'double' + }); + return story(); + }, + ], +}; +``` diff --git a/docs/snippets/web-components/histogram-story.js.mdx b/docs/snippets/web-components/histogram-story.js.mdx index 38ccaa26c53b..cad98fbf5dfb 100644 --- a/docs/snippets/web-components/histogram-story.js.mdx +++ b/docs/snippets/web-components/histogram-story.js.mdx @@ -2,7 +2,6 @@ // Histogram.stories.js export default { - title: 'Histogram', component: 'histogram-component', }; diff --git a/docs/snippets/web-components/histogram-story.ts.mdx b/docs/snippets/web-components/histogram-story.ts.mdx index 93bed5e071a5..9e26741b5d68 100644 --- a/docs/snippets/web-components/histogram-story.ts.mdx +++ b/docs/snippets/web-components/histogram-story.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Histogram', component: 'histogram-component', }; diff --git a/docs/snippets/web-components/list-story-expanded.js.mdx b/docs/snippets/web-components/list-story-expanded.js.mdx index 413b3266a11f..3e66b6d97acf 100644 --- a/docs/snippets/web-components/list-story-expanded.js.mdx +++ b/docs/snippets/web-components/list-story-expanded.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'List', component: 'demo-list', }; diff --git a/docs/snippets/web-components/list-story-expanded.ts.mdx b/docs/snippets/web-components/list-story-expanded.ts.mdx index 7cb7dcfda541..3346e0bb2883 100644 --- a/docs/snippets/web-components/list-story-expanded.ts.mdx +++ b/docs/snippets/web-components/list-story-expanded.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; const meta: Meta = { - title: 'List', component: 'demo-list', }; export default meta; diff --git a/docs/snippets/web-components/list-story-reuse-data.js.mdx b/docs/snippets/web-components/list-story-reuse-data.js.mdx index ca05b1a6401b..5ffc02df5b7b 100644 --- a/docs/snippets/web-components/list-story-reuse-data.js.mdx +++ b/docs/snippets/web-components/list-story-reuse-data.js.mdx @@ -7,7 +7,6 @@ import { html } from 'lit'; import { Selected, Unselected } from './ListItem.stories'; export default { - title: 'List', component: 'demo-list', }; diff --git a/docs/snippets/web-components/list-story-reuse-data.ts.mdx b/docs/snippets/web-components/list-story-reuse-data.ts.mdx index 161ec6d97828..19c2eb148983 100644 --- a/docs/snippets/web-components/list-story-reuse-data.ts.mdx +++ b/docs/snippets/web-components/list-story-reuse-data.ts.mdx @@ -9,7 +9,6 @@ import { html } from 'lit'; import { Selected, Unselected } from './ListItem.stories'; const meta: Meta = { - title: 'List', component: 'demo-list', }; export default meta; diff --git a/docs/snippets/web-components/list-story-starter.js.mdx b/docs/snippets/web-components/list-story-starter.js.mdx index 4269fec18c62..306cfad9f238 100644 --- a/docs/snippets/web-components/list-story-starter.js.mdx +++ b/docs/snippets/web-components/list-story-starter.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'List', component: 'demo-list', }; diff --git a/docs/snippets/web-components/list-story-starter.ts.mdx b/docs/snippets/web-components/list-story-starter.ts.mdx index 4978bc081b8a..30a3e365148d 100644 --- a/docs/snippets/web-components/list-story-starter.ts.mdx +++ b/docs/snippets/web-components/list-story-starter.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'List', component: 'demo-list', }; export default meta; diff --git a/docs/snippets/web-components/loader-story.js.mdx b/docs/snippets/web-components/loader-story.js.mdx index 7c432e318b4a..171e48e03950 100644 --- a/docs/snippets/web-components/loader-story.js.mdx +++ b/docs/snippets/web-components/loader-story.js.mdx @@ -2,19 +2,20 @@ // TodoItem.stories.js import fetch from 'node-fetch'; - +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/web-components/api/csf + * to learn how to use render functions. + */ export default { - title: 'Examples/Loader' component: 'demo-todo-item', - render: (args, { loaded: { todo } }) => TodoItem({...args, ...todo}), + render: (args, { loaded: { todo } }) => TodoItem({ ...args, ...todo }), }; export const Primary = { loaders: [ async () => ({ - todo: await ( - await fetch('https://jsonplaceholder.typicode.com/todos/1') - ).json(), + todo: await (await fetch('https://jsonplaceholder.typicode.com/todos/1')).json(), }), ], }; diff --git a/docs/snippets/web-components/loader-story.ts.mdx b/docs/snippets/web-components/loader-story.ts.mdx index 929b5d6116b8..a0318afbae30 100644 --- a/docs/snippets/web-components/loader-story.ts.mdx +++ b/docs/snippets/web-components/loader-story.ts.mdx @@ -5,8 +5,12 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import fetch from 'node-fetch'; +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/web-components/api/csf + * to learn how to use render functions. + */ const meta: Meta = { - title: 'Examples/Loader', component: 'demo-todo-item', render: (args, { loaded: { todo } }) => TodoItem({ ...args, ...todo }), }; diff --git a/docs/snippets/web-components/login-form-with-play-function.js.mdx b/docs/snippets/web-components/login-form-with-play-function.js.mdx index 6c9befaf5622..1a25db0ad061 100644 --- a/docs/snippets/web-components/login-form-with-play-function.js.mdx +++ b/docs/snippets/web-components/login-form-with-play-function.js.mdx @@ -5,7 +5,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { expect } from '@storybook/jest'; export default { - title: 'Form', component: 'demo-login-form', }; diff --git a/docs/snippets/web-components/login-form-with-play-function.ts.mdx b/docs/snippets/web-components/login-form-with-play-function.ts.mdx index 3f61449361dd..2e6d4878f80e 100644 --- a/docs/snippets/web-components/login-form-with-play-function.ts.mdx +++ b/docs/snippets/web-components/login-form-with-play-function.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import { expect } from '@storybook/jest'; const meta: Meta = { - title: 'Form', component: 'demo-login-form', }; export default meta; diff --git a/docs/snippets/web-components/my-component-disable-toc.js.mdx b/docs/snippets/web-components/my-component-disable-toc.js.mdx new file mode 100644 index 000000000000..9da978dc1bbf --- /dev/null +++ b/docs/snippets/web-components/my-component-disable-toc.js.mdx @@ -0,0 +1,15 @@ +```js +// MyComponent.stories.js + +export default { + component: 'my-component', + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +}; +``` diff --git a/docs/snippets/web-components/my-component-disable-toc.ts.mdx b/docs/snippets/web-components/my-component-disable-toc.ts.mdx new file mode 100644 index 000000000000..d01661634924 --- /dev/null +++ b/docs/snippets/web-components/my-component-disable-toc.ts.mdx @@ -0,0 +1,18 @@ +```ts +// MyComponent.stories.ts + +import type { Meta } from '@storybook/web-components'; + +const meta: Meta = { + component: 'my-component', + tags: ['autodocs'], + parameters: { + docs: { + toc: { + disable: true, // 👈 Disables the table of contents + }, + }, + }, +}; +export default meta; +``` diff --git a/docs/snippets/web-components/my-component-env-var-config.js.mdx b/docs/snippets/web-components/my-component-env-var-config.js.mdx index c3bac2a4197d..2071df2fb03a 100644 --- a/docs/snippets/web-components/my-component-env-var-config.js.mdx +++ b/docs/snippets/web-components/my-component-env-var-config.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-env-var-config.ts.mdx b/docs/snippets/web-components/my-component-env-var-config.ts.mdx index ae77f77cb402..7700eb966ea4 100644 --- a/docs/snippets/web-components/my-component-env-var-config.ts.mdx +++ b/docs/snippets/web-components/my-component-env-var-config.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-alt-queries.js.mdx b/docs/snippets/web-components/my-component-play-function-alt-queries.js.mdx index 340293902110..bcd1c56d3120 100644 --- a/docs/snippets/web-components/my-component-play-function-alt-queries.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-alt-queries.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'QueryMethods', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-alt-queries.ts.mdx b/docs/snippets/web-components/my-component-play-function-alt-queries.ts.mdx index d676962dc2a8..bfa8ca01b61b 100644 --- a/docs/snippets/web-components/my-component-play-function-alt-queries.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-alt-queries.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'QueryMethods', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-composition.js.mdx b/docs/snippets/web-components/my-component-play-function-composition.js.mdx index c643ad31bd48..5a466a1284a7 100644 --- a/docs/snippets/web-components/my-component-play-function-composition.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-composition.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'MyComponent', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-composition.ts.mdx b/docs/snippets/web-components/my-component-play-function-composition.ts.mdx index 7e3bf3ba2132..60d23a45937d 100644 --- a/docs/snippets/web-components/my-component-play-function-composition.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-composition.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-query-findby.js.mdx b/docs/snippets/web-components/my-component-play-function-query-findby.js.mdx index c81210d7ef02..4361d736a70b 100644 --- a/docs/snippets/web-components/my-component-play-function-query-findby.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-query-findby.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'Async Query Methods', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-query-findby.ts.mdx b/docs/snippets/web-components/my-component-play-function-query-findby.ts.mdx index d85eb9c840be..d10cc18b628e 100644 --- a/docs/snippets/web-components/my-component-play-function-query-findby.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-query-findby.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Async Query Methods', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-waitfor.js.mdx b/docs/snippets/web-components/my-component-play-function-waitfor.js.mdx index 24f6c4981f2a..7aade864977b 100644 --- a/docs/snippets/web-components/my-component-play-function-waitfor.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-waitfor.js.mdx @@ -4,7 +4,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; export default { - title: 'WithAsync', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-waitfor.ts.mdx b/docs/snippets/web-components/my-component-play-function-waitfor.ts.mdx index fa32cbfe9c79..9f6c1955f2f7 100644 --- a/docs/snippets/web-components/my-component-play-function-waitfor.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-waitfor.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'WithAsync', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-with-canvas.js.mdx b/docs/snippets/web-components/my-component-play-function-with-canvas.js.mdx index e60b89d2e78c..2ed5c0bec08d 100644 --- a/docs/snippets/web-components/my-component-play-function-with-canvas.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-canvas.js.mdx @@ -4,7 +4,6 @@ import { getByRole, userEvent, within } from '@storybook/testing-library'; export default { - title: 'WithCanvasElement', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-with-canvas.ts.mdx b/docs/snippets/web-components/my-component-play-function-with-canvas.ts.mdx index ab7081174de6..35b81156e546 100644 --- a/docs/snippets/web-components/my-component-play-function-with-canvas.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-canvas.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'WithCanvasElement', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-with-clickevent.js.mdx b/docs/snippets/web-components/my-component-play-function-with-clickevent.js.mdx index 904c3c9c98b1..05c1fe97bb65 100644 --- a/docs/snippets/web-components/my-component-play-function-with-clickevent.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-clickevent.js.mdx @@ -4,7 +4,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; export default { - title: 'ClickExamples', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-with-clickevent.ts.mdx b/docs/snippets/web-components/my-component-play-function-with-clickevent.ts.mdx index 3e1503d74754..3c3e1554cf4d 100644 --- a/docs/snippets/web-components/my-component-play-function-with-clickevent.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-clickevent.ts.mdx @@ -6,7 +6,6 @@ import { fireEvent, userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'ClickExamples', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-with-delay.js.mdx b/docs/snippets/web-components/my-component-play-function-with-delay.js.mdx index 10d7e7b39323..4a5a8c0c03bf 100644 --- a/docs/snippets/web-components/my-component-play-function-with-delay.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-delay.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'WithDelay', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-with-delay.ts.mdx b/docs/snippets/web-components/my-component-play-function-with-delay.ts.mdx index 780f1e1ca9fd..b53f3d88f7ee 100644 --- a/docs/snippets/web-components/my-component-play-function-with-delay.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-delay.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'WithDelay', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-play-function-with-selectevent.js.mdx b/docs/snippets/web-components/my-component-play-function-with-selectevent.js.mdx index a7f1bb9cb127..154f141610b2 100644 --- a/docs/snippets/web-components/my-component-play-function-with-selectevent.js.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-selectevent.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'WithSelectEvent', component: 'demo-my-component', }; diff --git a/docs/snippets/web-components/my-component-play-function-with-selectevent.ts.mdx b/docs/snippets/web-components/my-component-play-function-with-selectevent.ts.mdx index 3b0d94071a5d..d27ab7c390eb 100644 --- a/docs/snippets/web-components/my-component-play-function-with-selectevent.ts.mdx +++ b/docs/snippets/web-components/my-component-play-function-with-selectevent.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'WithSelectEvent', component: 'demo-my-component', }; export default meta; diff --git a/docs/snippets/web-components/my-component-story-basic-and-props.ts.mdx b/docs/snippets/web-components/my-component-story-basic-and-props.ts.mdx index 0cd9a1a56324..d3831f40c817 100644 --- a/docs/snippets/web-components/my-component-story-basic-and-props.ts.mdx +++ b/docs/snippets/web-components/my-component-story-basic-and-props.ts.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Path/To/MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-story-configure-viewports.js.mdx b/docs/snippets/web-components/my-component-story-configure-viewports.js.mdx index aa39f2327719..db354fb556a1 100644 --- a/docs/snippets/web-components/my-component-story-configure-viewports.js.mdx +++ b/docs/snippets/web-components/my-component-story-configure-viewports.js.mdx @@ -4,7 +4,6 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; export default { - title: 'MyComponent', component: 'my-component', parameters: { //👇 The viewports object from the Essentials addon @@ -17,11 +16,6 @@ export default { }, }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const MyStory = { parameters: { viewport: { diff --git a/docs/snippets/web-components/my-component-story-configure-viewports.ts.mdx b/docs/snippets/web-components/my-component-story-configure-viewports.ts.mdx index 8a646a1a96b5..3429768570f4 100644 --- a/docs/snippets/web-components/my-component-story-configure-viewports.ts.mdx +++ b/docs/snippets/web-components/my-component-story-configure-viewports.ts.mdx @@ -6,7 +6,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', parameters: { //👇 The viewports object from the Essentials addon @@ -22,11 +21,6 @@ const meta: Meta = { export default meta; type Story = StoryObj; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const MyStory: Story = { parameters: { viewport: { diff --git a/docs/snippets/web-components/my-component-story-use-globaltype.js.mdx b/docs/snippets/web-components/my-component-story-use-globaltype.js.mdx index f927ac3d693b..6f8e99afeb44 100644 --- a/docs/snippets/web-components/my-component-story-use-globaltype.js.mdx +++ b/docs/snippets/web-components/my-component-story-use-globaltype.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'MyComponent', component: 'my-component', }; @@ -23,11 +22,6 @@ const getCaptionForLocale = (locale) => { } }; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/web-components/my-component-story-use-globaltype.ts.mdx b/docs/snippets/web-components/my-component-story-use-globaltype.ts.mdx index c0e23f688c44..aaff6d5d39bc 100644 --- a/docs/snippets/web-components/my-component-story-use-globaltype.ts.mdx +++ b/docs/snippets/web-components/my-component-story-use-globaltype.ts.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', }; @@ -28,11 +27,6 @@ const getCaptionForLocale = (locale) => { export default meta; type Story = StoryObj; -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ export const StoryWithLocale: Story = { render: (args, { globals: { locale } }) => { const caption = getCaptionForLocale(locale); diff --git a/docs/snippets/web-components/my-component-story-with-nonstory.js.mdx b/docs/snippets/web-components/my-component-story-with-nonstory.js.mdx index a8febe6ba2a9..0dad9bf94d00 100644 --- a/docs/snippets/web-components/my-component-story-with-nonstory.js.mdx +++ b/docs/snippets/web-components/my-component-story-with-nonstory.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'MyComponent', component: 'my-component', includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/web-components/my-component-story-with-nonstory.ts.mdx b/docs/snippets/web-components/my-component-story-with-nonstory.ts.mdx index 82dcfc62aa98..367f355cc1eb 100644 --- a/docs/snippets/web-components/my-component-story-with-nonstory.ts.mdx +++ b/docs/snippets/web-components/my-component-story-with-nonstory.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', includeStories: ['SimpleStory', 'ComplexStory'], // 👈 Storybook loads these stories excludeStories: /.*Data$/, // 👈 Storybook ignores anything that contains Data diff --git a/docs/snippets/web-components/my-component-story-with-storyname.js.mdx b/docs/snippets/web-components/my-component-story-with-storyname.js.mdx index cdd14f560008..6a38eb139715 100644 --- a/docs/snippets/web-components/my-component-story-with-storyname.js.mdx +++ b/docs/snippets/web-components/my-component-story-with-storyname.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'Path/To/MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-story-with-storyname.ts.mdx b/docs/snippets/web-components/my-component-story-with-storyname.ts.mdx index de0a00f9de34..e821613b4f68 100644 --- a/docs/snippets/web-components/my-component-story-with-storyname.ts.mdx +++ b/docs/snippets/web-components/my-component-story-with-storyname.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Path/To/MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-vite-env-variables.js.mdx b/docs/snippets/web-components/my-component-vite-env-variables.js.mdx new file mode 100644 index 000000000000..381d34ac9b89 --- /dev/null +++ b/docs/snippets/web-components/my-component-vite-env-variables.js.mdx @@ -0,0 +1,14 @@ +```js +// MyComponent.stories.js + +export default { + component: 'my-component', +}; + +export const ExampleStory = { + args: { + propertyA: import.meta.env.STORYBOOK_DATA_KEY, + propertyB: import.meta.env.VITE_CUSTOM_VAR, + }, +}; +``` diff --git a/docs/snippets/web-components/my-component-vite-env-variables.ts.mdx b/docs/snippets/web-components/my-component-vite-env-variables.ts.mdx new file mode 100644 index 000000000000..5a35c7a8ae24 --- /dev/null +++ b/docs/snippets/web-components/my-component-vite-env-variables.ts.mdx @@ -0,0 +1,19 @@ +```ts +// MyComponent.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; + +const meta: Meta = { + component: 'my-component', +}; + +export default meta; +type Story = StoryObj; + +export const ExampleStory: Story = { + args: { + propertyA: import.meta.env.STORYBOOK_DATA_KEY, + propertyB: import.meta.env.VITE_CUSTOM_VAR, + }, +}; +``` diff --git a/docs/snippets/web-components/my-component-with-env-variables.js.mdx b/docs/snippets/web-components/my-component-with-env-variables.js.mdx index fd8b62f38026..4eb42879dc64 100644 --- a/docs/snippets/web-components/my-component-with-env-variables.js.mdx +++ b/docs/snippets/web-components/my-component-with-env-variables.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/my-component-with-env-variables.ts.mdx b/docs/snippets/web-components/my-component-with-env-variables.ts.mdx index 7968096ca3ab..06197dc3c0f4 100644 --- a/docs/snippets/web-components/my-component-with-env-variables.ts.mdx +++ b/docs/snippets/web-components/my-component-with-env-variables.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/page-story-slots.js.mdx b/docs/snippets/web-components/page-story-slots.js.mdx index 29103c0ea603..1d464c2976a9 100644 --- a/docs/snippets/web-components/page-story-slots.js.mdx +++ b/docs/snippets/web-components/page-story-slots.js.mdx @@ -6,19 +6,14 @@ import { html } from 'lit'; export default { title: 'Page', component: 'demo-page', -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ -export const CustomFooter = { - render: (args) => html` + render: ({ footer }) => html` <demo-page> - <footer>${args.footer}</footer> + <footer>${footer}</footer> </demo-page> `, +}; + +export const CustomFooter = { args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/web-components/page-story-slots.ts.mdx b/docs/snippets/web-components/page-story-slots.ts.mdx index 6b1f0f287994..aa4d7c7a09c9 100644 --- a/docs/snippets/web-components/page-story-slots.ts.mdx +++ b/docs/snippets/web-components/page-story-slots.ts.mdx @@ -5,20 +5,22 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; -const meta: Meta = { +type CustomArgs = { footer?: string }; + +const meta: Meta<CustomArgs> = { title: 'Page', component: 'demo-page', + render: ({ footer }) => html` + <demo-page> + <footer>${footer}</footer> + </demo-page> + `, }; export default meta; -type Story = StoryObj; +type Story = StoryObj<CustomArgs>; export const CustomFooter: Story = { - render: (args) => html` - <demo-page> - <footer>${args.footer}</footer> - </demo-page> - `, args: { footer: 'Built with Storybook', }, diff --git a/docs/snippets/web-components/page-story-with-args-composition.js.mdx b/docs/snippets/web-components/page-story-with-args-composition.js.mdx index f0ce119c82cd..085ab9546145 100644 --- a/docs/snippets/web-components/page-story-with-args-composition.js.mdx +++ b/docs/snippets/web-components/page-story-with-args-composition.js.mdx @@ -7,7 +7,6 @@ import * as DocumentHeader from './DocumentHeader.stories'; import * as DocumentList from './DocumentList.stories'; export default { - title: 'DocumentScreen', component: 'demo-document-screen', }; diff --git a/docs/snippets/web-components/page-story-with-args-composition.ts.mdx b/docs/snippets/web-components/page-story-with-args-composition.ts.mdx index 34b5b819c339..703054de0a54 100644 --- a/docs/snippets/web-components/page-story-with-args-composition.ts.mdx +++ b/docs/snippets/web-components/page-story-with-args-composition.ts.mdx @@ -9,7 +9,6 @@ import DocumentHeader from './DocumentHeader.stories'; import DocumentList from './DocumentList.stories'; const meta: Meta = { - title: 'DocumentScreen', component: 'demo-document-screen', }; export default meta; diff --git a/docs/snippets/web-components/page-story.js.mdx b/docs/snippets/web-components/page-story.js.mdx index ca5d33e44acb..8d3c4f17528c 100644 --- a/docs/snippets/web-components/page-story.js.mdx +++ b/docs/snippets/web-components/page-story.js.mdx @@ -5,7 +5,6 @@ import * as HeaderStories from './Header.stories'; export default { - title: 'Page', component: 'demo-page', }; diff --git a/docs/snippets/web-components/page-story.ts.mdx b/docs/snippets/web-components/page-story.ts.mdx index 4dc8ad159f66..45d5acf13042 100644 --- a/docs/snippets/web-components/page-story.ts.mdx +++ b/docs/snippets/web-components/page-story.ts.mdx @@ -7,7 +7,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; import * as HeaderStories from './Header.stories'; const meta: Meta = { - title: 'Page', component: 'demo-page', }; export default meta; diff --git a/docs/snippets/web-components/register-component-with-play-function.js.mdx b/docs/snippets/web-components/register-component-with-play-function.js.mdx index cfb74d3c130d..84e5f50c38fe 100644 --- a/docs/snippets/web-components/register-component-with-play-function.js.mdx +++ b/docs/snippets/web-components/register-component-with-play-function.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; export default { - title: 'RegistrationForm', component: 'demo-registration-form', }; diff --git a/docs/snippets/web-components/register-component-with-play-function.ts.mdx b/docs/snippets/web-components/register-component-with-play-function.ts.mdx index 688add7bc554..a21eddeec33b 100644 --- a/docs/snippets/web-components/register-component-with-play-function.ts.mdx +++ b/docs/snippets/web-components/register-component-with-play-function.ts.mdx @@ -6,7 +6,6 @@ import { userEvent, within } from '@storybook/testing-library'; import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'RegistrationForm', component: 'demo-registration-form', }; export default meta; diff --git a/docs/snippets/web-components/storybook-addon-a11y-component-config.js.mdx b/docs/snippets/web-components/storybook-addon-a11y-component-config.js.mdx index 1c4eccf24833..990edaf9826d 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-component-config.js.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-component-config.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'Configure a11y addon', component: 'my-component', parameters: { a11y: { diff --git a/docs/snippets/web-components/storybook-addon-a11y-component-config.ts.mdx b/docs/snippets/web-components/storybook-addon-a11y-component-config.ts.mdx index e763c47f01be..43c27832c49f 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-component-config.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-component-config.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Configure a11y addon', component: 'my-component', parameters: { a11y: { diff --git a/docs/snippets/web-components/storybook-addon-a11y-disable.js.mdx b/docs/snippets/web-components/storybook-addon-a11y-disable.js.mdx index 5c8fca9e312d..404be9260ff6 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-disable.js.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-disable.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'Disable a11y addon', component: 'my-component', }; diff --git a/docs/snippets/web-components/storybook-addon-a11y-disable.ts.mdx b/docs/snippets/web-components/storybook-addon-a11y-disable.ts.mdx index 2805318e6261..a2c410936f3b 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-disable.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-disable.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Disable a11y addon', component: 'my-component', }; diff --git a/docs/snippets/web-components/storybook-addon-a11y-story-config.js.mdx b/docs/snippets/web-components/storybook-addon-a11y-story-config.js.mdx index e369bc84485d..bfc2cec75433 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-story-config.js.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-story-config.js.mdx @@ -2,7 +2,6 @@ // MyComponent.stories.js export default { - title: 'Configure a11y addon', component: 'my-component', }; diff --git a/docs/snippets/web-components/storybook-addon-a11y-story-config.ts.mdx b/docs/snippets/web-components/storybook-addon-a11y-story-config.ts.mdx index 0ceabaf6097c..38d22ae0f9f3 100644 --- a/docs/snippets/web-components/storybook-addon-a11y-story-config.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-a11y-story-config.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Configure a11y addon', component: 'my-component', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.js.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.js.mdx index 0220f5d75cd2..bf6244e98f79 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.js.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.js.mdx @@ -3,11 +3,6 @@ // To apply a set of backgrounds to all stories of Button: export default { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/web-components/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: 'demo-button', parameters: { backgrounds: { @@ -15,8 +10,8 @@ export default { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.ts.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.ts.mdx index f7c81065e5b7..95efe818c624 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-configure-grid.ts.mdx @@ -5,11 +5,6 @@ import type { Meta } from '@storybook/web-components'; // To apply a set of backgrounds to all stories of Button: const meta: Meta = { - /* 👇 The title prop is optional. - * See https://storybook.js.org/docs/web-components/configure/overview#configure-story-loading - * to learn how to generate automatic titles - */ - title: 'Button', component: 'demo-button', parameters: { backgrounds: { @@ -17,8 +12,8 @@ const meta: Meta = { cellSize: 20, opacity: 0.5, cellAmount: 5, - offsetX: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' - offsetY: 16, // default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetX: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' + offsetY: 16, // Default is 0 if story has 'fullscreen' layout, 16 if layout is 'padded' }, }, }, diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.js.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.js.mdx index 6a1363e20aec..c483e9c5958a 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.js.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.ts.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.ts.mdx index d8b38ff85d45..2b8bc09ffa82 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-disable-backgrounds.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.js.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.js.mdx index 6e84aaed7341..0fdae2b6bc02 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.js.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.ts.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.ts.mdx index f39d18927117..db4b85f002ef 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-disable-grid.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.js.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.js.mdx index 9aa6b8a7db33..558fe5192913 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.js.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.ts.mdx b/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.ts.mdx index 903e7ea9c142..53037505fb75 100644 --- a/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.ts.mdx +++ b/docs/snippets/web-components/storybook-addon-backgrounds-override-background-color.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-component-layout-param.js.mdx b/docs/snippets/web-components/storybook-component-layout-param.js.mdx index 638fd8f204e2..104935d94381 100644 --- a/docs/snippets/web-components/storybook-component-layout-param.js.mdx +++ b/docs/snippets/web-components/storybook-component-layout-param.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/web-components/storybook-component-layout-param.ts.mdx b/docs/snippets/web-components/storybook-component-layout-param.ts.mdx index d37f9f3ec48e..3e25074660da 100644 --- a/docs/snippets/web-components/storybook-component-layout-param.ts.mdx +++ b/docs/snippets/web-components/storybook-component-layout-param.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', // Sets the layout parameter component wide. parameters: { diff --git a/docs/snippets/web-components/storybook-customize-argtypes.js.mdx b/docs/snippets/web-components/storybook-customize-argtypes.js.mdx deleted file mode 100644 index ecfb03a93af9..000000000000 --- a/docs/snippets/web-components/storybook-customize-argtypes.js.mdx +++ /dev/null @@ -1,22 +0,0 @@ -```js -// Button.stories.js - -export default { - title: 'Button', - component: 'demo-button', - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -}; -``` diff --git a/docs/snippets/web-components/storybook-customize-argtypes.ts.mdx b/docs/snippets/web-components/storybook-customize-argtypes.ts.mdx deleted file mode 100644 index fafecd5ef3c1..000000000000 --- a/docs/snippets/web-components/storybook-customize-argtypes.ts.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```ts -// Button.stories.ts - -import type { Meta } from '@storybook/web-components'; - -const meta: Meta = { - title: 'Button', - component: 'demo-button', - argTypes: { - label: { - description: 'overwritten description', - table: { - type: { - summary: 'something short', - detail: 'something really really long', - }, - }, - control: { - type: null, - }, - }, - }, -}; - -export default meta; -``` diff --git a/docs/snippets/web-components/storybook-interactions-play-function.js.mdx b/docs/snippets/web-components/storybook-interactions-play-function.js.mdx index e7b01a227283..d91c2d85cc7d 100644 --- a/docs/snippets/web-components/storybook-interactions-play-function.js.mdx +++ b/docs/snippets/web-components/storybook-interactions-play-function.js.mdx @@ -6,8 +6,7 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { expect } from '@storybook/jest'; export default { - title: 'MyComponent', - component: 'my-component', + component: 'my-form-element', argTypes: { onSubmit: { action: true }, }, diff --git a/docs/snippets/web-components/storybook-interactions-play-function.ts.mdx b/docs/snippets/web-components/storybook-interactions-play-function.ts.mdx index e94111a0728f..eebbfd4f6eac 100644 --- a/docs/snippets/web-components/storybook-interactions-play-function.ts.mdx +++ b/docs/snippets/web-components/storybook-interactions-play-function.ts.mdx @@ -8,8 +8,7 @@ import { userEvent, waitFor, within } from '@storybook/testing-library'; import { expect } from '@storybook/jest'; const meta: Meta = { - title: 'MyComponent', - component: 'my-component', + component: 'my-form-element', argTypes: { onSubmit: { action: true }, }, diff --git a/docs/snippets/web-components/storybook-interactions-step-function.js.mdx b/docs/snippets/web-components/storybook-interactions-step-function.js.mdx index 2d700075324b..1d0808a9139a 100644 --- a/docs/snippets/web-components/storybook-interactions-step-function.js.mdx +++ b/docs/snippets/web-components/storybook-interactions-step-function.js.mdx @@ -4,7 +4,6 @@ import { userEvent, within } from '@storybook/testing-library'; const meta: Meta = { - title: 'MyComponent', component: 'my-component', }; diff --git a/docs/snippets/web-components/storybook-story-layout-param.js.mdx b/docs/snippets/web-components/storybook-story-layout-param.js.mdx index 5b8bea419b72..d8d87581f5f6 100644 --- a/docs/snippets/web-components/storybook-story-layout-param.js.mdx +++ b/docs/snippets/web-components/storybook-story-layout-param.js.mdx @@ -2,7 +2,6 @@ // Button.stories.js export default { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/storybook-story-layout-param.ts.mdx b/docs/snippets/web-components/storybook-story-layout-param.ts.mdx index 67e704ad4e78..7c776adc4e42 100644 --- a/docs/snippets/web-components/storybook-story-layout-param.ts.mdx +++ b/docs/snippets/web-components/storybook-story-layout-param.ts.mdx @@ -4,7 +4,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; const meta: Meta = { - title: 'Button', component: 'demo-button', }; diff --git a/docs/snippets/web-components/table-story-fully-customize-controls.js.mdx b/docs/snippets/web-components/table-story-fully-customize-controls.js.mdx deleted file mode 100644 index ae147b4a3a81..000000000000 --- a/docs/snippets/web-components/table-story-fully-customize-controls.js.mdx +++ /dev/null @@ -1,43 +0,0 @@ -```js -// Table.stories.js - -import { html } from 'lit'; -import { repeat } from 'lit/directives/repeat.js'; - -export default { - title: 'Custom Table', - component: 'custom-table', -}; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ -export const TableStory = { - render: ({ data, size }) => { - return html` - <table> - <tbody> - ${repeat( - data, - (row, rowIndex) => - html` - <tr> - ${repeat(row, (col, colIndex) => html`<td>${data[rowIndex][colIndex]}</td>`)} - </tr> - ` - )} - </tbody> - </table> - `; - }, - args: { - data: [ - [1, 2, 3], - [4, 5, 6], - ], - size: 'large', - }, -}; -``` diff --git a/docs/snippets/web-components/table-story-fully-customize-controls.ts.mdx b/docs/snippets/web-components/table-story-fully-customize-controls.ts.mdx deleted file mode 100644 index feea34ffca81..000000000000 --- a/docs/snippets/web-components/table-story-fully-customize-controls.ts.mdx +++ /dev/null @@ -1,48 +0,0 @@ -```ts -// Table.stories.ts - -import type { Meta, StoryObj } from '@storybook/web-components'; - -import { html } from 'lit'; -import { repeat } from 'lit/directives/repeat.js'; - -const meta: Meta = { - title: 'Custom Table', - component: 'custom-table', -}; - -export default meta; -type Story = StoryObj; - -/* - *👇 Render functions are a framework specific feature to allow you control on how the component renders. - * See https://storybook.js.org/docs/web-components/api/csf - * to learn how to use render functions. - */ -export const TableStory: Story = { - render: ({ data, size }) => { - return html` - <table> - <tbody> - ${repeat( - data, - (row, rowIndex) => - html` - <tr> - ${repeat(row, (col, colIndex) => html`<td>${data[rowIndex][colIndex]}</td>`)} - </tr> - ` - )} - </tbody> - </table> - `; - }, - args: { - data: [ - [1, 2, 3], - [4, 5, 6], - ], - size: 'large', - }, -}; -``` diff --git a/docs/snippets/web-components/typed-csf-file.ts.mdx b/docs/snippets/web-components/typed-csf-file.ts.mdx new file mode 100644 index 000000000000..7814ea60fdda --- /dev/null +++ b/docs/snippets/web-components/typed-csf-file.ts.mdx @@ -0,0 +1,19 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; + +const meta: Meta = { + title: 'Button', + component: 'demo-button', +}; +export default meta; + +export const Basic: StoryObj = {}; + +export const Primary: StoryObj = { + args: { + primary: true, + }, +}; +``` diff --git a/docs/snippets/web-components/your-component-with-decorator.js.mdx b/docs/snippets/web-components/your-component-with-decorator.js.mdx index 9c1f3e108294..6bc07ad3c52f 100644 --- a/docs/snippets/web-components/your-component-with-decorator.js.mdx +++ b/docs/snippets/web-components/your-component-with-decorator.js.mdx @@ -4,7 +4,6 @@ import { html } from 'lit'; export default { - title: 'YourComponent', component: 'demo-your-component', decorators: [(story) => html`<div style="margin: 3em">${story()}</div>`], }; diff --git a/docs/snippets/web-components/your-component-with-decorator.ts.mdx b/docs/snippets/web-components/your-component-with-decorator.ts.mdx index 233ddd10e9f6..4ac3a2a1315f 100644 --- a/docs/snippets/web-components/your-component-with-decorator.ts.mdx +++ b/docs/snippets/web-components/your-component-with-decorator.ts.mdx @@ -6,7 +6,6 @@ import { html } from 'lit'; import type { Meta } from '@storybook/web-components'; const meta: Meta<YourComponentProps> = { - title: 'YourComponent', component: 'demo-your-component', decorators: [(story) => html`<div style="margin: 3em">${story()}</div>`], }; diff --git a/docs/snippets/web-components/your-component.js.mdx b/docs/snippets/web-components/your-component.js.mdx index 8bda7fb1c972..379d0b847764 100644 --- a/docs/snippets/web-components/your-component.js.mdx +++ b/docs/snippets/web-components/your-component.js.mdx @@ -3,7 +3,6 @@ // This default export determines where your story goes in the story list export default { - title: 'YourComponent', component: 'demo-your-component', }; diff --git a/docs/snippets/web-components/your-component.ts.mdx b/docs/snippets/web-components/your-component.ts.mdx index 4faed6b7ce72..42e5df1abe4b 100644 --- a/docs/snippets/web-components/your-component.ts.mdx +++ b/docs/snippets/web-components/your-component.ts.mdx @@ -5,7 +5,6 @@ import type { Meta, StoryObj } from '@storybook/web-components'; // This default export determines where your story goes in the story list const meta: Meta = { - title: 'YourComponent', component: 'demo-your-component', }; export default meta; diff --git a/docs/toc.js b/docs/toc.js index 83053f067399..7093616940f1 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -94,6 +94,11 @@ module.exports = { title: 'Stories for multiple components', type: 'link', }, + { + pathSegment: 'typescript', + title: 'Writing stories in TypeScript', + type: 'link', + }, ], }, { @@ -169,9 +174,21 @@ module.exports = { type: 'link', }, { - pathSegment: 'importing-stories-in-tests', + pathSegment: '', title: 'Import stories in tests', - type: 'link', + type: 'menu', + children: [ + { + pathSegment: 'stories-in-end-to-end-tests', + title: 'End-to-end tests', + type: 'link', + }, + { + pathSegment: 'stories-in-unit-tests', + title: 'Unit tests', + type: 'link', + }, + ], }, ], }, @@ -218,28 +235,28 @@ module.exports = { type: 'link', }, { - pathSegment: 'controls', - title: 'Controls', + pathSegment: 'actions', + title: 'Actions', type: 'link', }, { - pathSegment: 'actions', - title: 'Actions', + pathSegment: 'backgrounds', + title: 'Backgrounds', type: 'link', }, { - pathSegment: 'viewport', - title: 'Viewport', + pathSegment: 'controls', + title: 'Controls', type: 'link', }, { - pathSegment: 'backgrounds', - title: 'Backgrounds', + pathSegment: 'highlight', + title: 'Highlight', type: 'link', }, { - pathSegment: 'toolbars-and-globals', - title: 'Toolbars & globals', + pathSegment: 'interactions', + title: 'Interactions', type: 'link', }, { @@ -247,11 +264,22 @@ module.exports = { title: 'Measure & Outline', type: 'link', }, + // { + // pathSegment: 'themes', + // title: 'Themes', + // type: 'link', + // }, { - pathSegment: 'interactions', - title: 'Interactions', + pathSegment: 'toolbars-and-globals', + title: 'Toolbars & globals', type: 'link', }, + { + pathSegment: 'viewport', + title: 'Viewport', + type: 'link', + }, + ], }, { @@ -445,7 +473,129 @@ module.exports = { type: 'menu', children: [ { - title: '@storybook/blocks', + title: 'main.js|ts configuration', + pathSegment: '', + type: 'menu', + children: [ + { + title: 'Overview', + pathSegment: 'main-config', + type: 'link', + }, + { + title: 'framework', + pathSegment: 'main-config-framework', + type: 'link', + }, + { + title: 'stories', + pathSegment: 'main-config-stories', + type: 'link', + }, + { + title: 'addons', + pathSegment: 'main-config-addons', + type: 'link', + }, + { + title: 'babel', + pathSegment: 'main-config-babel', + type: 'link', + }, + { + title: 'babelDefault', + pathSegment: 'main-config-babel-default', + type: 'link', + }, + { + title: 'core', + pathSegment: 'main-config-core', + type: 'link', + }, + { + title: 'docs', + pathSegment: 'main-config-docs', + type: 'link', + }, + { + title: 'env', + pathSegment: 'main-config-env', + type: 'link', + }, + { + title: 'features', + pathSegment: 'main-config-features', + type: 'link', + }, + { + title: 'logLevel', + pathSegment: 'main-config-log-level', + type: 'link', + }, + { + title: 'managerHead', + pathSegment: 'main-config-manager-head', + type: 'link', + }, + { + title: 'previewAnnotations', + pathSegment: 'main-config-preview-annotations', + type: 'link', + }, + { + title: 'previewBody', + pathSegment: 'main-config-preview-body', + type: 'link', + }, + { + title: 'previewHead', + pathSegment: 'main-config-preview-head', + type: 'link', + }, + { + title: 'refs', + pathSegment: 'main-config-refs', + type: 'link', + }, + { + title: 'staticDirs', + pathSegment: 'main-config-static-dirs', + type: 'link', + }, + { + title: 'typescript', + pathSegment: 'main-config-typescript', + type: 'link', + }, + { + title: 'viteFinal', + pathSegment: 'main-config-vite-final', + type: 'link', + }, + { + title: 'webpackFinal', + pathSegment: 'main-config-webpack-final', + type: 'link', + }, + { + title: 'config', + pathSegment: 'main-config-config', + type: 'link', + }, + ], + }, + { + pathSegment: 'arg-types', + title: 'ArgTypes', + type: 'link', + }, + { + pathSegment: 'csf', + title: 'Component Story Format (CSF)', + type: 'link', + }, + { + title: 'Doc blocks', pathSegment: '', type: 'menu', children: [ @@ -536,23 +686,6 @@ module.exports = { }, ], }, - { - title: 'Stories', - pathSegment: '', - type: 'menu', - children: [ - { - pathSegment: 'csf', - title: 'Component Story Format', - type: 'link', - }, - { - pathSegment: 'argtypes', - title: 'ArgTypes', - type: 'link', - }, - ], - }, { pathSegment: 'new-frameworks', title: 'Frameworks', @@ -575,6 +708,11 @@ module.exports = { title: 'How to', type: 'link', }, + { + pathSegment: 'RFC', + title: 'RFC Process', + type: 'link', + }, { pathSegment: 'code', title: 'Code', diff --git a/docs/versions/latest.json b/docs/versions/latest.json index 21830b6a39cf..7618803cf164 100644 --- a/docs/versions/latest.json +++ b/docs/versions/latest.json @@ -1,6 +1 @@ -{ - "version": "6.3.0", - "info": { - "plain": "**[Optimized for UI development](https://github.com/storybookjs/storybook/issues/14397)**\n\nSB6.3 adds new UI development and testing features, while evolving with the JS ecosystem:\n\n- 📐 Layout debugging with Measure and Outline addons\n- 🔌 Reuse your stories in unit tests: Jest, Cypress & more\n- 🚀 Frameworks: Angular 12 Ivy, Lit2 web components\n- 🛠 Builders: Webpack5 stable, Vite community\n- 📦 Packaging: Modern ESM\n\nIt also contains hundreds more fixes, features, and tweaks. Browse the [changelogs](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) matching `6.3.0-alpha.*`, `6.3.0-beta.*`, and `6.3.0-rc.*` for the full list of changes. See [Storybook 6 migration guide](https://storybook.js.org/blog/storybook-6-migration-guide/) to upgrade from `5.x` or [MIGRATION.md](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md) for detailed migration instructions." - } -} +{"version":"7.3.0","info":{"plain":"- Core: Improve `composeStories` typings - [#23577](https://github.com/storybookjs/storybook/pull/23577), thanks [@yannbf](https://github.com/yannbf)!"}} diff --git a/docs/versions/next.json b/docs/versions/next.json index 5c7e336e03c6..b44395b73796 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"7.0.1","info":{"plain":"#### Bug Fixes\n\n- CLI: Always send error events if init doesn't succeed [#21879](https://github.com/storybooks/storybook/pull/21879)\n- CLI: Warn when community addons are incompatible with Storybook 7 [#21863](https://github.com/storybooks/storybook/pull/21863)\n- CLI: Fix migration summary message [#21862](https://github.com/storybooks/storybook/pull/21862)\n- CLI: Fix link to new framework API migrations [#21875](https://github.com/storybooks/storybook/pull/21875)\n\n#### Maintenance\n\n- Angular: Remove deprecated `component`/`propsMeta` from story [#21807](https://github.com/storybooks/storybook/pull/21807)\n- Remove deprecated flags and properties [#21852](https://github.com/storybooks/storybook/pull/21852)\n\n#### Dependencies\n\n- Fix codemod dependency conflict [#21876](https://github.com/storybooks/storybook/pull/21876)\n- Upgrade satellite repos for 7.0 [#21881](https://github.com/storybooks/storybook/pull/21881)"}} \ No newline at end of file +{"version":"7.4.0-alpha.2","info":{"plain":"- Addon-docs: Resolve `mdx-react-shim` & `@storybook/global` correctly - [#23941](https://github.com/storybookjs/storybook/pull/23941), thanks [@ndelangen](https://github.com/ndelangen)!\n- Addons: Fix key is not a prop warning - [#23935](https://github.com/storybookjs/storybook/pull/23935), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- CLI: Pass package manager to postinstall - [#23913](https://github.com/storybookjs/storybook/pull/23913), thanks [@Integrayshaun](https://github.com/Integrayshaun)!\n- CLI: Provide guidance for users who try to initialize Storybook on an empty dir - [#23874](https://github.com/storybookjs/storybook/pull/23874), thanks [@yannbf](https://github.com/yannbf)!\n- Logger: Fix double error messages/stack - [#23919](https://github.com/storybookjs/storybook/pull/23919), thanks [@ndelangen](https://github.com/ndelangen)!\n- Maintenance: Categorize server errors - [#23912](https://github.com/storybookjs/storybook/pull/23912), thanks [@yannbf](https://github.com/yannbf)!\n- Maintenance: Remove need for `react` as peerDependency - [#23897](https://github.com/storybookjs/storybook/pull/23897), thanks [@ndelangen](https://github.com/ndelangen)!\n- Maintenance: Remove sourcemaps generation - [#23936](https://github.com/storybookjs/storybook/pull/23936), thanks [@ndelangen](https://github.com/ndelangen)!\n- Preset: Add common preset overrides mechanism - [#23915](https://github.com/storybookjs/storybook/pull/23915), thanks [@yannbf](https://github.com/yannbf)!\n- UI: Add an experimental API for adding sidebar bottom toolbar - [#23778](https://github.com/storybookjs/storybook/pull/23778), thanks [@ndelangen](https://github.com/ndelangen)!\n- UI: Add an experimental API for adding sidebar top toolbar - [#23811](https://github.com/storybookjs/storybook/pull/23811), thanks [@ndelangen](https://github.com/ndelangen)!"}} diff --git a/docs/writing-docs/autodocs.md b/docs/writing-docs/autodocs.md index bae0fc12d8a3..10e2c730d076 100644 --- a/docs/writing-docs/autodocs.md +++ b/docs/writing-docs/autodocs.md @@ -2,6 +2,8 @@ title: 'Automatic documentation and Storybook' --- +<YouTubeCallout id="BLUmt0j7OLY" title="INSTANT documentation with Storybook 7 AUTODOCS" /> + Storybook Autodocs is a powerful tool that can help you quickly generate comprehensive documentation for your UI components. By leveraging Autodocs, you're transforming your stories into living documentation which can be further extended with [MDX](./mdx.md) and [Doc Blocks](./doc-blocks.md) to provide a clear and concise understanding of your components' functionality. ## Setup automated documentation @@ -27,7 +29,6 @@ To enable auto-generated documentation for your stories, you'll need to add the ![Storybook autodocs](./autodocs.png) - Once the story loads, Storybook infers the relevant metadata (e.g., [`args`](../writing-stories/args.md), [`argTypes`](../api/argtypes.md), [`parameters`](../writing-stories/parameters.md)) and automatically generates a documentation page with this information positioned at the root-level of your component tree in the sidebar. ### Configure @@ -45,14 +46,16 @@ By default, Storybook offers zero-config support for documentation and automatic <!-- prettier-ignore-end --> -| Option | Description | -| ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| `autodocs` | Configures auto-generated documentation pages. Available options: `true`, `false`,`tag` (default) <br/> `docs: { autodocs: false }` | -| `defaultName` | Renames the auto-generated documentation page<br/> `docs: { defaultName: 'Documentation' }` | +| Option | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `autodocs` | Configures auto-generated documentation pages. Available options: `true`, `false`,`tag` (default). `true`/`false` enable/disable autodocs globally. `tag` allows you to opt in per component by adding the `tags: ['autodocs']` annotation in the component's default export. <br/> Default: `docs: { autodocs: 'tag' }` | +| `defaultName` | Renames the auto-generated documentation page<br/> Default: `docs: { defaultName: 'Documentation' }` | ### Write a custom template -To replace the default documentation template used by Storybook, you can extend your UI configuration file (i.e., `.storybook/preview.js`) and introduce a `docs` [parameter](./doc-blocks.md#customizing-the-automatic-docs-page). This parameter accepts a `page` function that returns a React component, which you can use to generate the required template. For example: +<YouTubeCallout id="q8SY4yyNE6Q" title="Custom Autodocs with Storybook 7 Docs Page | Quick Tips" /> + +To replace the default documentation template used by Storybook, you can extend your UI configuration file (i.e., `.storybook/preview.js|ts`) and introduce a `docs` [parameter](./doc-blocks.md#customizing-the-automatic-docs-page). This parameter accepts a `page` function that returns a React component, which you can use to generate the required template. For example: <!-- prettier-ignore-start --> @@ -67,7 +70,7 @@ To replace the default documentation template used by Storybook, you can extend <div class="aside"> -💡 Internally, Storybook uses a similar implementation to generate the default template. See the Doc Blocks [API reference](./doc-blocks.md#available-blocks) if you want to learn more about how Doc Blocks work. +💡 Internally, Storybook uses a similar implementation to generate the default template. See the Doc Blocks [API reference](./doc-blocks.md#available-blocks) to learn more about how Doc Blocks work. </div> @@ -110,6 +113,69 @@ Then you can use it in your `.storybook/preview.js` or an individual story file </div> +### Generate a table of contents + +Storybook's auto-generated documentation pages can be quite long and difficult to navigate. To help with this, you can enable the table of contents feature to provide a quick overview of the documentation page and allow users to jump to a specific section. To enable it, extend your Storybook UI configuration file (i.e., `.storybook/preview.js`) and provide a `docs` [parameter](../writing-stories/parameters.md#global-parameters) with a `toc` property. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-preview-enable-toc.js.mdx', + 'common/storybook-preview-enable-toc.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### Configure the table of contents + +By default, the table of contents on the documentation page will only show the `h3` headings that are automatically generated. However, if you want to customize the table of contents, you can add more parameters to the `toc` property. The following options and examples of how to use them are available. + +| Option | Description | +| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contentsSelector` | Defines the container's CSS selector for search for the headings <br/> `toc: { contentsSelector: '.sbdocs-content' }` | +| `disable` | Hides the table of contents for the documentation pages <br/> `toc: { disable: true }` | +| `headingSelector` | Defines the list of headings to feature in the table of contents <br/> `toc: { headingSelector: 'h1, h2, h3' }` | +| `ignoreSelector` | Configures the table of contents to ignore specific headings or stories <br/> `toc: { ignoreSelector: 'h2' }` | +| `title` | Defines a title caption for the table of contents. <br/>Accepts one of: `string`, `null`, React element <br/> `toc: { title: 'Table of Contents' }` | +| `unsafeTocbotOptions` | Provides additional [`TocBot`](https://tscanlin.github.io/tocbot/) configuration options <br/> `toc: { unsafeTocbotOptions: { orderedList: true } }` | + +<div class="aside"> + +ℹ️ The `contentsSelector`, `headingSelector`, and `ignoreSelector` properties allow additional customization. For more information on using them, see the [`Tocbot` documentation](https://tscanlin.github.io/tocbot/). + +</div> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'common/storybook-preview-custom-toc.js.mdx', + 'common/storybook-preview-custom-toc.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +#### Component-level configuration + +If you want to customize the table of contents for a specific story, you can include a `toc` property in the story's default export and provide the required [configuration](#configure-the-table-of-contents). For example, if you need to hide the table of contents for a specific story, adjust your story as follows: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/my-component-disable-toc.ts.mdx', + 'web-components/my-component-disable-toc.js.mdx', + 'web-components/my-component-disable-toc.ts.mdx', + 'common/my-component-disable-toc.js.mdx', + 'common/my-component-disable-toc.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + ### Customize component documentation Creating automated documentation with Storybook's Autodocs provides you with the starting point to build a sustainable documentation pattern. Nevertheless, it may not be suited for every case, and you may want to extend it and provide additional information. We recommend combining [MDX](./mdx.md) alongside Storybook's [Doc Blocks](./doc-blocks.md) for such cases to author your documentation. @@ -169,6 +235,22 @@ Out of the box, Storybook has a set of components that you can use to customize ## Troubleshooting +### The table of contents doesn't render as expected + +When using Autodocs's table of contents, you may encounter situations where it appears differently than expected. To help you resolve these problems, we have compiled a list of possible scenarios that may cause issues. If you've run into any of the items listed below and you're interested in helping us improve the support for this feature, we encourage you to reach out to the maintainers using the default communication channels (e.g., [Discord server](https://discord.com/channels/486522875931656193/570426522528382976), [GitHub issues](https://github.com/storybookjs/storybook/issues)). + +#### With simple documentation pages + +If you have a documentation page with only one matching heading and create a table of contents for it, the table of contents will not be hidden by default. A potential solution for this issue would be to add a second heading or turn it off entirely. + +#### With small screens + +If the screen width is less than 1200px, the table of contents will be hidden by default. Currently, there's no built-in solution for this issue that doesn't impact the documentation page's style compatibility. + +#### With MDX + +If you're writing [unattached documentation](./mdx.md#writing-unattached-documentation) using MDX, you cannot customize the table of contents primarily due to the lack of support for defining parameters based on the current implementation. As a result, the table of contents will always revert to the default [configuration](#configure-the-table-of-contents) provided globally. + ### The auto-generated documentation is not showing up in a monorepo setup Out of the box, Storybook's Autodocs feature is built to generate documentation for your stories automatically. Nevertheless, if you're working with a monorepo setup (e.g., [`Yarn Workspaces`](https://yarnpkg.com/features/workspaces), [`pnpm Workspaces`](https://pnpm.io/workspaces)), you may run into issues where part of the documentation may not be generated for you. To help you troubleshoot those issues, we've prepared some recommendations that might help you. diff --git a/docs/writing-docs/doc-blocks.md b/docs/writing-docs/doc-blocks.md index be852235433d..3a0da4aeb6f7 100644 --- a/docs/writing-docs/doc-blocks.md +++ b/docs/writing-docs/doc-blocks.md @@ -2,6 +2,8 @@ title: Doc blocks --- +<YouTubeCallout id="uAA1JvLcl-w" title="Avoid Documentation Nightmares with Storybook Doc Blocks" /> + Storybook offers several doc blocks to help document your components and other aspects of your project. There are two common ways to use doc blocks in Storybook, within MDX and as part of the docs page template. diff --git a/docs/writing-docs/mdx.md b/docs/writing-docs/mdx.md index ab1cea62b7fb..6b54882eb69b 100644 --- a/docs/writing-docs/mdx.md +++ b/docs/writing-docs/mdx.md @@ -2,6 +2,8 @@ title: 'MDX' --- +<YouTubeCallout id="YeIvFke5_5Y" title="MDX Storybook Quick Tips" /> + [MDX](https://mdxjs.com/) files mix Markdown and Javascript/JSX to create rich interactive documentation. You can use Markdown’s readable syntax (such as `# heading`) for your documentation, include stories defined in [Component Story Format (CSF)](../api/csf.md), and freely embed JSX component blocks at any point in the file. All at once. In addition, you can write pure documentation pages in MDX and add them to Storybook alongside your stories. @@ -10,7 +12,7 @@ In addition, you can write pure documentation pages in MDX and add them to Story <div class="aside"> -Writing stories directly in MDX was deprecated in Storybook 7. Please reference the <LinkWithVersion version="6.5" href="./mdx.md">previous documentation</LinkWithVersion> for guidance on that feature. +Writing stories directly in MDX was deprecated in Storybook 7. Please reference the [previous documentation](../../../release-6-5/docs/writing-docs/mdx.md) for guidance on that feature. </div> @@ -382,7 +384,7 @@ As Storybook relies on MDX 2 to render documentation, some technical limitations #### Storybook doesn't create documentation for my component stories -If you run into a situation where Storybook is not able to able to detect and render the documentation for your component stories, it may be due to a misconfiguration in your Storybook. Check your configuration file (i.e., `.storybook/main.js|ts`) and ensure the `stories` configuration element provides the correct path to your stories location(e.g., `../src/**/*.stories.@(js|jsx|ts|tsx)`). +If you run into a situation where Storybook is not able to able to detect and render the documentation for your component stories, it may be due to a misconfiguration in your Storybook. Check your configuration file (i.e., `.storybook/main.js|ts`) and ensure the `stories` configuration element provides the correct path to your stories location(e.g., `../src/**/*.stories.@(js|jsx|mjs|ts|tsx)`). #### The documentation doesn't render using `stories.mdx` @@ -412,8 +414,8 @@ Update your Storybook configuration (in `.storybook/main.js|ts`), and provide th <CodeSnippets paths={[ - 'common/storybook-main-fallback-mdx.js.mdx', - 'common/storybook-main-fallback-mdx.ts.mdx', + 'common/main-config-features-legacy-mdx-1.js.mdx', + 'common/main-config-features-legacy-mdx-1.ts.mdx', ]} /> diff --git a/docs/writing-stories/args.md b/docs/writing-stories/args.md index de3a1ef8f35b..807797e5675f 100644 --- a/docs/writing-stories/args.md +++ b/docs/writing-stories/args.md @@ -91,19 +91,25 @@ You can also define args at the component level; they will apply to all the comp ## Global args -You can also define args at the global level; they will apply to every component's stories unless you overwrite them. To do so, export the `args` key in your `preview.js`: +You can also define args at the global level; they will apply to every component's stories unless you overwrite them. To do so, define the `args` property in the default export of `preview.js`: <!-- prettier-ignore-start --> <CodeSnippets paths={[ - 'common/button-story-project-args-theme.js.mdx', - 'common/button-story-project-args-theme.ts.mdx', + 'common/args-in-preview.js.mdx', + 'common/args-in-preview.ts.mdx', ]} /> <!-- prettier-ignore-end --> +<div class="aside"> + +💡 For most uses of global args, [globals](../essentials/toolbars-and-globals.md) are a better tool for defining globally-applied settings, such as a theme. Using globals enables users to change the value with the toolbar menu. + +</div> + ## Args composition You can separate the arguments to a story to compose in other stories. Here's how you can combine args for multiple stories of the same component. @@ -215,11 +221,11 @@ Complex values such as JSX elements cannot be serialized to the manager (e.g., t <CodeSnippets paths={[ - 'angular/my-component-argtypes-with-mapping.ts.mdx', - 'web-components/my-component-argtypes-with-mapping.js.mdx', - 'web-components/my-component-argtypes-with-mapping.ts.mdx', - 'common/my-component-argtypes-with-mapping.js.mdx', - 'common/my-component-argtypes-with-mapping.ts.mdx', + 'angular/arg-types-mapping.ts.mdx', + 'web-components/arg-types-mapping.js.mdx', + 'web-components/arg-types-mapping.ts.mdx', + 'common/arg-types-mapping.js.mdx', + 'common/arg-types-mapping.ts.mdx', ]} /> diff --git a/docs/writing-stories/introduction.md b/docs/writing-stories/introduction.md index dc28be2a7a25..82905a323984 100644 --- a/docs/writing-stories/introduction.md +++ b/docs/writing-stories/introduction.md @@ -25,7 +25,7 @@ The key ingredients are the [default export](https://developer.mozilla.org/en-US ### Default export -The _default_ export metadata controls how Storybook lists your stories and provides information used by addons. For example, here’s the default export for a story file `Button.stories.js`: +The _default_ export metadata controls how Storybook lists your stories and provides information used by addons. For example, here’s the default export for a story file `Button.stories.js|ts`: <!-- prettier-ignore-start --> @@ -80,9 +80,11 @@ Use the _named_ exports of a CSF file to define your component’s stories. We r <!-- prettier-ignore-end --> +<IfRenderer renderer='react'> + #### Working with React Hooks -[React Hooks](https://reactjs.org/docs/hooks-intro.html) are convenient helper methods to create components using a more streamlined approach. You can use them while creating your component's stories if you need them, although you should treat them as an advanced use case. We **recommend** [args](./args.md) as much as possible when writing your own stories. As an example, here’s a story that uses React Hooks to change the button's state : +[React Hooks](https://react.dev/reference/react) are convenient helper methods to create components using a more streamlined approach. You can use them while creating your component's stories if you need them, although you should treat them as an advanced use case. We **recommend** [args](./args.md) as much as possible when writing your own stories. As an example, here’s a story that uses React Hooks to change the button's state: <!-- prettier-ignore-start --> @@ -101,6 +103,33 @@ Use the _named_ exports of a CSF file to define your component’s stories. We r 💡 The recommendation mentioned above also applies to other frameworks, not only React. </div> +</IfRenderer> + +<IfRenderer renderer='solid'> + +#### Working with Solid Signals + +[Solid Signals](https://www.solidjs.com/docs/latest/api#basic-reactivity) are convenient helper methods to create components using a more streamlined approach. You can use them while creating your component's stories if you need them, although you should treat them as an advanced use case. We **recommend** [args](./args.md) as much as possible when writing your own stories. As an example, here’s a story that uses Solid Signals to change the button's state: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'solid/button-story.with-hooks.js.mdx', + 'solid/button-story.with-hooks.ts.mdx', + ]} + usesCsf3 + csf2Path="writing-stories/introduction#snippet-button-story-with-hooks" +/> + +<!-- prettier-ignore-end --> + +<div class="aside"> +💡 The recommendation mentioned above also applies to other frameworks, not only Solid. +</div> + +</IfRenderer> + ### Rename stories You can rename any particular story you need. For instance, to give it a more accurate name. Here's how you can change the name of the `Primary` story: diff --git a/docs/writing-stories/naming-components-and-hierarchy.md b/docs/writing-stories/naming-components-and-hierarchy.md index 87ca33534fe0..84cc47d70e0d 100644 --- a/docs/writing-stories/naming-components-and-hierarchy.md +++ b/docs/writing-stories/naming-components-and-hierarchy.md @@ -2,7 +2,27 @@ title: 'Naming components and hierarchy' --- -The title of the component you export in the `default` export controls the name shown in the sidebar. +<YouTubeCallout id="VPfjrhDlkVc" title="How to Name Stories and Components" /> + +Storybook provides a powerful way to organize your stories, giving you the necessary tools to categorize, search, and filter your stories based on your organization's needs and preferences. + +## Structure and hierarchy + +When organizing your Storybook, there are two methods of structuring your stories: **implicit** and **explicit**. The [implicit method](../configure/sidebar-and-urls.md#csf-30-auto-titles) involves relying upon the physical location of your stories to position them in the sidebar, while the [explicit method](#naming-stories) involves utilizing the `title` parameter to place the story. + +![Storybook sidebar hierarchy](./naming-hierarchy-sidebar-anatomy.png) + +Based on how you structure your Storybook, you can see that the story hierarchy is made up of various parts: + +- **Category**: The top-level grouping of stories and documentation pages generated by Storybook +- **Folder**: A mid-level organizational unit that groups components and stories in the sidebar, representing a feature or section of your application +- **Component**: A low-level organizational unit representing the component that the story is testing +- **Docs**: The automatically generated [documentation page](../writing-docs/autodocs.md) for the component +- **Story**: The individual story testing a specific component state + +## Naming stories + +When creating your stories, you can explicitly use the `title` parameter to define the story's position in the sidebar. It can also be used to [group](#grouping) related components together in an expandable interface to help with Storybook organization providing a more intuitive experience for your users. For example: <!-- prettier-ignore-start --> @@ -126,12 +146,12 @@ The `storySort` can also accept a configuration object. <!-- prettier-ignore-end --> -| Field | Type | Description | Required | Default Value | Example | -| --------------- | :-----: | :------------------------------------------------------: | :------: | :---------------------: | :-----------------------: | -| **method** | String | Tells Storybook in which order the stories are displayed | No | Storybook configuration | `'alphabetical'` | -| **order** | Array | The stories to be shown, ordered by supplied name | No | Empty Array `[]` | `['Intro', 'Components']` | -| **includeName** | Boolean | Include story name in sort calculation | No | `false` | `true` | -| **locales** | String | The locale required to be displayed | No | System locale | `en-US` | +| Field | Type | Description | Required | Default Value | Example | +| ---------------- | :-----: | :------------------------------------------------------: | :------: | :---------------------: | :-----------------------: | +| **method** | String | Tells Storybook in which order the stories are displayed | No | Storybook configuration | `'alphabetical'` | +| **order** | Array | The stories to be shown, ordered by supplied name | No | Empty Array `[]` | `['Intro', 'Components']` | +| **includeNames** | Boolean | Include story name in sort calculation | No | `false` | `true` | +| **locales** | String | The locale required to be displayed | No | System locale | `en-US` | To sort your stories alphabetically, set `method` to `'alphabetical'` and optionally set the `locales` string. To sort your stories using a custom list, use the `order` array; stories that don't match an item in the `order` list will appear after the items in the list. diff --git a/docs/writing-stories/naming-hierarchy-sidebar-anatomy.png b/docs/writing-stories/naming-hierarchy-sidebar-anatomy.png new file mode 100644 index 000000000000..4d7acc93753a Binary files /dev/null and b/docs/writing-stories/naming-hierarchy-sidebar-anatomy.png differ diff --git a/docs/writing-stories/parameters.md b/docs/writing-stories/parameters.md index 2c7c655bc277..6c53b544b087 100644 --- a/docs/writing-stories/parameters.md +++ b/docs/writing-stories/parameters.md @@ -2,6 +2,8 @@ title: 'Parameters' --- +<YouTubeCallout id="u32vmGVJY2U" title="Build Better Storybooks with Parameters" /> + Parameters are a set of static, named metadata about a story, typically used to control the behavior of Storybook features and addons. For example, let’s customize the backgrounds addon via a parameter. We’ll use `parameters.backgrounds` to define which backgrounds appear in the backgrounds toolbar when a story is selected. diff --git a/docs/writing-stories/typescript.md b/docs/writing-stories/typescript.md new file mode 100644 index 000000000000..17d2c0b6eaca --- /dev/null +++ b/docs/writing-stories/typescript.md @@ -0,0 +1,139 @@ +--- +title: 'Writing stories in TypeScript' +--- + +Writing your stories in [TypeScript](https://www.typescriptlang.org/) makes you more productive. You don't have to jump between files to look up component props. Your code editor will alert you about missing required props and even autocomplete prop values, just like when using your components within your app. Plus, Storybook infers those component types to auto-generate the [Controls](../api/doc-block-controls.md) table. + +Storybook has built-in TypeScript support, so you can get started with zero configuration required. + +## Typing stories with `Meta` and `StoryObj` + +When writing stories, there are two aspects that are helpful to type. The first is the [component meta](./introduction.md#default-export), which describes and configures the component and its stories. In a [CSF file](../api/csf.md), this is the default export. The second is the [stories themselves](./introduction.md#defining-stories). + +Storybook provides utility types for each of these, named `Meta` and `StoryObj`. Here's an example CSF file using those types: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'angular/typed-csf-file.ts.mdx', + 'web-components/typed-csf-file.ts.mdx', + 'common/typed-csf-file.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +### Props type parameter + +`Meta` and `StoryObj` types are both [generics](https://www.typescriptlang.org/docs/handbook/2/generics.html#working-with-generic-type-variables), so you can provide them with an optional prop type parameter for the component type or the component's props type (e.g., the `typeof Button` portion of `Meta<typeof Button>`). By doing so, TypeScript will prevent you from defining an invalid arg, and all [decorators](./decorators.md), [play functions](./play-function.md), or [loaders](./loaders.md) will type their function arguments. + +The example above passes a component type. See [**Typing custom args**](#typing-custom-args) for an example of passing a props type. + +## Using `satisfies` for better type safety + +<IfRenderer renderer={['angular', 'web-components']}> + +<div class="aside"> + +ℹ️ We are not yet able to provide additional type safety using the `satisfies` operator with Angular and Web components. + +<details> +<summary>More info</summary> + +Both Angular and Web components utilize a class plus decorator approach. The decorators provide runtime metadata, but do not offer metadata at compile time. + +As a result, it appears impossible to determine if a property in the class is a required property or an optional property (but non-nullable due to a default value) or a non-nullable internal state variable. + +For more information, please refer to [this discussion](https://github.com/storybookjs/storybook/discussions/20988). + +</details> + +</div> + +</IfRenderer> + +If you are using TypeScript 4.9+, you can take advantage of the new [`satisfies`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-9.html) operator to get stricter type checking. Now you will receive type errors for missing required args, not just invalid ones. + +Using `satisfies` to apply a story's type helps maintain type safety when sharing a `play` function across stories. Without it, TypeScript will throw an error that the `play` function may be undefined. The `satisfies` operator enables TypeScript to infer whether the play function is defined or not. + +Finally, use of `satisfies` allows you to pass `typeof meta` to the `StoryObj` generic. This informs TypeScript of the connection between the `meta` and `StoryObj` types, which allows it to infer the `args` type from the `meta` type. In other words, TypeScript will understand that args can be defined both at the story and meta level and won't throw an error when a required arg is defined at the meta level, but not at the story level. + +## Typing custom args + +Sometimes stories need to define args that aren’t included in the component's props. For this case, you can use an [intersection type](https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types) to combine a component's props type and your custom args' type. For example, here's how you could use a `footer` arg to populate a child component: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/page-story-slots.ts.mdx', + 'vue/page-story-slots.2.ts.mdx', + 'vue/page-story-slots.3.ts.mdx', + 'angular/page-story-slots.ts.mdx', + 'web-components/page-story-slots.ts.mdx', + 'solid/page-story-slots.ts.mdx', + ]} + usesCsf3 + csf2Path="writing-stories/args#snippet-page-story-slots" +/> + +<!-- prettier-ignore-end --> + +<IfRenderer renderer={['vue']}> + +### Vue specific tips + +Vue has excellent support for TypeScript, and we have done our utmost to take advantage of that in the stories files. For example, consider the following strongly typed Vue3 single file component (SFC): + +```html +<script setup lang="ts"> + defineProps<{ count: number; disabled: boolean }>(); + + const emit = defineEmits<{ + (e: 'increaseBy', amount: number): void; + (e: 'decreaseBy', amount: number): void; + }>(); +</script> + +<template> + <div class="card"> + {{ count }} + <button @click="emit('increaseBy', 1)" :disabled="disabled">Increase by 1</button> + <button @click="$emit('decreaseBy', 1)" :disabled="disabled">Decrease by 1</button> + </div> +</template> +``` + +You can type check SFC files with vue-tsc and get editor support in VSCode by installing the [Vue Language Features (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) and [TypeScript Vue Plugin](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) extensions. + +This setup will add type support for `*.vue` imports to your `*.stories.ts` files, providing the same type safety and autocomplete features. + +</IfRenderer> + +<IfRenderer renderer={['svelte']}> + +### Svelte specific tips + +Svelte offers excellent TypeScript support for .svelte files. For example, consider the following component. You can run type checks using svelte-check and add VSCode editor support with the [Svelte for VSCode extension](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode&ssr=false#overview). + +```html +<script lang="ts"> + import { createEventDispatcher } from 'svelte'; + + export let count: number; + export let disabled: boolean; + + const dispatch = createEventDispatcher(); +</script> + +<div class="card"> + {count} + <button on:click={() => dispatch('increaseBy', 1)} {disabled}> Increase by 1 </button> + <button on:click={() => dispatch('decreaseBy', 1)} {disabled}> Decrease by 1 </button> +</div> +``` + +The same setup works with Svelte stories files too, providing both type safety and autocompletion. + +</IfRenderer> diff --git a/docs/writing-tests/accessibility-testing.md b/docs/writing-tests/accessibility-testing.md index 630196b797cf..0efa6436d3c4 100644 --- a/docs/writing-tests/accessibility-testing.md +++ b/docs/writing-tests/accessibility-testing.md @@ -259,4 +259,5 @@ Browser-based accessibility tests, like those found in Storybook, evaluate the r - [Interaction tests](./interaction-testing.md) for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/interaction-testing.md b/docs/writing-tests/interaction-testing.md index 7ec58314f753..01df1b1283e4 100644 --- a/docs/writing-tests/interaction-testing.md +++ b/docs/writing-tests/interaction-testing.md @@ -211,4 +211,5 @@ Interaction tests integrate Jest and Testing Library into Storybook. The biggest - Interaction tests for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/introduction.md b/docs/writing-tests/introduction.md index c826b7bb78a8..b7d1fe1411d0 100644 --- a/docs/writing-tests/introduction.md +++ b/docs/writing-tests/introduction.md @@ -17,7 +17,7 @@ The simplest testing method is manual “spot checking”. You run Storybook loc To test a component in isolation, you often have to mock data, dependencies, or even network requests. Check out our guide on [mocking in Storybook](../writing-stories/build-pages-with-storybook.md#mocking-connected-components) for more info. -Storybook also comes with tools, [a test runner](./test-runner.md), and [handy integrations](./importing-stories-in-tests.md) with the larger JavaScript ecosystem to expand your UI test coverage. These docs detail how you can use Storybook for UI testing. +Storybook also comes with tools, [a test runner](./test-runner.md), and handy integrations with the larger JavaScript ecosystem to expand your UI test coverage. These docs detail how you can use Storybook for UI testing. - [**Test runner**](./test-runner.md) to automatically test your entire Storybook and catch broken stories. - [**Visual tests**](./visual-testing.md) capture a screenshot of every story then compare it against baselines to detect appearance and integration issues @@ -25,4 +25,5 @@ Storybook also comes with tools, [a test runner](./test-runner.md), and [handy i - [**Interaction tests**](./interaction-testing.md) verify component functionality by simulating user behaviour, firing events, and ensuring that state is updated as expected - [**Coverage tests**](./test-coverage.md) to measure how much of your code is covered by your tests - [**Snapshot tests**](./snapshot-testing.md) detect changes in the rendered markup to surface rendering errors or warnings -- [**Import stories in other tests**](./importing-stories-in-tests.md) to QA even more UI characteristics +- [**End-to-end tests**](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [**Unit tests**](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/snapshot-testing.md b/docs/writing-tests/snapshot-testing.md index 8fd31e70162e..29f3489add07 100644 --- a/docs/writing-tests/snapshot-testing.md +++ b/docs/writing-tests/snapshot-testing.md @@ -119,4 +119,5 @@ Visual tests capture images of stories and compare them against image baselines. - [Interaction tests](./interaction-testing.md) for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - Snapshot tests for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/importing-stories-in-tests.md b/docs/writing-tests/stories-in-end-to-end-tests.md similarity index 50% rename from docs/writing-tests/importing-stories-in-tests.md rename to docs/writing-tests/stories-in-end-to-end-tests.md index 1aee2b6ee297..66e068a89a71 100644 --- a/docs/writing-tests/importing-stories-in-tests.md +++ b/docs/writing-tests/stories-in-end-to-end-tests.md @@ -1,96 +1,10 @@ --- -title: 'Import stories in tests' +title: 'End-to-end testing' --- -Teams test a variety of UI characteristics using different tools. Each tool requires you to replicate the same component state over and over. That’s a maintenance headache. Ideally, you’d set up your tests in the same way and reuse that across tools. +Storybook seamlessly integrates with additional testing frameworks like [Cypress](https://www.cypress.io/) and [Playwright](https://playwright.dev/) to provide a comprehensive testing solution. By leveraging the Component Story Format (CSF), developers can write test cases that simulate user interactions and verify the behavior of individual components within the Storybook environment. This approach enables developers to thoroughly test their components' functionality, responsiveness, and visual appearance across different scenarios, resulting in more robust and reliable applications. -Storybook enables you to isolate a component and capture all of its use cases in a `*.stories.js` file. Stories are standard JavaScript modules so they’re cross compatible with the whole JavaScript ecosystem. No API lock-in. - -Stories are a practical starting point for UI testing. Import stories into tools like [Jest](https://jestjs.io/), [Testing Library](https://testing-library.com/), [Puppeteer](https://pptr.dev/), [Cypress](https://www.cypress.io/), and [Playwright](https://playwright.dev/) to save time and maintenance work. - -## Setup the testing addon for your framework - -Storybook has test addons for core frameworks React, Vue (2,3), and Angular. This allows you to reuse stories along with all of their mocks, dependencies, and context. - -- [@storybook/testing-react](https://storybook.js.org/addons/@storybook/testing-react) -- [@storybook/testing-vue](https://storybook.js.org/addons/@storybook/testing-vue) -- [@storybook/testing-vue3](https://storybook.js.org/addons/@storybook/testing-vue3) -- [@storybook/testing-angular](https://storybook.js.org/addons/@storybook/testing-angular) - -### Install the addon - -Run the following command to add Storybook's testing addon into your environment: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'common/storybook-testing-addon-install.yarn.js.mdx', - 'common/storybook-testing-addon-install.npm.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -### Optional configuration - -If you've set up global decorators or parameters and you need to use them in your tests, add the following to your test configuration file: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'react/storybook-testing-addon-optional-config.js.mdx', - 'vue/storybook-testing-addon-optional-config.2.js.mdx', - 'vue/storybook-testing-addon-optional-config.3.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -Update your test script to include the configuration file: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'react/storybook-testing-addon-optional-config-scripts.json.mdx', - 'vue/storybook-testing-addon-optional-config-scripts.json.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -## Example with Testing Library - -[Testing Library](https://testing-library.com/) is a suite of helper libraries for browser-based interaction tests. With [Component Story Format](../api/csf.md), your stories are reusable with Testing Library. Each named export (story) is renderable within your testing setup. - -<div class="aside"> - -💡 You can use Testing Library out-of-the-box with [Storybook Interaction Testing](./interaction-testing.md). - -</div> - -For example, if you were working on a login component and wanted to test the invalid credentials scenario, here's how you could write your test: - -<!-- prettier-ignore-start --> - -<CodeSnippets - paths={[ - 'react/component-test-with-testing-library.js.mdx', - 'react/component-test-with-testing-library.ts.mdx', - 'vue/component-test-with-testing-library.js.mdx', - 'angular/component-test-with-testing-library.ts.mdx', - 'svelte/component-test-with-testing-library.js.mdx', - 'preact/component-test-with-testing-library.js.mdx', - ]} -/> - -<!-- prettier-ignore-end --> - -Once the test runs, it loads the story and renders it. [Testing Library](https://testing-library.com/) then emulates the user's behavior and checks if the component state has updated. - -## Example with Cypress +### With Cypress [Cypress](https://www.cypress.io/) is an end-to-end testing framework. It enables you to test a complete instance of your application by simulating user behavior. With Component Story Format, your stories are reusable with Cypress. Each named export (in other words, a story) is renderable within your testing setup. @@ -136,7 +50,7 @@ When Cypress runs your test, it loads Storybook's isolated iframe and checks if ![Cypress running successfully](./cypress-success-run-tests-optimized.png) -## Example with Playwright +### With Playwright [Playwright](https://playwright.dev/) is a browser automation tool and end-to-end testing framework from Microsoft. It offers cross-browser automation, mobile testing with device emulation, and headless testing. With Component Story Format, your stories are reusable with Playwright. Each named export (in other words, a story) is renderable within your testing setup. @@ -179,8 +93,6 @@ With Playwright, you can write a test to check if the inputs are filled and matc Once you execute Playwright, it opens a new browser window, loads Storybook's isolated iframe, asserts if the inputs contain the specified values, and displays the test results in the terminal. ---- - #### Learn about other UI tests - [Test runner](./test-runner.md) to automate test execution @@ -189,4 +101,5 @@ Once you execute Playwright, it opens a new browser window, loads Storybook's is - [Interaction tests](./interaction-testing.md) for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- Import stories in other tests for other tools +- End-to-end tests for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/stories-in-unit-tests.md b/docs/writing-tests/stories-in-unit-tests.md new file mode 100644 index 000000000000..156294d5e480 --- /dev/null +++ b/docs/writing-tests/stories-in-unit-tests.md @@ -0,0 +1,211 @@ +--- +title: 'Unit tests' +--- + +Teams test a variety of UI characteristics using different tools. Each tool requires you to replicate the same component state over and over. That’s a maintenance headache. Ideally, you’d set up your tests in the same way and reuse that across tools. + +Storybook enables you to isolate a component and capture its use cases in a `*.stories.js|ts` file. Stories are standard JavaScript modules cross-compatible with the whole JavaScript ecosystem. + +Stories are a practical starting point for UI testing. Import stories into tools like [Jest](https://jestjs.io/), [Testing Library](https://testing-library.com/), [Vitest](https://vitest.dev/) and [Playwright](https://playwright.dev/), to save time and maintenance work. + +<IfRenderer renderer='vue'> + +## Set up the testing addon + +Storybook's [`@storybook/testing-vue3`](https://storybook.js.org/addons/@storybook/testing-vue3/) addon is a powerful tool that simplifies the testing process by allowing you to reuse your stories inside alongside their associated mocks, dependencies, and context, saving time and ensuring consistency and accuracy in the testing process. + +Run the following command to install the addon. + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'vue/storybook-testing-library-install.yarn.js.mdx', + 'vue/storybook-testing-library-install.npm.js.mdx', + 'vue/storybook-testing-library-install.pnpm.js.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<div class="aside"> + +ℹ️ If you're using Storybook 7 or higher, the `@storybook/testing-vue3` addon is the only one we support. For Vue 2 users, refer to the [troubleshooting section](#troubleshooting) for additional guidance. + +</div> + +</IfRenderer> + +## Write a test with Testing Library + +[Testing Library](https://testing-library.com/) is a suite of helper libraries for browser-based interaction tests. With [Component Story Format](../api/csf.md), your stories are reusable with Testing Library. Each named export (story) is renderable within your testing setup. For example, if you were working on a login component and wanted to test the invalid credentials scenario, here's how you could write your test: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/component-test-with-testing-library.js.mdx', + 'react/component-test-with-testing-library.ts.mdx', + 'vue/component-test-with-testing-library.3.js.mdx', + 'vue/component-test-with-testing-library.3.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<div class="aside"> + +💡 You can use Testing Library out-of-the-box with [Storybook Interaction Testing](./interaction-testing.md). + +</div> + +Once the test runs, it loads the story and renders it. [Testing Library](https://testing-library.com/) then emulates the user's behavior and checks if the component state has been updated. + +## Configure + +By default, Storybook offers a zero-config setup for React and other frameworks via addons, allowing you to run your stories as tests with Testing Library. However, if you're running tests and you've set up specific configurations in your Storybook instance (e.g., global [decorators](../writing-stories/decorators.md#global-decorators), [parameters](../writing-stories/parameters.md#global-parameters)) that you want to use in your tests, you'll need to extend your test setup to include these configurations. To do so, create a `setup.js|ts` file as follows: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/storybook-testing-addon-optional-config.js.mdx', + 'vue/storybook-testing-addon-optional-config.js.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +<IfRenderer renderer='react'> + +Update your test script to include the configuration file: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/react-test-scripts-optional-config-scripts.json.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +</IfRenderer> + +<IfRenderer renderer='vue'> + +Update your test configuration file (e.g., `vite.config.js|ts`) if you're using [Vitest](https://vitest.dev/), or your test script if you're using [Jest](https://jestjs.io/): + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'vue/storybook-testing-addon-optional-config.vite.js.mdx', + 'vue/storybook-testing-addon-optional-config.vite.ts.mdx', + 'vue/vue-jest-optional-config-scripts.jest.js.mdx', + 'vue/vue-jest-optional-config-scripts.jest.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +</IfRenderer> + +### Override story properties + +By default, the `setProjectAnnotations` function injects into your existing tests any global configuration you've defined in your Storybook instance (i.e., parameters, decorators in the `preview.js|ts` file). Nevertheless, this may cause unforeseen side effects for tests that are not intended to use these global configurations. To avoid this, you can override the global configurations by extending either the `composeStory` or `composeStories` functions to provide test-specific configurations. For example: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/override-compose-story-test.compose-story.js.mdx', + 'react/override-compose-story-test.compose-story.ts.mdx', + 'vue/override-compose-story-test.compose-story.3.js.mdx', + 'vue/override-compose-story-test.compose-story.3.ts.mdx', + 'react/override-compose-story-test.compose-stories.js.mdx', + 'react/override-compose-story-test.compose-stories.ts.mdx', + 'vue/override-compose-story-test.compose-stories.3.js.mdx', + 'vue/override-compose-story-test.compose-stories.3.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## Run tests on a single story + +You can use the `composeStory` function from the appropriate framework or supported addon to allow your tests to run on a single story. However, if you're relying on this method, we recommend that you supply the story metadata (i.e., the [default export](../writing-stories/introduction.md#default-export)) to the `composeStory` function. This ensures that your tests can accurately determine the correct information about the story. For example: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/single-story-test.js.mdx', + 'react/single-story-test.ts.mdx', + 'vue/single-story-test.3.js.mdx', + 'vue/single-story-test.3.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## Combine stories into a single test + +If you intend to test multiple stories in a single test, use the `composeStories` function from the appropriate framework or supported addon. The function will process every component story you've specified, including any [`args`](../writing-stories/args.md) or [`decorators`](../writing-stories/decorators.md) you've defined. For example: + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/multiple-stories-test.js.mdx', + 'react/multiple-stories-test.ts.mdx', + 'vue/multiple-stories-test.3.js.mdx', + 'vue/multiple-stories-test.3.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +## Troubleshooting + +### Run tests in other frameworks + +Storybook provides community-led addons for other frameworks like [Vue 2](https://storybook.js.org/addons/@storybook/testing-vue) and [Angular](https://storybook.js.org/addons/@storybook/testing-angular). However, these addons still lack support for the latest stable Storybook release. If you're interested in helping out, we recommend reaching out to the maintainers using the default communication channels (GitHub and [Discord server](https://discord.com/channels/486522875931656193/839297503446695956)). + +### The args are not being passed to the test + +<IfRenderer renderer='react'> + +The components returned by `composeStories` or `composeStory` not only can be rendered as React components but also come with the combined properties from the story, meta, and global configuration. This means that if you want to access args or parameters, for instance, you can do so: + +</IfRenderer> + +<IfRenderer renderer='vue'> + +When using the `composeStories` or `composeStory` functions, the components being rendered will have a combination of properties from the story, meta, and global configuration. Therefore, if you need to access the args or parameters, you can do so as follows: + +</IfRenderer> + +<!-- prettier-ignore-start --> + +<CodeSnippets + paths={[ + 'react/reuse-args-test.js.mdx', + 'react/reuse-args-test.ts.mdx', + 'vue/reuse-args-test.3.js.mdx', + 'vue/reuse-args-test.3.ts.mdx', + ]} +/> + +<!-- prettier-ignore-end --> + +#### Learn about other UI tests + +- [Test runner](./test-runner.md) to automate test execution +- [Visual tests](./visual-testing.md) for appearance +- [Accessibility tests](./accessibility-testing.md) for accessibility +- [Interaction tests](./interaction-testing.md) for user behavior simulation +- [Coverage tests](./test-coverage.md) for measuring code coverage +- [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- Unit tests for functionality diff --git a/docs/writing-tests/test-coverage.md b/docs/writing-tests/test-coverage.md index 62d868d0f935..a3025ced5a85 100644 --- a/docs/writing-tests/test-coverage.md +++ b/docs/writing-tests/test-coverage.md @@ -157,4 +157,5 @@ As the [coverage addon](https://storybook.js.org/addons/@storybook/addon-coverag - [Interaction tests](./interaction-testing.md) for user behavior simulation - Coverage tests for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/test-runner.md b/docs/writing-tests/test-runner.md index 2d010b3ee428..4ef6b07315ab 100644 --- a/docs/writing-tests/test-runner.md +++ b/docs/writing-tests/test-runner.md @@ -79,23 +79,31 @@ Test runner offers zero-config support for Storybook. However, you can run `test The test-runner is powered by [Jest](https://jestjs.io/) and accepts a subset of its [CLI options](https://jestjs.io/docs/cli) (for example, `--watch`, `--maxWorkers`). If you're already using any of those flags in your project, you should be able to migrate them into Storybook's test-runner without any issues. Listed below are all the available flags and examples of using them. -| Options | Description | -| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `--help` | Output usage information <br/>`test-storybook --help` | +| Options | Description | +| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--help` | Output usage information <br/>`test-storybook --help` | | `-s`, `--stories-json` | Run in stories json mode. Automatically detected (requires a compatible Storybook) <br/>`test-storybook --stories-json` | | `--no-stories-json` | Disables stories json mode <br/>`test-storybook --no-stories-json` | -| `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from <br/>`test-storybook -c .storybook` | -| `--watch` | Run in watch mode <br/>`test-storybook --watch` | -| `--url` | Define the URL to run tests in. Useful for custom Storybook URLs <br/>`test-storybook --url http://the-storybook-url-here.com` | -| `--browsers` | Define browsers to run tests in. One or multiple of: chromium, firefox, webkit <br/>`test-storybook --browsers firefox chromium` | -| `--maxWorkers [amount]` | Specifies the maximum number of workers the worker-pool will spawn for running tests <br/>`test-storybook --maxWorkers=2` | -| `--no-cache` | Disable the cache <br/>`test-storybook --no-cache` | -| `--clearCache` | Deletes the Jest cache directory and then exits without running tests <br/>`test-storybook --clearCache` | -| `--verbose` | Display individual test results with the test suite hierarchy <br/>`test-storybook --verbose` | -| `-u`, `--updateSnapshot` | Use this flag to re-record every snapshot that fails during this test run <br/>`test-storybook -u` | -| `--eject` | Creates a local configuration file to override defaults of the test-runner <br/>`test-storybook --eject` | -| `--coverage` | Runs [coverage tests](./test-coverage.md) on your stories and components <br/> `test-storybook --coverage` | -| `--shard [index/count]` | Requires CI. Splits the test suite execution into multiple machines <br/> `test-storybook --shard=1/8` | +| `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from <br/>`test-storybook -c .storybook` | +| `--watch` | Run in watch mode <br/>`test-storybook --watch` | +| `--watchAll` | Watch files for changes and rerun all tests when something changes.<br/>`test-storybook --watchAll` | +| `--coverage` | Runs [coverage tests](./test-coverage.md) on your stories and components <br/> `test-storybook --coverage` | +| `--coverageDirectory` | Directory where to write coverage report output <br/>`test-storybook --coverage --coverageDirectory coverage/ui/storybook` | +| `--url` | Define the URL to run tests in. Useful for custom Storybook URLs <br/>`test-storybook --url http://the-storybook-url-here.com` | +| `--browsers` | Define browsers to run tests in. One or multiple of: chromium, firefox, webkit <br/>`test-storybook --browsers firefox chromium` | +| `--maxWorkers [amount]` | Specifies the maximum number of workers the worker-pool will spawn for running tests <br/>`test-storybook --maxWorkers=2` | +| `--no-cache` | Disable the cache <br/>`test-storybook --no-cache` | +| `--clearCache` | Deletes the Jest cache directory and then exits without running tests <br/>`test-storybook --clearCache` | +| `--verbose` | Display individual test results with the test suite hierarchy <br/>`test-storybook --verbose` | +| `-u`, `--updateSnapshot` | Use this flag to re-record every snapshot that fails during this test run <br/>`test-storybook -u` | +| `--eject` | Creates a local configuration file to override defaults of the test-runner <br/>`test-storybook --eject` | +| `--json` | Prints the test results in JSON. This mode will send all other test output and user messages to stderr. <br/>`test-storybook --json` | +| `--outputFile` | Write test results to a file when the --json option is also specified. <br/>`test-storybook --json --outputFile results.json` | +| `--junit` | Indicates that test information should be reported in a junit file. <br/>`test-storybook --**junit**` | +| `--ci` | Instead of the regular behavior of storing a new snapshot automatically, it will fail the test and require Jest to be run with `--updateSnapshot`. <br/>`test-storybook --ci` | +| `--shard [index/count]` | Requires CI. Splits the test suite execution into multiple machines <br/> `test-storybook --shard=1/8` | +| `--failOnConsole` | Makes tests fail on browser console errors<br/>`test-storybook --failOnConsole` | + <!-- prettier-ignore-start --> @@ -190,11 +198,12 @@ The test-runner renders a story and executes its [play function](../writing-stor The test-runner exports test hooks that can be overridden globally to enable use cases like visual or DOM snapshots. These hooks give you access to the test lifecycle _before_ and _after_ the story is rendered. Listed below are the available hooks and an overview of how to use them. -| Hook | Description | -| ------------ | ----------------------------------------------------------------------------- | -| `setup` | Executes once before all the tests run<br/>`setup() {}` | -| `preRender` | Executes before a story is rendered<br/>`async preRender(page, context) {}` | -| `postRender` | Executes after the story is rendered<br/>`async postRender(page, context) {}` | +| Hook | Description | +| ------------ | -------------------------------------------------------------------------------------------------- | +| `prepare` | Prepares the browser for tests<br/>`async prepare({ page, browserContext, testRunnerConfig }() {}` | +| `setup` | Executes once before all the tests run<br/>`setup() {}` | +| `preRender` | Executes before a story is rendered<br/>`async preRender(page, context) {}` | +| `postRender` | Executes after the story is rendered<br/>`async postRender(page, context) {}` | <div class="aside"> @@ -327,4 +336,5 @@ As the test runner is based on Playwright, you might need to use specific docker - [Interaction tests](./interaction-testing.md) for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/docs/writing-tests/visual-testing.md b/docs/writing-tests/visual-testing.md index b71659f9e1a4..a62cbdd9d593 100644 --- a/docs/writing-tests/visual-testing.md +++ b/docs/writing-tests/visual-testing.md @@ -88,4 +88,5 @@ Snapshot tests compare the rendered markup of every story against known baseline - [Interaction tests](./interaction-testing.md) for user behavior simulation - [Coverage tests](./test-coverage.md) for measuring code coverage - [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings -- [Import stories in other tests](./importing-stories-in-tests.md) for other tools +- [End-to-end tests](./stories-in-end-to-end-tests.md) for simulating real user scenarios +- [Unit tests](./stories-in-unit-tests.md) for functionality diff --git a/node_modules/.yarn-state.yml b/node_modules/.yarn-state.yml index 7ee729427c55..a6b1a224e847 100644 --- a/node_modules/.yarn-state.yml +++ b/node_modules/.yarn-state.yml @@ -5,6 +5,6 @@ __metadata: version: 1 nmMode: classic -"root-workspace-0b6124@workspace:.": +"@storybook/root@workspace:.": locations: - "" diff --git a/package.json b/package.json index 5362f0c2e17d..7c606bfbed07 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,20 @@ { + "name": "@storybook/root", "scripts": { - "start": "yarn task --task dev --template react-vite/default-ts --start-from=install", - "task": "echo 'Installing Script Dependencies...'; cd scripts; yarn install >/dev/null; yarn task", - "get-template": "cd scripts; yarn get-template", + "ci-tests": "cd code; yarn ci-tests", "get-report-message": "cd scripts; yarn get-report-message", - "test": "cd code; yarn test", + "get-template": "cd scripts; yarn get-template", "lint": "cd code; yarn lint", "nx": "cd code; yarn nx", - "ci-tests": "cd code; yarn ci-tests", - "pretty-docs": "cd scripts; yarn install >/dev/null; yarn docs:prettier:write" + "pretty-docs": "cd scripts; yarn install >/dev/null; yarn docs:prettier:write", + "start": "yarn task --task dev --template react-vite/default-ts --start-from=install", + "task": "echo 'Installing Script Dependencies...'; cd scripts; yarn install >/dev/null; yarn task", + "test": "cd code; yarn test", + "upload-bench": "cd scripts; yarn upload-bench" }, - "packageManager": "yarn@3.3.0" + "packageManager": "yarn@3.5.1", + "volta": { + "node": "16.20.1", + "yarn": "3.5.1" + } } diff --git a/scripts/.yarnrc.yml b/scripts/.yarnrc.yml index 0c275533113c..0193aea8d545 100644 --- a/scripts/.yarnrc.yml +++ b/scripts/.yarnrc.yml @@ -23,5 +23,5 @@ plugins: unsafeHttpWhitelist: - localhost -yarnPath: ../.yarn/releases/yarn-3.4.1.cjs +yarnPath: ../.yarn/releases/yarn-3.5.1.cjs installStatePath: '../.yarn/scripts-install-state.gz' diff --git a/scripts/__mocks__/simple-git.js b/scripts/__mocks__/simple-git.js new file mode 100644 index 000000000000..89fa9f23c7b1 --- /dev/null +++ b/scripts/__mocks__/simple-git.js @@ -0,0 +1,18 @@ +/* eslint-disable no-underscore-dangle */ +const mod = jest.createMockFromModule('simple-git'); + +mod.__getRemotes = jest + .fn() + .mockReturnValue([{ name: 'origin', refs: { fetch: 'origin', push: 'origin' } }]); +mod.__fetch = jest.fn(); +mod.__revparse = jest.fn().mockResolvedValue('mockedGitCommitHash'); + +mod.simpleGit = () => { + return { + getRemotes: mod.__getRemotes, + fetch: mod.__fetch, + revparse: mod.__revparse, + }; +}; + +module.exports = mod; diff --git a/scripts/__mocks__/uuid.ts b/scripts/__mocks__/uuid.ts new file mode 100644 index 000000000000..bd6e08f5a6eb --- /dev/null +++ b/scripts/__mocks__/uuid.ts @@ -0,0 +1,8 @@ +const { v5 } = jest.requireActual('uuid'); + +let seed = 0; + +export const v4 = () => { + seed += 1; + return v5(seed.toString(), '6c7fda6d-f92f-4bd2-9d4d-da26a59196a6'); +}; diff --git a/scripts/bench/bench.schema b/scripts/bench/bench.schema new file mode 100644 index 000000000000..d459223136a0 --- /dev/null +++ b/scripts/bench/bench.schema @@ -0,0 +1,33 @@ +branch: STRING, +commit: STRING, +timestamp: STRING, +label: STRING, +createTime: INTEGER, +generateTime: INTEGER, +initTime: INTEGER, +createSize: INTEGER, +generateSize: INTEGER, +initSize: INTEGER, +diffSize: INTEGER, +buildTime: INTEGER, +buildSize: INTEGER, +buildSbAddonsSize: INTEGER, +buildSbCommonSize: INTEGER, +buildSbManagerSize: INTEGER, +buildSbPreviewSize: INTEGER, +buildStaticSize: INTEGER, +buildPrebuildSize: INTEGER, +buildPreviewSize: INTEGER, +devPreviewResponsive: INTEGER, +devManagerResponsive: INTEGER, +devManagerHeaderVisible: INTEGER, +devManagerIndexVisible: INTEGER, +devStoryVisible: INTEGER, +devStoryVisibleUncached: INTEGER, +devAutodocsVisible: INTEGER, +devMDXVisible: INTEGER, +buildManagerHeaderVisible: INTEGER, +buildManagerIndexVisible: INTEGER, +buildStoryVisible: INTEGER, +buildAutodocsVisible: INTEGER, +buildMDXVisible: INTEGER \ No newline at end of file diff --git a/scripts/bench/browse.ts b/scripts/bench/browse.ts new file mode 100644 index 000000000000..c063fed1ff8d --- /dev/null +++ b/scripts/bench/browse.ts @@ -0,0 +1,124 @@ +import { chromium } from 'playwright'; +import { now } from './utils'; + +interface Result { + managerHeaderVisible?: number; + managerIndexVisible?: number; + storyVisible?: number; + storyVisibleUncached?: number; + autodocsVisible?: number; + mdxVisible?: number; +} + +export const browse = async (url: string, { disableDocs }: { disableDocs?: boolean }) => { + const result: Result = {}; + + /* Heat up time for playwright and the builder + * This is to avoid the first run being slower than the rest + * which can happen due to vite or webpack lazy compilation + * We visit the story and the docs page, so those should be fully cached + * + * We instantiate a new browser for each run to avoid any caching happening in the browser itself + */ + const x = await benchStory(url); + if (!disableDocs) await benchAutodocs(url); + + result.storyVisibleUncached = x.storyVisible; + + if (!disableDocs) Object.assign(result, await benchMDX(url)); + Object.assign(result, await benchStory(url)); + if (!disableDocs) Object.assign(result, await benchAutodocs(url)); + + return result; +}; + +async function benchAutodocs(url: string) { + const result: Result = {}; + const browser = await chromium.launch(/* { headless: false } */); + await browser.newContext(); + const page = await browser.newPage(); + await page.setDefaultTimeout(40000); + + const start = now(); + await page.goto(`${url}?path=/docs/example-button--docs`); + + const tasks = [ + async () => { + const previewPage = await page.frame({ url: /iframe.html/ }).page(); + await previewPage.setDefaultTimeout(40000); + + await previewPage.waitForLoadState('load'); + await previewPage.getByText('Primary UI component for user interaction'); + + result.autodocsVisible = now() - start; + }, + ]; + + await Promise.all(tasks.map((t) => t())); + await page.close(); + + return result; +} + +async function benchMDX(url: string) { + const result: Result = {}; + const browser = await chromium.launch(/* { headless: false } */); + await browser.newContext(); + const page = await browser.newPage(); + + const start = now(); + await page.goto(`${url}?path=/docs/configure-your-project--docs`); + + const tasks = [ + async () => { + const previewPage = await page.frame({ url: /iframe.html/ }).page(); + await previewPage.setDefaultTimeout(40000); + + await previewPage.waitForLoadState('load'); + await previewPage.getByText('Configure your project'); + + result.mdxVisible = now() - start; + }, + ]; + + await Promise.all(tasks.map((t) => t())); + await page.close(); + + return result; +} + +async function benchStory(url: string) { + const result: Result = {}; + const browser = await chromium.launch(/* { headless: false } */); + await browser.newContext(); + const page = await browser.newPage(); + + const start = now(); + await page.goto(`${url}?path=/story/example-button--primary`); + + const tasks = [ + // + async () => { + await page.waitForSelector('.sidebar-header', { state: 'attached' }); + result.managerHeaderVisible = now() - start; + }, + async () => { + await page.waitForSelector('#example-button--primary', { state: 'attached' }); + result.managerIndexVisible = now() - start; + }, + async () => { + const previewPage = await page.frame({ url: /iframe.html/ }).page(); + await previewPage.setDefaultTimeout(40000); + + await previewPage.waitForLoadState('load'); + await previewPage.getByText('Button'); + + result.storyVisible = now() - start; + }, + ]; + + await Promise.all(tasks.map((t) => t())); + await page.close(); + + return result; +} diff --git a/scripts/bench/types.ts b/scripts/bench/types.ts new file mode 100644 index 000000000000..da00af720ad2 --- /dev/null +++ b/scripts/bench/types.ts @@ -0,0 +1,67 @@ +// NOTE: this must be kept in sync with ./bench.schema, which defines +// the table schema in BigQuery +export interface BenchResults { + branch: string; + commit: string; + timestamp: string; + label: string; + + /** The time it takes to create the base sandbox without storybook */ + createTime: number; + /** The time it takes to install the base sandbox after it has been initialized */ + generateTime: number; + /** The time it takes to run `sb init` on the base sandbox */ + initTime: number; + /** Size of base sandbox node_modules without storybook pre-install */ + createSize: number; + /** Size of base sandbox node_modules without storybook post-install */ + generateSize: number; + /** Size of the sandbox node_modules post `sb init` */ + initSize: number; + /** Difference bewtween `initSize` and `generateSize` */ + diffSize: number; + /** Full `sb build` time */ + buildTime: number; + /** Size of the storybook-static directory in total */ + buildSize: number; + /** Size of the storybook-static/sb-addons in total */ + buildSbAddonsSize: number; + /** Size of the storybook-static/sb-common-assets */ + buildSbCommonSize: number; + /** Size of the storybook-static/sb-manager */ + buildSbManagerSize: number; + /** Size of storybook-static/sb-preview */ + buildSbPreviewSize: number; + /** Size of the `static` directory if it exists */ + buildStaticSize: number; + /** Total size of `sb-x` above */ + buildPrebuildSize: number; + /** Total size of everything else (user's stories & components & CSS & assets etc.) */ + buildPreviewSize: number; + /** Time to wait-on iframe.html */ + devPreviewResponsive: number; + /** Time to wait-on index.html */ + devManagerResponsive: number; + /** Time to browse to index.html and view the SB logo */ + devManagerHeaderVisible: number; + /** Time to browse to index.html and load the story index */ + devManagerIndexVisible: number; + /** Time to browse to index.html and load iframe content and the story is rendered, for the very first run */ + devStoryVisibleUncached: number; + /** Time to browse to index.html and load iframe content and the story is rendered */ + devStoryVisible: number; + /** Time to browse to index.html and load iframe content and the docs page is rendered */ + devAutodocsVisible: number; + /** Time to browse to index.html and load iframe content and the MDX page is rendered */ + devMDXVisible: number; + /** Time to browse to index.html and view the SB logo */ + buildManagerHeaderVisible: number; + /** Time to browse to index.html and load the story index */ + buildManagerIndexVisible: number; + /** Time to browse to index.html and load iframe content and the story is rendered */ + buildStoryVisible: number; + /** Time to browse to index.html and load iframe content and the docs page is rendered */ + buildAutodocsVisible: number; + /** Time to browse to index.html and load iframe content and the MDX page is rendered */ + buildMDXVisible: number; +} diff --git a/scripts/bench/utils.ts b/scripts/bench/utils.ts new file mode 100644 index 000000000000..c2dd21aeb18b --- /dev/null +++ b/scripts/bench/utils.ts @@ -0,0 +1,32 @@ +import { join } from 'path'; +import { ensureDir, writeJSON, readJSON, readdir } from 'fs-extra'; +import type { BenchResults } from './types'; + +export const now = () => new Date().getTime(); + +export interface SaveBenchOptions { + rootDir?: string; +} + +export const saveBench = async ( + key: string, + data: Partial<BenchResults>, + options: SaveBenchOptions +) => { + const dirName = join(options.rootDir || process.cwd(), 'bench'); + const fileName = `${key}.json`; + const existing = await ensureDir(dirName).then(() => { + return readJSON(join(dirName, fileName)).catch(() => ({})); + }); + await writeJSON(join(dirName, fileName), { ...existing, ...data }, { spaces: 2 }); +}; + +export const loadBench = async (options: SaveBenchOptions): Promise<Partial<BenchResults>> => { + const dirName = join(options.rootDir || process.cwd(), 'bench'); + const files = await readdir(dirName); + return files.reduce(async (acc, fileName) => { + const data = await readJSON(join(dirName, fileName)); + return { ...(await acc), ...data }; + }, Promise.resolve({})); + // return readJSON(join(dirname, `bench.json`)); +}; diff --git a/scripts/build-package.js b/scripts/build-package.js index 93c480891a59..584d765a21e1 100644 --- a/scripts/build-package.js +++ b/scripts/build-package.js @@ -132,6 +132,7 @@ async function run() { cwd, buffer: false, shell: true, + cleanup: true, env: { NODE_ENV: 'production', }, diff --git a/scripts/check-dependencies.js b/scripts/check-dependencies.js index 0346dbf48f64..c8bd9114faf9 100755 --- a/scripts/check-dependencies.js +++ b/scripts/check-dependencies.js @@ -1,63 +1,5 @@ #!/usr/bin/env node - -const { spawn } = require('child_process'); -const { join } = require('path'); -const { existsSync } = require('fs'); - -const checkDependencies = async () => { - const scriptsPath = join(__dirname); - const codePath = join(__dirname, '..', 'code'); - - const tasks = []; - - if (!existsSync(join(scriptsPath, 'node_modules'))) { - tasks.push( - spawn('yarn', ['install'], { - cwd: scriptsPath, - stdio: ['inherit', 'inherit', 'inherit'], - }) - ); - } - if (!existsSync(join(codePath, 'node_modules'))) { - tasks.push( - spawn('yarn', ['install'], { - cwd: codePath, - stdio: ['inherit', 'inherit', 'inherit'], - }) - ); - } - - if (tasks.length > 0) { - console.log('installing dependencies'); - - await Promise.all( - tasks.map( - (t) => - new Promise((res, rej) => { - t.on('exit', (code) => { - if (code !== 0) { - rej(); - } else { - res(); - } - }); - }) - ) - ).catch(() => { - tasks.forEach((t) => t.kill()); - throw new Error('Failed to install dependencies'); - }); - - // give the filesystem some time - await new Promise((res, rej) => { - setTimeout(res, 1000); - }); - } -}; - -module.exports = { - checkDependencies, -}; +const { checkDependencies } = require('./utils/cli-utils'); checkDependencies().catch((e) => { console.error(e); diff --git a/scripts/check-package.js b/scripts/check-package.js index bf2d95a8fbd7..7fc8bc88f198 100644 --- a/scripts/check-package.js +++ b/scripts/check-package.js @@ -103,6 +103,7 @@ async function run() { cwd, buffer: false, shell: true, + cleanup: true, env: { NODE_ENV: 'production', }, diff --git a/scripts/dangerfile.ts b/scripts/dangerfile.ts index 8d04e2c28472..754686981c80 100644 --- a/scripts/dangerfile.ts +++ b/scripts/dangerfile.ts @@ -17,6 +17,8 @@ const Versions = { MAJOR: 'MAJOR', }; +const ciLabels = ['ci:normal', 'ci:merged', 'ci:daily', 'ci:docs']; + const branchVersion = Versions.MINOR; const checkRequiredLabels = (labels: string[]) => { @@ -41,15 +43,39 @@ const checkRequiredLabels = (labels: string[]) => { ); } - const foundLabels = intersection(requiredLabels, labels); - if (isEmpty(foundLabels)) { + const foundRequiredLabels = intersection(requiredLabels, labels); + if (isEmpty(foundRequiredLabels)) { fail(`PR is not labeled with one of: ${JSON.stringify(requiredLabels)}`); - } else if (foundLabels.length > 1) { - fail(`Please choose only one of these labels: ${JSON.stringify(foundLabels)}`); + } else if (foundRequiredLabels.length > 1) { + fail(`Please choose only one of these labels: ${JSON.stringify(foundRequiredLabels)}`); + } + + const foundCILabels = intersection(ciLabels, labels); + if (isEmpty(foundCILabels)) { + fail(`PR is not labeled with one of: ${JSON.stringify(ciLabels)}`); + } else if (foundCILabels.length > 1) { + fail(`Please choose only one of these labels: ${JSON.stringify(foundCILabels)}`); + } +}; + +const checkPrTitle = (title: string) => { + const match = title.match(/^[A-Z].+:\s[A-Z].+$/); + if (!match) { + fail( + `PR title must be in the format of "Area: Summary", With both Area and Summary starting with a capital letter +Good examples: +- "Docs: Describe Canvas Doc Block" +- "Svelte: Support Svelte v4" +Bad examples: +- "add new api docs" +- "fix: Svelte 4 support" +- "Vue: improve docs"` + ); } }; if (prLogConfig) { const { labels } = danger.github.issue; checkRequiredLabels(labels.map((l) => l.name)); + checkPrTitle(danger.github.pr.title); } diff --git a/scripts/eslint-plugin-local-rules/README.md b/scripts/eslint-plugin-local-rules/README.md new file mode 100644 index 000000000000..86ca125d559d --- /dev/null +++ b/scripts/eslint-plugin-local-rules/README.md @@ -0,0 +1,12 @@ +## ESLint plugin local rules + +This package serves as a local ESLint plugin to be used in the monorepo and help maintainers keep certain code standards. + +### Development + +If you're fixing a rule or creating a new one, make sure to: + +1. Make your code changes +2. Rerun yarn install in the `code` directory. It's necessary to update the module reference +3. Update the necessary `.eslintrc.js` files (if you are adding a new rule) +4. Restart the ESLint server in your IDE diff --git a/scripts/eslint-plugin-local-rules/index.js b/scripts/eslint-plugin-local-rules/index.js new file mode 100644 index 000000000000..3e3e116b7527 --- /dev/null +++ b/scripts/eslint-plugin-local-rules/index.js @@ -0,0 +1,7 @@ +/* eslint-disable global-require */ +module.exports = { + rules: { + 'no-uncategorized-errors': require('./no-uncategorized-errors'), + 'no-duplicated-error-codes': require('./no-duplicated-error-codes'), + }, +}; diff --git a/scripts/eslint-plugin-local-rules/no-duplicated-error-codes.js b/scripts/eslint-plugin-local-rules/no-duplicated-error-codes.js new file mode 100644 index 000000000000..53968edb572c --- /dev/null +++ b/scripts/eslint-plugin-local-rules/no-duplicated-error-codes.js @@ -0,0 +1,49 @@ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Ensure unique error codes per category in the same file', + category: 'Best Practices', + recommended: true, + }, + fixable: null, + }, + create(context) { + const errorClasses = {}; + + return { + ClassDeclaration(node) { + if (node.superClass.name === 'StorybookError') { + const categoryProperty = node.body.body.find((prop) => { + return prop.type === 'PropertyDefinition' && prop.key.name === 'category'; + }); + + const codeProperty = node.body.body.find((prop) => { + return prop.type === 'PropertyDefinition' && prop.key.name === 'code'; + }); + + if (categoryProperty && categoryProperty.value.type === 'MemberExpression') { + const categoryName = categoryProperty.value.property.name; + + if (codeProperty && codeProperty.value.type === 'Literal') { + const errorCode = codeProperty.value.value; + + if (!errorClasses[categoryName]) { + errorClasses[categoryName] = new Set(); + } + + if (errorClasses[categoryName].has(errorCode)) { + context.report({ + node: codeProperty, + message: `Duplicate error code '${errorCode}' in category '${categoryName}'.`, + }); + } else { + errorClasses[categoryName].add(errorCode); + } + } + } + } + }, + }; + }, +}; diff --git a/scripts/eslint-plugin-local-rules/no-uncategorized-errors.js b/scripts/eslint-plugin-local-rules/no-uncategorized-errors.js new file mode 100644 index 000000000000..ce91cccf1040 --- /dev/null +++ b/scripts/eslint-plugin-local-rules/no-uncategorized-errors.js @@ -0,0 +1,24 @@ +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Disallow usage of the Error JavaScript class.', + category: 'Best Practices', + recommended: true, + url: 'https://github.com/storybookjs/storybook/blob/next/code/lib/core-events/src/errors/README.md', + }, + }, + create(context) { + return { + NewExpression(node) { + if (node.callee.name === 'Error') { + context.report({ + node, + message: + 'Avoid using a generic Error class. Use a categorized StorybookError class instead. See the docs 👉', + }); + } + }, + }; + }, +}; diff --git a/scripts/eslint-plugin-local-rules/package.json b/scripts/eslint-plugin-local-rules/package.json new file mode 100644 index 000000000000..d61a7e099db9 --- /dev/null +++ b/scripts/eslint-plugin-local-rules/package.json @@ -0,0 +1,8 @@ +{ + "name": "eslint-plugin-local-rules", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "main": "index.js" +} diff --git a/scripts/event-log-checker.ts b/scripts/event-log-checker.ts index bc2056998664..e1f6d82bd533 100644 --- a/scripts/event-log-checker.ts +++ b/scripts/event-log-checker.ts @@ -70,10 +70,11 @@ async function run() { 8, `Expected 8 stories but received ${exampleStoryCount} instead.` ); + const expectedDocsCount = template.modifications?.disableDocs ? 0 : 3; assert.equal( exampleDocsCount, - 3, - `Expected 3 docs entries but received ${exampleDocsCount} instead.` + expectedDocsCount, + `Expected ${expectedDocsCount} docs entries but received ${exampleDocsCount} instead.` ); }); } diff --git a/scripts/event-log-collector.ts b/scripts/event-log-collector.ts index 160120428553..f3ad10700887 100644 --- a/scripts/event-log-collector.ts +++ b/scripts/event-log-collector.ts @@ -12,7 +12,7 @@ server.post('/event-log', (req, res) => { res.end('OK'); }); -server.get('/event-log', (req, res) => { +server.get('/event-log', (_req, res) => { console.log(`Sending ${events.length} events`); res.json(events); }); diff --git a/scripts/get-template.ts b/scripts/get-template.ts index 57f832fe6eca..c56418f7a0b4 100644 --- a/scripts/get-template.ts +++ b/scripts/get-template.ts @@ -1,5 +1,9 @@ import { readdir } from 'fs/promises'; -import { pathExists } from 'fs-extra'; +import { pathExists, readFile } from 'fs-extra'; +import { program } from 'commander'; +import dedent from 'ts-dedent'; +import chalk from 'chalk'; +import yaml from 'yaml'; import { allTemplates, templatesByCadence, @@ -54,27 +58,121 @@ export async function getTemplate( }); if (potentialTemplateKeys.length !== total) { - throw new Error(`Circle parallelism set incorrectly. + throw new Error(dedent`Circle parallelism set incorrectly. Parallelism is set to ${total}, but there are ${ potentialTemplateKeys.length - } templates to run: - ${potentialTemplateKeys.join(', ')} + } templates to run for the "${scriptName}" task: + ${potentialTemplateKeys.map((v) => `- ${v}`).join('\n')} + + ${await checkParallelism(cadence)} `); } return potentialTemplateKeys[index]; } -async function run() { - const [, , cadence, scriptName] = process.argv; +const tasksMap = { + sandbox: 'create-sandboxes', + build: 'build-sandboxes', + chromatic: 'chromatic-sandboxes', + 'e2e-tests': 'e2e-production', + 'e2e-tests-dev': 'e2e-dev', + 'test-runner': 'test-runner-production', + // 'test-runner-dev', TODO: bring this back when the task is enabled again + bench: 'bench', +} as const; + +type TaskKey = keyof typeof tasksMap; + +const tasks = Object.keys(tasksMap) as TaskKey[]; + +const CONFIG_YML_FILE = '../.circleci/config.yml'; + +async function checkParallelism(cadence?: Cadence, scriptName?: TaskKey) { + const configYml = await readFile(CONFIG_YML_FILE, 'utf-8'); + const data = yaml.parse(configYml); + + let potentialTemplateKeys: TemplateKey[] = []; + const cadences = cadence ? [cadence] : (Object.keys(templatesByCadence) as Cadence[]); + const scripts = scriptName ? [scriptName] : tasks; + const summary = []; + let isIncorrect = false; + + cadences.forEach((cad) => { + summary.push(`\n${cad}`); + const cadenceTemplates = Object.entries(allTemplates).filter(([key]) => + templatesByCadence[cad].includes(key as TemplateKey) + ); + potentialTemplateKeys = cadenceTemplates.map(([k]) => k) as TemplateKey[]; + + scripts.forEach((script) => { + const templateKeysPerScript = potentialTemplateKeys.filter((t) => { + const currentTemplate = allTemplates[t] as Template; + return ( + currentTemplate.inDevelopment !== true && + !currentTemplate.skipTasks?.includes(script as SkippableTask) + ); + }); + const workflowJobsRaw: (string | { [key: string]: any })[] = data.workflows[cad].jobs; + const workflowJobs = workflowJobsRaw + .filter((item) => typeof item === 'object' && item !== null) + .reduce((result, item) => Object.assign(result, item), {}) as Record<string, any>; + + if (templateKeysPerScript.length > 0 && workflowJobs[tasksMap[script]]) { + const currentParallelism = workflowJobs[tasksMap[script]].parallelism || 2; + const newParallelism = templateKeysPerScript.length; + + if (newParallelism !== currentParallelism) { + summary.push( + `-- ❌ ${tasksMap[script]} - parallelism: ${currentParallelism} ${chalk.bgRed( + `(should be ${newParallelism})` + )}` + ); + isIncorrect = true; + } else { + summary.push( + `-- ✅ ${tasksMap[script]} - parallelism: ${templateKeysPerScript.length}${ + templateKeysPerScript.length === 2 ? ' (default)' : '' + }` + ); + } + } else { + summary.push(`-- ${script} - this script is fully skipped for this cadence.`); + } + }); + }); + + if (isIncorrect) { + summary.unshift( + 'The parellism count is incorrect for some jobs in .circleci/config.yml, you have to update them:' + ); + throw new Error(summary.concat('\n').join('\n')); + } else { + summary.unshift('✅ The parallelism count is correct for all jobs in .circleci/config.yml:'); + console.log(summary.concat('\n').join('\n')); + } +} + +type RunOptions = { cadence?: Cadence; task?: TaskKey; check: boolean }; +async function run({ cadence, task, check }: RunOptions) { + if (check) { + if (task && !tasks.includes(task)) { + throw new Error( + dedent`The "${task}" task you provided is not valid. Valid tasks (found in .circleci/config.yml) are: + ${tasks.map((v) => `- ${v}`).join('\n')}` + ); + } + await checkParallelism(cadence as Cadence, task); + return; + } if (!cadence) throw new Error('Need to supply cadence to get template script'); const { CIRCLE_NODE_INDEX = 0, CIRCLE_NODE_TOTAL = 1 } = process.env; console.log( - await getTemplate(cadence as Cadence, scriptName, { + await getTemplate(cadence as Cadence, task, { index: +CIRCLE_NODE_INDEX, total: +CIRCLE_NODE_TOTAL, }) @@ -82,7 +180,21 @@ async function run() { } if (require.main === module) { - run().catch((err) => { + program + .description('Retrieve the template to run for a given cadence and task') + .option('--cadence <cadence>', 'Which cadence you want to run the script for') + .option('--task <task>', 'Which task you want to run the script for') + .option( + '--check', + 'Throws an error when the parallelism counts for tasks are incorrect', + false + ); + + program.parse(process.argv); + + const options = program.opts() as RunOptions; + + run(options).catch((err) => { console.error(err); process.exit(1); }); diff --git a/scripts/package.json b/scripts/package.json index 1f0ffa865fa3..eff165cd7f76 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -3,6 +3,7 @@ "version": "7.0.0-alpha.16", "private": true, "scripts": { + "check": "./prepare/check-scripts.ts", "docs:prettier:check": "cd ../docs && prettier --check ./snippets", "docs:prettier:write": "cd ../docs && prettier --write ./snippets", "get-report-message": "ts-node --swc ./get-report-message.ts", @@ -12,10 +13,24 @@ "lint:js:cmd": "cross-env NODE_ENV=production eslint --cache --cache-location=../.cache/eslint --ext .js,.jsx,.json,.html,.ts,.tsx,.mjs --report-unused-disable-directives", "lint:package": "sort-package-json", "migrate-docs": "node --require esbuild-register ./ts-to-ts49.ts", + "release:generate-pr-description": "ts-node --swc ./release/generate-pr-description.ts", + "release:get-changelog-from-file": "ts-node --swc ./release/get-changelog-from-file.ts", + "release:get-current-version": "ts-node --swc ./release/get-current-version.ts", + "release:get-version-changelog": "ts-node --swc ./release/get-version-changelog.ts", + "release:is-pr-frozen": "ts-node --swc ./release/is-pr-frozen.ts", + "release:is-prerelease": "ts-node --swc ./release/is-prerelease.ts", + "release:is-version-published": "ts-node --swc ./release/is-version-published.ts", + "release:label-patches": "ts-node --swc ./release/label-patches.ts", + "release:pick-patches": "ts-node --swc ./release/pick-patches.ts", + "release:publish": "ts-node --swc ./release/publish.ts", + "release:unreleased-changes-exists": "ts-node --swc ./release/unreleased-changes-exists.ts", + "release:version": "ts-node --swc ./release/version.ts", + "release:write-changelog": "ts-node --swc ./release/write-changelog.ts", + "strict-ts": "node --require esbuild-register ./strict-ts.ts", "task": "ts-node --swc ./task.ts", "test": "jest --config ./jest.config.js", "upgrade": "ts-node --swc ./task.ts", - "strict-ts": "node --require esbuild-register ./strict-ts.ts" + "upload-bench": "ts-node ./upload-bench.ts" }, "husky": { "hooks": { @@ -34,54 +49,60 @@ "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/experimental-utils": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", - "esbuild": "^0.16.4", + "esbuild": "^0.18.0", "eslint": "^8.28.0", - "serialize-javascript": "^3.1.0" + "serialize-javascript": "^3.1.0", + "type-fest": "~2.19" }, "dependencies": { - "@babel/core": "^7.20.2", + "@actions/core": "^1.10.0", + "@babel/core": "^7.22.0", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.20.7", + "@babel/plugin-proposal-decorators": "^7.22.0", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-decorators": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/plugin-syntax-typescript": "^7.20.0", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@babel/types": "^7.20.7", + "@babel/plugin-syntax-decorators": "^7.22.0", + "@babel/plugin-syntax-jsx": "^7.21.0", + "@babel/plugin-syntax-typescript": "^7.21.0", + "@babel/preset-env": "^7.22.0", + "@babel/preset-react": "^7.22.0", + "@babel/preset-typescript": "^7.21.0", + "@babel/types": "^7.22.0", "@emotion/jest": "^11.10.5", + "@google-cloud/bigquery": "^6.2.0", "@jest/globals": "^29.3.1", - "@linear/sdk": "^1.22.0", - "@nrwl/cli": "^15.4.5", - "@nrwl/nx-cloud": "^15.0.2", - "@nrwl/workspace": "^15.4.5", + "@nx/workspace": "16.2.1", + "@octokit/graphql": "^5.0.5", "@storybook/eslint-config-storybook": "^3.1.2", - "@storybook/jest": "future", + "@storybook/jest": "next", "@storybook/linter-config": "^3.1.2", - "@storybook/testing-library": "future", + "@storybook/testing-library": "next", "@swc/core": "^1.3.23", - "@testing-library/dom": "^7.29.4", + "@testing-library/dom": "^9.3.0", "@testing-library/jest-dom": "^5.11.9", - "@testing-library/react": "^11.2.2", - "@testing-library/user-event": "^13.2.1", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.4.3", + "@types/cross-spawn": "^6.0.2", "@types/detect-port": "^1.3.2", "@types/ejs": "^3.1.1", "@types/escodegen": "^0.0.6", "@types/express": "^4.17.11", - "@types/fs-extra": "^9.0.6", + "@types/fs-extra": "^11.0.1", + "@types/http-server": "^0.12.1", "@types/lodash": "^4", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", "@types/prompts": "2.0.11", "@types/react": "^16.14.34", "@types/react-dom": "^16.9.17", "@types/semver": "^7.3.4", "@types/serve-static": "^1.13.8", - "@types/shelljs": "^0.8.7", + "@types/uuid": "^9.0.1", + "@types/wait-on": "^5.3.1", "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/experimental-utils": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", + "ansi-regex": "^5.0.0", "babel-eslint": "^10.1.0", "babel-loader": "^9.1.2", "boxen": "^5.1.2", @@ -90,11 +111,12 @@ "commander": "^6.2.1", "cross-env": "^7.0.3", "cross-spawn": "^7.0.3", - "danger": "^10.6.2", + "danger": "^11.2.6", + "dataloader": "^2.2.2", "detect-port": "^1.3.0", "ejs": "^3.1.8", "ejs-lint": "^2.0.0", - "esbuild": "^0.16.4", + "esbuild": "^0.18.0", "esbuild-plugin-alias": "^0.2.1", "esbuild-register": "^3.4.1", "eslint": "^8.28.0", @@ -103,57 +125,70 @@ "eslint-plugin-storybook": "^0.6.6", "execa": "^6.1.0", "express": "^4.17.3", + "fast-folder-size": "^2.1.0", "fast-glob": "^3.2.12", "find-up": "^5.0.0", - "fs-extra": "^10.1.0", + "fs-extra": "^11.1.0", "github-release-from-changelog": "^2.1.1", "glob": "^10.0.0", - "http-server": "^0.12.3", + "http-server": "^14.1.1", "husky": "^4.3.7", "jest": "^29.3.1", "jest-environment-jsdom": "^29.3.1", "jest-image-snapshot": "^6.0.0", "jest-junit": "^14.0.1", + "jest-mock-extended": "^3.0.4", "jest-os-detection": "^1.3.1", "jest-serializer-html": "^7.1.0", "jest-watch-typeahead": "^2.2.1", + "json5": "^2.2.3", "junit-xml": "^1.2.0", "lint-staged": "^10.5.4", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "node-fetch": "^2.6.1", - "node-gyp": "^8.4.0", + "node-gyp": "^9.3.1", "npmlog": "^5.0.1", - "nx": "^15.4.5", + "nx": "16.2.1", + "nx-cloud": "16.0.5", + "ora": "^5.4.1", "p-limit": "^3.1.0", + "p-retry": "^5.1.2", + "playwright": "1.36.0", + "playwright-core": "1.36.0", "prettier": "^2.8.0", + "pretty-bytes": "^6.1.0", "pretty-hrtime": "^1.0.0", + "pretty-ms": "^8.0.0", "process": "^0.11.10", "prompts": "^2.4.0", "react": "16.14.0", "react-dom": "16.14.0", "read-pkg-up": "^7.0.1", "recast": "^0.23.1", - "remark": "^13.0.0", - "remark-cli": "^9.0.0", - "remark-lint": "^8.0.0", - "remark-preset-lint-recommended": "^5.0.0", + "remark": "^14.0.3", + "remark-cli": "^11.0.0", + "remark-lint": "^9.1.2", + "remark-preset-lint-recommended": "^6.1.3", "semver": "^7.3.7", "serve-static": "^1.14.1", - "shelljs": "^0.8.5", + "simple-git": "^3.18.0", "slash": "^3.0.0", - "sort-package-json": "^1.48.1", + "sort-package-json": "^2.0.0", "tempy": "^1.0.0", + "tiny-invariant": "^1.3.1", "trash": "^7.0.0", "ts-dedent": "^2.0.0", "ts-node": "^10.9.1", "tsup": "^6.7.0", - "type-fest": "^3.4.0", - "typescript": "~4.9.3", + "type-fest": "~2.19", + "typescript": "5.0.4", "util": "^0.12.4", - "wait-on": "^5.2.1", + "uuid": "^9.0.0", + "wait-on": "^7.0.1", "window-size": "^1.1.1", - "zx": "^7.0.3" + "yaml": "^2.3.1", + "zod": "^3.21.4" }, "optionalDependencies": { "@verdaccio/types": "^10.2.0", diff --git a/scripts/prepare/bundle.ts b/scripts/prepare/bundle.ts index 401cb756862a..a15f71cd6a34 100755 --- a/scripts/prepare/bundle.ts +++ b/scripts/prepare/bundle.ts @@ -88,8 +88,9 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { shims: false, watch, outDir, + sourcemap: false, format: ['esm'], - target: 'chrome100', + target: ['chrome100', 'safari15', 'firefox91'], clean: false, ...(dtsBuild === 'esm' ? dtsConfig : {}), platform: platform || 'browser', @@ -119,6 +120,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { entry: allEntries, watch, outDir, + sourcemap: false, format: ['cjs'], target: 'node16', ...(dtsBuild === 'cjs' ? dtsConfig : {}), diff --git a/scripts/prepare/check-scripts.ts b/scripts/prepare/check-scripts.ts new file mode 100755 index 000000000000..86418acd93ba --- /dev/null +++ b/scripts/prepare/check-scripts.ts @@ -0,0 +1,75 @@ +#!/usr/bin/env ./node_modules/.bin/ts-node-script + +import { join } from 'path'; +import * as ts from 'typescript'; + +const run = async ({ cwd }: { cwd: string }) => { + const { options, fileNames } = getTSFilesAndConfig('tsconfig.json'); + const { program, host } = getTSProgramAndHost(fileNames, options); + + const tsDiagnostics = getTSDiagnostics(program, cwd, host); + if (tsDiagnostics.length > 0) { + console.log(tsDiagnostics); + process.exit(1); + } else { + console.log('no type errors'); + } + + // TODO, add more package checks here, like: + // - check for missing dependencies/peerDependencies + // - check for unused exports + + console.log('done'); +}; + +run({ cwd: process.cwd() }).catch((err: unknown) => { + // We can't let the stack try to print, it crashes in a way that sets the exit code to 0. + // Seems to have something to do with running JSON.parse() on binary / base64 encoded sourcemaps + // in @cspotcode/source-map-support + if (err instanceof Error) { + console.error(err.message); + } + process.exit(1); +}); + +function getTSDiagnostics(program: ts.Program, cwd: string, host: ts.CompilerHost): any { + return ts.formatDiagnosticsWithColorAndContext( + ts.getPreEmitDiagnostics(program).filter((d) => d.file.fileName.startsWith(cwd)), + host + ); +} + +function getTSProgramAndHost(fileNames: string[], options: ts.CompilerOptions) { + const program = ts.createProgram({ + rootNames: fileNames, + options: { + module: ts.ModuleKind.CommonJS, + ...options, + declaration: false, + noEmit: true, + }, + }); + + const host = ts.createCompilerHost(program.getCompilerOptions()); + return { program, host }; +} + +function getTSFilesAndConfig(tsconfigPath: string) { + const content = ts.readJsonConfigFile(tsconfigPath, ts.sys.readFile); + return ts.parseJsonSourceFileConfigFileContent( + content, + { + useCaseSensitiveFileNames: true, + readDirectory: ts.sys.readDirectory, + fileExists: ts.sys.fileExists, + readFile: ts.sys.readFile, + }, + process.cwd(), + { + noEmit: true, + outDir: join(process.cwd(), 'types'), + target: ts.ScriptTarget.ES2022, + declaration: false, + } + ); +} diff --git a/scripts/prepare/check.ts b/scripts/prepare/check.ts new file mode 100755 index 000000000000..d200e921ea0b --- /dev/null +++ b/scripts/prepare/check.ts @@ -0,0 +1,80 @@ +#!/usr/bin/env ../../node_modules/.bin/ts-node-script + +import { join } from 'path'; +import fs from 'fs-extra'; +import * as ts from 'typescript'; + +const run = async ({ cwd }: { cwd: string }) => { + const { + bundler: { tsConfig: tsconfigPath = 'tsconfig.json' }, + } = await fs.readJson(join(cwd, 'package.json')); + + const { options, fileNames } = getTSFilesAndConfig(tsconfigPath); + const { program, host } = getTSProgramAndHost(fileNames, options); + + const tsDiagnostics = getTSDiagnostics(program, cwd, host); + if (tsDiagnostics.length > 0) { + console.log(tsDiagnostics); + process.exit(1); + } else { + console.log('no type errors'); + } + + // TODO, add more package checks here, like: + // - check for missing dependencies/peerDependencies + // - check for unused exports + + console.log('done'); +}; + +run({ cwd: process.cwd() }).catch((err: unknown) => { + // We can't let the stack try to print, it crashes in a way that sets the exit code to 0. + // Seems to have something to do with running JSON.parse() on binary / base64 encoded sourcemaps + // in @cspotcode/source-map-support + if (err instanceof Error) { + console.error(err.message); + } + process.exit(1); +}); + +function getTSDiagnostics(program: ts.Program, cwd: string, host: ts.CompilerHost): any { + return ts.formatDiagnosticsWithColorAndContext( + ts.getPreEmitDiagnostics(program).filter((d) => d.file.fileName.startsWith(cwd)), + host + ); +} + +function getTSProgramAndHost(fileNames: string[], options: ts.CompilerOptions) { + const program = ts.createProgram({ + rootNames: fileNames, + options: { + module: ts.ModuleKind.CommonJS, + ...options, + declaration: false, + noEmit: true, + }, + }); + + const host = ts.createCompilerHost(program.getCompilerOptions()); + return { program, host }; +} + +function getTSFilesAndConfig(tsconfigPath: string) { + const content = ts.readJsonConfigFile(tsconfigPath, ts.sys.readFile); + return ts.parseJsonSourceFileConfigFileContent( + content, + { + useCaseSensitiveFileNames: true, + readDirectory: ts.sys.readDirectory, + fileExists: ts.sys.fileExists, + readFile: ts.sys.readFile, + }, + process.cwd(), + { + noEmit: true, + outDir: join(process.cwd(), 'types'), + target: ts.ScriptTarget.ES2022, + declaration: false, + } + ); +} diff --git a/scripts/prepare/esm-bundle.ts b/scripts/prepare/esm-bundle.ts index 0f6afc4f1ce0..e75ddc75b679 100755 --- a/scripts/prepare/esm-bundle.ts +++ b/scripts/prepare/esm-bundle.ts @@ -13,7 +13,8 @@ import { exec } from '../utils/exec'; /* TYPES */ type BundlerConfig = { - entries: string[]; + browserEntries: string[]; + nodeEntries: string[]; externals: string[]; pre: string; post: string; @@ -74,11 +75,12 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { entry: allEntries, watch, outDir, + sourcemap: false, format: ['esm'], outExtension: () => ({ js: '.js', }), - target: 'chrome100', + target: ['chrome100', 'safari15', 'firefox91'], clean: false, ...(dtsBuild ? dtsConfig : {}), platform: 'browser', @@ -115,6 +117,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { entry: allEntries, watch, outDir, + sourcemap: false, format: ['cjs'], outExtension: () => ({ js: '.js', diff --git a/scripts/prepare/tsc.ts b/scripts/prepare/tsc.ts index 242781a3584d..cc248979ef70 100755 --- a/scripts/prepare/tsc.ts +++ b/scripts/prepare/tsc.ts @@ -41,6 +41,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { outDir: join(process.cwd(), 'dist'), target: ts.ScriptTarget.ES2020, declaration: true, + sourceMap: false, } ); diff --git a/scripts/release/__tests__/generate-pr-description.test.ts b/scripts/release/__tests__/generate-pr-description.test.ts new file mode 100644 index 000000000000..b0f1bbe89db5 --- /dev/null +++ b/scripts/release/__tests__/generate-pr-description.test.ts @@ -0,0 +1,408 @@ +import { + generateReleaseDescription, + generateNonReleaseDescription, + mapToChangelist, + mapCherryPicksToTodo, +} from '../generate-pr-description'; +import type { Change } from '../utils/get-changes'; + +describe('Generate PR Description', () => { + const changes: Change[] = [ + { + user: 'JReinhold', + id: 'pr-id-42', + title: 'Some PR title for a bug', + labels: ['bug', 'build', 'other label', 'patch:yes'], + commit: 'abc123', + pull: 42, + links: { + commit: '[abc123](https://github.com/storybookjs/storybook/commit/abc123)', + pull: '[#42](https://github.com/storybookjs/storybook/pull/42)', + user: '[@JReinhold](https://github.com/JReinhold)', + }, + }, + { + // this Bump version commit should be ignored + id: null, + user: 'storybook-bot', + pull: null, + commit: '012b58140c3606efeacbe99c0c410624b0a1ed1f', + title: 'Bump version on `next`: preminor (alpha) from 7.2.0 to 7.3.0-alpha.0', + labels: null, + links: { + commit: + '[`012b58140c3606efeacbe99c0c410624b0a1ed1f`](https://github.com/storybookjs/storybook/commit/012b58140c3606efeacbe99c0c410624b0a1ed1f)', + pull: null, + user: '[@storybook-bot](https://github.com/storybook-bot)', + }, + }, + { + id: null, + user: 'shilman', + title: 'Some title for a "direct commit"', + labels: null, + commit: '22bb11', + pull: null, + links: { + commit: '[22bb11](https://github.com/storybookjs/storybook/commit/22bb11)', + pull: null, + user: '[@shilman](https://github.com/shilman)', + }, + }, + { + id: 'pr-id-11', + user: 'shilman', + title: 'Another PR `title` for docs', + labels: ['another label', 'documentation', 'patch:yes'], + commit: 'ddd222', + pull: 11, + links: { + commit: '[ddd222](https://github.com/storybookjs/storybook/commit/ddd222)', + pull: '[#11](https://github.com/storybookjs/storybook/pull/11)', + user: '[@shilman](https://github.com/shilman)', + }, + }, + { + id: 'pr-id-48', + user: 'JReinhold', + title: "Some PR title for a 'new' feature", + labels: ['feature request', 'other label'], + commit: 'wow1337', + pull: 48, + links: { + commit: '[wow1337](https://github.com/storybookjs/storybook/commit/wow1337)', + pull: '[#48](https://github.com/storybookjs/storybook/pull/48)', + user: '[@JReinhold](https://github.com/JReinhold)', + }, + }, + { + id: 'pr-id-77', + user: 'JReinhold', + title: 'Some PR title with a missing label', + labels: ['incorrect label', 'other label'], + commit: 'bad999', + pull: 77, + links: { + commit: '[bad999](https://github.com/storybookjs/storybook/commit/bad999)', + pull: '[#77](https://github.com/storybookjs/storybook/pull/77)', + user: '[@JReinhold](https://github.com/JReinhold)', + }, + }, + ]; + describe('mapToChangelist', () => { + it('should return a correct string for patch PRs', () => { + expect(mapToChangelist({ changes, unpickedPatches: true })).toMatchInlineSnapshot(` + "- [ ] **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) + - [ ] **✨ Feature Request**: Some PR title for a 'new' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] **⚠️ Direct commit**: Some title for a "direct commit" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] **📝 Documentation**: Another PR \`title\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) + - [ ] **❔ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77)" + `); + }); + it('should return a correct string for prerelease PRs', () => { + expect(mapToChangelist({ changes, unpickedPatches: false })).toMatchInlineSnapshot(` + "- [ ] **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) (will also be patched) + - [ ] **✨ Feature Request**: Some PR title for a 'new' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] **⚠️ Direct commit**: Some title for a "direct commit" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] **📝 Documentation**: Another PR \`title\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) (will also be patched) + - [ ] **❔ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77)" + `); + }); + }); + + describe('mapCherryPicksToTodo', () => { + it('should return a correct string for releases', () => { + expect(mapCherryPicksToTodo({ changes, commits: ['abc123'] })).toMatchInlineSnapshot(` + "## 🍒 Manual cherry picking needed! + + The following pull requests could not be cherry-picked automatically because it resulted in merge conflicts. + For each pull request below, you need to either manually cherry pick it, or discard it by replacing the "patch:yes" label with "patch:no" on the PR and re-generate this PR. + + - [ ] [#42](https://github.com/storybookjs/storybook/pull/42): \`git cherry-pick -m1 -x abc123\`" + `); + }); + }); + + describe('description generator', () => { + const changeList = `- **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) +\t- [ ] The change is appropriate for the version bump +\t- [ ] The PR is labeled correctly +\t- [ ] The PR title is correct +- **⚠️ Direct commit**: Some title for a \\"direct commit\\" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) +\t- [ ] The change is appropriate for the version bump +- **📝 Documentation**: Another PR \\\`title\\\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) +\t- [ ] The change is appropriate for the version bump +\t- [ ] The PR is labeled correctly +\t- [ ] The PR title is correct +- **✨ Feature Request**: Some PR title for a \\'new\\' feature [#48](https://github.com/storybookjs/storybook/pull/48) +\t- [ ] The change is appropriate for the version bump +\t- [ ] The PR is labeled correctly +\t- [ ] The PR title is correct +- **⚠️ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77) +\t- [ ] The change is appropriate for the version bump +\t- [ ] The PR is labeled correctly +\t- [ ] The PR title is correct`; + + const manualCherryPicks = `## 🍒 Manual cherry picking needed! + +The following pull requests could not be cherry-picked automatically because it resulted in merge conflicts. +For each pull request below, you need to either manually cherry pick it, or discard it by removing the "patch" label from the PR and re-generate this PR. + +- [ ] [#42](https://github.com/storybookjs/storybook/pull/42): \`git cherry-pick -m1 -x abc123\``; + + it('should return a correct string with cherry picks for releases', () => { + const changelogText = `## 7.1.0-alpha.11 + +- Some PR \`title\` for a bug [#42](https://github.com/storybookjs/storybook/pull/42), thanks [@JReinhold](https://github.com/JReinhold) +- Some PR 'title' for a feature request [#48](https://github.com/storybookjs/storybook/pull/48), thanks [@JReinhold](https://github.com/JReinhold) +- Antoher PR "title" for maintainance [#49](https://github.com/storybookjs/storybook/pull/49), thanks [@JReinhold](https://github.com/JReinhold)`; + expect( + generateReleaseDescription({ + currentVersion: '7.1.0-alpha.10', + nextVersion: '7.1.0-alpha.11', + changeList, + changelogText, + manualCherryPicks, + }) + ).toMatchInlineSnapshot(` + "This is an automated pull request that bumps the version from \\\`7.1.0-alpha.10\\\` to \\\`7.1.0-alpha.11\\\`. + Once this pull request is merged, it will trigger a new release of version \\\`7.1.0-alpha.11\\\`. + If you\\'re not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR, there are a few QA steps to go through: + + - [ ] Add the \\"freeze\\" label to this PR, to ensure it doesn\\'t get automatically forced pushed by new changes. + - [ ] Add the \\"ci:daily\\" label to this PR, to trigger the full test suite to run on this PR. + + And for each change below: + + 1. Ensure the change is appropriate for the version bump. E.g. patch release should only contain patches, not new or de-stabilizing features. If a change is not appropriate, revert the PR. + 2. Ensure the PR is labeled correctly with one of: \\"BREAKING CHANGE\\", \\"feature request\\", \\"bug\\", \\"maintenance\\", \\"dependencies\\", \\"documentation\\", \\"build\\", \\"unknown\\". + 3. Ensure the PR title is correct, and follows the format \\"[Area]: [Summary]\\", e.g. *\\"React: Fix hooks in CSF3 render functions\\"*. If it is not correct, change the title in the PR. + - Areas include: React, Vue, Core, Docs, Controls, etc. + - First word of summary indicates the type: “Add”, “Fix”, “Upgrade”, etc. + - The entire title should fit on a line + + This is a list of all the PRs merged and commits pushed directly to \\\`next\\\`, that will be part of this release: + + - **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Direct commit**: Some title for a \\\\"direct commit\\\\" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] The change is appropriate for the version bump + - **📝 Documentation**: Another PR \\\\\`title\\\\\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **✨ Feature Request**: Some PR title for a \\\\'new\\\\' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + + ## 🍒 Manual cherry picking needed! + + The following pull requests could not be cherry-picked automatically because it resulted in merge conflicts. + For each pull request below, you need to either manually cherry pick it, or discard it by removing the \\"patch\\" label from the PR and re-generate this PR. + + - [ ] [#42](https://github.com/storybookjs/storybook/pull/42): \\\`git cherry-pick -m1 -x abc123\\\` + + If you\\'ve made any changes doing the above QA (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](https://github.com/storybookjs/storybook/actions/workflows/prepare-prerelease.yml) and wait for it to finish. It will wipe your progress in this to do, which is expected. + + Feel free to manually commit any changes necessary to this branch **after** you\\'ve done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs, *especially* if you\\'re making changes to the changelog. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml) + + --- + + # Generated changelog + + ## 7.1.0-alpha.11 + + - Some PR \\\`title\\\` for a bug [#42](https://github.com/storybookjs/storybook/pull/42), thanks [@ JReinhold](https://github.com/JReinhold) + - Some PR \\'title\\' for a feature request [#48](https://github.com/storybookjs/storybook/pull/48), thanks [@ JReinhold](https://github.com/JReinhold) + - Antoher PR \\"title\\" for maintainance [#49](https://github.com/storybookjs/storybook/pull/49), thanks [@ JReinhold](https://github.com/JReinhold)" + `); + }); + + it('should return a correct string for non-releases with cherry picks', () => { + expect(generateNonReleaseDescription(changeList, manualCherryPicks)).toMatchInlineSnapshot(` + "This is an automated pull request. None of the changes requires a version bump, they are only internal or documentation related. Merging this PR will not trigger a new release, but documentation will be updated. + If you\\'re not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR: + + - [ ] Add the \\"freeze\\" label to this PR, to ensure it doesn\\'t get automatically forced pushed by new changes. + - [ ] Add the \\"ci:daily\\" label to this PR, to trigger the full test suite to run on this PR. + + This is a list of all the PRs merged and commits pushed directly to \\\`next\\\` since the last release: + + - **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Direct commit**: Some title for a \\\\"direct commit\\\\" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] The change is appropriate for the version bump + - **📝 Documentation**: Another PR \\\\\`title\\\\\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **✨ Feature Request**: Some PR title for a \\\\'new\\\\' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + + ## 🍒 Manual cherry picking needed! + + The following pull requests could not be cherry-picked automatically because it resulted in merge conflicts. + For each pull request below, you need to either manually cherry pick it, or discard it by removing the \\"patch\\" label from the PR and re-generate this PR. + + - [ ] [#42](https://github.com/storybookjs/storybook/pull/42): \\\`git cherry-pick -m1 -x abc123\\\` + + If you\\'ve made any changes (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](https://github.com/storybookjs/storybook/actions/workflows/prepare-patch-release.yml) and wait for it to finish. + + Feel free to manually commit any changes necessary to this branch **after** you\\'ve done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml)" + `); + }); + + it('should return a correct string without cherry picks for releases', () => { + const changelogText = `## 7.1.0-alpha.11 + +- Some PR \`title\` for a bug [#42](https://github.com/storybookjs/storybook/pull/42), thanks [@JReinhold](https://github.com/JReinhold) +- Some PR 'title' for a feature request [#48](https://github.com/storybookjs/storybook/pull/48), thanks [@JReinhold](https://github.com/JReinhold) +- Antoher PR "title" for maintainance [#49](https://github.com/storybookjs/storybook/pull/49), thanks [@JReinhold](https://github.com/JReinhold)`; + expect( + generateReleaseDescription({ + currentVersion: '7.1.0-alpha.10', + nextVersion: '7.1.0-alpha.11', + changeList, + changelogText, + }) + ).toMatchInlineSnapshot(` + "This is an automated pull request that bumps the version from \\\`7.1.0-alpha.10\\\` to \\\`7.1.0-alpha.11\\\`. + Once this pull request is merged, it will trigger a new release of version \\\`7.1.0-alpha.11\\\`. + If you\\'re not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR, there are a few QA steps to go through: + + - [ ] Add the \\"freeze\\" label to this PR, to ensure it doesn\\'t get automatically forced pushed by new changes. + - [ ] Add the \\"ci:daily\\" label to this PR, to trigger the full test suite to run on this PR. + + And for each change below: + + 1. Ensure the change is appropriate for the version bump. E.g. patch release should only contain patches, not new or de-stabilizing features. If a change is not appropriate, revert the PR. + 2. Ensure the PR is labeled correctly with one of: \\"BREAKING CHANGE\\", \\"feature request\\", \\"bug\\", \\"maintenance\\", \\"dependencies\\", \\"documentation\\", \\"build\\", \\"unknown\\". + 3. Ensure the PR title is correct, and follows the format \\"[Area]: [Summary]\\", e.g. *\\"React: Fix hooks in CSF3 render functions\\"*. If it is not correct, change the title in the PR. + - Areas include: React, Vue, Core, Docs, Controls, etc. + - First word of summary indicates the type: “Add”, “Fix”, “Upgrade”, etc. + - The entire title should fit on a line + + This is a list of all the PRs merged and commits pushed directly to \\\`next\\\`, that will be part of this release: + + - **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Direct commit**: Some title for a \\\\"direct commit\\\\" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] The change is appropriate for the version bump + - **📝 Documentation**: Another PR \\\\\`title\\\\\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **✨ Feature Request**: Some PR title for a \\\\'new\\\\' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + + + + If you\\'ve made any changes doing the above QA (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](https://github.com/storybookjs/storybook/actions/workflows/prepare-prerelease.yml) and wait for it to finish. It will wipe your progress in this to do, which is expected. + + Feel free to manually commit any changes necessary to this branch **after** you\\'ve done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs, *especially* if you\\'re making changes to the changelog. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml) + + --- + + # Generated changelog + + ## 7.1.0-alpha.11 + + - Some PR \\\`title\\\` for a bug [#42](https://github.com/storybookjs/storybook/pull/42), thanks [@ JReinhold](https://github.com/JReinhold) + - Some PR \\'title\\' for a feature request [#48](https://github.com/storybookjs/storybook/pull/48), thanks [@ JReinhold](https://github.com/JReinhold) + - Antoher PR \\"title\\" for maintainance [#49](https://github.com/storybookjs/storybook/pull/49), thanks [@ JReinhold](https://github.com/JReinhold)" + `); + }); + + it('should return a correct string for non-releases without cherry picks', () => { + expect(generateNonReleaseDescription(changeList)).toMatchInlineSnapshot(` + "This is an automated pull request. None of the changes requires a version bump, they are only internal or documentation related. Merging this PR will not trigger a new release, but documentation will be updated. + If you\\'re not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR: + + - [ ] Add the \\"freeze\\" label to this PR, to ensure it doesn\\'t get automatically forced pushed by new changes. + - [ ] Add the \\"ci:daily\\" label to this PR, to trigger the full test suite to run on this PR. + + This is a list of all the PRs merged and commits pushed directly to \\\`next\\\` since the last release: + + - **🐛 Bug**: Some PR title for a bug [#42](https://github.com/storybookjs/storybook/pull/42) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Direct commit**: Some title for a \\\\"direct commit\\\\" [22bb11](https://github.com/storybookjs/storybook/commit/22bb11) + - [ ] The change is appropriate for the version bump + - **📝 Documentation**: Another PR \\\\\`title\\\\\` for docs [#11](https://github.com/storybookjs/storybook/pull/11) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **✨ Feature Request**: Some PR title for a \\\\'new\\\\' feature [#48](https://github.com/storybookjs/storybook/pull/48) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + - **⚠️ Missing Label**: Some PR title with a missing label [#77](https://github.com/storybookjs/storybook/pull/77) + - [ ] The change is appropriate for the version bump + - [ ] The PR is labeled correctly + - [ ] The PR title is correct + + + + If you\\'ve made any changes (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](https://github.com/storybookjs/storybook/actions/workflows/prepare-patch-release.yml) and wait for it to finish. + + Feel free to manually commit any changes necessary to this branch **after** you\\'ve done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml)" + `); + }); + }); +}); diff --git a/scripts/release/__tests__/is-pr-frozen.test.ts b/scripts/release/__tests__/is-pr-frozen.test.ts new file mode 100644 index 000000000000..63747a863ddf --- /dev/null +++ b/scripts/release/__tests__/is-pr-frozen.test.ts @@ -0,0 +1,61 @@ +/* eslint-disable no-underscore-dangle */ +/* eslint-disable global-require */ +import path from 'path'; +import { run as isPrFrozen } from '../is-pr-frozen'; + +// eslint-disable-next-line jest/no-mocks-import +jest.mock('fs-extra', () => require('../../../code/__mocks__/fs-extra')); +jest.mock('../utils/get-github-info'); + +const fsExtra = require('fs-extra'); +const simpleGit = require('simple-git'); +const { getPullInfoFromCommit } = require('../utils/get-github-info'); + +const CODE_DIR_PATH = path.join(__dirname, '..', '..', '..', 'code'); +const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + +fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), +}); + +describe('isPrFrozen', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return true when PR is frozen', async () => { + getPullInfoFromCommit.mockResolvedValue({ + labels: ['freeze'], + }); + await expect(isPrFrozen({ patch: false })).resolves.toBe(true); + }); + + it('should return false when PR is not frozen', async () => { + getPullInfoFromCommit.mockResolvedValue({ + labels: [], + }); + await expect(isPrFrozen({ patch: false })).resolves.toBe(false); + }); + + it('should look for patch PRs when patch is true', async () => { + getPullInfoFromCommit.mockResolvedValue({ + labels: [], + }); + await isPrFrozen({ patch: true }); + + expect(simpleGit.__fetch).toHaveBeenCalledWith('origin', 'version-patch-from-1.0.0', { + '--depth': 1, + }); + }); + + it('should look for prerelease PRs when patch is false', async () => { + getPullInfoFromCommit.mockResolvedValue({ + labels: [], + }); + await isPrFrozen({ patch: false }); + + expect(simpleGit.__fetch).toHaveBeenCalledWith('origin', 'version-prerelease-from-1.0.0', { + '--depth': 1, + }); + }); +}); diff --git a/scripts/release/__tests__/label-patches.test.ts b/scripts/release/__tests__/label-patches.test.ts new file mode 100644 index 000000000000..d98abc7eb763 --- /dev/null +++ b/scripts/release/__tests__/label-patches.test.ts @@ -0,0 +1,228 @@ +import type { LogResult } from 'simple-git'; +import ansiRegex from 'ansi-regex'; +import { run } from '../label-patches'; +import * as gitClient_ from '../utils/git-client'; +import * as githubInfo_ from '../utils/get-github-info'; +import * as github_ from '../utils/github-client'; + +jest.mock('uuid'); +jest.mock('../utils/get-github-info'); +jest.mock('../utils/github-client'); +jest.mock('../utils/git-client', () => jest.requireActual('jest-mock-extended').mockDeep()); + +const gitClient = jest.mocked(gitClient_); +const github = jest.mocked(github_); +const githubInfo = jest.mocked(githubInfo_); + +const remoteMock = [ + { + name: 'origin', + refs: { + fetch: 'https://github.com/storybookjs/storybook.git', + push: 'https://github.com/storybookjs/storybook.git', + }, + }, +]; + +const gitLogMock: LogResult = { + all: [ + { + hash: 'some-hash', + date: '2023-06-07T09:45:11+02:00', + message: 'Something else', + refs: 'HEAD -> main', + body: '', + author_name: 'Jeppe Reinhold', + author_email: 'jeppe@chromatic.com', + }, + { + hash: 'b75879c4d3d72f7830e9c5fca9f75a303ddb194d', + date: '2023-06-07T09:45:11+02:00', + message: 'Merge pull request #55 from storybookjs/fixes', + refs: 'HEAD -> main', + body: + 'Legal: Fix license\n' + + '(cherry picked from commit 930b47f011f750c44a1782267d698ccdd3c04da3)\n', + author_name: 'Jeppe Reinhold', + author_email: 'jeppe@chromatic.com', + }, + ], + latest: null!, + total: 1, +}; + +const pullInfoMock = { + user: 'JReinhold', + id: 'pr_id', + pull: 55, + commit: '930b47f011f750c44a1782267d698ccdd3c04da3', + title: 'Legal: Fix license', + labels: ['documentation', 'patch:yes', 'patch:done'], + links: { + commit: + '[`930b47f011f750c44a1782267d698ccdd3c04da3`](https://github.com/storybookjs/storybook/commit/930b47f011f750c44a1782267d698ccdd3c04da3)', + pull: '[#55](https://github.com/storybookjs/storybook/pull/55)', + user: '[@JReinhold](https://github.com/JReinhold)', + }, +}; + +beforeEach(() => { + // mock IO + jest.clearAllMocks(); + gitClient.getLatestTag.mockResolvedValue('v7.2.1'); + gitClient.git.log.mockResolvedValue(gitLogMock); + gitClient.git.getRemotes.mockResolvedValue(remoteMock); + githubInfo.getPullInfoFromCommit.mockResolvedValue(pullInfoMock); + github.getLabelIds.mockResolvedValue({ 'patch:done': 'pick-id' }); + github.getUnpickedPRs.mockResolvedValue([ + { + number: 42, + id: 'some-id', + branch: 'some-patching-branch', + title: 'Fix: Patch this PR', + mergeCommit: 'abcd1234', + }, + { + number: 44, + id: 'other-id', + branch: 'other-patching-branch', + title: 'Fix: Also patch this PR', + mergeCommit: 'abcd1234', + }, + ]); +}); + +test('it should fail early when no GH_TOKEN is set', async () => { + delete process.env.GH_TOKEN; + await expect(run({})).rejects.toThrowErrorMatchingInlineSnapshot( + `"GH_TOKEN environment variable must be set, exiting."` + ); +}); + +test('it should label the PR associated with cheery picks in the current branch', async () => { + process.env.GH_TOKEN = 'MY_SECRET'; + + const writeStderr = jest.spyOn(process.stderr, 'write').mockImplementation(); + + await run({}); + expect(github.githubGraphQlClient.mock.calls).toMatchInlineSnapshot(` + [ + [ + " + mutation ($input: AddLabelsToLabelableInput!) { + addLabelsToLabelable(input: $input) { + clientMutationId + } + } + ", + { + "input": { + "clientMutationId": "7efda802-d7d1-5d76-97d6-cc16a9f3e357", + "labelIds": [ + "pick-id", + ], + "labelableId": "pr_id", + }, + }, + ], + ] + `); + + const stderrCalls = writeStderr.mock.calls + .map(([text]) => + typeof text === 'string' + ? text + .replace(ansiRegex(), '') + .replace(/[^\x20-\x7E]/g, '') + .replaceAll('-', '') + .trim() + : text + ) + .filter((it) => it !== ''); + + expect(stderrCalls).toMatchInlineSnapshot(` + [ + "Looking for latest tag", + "Found latest tag: v7.2.1", + "Looking at cherry pick commits since v7.2.1", + "Found the following picks : Commit: 930b47f011f750c44a1782267d698ccdd3c04da3 PR: [#55](https://github.com/storybookjs/storybook/pull/55)", + "Labeling 1 PRs with the patch:done label...", + "Successfully labeled all PRs with the patch:done label.", + ] + `); +}); + +test('it should label all PRs when the --all flag is passed', async () => { + process.env.GH_TOKEN = 'MY_SECRET'; + + // clear the git log, it shouldn't depend on it in --all mode + gitClient.git.log.mockResolvedValue({ + all: [], + latest: null!, + total: 0, + }); + + const writeStderr = jest.spyOn(process.stderr, 'write').mockImplementation(); + + await run({ all: true }); + expect(github.githubGraphQlClient.mock.calls).toMatchInlineSnapshot(` + [ + [ + " + mutation ($input: AddLabelsToLabelableInput!) { + addLabelsToLabelable(input: $input) { + clientMutationId + } + } + ", + { + "input": { + "clientMutationId": "39cffd21-7933-56e4-9d9c-1afeda9d5906", + "labelIds": [ + "pick-id", + ], + "labelableId": "some-id", + }, + }, + ], + [ + " + mutation ($input: AddLabelsToLabelableInput!) { + addLabelsToLabelable(input: $input) { + clientMutationId + } + } + ", + { + "input": { + "clientMutationId": "cc31033b-5da7-5c9e-adf2-80a2963e19a8", + "labelIds": [ + "pick-id", + ], + "labelableId": "other-id", + }, + }, + ], + ] + `); + + const stderrCalls = writeStderr.mock.calls + .map(([text]) => + typeof text === 'string' + ? text + .replace(ansiRegex(), '') + .replace(/[^\x20-\x7E]/g, '') + .replaceAll('-', '') + .trim() + : text + ) + .filter((it) => it !== ''); + + expect(stderrCalls).toMatchInlineSnapshot(` + [ + "Labeling 2 PRs with the patch:done label...", + "Successfully labeled all PRs with the patch:done label.", + ] + `); + expect(github.getUnpickedPRs).toHaveBeenCalledTimes(1); +}); diff --git a/scripts/release/__tests__/version.test.ts b/scripts/release/__tests__/version.test.ts new file mode 100644 index 000000000000..98069ffaba74 --- /dev/null +++ b/scripts/release/__tests__/version.test.ts @@ -0,0 +1,312 @@ +/* eslint-disable global-require */ +/* eslint-disable no-underscore-dangle */ +import path from 'path'; +import { run as version } from '../version'; + +// eslint-disable-next-line jest/no-mocks-import +jest.mock('fs-extra', () => require('../../../code/__mocks__/fs-extra')); +const fsExtra = require('fs-extra'); + +jest.mock('../../../code/lib/cli/src/versions', () => ({ + '@storybook/addon-a11y': '7.1.0-alpha.29', +})); + +jest.mock('../../utils/exec'); +const { execaCommand } = require('../../utils/exec'); + +jest.mock('../../utils/workspace', () => ({ + getWorkspaces: jest.fn().mockResolvedValue([ + { + name: '@storybook/addon-a11y', + location: 'addons/a11y', + }, + ]), +})); + +jest.spyOn(console, 'log').mockImplementation(() => {}); +jest.spyOn(console, 'warn').mockImplementation(() => {}); +jest.spyOn(console, 'error').mockImplementation(() => {}); + +beforeEach(() => { + jest.clearAllMocks(); +}); + +describe('Version', () => { + const CODE_DIR_PATH = path.join(__dirname, '..', '..', '..', 'code'); + const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + const MANAGER_API_VERSION_PATH = path.join( + CODE_DIR_PATH, + 'lib', + 'manager-api', + 'src', + 'version.ts' + ); + const VERSIONS_PATH = path.join(CODE_DIR_PATH, 'lib', 'cli', 'src', 'versions.ts'); + const A11Y_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'addons', 'a11y', 'package.json'); + + it('should throw when release type is invalid', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ releaseType: 'invalid' })).rejects.toThrowErrorMatchingInlineSnapshot(` + "[ + { + "received": "invalid", + "code": "invalid_enum_value", + "options": [ + "major", + "minor", + "patch", + "prerelease", + "premajor", + "preminor", + "prepatch" + ], + "path": [ + "releaseType" + ], + "message": "Invalid enum value. Expected 'major' | 'minor' | 'patch' | 'prerelease' | 'premajor' | 'preminor' | 'prepatch', received 'invalid'" + } + ]" + `); + }); + + it('should throw when prerelease identifier is combined with non-pre release type', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ releaseType: 'major', preId: 'alpha' })).rejects + .toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "Using prerelease identifier requires one of release types: premajor, preminor, prepatch, prerelease", + "path": [] + } + ]" + `); + }); + + it('should throw when exact is combined with release type', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ releaseType: 'major', exact: '1.0.0' })).rejects + .toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "Combining --exact with --release-type is invalid, but having one of them is required", + "path": [] + } + ]" + `); + }); + + it('should throw when exact is invalid semver', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ exact: 'not-semver' })).rejects.toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "--exact version has to be a valid semver string", + "path": [ + "exact" + ] + } + ]" + `); + }); + + it('should throw when apply is combined with releaseType', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ apply: true, releaseType: 'prerelease' })).rejects + .toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "--apply cannot be combined with --exact or --release-type, as it will always read from code/package.json#deferredNextVersion", + "path": [] + } + ]" + `); + }); + + it('should throw when apply is combined with exact', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ apply: true, exact: '1.0.0' })).rejects + .toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "--apply cannot be combined with --exact or --release-type, as it will always read from code/package.json#deferredNextVersion", + "path": [] + } + ]" + `); + }); + + it('should throw when apply is combined with deferred', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + [MANAGER_API_VERSION_PATH]: `export const version = "1.0.0";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "1.0.0" };`, + }); + + await expect(version({ apply: true, deferred: true })).rejects + .toThrowErrorMatchingInlineSnapshot(` + "[ + { + "code": "custom", + "message": "--deferred cannot be combined with --apply", + "path": [] + } + ]" + `); + }); + + it('should throw when applying without a "deferredNextVersion" set', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + }); + + await expect(version({ apply: true })).rejects.toThrowErrorMatchingInlineSnapshot( + `"The 'deferredNextVersion' property in code/package.json is unset. This is necessary to apply a deferred version bump"` + ); + + expect(fsExtra.writeJson).not.toHaveBeenCalled(); + expect(fsExtra.writeFile).not.toHaveBeenCalled(); + expect(execaCommand).not.toHaveBeenCalled(); + }); + + it.each([ + // prettier-ignore + { releaseType: 'major', currentVersion: '1.1.1', expectedVersion: '2.0.0' }, + // prettier-ignore + { releaseType: 'minor', currentVersion: '1.1.1', expectedVersion: '1.2.0' }, + // prettier-ignore + { releaseType: 'patch', currentVersion: '1.1.1', expectedVersion: '1.1.2' }, + // prettier-ignore + { releaseType: 'premajor', preId: 'alpha', currentVersion: '1.1.1', expectedVersion: '2.0.0-alpha.0' }, + // prettier-ignore + { releaseType: 'preminor', preId: 'alpha', currentVersion: '1.1.1', expectedVersion: '1.2.0-alpha.0' }, + // prettier-ignore + { releaseType: 'prepatch', preId: 'alpha', currentVersion: '1.1.1', expectedVersion: '1.1.2-alpha.0' }, + // prettier-ignore + { releaseType: 'prerelease', currentVersion: '1.1.1-alpha.5', expectedVersion: '1.1.1-alpha.6' }, + // prettier-ignore + { releaseType: 'prerelease', preId: 'alpha', currentVersion: '1.1.1-alpha.5', expectedVersion: '1.1.1-alpha.6' }, + // prettier-ignore + { releaseType: 'prerelease', preId: 'beta', currentVersion: '1.1.1-alpha.10', expectedVersion: '1.1.1-beta.0' }, + // prettier-ignore + { releaseType: 'major', currentVersion: '1.1.1-rc.10', expectedVersion: '2.0.0' }, + // prettier-ignore + { releaseType: 'minor', currentVersion: '1.1.1-rc.10', expectedVersion: '1.2.0' }, + // prettier-ignore + { releaseType: 'patch', currentVersion: '1.1.1-rc.10', expectedVersion: '1.1.1' }, + // prettier-ignore + { exact: '4.2.0-canary.69', currentVersion: '1.1.1-rc.10', expectedVersion: '4.2.0-canary.69' }, + // prettier-ignore + { apply: true, currentVersion: '1.0.0', deferredNextVersion: '1.2.0', expectedVersion: '1.2.0' }, + ])( + 'bump with type: "$releaseType", pre id "$preId" or exact "$exact" or apply $apply, from: $currentVersion, to: $expectedVersion', + async ({ + releaseType, + preId, + exact, + apply, + currentVersion, + expectedVersion, + deferredNextVersion, + }) => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: currentVersion, deferredNextVersion }), + [MANAGER_API_VERSION_PATH]: `export const version = "${currentVersion}";`, + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "${currentVersion}" };`, + [A11Y_PACKAGE_JSON_PATH]: JSON.stringify({ + version: currentVersion, + }), + [VERSIONS_PATH]: `export default { "@storybook/addon-a11y": "${currentVersion}" };`, + }); + + await version({ releaseType, preId, exact, apply }); + expect(fsExtra.writeJson).toHaveBeenCalledTimes(apply ? 3 : 2); + if (apply) { + // eslint-disable-next-line jest/no-conditional-expect -- guarded against problems with the assertion above + expect(fsExtra.writeJson).toHaveBeenCalledWith( + CODE_PACKAGE_JSON_PATH, + // this call is the write that removes the "deferredNextVersion" property + { version: currentVersion }, + { spaces: 2 } + ); + } + + expect(fsExtra.writeJson).toHaveBeenCalledWith( + CODE_PACKAGE_JSON_PATH, + { version: expectedVersion }, + { spaces: 2 } + ); + expect(fsExtra.writeFile).toHaveBeenCalledWith( + MANAGER_API_VERSION_PATH, + `export const version = "${expectedVersion}";` + ); + expect(fsExtra.writeFile).toHaveBeenCalledWith( + VERSIONS_PATH, + `export default { "@storybook/addon-a11y": "${expectedVersion}" };` + ); + expect(fsExtra.writeJson).toHaveBeenCalledWith( + A11Y_PACKAGE_JSON_PATH, + expect.objectContaining({ + // should update package version + version: expectedVersion, + }), + { spaces: 2 } + ); + expect(execaCommand).toHaveBeenCalledWith('yarn install --mode=update-lockfile', { + cwd: path.join(CODE_DIR_PATH), + stdio: undefined, + }); + } + ); + + it('should only set version in "deferredNextVersion" when using --deferred', async () => { + fsExtra.__setMockFiles({ + [CODE_PACKAGE_JSON_PATH]: JSON.stringify({ version: '1.0.0' }), + }); + + await version({ releaseType: 'premajor', preId: 'beta', deferred: true }); + + expect(fsExtra.writeJson).toHaveBeenCalledTimes(1); + expect(fsExtra.writeJson).toHaveBeenCalledWith( + CODE_PACKAGE_JSON_PATH, + { version: '1.0.0', deferredNextVersion: '2.0.0-beta.0' }, + { spaces: 2 } + ); + expect(fsExtra.writeFile).not.toHaveBeenCalled(); + expect(execaCommand).not.toHaveBeenCalled(); + }); +}); diff --git a/scripts/release/__tests__/write-changelog.test.ts b/scripts/release/__tests__/write-changelog.test.ts new file mode 100644 index 000000000000..383d3169dec4 --- /dev/null +++ b/scripts/release/__tests__/write-changelog.test.ts @@ -0,0 +1,120 @@ +/* eslint-disable global-require */ +/* eslint-disable no-underscore-dangle */ +import path from 'path'; +import dedent from 'ts-dedent'; +import { run as writeChangelog } from '../write-changelog'; +import * as changesUtils from '../utils/get-changes'; + +// eslint-disable-next-line jest/no-mocks-import +jest.mock('fs-extra', () => require('../../../code/__mocks__/fs-extra')); +const fsExtra = require('fs-extra'); + +const getChangesMock = jest.spyOn(changesUtils, 'getChanges'); + +jest.spyOn(console, 'log').mockImplementation(() => {}); +jest.spyOn(console, 'warn').mockImplementation(() => {}); +jest.spyOn(console, 'error').mockImplementation(() => {}); + +const STABLE_CHANGELOG_PATH = path.join(__dirname, '..', '..', '..', 'CHANGELOG.md'); +const PRERELEASE_CHANGELOG_PATH = path.join(__dirname, '..', '..', '..', 'CHANGELOG.prerelease.md'); +const LATEST_VERSION_PATH = path.join( + __dirname, + '..', + '..', + '..', + 'docs', + 'versions', + 'latest.json' +); +const NEXT_VERSION_PATH = path.join(__dirname, '..', '..', '..', 'docs', 'versions', 'next.json'); + +beforeEach(() => { + jest.clearAllMocks(); +}); + +const EXISTING_STABLE_CHANGELOG = dedent`## 7.0.0 + +- Core: Some change`; + +const EXISTING_PRERELEASE_CHANGELOG = dedent`## 7.1.0-alpha.20 + +- CLI: Super fast now`; + +fsExtra.__setMockFiles({ + [STABLE_CHANGELOG_PATH]: EXISTING_STABLE_CHANGELOG, + [PRERELEASE_CHANGELOG_PATH]: EXISTING_PRERELEASE_CHANGELOG, +}); + +describe('Write changelog', () => { + it('should write to stable changelogs and version files in docs', async () => { + getChangesMock.mockResolvedValue({ + changes: [], + changelogText: `## 7.0.1 + +- React: Make it reactive +- CLI: Not UI`, + }); + + await writeChangelog(['7.0.1'], {}); + + expect(fsExtra.writeFile).toHaveBeenCalledTimes(1); + expect(fsExtra.writeFile.mock.calls[0][0]).toBe(STABLE_CHANGELOG_PATH); + expect(fsExtra.writeFile.mock.calls[0][1]).toMatchInlineSnapshot(` + "## 7.0.1 + + - React: Make it reactive + - CLI: Not UI + + ## 7.0.0 + + - Core: Some change" + `); + expect(fsExtra.writeJson).toBeCalledTimes(1); + expect(fsExtra.writeJson.mock.calls[0][0]).toBe(LATEST_VERSION_PATH); + expect(fsExtra.writeJson.mock.calls[0][1]).toMatchInlineSnapshot(` + { + "info": { + "plain": "- React: Make it reactive + - CLI: Not UI", + }, + "version": "7.0.1", + } + `); + }); + + it('should write to prerelase changelogs and version files in docs', async () => { + getChangesMock.mockResolvedValue({ + changes: [], + changelogText: `## 7.1.0-alpha.21 + +- React: Make it reactive +- CLI: Not UI`, + }); + + await writeChangelog(['7.1.0-alpha.21'], {}); + + expect(fsExtra.writeFile).toHaveBeenCalledTimes(1); + expect(fsExtra.writeFile.mock.calls[0][0]).toBe(PRERELEASE_CHANGELOG_PATH); + expect(fsExtra.writeFile.mock.calls[0][1]).toMatchInlineSnapshot(` + "## 7.1.0-alpha.21 + + - React: Make it reactive + - CLI: Not UI + + ## 7.1.0-alpha.20 + + - CLI: Super fast now" + `); + expect(fsExtra.writeJson).toBeCalledTimes(1); + expect(fsExtra.writeJson.mock.calls[0][0]).toBe(NEXT_VERSION_PATH); + expect(fsExtra.writeJson.mock.calls[0][1]).toMatchInlineSnapshot(` + { + "info": { + "plain": "- React: Make it reactive + - CLI: Not UI", + }, + "version": "7.1.0-alpha.21", + } + `); + }); +}); diff --git a/scripts/release/generate-pr-description.ts b/scripts/release/generate-pr-description.ts new file mode 100644 index 000000000000..16a6928e994f --- /dev/null +++ b/scripts/release/generate-pr-description.ts @@ -0,0 +1,301 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import program from 'commander'; +import { z } from 'zod'; +import dedent from 'ts-dedent'; +import semver from 'semver'; +import { setOutput } from '@actions/core'; +import type { Change } from './utils/get-changes'; +import { getChanges, LABELS_BY_IMPORTANCE, RELEASED_LABELS } from './utils/get-changes'; +import { getCurrentVersion } from './get-current-version'; +import type { PullRequestInfo } from './utils/get-github-info'; + +program + .name('generate-pr-description') + .description('generate a PR description for a release') + .option( + '-C, --current-version <version>', + 'Which version to generate changelog from, eg. "7.0.7". Defaults to the version at code/package.json' + ) + .option('-N, --next-version <version>', 'Which version to generate changelog to, eg. "7.0.8"') + .option('-P, --unpicked-patches', 'Set to only consider PRs labeled with "patch" label') + .option( + '-M, --manual-cherry-picks <commits>', + 'A stringified JSON array of commit hashes, of patch PRs that needs to be cherry-picked manually' + ) + .option('-V, --verbose', 'Enable verbose logging', false); + +const optionsSchema = z.object({ + currentVersion: z.string().optional(), + nextVersion: z.string().optional(), + unpickedPatches: z.boolean().optional(), + manualCherryPicks: z + .string() + .default('[]') + .transform((val) => JSON.parse(val)) + .refine((val) => Array.isArray(val)), + verbose: z.boolean().optional(), +}); + +type Options = { + currentVersion?: string; + nextVersion?: string; + unpickedPatches?: boolean; + manualCherryPicks?: string[]; + verbose: boolean; +}; + +const CHANGE_TITLES_TO_IGNORE = [ + /^bump version.*/i, + /^merge branch.*/i, + /\[skip ci\]/i, + /\[ci skip\]/i, + /^Update CHANGELOG\.md for.*/i, + /^Release: (Pre)?(Patch|Minor|Major|Release).*\d+$/i, +]; + +export const mapToChangelist = ({ + changes, + unpickedPatches, +}: { + changes: Change[]; + unpickedPatches: boolean; +}): string => { + return changes + .filter((change) => { + // eslint-disable-next-line no-restricted-syntax + for (const titleToIgnore of CHANGE_TITLES_TO_IGNORE) { + if (change.title.match(titleToIgnore)) { + return false; + } + } + return true; + }) + .sort((a, b) => { + const isReleasable = (pr: PullRequestInfo) => + (pr.labels ?? []).some((label) => Object.keys(RELEASED_LABELS).includes(label)); + return Number(isReleasable(b)) - Number(isReleasable(a)); + }) + .map((change) => { + if (!change.pull) { + return `- [ ] **⚠️ Direct commit**: ${change.title} ${change.links.commit}`; + } + + const label = (change.labels + ?.filter((l) => Object.keys(LABELS_BY_IMPORTANCE).includes(l)) + .sort( + (a, b) => + Object.keys(LABELS_BY_IMPORTANCE).indexOf(a) - + Object.keys(LABELS_BY_IMPORTANCE).indexOf(b) + )[0] || 'unknown') as keyof typeof LABELS_BY_IMPORTANCE; + + return `- [ ] **${LABELS_BY_IMPORTANCE[label]}**: ${change.title} ${change.links.pull}${ + !unpickedPatches && change.labels.includes('patch:yes') ? ' (will also be patched)' : '' + }`; + }) + .join('\n'); +}; + +export const mapCherryPicksToTodo = ({ + commits, + changes, + verbose, +}: { + commits: string[]; + changes: Change[]; + verbose?: boolean; +}): string => { + const list = commits + .map((commit) => { + const foundChange = changes.find((change) => change.commit === commit); + if (!foundChange) { + throw new Error( + `Cherry pick commit "${commit}" not found in changes, this should not happen?!` + ); + } + return `- [ ] ${foundChange.links.pull}: \`git cherry-pick -m1 -x ${commit}\``; + }) + .join('\n'); + + if (verbose) { + console.log(`🍒 Cherry pick list:\n${list}`); + } + return dedent`## 🍒 Manual cherry picking needed! + + The following pull requests could not be cherry-picked automatically because it resulted in merge conflicts. + For each pull request below, you need to either manually cherry pick it, or discard it by replacing the "patch:yes" label with "patch:no" on the PR and re-generate this PR. + + ${list}`; +}; + +export const generateReleaseDescription = ({ + currentVersion, + nextVersion, + changeList, + changelogText, + manualCherryPicks, +}: { + currentVersion: string; + nextVersion: string; + changeList: string; + changelogText: string; + manualCherryPicks?: string; +}): string => { + const workflow = semver.prerelease(nextVersion) ? 'prepare-prerelease' : 'prepare-patch-release'; + const workflowUrl = `https://github.com/storybookjs/storybook/actions/workflows/${workflow}.yml`; + + return ( + dedent`This is an automated pull request that bumps the version from \`${currentVersion}\` to \`${nextVersion}\`. + Once this pull request is merged, it will trigger a new release of version \`${nextVersion}\`. + If you're not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR, there are a few QA steps to go through: + + - [ ] Add the "freeze" label to this PR, to ensure it doesn't get automatically forced pushed by new changes. + - [ ] Add the "ci:daily" label to this PR, to trigger the full test suite to run on this PR. + + And for each change below: + + 1. Ensure the change is appropriate for the version bump. E.g. patch release should only contain patches, not new or de-stabilizing features. If a change is not appropriate, revert the PR. + 2. Ensure the PR is labeled correctly with one of: ${Object.keys(LABELS_BY_IMPORTANCE) + .map((label) => `"${label}"`) + .join(', ')}. + 3. Ensure the PR title is correct, and follows the format "[Area]: [Summary]", e.g. *"React: Fix hooks in CSF3 render functions"*. If it is not correct, change the title in the PR. + - Areas include: React, Vue, Core, Docs, Controls, etc. + - First word of summary indicates the type: “Add”, “Fix”, “Upgrade”, etc. + - The entire title should fit on a line + + This is a list of all the PRs merged and commits pushed directly to \`next\`, that will be part of this release: + + ${changeList} + + ${manualCherryPicks || ''} + + If you've made any changes doing the above QA (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](${workflowUrl}) and wait for it to finish. It will wipe your progress in this to do, which is expected. + + Feel free to manually commit any changes necessary to this branch **after** you've done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs, *especially* if you're making changes to the changelog. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml) + + --- + + # Generated changelog + + ${changelogText}` + // don't mention contributors in the release PR, to avoid spamming them + .replaceAll('[@', '[@ ') + .replaceAll('"', '\\"') + .replaceAll('`', '\\`') + .replaceAll("'", "\\'") + ); +}; + +export const generateNonReleaseDescription = ( + changeList: string, + manualCherryPicks?: string +): string => { + return ( + dedent`This is an automated pull request. None of the changes requires a version bump, they are only internal or documentation related. Merging this PR will not trigger a new release, but documentation will be updated. + If you're not a core maintainer with permissions to release you can ignore this pull request. + + ## To do + + Before merging the PR: + + - [ ] Add the "freeze" label to this PR, to ensure it doesn't get automatically forced pushed by new changes. + - [ ] Add the "ci:daily" label to this PR, to trigger the full test suite to run on this PR. + + This is a list of all the PRs merged and commits pushed directly to \`next\` since the last release: + + ${changeList} + + ${manualCherryPicks || ''} + + If you've made any changes (change PR titles, revert PRs), manually trigger a re-generation of this PR with [this workflow](https://github.com/storybookjs/storybook/actions/workflows/prepare-patch-release.yml) and wait for it to finish. + + Feel free to manually commit any changes necessary to this branch **after** you've done the last re-generation, following the [Make Manual Changes](https://github.com/storybookjs/storybook/blob/next/CONTRIBUTING/RELEASING.md#5-make-manual-changes) section in the docs. + + When everything above is done: + - Merge this PR + - [Follow the run of the publish action](https://github.com/storybookjs/storybook/actions/workflows/publish.yml)` + // don't mention contributors in the release PR, to avoid spamming them + .replaceAll('[@', '[@ ') + .replaceAll('"', '\\"') + .replaceAll('`', '\\`') + .replaceAll("'", "\\'") + ); +}; + +export const run = async (rawOptions: unknown) => { + const { nextVersion, unpickedPatches, verbose, manualCherryPicks, ...options } = + optionsSchema.parse(rawOptions) as Options; + + if (!nextVersion) { + console.log( + '🚨 --next-version option not specified, generating PR description assuming no release is needed' + ); + } + + const currentVersion = options.currentVersion || (await getCurrentVersion()); + + console.log( + `💬 Generating PR description for ${chalk.blue(nextVersion)} between ${chalk.green( + currentVersion + )} and ${chalk.green('HEAD')}` + ); + + const { changes, changelogText } = await getChanges({ + version: nextVersion, + from: `v${currentVersion}`, + to: 'HEAD', + unpickedPatches, + verbose, + }); + + const hasCherryPicks = manualCherryPicks?.length > 0; + + const description = nextVersion + ? generateReleaseDescription({ + currentVersion, + nextVersion, + changeList: mapToChangelist({ changes, unpickedPatches }), + changelogText, + ...(hasCherryPicks && { + manualCherryPicks: mapCherryPicksToTodo({ + commits: manualCherryPicks, + changes, + verbose, + }), + }), + }) + : generateNonReleaseDescription( + mapToChangelist({ changes, unpickedPatches }), + hasCherryPicks + ? mapCherryPicksToTodo({ + commits: manualCherryPicks, + changes, + verbose, + }) + : undefined + ); + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('description', description); + } + console.log(`✅ Generated PR description for ${chalk.blue(nextVersion)}`); + if (verbose) { + console.log(description); + } +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/get-changelog-from-file.ts b/scripts/release/get-changelog-from-file.ts new file mode 100644 index 000000000000..78514d7a68af --- /dev/null +++ b/scripts/release/get-changelog-from-file.ts @@ -0,0 +1,67 @@ +/* eslint-disable no-console */ +import { setOutput } from '@actions/core'; +import chalk from 'chalk'; +import { program } from 'commander'; +import { readFile } from 'fs-extra'; +import path from 'path'; +import semver from 'semver'; +import dedent from 'ts-dedent'; +import { getCurrentVersion } from './get-current-version'; + +program + .name('get-changelog-from-file') + .description( + 'get changelog entry for specific version. If not version argument specified it will use the current version in code/package.json' + ) + .arguments('[version]') + .option('-E, --no-escape', 'Escape quote-like characters, so the output is safe in CLIs', true) + .option('-V, --verbose', 'Enable verbose logging', false); + +export const getChangelogFromFile = async (args: { + version?: string; + escape?: boolean; + verbose?: boolean; +}) => { + const version = args.version || (await getCurrentVersion()); + const isPrerelease = semver.prerelease(version) !== null; + const changelogFilename = isPrerelease ? 'CHANGELOG.prerelease.md' : 'CHANGELOG.md'; + const changelogPath = path.join(__dirname, '..', '..', changelogFilename); + + console.log(`📝 Getting changelog from ${chalk.blue(changelogPath)}`); + + const fullChangelog = await readFile(changelogPath, 'utf-8'); + const changelogForVersion = fullChangelog.split(/(^|\n)## /).find((v) => v.startsWith(version)); + if (!changelogForVersion) { + throw new Error( + `Could not find changelog entry for version ${chalk.blue(version)} in ${chalk.green( + changelogPath + )}` + ); + } + const result = args.escape + ? `## ${changelogForVersion}` + .replaceAll('"', '\\"') + .replaceAll('`', '\\`') + .replaceAll("'", "\\'") + : `## ${changelogForVersion}`; + + console.log(dedent`📝 Changelog entry found: + ${result}`); + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('changelog', result); + } + return result; +}; + +if (require.main === module) { + const parsed = program.parse(); + getChangelogFromFile({ + version: parsed.args[0], + escape: parsed.opts().escape, + verbose: parsed.opts().verbose, + }).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/get-current-version.ts b/scripts/release/get-current-version.ts new file mode 100644 index 000000000000..413c101640b6 --- /dev/null +++ b/scripts/release/get-current-version.ts @@ -0,0 +1,25 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import { setOutput } from '@actions/core'; +import path from 'path'; +import { readJson } from 'fs-extra'; + +const CODE_DIR_PATH = path.join(__dirname, '..', '..', 'code'); +const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + +export const getCurrentVersion = async () => { + console.log(`📐 Reading current version of Storybook...`); + const { version } = (await readJson(CODE_PACKAGE_JSON_PATH)) as { version: string }; + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('current-version', version); + } + console.log(`📦 Current version is ${chalk.green(version)}`); + return version; +}; + +if (require.main === module) { + getCurrentVersion().catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/get-version-changelog.ts b/scripts/release/get-version-changelog.ts new file mode 100644 index 000000000000..3ece5480236d --- /dev/null +++ b/scripts/release/get-version-changelog.ts @@ -0,0 +1,35 @@ +/* eslint-disable no-console */ +import { setOutput } from '@actions/core'; +import chalk from 'chalk'; +import { program } from 'commander'; +import { getCurrentVersion } from './get-current-version'; +import { getChanges } from './utils/get-changes'; + +program + .name('get-version-changelog') + .description( + 'get changelog for specific version. If no version argument specified it will use the current version in code/package.json' + ) + .arguments('[version]') + .option('-V, --verbose', 'Enable verbose logging', false); + +export const getVersionChangelog = async (args: { version?: string; verbose?: boolean }) => { + const version = args.version || (await getCurrentVersion()); + + console.log(`📝 Getting changelog for version ${chalk.blue(version)}`); + + const { changelogText } = await getChanges({ from: version, version, verbose: args.verbose }); + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('changelog', changelogText); + } + return changelogText; +}; + +if (require.main === module) { + const parsed = program.parse(); + getVersionChangelog({ version: parsed.args[0], verbose: parsed.opts().verbose }).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/is-pr-frozen.ts b/scripts/release/is-pr-frozen.ts new file mode 100644 index 000000000000..70289b5369d8 --- /dev/null +++ b/scripts/release/is-pr-frozen.ts @@ -0,0 +1,99 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import program from 'commander'; +import { setOutput } from '@actions/core'; +import path from 'path'; +import { readJson } from 'fs-extra'; +import { getPullInfoFromCommit } from './utils/get-github-info'; +import { git } from './utils/git-client'; + +program + .name('is-pr-frozen') + .description( + 'returns true if the versioning pull request associated with the current branch has the "freeze" label' + ) + .option('-P, --patch', 'Look for patch PR instead of prerelease PR', false) + .option('-V, --verbose', 'Enable verbose logging', false); + +const CODE_DIR_PATH = path.join(__dirname, '..', '..', 'code'); +const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + +const getCurrentVersion = async () => { + console.log(`📐 Reading current version of Storybook...`); + const { version } = await readJson(CODE_PACKAGE_JSON_PATH); + return version; +}; + +const getRepo = async (verbose?: boolean): Promise<string> => { + const remotes = await git.getRemotes(true); + const originRemote = remotes.find((remote) => remote.name === 'origin'); + if (!originRemote) { + console.error( + 'Could not determine repository URL because no remote named "origin" was found. Remotes found:' + ); + console.dir(remotes, { depth: null, colors: true }); + throw new Error('No remote named "origin" found'); + } + const pushUrl = originRemote.refs.push; + const repo = pushUrl.replace(/\.git$/, '').replace(/.*:(\/\/github\.com\/)*/, ''); + if (verbose) { + console.log(`📦 Extracted repo: ${chalk.blue(repo)}`); + } + return repo; +}; + +export const run = async (options: unknown) => { + const { verbose, patch } = options as { verbose?: boolean; patch?: boolean }; + + const version = await getCurrentVersion(); + const branch = `version-${patch ? 'patch' : 'prerelease'}-from-${version}`; + + console.log(`💬 Determining if pull request from branch '${chalk.blue(branch)}' is frozen`); + + console.log(`⬇️ Fetching remote 'origin/${branch}'...`); + try { + await git.fetch('origin', branch, { '--depth': 1 }); + } catch (error) { + console.warn( + `❗ Could not fetch remote 'origin/${branch}', it probably does not exist yet, which is okay` + ); + console.warn(error); + console.log(`💧 Pull request doesn't exist yet! 😎`); + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('frozen', false); + } + return false; + } + + const commit = await git.revparse(`origin/${branch}`); + console.log(`🔍 Found commit: ${commit}`); + + const repo = await getRepo(verbose); + + const pullRequest = await getPullInfoFromCommit({ repo, commit }).catch((err) => { + console.error(`🚨 Could not get pull requests from commit: ${commit}`); + console.error(err); + throw err; + }); + console.log(`🔍 Found pull request: + ${JSON.stringify(pullRequest, null, 2)}`); + + const isFrozen = pullRequest.labels?.includes('freeze'); + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('frozen', isFrozen); + } + if (isFrozen) { + console.log(`🧊 Pull request is frozen! 🥶`); + } else { + console.log(`🔥 Pull request is on fire! 🥵`); + } + return isFrozen; +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/is-prerelease.ts b/scripts/release/is-prerelease.ts new file mode 100644 index 000000000000..5a3f7ef11c9e --- /dev/null +++ b/scripts/release/is-prerelease.ts @@ -0,0 +1,34 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import program from 'commander'; +import { setOutput } from '@actions/core'; +import semver from 'semver'; +import { getCurrentVersion } from './get-current-version'; + +program + .name('is-prerelease') + .description('returns true if the current version is a prerelease') + .option('-V, --verbose', 'Enable verbose logging', false); + +export const isPrerelease = async (versionArg?: string) => { + const version = versionArg || (await getCurrentVersion()); + const result = semver.prerelease(version) !== null; + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('prerelease', result); + } + console.log( + `📦 Current version ${chalk.green(version)} ${ + result ? chalk.blue('IS') : chalk.red('IS NOT') + } a prerelease` + ); + + return result; +}; + +if (require.main === module) { + isPrerelease().catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/is-version-published.ts b/scripts/release/is-version-published.ts new file mode 100644 index 000000000000..b5acd8c90ab7 --- /dev/null +++ b/scripts/release/is-version-published.ts @@ -0,0 +1,86 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import program from 'commander'; +import { setOutput } from '@actions/core'; +import fetch from 'node-fetch'; +import { getCurrentVersion } from './get-current-version'; + +program + .name('is-prerelease [version]') + .description('returns true if the current version is a prerelease') + .arguments('[version]'); + +const isVersionPublished = async ({ + packageName, + version, + verbose, +}: { + packageName: string; + version: string; + verbose?: boolean; +}) => { + const prettyPackage = `${chalk.blue(packageName)}@${chalk.green(version)}`; + console.log(`⛅ Checking if ${prettyPackage} is published...`); + + if (verbose) { + console.log(`Fetching from npm:`); + console.log(`https://registry.npmjs.org/${chalk.blue(packageName)}/${chalk.green(version)}`); + } + const response = await fetch(`https://registry.npmjs.org/${packageName}/${version}`); + if (response.status === 404) { + console.log(`🌤️ ${prettyPackage} is not published`); + return false; + } + if (response.status !== 200) { + console.error( + `Unexpected status code when checking the current version on npm: ${response.status}` + ); + console.error(await response.text()); + throw new Error( + `Unexpected status code when checking the current version on npm: ${response.status}` + ); + } + const data = await response.json(); + if (verbose) { + console.log(`Response from npm:`); + console.log(data); + } + if (data.version !== version) { + // this should never happen + console.error( + `Unexpected version received when checking the current version on npm: ${data.version}` + ); + console.error(JSON.stringify(data, null, 2)); + throw new Error( + `Unexpected version received when checking the current version on npm: ${data.version}` + ); + } + + console.log(`⛈️ ${prettyPackage} is published`); + return true; +}; + +export const run = async (args: unknown[], options: unknown) => { + const { verbose } = options as { verbose?: boolean }; + + const version = (args[0] as string) || (await getCurrentVersion()); + + const isAlreadyPublished = await isVersionPublished({ + version, + packageName: '@storybook/manager-api', + verbose, + }); + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('published', isAlreadyPublished); + } + return isAlreadyPublished; +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.args, parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/label-patches.ts b/scripts/release/label-patches.ts new file mode 100644 index 000000000000..1e9305b9806c --- /dev/null +++ b/scripts/release/label-patches.ts @@ -0,0 +1,102 @@ +import program from 'commander'; +import { v4 as uuidv4 } from 'uuid'; +import ora from 'ora'; +import { getLabelIds, githubGraphQlClient, getUnpickedPRs } from './utils/github-client'; +import { getPullInfoFromCommits, getRepo } from './utils/get-changes'; +import { getLatestTag, git } from './utils/git-client'; + +program + .name('label-patches') + .description('Label all patches applied in current branch up to the latest release tag.') + .option( + '-A, --all', + 'Label all pull requests pending patches, iregardless if they are in the git log or not', + false + ); + +async function labelPR(id: string, labelId: string) { + await githubGraphQlClient( + ` + mutation ($input: AddLabelsToLabelableInput!) { + addLabelsToLabelable(input: $input) { + clientMutationId + } + } + `, + { input: { labelIds: [labelId], labelableId: id, clientMutationId: uuidv4() } } + ); +} + +async function getPullRequestsFromLog({ repo }: { repo: string }) { + const spinner = ora('Looking for latest tag').start(); + const latestTag = await getLatestTag(); + spinner.succeed(`Found latest tag: ${latestTag}`); + + const spinner2 = ora(`Looking at cherry pick commits since ${latestTag}`).start(); + const commitsSinceLatest = await git.log({ from: latestTag }); + console.log(commitsSinceLatest); + const cherryPicked = commitsSinceLatest.all.flatMap((it) => { + const result = it.body.match(/\(cherry picked from commit (\b[0-9a-f]{7,40}\b)\)/); + return result ? [result?.[1]] : []; + }); + + if (cherryPicked.length === 0) { + spinner2.fail('No cherry pick commits found to label.'); + return []; + } + const pullRequests = ( + await getPullInfoFromCommits({ + repo, + commits: cherryPicked.map((hash) => ({ hash })), + }) + ).filter((it) => it.id != null); + + if (pullRequests.length === 0) { + spinner2.fail( + `Found picks: ${cherryPicked.join(', ')}, but no associated pull request found to label.` + ); + return pullRequests; + } + + const commitWithPr = pullRequests.map((pr) => `Commit: ${pr.commit}\n PR: ${pr.links.pull}`); + + spinner2.succeed(`Found the following picks 🍒:\n ${commitWithPr.join('\n')}`); + + return pullRequests; +} + +export const run = async (options: unknown) => { + if (!process.env.GH_TOKEN) { + throw new Error('GH_TOKEN environment variable must be set, exiting.'); + } + + const repo = await getRepo(); + const labelAll = typeof options === 'object' && 'all' in options && Boolean(options.all); + + const pullRequestsToLabel = labelAll + ? await getUnpickedPRs('next') + : await getPullRequestsFromLog({ repo }); + if (pullRequestsToLabel.length === 0) { + return; + } + + const spinner3 = ora( + `Labeling ${pullRequestsToLabel.length} PRs with the patch:done label...` + ).start(); + try { + const labelToId = await getLabelIds({ repo, labelNames: ['patch:done'] }); + await Promise.all(pullRequestsToLabel.map((pr) => labelPR(pr.id, labelToId['patch:done']))); + spinner3.succeed(`Successfully labeled all PRs with the patch:done label.`); + } catch (e) { + spinner3.fail(`Something went wrong when labelling the PRs.`); + console.error(e); + } +}; + +if (require.main === module) { + const options = program.parse().opts(); + run(options).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/pick-patches.ts b/scripts/release/pick-patches.ts new file mode 100644 index 000000000000..82f1fe2b4a1a --- /dev/null +++ b/scripts/release/pick-patches.ts @@ -0,0 +1,93 @@ +/* eslint-disable no-console */ +/* eslint-disable no-await-in-loop */ +import program from 'commander'; +import chalk from 'chalk'; +import ora from 'ora'; +import { setOutput } from '@actions/core'; +import { git } from './utils/git-client'; +import { getUnpickedPRs } from './utils/github-client'; +import invariant from 'tiny-invariant'; + +program.name('pick-patches').description('Cherry pick patch PRs back to main'); + +const logger = console; + +const OWNER = 'storybookjs'; +const REPO = 'storybook'; +const SOURCE_BRANCH = 'next'; + +interface PR { + number: number; + id: string; + branch: string; + title: string; + mergeCommit: string; +} + +function formatPR(pr: PR): string { + return `https://github.com/${OWNER}/${REPO}/pull/${pr.number} "${pr.title}" ${chalk.yellow( + pr.mergeCommit + )}`; +} + +export const run = async (_: unknown) => { + if (!process.env.GH_TOKEN) { + logger.error('GH_TOKEN environment variable must be set, exiting.'); + process.exit(1); + } + + const sourceBranch = SOURCE_BRANCH; + + const spinner = ora('Searching for patch PRs to cherry-pick').start(); + + const patchPRs = await getUnpickedPRs(sourceBranch); + + if (patchPRs.length > 0) { + spinner.succeed(`Found ${patchPRs.length} PRs to cherry-pick to main.`); + } else { + spinner.warn('No PRs found.'); + } + + const failedCherryPicks: string[] = []; + + // eslint-disable-next-line no-restricted-syntax + for (const pr of patchPRs) { + const prSpinner = ora(`Cherry picking #${pr.number}`).start(); + + try { + await git.raw(['cherry-pick', '-m', '1', '--keep-redundant-commits', '-x', pr.mergeCommit]); + prSpinner.succeed(`Picked: ${formatPR(pr)}`); + } catch (pickError) { + invariant(pickError instanceof Error); + prSpinner.fail(`Failed to automatically pick: ${formatPR(pr)}`); + logger.error(pickError.message); + const abort = ora(`Aborting cherry pick for merge commit: ${pr.mergeCommit}`).start(); + try { + await git.raw(['cherry-pick', '--abort']); + abort.stop(); + } catch (abortError) { + invariant(abortError instanceof Error); + abort.warn(`Failed to abort cherry pick (${pr.mergeCommit})`); + logger.error(abortError.message); + } + failedCherryPicks.push(pr.mergeCommit); + prSpinner.info( + `This PR can be picked manually with: ${chalk.grey( + `git cherry-pick -m1 -x ${pr.mergeCommit}` + )}` + ); + } + } + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('failed-cherry-picks', JSON.stringify(failedCherryPicks)); + } +}; + +if (require.main === module) { + const options = program.parse(process.argv); + run(options).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/publish.ts b/scripts/release/publish.ts new file mode 100644 index 000000000000..f3d3516b6a98 --- /dev/null +++ b/scripts/release/publish.ts @@ -0,0 +1,206 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import path from 'path'; +import program from 'commander'; +import semver from 'semver'; +import { z } from 'zod'; +import { readJson } from 'fs-extra'; +import fetch from 'node-fetch'; +import dedent from 'ts-dedent'; +import { execaCommand } from '../utils/exec'; + +program + .name('publish') + .description('publish all packages') + .requiredOption( + '-T, --tag <tag>', + 'Specify which distribution tag to set for the version being published. Required, since leaving it undefined would publish with the "latest" tag' + ) + .option('-D, --dry-run', 'Do not publish, only output to shell', false) + .option('-V, --verbose', 'Enable verbose logging', false); + +const optionsSchema = z + .object({ + tag: z.string(), + verbose: z.boolean().optional(), + dryRun: z.boolean().optional(), + }) + .refine((schema) => (schema.tag ? !semver.valid(schema.tag) : true), { + message: + 'The tag can not be a valid semver version, it must be a plain string like "next" or "latest"', + }); + +type Options = { + tag: string; + verbose: boolean; + dryRun?: boolean; +}; + +const CODE_DIR_PATH = path.join(__dirname, '..', '..', 'code'); +const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + +const validateOptions = (options: { [key: string]: any }): options is Options => { + optionsSchema.parse(options); + return true; +}; + +const getCurrentVersion = async (verbose?: boolean) => { + if (verbose) { + console.log(`📐 Reading current version of Storybook...`); + } + const { version } = await readJson(CODE_PACKAGE_JSON_PATH); + console.log(`📐 Current version of Storybook is ${chalk.green(version)}`); + return version; +}; + +const isCurrentVersionPublished = async ({ + packageName, + currentVersion, + verbose, +}: { + packageName: string; + currentVersion: string; + verbose?: boolean; +}) => { + const prettyPackage = `${chalk.blue(packageName)}@${chalk.green(currentVersion)}`; + console.log(`⛅ Checking if ${prettyPackage} is published...`); + + if (verbose) { + console.log(`Fetching from npm:`); + console.log( + `https://registry.npmjs.org/${chalk.blue(packageName)}/${chalk.green(currentVersion)}` + ); + } + const response = await fetch(`https://registry.npmjs.org/${packageName}/${currentVersion}`); + if (response.status === 404) { + console.log(`🌤️ ${prettyPackage} is not published`); + return false; + } + if (response.status !== 200) { + console.error( + `Unexpected status code when checking the current version on npm: ${response.status}` + ); + console.error(await response.text()); + throw new Error( + `Unexpected status code when checking the current version on npm: ${response.status}` + ); + } + const data = await response.json(); + if (verbose) { + console.log(`Response from npm:`); + console.log(data); + } + if (data.version !== currentVersion) { + // this should never happen + console.error( + `Unexpected version received when checking the current version on npm: ${data.version}` + ); + console.error(JSON.stringify(data, null, 2)); + throw new Error( + `Unexpected version received when checking the current version on npm: ${data.version}` + ); + } + + console.log(`⛈️ ${prettyPackage} is published`); + return true; +}; + +const buildAllPackages = async () => { + console.log(`🏗️ Building all packages...`); + await execaCommand('yarn task --task=compile --start-from=compile --no-link', { + stdio: 'inherit', + cwd: CODE_DIR_PATH, + }); + console.log(`🏗️ Packages successfully built`); +}; + +const publishAllPackages = async ({ + tag, + verbose, + dryRun, +}: { + tag: string; + verbose?: boolean; + dryRun?: boolean; +}) => { + console.log(`📦 Publishing all packages...`); + const command = `yarn workspaces foreach --parallel --no-private --verbose npm publish --tolerate-republish --tag ${tag}`; + if (verbose) { + console.log(`📦 Executing: ${command}`); + } + if (dryRun) { + console.log(`📦 Dry run, skipping publish. Would have executed: + ${chalk.blue(command)}`); + return; + } + + // Note this is to fool `ts-node` into not turning the `import()` into a `require()`. + // See: https://github.com/TypeStrong/ts-node/discussions/1290 + // prettier-ignore + const pRetry = ( + // eslint-disable-next-line @typescript-eslint/no-implied-eval + (await new Function('specifier', 'return import(specifier)')( + 'p-retry' + )) as typeof import('p-retry') + ).default; + /** + * 'yarn npm publish' will fail if just one package fails to publish. + * But it will continue through with all the other packages, and --tolerate-republish makes it okay to publish the same version again. + * So we can safely retry the whole publishing process if it fails. + * It's not uncommon for the registry to fail often, which Yarn catches by checking the registry after a package has been published. + */ + await pRetry( + () => + execaCommand(command, { + stdio: 'inherit', + cwd: CODE_DIR_PATH, + }), + { + retries: 4, + onFailedAttempt: (error) => + console.log( + chalk.yellow( + dedent`❗One or more packages failed to publish, retrying... + This was attempt number ${error.attemptNumber}, there are ${error.retriesLeft} retries left. 🤞` + ) + ), + } + ); + console.log(`📦 Packages successfully published`); +}; + +export const run = async (options: unknown) => { + if (!validateOptions(options)) { + return; + } + const { tag, dryRun, verbose } = options; + + // Get the current version from code/package.json + const currentVersion = await getCurrentVersion(verbose); + const isAlreadyPublished = await isCurrentVersionPublished({ + currentVersion, + packageName: '@storybook/manager-api', + verbose, + }); + if (isAlreadyPublished) { + throw new Error( + `⛔ Current version (${chalk.green(currentVersion)}) is already published, aborting.` + ); + } + await buildAllPackages(); + await publishAllPackages({ tag, verbose, dryRun }); + + console.log( + `✅ Published all packages with version ${chalk.green(currentVersion)}${ + tag ? ` at tag ${chalk.blue(tag)}` : '' + }` + ); +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/unreleased-changes-exists.ts b/scripts/release/unreleased-changes-exists.ts new file mode 100644 index 000000000000..59adedbdbb0e --- /dev/null +++ b/scripts/release/unreleased-changes-exists.ts @@ -0,0 +1,86 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import program from 'commander'; +import { z } from 'zod'; +import { setOutput } from '@actions/core'; +import { intersection } from 'lodash'; +import type { Change } from './utils/get-changes'; +import { RELEASED_LABELS, getChanges } from './utils/get-changes'; +import { getCurrentVersion } from './get-current-version'; + +program + .name('are-changes-unreleased') + .description('check if any changes since a release should be released') + .option( + '-F, --from <version>', + 'Which version/tag/commit to go back and check changes from. Defaults to latest release tag' + ) + .option('-P, --unpicked-patches', 'Set to only consider PRs labeled with "patch:yes" label') + .option('-V, --verbose', 'Enable verbose logging', false); + +const optionsSchema = z.object({ + from: z.string().optional(), + unpickedPatches: z.boolean().optional(), + verbose: z.boolean().optional(), +}); + +type Options = { + from?: string; + unpickedPatches?: boolean; + verbose: boolean; +}; + +const validateOptions = (options: { [key: string]: any }): options is Options => { + optionsSchema.parse(options); + return true; +}; + +export const run = async ( + options: unknown +): Promise<{ changesToRelease: Change[]; hasChangesToRelease: boolean }> => { + if (!validateOptions(options)) { + // this will never return because the validator throws + return { changesToRelease: [], hasChangesToRelease: false }; + } + const { from, unpickedPatches, verbose } = options; + + const currentVersion = await getCurrentVersion(); + + console.log(`📐 Checking if there are any unreleased changes...`); + + const { changes } = await getChanges({ + version: currentVersion, + from: from || currentVersion, + to: 'HEAD', + unpickedPatches, + verbose, + }); + + const changesToRelease = changes.filter( + ({ labels }) => intersection(Object.keys(RELEASED_LABELS), labels).length > 0 + ); + + const hasChangesToRelease = changesToRelease.length > 0; + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('has-changes-to-release', hasChangesToRelease); + } + if (hasChangesToRelease) { + console.log( + `${chalk.green('🦋 The following changes are releasable')}: +${chalk.blue(changesToRelease.map(({ title, pull }) => ` #${pull}: ${title}`).join('\n'))}` + ); + } else { + console.log(chalk.red('🫙 No changes to release!')); + } + + return { changesToRelease, hasChangesToRelease }; +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/utils/__mocks__/get-github-info.js b/scripts/release/utils/__mocks__/get-github-info.js new file mode 100644 index 000000000000..2fa98bd4cb48 --- /dev/null +++ b/scripts/release/utils/__mocks__/get-github-info.js @@ -0,0 +1,4 @@ +module.exports = { + getPullInfoFromCommit: jest.fn(), + getPullInfoFromPullRequest: jest.fn(), +}; diff --git a/scripts/release/utils/get-changes.ts b/scripts/release/utils/get-changes.ts new file mode 100644 index 000000000000..1ad2a0759198 --- /dev/null +++ b/scripts/release/utils/get-changes.ts @@ -0,0 +1,265 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import semver from 'semver'; +import type { PullRequestInfo } from './get-github-info'; +import { getPullInfoFromCommit } from './get-github-info'; +import { getLatestTag, git } from './git-client'; +import { getUnpickedPRs } from './github-client'; + +export const RELEASED_LABELS = { + 'BREAKING CHANGE': '❗ Breaking Change', + 'feature request': '✨ Feature Request', + bug: '🐛 Bug', + maintenance: '🔧 Maintenance', + dependencies: '📦 Dependencies', +} as const; + +export const UNRELEASED_LABELS = { + documentation: '📝 Documentation', + build: '🏗️ Build', + unknown: '❔ Missing Label', +} as const; + +export const LABELS_BY_IMPORTANCE = { + ...RELEASED_LABELS, + ...UNRELEASED_LABELS, +} as const; + +const getCommitAt = async (id: string, verbose?: boolean) => { + if (!semver.valid(id)) { + console.log(`🔍 ${chalk.red(id)} is not a valid semver string, assuming it is a commit hash`); + return id; + } + const version = id.startsWith('v') ? id : `v${id}`; + const commitSha = (await git.raw(['rev-list', '-n', '1', version])).split('\n')[0]; + if (verbose) { + console.log(`🔍 Commit at tag ${chalk.green(version)}: ${chalk.blue(commitSha)}`); + } + return commitSha; +}; + +export const getFromCommit = async (from?: string | undefined, verbose?: boolean) => { + let actualFrom = from; + if (!from) { + console.log(`🔍 No 'from' specified, finding latest version tag, fetching all of them...`); + const latest = await getLatestTag(); + if (!latest) { + throw new Error( + 'Could not automatically detect which commit to generate from, because no version tag was found in the history. Have you fetch tags?' + ); + } + actualFrom = latest; + if (verbose) { + console.log(`🔍 No 'from' specified, found latest tag: ${chalk.blue(latest)}`); + } + } + const commit = await getCommitAt(actualFrom, verbose); + if (verbose) { + console.log(`🔍 Found 'from' commit: ${chalk.blue(commit)}`); + } + return commit; +}; + +export const getToCommit = async (to?: string | undefined, verbose?: boolean) => { + if (!to) { + const head = await git.revparse('HEAD'); + if (verbose) { + console.log(`🔍 No 'to' specified, HEAD is at commit: ${chalk.blue(head)}`); + } + return head; + } + + const commit = await getCommitAt(to, verbose); + if (verbose) { + console.log(`🔍 Found 'to' commit: ${chalk.blue(commit)}`); + } + return commit; +}; + +export const getAllCommitsBetween = async ({ + from, + to, + verbose, +}: { + from: string; + to?: string; + verbose?: boolean; +}) => { + const logResult = await git.log({ from, to, '--first-parent': null }); + if (verbose) { + console.log( + `🔍 Found ${chalk.blue(logResult.total)} commits between ${chalk.green( + `${from}` + )} and ${chalk.green(`${to}`)}:` + ); + console.dir(logResult.all, { depth: null, colors: true }); + } + return logResult.all; +}; + +export const getRepo = async (verbose?: boolean): Promise<string> => { + const remotes = await git.getRemotes(true); + const originRemote = remotes.find((remote) => remote.name === 'origin'); + if (!originRemote) { + console.error( + 'Could not determine repository URL because no remote named "origin" was found. Remotes found:' + ); + console.dir(remotes, { depth: null, colors: true }); + throw new Error('No remote named "origin" found'); + } + const pushUrl = originRemote.refs.push; + const repo = pushUrl.replace(/\.git$/, '').replace(/.*:(\/\/github\.com\/)*/, ''); + if (verbose) { + console.log(`📦 Extracted repo: ${chalk.blue(repo)}`); + } + return repo; +}; + +export const getPullInfoFromCommits = async ({ + repo, + commits, + verbose, +}: { + repo: string; + commits: readonly { hash: string }[]; + verbose?: boolean; +}): Promise<PullRequestInfo[]> => { + const pullRequests = await Promise.all( + commits.map((commit) => + getPullInfoFromCommit({ + repo, + commit: commit.hash, + }) + ) + ); + if (verbose) { + console.log(`🔍 Found pull requests:`); + console.dir(pullRequests, { depth: null, colors: true }); + } + return pullRequests; +}; + +export type Change = PullRequestInfo; + +export const mapToChanges = ({ + commits, + pullRequests, + unpickedPatches, + verbose, +}: { + commits: readonly { hash: string; message?: string }[]; + pullRequests: PullRequestInfo[]; + unpickedPatches?: boolean; + verbose?: boolean; +}): Change[] => { + if (pullRequests.length !== commits.length) { + // not all commits are associated with a pull request, but the pullRequests array should still contain those commits + console.error('Pull requests and commits are not the same length, this should not happen'); + console.error(`Pull Requests: ${pullRequests.length}`); + console.dir(pullRequests, { depth: null, colors: true }); + console.error(`Commits: ${commits.length}`); + console.dir(commits, { depth: null, colors: true }); + throw new Error('Pull requests and commits are not the same length, this should not happen'); + } + const allEntries = pullRequests.map((pr, index) => { + return { + ...pr, + title: pr.title || commits[index].message, + }; + }); + + const changes: Change[] = []; + allEntries.forEach((entry) => { + // filter out any duplicate entries, eg. when multiple commits are associated with the same pull request + if (entry.pull && changes.findIndex((existing) => entry.pull === existing.pull) !== -1) { + return; + } + // filter out any entries that are not patches if unpickedPatches is set. this will also filter out direct commits + if (unpickedPatches && !entry.labels?.includes('patch:yes')) { + return; + } + changes.push(entry); + }); + + if (verbose) { + console.log(`📝 Generated changelog entries:`); + console.dir(changes, { depth: null, colors: true }); + } + return changes; +}; + +export const getChangelogText = ({ + changes, + version, +}: { + changes: Change[]; + version: string; +}): string => { + const heading = `## ${version}`; + const formattedEntries = changes + .filter((entry) => { + // don't include direct commits that are not from pull requests + if (!entry.pull) { + return false; + } + // only include PRs that with labels listed in LABELS_FOR_CHANGELOG + return entry.labels?.some((label) => Object.keys(RELEASED_LABELS).includes(label)); + }) + .map((entry) => { + const { title, links } = entry; + const { pull, commit, user } = links; + return pull + ? `- ${title} - ${pull}, thanks ${user}!` + : `- ⚠️ _Direct commit_ ${title} - ${commit} by ${user}`; + }) + .sort(); + const text = [heading, '', ...formattedEntries].join('\n'); + + console.log(`✅ Generated Changelog:`); + console.log(text); + + return text; +}; + +export const getChanges = async ({ + version, + from, + to, + unpickedPatches, + verbose, +}: { + version: string; + from?: string; + to?: string; + unpickedPatches?: boolean; + verbose?: boolean; +}) => { + console.log(`💬 Getting changes for ${chalk.blue(version)}`); + + let commits; + if (unpickedPatches) { + commits = (await getUnpickedPRs('next', verbose)).map((it) => ({ hash: it.mergeCommit })); + } else { + commits = await getAllCommitsBetween({ + from: await getFromCommit(from, verbose), + to: await getToCommit(to, verbose), + verbose, + }); + } + + const repo = await getRepo(verbose); + const pullRequests = await getPullInfoFromCommits({ repo, commits, verbose }).catch((err) => { + console.error( + `🚨 Could not get pull requests from commits, this is usually because you have unpushed commits, or you haven't set the GH_TOKEN environment variable` + ); + console.error(err); + throw err; + }); + const changes = mapToChanges({ commits, pullRequests, unpickedPatches, verbose }); + const changelogText = getChangelogText({ + changes, + version, + }); + + return { changes, changelogText }; +}; diff --git a/scripts/release/utils/get-github-info.ts b/scripts/release/utils/get-github-info.ts new file mode 100644 index 000000000000..6bd7126aec04 --- /dev/null +++ b/scripts/release/utils/get-github-info.ts @@ -0,0 +1,297 @@ +/** + * This file is soft-forked from @changesets/get-github-info + * https://github.com/changesets/changesets/tree/main/packages/get-github-info + * + * The only modification is that it also returns the PR title and labels + */ + +import DataLoader from 'dataloader'; +import fetch from 'node-fetch'; + +const validRepoNameRegex = /^[\w.-]+\/[\w.-]+$/; + +type RequestData = + | { kind: 'commit'; repo: string; commit: string } + | { kind: 'pull'; repo: string; pull: number }; + +type ReposWithCommitsAndPRsToFetch = Record< + string, + ({ kind: 'commit'; commit: string } | { kind: 'pull'; pull: number })[] +>; + +function makeQuery(repos: ReposWithCommitsAndPRsToFetch) { + const query = ` + query { + ${Object.keys(repos) + .map( + (repo, i) => + `a${i}: repository( + owner: ${JSON.stringify(repo.split('/')[0])} + name: ${JSON.stringify(repo.split('/')[1])} + ) { + ${repos[repo] + .map((data) => + data.kind === 'commit' + ? `a${data.commit}: object(expression: ${JSON.stringify(data.commit)}) { + ... on Commit { + commitUrl + associatedPullRequests(first: 50) { + nodes { + number + id + title + url + mergedAt + labels(first: 50) { + nodes { + name + } + } + author { + login + url + } + } + } + author { + user { + login + url + } + } + }}` + : `pr__${data.pull}: pullRequest(number: ${data.pull}) { + url + title + author { + login + url + } + labels(first: 50) { + nodes { + name + } + } + mergeCommit { + commitUrl + oid + } + }` + ) + .join('\n')} + }` + ) + .join('\n')} + } + `; + return query; +} + +// why are we using dataloader? +// it provides use with two things +// 1. caching +// since getInfo will be called inside of changeset's getReleaseLine +// and there could be a lot of release lines for a single commit +// caching is important so we don't do a bunch of requests for the same commit +// 2. batching +// getReleaseLine will be called a large number of times but it'll be called at the same time +// so instead of doing a bunch of network requests, we can do a single one. +const GHDataLoader = new DataLoader( + async (requests: readonly RequestData[]) => { + if (!process.env.GH_TOKEN) { + throw new Error( + 'Please create a GitHub personal access token at https://github.com/settings/tokens/new with `read:user` and `repo:status` permissions and add it as the GH_TOKEN environment variable' + ); + } + const repos: ReposWithCommitsAndPRsToFetch = {}; + requests.forEach(({ repo, ...data }) => { + if (repos[repo] === undefined) { + repos[repo] = []; + } + repos[repo].push(data); + }); + + const data = await fetch('https://api.github.com/graphql', { + method: 'POST', + headers: { + Authorization: `Token ${process.env.GH_TOKEN}`, + }, + body: JSON.stringify({ query: makeQuery(repos) }), + }).then((x: any) => x.json()); + + if (data.errors) { + throw new Error( + `An error occurred when fetching data from GitHub\n${JSON.stringify(data.errors, null, 2)}` + ); + } + + // this is mainly for the case where there's an authentication problem + if (!data.data) { + throw new Error(`An error occurred when fetching data from GitHub\n${JSON.stringify(data)}`); + } + + const cleanedData: Record<string, { commit: Record<string, any>; pull: Record<string, any> }> = + {}; + Object.keys(repos).forEach((repo, index) => { + const output: { commit: Record<string, any>; pull: Record<string, any> } = { + commit: {}, + pull: {}, + }; + cleanedData[repo] = output; + Object.entries(data.data[`a${index}`]).forEach(([field, value]) => { + // this is "a" because that's how it was when it was first written, "a" means it's a commit not a pr + // we could change it to commit__ but then we have to get new GraphQL results from the GH API to put in the tests + if (field[0] === 'a') { + output.commit[field.substring(1)] = value; + } else { + output.pull[field.replace('pr__', '')] = value; + } + }); + }); + + return requests.map( + ({ repo, ...rest }) => + cleanedData[repo][rest.kind][rest.kind === 'pull' ? rest.pull : rest.commit] + ); + }, + { maxBatchSize: 50 } +); + +export type PullRequestInfo = { + user: string | null; + id: string | null; + title: string | null; + commit: string | null; + pull: number | null; + labels: string[] | null; + links: { + commit: string; + pull: string | null; + user: string | null; + }; +}; + +export async function getPullInfoFromCommit(request: { + commit: string; + repo: string; +}): Promise<PullRequestInfo> { + if (!request.commit) { + throw new Error('Please pass a commit SHA to getInfo'); + } + + if (!request.repo) { + throw new Error('Please pass a GitHub repository in the form of userOrOrg/repoName to getInfo'); + } + + if (!validRepoNameRegex.test(request.repo)) { + throw new Error( + `Please pass a valid GitHub repository in the form of userOrOrg/repoName to getInfo (it has to match the "${validRepoNameRegex.source}" pattern)` + ); + } + + const data = await GHDataLoader.load({ kind: 'commit', ...request }); + if (!data) { + return { + id: null, + user: null, + pull: null, + commit: request.commit, + title: null, + labels: null, + links: { + commit: request.commit, + pull: null, + user: null, + }, + }; + } + let user = null; + if (data.author && data.author.user) { + user = data.author.user; + } + + const associatedPullRequest = + data.associatedPullRequests && + data.associatedPullRequests.nodes && + data.associatedPullRequests.nodes.length + ? (data.associatedPullRequests.nodes as any[]).sort((a, b) => { + if (a.mergedAt === null && b.mergedAt === null) { + return 0; + } + if (a.mergedAt === null) { + return 1; + } + if (b.mergedAt === null) { + return -1; + } + const aDate = new Date(a.mergedAt); + const bDate = new Date(b.mergedAt); + if (aDate > bDate) { + return 1; + } + if (aDate < bDate) { + return -1; + } + return 0; + })[0] + : null; + if (associatedPullRequest) { + user = associatedPullRequest.author; + } + + return { + user: user ? user.login : null, + id: associatedPullRequest ? associatedPullRequest.id : null, + pull: associatedPullRequest ? associatedPullRequest.number : null, + commit: request.commit, + title: associatedPullRequest ? associatedPullRequest.title : null, + labels: associatedPullRequest + ? (associatedPullRequest.labels.nodes || []).map((label: { name: string }) => label.name) + : null, + links: { + commit: `[\`${request.commit}\`](${data.commitUrl})`, + pull: associatedPullRequest + ? `[#${associatedPullRequest.number}](${associatedPullRequest.url})` + : null, + user: user ? `[@${user.login}](${user.url})` : null, + }, + }; +} + +export async function getPullInfoFromPullRequest(request: { + pull: number; + repo: string; +}): Promise<PullRequestInfo> { + if (request.pull === undefined) { + throw new Error('Please pass a pull request number'); + } + + if (!request.repo) { + throw new Error('Please pass a GitHub repository in the form of userOrOrg/repoName to getInfo'); + } + + if (!validRepoNameRegex.test(request.repo)) { + throw new Error( + `Please pass a valid GitHub repository in the form of userOrOrg/repoName to getInfo (it has to match the "${validRepoNameRegex.source}" pattern)` + ); + } + + const data = await GHDataLoader.load({ kind: 'pull', ...request }); + const user = data?.author; + const title = data?.title; + const commit = data?.mergeCommit; + + return { + user: user ? user.login : null, + id: null, + pull: request.pull, + commit: commit ? commit.oid : null, + title: title || null, + labels: data ? (data.labels.nodes || []).map((label: { name: string }) => label.name) : null, + links: { + commit: commit ? `[\`${commit.oid}\`](${commit.commitUrl})` : null, + pull: `[#${request.pull}](https://github.com/${request.repo}/pull/${request.pull})`, + user: user ? `[@${user.login}](${user.url})` : null, + }, + }; +} diff --git a/scripts/release/utils/git-client.ts b/scripts/release/utils/git-client.ts new file mode 100644 index 000000000000..472ce6fbbe35 --- /dev/null +++ b/scripts/release/utils/git-client.ts @@ -0,0 +1,34 @@ +import { simpleGit } from 'simple-git'; + +export const git = simpleGit({ + config: [ + /** + * ensures that prereleases are listed as earlier than stable releases. + * WITHOUT the config, this is the list of tags: + * v7.1.0-rc.2 + * v7.1.0-rc.1 + * v7.1.0-rc.0 + * v7.1.0-beta.3 + * ... + * v7.1.0 + * v7.0.2 + * + * WITH the config, v7.1.0 is correctly on the top: + * v7.1.0 + * v7.1.0-rc.2 + * v7.1.0-rc.1 + * v7.1.0-rc.0 + * v7.1.0-beta.3 + * ... + * v7.0.2 + * + * The top most tag is considered the "latest", which is used as a starting point for looking for changes for upcoming releases + * See https://stackoverflow.com/a/52680984 + */ + 'versionsort.suffix=-', + ], +}); + +export async function getLatestTag() { + return (await git.tags(['v*', '--sort=-v:refname', '--merged'])).latest; +} diff --git a/scripts/release/utils/github-client.ts b/scripts/release/utils/github-client.ts new file mode 100644 index 000000000000..646ba1003986 --- /dev/null +++ b/scripts/release/utils/github-client.ts @@ -0,0 +1,113 @@ +/* eslint-disable no-console */ +import type { GraphQlQueryResponseData } from '@octokit/graphql'; +import { graphql } from '@octokit/graphql'; + +export interface PullRequest { + number: number; + id: string; + branch: string; + title: string; + mergeCommit: string; +} + +export const githubGraphQlClient = graphql.defaults({ + headers: { authorization: `token ${process.env.GH_TOKEN}` }, +}); + +export async function getUnpickedPRs( + baseBranch: string, + verbose?: boolean +): Promise<Array<PullRequest>> { + console.log(`💬 Getting unpicked patch pull requests...`); + const result = await githubGraphQlClient<GraphQlQueryResponseData>( + ` + query ($owner: String!, $repo: String!, $state: PullRequestState!, $order: IssueOrder!) { + repository(owner: $owner, name: $repo) { + pullRequests(states: [$state], labels: ["patch:yes"], orderBy: $order, first: 50, baseRefName: "next") { + nodes { + id + number + title + baseRefName + mergeCommit { + oid + } + labels(first: 20) { + nodes { + name + } + } + } + } + } + } + `, + { + owner: 'storybookjs', + repo: 'storybook', + order: { + field: 'UPDATED_AT', + direction: 'DESC', + }, + state: 'MERGED', + } + ); + + const { + pullRequests: { nodes }, + } = result.repository; + + const prs = nodes.map((node: any) => ({ + number: node.number, + id: node.id, + branch: node.baseRefName, + title: node.title, + mergeCommit: node.mergeCommit.oid, + labels: node.labels.nodes.map((l: any) => l.name), + })); + + const unpickedPRs = prs + .filter((pr: any) => !pr.labels.includes('patch:done')) + .filter((pr: any) => pr.branch === baseBranch) + .reverse(); + + if (verbose) { + console.log(`🔍 Found unpicked patch pull requests: + ${JSON.stringify(unpickedPRs, null, 2)}`); + } + return unpickedPRs; +} + +export async function getLabelIds({ + repo: fullRepo, + labelNames, +}: { + labelNames: string[]; + repo: string; +}) { + const query = labelNames.join('+'); + const [owner, repo] = fullRepo.split('/'); + const result = await githubGraphQlClient<GraphQlQueryResponseData>( + ` + query ($owner: String!, $repo: String!, $q: String!) { + repository(owner: $owner, name: $repo) { + labels(query: $q, first: 10) { + nodes { + id + name + description + } + } + } + } + `, + { owner, repo, q: query } + ); + + const { labels } = result.repository; + const labelToId: Record<string, string> = {}; + labels.nodes.forEach((label: { name: string; id: string }) => { + labelToId[label.name] = label.id; + }); + return labelToId; +} diff --git a/scripts/release/version.ts b/scripts/release/version.ts new file mode 100644 index 000000000000..3b34d288a8c7 --- /dev/null +++ b/scripts/release/version.ts @@ -0,0 +1,302 @@ +/* eslint-disable no-console */ +import { setOutput } from '@actions/core'; +import { readFile, readJson, writeFile, writeJson } from 'fs-extra'; +import chalk from 'chalk'; +import path from 'path'; +import program from 'commander'; +import semver from 'semver'; +import { z } from 'zod'; +import type { Workspace } from '../utils/workspace'; +import { getWorkspaces } from '../utils/workspace'; +import { execaCommand } from '../utils/exec'; + +program + .name('version') + .description('version all packages') + .option( + '-R, --release-type <major|minor|patch|prerelease>', + 'Which release type to use to bump the version' + ) + .option('-P, --pre-id <id>', 'Which prerelease identifer to change to, eg. "alpha", "beta", "rc"') + .option( + '-E, --exact <version>', + 'Use exact version instead of calculating from current version, eg. "7.2.0-canary.123". Can not be combined with --release-type or --pre-id' + ) + .option( + '-D, --deferred', + 'Do not bump versions everywhere, instead set it in code/package.json#deferredNextVersion' + ) + .option('-A, --apply', 'Apply a deferred version bump') + .option('-V, --verbose', 'Enable verbose logging', false); + +const optionsSchema = z + .object({ + releaseType: z + .enum(['major', 'minor', 'patch', 'prerelease', 'premajor', 'preminor', 'prepatch']) + .optional(), + preId: z.string().optional(), + exact: z + .string() + .optional() + .refine((version) => (version ? semver.valid(version) !== null : true), { + message: '--exact version has to be a valid semver string', + }), + deferred: z.boolean().optional(), + apply: z.boolean().optional(), + verbose: z.boolean().optional(), + }) + .superRefine((schema, ctx) => { + // manual union validation because zod + commander is not great in this case + const hasExact = 'exact' in schema && schema.exact; + const hasReleaseType = 'releaseType' in schema && schema.releaseType; + const hasDeferred = 'deferred' in schema && schema.deferred; + const hasApply = 'apply' in schema && schema.apply; + if (hasDeferred && hasApply) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: '--deferred cannot be combined with --apply', + }); + } + if (hasApply && (hasExact || hasReleaseType)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + '--apply cannot be combined with --exact or --release-type, as it will always read from code/package.json#deferredNextVersion', + }); + } + if (!hasApply && ((hasExact && hasReleaseType) || (!hasExact && !hasReleaseType))) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + 'Combining --exact with --release-type is invalid, but having one of them is required', + }); + } + if (schema.preId && !schema.releaseType.startsWith('pre')) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + 'Using prerelease identifier requires one of release types: premajor, preminor, prepatch, prerelease', + }); + } + return z.NEVER; + }); + +type BaseOptions = { verbose: boolean }; +type BumpOptions = BaseOptions & { + releaseType: semver.ReleaseType; + preId?: string; + deferred?: boolean; +}; +type ExactOptions = BaseOptions & { + exact: semver.ReleaseType; + deferred?: boolean; +}; +type ApplyOptions = BaseOptions & { + apply: boolean; +}; +type Options = BumpOptions | ExactOptions | ApplyOptions; + +const CODE_DIR_PATH = path.join(__dirname, '..', '..', 'code'); +const CODE_PACKAGE_JSON_PATH = path.join(CODE_DIR_PATH, 'package.json'); + +const validateOptions = (options: { [key: string]: any }): options is Options => { + optionsSchema.parse(options); + return true; +}; + +const getCurrentVersion = async () => { + console.log(`📐 Reading current version of Storybook...`); + const { version } = await readJson(CODE_PACKAGE_JSON_PATH); + return version; +}; + +const bumpCodeVersion = async (nextVersion: string) => { + console.log(`🤜 Bumping version of ${chalk.cyan('code')}'s package.json...`); + + const codePkgJson = await readJson(CODE_PACKAGE_JSON_PATH); + + codePkgJson.version = nextVersion; + await writeJson(CODE_PACKAGE_JSON_PATH, codePkgJson, { spaces: 2 }); + + console.log(`✅ Bumped version of ${chalk.cyan('code')}'s package.json`); +}; + +const bumpVersionSources = async (currentVersion: string, nextVersion: string) => { + const filesToUpdate = [ + path.join(CODE_DIR_PATH, 'lib', 'manager-api', 'src', 'version.ts'), + path.join(CODE_DIR_PATH, 'lib', 'cli', 'src', 'versions.ts'), + ]; + console.log(`🤜 Bumping versions in...:\n ${chalk.cyan(filesToUpdate.join('\n '))}`); + + await Promise.all( + filesToUpdate.map(async (filename) => { + const currentContent = await readFile(filename, { encoding: 'utf-8' }); + const nextContent = currentContent.replaceAll(currentVersion, nextVersion); + return writeFile(filename, nextContent); + }) + ); + + console.log(`✅ Bumped versions in:\n ${chalk.cyan(filesToUpdate.join('\n '))}`); +}; + +const bumpAllPackageJsons = async ({ + packages, + nextVersion, + verbose, +}: { + packages: Workspace[]; + nextVersion: string; + verbose?: boolean; +}) => { + console.log( + `🤜 Bumping versions and dependencies in ${chalk.cyan( + `all ${packages.length} package.json` + )}'s...` + ); + // 1. go through all packages in the monorepo + await Promise.all( + packages.map(async (pkg) => { + // 2. get the package.json + const packageJsonPath = path.join(CODE_DIR_PATH, pkg.location, 'package.json'); + const packageJson: { + version: string; + [key: string]: any; + } = await readJson(packageJsonPath); + // 3. bump the version + packageJson.version = nextVersion; + if (verbose) { + console.log( + ` Bumping ${chalk.blue(pkg.name)}'s version to ${chalk.yellow(nextVersion)}` + ); + } + await writeJson(packageJsonPath, packageJson, { spaces: 2 }); + }) + ); +}; + +const bumpDeferred = async (nextVersion: string) => { + console.log( + `⏳ Setting a ${chalk.cyan('deferred')} version bump with ${chalk.blue( + 'code/package.json#deferredNextVersion' + )} = ${chalk.yellow(nextVersion)}...` + ); + const codePkgJson = await readJson(CODE_PACKAGE_JSON_PATH); + + if (codePkgJson.deferredNextVersion) { + console.warn( + `❗ A "deferredNextVersion" property already exists with the value of ${chalk.cyan( + codePkgJson.deferredNextVersion + )}. This will be overwritten and ignored.` + ); + } + + codePkgJson.deferredNextVersion = nextVersion; + await writeJson(CODE_PACKAGE_JSON_PATH, codePkgJson, { spaces: 2 }); + + console.log(`✅ Set a ${chalk.cyan('deferred')} version bump. Not bumping any packages.`); +}; + +const applyDeferredVersionBump = async () => { + console.log( + `⏩ Applying previously deferred version bump set at ${chalk.blue( + 'code/package.json#deferredNextVersion' + )}...` + ); + const codePkgJson = await readJson(CODE_PACKAGE_JSON_PATH); + + const { deferredNextVersion } = codePkgJson; + + if (!deferredNextVersion) { + throw new Error( + "The 'deferredNextVersion' property in code/package.json is unset. This is necessary to apply a deferred version bump" + ); + } + + delete codePkgJson.deferredNextVersion; + await writeJson(CODE_PACKAGE_JSON_PATH, codePkgJson, { spaces: 2 }); + + console.log( + `✅ Extracted and removed deferred version ${chalk.green( + deferredNextVersion + )} from ${chalk.blue('code/package.json#deferredNextVersion')}` + ); + + return deferredNextVersion; +}; + +export const run = async (options: unknown) => { + if (!validateOptions(options)) { + return; + } + const { verbose } = options; + + console.log(`🚛 Finding Storybook packages...`); + + const [packages, currentVersion] = await Promise.all([getWorkspaces(), getCurrentVersion()]); + + console.log( + `📦 found ${packages.length} storybook packages at version ${chalk.red(currentVersion)}` + ); + if (verbose) { + const formattedPackages = packages.map( + (pkg) => `${chalk.green(pkg.name.padEnd(60))}: ${chalk.cyan(pkg.location)}` + ); + console.log(`📦 Packages: + ${formattedPackages.join('\n ')}`); + } + + let nextVersion: string; + + if ('apply' in options && options.apply) { + nextVersion = await applyDeferredVersionBump(); + } else if ('exact' in options && options.exact) { + console.log(`📈 Exact version selected: ${chalk.green(options.exact)}`); + nextVersion = options.exact; + } else { + const { releaseType, preId } = options as BumpOptions; + console.log(`📈 Release type selected: ${chalk.green(releaseType)}`); + if (preId) { + console.log(`🆔 Version prerelease identifier selected: ${chalk.yellow(preId)}`); + } + + nextVersion = semver.inc(currentVersion, releaseType, preId); + + console.log( + `⏭ Bumping version ${chalk.blue(currentVersion)} with release type ${chalk.green( + releaseType + )}${ + preId ? ` and ${chalk.yellow(preId)}` : '' + } results in version: ${chalk.bgGreenBright.bold(nextVersion)}` + ); + } + + if ('deferred' in options && options.deferred) { + await bumpDeferred(nextVersion); + } else { + console.log(`⏭ Bumping all packages to ${chalk.blue(nextVersion)}...`); + + await bumpCodeVersion(nextVersion); + await bumpVersionSources(currentVersion, nextVersion); + await bumpAllPackageJsons({ packages, nextVersion, verbose }); + + console.log(`⬆️ Updating lock file with ${chalk.blue('yarn install --mode=update-lockfile')}`); + await execaCommand(`yarn install --mode=update-lockfile`, { + cwd: path.join(CODE_DIR_PATH), + stdio: verbose ? 'inherit' : undefined, + }); + console.log(`✅ Updated lock file with ${chalk.blue('yarn install --mode=update-lockfile')}`); + } + + if (process.env.GITHUB_ACTIONS === 'true') { + setOutput('current-version', currentVersion); + setOutput('next-version', nextVersion); + } +}; + +if (require.main === module) { + const options = program.parse().opts(); + run(options).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/release/write-changelog.ts b/scripts/release/write-changelog.ts new file mode 100644 index 000000000000..e97a7acc70d1 --- /dev/null +++ b/scripts/release/write-changelog.ts @@ -0,0 +1,141 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import path from 'path'; +import program from 'commander'; +import semver from 'semver'; +import { z } from 'zod'; +import { readFile, writeFile, writeJson } from 'fs-extra'; +import { getChanges } from './utils/get-changes'; + +program + .name('write-changelog') + .description( + 'write changelog based on merged PRs and commits. the <version> argument describes the changelog entry heading, but NOT which commits/PRs to include, must be a semver string' + ) + .arguments('<version>') + .option('-P, --unpicked-patches', 'Set to only consider PRs labeled with "patch:yes" label') + .option( + '-F, --from <tag>', + 'Which tag or commit to generate changelog from, eg. "7.0.7". Leave unspecified to select latest released tag in git history' + ) + .option( + '-T, --to <tag>', + 'Which tag or commit to generate changelog to, eg. "7.1.0-beta.8". Leave unspecified to select HEAD commit' + ) + .option('-D, --dry-run', 'Do not write file, only output to shell', false) + .option('-V, --verbose', 'Enable verbose logging', false); + +const optionsSchema = z.object({ + unpickedPatches: z.boolean().optional(), + from: z.string().optional(), + to: z.string().optional(), + verbose: z.boolean().optional(), + dryRun: z.boolean().optional(), +}); + +type Options = { + unpickedPatches?: boolean; + from?: string; + to?: string; + verbose: boolean; + dryRun?: boolean; +}; + +const validateOptions = (args: unknown[], options: { [key: string]: any }): options is Options => { + optionsSchema.parse(options); + if (args.length !== 1 || !semver.valid(args[0] as string)) { + console.error( + `🚨 Invalid arguments, expected a single argument with the version to generate changelog for, eg. ${chalk.green( + '7.1.0-beta.8' + )}` + ); + return false; + } + return true; +}; + +const writeToChangelogFile = async ({ + changelogText, + version, + verbose, +}: { + changelogText: string; + version: string; + verbose?: boolean; +}) => { + const isPrerelease = semver.prerelease(version) !== null; + const changelogFilename = isPrerelease ? 'CHANGELOG.prerelease.md' : 'CHANGELOG.md'; + const changelogPath = path.join(__dirname, '..', '..', changelogFilename); + + if (verbose) { + console.log(`📝 Writing changelog to ${chalk.blue(changelogPath)}`); + } + + const currentChangelog = await readFile(changelogPath, 'utf-8'); + const nextChangelog = [changelogText, currentChangelog].join('\n\n'); + + await writeFile(changelogPath, nextChangelog); +}; + +const writeToDocsVersionFile = async ({ + changelogText, + version, + verbose, +}: { + changelogText: string; + version: string; + verbose?: boolean; +}) => { + const isPrerelease = semver.prerelease(version) !== null; + const filename = isPrerelease ? 'next.json' : 'latest.json'; + const filepath = path.join(__dirname, '..', '..', 'docs', 'versions', filename); + + if (verbose) { + console.log(`📝 Writing changelog to ${chalk.blue(path)}`); + } + + const textWithoutHeading = changelogText.split('\n').slice(2).join('\n'); + + const content = { + version, + info: { + plain: textWithoutHeading, + }, + }; + + await writeJson(filepath, content); +}; + +export const run = async (args: unknown[], options: unknown) => { + if (!validateOptions(args, options)) { + return; + } + const { from, to, unpickedPatches, dryRun, verbose } = options; + const version = args[0] as string; + + console.log( + `💬 Generating changelog for ${chalk.blue(version)} between ${chalk.green( + from || 'latest' + )} and ${chalk.green(to || 'HEAD')}` + ); + + const { changelogText } = await getChanges({ version, from, to, unpickedPatches, verbose }); + + if (dryRun) { + console.log(`📝 Dry run, not writing file`); + return; + } + + await writeToChangelogFile({ changelogText, version, verbose }); + await writeToDocsVersionFile({ changelogText, version, verbose }); + + console.log(`✅ Wrote Changelog to file`); +}; + +if (require.main === module) { + const parsed = program.parse(); + run(parsed.args, parsed.opts()).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/scripts/run-registry.ts b/scripts/run-registry.ts index fd55b720496e..6735e9811a0b 100755 --- a/scripts/run-registry.ts +++ b/scripts/run-registry.ts @@ -7,6 +7,8 @@ import program from 'commander'; import { runServer, parseConfigFile } from 'verdaccio'; import pLimit from 'p-limit'; import type { Server } from 'http'; +import { mkdir } from 'fs/promises'; +import { PACKS_DIRECTORY } from './utils/constants'; // @ts-expect-error (Converted from ts-ignore) import { maxConcurrentTasks } from './utils/concurrency'; import { listOfPackages } from './utils/list-packages'; @@ -53,12 +55,27 @@ const currentVersion = async () => { return version; }; -const publish = (packages: { name: string; location: string }[], url: string) => { +const publish = async (packages: { name: string; location: string }[], url: string) => { logger.log(`Publishing packages with a concurrency of ${maxConcurrentTasks}`); const limit = pLimit(maxConcurrentTasks); let i = 0; + /** + * We need to "pack" our packages before publishing to npm because our package.json files contain yarn specific version "ranges". + * such as "workspace:*" + * + * We can't publish to npm if the package.json contains these ranges. So with `yarn pack` we create a tarball that we can publish. + * + * However this bug exists in NPM: https://github.com/npm/cli/issues/4533! + * Which causes the NPM CLI to disregard the tarball CLI argument and instead re-create a tarball. + * But NPM doesn't replace the yarn version ranges. + * + * So we create the tarball ourselves and move it to another location on the FS. + * Then we change-directory to that directory and publish the tarball from there. + */ + await mkdir(PACKS_DIRECTORY, { recursive: true }).catch(() => {}); + return Promise.all( packages.map(({ name, location }) => limit( @@ -70,7 +87,9 @@ const publish = (packages: { name: string; location: string }[], url: string) => '.' )})` ); - const command = `cd ${location} && npm publish --registry ${url} --force --access restricted --ignore-scripts`; + + const tarballFilename = `${name.replace('@', '').replace('/', '-')}.tgz`; + const command = `cd ${location} && yarn pack --out=${PACKS_DIRECTORY}/${tarballFilename} && cd ${PACKS_DIRECTORY} && npm publish ./${tarballFilename} --registry ${url} --force --access restricted --ignore-scripts`; exec(command, (e) => { if (e) { rej(e); diff --git a/scripts/sandbox/utils/git.ts b/scripts/sandbox/utils/git.ts index e4261083c9a5..84fe02f25cdb 100644 --- a/scripts/sandbox/utils/git.ts +++ b/scripts/sandbox/utils/git.ts @@ -1,4 +1,6 @@ import fetch from 'node-fetch'; +import invariant from 'tiny-invariant'; + import { execaCommand } from '../../utils/exec'; // eslint-disable-next-line import/no-cycle import { logger } from '../publish'; @@ -27,9 +29,9 @@ const getTheLastCommitHashThatUpdatedTheSandboxRepo = async (branch: string) => `Could not find the last commit hash in the following commit message: "${latestCommitMessage}".\nDid someone manually push to the sandboxes repo?` ); } - return lastCommitHash; } catch (error) { + invariant(error instanceof Error); if (!error.message.includes('Did someone manually push to the sandboxes repo')) { logger.error( `⚠️ Error getting latest commit message of ${owner}/${repo} on branch ${branch}: ${error.message}` @@ -84,6 +86,7 @@ export async function commitAllToGit({ cwd, branch }: { cwd: string; branch: str ].join('\n'); gitCommitCommand = `git commit -m "${commitTitle}" -m "${commitBody}"`; } catch (err) { + invariant(err instanceof Error); logger.log( `⚠️ Falling back to a simpler commit message because of an error while trying to get the previous commit hash: ${err.message}` ); @@ -95,6 +98,7 @@ export async function commitAllToGit({ cwd, branch }: { cwd: string; branch: str cwd, }); } catch (e) { + invariant(e instanceof Error); if (e.message.includes('nothing to commit')) { logger.log( `🤷 Git found no changes between previous versions so there is nothing to commit. Skipping publish!` diff --git a/scripts/sandbox/utils/template.ts b/scripts/sandbox/utils/template.ts index 4cc3723827f0..10fdef474eb1 100644 --- a/scripts/sandbox/utils/template.ts +++ b/scripts/sandbox/utils/template.ts @@ -33,20 +33,17 @@ export async function getTemplatesData(branch: string) { > >; - const templatesData = Object.keys(sandboxTemplates).reduce<TemplatesData>( - (acc, curr: keyof typeof sandboxTemplates) => { - const [dirName, templateName] = curr.split('/'); - const groupName = - dirName === 'cra' ? 'CRA' : dirName.slice(0, 1).toUpperCase() + dirName.slice(1); - const generatorData = sandboxTemplates[curr]; - acc[groupName] = acc[groupName] || {}; - acc[groupName][templateName] = { - ...generatorData, - stackblitzUrl: getStackblitzUrl(curr, branch), - }; - return acc; - }, - {} - ); + const templatesData = Object.keys(sandboxTemplates).reduce<TemplatesData>((acc, curr) => { + const [dirName, templateName] = curr.split('/'); + const groupName = + dirName === 'cra' ? 'CRA' : dirName.slice(0, 1).toUpperCase() + dirName.slice(1); + const generatorData = sandboxTemplates[curr as keyof typeof sandboxTemplates]; + acc[groupName] = acc[groupName] || {}; + acc[groupName][templateName] = { + ...generatorData, + stackblitzUrl: getStackblitzUrl(curr, branch), + }; + return acc; + }, {}); return templatesData; } diff --git a/scripts/task.ts b/scripts/task.ts index 585c65dd84cf..9e18d1f618c2 100644 --- a/scripts/task.ts +++ b/scripts/task.ts @@ -26,6 +26,7 @@ import { testRunnerDev } from './tasks/test-runner-dev'; import { chromatic } from './tasks/chromatic'; import { e2eTestsBuild } from './tasks/e2e-tests-build'; import { e2eTestsDev } from './tasks/e2e-tests-dev'; +import { bench } from './tasks/bench'; import { allTemplates as TEMPLATES, @@ -34,6 +35,7 @@ import { } from '../code/lib/cli/src/sandbox-templates'; import { version } from '../code/package.json'; +import invariant from 'tiny-invariant'; const sandboxDir = process.env.SANDBOX_ROOT || SANDBOX_DIRECTORY; @@ -72,7 +74,7 @@ export type Task = { /** * Is this task already "ready", and potentially not required? */ - ready: (details: TemplateDetails, options: PassedOptionValues) => MaybePromise<boolean>; + ready: (details: TemplateDetails, options?: PassedOptionValues) => MaybePromise<boolean>; /** * Run the task */ @@ -107,6 +109,7 @@ export const tasks = { chromatic, 'e2e-tests': e2eTestsBuild, 'e2e-tests-dev': e2eTestsDev, + bench, }; type TaskKey = keyof typeof tasks; @@ -174,6 +177,11 @@ export const options = createOptions({ description: 'Do not include template stories and their addons', promptType: false, }, + disableDocs: { + type: 'boolean', + description: 'Disable addon-docs from essentials', + promptType: false, + }, }); type PassedOptionValues = Omit<OptionValues<typeof options>, 'task' | 'startFrom' | 'junit'>; @@ -300,12 +308,20 @@ async function runTask(task: Task, details: TemplateDetails, optionValues: Passe const { junitFilename } = details; const startTime = new Date(); try { - const controller = await task.run(details, optionValues); + let updatedOptions = optionValues; + if (details.template?.modifications?.skipTemplateStories) { + updatedOptions = { ...updatedOptions, skipTemplateStories: true }; + } + if (details.template?.modifications?.disableDocs) { + updatedOptions = { ...updatedOptions, disableDocs: true }; + } + const controller = await task.run(details, updatedOptions); if (junitFilename && !task.junit) await writeJunitXml(getTaskKey(task), details.key, startTime); return controller; } catch (err) { + invariant(err instanceof Error); const hasJunitFile = await pathExists(junitFilename); // If there's a non-test related error (junit report has not been reported already), we report the general failure in a junit report if (junitFilename && !hasJunitFile) { @@ -325,6 +341,9 @@ async function runTask(task: Task, details: TemplateDetails, optionValues: Passe const controllers: AbortController[] = []; async function run() { + // useful for other scripts to know whether they're running in the creation of a sandbox in the monorepo + process.env.IN_STORYBOOK_SANDBOX = 'true'; + const allOptionValues = await getOptionsOrPrompt('yarn task', options); const { task: taskKey, startFrom, junit, ...optionValues } = allOptionValues; @@ -449,6 +468,7 @@ async function run() { }); if (controller) controllers.push(controller); } catch (err) { + invariant(err instanceof Error); logger.error(`Error running task ${getTaskKey(task)}:`); // If it is the last task, we don't need to log the full trace if (task === finalTask) { diff --git a/scripts/tasks/bench.ts b/scripts/tasks/bench.ts new file mode 100644 index 000000000000..25325e1090e0 --- /dev/null +++ b/scripts/tasks/bench.ts @@ -0,0 +1,79 @@ +import type { Task } from '../task'; + +import { PORT as devPort, dev } from './dev'; +import { PORT as servePort, serve } from './serve'; + +// eslint-disable-next-line @typescript-eslint/no-implied-eval +const dynamicImport = new Function('specifier', 'return import(specifier)'); + +export const bench: Task = { + description: 'Run benchmarks against a sandbox in dev mode', + dependsOn: ['build'], + async ready() { + return false; + }, + + async run(details, options) { + const controllers: AbortController[] = []; + try { + const { disableDocs } = options; + const { browse } = await import('../bench/browse'); + const { saveBench, loadBench } = await import('../bench/utils'); + const { default: prettyBytes } = await dynamicImport('pretty-bytes'); + const { default: prettyTime } = await dynamicImport('pretty-ms'); + + const devController = await dev.run(details, { ...options, debug: false }); + if (!devController) { + throw new Error('dev: controller is null'); + } + controllers.push(devController); + const devBrowseResult = await browse(`http://localhost:${devPort}`, { disableDocs }); + devController.abort(); + + const serveController = await serve.run(details, { ...options, debug: false }); + if (!serveController) { + throw new Error('serve: controller is null'); + } + controllers.push(serveController); + const buildBrowseResult = await browse(`http://localhost:${servePort}`, { disableDocs }); + serveController.abort(); + + await saveBench( + 'browse', + { + devManagerHeaderVisible: devBrowseResult.managerHeaderVisible, + devManagerIndexVisible: devBrowseResult.managerIndexVisible, + devStoryVisible: devBrowseResult.storyVisible, + devStoryVisibleUncached: devBrowseResult.storyVisibleUncached, + devAutodocsVisible: devBrowseResult.autodocsVisible, + devMDXVisible: devBrowseResult.mdxVisible, + + buildManagerHeaderVisible: buildBrowseResult.managerHeaderVisible, + buildManagerIndexVisible: buildBrowseResult.managerIndexVisible, + buildStoryVisible: buildBrowseResult.storyVisible, + buildAutodocsVisible: buildBrowseResult.autodocsVisible, + buildMDXVisible: buildBrowseResult.mdxVisible, + }, + { + rootDir: details.sandboxDir, + } + ); + + const data = await loadBench({ rootDir: details.sandboxDir }); + Object.entries(data).forEach(([key, value]) => { + if (typeof value !== 'number') { + return; + } + + if (key.includes('Size')) { + console.log(`${key}: ${prettyBytes(value)}`); + } else { + console.log(`${key}: ${prettyTime(value)}`); + } + }); + } catch (e) { + controllers.forEach((c) => c.abort()); + throw e; + } + }, +}; diff --git a/scripts/tasks/build.ts b/scripts/tasks/build.ts index 8f6acedc2322..38aadb15fda6 100644 --- a/scripts/tasks/build.ts +++ b/scripts/tasks/build.ts @@ -1,6 +1,10 @@ import { pathExists } from 'fs-extra'; +import dirSize from 'fast-folder-size'; +import { promisify } from 'util'; +import { join } from 'path'; import type { Task } from '../task'; import { exec } from '../utils/exec'; +import { now, saveBench } from '../bench/utils'; export const build: Task = { description: 'Build the static version of the sandbox', @@ -9,6 +13,38 @@ export const build: Task = { return pathExists(builtSandboxDir); }, async run({ sandboxDir }, { dryRun, debug }) { - return exec(`yarn build-storybook --quiet`, { cwd: sandboxDir }, { dryRun, debug }); + const start = now(); + + await exec(`yarn build-storybook --quiet`, { cwd: sandboxDir }, { dryRun, debug }); + + const buildTime = now() - start; + const dir = join(sandboxDir, 'storybook-static'); + const getSize = promisify(dirSize); + const buildSize = await getSize(dir); + const buildSbAddonsSize = await getSize(join(dir, 'sb-addons')); + const buildSbCommonSize = await getSize(join(dir, 'sb-common-assets')); + const buildSbManagerSize = await getSize(join(dir, 'sb-manager')); + const buildSbPreviewSize = await getSize(join(dir, 'sb-preview')); + const buildPrebuildSize = + buildSbAddonsSize + buildSbCommonSize + buildSbManagerSize + buildSbPreviewSize; + + const buildStaticSize = await getSize(join(dir, 'static')).catch(() => 0); + const buildPreviewSize = buildSize - buildPrebuildSize - buildStaticSize; + + await saveBench( + 'build', + { + buildTime, + buildSize, + buildSbAddonsSize, + buildSbCommonSize, + buildSbManagerSize, + buildSbPreviewSize, + buildStaticSize, + buildPrebuildSize, + buildPreviewSize, + }, + { rootDir: sandboxDir } + ); }, }; diff --git a/scripts/tasks/check.ts b/scripts/tasks/check.ts index 2c7fa33a7c79..8514d453dde4 100644 --- a/scripts/tasks/check.ts +++ b/scripts/tasks/check.ts @@ -4,7 +4,8 @@ import { maxConcurrentTasks } from '../utils/maxConcurrentTasks'; const parallel = process.env.CI ? 8 : maxConcurrentTasks; -const command = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer`; +const linkCommand = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer,@storybook/vue,@storybook/svelte,@storybook/vue3,@storybook/angular`; +const nolinkCommand = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer`; export const check: Task = { description: 'Typecheck the source code of the monorepo', @@ -13,9 +14,8 @@ export const check: Task = { return false; }, async run({ codeDir }, { dryRun, debug, link }) { - if (link) throw new Error('Cannot check when linked, please run with `--no-link`'); return exec( - command, + link ? linkCommand : nolinkCommand, { cwd: codeDir }, { startMessage: '🥾 Checking types validity', diff --git a/scripts/tasks/dev.ts b/scripts/tasks/dev.ts index a216cc53d923..92e885f52078 100644 --- a/scripts/tasks/dev.ts +++ b/scripts/tasks/dev.ts @@ -2,6 +2,7 @@ import detectFreePort from 'detect-port'; import type { Task } from '../task'; import { exec } from '../utils/exec'; +import { now, saveBench } from '../bench/utils'; export const PORT = process.env.STORYBOOK_SERVE_PORT ? parseInt(process.env.STORYBOOK_SERVE_PORT, 10) @@ -14,9 +15,11 @@ export const dev: Task = { async ready() { return (await detectFreePort(PORT)) !== PORT; }, - async run({ sandboxDir, codeDir, selectedTask }, { dryRun, debug }) { + async run({ sandboxDir, selectedTask }, { dryRun, debug }) { const controller = new AbortController(); const devCommand = `yarn storybook --port ${PORT}${selectedTask === 'dev' ? '' : ' --ci'}`; + const { default: waitOn } = await import('wait-on'); + const start = now(); exec( devCommand, @@ -24,12 +27,26 @@ export const dev: Task = { { dryRun, debug, signal: controller.signal as AbortSignal } ).catch((err) => { // If aborted, we want to make sure the rejection is handled. - if (!err.killed) throw err; + if (!err.killed) { + throw err; + } }); - await exec( - `yarn wait-on http://localhost:${PORT}/iframe.html`, - { cwd: codeDir }, - { dryRun, debug } + const [devPreviewResponsive, devManagerResponsive] = await Promise.all([ + waitOn({ resources: [`http://localhost:${PORT}/iframe.html`], interval: 16 }).then(() => { + return now() - start; + }), + waitOn({ resources: [`http://localhost:${PORT}/index.html`], interval: 16 }).then(() => { + return now() - start; + }), + ]); + + await saveBench( + 'dev', + { + devPreviewResponsive, + devManagerResponsive, + }, + { rootDir: sandboxDir } ); return controller; diff --git a/scripts/tasks/install.ts b/scripts/tasks/install.ts index e98be69d65ff..653eda568381 100644 --- a/scripts/tasks/install.ts +++ b/scripts/tasks/install.ts @@ -1,15 +1,15 @@ import { pathExists, remove } from 'fs-extra'; import { join } from 'path'; import type { Task } from '../task'; -import { exec } from '../utils/exec'; export const install: Task = { description: 'Install the dependencies of the monorepo', async ready({ codeDir }) { return pathExists(join(codeDir, 'node_modules')); }, - async run({ codeDir }, { dryRun, debug }) { - await exec(`yarn install`, { cwd: codeDir }, { dryRun, debug }); + async run({ codeDir }) { + // eslint-disable-next-line global-require + await require('../utils/cli-utils').checkDependencies(); // these are webpack4 types, we we should never use await remove(join(codeDir, 'node_modules', '@types', 'webpack')); diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index e32ce51214b8..f0aaa39d825d 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -24,6 +24,7 @@ import { } from '../utils/yarn'; import { exec } from '../utils/exec'; import type { ConfigFile } from '../../code/lib/csf-tools'; +import storybookPackages from '../../code/lib/cli/src/versions'; import { writeConfig } from '../../code/lib/csf-tools'; import { filterExistsInCodeDir } from '../utils/filterExistsInCodeDir'; import { findFirstPath } from '../utils/paths'; @@ -71,10 +72,7 @@ export const create: Task['run'] = async ({ key, template, sandboxDir }, { dryRu } }; -export const install: Task['run'] = async ( - { sandboxDir, template }, - { link, dryRun, debug, addon: addons, skipTemplateStories } -) => { +export const install: Task['run'] = async ({ sandboxDir }, { link, dryRun, debug }) => { const cwd = sandboxDir; await installYarn2({ cwd, dryRun, debug }); @@ -105,10 +103,20 @@ export const install: Task['run'] = async ( } ); } +}; + +export const init: Task['run'] = async ( + { sandboxDir, template }, + { dryRun, debug, addon: addons, skipTemplateStories } +) => { + const cwd = sandboxDir; let extra = {}; - if (template.expected.renderer === '@storybook/html') extra = { type: 'html' }; - else if (template.expected.renderer === '@storybook/server') extra = { type: 'server' }; + if (template.expected.renderer === '@storybook/html') { + extra = { type: 'html' }; + } else if (template.expected.renderer === '@storybook/server') { + extra = { type: 'server' }; + } await executeCLIStep(steps.init, { cwd, @@ -266,21 +274,22 @@ function updateStoriesField(mainConfig: ConfigFile, isJs: boolean) { // If the project is a JS project, let's make sure any linked in TS stories from the // renderer inside src|stories are simply ignored. + // TODO: We should definitely improve the logic here, as it will break every time the stories field change format in the generated sandboxes. const updatedStories = isJs - ? stories.map((specifier) => specifier.replace('js|jsx|ts|tsx', 'js|jsx')) + ? stories.map((specifier) => specifier.replace('|ts|tsx', '')) : stories; mainConfig.setFieldValue(['stories'], [...updatedStories]); } // Add a stories field entry for the passed symlink -function addStoriesEntry(mainConfig: ConfigFile, path: string) { +function addStoriesEntry(mainConfig: ConfigFile, path: string, disableDocs: boolean) { const stories = mainConfig.getFieldValue(['stories']) as string[]; const entry = { directory: slash(join('../template-stories', path)), titlePrefix: slash(path), - files: '**/*.@(mdx|stories.@(js|jsx|ts|tsx))', + files: disableDocs ? '**/*.stories.@(js|jsx|ts|tsx)' : '**/*.@(mdx|stories.@(js|jsx|ts|tsx))', }; mainConfig.setFieldValue(['stories'], [...stories, entry]); @@ -293,14 +302,19 @@ function getStoriesFolderWithVariant(variant?: string, folder = 'stories') { // packageDir is eg 'renderers/react', 'addons/actions' async function linkPackageStories( packageDir: string, - { mainConfig, cwd, linkInDir }: { mainConfig: ConfigFile; cwd: string; linkInDir?: string }, + { + mainConfig, + cwd, + linkInDir, + disableDocs, + }: { mainConfig: ConfigFile; cwd: string; linkInDir?: string; disableDocs: boolean }, variant?: string ) { const storiesFolderName = variant ? getStoriesFolderWithVariant(variant) : 'stories'; const source = join(CODE_DIRECTORY, packageDir, 'template', storiesFolderName); // By default we link `stories` directories - // e.g '../../../code/lib/store/template/stories' to 'template-stories/lib/store' - // if the directory <code>/lib/store/template/stories exists + // e.g '../../../code/lib/preview-api/template/stories' to 'template-stories/lib/preview-api' + // if the directory <code>/lib/preview-api/template/stories exists // // The files must be linked in the cwd, in order to ensure that any dependencies they // reference are resolved in the cwd. In particular 'react' resolved by MDX files. @@ -311,12 +325,12 @@ async function linkPackageStories( await ensureSymlink(source, target); if (!linkInDir) { - addStoriesEntry(mainConfig, packageDir); + addStoriesEntry(mainConfig, packageDir, disableDocs); } // Add `previewAnnotation` entries of the form - // './template-stories/lib/store/preview.[tj]s' - // if the file <code>/lib/store/template/stories/preview.[jt]s exists + // './template-stories/lib/preview-api/preview.[tj]s' + // if the file <code>/lib/preview-api/template/stories/preview.[jt]s exists await Promise.all( ['js', 'ts'].map(async (ext) => { const previewFile = `preview.${ext}`; @@ -351,9 +365,9 @@ async function addExtraDependencies({ }) { // web-components doesn't install '@storybook/testing-library' by default const extraDeps = [ - '@storybook/jest@future', - '@storybook/testing-library@future', - '@storybook/test-runner@future', + '@storybook/jest@next', + '@storybook/testing-library@next', + '@storybook/test-runner@next', ]; if (debug) logger.log('🎁 Adding extra deps', extraDeps); if (!dryRun) { @@ -364,17 +378,20 @@ async function addExtraDependencies({ export const addStories: Task['run'] = async ( { sandboxDir, template, key }, - { addon: extraAddons, dryRun, debug } + { addon: extraAddons, dryRun, debug, disableDocs } ) => { logger.log('💃 adding stories'); const cwd = sandboxDir; const storiesPath = await findFirstPath([join('src', 'stories'), 'stories'], { cwd }); const mainConfig = await readMainConfig({ cwd }); + const packageManager = JsPackageManagerFactory.getPackageManager({}, sandboxDir); // Ensure that we match the right stories in the stories directory - const packageJson = await import(join(cwd, 'package.json')); - updateStoriesField(mainConfig, detectLanguage(packageJson) === SupportedLanguage.JAVASCRIPT); + updateStoriesField( + mainConfig, + (await detectLanguage(packageManager)) === SupportedLanguage.JAVASCRIPT + ); const isCoreRenderer = template.expected.renderer.startsWith('@storybook/') && @@ -384,7 +401,7 @@ export const addStories: Task['run'] = async ( const storiesVariantFolder = getStoriesFolderWithVariant(sandboxSpecificStoriesFolder); if (isCoreRenderer) { - // Link in the template/components/index.js from store, the renderer and the addons + // Link in the template/components/index.js from preview-api, the renderer and the addons const rendererPath = await workspacePath('renderer', template.expected.renderer); await ensureSymlink( join(CODE_DIRECTORY, rendererPath, 'template', 'components'), @@ -397,6 +414,7 @@ export const addStories: Task['run'] = async ( mainConfig, cwd, linkInDir: resolve(cwd, storiesPath), + disableDocs, }); if ( @@ -410,6 +428,7 @@ export const addStories: Task['run'] = async ( mainConfig, cwd, linkInDir: resolve(cwd, storiesPath), + disableDocs, }, sandboxSpecificStoriesFolder ); @@ -427,11 +446,10 @@ export const addStories: Task['run'] = async ( mainConfig, cwd, linkInDir: resolve(cwd, storiesPath), + disableDocs, }); } - console.log({ sandboxSpecificStoriesFolder, storiesVariantFolder }); - if ( await pathExists( resolve(CODE_DIRECTORY, frameworkPath, join('template', storiesVariantFolder)) @@ -443,6 +461,7 @@ export const addStories: Task['run'] = async ( mainConfig, cwd, linkInDir: resolve(cwd, storiesPath), + disableDocs, }, sandboxSpecificStoriesFolder ); @@ -450,11 +469,12 @@ export const addStories: Task['run'] = async ( } if (isCoreRenderer) { - // Add stories for lib/store (and addons below). NOTE: these stories will be in the + // Add stories for lib/preview-api (and addons below). NOTE: these stories will be in the // template-stories folder and *not* processed by the framework build config (instead by esbuild-loader) - await linkPackageStories(await workspacePath('core package', '@storybook/store'), { + await linkPackageStories(await workspacePath('core package', '@storybook/preview-api'), { mainConfig, cwd, + disableDocs, }); } @@ -465,7 +485,10 @@ export const addStories: Task['run'] = async ( if (!match) return acc; const suffix = match[1]; if (suffix === 'essentials') { - return [...acc, ...essentialsAddons]; + const essentials = disableDocs + ? essentialsAddons.filter((a) => a !== 'docs') + : essentialsAddons; + return [...acc, ...essentials]; } return [...acc, suffix]; }, @@ -473,15 +496,18 @@ export const addStories: Task['run'] = async ( ); const addonDirs = await Promise.all( - [...mainAddons, ...extraAddons].map(async (addon) => - workspacePath('addon', `@storybook/addon-${addon}`) - ) + [...mainAddons, ...extraAddons] + // only include addons that are in the monorepo + .filter((addon: string) => + Object.keys(storybookPackages).find((pkg: string) => pkg === `@storybook/addon-${addon}`) + ) + .map(async (addon) => workspacePath('addon', `@storybook/addon-${addon}`)) ); if (isCoreRenderer) { const existingStories = await filterExistsInCodeDir(addonDirs, join('template', 'stories')); for (const packageDir of existingStories) { - await linkPackageStories(packageDir, { mainConfig, cwd }); + await linkPackageStories(packageDir, { mainConfig, cwd, disableDocs }); } // Add some extra settings (see above for what these do) @@ -496,7 +522,7 @@ export const addStories: Task['run'] = async ( await writeConfig(mainConfig); }; -export const extendMain: Task['run'] = async ({ template, sandboxDir }) => { +export const extendMain: Task['run'] = async ({ template, sandboxDir }, { disableDocs }) => { logger.log('📝 Extending main.js'); const mainConfig = await readMainConfig({ cwd: sandboxDir }); const templateConfig = template.modifications?.mainConfig || {}; @@ -505,10 +531,32 @@ export const extendMain: Task['run'] = async ({ template, sandboxDir }) => { features: { ...templateConfig.features, }, + core: { + ...templateConfig.core, + // We don't want to show the "What's new" notifications in the sandbox as it can affect E2E tests + disableWhatsNewNotifications: true, + }, }; Object.entries(configToAdd).forEach(([field, value]) => mainConfig.setFieldValue([field], value)); + // Simulate Storybook Lite + if (disableDocs) { + const addons = mainConfig.getFieldValue(['addons']); + const addonsNoDocs = addons.map((addon: any) => + addon !== '@storybook/addon-essentials' ? addon : { name: addon, options: { docs: false } } + ); + mainConfig.setFieldValue(['addons'], addonsNoDocs); + + // remove the docs options so that docs tags are ignored + mainConfig.setFieldValue(['docs'], {}); + mainConfig.setFieldValue(['typescript'], { reactDocgen: false }); + + let updatedStories = mainConfig.getFieldValue(['stories']) as string[]; + updatedStories = updatedStories.filter((specifier) => !specifier.endsWith('.mdx')); + mainConfig.setFieldValue(['stories'], updatedStories); + } + if (template.expected.builder === '@storybook/builder-vite') setSandboxViteFinal(mainConfig); await writeConfig(mainConfig); }; diff --git a/scripts/tasks/sandbox.ts b/scripts/tasks/sandbox.ts index 6607f13de396..24b946049631 100644 --- a/scripts/tasks/sandbox.ts +++ b/scripts/tasks/sandbox.ts @@ -1,6 +1,10 @@ import { pathExists, remove } from 'fs-extra'; +import { join } from 'path'; +import { promisify } from 'util'; +import dirSize from 'fast-folder-size'; import type { Task } from '../task'; +import { now, saveBench } from '../bench/utils'; const logger = console; @@ -11,7 +15,10 @@ export const sandbox: Task = { return ['run-registry', 'generate']; } - if (link) return ['compile']; + if (link) { + return ['compile']; + } + return ['run-registry']; }, async ready({ sandboxDir }) { @@ -29,13 +36,44 @@ export const sandbox: Task = { logger.info('🗑 Removing old sandbox dir'); await remove(details.sandboxDir); } - const { create, install, addStories, extendMain } = await import('./sandbox-parts'); + + const { create, install, addStories, extendMain, init } = await import('./sandbox-parts'); + + let startTime = now(); await create(details, options); + const createTime = now() - startTime; + const createSize = 0; + + startTime = now(); await install(details, options); + const generateTime = now() - startTime; + const generateSize = await promisify(dirSize)(join(details.sandboxDir, 'node_modules')); + + startTime = now(); + await init(details, options); + const initTime = now() - startTime; + const initSize = await promisify(dirSize)(join(details.sandboxDir, 'node_modules')); + + await saveBench( + 'sandbox', + { + createTime, + generateTime, + initTime, + createSize, + generateSize, + initSize, + diffSize: initSize - generateSize, + }, + { rootDir: details.sandboxDir } + ); + if (!options.skipTemplateStories) { await addStories(details, options); } + await extendMain(details, options); + logger.info(`✅ Storybook sandbox created at ${details.sandboxDir}`); }, }; diff --git a/scripts/tasks/serve.ts b/scripts/tasks/serve.ts index e191f8a39d7b..f5e637f33bb9 100644 --- a/scripts/tasks/serve.ts +++ b/scripts/tasks/serve.ts @@ -6,6 +6,7 @@ import { exec } from '../utils/exec'; export const PORT = process.env.STORYBOOK_SERVE_PORT ? parseInt(process.env.STORYBOOK_SERVE_PORT, 10) : 8001; + export const serve: Task = { description: 'Serve the build storybook for a sandbox', service: true, @@ -16,14 +17,17 @@ export const serve: Task = { async run({ builtSandboxDir, codeDir }, { debug, dryRun }) { const controller = new AbortController(); exec( - `yarn http-server ${builtSandboxDir} --port ${PORT}`, + `yarn http-server ${builtSandboxDir} --port ${PORT} -s`, { cwd: codeDir }, { dryRun, debug, signal: controller.signal as AbortSignal } ).catch((err) => { // If aborted, we want to make sure the rejection is handled. - if (!err.killed) throw err; + if (!err.killed) { + throw err; + } }); - await exec(`yarn wait-on http://localhost:${PORT}`, { cwd: codeDir }, { dryRun, debug }); + const { default: waitOn } = await import('wait-on'); + await waitOn({ resources: [`http://localhost:${PORT}`], interval: 16 }); return controller; }, diff --git a/scripts/tasks/test-runner-build.ts b/scripts/tasks/test-runner-build.ts index e25b2fa54906..b57d4c803233 100644 --- a/scripts/tasks/test-runner-build.ts +++ b/scripts/tasks/test-runner-build.ts @@ -12,7 +12,12 @@ export const testRunnerBuild: Task & { port: number } = { }, async run({ sandboxDir, junitFilename, template }, { dryRun, debug }) { const execOptions = { cwd: sandboxDir }; - const flags = [`--url http://localhost:${this.port}`, '--junit', '--maxWorkers=2']; + const flags = [ + `--url http://localhost:${this.port}`, + '--junit', + '--maxWorkers=2', + '--failOnConsole', + ]; // index-json mode is only supported in ssv7 if (template.modifications?.mainConfig?.features?.storyStoreV7 !== false) { @@ -25,6 +30,7 @@ export const testRunnerBuild: Task & { port: number } = { ...execOptions, env: { JEST_JUNIT_OUTPUT_FILE: junitFilename, + TEST_ROOT: sandboxDir, }, }, { dryRun, debug } diff --git a/scripts/ts-to-ts49.ts b/scripts/ts-to-ts49.ts index a73eaabbd2be..869d71bfb9a2 100644 --- a/scripts/ts-to-ts49.ts +++ b/scripts/ts-to-ts49.ts @@ -7,6 +7,7 @@ import * as recast from 'recast'; import type Babel from '@babel/core'; import type { File } from '@babel/types'; import * as t from '@babel/types'; +import invariant from 'tiny-invariant'; const files = glob.sync('**/*.ts.mdx', { absolute: true, @@ -74,6 +75,7 @@ for (const [, file] of files.entries()) { console.log('changed', file); } } catch (e) { + invariant(e instanceof Error); console.error(e.message); } } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 591055d2ab92..c82e14a95108 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -8,14 +8,14 @@ "moduleResolution": "Node", "target": "ES2020", "module": "CommonJS", - "skipLibCheck": false, + "skipLibCheck": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, "strictBindCallApply": true, "lib": ["dom", "esnext"], "types": ["node", "jest"], - "strict": false, + "strict": true, "strictNullChecks": false, "forceConsistentCasingInFileNames": true, "noUnusedLocals": true, diff --git a/scripts/typings.d.ts b/scripts/typings.d.ts deleted file mode 100644 index 12d9b782fe64..000000000000 --- a/scripts/typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'pretty-hrtime'; diff --git a/scripts/upload-bench.ts b/scripts/upload-bench.ts new file mode 100644 index 000000000000..1b0d570ee821 --- /dev/null +++ b/scripts/upload-bench.ts @@ -0,0 +1,87 @@ +import { join } from 'path'; +import { BigQuery } from '@google-cloud/bigquery'; + +import type { BenchResults } from './bench/types'; +import { loadBench } from './bench/utils'; +import { SANDBOX_DIRECTORY } from './utils/constants'; +import { execaCommand } from './utils/exec'; + +const templateKey = process.argv[2]; + +const GCP_CREDENTIALS = JSON.parse(process.env.GCP_CREDENTIALS || '{}'); +const sandboxDir = process.env.SANDBOX_ROOT || SANDBOX_DIRECTORY; +const templateSandboxDir = templateKey && join(sandboxDir, templateKey.replace('/', '-')); + +const defaults: Record<keyof BenchResults, null> = { + branch: null, + commit: null, + timestamp: null, + label: null, + + createTime: null, + generateTime: null, + initTime: null, + createSize: null, + generateSize: null, + initSize: null, + diffSize: null, + buildTime: null, + buildSize: null, + buildSbAddonsSize: null, + buildSbCommonSize: null, + buildSbManagerSize: null, + buildSbPreviewSize: null, + buildStaticSize: null, + buildPrebuildSize: null, + buildPreviewSize: null, + devPreviewResponsive: null, + devManagerResponsive: null, + devManagerHeaderVisible: null, + devManagerIndexVisible: null, + devStoryVisible: null, + devStoryVisibleUncached: null, + devAutodocsVisible: null, + devMDXVisible: null, + buildManagerHeaderVisible: null, + buildManagerIndexVisible: null, + buildAutodocsVisible: null, + buildStoryVisible: null, + buildMDXVisible: null, +}; + +const uploadBench = async () => { + const results = await loadBench({ rootDir: templateSandboxDir }); + + const row = { + ...defaults, + branch: + process.env.CIRCLE_BRANCH || (await execaCommand('git rev-parse --abbrev-ref HEAD')).stdout, + commit: process.env.CIRCLE_SHA1 || (await execaCommand('git rev-parse HEAD')).stdout, + timestamp: new Date().toISOString(), + label: templateKey, + ...results, + } as BenchResults; + + const store = new BigQuery({ + projectId: GCP_CREDENTIALS.project_id, + credentials: GCP_CREDENTIALS, + }); + const dataset = store.dataset('benchmark_results'); + const appTable = dataset.table('bench2'); + + await appTable.insert([row]); +}; + +uploadBench() + .catch((err) => { + console.error(err); + if (err.errors) { + err.errors.forEach((elt: any) => { + console.log(elt); + }); + } + process.exit(1); + }) + .then(() => { + console.log('done'); + }); diff --git a/scripts/utils/cli-utils.js b/scripts/utils/cli-utils.js index 5d39797f388d..ba52d9338875 100644 --- a/scripts/utils/cli-utils.js +++ b/scripts/utils/cli-utils.js @@ -14,6 +14,7 @@ const checkDependencies = async () => { tasks.push( spawn('yarn', ['install'], { cwd: scriptsPath, + shell: true, stdio: ['inherit', 'inherit', 'inherit'], }) ); @@ -22,6 +23,7 @@ const checkDependencies = async () => { tasks.push( spawn('yarn', ['install'], { cwd: codePath, + shell: true, stdio: ['inherit', 'inherit', 'inherit'], }) ); diff --git a/scripts/utils/command.ts b/scripts/utils/command.ts index f1167f6993df..c7994e57c783 100644 --- a/scripts/utils/command.ts +++ b/scripts/utils/command.ts @@ -1,13 +1,13 @@ -import type { ExecOptions } from 'shelljs'; -import shell from 'shelljs'; +import { sync as spawnSync } from 'cross-spawn'; + +type ExecOptions = Parameters<typeof spawnSync>[2]; export const exec = async (command: string, options: ExecOptions = {}) => new Promise((resolve, reject) => { - shell.exec(command, options, (code) => { - if (code === 0) { - resolve(); - } else { - reject(new Error(`command exited with code: ${code}`)); - } - }); + const x = spawnSync(command, options); + if (x.status === 0) { + resolve(undefined); + } else { + reject(new Error(`command exited with code: ${x.status}: `)); + } }); diff --git a/scripts/utils/constants.ts b/scripts/utils/constants.ts index 38cd105e13fc..d783410d3825 100644 --- a/scripts/utils/constants.ts +++ b/scripts/utils/constants.ts @@ -3,10 +3,12 @@ import { join } from 'path'; export const AFTER_DIR_NAME = 'after-storybook'; export const BEFORE_DIR_NAME = 'before-storybook'; -export const CODE_DIRECTORY = join(__dirname, '..', '..', 'code'); -export const REPROS_DIRECTORY = join(__dirname, '..', '..', 'repros'); -export const SANDBOX_DIRECTORY = join(__dirname, '..', '..', 'sandbox'); -export const JUNIT_DIRECTORY = join(__dirname, '..', '..', 'test-results'); +export const ROOT_DIRECTORY = join(__dirname, '..', '..'); +export const CODE_DIRECTORY = join(ROOT_DIRECTORY, 'code'); +export const PACKS_DIRECTORY = join(ROOT_DIRECTORY, 'packs'); +export const REPROS_DIRECTORY = join(ROOT_DIRECTORY, 'repros'); +export const SANDBOX_DIRECTORY = join(ROOT_DIRECTORY, 'sandbox'); +export const JUNIT_DIRECTORY = join(ROOT_DIRECTORY, 'test-results'); export const LOCAL_REGISTRY_URL = 'http://localhost:6001'; export const SCRIPT_TIMEOUT = 5 * 60 * 1000; diff --git a/scripts/utils/exec.ts b/scripts/utils/exec.ts index cf2f5e4bd624..74a886189420 100644 --- a/scripts/utils/exec.ts +++ b/scripts/utils/exec.ts @@ -26,7 +26,10 @@ export const execaCommand = async ( const execa = await getExeca(); // We await here because execaCommand returns a promise, but that's not what the user expects // eslint-disable-next-line @typescript-eslint/return-await - return await execa.execaCommand(command, options); + return await execa.execaCommand(command, { + cleanup: true, + ...options, + }); }; export const exec = async ( @@ -64,7 +67,7 @@ export const exec = async ( } } } catch (err) { - if (!err.killed) { + if (!(typeof err === 'object' && 'killed' in err && err.killed)) { logger.error(chalk.red(`An error occurred while executing: \`${command}\``)); logger.log(`${errorMessage}\n`); } diff --git a/scripts/utils/filterExistsInCodeDir.ts b/scripts/utils/filterExistsInCodeDir.ts index 8bde347e823b..b5a6ffafc248 100644 --- a/scripts/utils/filterExistsInCodeDir.ts +++ b/scripts/utils/filterExistsInCodeDir.ts @@ -2,7 +2,7 @@ import path from 'path'; import { pathExists } from 'fs-extra'; import { CODE_DIRECTORY } from './constants'; -// packageDirs of the form `lib/store` +// packageDirs of the form `lib/preview-api` // paths to check of the form 'template/stories' export const filterExistsInCodeDir = async (packageDirs: string[], pathToCheck: string) => ( diff --git a/scripts/utils/options.test.ts b/scripts/utils/options.test.ts index ccbc6a058ec3..c183db207f2c 100644 --- a/scripts/utils/options.test.ts +++ b/scripts/utils/options.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from '@jest/globals'; import { createCommand } from 'commander'; -import type { MaybeOptionValues, OptionValues } from './options'; import { areOptionsSatisfied, createOptions, getCommand, getOptions } from './options'; const allOptions = createOptions({ @@ -35,17 +34,6 @@ const allOptions = createOptions({ }, }); -// TS "tests" -// deepscan-disable-next-line -function test(mv: MaybeOptionValues<typeof allOptions>, v: OptionValues<typeof allOptions>) { - console.log(mv.first, mv.second, mv.third, mv.fourth, mv.fifth, mv.sixth); - // @ts-expect-error as it's not allowed - console.log(mv.seventh); - console.log(v.first, v.second, v.third, v.fourth, v.fifth, v.sixth); - // @ts-expect-error as it's not allowed - console.log(v.seventh); -} - describe('getOptions', () => { it('deals with boolean options', () => { expect(getOptions(createCommand(), allOptions, ['command', 'name', '--first'])).toMatchObject({ @@ -71,7 +59,6 @@ describe('getOptions', () => { }); it('deals with string options', () => { - const r = getOptions(createCommand(), allOptions, ['command', 'name', '--third', 'one']); expect( getOptions(createCommand(), allOptions, ['command', 'name', '--third', 'one']) ).toMatchObject({ diff --git a/scripts/utils/options.ts b/scripts/utils/options.ts index b741d80afcb2..f5340c037a85 100644 --- a/scripts/utils/options.ts +++ b/scripts/utils/options.ts @@ -7,6 +7,7 @@ import type { PromptObject, Falsy, PrevCaller, PromptType } from 'prompts'; import program from 'commander'; import dedent from 'ts-dedent'; import chalk from 'chalk'; +// eslint-disable-next-line import/extensions import kebabCase from 'lodash/kebabCase.js'; // Option types @@ -133,7 +134,9 @@ export function getOptions<TOptions extends OptionSpecifier>( .reduce((acc, [key, option]) => { const flags = optionFlags(key, option); - if (option.type === 'boolean') return acc.option(flags, option.description, !!option.inverse); + if (option.type === 'boolean') { + return acc.option(flags, option.description, !!option.inverse); + } const checkStringValue = (raw: string) => { if (option.values && !option.values.includes(raw)) { @@ -147,8 +150,11 @@ export function getOptions<TOptions extends OptionSpecifier>( return raw; }; - if (option.type === 'string') - return acc.option(flags, option.description, (raw) => checkStringValue(raw)); + if (option.type === 'string') { + return acc.option(flags, option.description, (raw) => { + return checkStringValue(raw); + }); + } if (option.type === 'string[]') { return acc.option( @@ -163,9 +169,15 @@ export function getOptions<TOptions extends OptionSpecifier>( }, command) .parse(argv); + const intermediate = command.opts(); + if (intermediate.task === undefined && argv[2] && !argv[2].startsWith('-')) { + // eslint-disable-next-line prefer-destructuring + intermediate.task = argv[2]; + } + // Note the code above guarantees the types as they come in, so we cast here. // Not sure there is an easier way to do this - return command.opts() as MaybeOptionValues<TOptions>; + return intermediate as MaybeOptionValues<TOptions>; } // Boolean values will have a default, usually `false`, `true` if they are "inverse". diff --git a/scripts/utils/workspace.ts b/scripts/utils/workspace.ts index c490d593f1b5..3219c558599f 100644 --- a/scripts/utils/workspace.ts +++ b/scripts/utils/workspace.ts @@ -4,7 +4,7 @@ import { execaCommand } from './exec'; export type Workspace = { name: string; location: string }; -async function getWorkspaces() { +export async function getWorkspaces() { const { stdout } = await execaCommand('yarn workspaces list --json', { cwd: CODE_DIRECTORY, shell: true, diff --git a/scripts/utils/yarn.ts b/scripts/utils/yarn.ts index fba61e8d1a1a..fcefed46ade1 100644 --- a/scripts/utils/yarn.ts +++ b/scripts/utils/yarn.ts @@ -24,8 +24,9 @@ export const addPackageResolutions = async ({ cwd, dryRun }: YarnOptions) => { ...storybookVersions, 'enhanced-resolve': '~5.10.0', // TODO, remove this // this is for our CI test, ensure we use the same version as docker image, it should match version specified in `./code/package.json` and `.circleci/config.yml` - '@playwright/test': '1.32.3', - playwright: '1.32.3', + playwright: '1.36.0', + 'playwright-core': '1.36.0', + '@playwright/test': '1.36.0', }; await writeJSON(packageJsonPath, packageJson, { spaces: 2 }); }; @@ -86,7 +87,8 @@ export const configureYarn2ForVerdaccio = async ({ cwd, dryRun, debug }: YarnOpt // We need to be able to update lockfile when bootstrapping the examples `yarn config set enableImmutableInstalls false`, // Discard all YN0013 - FETCH_NOT_CACHED messages - `yarn config set logFilters --json '[ { "code": "YN0013", "level": "discard" } ]'`, + // Error on YN0060 - INCOMPATIBLE_PEER_DEPENDENCY + `yarn config set logFilters --json '[ { "code": "YN0013", "level": "discard" }, { "code": "YN0060", "level": "error" } ]'`, ]; await exec( diff --git a/scripts/verdaccio.yaml b/scripts/verdaccio.yaml index 3827e20077e9..aa59cf7d5e78 100644 --- a/scripts/verdaccio.yaml +++ b/scripts/verdaccio.yaml @@ -55,6 +55,10 @@ packages: access: $all publish: $all proxy: npmjs + '@storybook/addon-styling': + access: $all + publish: $all + proxy: npmjs '@storybook/addon-svelte-csf': access: $all publish: $all @@ -75,6 +79,10 @@ packages: access: $all publish: $all proxy: npmjs + '@storybook/addon-onboarding': + access: $all + publish: $all + proxy: npmjs '@storybook/mdx1-csf': access: $all publish: $all diff --git a/scripts/yarn.lock b/scripts/yarn.lock index b415b1d20442..be6fe9587929 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -5,6 +5,32 @@ __metadata: version: 6 cacheKey: 8c0 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + +"@actions/core@npm:^1.10.0": + version: 1.10.0 + resolution: "@actions/core@npm:1.10.0" + dependencies: + "@actions/http-client": ^2.0.1 + uuid: ^8.3.2 + checksum: 9214d1e0cf5cf2a5d48b8f3b12488c6be9f6722ea60f2397409226e8410b5a3e12e558d9b66c93469d180399865ec20180119408a1770f026bd9ecac6965fcda + languageName: node + linkType: hard + +"@actions/http-client@npm:^2.0.1": + version: 2.1.0 + resolution: "@actions/http-client@npm:2.1.0" + dependencies: + tunnel: ^0.0.6 + checksum: 3936947d05c394ec3365a8757e13bd8cd0fb124cc1503254e46a95b2b8342fbf3f2a3c13d56d37e1d6705939cf2808dc64b4a38b75f83995fdc2e878e3aef89c + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.2.0 resolution: "@adobe/css-tools@npm:4.2.0" @@ -13,385 +39,358 @@ __metadata: linkType: hard "@ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" dependencies: - "@jridgewell/gen-mapping": ^0.1.0 + "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: d267d8def81d75976bed4f1f81418a234a75338963ed0b8565342ef3918b07e9043806eb3a1736df7ac0774edb98e2890f880bba42817f800495e4ae3fac995e + checksum: 92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/code-frame@npm:7.21.4" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/code-frame@npm:7.22.5" dependencies: - "@babel/highlight": ^7.18.6 - checksum: c357e4b3b7a56927cb26fcb057166fef3cc701a4e35b2fa8a87402c31be0fd41d0144c61c87bf7d3b2a8f1c4d9ef00592dc0c7e8b9500dae43340a1e9f1096de + "@babel/highlight": ^7.22.5 + checksum: 0b6c5eaf9e58be7140ac790b7bdf8148e8a24e26502dcaa50f157259c083b0584285748fd90d342ae311a5bb1eaad7835aec625296d2b46853464f9bd8991e28 languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/compat-data@npm:7.21.4" - checksum: 8752c19f78f6b91188b8c4867ae357fe79206ed3ea2fbc9357ac66639b1bd4aa1ba44cedba238369070704605caf9a4a742bf1cfa2b9414845a8995e0c9ac40a +"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: 1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.2": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.0": + version: 7.22.9 + resolution: "@babel/core@npm:7.22.9" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-module-transforms": ^7.22.9 + "@babel/helpers": ^7.22.6 + "@babel/parser": ^7.22.7 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.8 + "@babel/types": ^7.22.5 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - semver: ^6.3.0 - checksum: 0987cf87f277eb19c410ef3a03f9377efec40005a5dd2a67ddd0a5f6f429c9d88fefba25206ccf3378c93814b4c9c06a236bf8fcd3ed6ef1c8089fefaa76af24 + semver: ^6.3.1 + checksum: 4dffc8844bd8ab5c292e795f3eb0e636246177d28b75ec99f3349a29fe08a9f3e089fe68b857ed160f3312c035c8fb73fdc83b0c781f4629164e548a7d62a8c7 languageName: node linkType: hard -"@babel/generator@npm:^7.21.4, @babel/generator@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" +"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": + version: 7.22.9 + resolution: "@babel/generator@npm:7.22.9" dependencies: - "@babel/types": ^7.21.4 + "@babel/types": ^7.22.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 0eb142a5ca8a978981c11de9e0ab033659f7110bc21cd14eaeb80977835b895c3a97e5a1807a2f6e79003682141057f00b4bd5f69fe998b4cf99bf989c361277 + checksum: 6ef82c7f6dc8f749c0eb3a04fe35acab032a9221d82984e67cbbada449ca857dd981e08c129f9cf5d2f342ba00efcc683a99e46a470f233b0948edf197e35d26 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: e413cd022e1e21232c1ce98f3e1198ec5f4774c7eceb81155a45f9cb6d8481f3983c52f83252309856668e728c751f0340d29854b604530a694899208df6bcc3 + "@babel/types": ^7.22.5 + checksum: 5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.5" dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: 8571b3cebdd3b80349aaa04e0c1595d8fc283aea7f3d7153dfba0d5fcb090e53f3fe98ca4c19ffa185e642a14ea2b97f11eccefc9be9185acca8916e68612c3f + "@babel/types": ^7.22.5 + checksum: 73a61a56364849770d5569264ba0a5f06035387cafd219d1ae26077f80a1dfb75f240e6abcd991c655641ad8fe066b964261942b4086ba2efc946c807c9d1698 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-compilation-targets@npm:7.21.4" +"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.5 + browserslist: ^4.21.9 lru-cache: ^5.1.1 - semver: ^6.3.0 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: ad553d5a473beeedaf7be4e450d3d6f36920f34005bc45bc62d94a16ae553dcb7d9fc5b2bc721ffa203e542bc8a1fb241e1c97fba1fae5f7ef5ba87a7730a1b9 + checksum: 543b9a45800c1db2f91cc53462ed1799834a1259e498d3d91f45816ae79d19719ef957fa00b0f015d8b768eac09fd1f4f5f42f868c5a10f4389e3883a3f050f1 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.4" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6, @babel/helper-create-class-features-plugin@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 + "@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.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: a994bace4bb4ecf68ec163e101a151b92dedca292873b08642435ed6957719c2feafd2dbfcb44c6984965ceb7ccc70a9b91e9a14f54279c683ca97df9a43a5df + checksum: f383152992996b0b936e555aaef35264852908720216c298f677f4b53ba3c4325b700c6a62ff08a8e1377d76ed6538e1bd5232557266eae777cc06b7eb3dd4ad languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.4 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-annotate-as-pure": ^7.22.5 regexpu-core: ^5.3.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4a65810a30a97ed109af44b2ddc12fb05bb83de2855425192696c676570abcabf59af4c2b6d9fc5fe3ce9781eabe057781870a77b78d86120a4be68e7b3c1b7b + checksum: 056c9913299ba399194d9aef5f4281a81806f66979c3c9c6da19b2e29bc92abad6d6d6be0cd4b3ed5945abbdf2d4c45362ee26a012f75f16de7d26859dfde11d languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" +"@babel/helper-define-polyfill-provider@npm:^0.4.1": + version: 0.4.1 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.1" dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 - semver: ^6.1.2 peerDependencies: "@babel/core": ^7.4.0-0 - checksum: c3668f9ee2b76bfc08398756c504a8823e18bad05d0c2ee039b821c839e2b70f3b6ad8b7a3d3a6be434d981ed2af845a490aafecc50eaefb9b5099f2da156527 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: a69dd50ea91d8143b899a40ca7a387fa84dbaa02e606d8692188c7c59bd4007bcd632c189f7b7dab72cb7a016e159557a6fccf7093ab9b584d87cf2ea8cf36b7 + checksum: 402a8ca29354f01640d7226587576479507093437239ec1ba283c190986442a8759e5043859df9795c07c43d9b99d0685ee36ff77974c5be9a0cbec36a8283af languageName: node linkType: hard -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 6e2fc5841fd849c840634e55b3a3f373167179bddb3d1c5fa2d7f63c3959425b8f87cd5c5ce5dcbb96e877a5033687840431b84a8e922c323f8e6aac9645db0b +"@babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-environment-visitor@npm:7.22.5" + checksum: c9377464c1839741a0a77bbad56de94c896f4313eb034c988fc2ab01293e7c4027244c93b4256606c5f4e34c68cf599a7d31a548d537577c7da836bbca40551b languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" +"@babel/helper-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-function-name@npm:7.22.5" dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: 5b4387afd34cd98a3a7f24f42250a5db6f7192a46e57bdbc151dc311b6299ceac151c5236018469af193dfb887b0b7ef8fe7ed89459cd05f00d69b3710c17498 + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 3ce2e87967fe54aa463d279150ddda0dae3b5bc3f8c2773b90670b553b61e8fe62da7edcd7b1e1891c5b25af4924a6700dad2e9d8249b910a5bf7caa2eaf4c13 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: 830aa7ca663b0d2a025513ab50a9a10adb2a37d8cf3ba40bb74b8ac14d45fbc3d08c37b1889b10d36558edfbd34ff914909118ae156c2f0915f2057901b90eff + "@babel/types": ^7.22.5 + checksum: 60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" +"@babel/helper-member-expression-to-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" dependencies: - "@babel/types": ^7.21.0 - checksum: e9e5a57a306268e379ebefa7698008dfff60e53c35e719f2ad0e9b447901a05ec0cb03982d4f386acdcbdddbdf2ee04950cdc464754253bb488c7da2ff922503 + "@babel/types": ^7.22.5 + checksum: c04a71976b2508c6f1fa46562439b74970cea37958e450bcd59363b9c62ac49fb8e3cef544b08264b1d710b3f36214486cb7e1102e4f1ee8e1c2878b5eebcc75 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.21.4 - resolution: "@babel/helper-module-imports@npm:7.21.4" +"@babel/helper-module-imports@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-module-imports@npm:7.22.5" dependencies: - "@babel/types": ^7.21.4 - checksum: ce62c86e8e1af9921fa2d7253a540fb5aaab424a79de47a626c4e8855950d6ac14c0d46a9ec117e8e2e256ea1062583533947202988be889a5ff2076c213be18 + "@babel/types": ^7.22.5 + checksum: 04f8c0586c485c33017c63e0fc5fc16bd33b883cef3c88e4b3a8bf7bc807b3f9a7bcb9372fbcc01c0a539a5d1cdb477e7bdec77e250669edab00f796683b6b07 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 35d4508826bae2db69ab6966db1810b5e7b9157e471525ad1f2119e16742bd293da02587bddb2843368dcd411ddd5ae0f212d6381bcf32e1b338a84b5b27ae30 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: f1352ebc5d9abae6088e7d9b4b6b445c406ba552ef61e967ec77d005ff65752265b002b6faaf16cc293f9e37753760ef05c1f4b26cda1039256917022ba5669c + "@babel/types": ^7.22.5 + checksum: 31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: bf4de040e57b7ddff36ea599e963c391eb246d5a95207bb9ef3e33073c451bcc0821e3a9cc08dfede862a6dcc110d7e6e7d9a483482f852be358c5b60add499c +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" +"@babel/helper-remap-async-to-generator@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: e6b2a906bdb3ec40d9cee7b7f8d02a561334603a0c57406a37c77d301ca77412ff33f2cef9d89421d7c3b1359604d613c596621a2ff22129612213198c5d1527 + checksum: e753f19726846df26a13a304632aff2bc6e437201f27eecc7ba12db04b9175062da307e72512cf4761e659ec82cb71016352acd83fbe5e527f4b881ce1e633e8 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 6d44965bdc24b61df89d8d92e3b86afe48d6a5932d7c8c059fb8bf53b9cf2845ed627e8261fac9b369b9a4dd1621e8e60a19f19902dc27e005f254d7a8cbffda + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: - "@babel/types": ^7.20.2 - checksum: 79cea28155536c74b37839748caea534bc413fac8c512e6101e9eecfe83f670db77bc782bdb41114caecbb1e2a73007ff6015d6a5ce58cae5363b8c5bd2dcee9 + "@babel/types": ^7.22.5 + checksum: f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: - "@babel/types": ^7.20.0 - checksum: 8529fb760ffbc3efc22ec5a079039fae65f40a90e9986642a85c1727aabdf6a79929546412f6210593970d2f97041f73bdd316e481d61110d6edcac1f97670a9 + "@babel/types": ^7.22.5 + checksum: ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: - "@babel/types": ^7.18.6 - checksum: 1335b510a9aefcbf60d89648e622715774e56040d72302dc5e176c8d837c9ab81414ccfa9ed771a9f98da7192579bb12ab7a95948bfdc69b03b4a882b3983e48 + "@babel/types": ^7.22.5 + checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: e20c81582e75df2a020a1c547376668a6e1e1c2ca535a6b7abb25b83d5536c99c0d113184bbe87c1a26e923a9bb0c6e5279fca8db6bd609cd3499fafafc01598 +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 6b0ff8af724377ec41e5587fffa7605198da74cb8e7d8d48a36826df0c0ba210eb9fedb3d9bef4d541156e0bd11040f021945a6cbb731ccec4aefb4affa17aa4 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: f978ecfea840f65b64ab9e17fac380625a45f4fe1361eeb29867fcfd1c9eaa72abd7023f2f40ac3168587d7e5153660d16cfccb352a557be2efd347a051b4b20 +"@babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-identifier@npm:7.22.5" + checksum: 2ff1d3833154d17ccf773b8a71fdc0cd0e7356aa8033179d0e3133787dfb33d97796cbff8b92a97c56268205337dfc720227aeddc677c1bc08ae1b67a95252d7 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.18.6, @babel/helper-validator-option@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: a5efbf3f09f1514d1704f3f7bf0e5fac401fff48a9b84a9eb47a52a4c13beee9802c6cf212a82c5fb95f6cc6b5932cb32e756cf33075be17352f64827a8ec066 +"@babel/helper-validator-option@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-option@npm:7.22.5" + checksum: 23e310bf1b90d085b1ae250f31d423fb6cc004da882f0d3409266e5e4c7fd41ed0a172283a6a9a16083c5f2e11f987b32c815c80c60d9a948e23dd6dcf2e0437 languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" +"@babel/helper-wrap-function@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-wrap-function@npm:7.22.9" dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: b5ea154778f6dbeb3cb9917933ea364f8f643aa79665c51f4a4b903bc451b3d18a738ab9952bdb43a81647f301a9be305bfcf02f2222b1235197e52c525703d6 + "@babel/helper-function-name": ^7.22.5 + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 233c10fe3b38efbf8fcf9bcda8b45b998e963d352beb1966012f4b0be8c221776546a999190c77f0a43524b35c0271691453baf71fe2772fcf7f7938d3621b0d languageName: node linkType: hard -"@babel/helpers@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" +"@babel/helpers@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helpers@npm:7.22.6" dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: a7415373f1c9b84fe32839d5219c3d695e84b910f49a20786caf3b5a37f5079d26af6a5b36b4f2e3eb450b2413c309785483a8d59246d1326c44184c51c24255 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.6 + "@babel/types": ^7.22.5 + checksum: 8c03c19802d0fcc78d00d1eaa9ddab28f97f0c78a5d570762800e86f08c6f41750ad61e20cdede977a56173edf85e7175f1fd804eb6ef817280f064d3a3ca514 languageName: node linkType: hard -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" +"@babel/highlight@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/highlight@npm:7.22.5" dependencies: - "@babel/helper-validator-identifier": ^7.18.6 + "@babel/helper-validator-identifier": ^7.22.5 chalk: ^2.0.0 js-tokens: ^4.0.0 - checksum: a6a6928d25099ef04c337fcbb829fab8059bb67d31ac37212efd611bdbe247d0e71a5096c4524272cb56399f40251fac57c025e42d3bc924db0183a6435a60ac + checksum: e8cc07b5de76a9bf779982096ccbbe5a867c36d3786b26151eb570d9344a68af8aa065ed97d431e0d18ba55fe792c7c4301e0d62afff7a52ee0d20678443be54 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.7.0": - version: 7.21.4 - resolution: "@babel/parser@npm:7.21.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.7.0": + version: 7.22.7 + resolution: "@babel/parser@npm:7.22.7" bin: parser: ./bin/babel-parser.js - checksum: 01ca14d5f1a849e2e34c4cf53809c12f8406d0961554576e025ac2283058e2bf4e168275b034744cad32574c443aa3a65ba08d7a17a7c8c56641257394cbea6c + checksum: d2bdf212644c39de58f1216540ec5aca4a05ffbec07c904eaaef8575dd9546b55345b91dcc0d306be4adbb717401ce321027bac7e2f7babfd66794c96243bb79 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: be2cccfc101824428a860f8c71d2cd118a691a9ace5525197f3f0cba19a522006dc4f870405beece836452353076ac687aefda20d9d1491ea72ce51179057988 + checksum: 573bd9b1984d74e3663cb7f5f317646223020107681e8dcffe68b041bd620ebbb35c0cc05f4ee20f2da502d02a9633e2b477596e71f4f7802f72c02e948f38af languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.7 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.5 peerDependencies: "@babel/core": ^7.13.0 - checksum: afdbed7555bec6f338cb46a6e8b39c7620bc0fce0f530d15c5e49a6eef103607600346b3f35f6bc32b7c9930564e801d7f0a000ecb9b44ff628156f894606cfb - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0f4bc01805704ae4840536acc9888c50a32250e9188d025063bd17fe77ed171a12361c3dc83ce99664dcd73aec612accb8da95b0d8b825c854931b2860c0bfb5 + checksum: 1e38dcd28d2dc5012f96550a3fa1330d71fc923607ceccc91e83c0b7dd3eaeb4d8c632946909c389964acb3e35c888f81653e2d24f7cc02a83fe39a64ca59e89 languageName: node linkType: hard @@ -407,173 +406,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b46eb08badd7943c7bdf06fa6f1bb171e00f26d3c25e912205f735ccc321d1dbe8d023d97491320017e0e5d083b7aab3104f5a661535597d278a6c833c97eb79 - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.20.7": - version: 7.21.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 93f69d7ca1404349c3d5b761ee4d29fcd5f749a528ba25442f86fec6a4ede75d5845d449123f4e29f57a525aa18482b3f651f308bc4e946f8a08db022f93e739 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99be9865edfd65a46afb97d877ea247a8e881b4d0246a1ea0adf6db04c92f4f0959bd2f6f706d73248a2a7167c34f2464c4863137ddb94deadc5c7cc8bfc3e72 - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b90346bd3628ebd44138d0628a5aba1e6b11748893fb48e87008cac30f3bc7cd3161362e49433156737350318174164436357a66fbbfdbe952606b460bd8a0e4 - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83f2ce41262a538ee43450044b9b0de320002473e4849421a7318c0500f9b0385c03d228f1be777ad71fd358aef13392e3551f0be52b5c423b0c34f7c9e5a06d - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 436c1ee9f983813fc52788980a7231414351bd34d80b16b83bddb09115386292fe4912cc6d172304eabbaf0c4813625331b9b5bc798acb0e8925cf0d2b394d4d - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a83a65c6ec0d2293d830e9db61406d246f22d8ea03583d68460cb1b6330c6699320acce1b45f66ba3c357830720e49267e3d99f95088be457c66e6450fbfe3fa - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" - dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab20153d9e95e0b73004fdf86b6a2d219be2a0ace9ca76cd9eccddb680c913fec173bca54d761b1bc6044edde0a53811f3e515908c3b16d2d81cfec1e2e17391 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" +"@babel/plugin-proposal-decorators@npm:^7.22.0": + version: 7.22.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/plugin-syntax-decorators": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1c273d0ec3d49d0fe80bd754ec0191016e5b3ab4fb1e162ac0c014e9d3c1517a5d973afbf8b6dc9f9c98a8605c79e5f9e8b5ee158a4313fa68d1ff7b02084b6a + checksum: 80a0db66b04fb09afb57abcc5dbde89659f076b4579656e4a0670510d9de7c68aa17fff7479f42078d42b00ada546228a55694a9bd6a050bc57997d1f7feb008 languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 576ec99964c50435a81dfe4178d064df9aa86628090d69bae8759332b9a2b5a0a8575a6f51db915c3751949cd29990b8b3a80c6afc228a0664f4237b7b60d667 + checksum: e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -629,14 +486,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.19.0, @babel/plugin-syntax-decorators@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.21.0" +"@babel/plugin-syntax-decorators@npm:^7.22.0, @babel/plugin-syntax-decorators@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-decorators@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4198529415f7ba5ccca1798d062380151f6aa625f7ff5e25bb8925ef818d6ae8cc2f88ac76b63214db741ee678c3ab79831e98e8fb7328c2f4fd5fb340113164 + checksum: a24ad01f89523575b93f3bdef48a16e80d2e0a3e0fc90803c0397c58c6c7abf92379e941719f7f469757d6778d5ac60dc488d4a8b406bd6bbf3c636da477e534 languageName: node linkType: hard @@ -662,18 +519,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" +"@babel/plugin-syntax-import-assertions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b297d7c757c746ed0ef3496ad749ae2ce648ec73dae5184120b191c280e62da7dc104ee126bc0053dfece3ce198a5ee7dc1cbf4768860f666afef5dee84a7146 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ac0176984ad799b39264070007737c514ea95e4b3c3c515ecddef958629abcd3c8e8810fd60fb63de5a8f3f7022dd2c7af7580b819a9207acc372c8b8ec878e + checksum: de0b104a82cb8ffdc29472177210936609b973665a2ad8ef26c078251d7c728fbd521119de4c417285408a8bae345b5da09cd4a4a3311619f71b9b2c64cce3fa languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -695,14 +563,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" +"@babel/plugin-syntax-jsx@npm:^7.21.0, @babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e5dbec5e1c53f114413dc3cc71f43b483d2f0784d5efdcd92c95a55b148d0f1987d136236ace24778d3365dc3d37b0b4d8cc1e0594267860f9f131ef5f5dfc73 + checksum: b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 languageName: node linkType: hard @@ -794,669 +662,867 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" +"@babel/plugin-syntax-typescript@npm:^7.21.0, @babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a4561a8ff7833e3644b8cb50482a405403ef8216271f6b53ad2c35bd0689323b32a1f4cc52569b5120df2c577f1a80c5795cac474ede6334268f42faf389d56f + checksum: 523a76627f17e67dc1999f4d7c7a71ed79e9f77f55a61cf05051101967ac23ec378ff0c93787b2cbd5d53720ad799658d796a649fa351682b2bf636f63b665a1 languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 690fc85afd273049f87e917ab75915e0c0ef19f62633d7d1706a1126dcfac9571d244b5b4eed9b64d6320a8560e8a6e17cf6ea38f4ecc6010e889953c1509b25 + "@babel/core": ^7.0.0 + checksum: 9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" +"@babel/plugin-transform-arrow-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c98caeafbffbdb40fd5d9d4c7a835d624ba1ada814e8e675d99a9c83bd40780ab6a52e3b873e81dc7ce045a3990427073e634f07cc2f2681d780faee0717d7e9 + checksum: 1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.7": + version: 7.22.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.7" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 + "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22e81b52320e6f3929110241d91499a7535d6834b86e8871470f9946b42e093fafc79e1eae4ede376e7c5fe84c5dc5e9fdbe55ff4039b323b5958167202f02e0 + checksum: b9712f47de65d8409625de5cfa4bda6984f9e7065f6170c34b3d11974879276ffa61675c8118de5de7746f5de378c5dfc21efc706664c6f0c652fb58949b53f0 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" +"@babel/plugin-transform-async-to-generator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e06a5017cd4c0dd0b8f5e4dd62853f575b66e6653ef533af7eeca0df7a6e7908bd9dd3c98d4c5dc10830fe53f85d289d337d22448bb6bcdda774df619eb097b5 + checksum: 2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d680fb89d2b96f78f5dfce57dae4d39ac07c34bd9f5331edc7ebd941b86637e598f569cf544520029489d9f621158275811552169d12f777504479ba5cae62cf + checksum: 21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" +"@babel/plugin-transform-block-scoping@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 849c11bac3600d8afa9f3a440fc721cdf2b719480b9a0b230849092fa400099ba1e91328e168860a2ca4d2843a94ece57a894b47468aaeb83df27bb82aae5d07 + checksum: 68f663d349345b522e1dece9641ee304d8f7db1d4b11998f47ebc5d678d281f76a143fb8603a1c12596962d7a63ffe044cd205a4910c8d74906eae17a605f96f languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" +"@babel/plugin-transform-class-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed21971223a36d617acc860581083d8ab0125ff4f947598f1354080f0b2b5511013e3b0ba3b2ff17049de1e4841c65b1e97a8d88e651ae5494ad698ac0d2509e + checksum: 707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" +"@babel/plugin-transform-class-static-block@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cf4c3751e603996f3da0b2060c3aab3c95e267cfc702a95d025b2e9684b66ed73a318949524fad5048515f4a5142629f2c0bd3dbb83558bdbab4008486b8d9a0 + "@babel/core": ^7.12.0 + checksum: 23814d00b2966e8dab7a60934622853698b2cb861a8667c006e000d8e5a50aba4d221c52852552562e7f38e32ad5c7778125ef602c2d2f1c4f9d8f790a9f27e9 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" +"@babel/plugin-transform-classes@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-classes@npm:7.22.6" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dfb7f7e66c0c862d205fe8f8b87f7ac174549c56937a5186b6e6cf85358ce257115fec0aa55e78fde53e5132d5aae9383e81aba8a4b70faa0e9fb64e3a66ca96 + checksum: 915f1c0d3a0446a3ebfb099c4a5e714896f773322432b91572e6739d7af82e9743ae2874eb596ef1d26ed94472385eb814e1f33b033fc708155576d566e1f5ff languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" +"@babel/plugin-transform-computed-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/template": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 96d300ca3e55dbc98609df2d70c2b343202faca307b3152a04eab77600f6b1dc00b5b90fc3999cb9592922583c83ecbb92217e317d7c08602ca0db87a26eeed3 + checksum: 22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" +"@babel/plugin-transform-destructuring@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ca1320975ec5a4c8e7be428c53f5cf6e9363d13bd4e8664c0b430c423c0c1316ad4f4dfc8666e6a17021792d4c72b5b621891d92c8370949a698897fd24aa71 + checksum: bffd0069f44165e101368f34ab34d4bb810ef3dc16a5bf5e55e633a60b0c3aca948dccc15d04e6d6996a2a467f4a52d7224a82efc4be175836cc6e3a3702efa5 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.22.5 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95100707fe00b3e388c059700fbdccf83c2cdf3b7fec8035cdd6c01dd80a1d9efb2821fec1357a62533ebbcbb3f6c361666866a3818486f1172e62f2b692de64 + checksum: e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7b0d59920dd5a1679a2214dde0d785ce7c0ed75cb6d46b618e7822dcd11fb347be2abb99444019262b6561369b85b95ab96603357773a75126b3d1c4c289b822 + checksum: 82772fdcc1301358bc722c1316bea071ad0cd5893ca95b08e183748e044277a93ee90f9c641ac7873a00e4b31a8df7cf8c0981ca98d01becb4864a11b22c09d1 languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" +"@babel/plugin-transform-dynamic-import@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 346e5ac45b77f1e58a9b1686eb16c75cca40cbc1de9836b814fbe8ae0767f7d4a0fec5b88fcf26a5e3455af9e33fd3c6424e4f2661d04e38123d80e022ce6e6f + checksum: 82fb6fa0b6f7c7760ac21ebcb856a01579c9e64a325d5bb8841591b58b2d92024169f10f4ca2b34b45376999b352974138c94fc1d5cc330e00beeeb1bda51425 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 327077cc746d2ef14d0792a970058d9b7170ff480c1d1d7acf874ef7cfeae0c680e86a45896ea27066e9ebdd82dc2be09d321385eef1e0b4255659d75ea2e008 + checksum: e8832460cfc9e087561fa42a796bb4eb181e6983d6db85c6dcec15f98af4ae3d13fcab18a262252a43b075d79ac93aaa38d33022bc5a870d2760c6888ba5d211 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" +"@babel/plugin-transform-export-namespace-from@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: faddf37cab44ad45871ffc38cc17bfbaee301afc3e874652fd36850021e850252570f3b521e0fdbd7098a57016ec72c672b071511949c029b40e1c09b0624869 + checksum: d5d301dde2d6e7f9e4db12ac70e19153f0e8d17406ad733a8f7d01de77d123588fe90c7f5b8cc086420594ec1e7d20abc5e08323f9ad9704a19c6c87ca03eb59 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" +"@babel/plugin-transform-for-of@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-for-of@npm:7.22.5" dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-identifier": ^7.19.1 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1843b2044b711765581d6130ea7901afde6e6f5af4e4219ab675033a090f4dacb6656bfada8f211a2cd9bbae256c7f4bd0b8613b750e56674feee5252de1ad76 + checksum: 08bd2d14f10b8ae421e61b55c28232547044149b8ef62c99c54561ce93a5067f9654d701d798871e733543359748e1b093f5c450b69705ec1db674175ee9fcdb languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" +"@babel/plugin-transform-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-function-name@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e3e99aef95a3faa15bc2398a919475c9130b783ee0f2439e1622fe73466c9821a5f74f72a46bb25e84906b650b467d73b43269c8b8c13372e97d3f2d96d109c7 + checksum: 206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" +"@babel/plugin-transform-json-strings@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: - "@babel/core": ^7.0.0 - checksum: 0ca94f716c70f96a0d5e79211ab7e7614efc9aa2940e6009086b16136f2558ae27b7acf9f88bc0a241882ca3192cc66c477fa0eb1cfdda54974ffc2b8846d3e4 + "@babel/core": ^7.0.0-0 + checksum: 64ee0f3497822d312b609d3b8a5a2617337d1624292e89f5e90fd25b5bc91a20beadfa91730b5b199b5a027284ced5d59748d99e8ab81ee7bdac38236e6b61ca languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" +"@babel/plugin-transform-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ea9186087b72d0adff0b9e7ef5769cb7806bc4755ce7b75c323d65053d453fd801a64f97b65c033d89370866e76e8d526dd186acede2fdcd2667fa056b11149b + checksum: 1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 44a1f5a62c6821a4653e23a38a61bed494138a0f12945a1d8b55ff7b83904e7c5615f4ebda8268c6ea877d1ec6b00f7c92a08cf93f4f77dc777e71145342aaf5 + checksum: bfacdafa8018d1607897015e1ea0f98edbefee16b4409d5f37c37df0d2058dde2e55586dd79f8479a0cd603ff06272216de077f071bc49c96014edfe1629bd26 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 08f8c7eaa3126a6c3481c3f73d9baa42d960295e44a7e303d75c0f5a517fe59b96559382561e1b339f70a8a1db25fe44329f1853da30ff8777685d017475515d + checksum: 731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" +"@babel/plugin-transform-modules-amd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b76239098127ee39031db54e4eb9e55cb8a616abc0fc6abba4b22d00e443ec00d7aaa58c7cdef45b224b5e017905fc39a5e1802577a82396acabb32fe9cff7dd + checksum: 157ae3b58a50ca52e361860ecab2b608bc9228ea6c760112a35302990976f8936b8d75a2b21925797eed7b3bab4930a3f447193127afef9a21b7b6463ff0b422 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" +"@babel/plugin-transform-modules-commonjs@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2c5f44f653604b800145ebad74e11ad6ec06bf96741b69a404e1409afb36abe34b27621b64ddba138813ad957fb8130dc15bd60ecd3b58380115edcccbdeb2ab + checksum: 818317363cc96a1ab28cd0691bdb86fe06f452d210e2cef7ef4708f2c2c80cbe3c76bca23c2ab4b1bb200d44e508eae71f627c7cb27299a41be56fc7e3aaced0 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.5" dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95b37b76754288bb4de28a04f709306686ff80da57937421df9a520f9c2d8b59a2327962a8fd3bb109857790732d3cc767d86d106866e62521cee22d29f721df + checksum: 25d7ada275039523541cfc3efd91cd3d9cfc77e7b9dd6a51e7d9ad842d2cb3e0f26aee29426aa56ac72f61247268369680f2bdc1171bb00a16cfd00bbb325a6c languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.21.0" +"@babel/plugin-transform-modules-umd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.21.0 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 88ea88e17cbcff8c0b4b022d38020161f59ef37847b5e57074c135d109b8d4b2def57fb13d79dffad3a8d04e5113eb15aea3d73937e4ba563f0dbdd78115a584 + checksum: f4a40e18986182a2b1be6af949aaff67a7d112af3d26bbd4319d05b50f323a62a10b32b5584148e4630bdffbd4d85b31c0d571fe4f601354898b837b87afca4c languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e830b5d66c9c48ef287d84e453a495ad43cee9abf484f0d4d8e6ec601d0d019ffe031cdb086872f08a2de848cad34d9d193a49c36c9f5c61aff48158f40459ec + "@babel/core": ^7.0.0 + checksum: b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" +"@babel/plugin-transform-new-target@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-new-target@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4f390ec2687d34d11a8154244d246704be19eeb2ac50b38730ba02ee9adde8a4a4110c79cab0d0778ab3e023034b26fe8745752a9a7624d613e2267b86906b64 + checksum: 22ead0668bfd8db9166a4a47579d9f44726b59f21104561a6dd851156336741abdc5c576558e042c58c4b4fd577d3e29e4bd836021007f3381c33fe3c88dca19 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cbd6a86743c270a1e2a7caa19f6da22112c9dfa28fe08aea46ec9cb79fc1bc48df6b5b12819ae0e53227d4ca4adaee13f80216c03fff3082d3a88c55b4cddeba + checksum: 66f7237d59060954fc0ba0c5d9e7081580421014b446080b3efedb3d4be9a4346f50974c5886a4ec7962db9992e5e1c5e26cb76801728b4d9626ac2eb09c26f7 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" +"@babel/plugin-transform-numeric-separator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e60e02dca182d6ec0e7b571d7e99a0528743692fb911826600374b77832922bf7c4b154194d4fe4a0e8a15c2acad3ea44dbaff5189aaeab59124e4c7ee0b8c30 + checksum: 921d6ff2165eb782c28a6c06e9eb0dc17400c9476b000a7f8b8dfa95c122c22be4adee7bc15f035a1e4269842b3a68b0a2f20e4437025a6e0fbe16e479a879b8 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" +"@babel/plugin-transform-object-rest-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/compat-data": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6abd206942e1fd322791707e7e15aa823f9829d8965facbed4abb0f85d51355d0bb21ac8d7184dea22de3bb5853e807ae6b5b74c621507b912c345cbce4a37b4 + checksum: ab93b8f84e4ed6629ea258d94b597976598a1990035b4d5178c8d117908a48a36f0f03dd2f4a3375393a23a588ecc7817c099ac88a80f8307475b9a25e4d08e0 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" +"@babel/plugin-transform-object-super@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-super@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: efbcf8f0acdac5757cce8d79c0259e3e5142cf3c782d71675802e97709dfb3cbc3dc08202c3ea950ddc23c8f74cae7c334aa05ec095e3cc6d642fa8b30d8e31c + checksum: 062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d1a5e55ed8c3b1186fbba2a7b3e9d880cb3987b846376f51a73216a8894b9c9d6f6c6e2d3cadb17d76f2477552db5383d817169d5b92fcf08ee0fa5b88213c15 + checksum: a15bfa5b36f5f1f61521cc1c73e1e394fbd08aef82a416e2e43f5fc7b43830f17d4c9a5605f1b69ed2bbbacd6f49f5e4f9a3e8e0b7a83841bc95e8ef2116f0a9 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" +"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c42e00635aa9d1c597d339c9023e0f9bfa3cd7af55c00cb8a6461036102b0facdcd3059456d4fee0a63675aeecca62fc84ee01f28b23139c6ae03e6d61c86906 + checksum: bb8188df57ab46c4c708eea17eddd20238ef9106c0e82016b1eb9565f073746e385e0be0b6ee25148507f3dc849311147a43323109c97106f15e0e7ff3220fdf languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-typescript@npm:7.21.3" +"@babel/plugin-transform-parameters@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-parameters@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-typescript": ^7.20.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2426887edd9d2b50aa3f17733e7d725f93239f812580c3149910d166b21b73e2e9c0faf8349ccb8feccb30ce7f936e9325bb11a1f6c19c853dca71a606ef2d70 + checksum: 7d6a76dd1ac02373bc5542076c97fadcb18a9ebbcd4047e15f7a83d64efcff2baef1060a4bcfb9372d8ea18e5b1970f09514c58cece4145beb31d8b8d45d2e5f languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" +"@babel/plugin-transform-private-methods@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1587c3497549a4ad1b75d5b63f1d6ced839d4078dc7df3b5df362c8669f3e9cbed975d5c55632bf8c574847d8df03553851e1b85d1e81a568fdfd2466fcd4198 + checksum: a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2f71b5b79df7f8de81c52011d64203b7021f7d23af2470782aef8e8a3be6ca3a208679de8078a12e707342dde1175e5ab44abf8f63c219c997e147118d356dea + checksum: f178191da005d986fdeb30ef74ea0d28878e6225d305d931ce925d87b7df432f5bb29e32173cff2a5c408cee7abc9f25fab09530d4f419ce5cc29a44a89f7a55 languageName: node linkType: hard -"@babel/polyfill@npm:^7.2.5": - version: 7.12.1 - resolution: "@babel/polyfill@npm:7.12.1" +"@babel/plugin-transform-property-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" dependencies: - core-js: ^2.6.5 - regenerator-runtime: ^0.13.4 - checksum: f5d233d2958582e8678838c32c42ba780965119ebb3771d9b9735f85efabc7b8b49161e7d908477486e0aaf8508410e957be764c27a6a828714fb9d1b7f80bc3 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51 languageName: node linkType: hard -"@babel/preset-env@npm:^7.20.2": - version: 7.21.4 - resolution: "@babel/preset-env@npm:7.21.4" +"@babel/plugin-transform-react-display-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 - "@babel/plugin-proposal-async-generator-functions": ^7.20.7 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.21.0 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.7 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.21.0 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@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.20.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.20.7 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.20.7 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.21.0 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-modules-systemjs": ^7.20.11 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.21.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.20.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.21.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 20995d58969c4e20fcfd5d80a204008e3312325e002dd353d53811b288b45f9e07d741c9c8935e0298b1ed31b9e6dc1078fdacf78caacda0ebeebf8a50038926 + checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 + "@babel/plugin-transform-react-jsx": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + checksum: 4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 languageName: node linkType: hard -"@babel/preset-react@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/preset-react@npm:7.18.6" +"@babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.18.6 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/types": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 19a5b238809e85875488e06f415fde175852ff2361f29ff60233053e3c9914afbaf8befe80cf636d5a49821e8b13067e60c85636deb8e1d6ac543643f5ef2559 + checksum: fa4e5b32233c41686a420ad97b07a8a8b6cec7d484e93d5917db460887ded5179a8a20867a5d56d962b5452535830c0c0f8bfdc7d55853369be1e51b6a79a14a languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.18.6": - version: 7.21.4 - resolution: "@babel/preset-typescript@npm:7.21.4" +"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-syntax-jsx": ^7.21.4 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-typescript": ^7.21.3 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 90cb5b70130f6e600750e6a9db5215806df7e5548698566cf00e882f5e4e5de212ae01ea510f2e1b972c016b53f2809656f82daa8cebe0acc63f06b94bc634b1 + checksum: 18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018 languageName: node linkType: hard -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a +"@babel/plugin-transform-regenerator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + regenerator-transform: ^0.15.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d9f42f831323db7e148cd9c47f61f3f667d283dba95f3221715871f52dec39868be1aa81dd834c27a2993602e5e396bb44bdfa563573a0d86b3883a58660004 languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.21.0 - resolution: "@babel/runtime-corejs3@npm:7.21.0" +"@babel/plugin-transform-reserved-words@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" dependencies: - core-js-pure: ^3.25.1 - regenerator-runtime: ^0.13.11 - checksum: b46896f9a774eeb0e8d2597a0a43a87ede27eebec650b3e17719c14a502289ece95029fe5bc8be84798fb1879b69d54efc1f42c3127f1afaf7778d3b8bb692b5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3ee861941b1d3f9e50f1bb97a2067f33c868b8cd5fd3419a610b2ad5f3afef5f9e4b3740d26a617dc1a9e169a33477821d96b6917c774ea87cac6790d341abbd languageName: node linkType: hard -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" dependencies: - regenerator-runtime: ^0.13.11 - checksum: 8fc28acf3b353390a8188a63d443719847b24b66028fdc8bb301c08e2ee013b52aaeb9d0e9783fa5dcd72bb3c0172fb647419db32392101001738356bdc1f4ab + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2 languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" +"@babel/plugin-transform-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-spread@npm:7.22.5" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 1c6dcf9ac92769e6ab5e3d9048975537d26ab00b869646462ab4583d45e419c01db5144715ec0d70548835a3098c5d5416148c4a0b996a95e8e0b9dc8d042dd3 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0 languageName: node linkType: hard -"@babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.4, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/traverse@npm:7.21.4" +"@babel/plugin-transform-sticky-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.4 - "@babel/types": ^7.21.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3b2e7e80ef088881ad1f30a032f71ba63d734c270cd240dc229f26bfdeabcd661cf40d2c083f250812b08bb04985f77fb038b7b1ee629b3378ee867dff163878 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 42d9295d357415b55c04967ff1cd124cdcbabf2635614f9ad4f8b372d9ae35f6c02bf7473a5418b91e75235960cb1e61493e2c0581cb55bf9719b0986bcd22a5 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": - version: 7.21.4 - resolution: "@babel/types@npm:7.21.4" +"@babel/plugin-transform-template-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 3820dc7b32706241ff3c0d02d034108f94586c7e8fa39cf3e2f0f0c46645f554d3c23f72c91ba7c62290ea33e21c3296dbacc40fd9fbf6cd22c3fa939e711d01 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 277084dd3e873d62541f683173c7cf33b8317f7714335b7e861cc5b4b76f09acbf532a4c9dfbcf7756d29bc07b94b48bd9356af478f424865a86c7d5798be7c0 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.22.5": + version: 7.22.9 + resolution: "@babel/plugin-transform-typescript@npm:7.22.9" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-typescript": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: dc0623bbb21bffdc3c64bf5f50677ba06c6bd9f17edae08fd40f3e639632a716efce91100a46aeaad064e082ee71dfd35941cb605bf27f5d32363912a86ba07f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e9005b2ca102d75e77154a9a7aa2a716d27f5fede04d98fc5f5bfc63390922da9e0112dac0e3c4df9145d30421131a8a79eeb3c6d51435cb7a6595bb692976f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: da424c1e99af0e920d21f7f121fb9503d0771597a4bd14130fb5f116407be29e9340c049d04733b3d8a132effe4f4585fe3cc9630ae3294a2df9199c8dfd7075 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4cfaf4bb724a5c55a6fb5b0ee6ebbeba78dc700b9bc0043715d4b37409d90b43c888735c613690a1ec0d8d8e41a500b9d3f0395aa9f55b174449c8407663684b + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: af37b468332db051f0aaa144adbfab39574e570f613e121b58a551e3cbb7083c9f8c32a83ba2641172a4065128052643468438c19ad098cd62b2d97140dc483e + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.22.0": + version: 7.22.9 + resolution: "@babel/preset-env@npm:7.22.9" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 + "@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-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@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.22.7 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.5 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.6 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.5 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.5 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.5 + "@babel/plugin-transform-for-of": ^7.22.5 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.5 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-modules-systemjs": ^7.22.5 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@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.5 + "@babel/plugin-transform-numeric-separator": ^7.22.5 + "@babel/plugin-transform-object-rest-spread": ^7.22.5 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.6 + "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.5 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.5 + "@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.5 + "@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/preset-modules": ^0.1.5 + "@babel/types": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 + core-js-compat: ^3.31.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fad75686dd55638be71657edbd428bb0266a3f34bc6e367bd55fbff911652c971fcea3e5c346288d4e0a15c81b732c4a2549fce97910b602e19170fe1ddf72d0 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:^0.1.5": + version: 0.1.5 + resolution: "@babel/preset-modules@npm:0.1.5" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 + "@babel/plugin-transform-dotall-regex": ^7.4.4 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.22.0": + version: 7.22.5 + resolution: "@babel/preset-react@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-transform-react-display-name": ^7.22.5 + "@babel/plugin-transform-react-jsx": ^7.22.5 + "@babel/plugin-transform-react-jsx-development": ^7.22.5 + "@babel/plugin-transform-react-pure-annotations": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 60c1fde93d5a6bda03b3d2bb61bcbf056925fd0b01e84d789eaf2a06f639d8714e93735a75da0221fd7a8407c6b4fea7b4fbc35de5ff5d5a299aecb1c82fd530 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.21.0": + version: 7.22.5 + resolution: "@babel/preset-typescript@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-typescript": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2d5924be38bdfea693548359dc547e8bb2c51793d6293168a7248d5ac1f5e94c5f8acea115b006bdd6fa4a20a8e92aa87a826a4aeaf143649e1683d0fe1b82d6 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 5a273e7d66586582041c68332028db5376d754d483422541fdc904e10474a6f8aef14dd3a5aabcbcb6daea87b64531cc4be993d2943557ede4a2613f5328a981 + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": + version: 7.22.5 + resolution: "@babel/template@npm:7.22.5" + dependencies: + "@babel/code-frame": ^7.22.5 + "@babel/parser": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.7.0": + version: 7.22.8 + resolution: "@babel/traverse@npm:7.22.8" + dependencies: + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.7 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.7 + "@babel/types": ^7.22.5 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 839014824c210388ed46f92bf5265522bd5bbb4a9a03c700f9d79b151bdd0aa077c2f6448a0cef41132188cc2bc6d8cdcad98a297ba59983401e882bdc256b1f + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/types@npm:7.22.5" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 + to-fast-properties: ^2.0.0 + checksum: 2473295056520432ec0b5fe2dc7b37914292d211ccdbc2cb05650f9c44d5168a760bca0f492a9fff7c72459defee15cd48ef152e74961cfdc03144c7a4b8bec8 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" checksum: 6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 languageName: node linkType: hard @@ -1470,25 +1536,25 @@ __metadata: languageName: node linkType: hard -"@emotion/css-prettifier@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/css-prettifier@npm:1.1.1" +"@emotion/css-prettifier@npm:^1.1.3": + version: 1.1.3 + resolution: "@emotion/css-prettifier@npm:1.1.3" dependencies: - "@emotion/memoize": ^0.8.0 - stylis: 4.1.3 - checksum: b921139e04d443ea3c8170cb90ae3c758e9effacdba99c5edab5d69400bcf464da283d20a92b4a1e8c74bb3e5feb8ebaee2e74ff5c84d5eab9989b000e5c7c42 + "@emotion/memoize": ^0.8.1 + stylis: 4.2.0 + checksum: 9ce3d7e5851054a24ca68cca4f6973de47d64567d03b6be730aa83f1cf9ae15e4da8c4611e68620e7b972f7a9fb7c36099fdf7e26b78589eb64f094fce46ce1b languageName: node linkType: hard "@emotion/jest@npm:^11.10.5": - version: 11.10.5 - resolution: "@emotion/jest@npm:11.10.5" + version: 11.11.0 + resolution: "@emotion/jest@npm:11.11.0" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/css-prettifier": ^1.1.1 + "@emotion/css-prettifier": ^1.1.3 chalk: ^4.1.0 specificity: ^0.4.1 - stylis: 4.1.3 + stylis: 4.2.0 peerDependencies: "@types/jest": ^26.0.14 || ^27.0.0 || ^28.0.0 || ^29.0.0 enzyme-to-json: ^3.2.1 @@ -1497,167 +1563,167 @@ __metadata: optional: true enzyme-to-json: optional: true - checksum: 4629a2eac0bf1aa5a590c0fecedfa908325f3c7f66f13811058162e1fe94e2fc5282dbe321f9cb1593a3220e193e88e054ab138276c3f425b4a202ce1d135f17 + checksum: 919def636000234c4af8447a6cdf7f9675146bb020074fd06cf3c6eb42c365e727354ae79b2a7cdccb472d38da8ed8d6fd57f4235cab2e1b7605a2c6672a0fc5 languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: 246087ec09b32b295af67a094253831f398aabd953d03d14f186acb8607ed2a755e944f5e20b5ccebb461f15c2e5ccbf8fe977bcf3be951cf10961c504e1e65b +"@emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-arm64@npm:0.16.17" +"@esbuild/android-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm64@npm:0.18.14" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-arm@npm:0.16.17" +"@esbuild/android-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm@npm:0.18.14" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-x64@npm:0.16.17" +"@esbuild/android-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-x64@npm:0.18.14" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/darwin-arm64@npm:0.16.17" +"@esbuild/darwin-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-arm64@npm:0.18.14" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/darwin-x64@npm:0.16.17" +"@esbuild/darwin-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-x64@npm:0.18.14" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/freebsd-arm64@npm:0.16.17" +"@esbuild/freebsd-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-arm64@npm:0.18.14" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/freebsd-x64@npm:0.16.17" +"@esbuild/freebsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-x64@npm:0.18.14" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-arm64@npm:0.16.17" +"@esbuild/linux-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm64@npm:0.18.14" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-arm@npm:0.16.17" +"@esbuild/linux-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm@npm:0.18.14" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-ia32@npm:0.16.17" +"@esbuild/linux-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ia32@npm:0.18.14" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-loong64@npm:0.16.17" +"@esbuild/linux-loong64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-loong64@npm:0.18.14" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-mips64el@npm:0.16.17" +"@esbuild/linux-mips64el@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-mips64el@npm:0.18.14" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-ppc64@npm:0.16.17" +"@esbuild/linux-ppc64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ppc64@npm:0.18.14" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-riscv64@npm:0.16.17" +"@esbuild/linux-riscv64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-riscv64@npm:0.18.14" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-s390x@npm:0.16.17" +"@esbuild/linux-s390x@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-s390x@npm:0.18.14" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-x64@npm:0.16.17" +"@esbuild/linux-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-x64@npm:0.18.14" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/netbsd-x64@npm:0.16.17" +"@esbuild/netbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/netbsd-x64@npm:0.18.14" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/openbsd-x64@npm:0.16.17" +"@esbuild/openbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/openbsd-x64@npm:0.18.14" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/sunos-x64@npm:0.16.17" +"@esbuild/sunos-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/sunos-x64@npm:0.18.14" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-arm64@npm:0.16.17" +"@esbuild/win32-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-arm64@npm:0.18.14" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-ia32@npm:0.16.17" +"@esbuild/win32-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-ia32@npm:0.18.14" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-x64@npm:0.16.17" +"@esbuild/win32-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-x64@npm:0.18.14" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1674,49 +1740,136 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.4.0": - version: 4.5.0 - resolution: "@eslint-community/regexpp@npm:4.5.0" - checksum: 7a828a8cf9422c4d6676f3b207237cabf3cd3c4327a28c5990b726630677ddc35ea9f9488d3c9c449db924cd5d9d58ded7824339774ca3592d292e0d6f945bde + version: 4.5.1 + resolution: "@eslint-community/regexpp@npm:4.5.1" + checksum: d79cbd99cc4dcfbb17e8dd30a30bb5aec5da9c60b9471043f886f116615bb15f0d417cb0ca638cefedba0b4c67c339e2011b53d88264a4540775f042a5879e01 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.2": - version: 2.0.2 - resolution: "@eslint/eslintrc@npm:2.0.2" +"@eslint/eslintrc@npm:^2.1.0": + version: 2.1.0 + resolution: "@eslint/eslintrc@npm:2.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.5.1 + espree: ^9.6.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 6ae7360f4e45fbfa6f66ba92be506860d15f070847bdad4542c97eda98b16c1f4f5be4a8807ccb284224691eb4125bbffc51e8933f6cb186d6cf23a8e668eb5b + checksum: 6ffbc3e7867b377754492539af0e2f5b55645a2c67279a70508fe09080bc76d49ba64b579e59a2a04014f84d0768301736fbcdd94c7b3ad4f0e648c32bf21e43 languageName: node linkType: hard -"@eslint/js@npm:8.37.0": - version: 8.37.0 - resolution: "@eslint/js@npm:8.37.0" - checksum: 6abb3d97412ac960c7436ecdaa56eb00ac57c34782dc0901c82b259c32704e45044927b2910d786ec2127e548986d67e7ba29fec46abfb5d8fc9bedf379af2cf +"@eslint/js@npm:8.44.0": + version: 8.44.0 + resolution: "@eslint/js@npm:8.44.0" + checksum: ce7b966f8804228e4d5725d44d3c8fb7fc427176f077401323a02e082f628d207133a25704330e610ebe3254fdf1acb186f779d1242fd145a758fdcc4486a660 languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff +"@gitbeaker/core@npm:^21.7.0": + version: 21.7.0 + resolution: "@gitbeaker/core@npm:21.7.0" + dependencies: + "@gitbeaker/requester-utils": ^21.7.0 + form-data: ^3.0.0 + li: ^1.3.0 + xcase: ^2.0.1 + checksum: 907f1dac7f43e288c71f184243712a65601a88ab7c9a8b7ff76629d8d94360c31f995b8142dec324615ad50f7e78e12f646a4302cb595dc990da3cdbd2514dfe languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:^3.1.0": - version: 3.2.0 - resolution: "@graphql-typed-document-node/core@npm:3.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c +"@gitbeaker/node@npm:^21.3.0": + version: 21.7.0 + resolution: "@gitbeaker/node@npm:21.7.0" + dependencies: + "@gitbeaker/core": ^21.7.0 + "@gitbeaker/requester-utils": ^21.7.0 + form-data: ^3.0.0 + got: ^11.1.4 + xcase: ^2.0.1 + checksum: c5be30593dae749271f8529a0e33a1831f173d7e39796c9e30206a71e3007cc6368c802d296f1a8fcca056a8e718c77f50ae61aa17de8e444f0c91bf1a05950c + languageName: node + linkType: hard + +"@gitbeaker/requester-utils@npm:^21.7.0": + version: 21.7.0 + resolution: "@gitbeaker/requester-utils@npm:21.7.0" + dependencies: + form-data: ^3.0.0 + query-string: ^6.12.1 + xcase: ^2.0.1 + checksum: 1930783d67a8add51bd6056e0524facfc867fb73d78387af4259a166a5e725eaa64a4c22c0fe33538762b0abb496781bf39d95fc8d544825354254dd05e05271 + languageName: node + linkType: hard + +"@google-cloud/bigquery@npm:^6.2.0": + version: 6.2.1 + resolution: "@google-cloud/bigquery@npm:6.2.1" + dependencies: + "@google-cloud/common": ^4.0.0 + "@google-cloud/paginator": ^4.0.0 + "@google-cloud/precise-date": ^3.0.1 + "@google-cloud/promisify": ^3.0.0 + arrify: ^2.0.1 + big.js: ^6.0.0 + duplexify: ^4.0.0 + extend: ^3.0.2 + is: ^3.3.0 + stream-events: ^1.0.5 + uuid: ^9.0.0 + checksum: a100285bf342ca31c19e744d3edd5f7dc7412afbe8482b138ee800f8281c8ce69e68b7257f2be641c61722a4280b335f08225ab977fbe9a9bc1e6e62c8765a91 + languageName: node + linkType: hard + +"@google-cloud/common@npm:^4.0.0": + version: 4.0.3 + resolution: "@google-cloud/common@npm:4.0.3" + dependencies: + "@google-cloud/projectify": ^3.0.0 + "@google-cloud/promisify": ^3.0.0 + arrify: ^2.0.1 + duplexify: ^4.1.1 + ent: ^2.2.0 + extend: ^3.0.2 + google-auth-library: ^8.0.2 + retry-request: ^5.0.0 + teeny-request: ^8.0.0 + checksum: cedd97e1260c06eb7e3cf1f62b99ff9cdd816f8f750166b29e84aef96380aea4180f2aaa6d2fc99e795f252333bea5ee57ab2e6d151c65cb010fb9fe757c7475 + languageName: node + linkType: hard + +"@google-cloud/paginator@npm:^4.0.0": + version: 4.0.1 + resolution: "@google-cloud/paginator@npm:4.0.1" + dependencies: + arrify: ^2.0.0 + extend: ^3.0.2 + checksum: 90998184454f3f008141c9663025ef51e32bdfa03bc001f93d323b4b520116f1073121bf3ebc637b21928553a3483f9d85b5aaded92b342c29bc872e62ac7c0e + languageName: node + linkType: hard + +"@google-cloud/precise-date@npm:^3.0.1": + version: 3.0.1 + resolution: "@google-cloud/precise-date@npm:3.0.1" + checksum: b3921e35767cb046f7d44d37922393978679559b9adc0c249ce71c14961472dc6d28a4be6a73840a3d4671964c636be09c6e9fa20a157914f3d29757be789ac4 + languageName: node + linkType: hard + +"@google-cloud/projectify@npm:^3.0.0": + version: 3.0.0 + resolution: "@google-cloud/projectify@npm:3.0.0" + checksum: b7309cb8c7565c0fe735f69520e9531f5212a5136fc26b00b9b34cbe9a7dfc4a7c7f9efff9e299dd7dced666865063acc47d22294da4ba79fcfd93429c239d8a + languageName: node + linkType: hard + +"@google-cloud/promisify@npm:^3.0.0": + version: 3.0.1 + resolution: "@google-cloud/promisify@npm:3.0.1" + checksum: b37a7e5797b0cd23d9cc0f171e6e97879d62be7359467a83155339b472eaaed8ffce657cc206a79ca1e6aad66b68718649e7915d9ea52fc61d8fc21589db27f3 languageName: node linkType: hard @@ -1736,14 +1889,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.8": - version: 0.11.8 - resolution: "@humanwhocodes/config-array@npm:0.11.8" +"@humanwhocodes/config-array@npm:^0.11.10": + version: 0.11.10 + resolution: "@humanwhocodes/config-array@npm:0.11.10" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.5 - checksum: 441223496cc5ae3ae443e11e2ba05f03f6418d1e0233e3d160b027dda742d7a957fa9e1d56125d5829079419c797c13e1ae8ffe3454f268901ac18f68e0198f1 + checksum: 9e307a49a5baa28beb243d2c14c145f288fccd6885f4c92a9055707057ec40980242256b2a07c976cfa6c75f7081da111a40a9844d1ca8daeff2302f8b640e76 languageName: node linkType: hard @@ -1768,6 +1921,20 @@ __metadata: languageName: node linkType: hard +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + 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" + checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -1788,29 +1955,29 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 59dfbdb6c3c15652f8d7267071f24d6335afbed0b1cf71aed70b6ce8deb1d86e7f4aadb978f639435650107fd22476b59e63a3d3a9ac99b1aca739b795a54410 + checksum: d62b089015f06d2ca277d8bff63a2c19b861b12161f5b8a69207498b980659dedfdcdcdcd1c0d5078a73cba5dd270392c65476ba9a48b795d1276517ba30f7ed languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/core@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/reporters": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/reporters": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 @@ -1818,20 +1985,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 + jest-config: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-resolve-dependencies: ^29.5.0 - jest-runner: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - jest-watcher: ^29.5.0 + jest-resolve: ^29.6.1 + jest-resolve-dependencies: ^29.6.1 + jest-runner: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 + jest-watcher: ^29.6.1 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -1839,77 +2006,77 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: e4b3e0de48614b2c339083b9159f00a024839984bd89b9afa4cfff4c38f6ce485c2009f2efa1c1e3bb3b87386288bc15798c6aebb7937d7820e8048d75461a4d + checksum: dccd83243af657da9af4c7ae578d55267c85e5bf1755a3a3e189c9ec0d23d409956e0eff7c13b81a388940ab9f294b0afc0241288d5832769687d919fae576fe languageName: node linkType: hard -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/environment@npm:29.6.1" dependencies: - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - checksum: 1fbe63cbfb9c3f6c9fc9d8f6917a5aceee1828d589569bbffcf5fb4bb56bc021dc3a6f239cde3099144767c97763ae134904ee522f236cd8c0d071bd7f9ef63b + jest-mock: ^29.6.1 + checksum: 9c9fddcbec02b59b9719ede7d51e23e5dcd2230365a1df45ff782ea18af4b51fa0d9f5a3e76fbee6d0b7403ae4cd3fb9c45e9f86177c9be02bbbf84ae7f778c6 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" +"@jest/expect-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect-utils@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - checksum: e7f44de651b5ef71c6e1b7a0350a704258167c20b6e8165b3100346d5c7f8eb4cd2c229ea2c048e9161666d1c086fbbc422f111f3b77da3fb89a99d52d4b3690 + checksum: e04164280c0b47a6285f39e70323b54eafc42367d9304897d55d70abd50324e060cb81efc7df82b1031eb46b82b85ecf343ed50c72654b11f1492b34c5e1a7b9 languageName: node linkType: hard -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" +"@jest/expect@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect@npm:29.6.1" dependencies: - expect: ^29.5.0 - jest-snapshot: ^29.5.0 - checksum: 447e7450af8ba61ac34d8a2ca11c56c62f6f0fb33ff13130f11a1ec9526a08d756ee72da622316a2c52ecfe726fe14432bdfb46e45aff5676f8d1a8efc8d201c + expect: ^29.6.1 + jest-snapshot: ^29.6.1 + checksum: 7766e9e02eac18edd2dfdf3481083f1a45b42efdc5fb13e3290132a0379d807a8b892ba1055c6917a3a2ed902240c556ac8704e17652b1b8387a58711867ca2f languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/fake-timers@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/fake-timers@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: dbf52fd302bf6b3d7ec49499f12835b7d7d4069d61adc62dac233021eba61186bbad3add1ceb3225a23a8745dd04fa0dcc2c38d350ecb0f26eec63f2cf5e6aff + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 112b1f26f48f16dd8732f9842d480b66545cd5226d674e59c758f56680d234fc4debb77497784bf26130b21caab4d8cd39cf09afbbb2863a0a4ee0ccdb4c6e14 languageName: node linkType: hard -"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/globals@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/types": ^29.5.0 - jest-mock: ^29.5.0 - checksum: 0c25f07d8125e45cf3c21442e625f6a636eaf7f4cf1cf3f9f66bae059aeb31d3dc61dfff9479eb861a5089dca34c95e231ad88b8925bee42387abecbfe5ecbc2 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.1 + checksum: 9ee8a6e476b8e74d4aa16150ea0ba0b8ecc25328062762cb46095fdec9638fc525d0e7f06e3aa1413600749c79d02a4db18da9912675843672242ea44763fa49 languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -1921,9 +2088,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -1933,87 +2100,74 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 72b771a7749ac2eb9b671f2a886dc98cbe914dfa1a4266854b040e4cc563bf9f5db02b8ff8654b7bfbc3b28caa6d48ca0dde9707454ea4f79d77bd13b6357929 + checksum: fd6e1eab9afee7eebb0a5f461b447b72d227459ce0e96e3ad4024e8795a36d03e1110c91fae9c61a5da50df42978041455f96bf5b09e5b0cead33fb44c63150b languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" +"@jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 + "@sinclair/typebox": ^0.27.8 + checksum: 8671b1fb59c4296204d335190e8451e1983d9f2db6dbbd38f838c6c273fd222fc11e4e0df04adfb6169d36acfb9693d525db136653ec04e6884180f45a131d8f languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/source-map@npm:29.6.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 353f9989dcb416e8a2559ad2831b4b3e8446a9f8259782cec97f89903b5c00baa76ea3e23a3f1c83c1ccb3999a9e318b8c6a4bab29e4b66a4abdbb760e445a50 + checksum: afa654e3634ad74d5f8388ccffd7ecbd745bdce7f6f0860b69c07827c3ee5bb408f52b6c3136b43157ef5874c099059484e43bd3aa391232ab27d8c330399789 languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 5d637c9935ea0438b2a7c106d48756967e5a96fa4426a9b16ea2a3e73e1538eabd10fd4faa8eb46aa4fee710a165e0fd2ce0603dacde5e8a1bba541100854b1d + checksum: 0b460253f092042cb2edaae92f9f22aed150a2dc3eaa8dbd60a31db8a3b12fc14c89784b580e0a678ef52e7438a11b27eaaedd2bc9c4328dbbd6d5d72983de6c languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-sequencer@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 + "@jest/test-result": ^29.6.1 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 slash: ^3.0.0 - checksum: 6fb7549a5dbe2da6817eb853134f76cf2b320b283900c5e63c997ecfadc616379372a49ac8c0f4ffdb9616eed4a5908c74cb7a560a395a6e1dc0d072b865657b + checksum: 411b7fd3a55daaf6f3ce7d3f3cd7114580126df9190a3f27d4e5a5429d91cb56c77899560afefd69451cde4911259c44f9e5fb09d975dc1f1ba597295a64f165 languageName: node linkType: hard -"@jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/transform@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 + jest-util: ^29.6.1 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 113598311d84ec7e4a4aadd340e332bbfbbd66e20eabea8b2f084b80cf97c1bc9e1ff90278c4f04b227afa95e3386d702363715f9923062c370c042c31911d94 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: 5b9b957f38a002895eb04bbb8c3dda6fccce8e2551f3f44b02f1f43063a78e8bedce73cd4330b53ede00ae005de5cd805982fbb2ec6ab9feacf96344240d5db2 + checksum: e34ddd89f372af749e983e29febfbb6f9a96eb677af32b5b299ce36eeab7b1ae55ddda2b64ff91437991f3f9b43cfc7ffa3b511ce7e7c1c23ae2b50d8a65a07f languageName: node linkType: hard @@ -2030,62 +2184,66 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" +"@jest/types@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/types@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3d784d87aee604bc4d48d3d9e547e0466d9f4a432cd9b3a4f3e55d104313bf3945e7e970cd5fa767bc145df11f1d568a01ab6659696be41f0ed2a817f3b583a3 + checksum: 58de1c2484f6c4968b566fb1661506794d3df79476c0605a71b6e40b8a5a1a9837b9c692782540a179daa424c572c7d0818afa306918e3fcd29c4a962ed34a7b languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" dependencies: "@jridgewell/set-array": ^1.0.1 "@jridgewell/sourcemap-codec": ^1.4.10 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 82685c8735c63fe388badee45e2970a6bc83eed1c84d46d8652863bafeca22a6c6cc15812f5999a4535366f4668ccc9ba6d5c67dfb72e846fa8a063806f10afd + checksum: 376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" checksum: 78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" checksum: bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -2096,24 +2254,38 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.18 + resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: "@jridgewell/resolve-uri": 3.1.0 "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 40b65fcbdd7cc5a60dbe0a2780b6670ebbc1a31c96e43833e0bf2fee0773b1ba5137ab7d137b28fc3f215567bd5f9d06b7b30634ba15636c13bd8a863c20ae9a + checksum: e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac languageName: node linkType: hard -"@linear/sdk@npm:^1.22.0": - version: 1.22.0 - resolution: "@linear/sdk@npm:1.22.0" +"@kwsites/file-exists@npm:^1.1.1": + version: 1.1.1 + resolution: "@kwsites/file-exists@npm:1.1.1" dependencies: - "@graphql-typed-document-node/core": ^3.1.0 - graphql: ^15.4.0 - isomorphic-unfetch: ^3.1.0 - checksum: 7e8f24f617631d027fd606334a498b04014d4c33603bcb3e08073d14f86260d116597983567f8bc147a935e4557180158175b52b9a9a8a270a234b946894a82b + debug: ^4.1.1 + checksum: 39e693239a72ccd8408bb618a0200e4a8d61682057ca7ae2c87668d7e69196e8d7e2c9cde73db6b23b3b0230169a15e5f1bfe086539f4be43e767b2db68e8ee4 + languageName: node + linkType: hard + +"@kwsites/promise-deferred@npm:^1.1.1": + version: 1.1.1 + resolution: "@kwsites/promise-deferred@npm:1.1.1" + checksum: ef1ad3f1f50991e3bed352b175986d8b4bc684521698514a2ed63c1d1fc9848843da4f2bc2df961c9b148c94e1c34bf33f0da8a90ba2234e452481f2cc9937b1 + languageName: node + linkType: hard + +"@nicolo-ribaudo/semver-v6@npm:^6.3.3": + version: 6.3.3 + resolution: "@nicolo-ribaudo/semver-v6@npm:6.3.3" + bin: + semver: bin/semver.js + checksum: 9ef70305fa9b03709805128611c0d95beec479cdd6f6b608386d6cee7a3d36f61e6f749378b60f1e5fca19fc58da7b06fccfe3540c0dbc40719731827d4eb1df languageName: node linkType: hard @@ -2144,167 +2316,173 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" - dependencies: - "@gar/promisify": ^1.0.1 +"@npmcli/config@npm:^6.0.0": + version: 6.2.1 + resolution: "@npmcli/config@npm:6.2.1" + dependencies: + "@npmcli/map-workspaces": ^3.0.2 + ci-info: ^3.8.0 + ini: ^4.1.0 + nopt: ^7.0.0 + proc-log: ^3.0.0 + read-package-json-fast: ^3.0.2 semver: ^7.3.5 - checksum: 4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 + walk-up-path: ^3.0.1 + checksum: ab64781e73af2adb037b58019a54b304ff25c6d08366f97569ddfda195f9045f68dbb91d68bcaf4c1d3c0bdc8877718620d77ca19d594592830277d38ce989d5 languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" dependencies: - "@gar/promisify": ^1.1.3 semver: ^7.3.5 - checksum: c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 + checksum: 162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e languageName: node linkType: hard -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" +"@npmcli/map-workspaces@npm:^3.0.2": + version: 3.0.4 + resolution: "@npmcli/map-workspaces@npm:3.0.4" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 + "@npmcli/name-from-folder": ^2.0.0 + glob: ^10.2.2 + minimatch: ^9.0.0 + read-package-json-fast: ^3.0.0 + checksum: caeb5f911d9b7ae0be01436442e6ec6b25aef750fe923de7a653eb62999d35b9f8be67c3f856790350ac86d9cea4a52532859b621eea81738f576302ecdd7475 languageName: node linkType: hard -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" +"@npmcli/name-from-folder@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/name-from-folder@npm:2.0.0" + checksum: 1aa551771d98ab366d4cb06b33efd3bb62b609942f6d9c3bb667c10e5bb39a223d3e330022bc980a44402133e702ae67603862099ac8254dad11f90e77409827 + languageName: node + linkType: hard + +"@nrwl/devkit@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/devkit@npm:16.2.1" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d + "@nx/devkit": 16.2.1 + checksum: a1b7e6ba2f35f37f4ce88619e566d0ff0e62d1a1b5546a4ecf599b3f475b36c151b1382f858100893939f6ad642b1d61871697291dc96009086164858fd72ebe languageName: node linkType: hard -"@nrwl/cli@npm:15.9.2, @nrwl/cli@npm:^15.4.5": - version: 15.9.2 - resolution: "@nrwl/cli@npm:15.9.2" +"@nrwl/nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "@nrwl/nx-cloud@npm:16.0.5" dependencies: - nx: 15.9.2 - checksum: 7d2bba130321d466dd24ee95d97b8b3d6a101144bdeecfc0e21ce4f68e701bc465b8e3c5584eee276a31b90f4718efe657b83cabd4edede5986f7e0c1bd134e7 + nx-cloud: 16.0.5 + checksum: 3d3d5900026a2984ddd6d7d5962a5c8ed1bc84fb7ea52268604d5b05cf77cca8757edf42ddacf774ca778937c133f94ab330e968296a4b0f14a962b9f9fc9f4e + languageName: node + linkType: hard + +"@nrwl/tao@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/tao@npm:16.2.1" + dependencies: + nx: 16.2.1 + bin: + tao: index.js + checksum: a11a1da116a776df20c9eb784310f9d3e48b4edcd1e46482c73b64d7653a92f65833eaf3626fb500518f3bae66610aa15b1ee3bcb16def3170dcb98594cc4c3f languageName: node linkType: hard -"@nrwl/devkit@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/devkit@npm:15.9.2" +"@nrwl/workspace@npm:16.2.1": + version: 16.2.1 + resolution: "@nrwl/workspace@npm:16.2.1" dependencies: + "@nx/workspace": 16.2.1 + checksum: 981ac940f53f41856a2f113d48dd2d822174b7435e555ad3ee676aded5928c5c500ada28305239a27eb6ba8bcb0a0717bc0ffedaee1e74424c0a460f0e27dee2 + languageName: node + linkType: hard + +"@nx/devkit@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/devkit@npm:16.2.1" + dependencies: + "@nrwl/devkit": 16.2.1 ejs: ^3.1.7 ignore: ^5.0.4 semver: 7.3.4 tmp: ~0.2.1 tslib: ^2.3.0 peerDependencies: - nx: ">= 14.1 <= 16" - checksum: 94338da8f6239bfcf08b3dbd2fe7d2455c8045fd132d561db8ae459c698cd5b6b0ff03e0380e36648f335c894b5442808516a614464fbd00d867b8a8fdbbef66 - languageName: node - linkType: hard - -"@nrwl/nx-cloud@npm:^15.0.2": - version: 15.3.5 - resolution: "@nrwl/nx-cloud@npm:15.3.5" - dependencies: - axios: ^0.21.2 - chalk: 4.1.0 - dotenv: ~10.0.0 - fs-extra: ^10.1.0 - node-machine-id: ^1.1.12 - strip-json-comments: ^3.1.1 - tar: 6.1.11 - yargs-parser: ">=21.0.1" - bin: - nx-cloud: bin/nx-cloud.js - checksum: e222805a25c3ef5100e9963f5b4a392961b61a9a540f7dc2fa0404614a26ae734c87ae9342aacdc1da26c38ae0f34a04110e7955190ab51258bb8ddb488ad0a5 + nx: ">= 15 <= 17" + checksum: e0f01c35296f8e972832ac532f3ab3967905847abbe7886c53a7bae14465da07486900a0b0b27837aacf86f08362fb3647aed17158019a9ca1e1f723eec9738b languageName: node linkType: hard -"@nrwl/nx-darwin-arm64@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-darwin-arm64@npm:15.9.2" +"@nx/nx-darwin-arm64@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-darwin-arm64@npm:16.2.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-darwin-x64@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-darwin-x64@npm:15.9.2" +"@nx/nx-darwin-x64@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-darwin-x64@npm:16.2.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.2" +"@nx/nx-linux-arm-gnueabihf@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:16.2.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nrwl/nx-linux-arm64-gnu@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.2" +"@nx/nx-linux-arm64-gnu@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm64-gnu@npm:16.2.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-arm64-musl@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.2" +"@nx/nx-linux-arm64-musl@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-arm64-musl@npm:16.2.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-linux-x64-gnu@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.2" +"@nx/nx-linux-x64-gnu@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-x64-gnu@npm:16.2.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-x64-musl@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.2" +"@nx/nx-linux-x64-musl@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-linux-x64-musl@npm:16.2.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-win32-arm64-msvc@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.2" +"@nx/nx-win32-arm64-msvc@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-win32-arm64-msvc@npm:16.2.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-win32-x64-msvc@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.2" +"@nx/nx-win32-x64-msvc@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/nx-win32-x64-msvc@npm:16.2.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@nrwl/tao@npm:15.9.2": - version: 15.9.2 - resolution: "@nrwl/tao@npm:15.9.2" - dependencies: - nx: 15.9.2 - bin: - tao: index.js - checksum: 99f191e8c80451dc82bbc96d4f3513a34f432a6b5e093992d3887d675828aabb6a47148a8a6fba580e7393ea885561b4210b224ef10a1b956eff79a45d133145 - languageName: node - linkType: hard - -"@nrwl/workspace@npm:^15.4.5": - version: 15.9.2 - resolution: "@nrwl/workspace@npm:15.9.2" +"@nx/workspace@npm:16.2.1": + version: 16.2.1 + resolution: "@nx/workspace@npm:16.2.1" dependencies: - "@nrwl/devkit": 15.9.2 + "@nrwl/workspace": 16.2.1 + "@nx/devkit": 16.2.1 "@parcel/watcher": 2.0.4 chalk: ^4.1.0 chokidar: ^3.5.1 @@ -2313,18 +2491,17 @@ __metadata: dotenv: ~10.0.0 figures: 3.2.0 flat: ^5.0.2 - glob: 7.1.4 ignore: ^5.0.4 minimatch: 3.0.5 npm-run-path: ^4.0.1 - nx: 15.9.2 + nx: 16.2.1 open: ^8.4.0 - rxjs: ^6.5.4 + rxjs: ^7.8.0 tmp: ~0.2.1 tslib: ^2.3.0 yargs: ^17.6.2 yargs-parser: 21.1.1 - checksum: 76dd33399a221d9505fd3bfdcced0f6b4999567b8f0c46e96eb891f4bfd3aff721cbe199b32d5b82667e9bf4a52863bbba57f52c6ebb095b92a64cb47760fb6f + checksum: bf69f3d58d4327fa7b7a6c9cdbbaefdf25fa114c1cecf3d13e6c03fe25d68255cbd5921766798a0ce15d5751b9b12b864a475fd6fc40a386e21668c0d1eb2279 languageName: node linkType: hard @@ -2377,6 +2554,17 @@ __metadata: languageName: node linkType: hard +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" + dependencies: + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 + languageName: node + linkType: hard + "@octokit/graphql@npm:^4.3.1, @octokit/graphql@npm:^4.5.8": version: 4.8.0 resolution: "@octokit/graphql@npm:4.8.0" @@ -2388,6 +2576,17 @@ __metadata: languageName: node linkType: hard +"@octokit/graphql@npm:^5.0.5": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" + dependencies: + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + universal-user-agent: ^6.0.0 + checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 + languageName: node + linkType: hard + "@octokit/openapi-types@npm:^12.11.0": version: 12.11.0 resolution: "@octokit/openapi-types@npm:12.11.0" @@ -2395,12 +2594,10 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^1.1.1": - version: 1.1.2 - resolution: "@octokit/plugin-paginate-rest@npm:1.1.2" - dependencies: - "@octokit/types": ^2.0.1 - checksum: c0b42a7eb92c6b3fb254e85750fe48b667682be277dc9ccafbb91da241fc18396867739b058ae89d48455b3e75eb2967ac5e196fe54a276b58ed56173f5cd188 +"@octokit/openapi-types@npm:^18.0.0": + version: 18.0.0 + resolution: "@octokit/openapi-types@npm:18.0.0" + checksum: d90fab10d962be71e72b85ffab2055cffd9c3196ff1edc3e4106deb78e99e8782965cf7aa6a4c1398f828e4d0c3e0f905915debfe34396d956dfce8e75b21664 languageName: node linkType: hard @@ -2424,16 +2621,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:2.4.0": - version: 2.4.0 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:2.4.0" - dependencies: - "@octokit/types": ^2.0.1 - deprecation: ^2.3.1 - checksum: eedb9e6c3589651a391aa2c850d33fbfb01c94448d5da85b6208ff1fc05d556b05e660db019306c473149727ed83c5711f138179a39651d2cd548a8da2c4bc73 - languageName: node - linkType: hard - "@octokit/plugin-rest-endpoint-methods@npm:3.17.0": version: 3.17.0 resolution: "@octokit/plugin-rest-endpoint-methods@npm:3.17.0" @@ -2456,29 +2643,29 @@ __metadata: languageName: node linkType: hard -"@octokit/request-error@npm:^1.0.2": - version: 1.2.1 - resolution: "@octokit/request-error@npm:1.2.1" +"@octokit/request-error@npm:^2.0.5, @octokit/request-error@npm:^2.1.0": + version: 2.1.0 + resolution: "@octokit/request-error@npm:2.1.0" dependencies: - "@octokit/types": ^2.0.0 + "@octokit/types": ^6.0.3 deprecation: ^2.0.0 once: ^1.4.0 - checksum: 0142170094b5c963de7012aa7d081c3aa05ce19ccd365447c9ca57d475bdf64a79549cb2d5e14348deabdb3c6577966e5f6996eeaa5ea3750b87688cc1c0a0f1 + checksum: eb50eb2734aa903f1e855ac5887bb76d6f237a3aaa022b09322a7676c79bb8020259b25f84ab895c4fc7af5cc736e601ec8cc7e9040ca4629bac8cb393e91c40 languageName: node linkType: hard -"@octokit/request-error@npm:^2.0.5, @octokit/request-error@npm:^2.1.0": - version: 2.1.0 - resolution: "@octokit/request-error@npm:2.1.0" +"@octokit/request-error@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" dependencies: - "@octokit/types": ^6.0.3 + "@octokit/types": ^9.0.0 deprecation: ^2.0.0 once: ^1.4.0 - checksum: eb50eb2734aa903f1e855ac5887bb76d6f237a3aaa022b09322a7676c79bb8020259b25f84ab895c4fc7af5cc736e601ec8cc7e9040ca4629bac8cb393e91c40 + checksum: 1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 languageName: node linkType: hard -"@octokit/request@npm:^5.2.0, @octokit/request@npm:^5.4.0, @octokit/request@npm:^5.6.0, @octokit/request@npm:^5.6.3": +"@octokit/request@npm:^5.4.0, @octokit/request@npm:^5.6.0, @octokit/request@npm:^5.6.3": version: 5.6.3 resolution: "@octokit/request@npm:5.6.3" dependencies: @@ -2492,7 +2679,21 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^16.43.0 || ^17.11.0 || ^18.12.0": +"@octokit/request@npm:^6.0.0": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@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 + checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b + languageName: node + linkType: hard + +"@octokit/rest@npm:^16.43.0 || ^17.11.0 || ^18.12.0, @octokit/rest@npm:^18.12.0": version: 18.12.0 resolution: "@octokit/rest@npm:18.12.0" dependencies: @@ -2504,30 +2705,6 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^16.43.1": - version: 16.43.2 - resolution: "@octokit/rest@npm:16.43.2" - dependencies: - "@octokit/auth-token": ^2.4.0 - "@octokit/plugin-paginate-rest": ^1.1.1 - "@octokit/plugin-request-log": ^1.0.0 - "@octokit/plugin-rest-endpoint-methods": 2.4.0 - "@octokit/request": ^5.2.0 - "@octokit/request-error": ^1.0.2 - atob-lite: ^2.0.0 - before-after-hook: ^2.0.0 - btoa-lite: ^1.0.0 - deprecation: ^2.0.0 - lodash.get: ^4.4.2 - lodash.set: ^4.3.2 - lodash.uniq: ^4.5.0 - octokit-pagination-methods: ^1.1.0 - once: ^1.4.0 - universal-user-agent: ^4.0.0 - checksum: 8e51e16a54dcffb007aeefa48d6dda98f84737c044e15c9e8b123765efcf546b5f3465b37e11666f502d637fac3d4c2ef770ed9e7ba7e21330d1b6d773eccde7 - languageName: node - linkType: hard - "@octokit/rest@npm:^17.1.1": version: 17.11.2 resolution: "@octokit/rest@npm:17.11.2" @@ -2540,15 +2717,6 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^2.0.0, @octokit/types@npm:^2.0.1": - version: 2.16.2 - resolution: "@octokit/types@npm:2.16.2" - dependencies: - "@types/node": ">= 8" - checksum: 8f324639ea2792f38dee104970f7d74584da6747ca41a5f709e0dcd54bc55095af3c47845a284f132ced4dec5a6d5a9c61ed77c3adaccfb5ad7f347fcb1a55b3 - languageName: node - linkType: hard - "@octokit/types@npm:^4.1.6": version: 4.1.10 resolution: "@octokit/types@npm:4.1.10" @@ -2576,6 +2744,15 @@ __metadata: languageName: node linkType: hard +"@octokit/types@npm:^9.0.0": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 + languageName: node + linkType: hard + "@parcel/watcher@npm:2.0.4": version: 2.0.4 resolution: "@parcel/watcher@npm:2.0.4" @@ -2617,10 +2794,10 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 2faf9878f3a65a1f2855add80b0fe8c6fe83f084ea1ab432fa7506e7c85c55ae121c4af516d089b5737f5fad23b3628fcc83a6a5df29030c3f611185ce0388ac +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard @@ -2640,58 +2817,28 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" - dependencies: - type-detect: 4.0.8 - checksum: babe3fdfc7dfb810f6918f2ae055032a1c7c18910595f1c6bfda87bb1737c1a57268d4ca78c3d8ad2fa4aae99ff79796fad76be735a5a38ab763c0b3cfad1ae7 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" - dependencies: - "@sinonjs/commons": ^2.0.0 - checksum: 24555ed94053319fa18d4efa0923b295a445a00d2515d260b9e4e2b5943bd8b5b55fee85baabb2819a13ca1f57dbc1949265a350f592eef9e2535ec9de711ebc +"@sindresorhus/is@npm:^4.0.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e languageName: node linkType: hard -"@storybook/channel-postmessage@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channel-postmessage@npm:7.0.2" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - qs: ^6.10.0 - telejson: ^7.0.3 - checksum: 7d8695d6266bda9ba66bf8d79d0475f5e971f35896d973b4e8ec92afb9b69b65564a262fca2d1d07728ea61f2cf78443f919b7c26fecfa00735ad7db3d9c12a6 - languageName: node - linkType: hard - -"@storybook/channels@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channels@npm:7.0.2" - checksum: 43211d9707126f875bd01d5c850aa86019ccb58bfba888d49cc35027670ddda4d6843540a9ab9a2f6c23933a46ceb77a0d558b01e3695bccb8b7b129eb3b449c + type-detect: 4.0.8 + checksum: 1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 languageName: node linkType: hard -"@storybook/client-logger@npm:7.0.2, @storybook/client-logger@npm:future": - version: 7.0.2 - resolution: "@storybook/client-logger@npm:7.0.2" +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@storybook/global": ^5.0.0 - checksum: cdcb204f874d01ff65b91447c59becd9ff0c07c9103b3078a3faa63e66e290eb8820a357fee25e0f99674c56e27fb5be20260f4ffef5841a18ab2ad38d3d8bfd - languageName: node - linkType: hard - -"@storybook/core-events@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/core-events@npm:7.0.2" - checksum: 61d2a854c9fcdac8dd92fae704e721eafe0ce4f7fc0de5b5590af706282d996e05b8efab24adf0cedad7a68fc6be057a8e3213be22855bd2db93dc6fdf06bb3d + "@sinonjs/commons": ^3.0.0 + checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 languageName: node linkType: hard @@ -2704,15 +2851,6 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.1.0": - version: 0.1.0 - resolution: "@storybook/csf@npm:0.1.0" - dependencies: - type-fest: ^2.19.0 - checksum: 76e284884eacb54bb2130448c45204d64e9ca436d73614d3369d72049b1e786e31e55c0bbb922b8e1069fecbc97a3d68796d401f8e3d93d7ffba0df59b6d8cbe - languageName: node - linkType: hard - "@storybook/eslint-config-storybook@npm:^3.1.2": version: 3.1.2 resolution: "@storybook/eslint-config-storybook@npm:3.1.2" @@ -2731,35 +2869,14 @@ __metadata: languageName: node linkType: hard -"@storybook/global@npm:^5.0.0": - version: 5.0.0 - resolution: "@storybook/global@npm:5.0.0" - checksum: 8f1b61dcdd3a89584540896e659af2ecc700bc740c16909a7be24ac19127ea213324de144a141f7caf8affaed017d064fea0618d453afbe027cf60f54b4a6d0b - languageName: node - linkType: hard - -"@storybook/instrumenter@npm:future": - version: 7.0.2 - resolution: "@storybook/instrumenter@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.0.2 - checksum: 32d50b35ba1225a210c981e74f35e8c285066d8282218ef3fbfc1b3c39de9902c842029aeceb5df0507805de6b416f2d2610096e74e35fc6e8ff204a85db1a34 - languageName: node - linkType: hard - -"@storybook/jest@npm:future": - version: 0.1.1-future.0 - resolution: "@storybook/jest@npm:0.1.1-future.0" +"@storybook/jest@npm:next": + version: 0.1.1-next.1 + resolution: "@storybook/jest@npm:0.1.1-next.1" dependencies: "@storybook/expect": storybook-jest - "@storybook/instrumenter": future "@testing-library/jest-dom": ^5.16.2 jest-mock: ^27.3.0 - checksum: f180fbd2e0751ee4abd58017bea8ea4594d75cf9949f0fb97b30f2a1669b35a4fe7824258ce6fff7b4de9f834fa1bc6b7be208534cf3f12d0ba3c34e5755a973 + checksum: 09ffd8f56def15bb79e897cad6eb9a2157af223a876936a27b7082de2f3891cccdbaeac1b1e81481e9d50bc7d2837f8029f5b1a4e9f1a3f4aa6314222f4c17be languageName: node linkType: hard @@ -2790,77 +2907,59 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-api@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/preview-api@npm:7.0.2" - dependencies: - "@storybook/channel-postmessage": 7.0.2 - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/csf": ^0.1.0 - "@storybook/global": ^5.0.0 - "@storybook/types": 7.0.2 - "@types/qs": ^6.9.5 - dequal: ^2.0.2 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - checksum: facf922e737a2efe9026b7a3be8968cb1deac78b4ea28572830d2e6f2802b2f8842cb97536f624e7c726451309641fe61c25c6590adb383829f68ac5071e229b - languageName: node - linkType: hard - "@storybook/scripts@workspace:.": version: 0.0.0-use.local resolution: "@storybook/scripts@workspace:." dependencies: - "@babel/core": ^7.20.2 + "@actions/core": ^1.10.0 + "@babel/core": ^7.22.0 "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-decorators": ^7.20.7 + "@babel/plugin-proposal-decorators": ^7.22.0 "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-decorators": ^7.19.0 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/plugin-syntax-typescript": ^7.20.0 - "@babel/preset-env": ^7.20.2 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.18.6 - "@babel/types": ^7.20.7 + "@babel/plugin-syntax-decorators": ^7.22.0 + "@babel/plugin-syntax-jsx": ^7.21.0 + "@babel/plugin-syntax-typescript": ^7.21.0 + "@babel/preset-env": ^7.22.0 + "@babel/preset-react": ^7.22.0 + "@babel/preset-typescript": ^7.21.0 + "@babel/types": ^7.22.0 "@emotion/jest": ^11.10.5 + "@google-cloud/bigquery": ^6.2.0 "@jest/globals": ^29.3.1 - "@linear/sdk": ^1.22.0 - "@nrwl/cli": ^15.4.5 - "@nrwl/nx-cloud": ^15.0.2 - "@nrwl/workspace": ^15.4.5 + "@nx/workspace": 16.2.1 + "@octokit/graphql": ^5.0.5 "@storybook/eslint-config-storybook": ^3.1.2 - "@storybook/jest": future + "@storybook/jest": next "@storybook/linter-config": ^3.1.2 - "@storybook/testing-library": future + "@storybook/testing-library": next "@swc/core": ^1.3.23 - "@testing-library/dom": ^7.29.4 + "@testing-library/dom": ^9.3.0 "@testing-library/jest-dom": ^5.11.9 - "@testing-library/react": ^11.2.2 - "@testing-library/user-event": ^13.2.1 + "@testing-library/react": ^14.0.0 + "@testing-library/user-event": ^14.4.3 + "@types/cross-spawn": ^6.0.2 "@types/detect-port": ^1.3.2 "@types/ejs": ^3.1.1 "@types/escodegen": ^0.0.6 "@types/express": ^4.17.11 - "@types/fs-extra": ^9.0.6 + "@types/fs-extra": ^11.0.1 + "@types/http-server": ^0.12.1 "@types/lodash": ^4 "@types/node": ^16.0.0 "@types/node-fetch": ^2.5.7 + "@types/pretty-hrtime": ^1.0.0 "@types/prompts": 2.0.11 "@types/react": ^16.14.34 "@types/react-dom": ^16.9.17 "@types/semver": ^7.3.4 "@types/serve-static": ^1.13.8 - "@types/shelljs": ^0.8.7 + "@types/uuid": ^9.0.1 + "@types/wait-on": ^5.3.1 "@typescript-eslint/eslint-plugin": ^5.45.0 "@typescript-eslint/experimental-utils": ^5.45.0 "@typescript-eslint/parser": ^5.45.0 "@verdaccio/types": ^10.2.0 + ansi-regex: ^5.0.0 babel-eslint: ^10.1.0 babel-loader: ^9.1.2 boxen: ^5.1.2 @@ -2869,11 +2968,12 @@ __metadata: commander: ^6.2.1 cross-env: ^7.0.3 cross-spawn: ^7.0.3 - danger: ^10.6.2 + danger: ^11.2.6 + dataloader: ^2.2.2 detect-port: ^1.3.0 ejs: ^3.1.8 ejs-lint: ^2.0.0 - esbuild: ^0.16.4 + esbuild: ^0.18.0 esbuild-plugin-alias: ^0.2.1 esbuild-register: ^3.4.1 eslint: ^8.28.0 @@ -2882,60 +2982,73 @@ __metadata: eslint-plugin-storybook: ^0.6.6 execa: ^6.1.0 express: ^4.17.3 + fast-folder-size: ^2.1.0 fast-glob: ^3.2.12 find-up: ^5.0.0 - fs-extra: ^10.1.0 + fs-extra: ^11.1.0 github-release-from-changelog: ^2.1.1 glob: ^10.0.0 - http-server: ^0.12.3 + http-server: ^14.1.1 husky: ^4.3.7 jest: ^29.3.1 jest-environment-jsdom: ^29.3.1 jest-image-snapshot: ^6.0.0 jest-junit: ^14.0.1 + jest-mock-extended: ^3.0.4 jest-os-detection: ^1.3.1 jest-serializer-html: ^7.1.0 jest-watch-typeahead: ^2.2.1 + json5: ^2.2.3 junit-xml: ^1.2.0 lint-staged: ^10.5.4 lodash: ^4.17.21 memoizerific: ^1.11.3 node-fetch: ^2.6.1 - node-gyp: ^8.4.0 + node-gyp: ^9.3.1 npmlog: ^5.0.1 - nx: ^15.4.5 + nx: 16.2.1 + nx-cloud: 16.0.5 + ora: ^5.4.1 p-limit: ^3.1.0 + p-retry: ^5.1.2 + playwright: 1.36.0 + playwright-core: 1.36.0 prettier: ^2.8.0 + pretty-bytes: ^6.1.0 pretty-hrtime: ^1.0.0 + pretty-ms: ^8.0.0 process: ^0.11.10 prompts: ^2.4.0 react: 16.14.0 react-dom: 16.14.0 read-pkg-up: ^7.0.1 recast: ^0.23.1 - remark: ^13.0.0 - remark-cli: ^9.0.0 - remark-lint: ^8.0.0 - remark-preset-lint-recommended: ^5.0.0 + remark: ^14.0.3 + remark-cli: ^11.0.0 + remark-lint: ^9.1.2 + remark-preset-lint-recommended: ^6.1.3 semver: ^7.3.7 serve-static: ^1.14.1 - shelljs: ^0.8.5 + simple-git: ^3.18.0 slash: ^3.0.0 - sort-package-json: ^1.48.1 + sort-package-json: ^2.0.0 tempy: ^1.0.0 + tiny-invariant: ^1.3.1 trash: ^7.0.0 ts-dedent: ^2.0.0 ts-loader: ^9.4.2 ts-node: ^10.9.1 tsup: ^6.7.0 - type-fest: ^3.4.0 - typescript: ~4.9.3 + type-fest: ~2.19 + typescript: 5.0.4 util: ^0.12.4 + uuid: ^9.0.0 verdaccio: ^5.19.1 verdaccio-auth-memory: ^10.2.0 - wait-on: ^5.2.1 + wait-on: ^7.0.1 window-size: ^1.1.1 - zx: ^7.0.3 + yaml: ^2.3.1 + zod: ^3.21.4 dependenciesMeta: "@verdaccio/types": optional: true @@ -2948,28 +3061,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/testing-library@npm:future": - version: 0.1.1-future.0 - resolution: "@storybook/testing-library@npm:0.1.1-future.0" +"@storybook/testing-library@npm:next": + version: 0.2.0-next.1 + resolution: "@storybook/testing-library@npm:0.2.0-next.1" dependencies: - "@storybook/client-logger": future - "@storybook/instrumenter": future - "@testing-library/dom": ^8.3.0 - "@testing-library/user-event": ^13.2.1 + "@testing-library/dom": ^9.0.0 + "@testing-library/user-event": ^14.0.0 ts-dedent: ^2.2.0 - checksum: 5347e2ba663f26eb6a7b00a3a802c36368fcbcd686108d534d07824ca03f8f51bd75d15502217f1a9706728964bd35974cd2e0b6e176a3bf5784132274102111 - languageName: node - linkType: hard - -"@storybook/types@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/types@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - file-system-cache: ^2.0.0 - checksum: c3ac627ef7aafc53850a6a920538886a55bd07c3e201f76c5b75987a0d03f7786623b5bb89f42a6838ce6688525967601d108e42facf4dd7ae0cf99899ba9072 + checksum: 8e9a49cc854e46039a123d35a7c36a5f133f581998f10f4330af1be790fa57dc597caac377939562ba8bf48e551b7d9340e12a1425ca60e1690ff13dca3a89cd languageName: node linkType: hard @@ -2980,90 +3079,92 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-darwin-arm64@npm:1.3.44" +"@swc/core-darwin-arm64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-arm64@npm:1.3.70" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-darwin-x64@npm:1.3.44" +"@swc/core-darwin-x64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-x64@npm:1.3.70" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.44" +"@swc/core-linux-arm-gnueabihf@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.70" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.44" +"@swc/core-linux-arm64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.44" +"@swc/core-linux-arm64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.44" +"@swc/core-linux-x64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-linux-x64-musl@npm:1.3.44" +"@swc/core-linux-x64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-musl@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.44" +"@swc/core-win32-arm64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.70" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.44" +"@swc/core-win32-ia32-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.70" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.44": - version: 1.3.44 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.44" +"@swc/core-win32-x64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.70" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.23": - version: 1.3.44 - resolution: "@swc/core@npm:1.3.44" - dependencies: - "@swc/core-darwin-arm64": 1.3.44 - "@swc/core-darwin-x64": 1.3.44 - "@swc/core-linux-arm-gnueabihf": 1.3.44 - "@swc/core-linux-arm64-gnu": 1.3.44 - "@swc/core-linux-arm64-musl": 1.3.44 - "@swc/core-linux-x64-gnu": 1.3.44 - "@swc/core-linux-x64-musl": 1.3.44 - "@swc/core-win32-arm64-msvc": 1.3.44 - "@swc/core-win32-ia32-msvc": 1.3.44 - "@swc/core-win32-x64-msvc": 1.3.44 + version: 1.3.70 + resolution: "@swc/core@npm:1.3.70" + dependencies: + "@swc/core-darwin-arm64": 1.3.70 + "@swc/core-darwin-x64": 1.3.70 + "@swc/core-linux-arm-gnueabihf": 1.3.70 + "@swc/core-linux-arm64-gnu": 1.3.70 + "@swc/core-linux-arm64-musl": 1.3.70 + "@swc/core-linux-x64-gnu": 1.3.70 + "@swc/core-linux-x64-musl": 1.3.70 + "@swc/core-win32-arm64-msvc": 1.3.70 + "@swc/core-win32-ia32-msvc": 1.3.70 + "@swc/core-win32-x64-msvc": 1.3.70 + peerDependencies: + "@swc/helpers": ^0.5.0 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -3085,45 +3186,41 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 22c94f315e96d96a85aebc12390a9f6c214c00b76783896c2d09669d84befd5752dbceaa6373fb5985373293a099c4bd3ac5f20be424caf05e2742311beba4f7 + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 9433f6df1623de33c400d45bec65b1e54ad9e250ff1c24b3adb6d1925c753dc694ea0a0c6d75456fcf28d0c3e01866c3a880f24d23e35b2f62a9a3218ce7c15e languageName: node linkType: hard -"@testing-library/dom@npm:^7.28.1, @testing-library/dom@npm:^7.29.4": - version: 7.31.2 - resolution: "@testing-library/dom@npm:7.31.2" +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: - "@babel/code-frame": ^7.10.4 - "@babel/runtime": ^7.12.5 - "@types/aria-query": ^4.2.0 - aria-query: ^4.2.2 - chalk: ^4.1.0 - dom-accessibility-api: ^0.5.6 - lz-string: ^1.4.4 - pretty-format: ^26.6.2 - checksum: 51498f6552b669a547202f4f508a1e91b5a0c25a64be987e49601ec00f3d0cc514c591400f0ad49d91b7d522e40e29b29a209aecd43f8611e2240b1ba3d4f93d + defer-to-connect: ^2.0.0 + checksum: 73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f languageName: node linkType: hard -"@testing-library/dom@npm:^8.3.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" +"@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.0": + version: 9.3.1 + resolution: "@testing-library/dom@npm:9.3.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 "@types/aria-query": ^5.0.1 - aria-query: ^5.0.0 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 454c71f65708d1504256ae055f060adf8ed9eadcc7ddbf6d07a528045beceb842783c1253871759f5c137eca58e5e32700dc64b130cbb37e10e7a52ab08d7b44 + checksum: 25d1deddba014c107fd9703181fbb7063ed376d3ad42d7918ee752e7e677edfb5abaf672b22afc5257ffe760c9c7e5cc981656297c328bc61578d23c6b65b4dc languageName: node linkType: hard "@testing-library/jest-dom@npm:^5.11.9, @testing-library/jest-dom@npm:^5.16.2": - version: 5.16.5 - resolution: "@testing-library/jest-dom@npm:5.16.5" + version: 5.17.0 + resolution: "@testing-library/jest-dom@npm:5.17.0" dependencies: "@adobe/css-tools": ^4.0.1 "@babel/runtime": ^7.9.2 @@ -3134,31 +3231,30 @@ __metadata: dom-accessibility-api: ^0.5.6 lodash: ^4.17.15 redent: ^3.0.0 - checksum: 0925fda78096cca355d164d5358b84b9371c4fb6ba60ce60c2263446ac6d9c6aaca75e2792cdb42699fe78c379924c53db672a3510361b577ebb89a0c6e1c629 + checksum: 24e09c5779ea44644945ec26f2e4e5f48aecfe57d469decf2317a3253a5db28d865c55ad0ea4818d8d1df7572a6486c45daa06fa09644a833a7dd84563881939 languageName: node linkType: hard -"@testing-library/react@npm:^11.2.2": - version: 11.2.7 - resolution: "@testing-library/react@npm:11.2.7" +"@testing-library/react@npm:^14.0.0": + version: 14.0.0 + resolution: "@testing-library/react@npm:14.0.0" dependencies: "@babel/runtime": ^7.12.5 - "@testing-library/dom": ^7.28.1 + "@testing-library/dom": ^9.0.0 + "@types/react-dom": ^18.0.0 peerDependencies: - react: "*" - react-dom: "*" - checksum: 5c97aa5fb28a867d674e292e9e556b0890385e729972f8e0c3386001903e5975f6798632a038558750101fc1ff20d5faf7a0fb4d382ee3afe28d0118e9bd2f36 + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 81035913024faf18ba7e163418af517b2c3b85aef496fbd6334bda38f6f6dd4072678c6b76c41148b46b7fc846764f875e1156cbfc7643ffa1b62ee069d78951 languageName: node linkType: hard -"@testing-library/user-event@npm:^13.2.1": - version: 13.5.0 - resolution: "@testing-library/user-event@npm:13.5.0" - dependencies: - "@babel/runtime": ^7.12.5 +"@testing-library/user-event@npm:^14.0.0, @testing-library/user-event@npm:^14.4.3": + version: 14.4.3 + resolution: "@testing-library/user-event@npm:14.4.3" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: ff57edaeab31322c80c3f01d55404b4cebb907b9ec7672b96a1a14d053f172046b01c5f27b45677927ebee8ed91bce695a7d09edec9a48875cfacabe39d0426a + checksum: 28e1e4ed2fdaa9486e203c6789386be228e305abd3fa41f38c828af415fd4a4e80f4de88de0e502ff11c4b4926f221b874a2a45bcc8170d30714e12dad2c1bd0 languageName: node linkType: hard @@ -3198,16 +3294,9 @@ __metadata: linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.3 - resolution: "@tsconfig/node16@npm:1.0.3" - checksum: 451a0d4b2bc35c2cdb30a49b6c699d797b8bbac99b883237659698678076d4193050d90e2ee36016ccbca57075cdb073cadab38cedc45119bac68ab331958cbc - languageName: node - linkType: hard - -"@types/aria-query@npm:^4.2.0": - version: 4.2.2 - resolution: "@types/aria-query@npm:4.2.2" - checksum: 6dc0d94890c2c7c2e347148ea32215b73bf480e0f0888a9bbfb7b531285a3daf0b95e600db5be1c03d6e5f825d63cf8c2aabc5db93d8d1fd47ce3211f73e8d66 + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb languageName: node linkType: hard @@ -3218,16 +3307,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" +"@types/babel__core@npm:^7.1.14": + version: 7.20.1 + resolution: "@types/babel__core@npm:7.20.1" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 75dcd39258bc008b6fd4db7de2c8bfeb29b5cd2c726f54407f70243ddea1d8ce9e7082281557614c4a5f9f30d478387ca6ab6cc576fc829cebeb159bfaa8799f + checksum: c83402fc7ef8abd1f94ffe350b8bde9a35ccb6c3624bc8e39b6a7e1a675d112f6b70ac1b05391a579ca3b126baffe66b0b94f954edef086c4482b97d293c3659 languageName: node linkType: hard @@ -3251,11 +3340,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.18.3 - resolution: "@types/babel__traverse@npm:7.18.3" + version: 7.20.1 + resolution: "@types/babel__traverse@npm:7.20.1" dependencies: - "@babel/types": ^7.3.0 - checksum: 4214fd3e95925d9a7efa01142969a310263430d4f5de89be6c9c193110666677415161b474fa627d751dfd0f1eb7dc1c84c48f8b53098625c6bc78917683215a + "@babel/types": ^7.20.7 + checksum: 5a6a3a26be090573309527184a31f1b82ef55f3d73d811c15f181d323e471305f2390651a04d49d4cd4ca41bbeabb53c9f7862a8e09eab5a0f8910a6aec6e867 languageName: node linkType: hard @@ -3269,6 +3358,27 @@ __metadata: languageName: node linkType: hard +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": ^3.1.4 + "@types/node": "*" + "@types/responselike": ^1.0.0 + checksum: 10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03 + languageName: node + linkType: hard + +"@types/concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "@types/concat-stream@npm:2.0.0" + dependencies: + "@types/node": "*" + checksum: ca8b81be934cfdf6cb9db03b59fa51ef39664fdd8f6a19dab9134cda0c4ac96fec3717e2cdfb55a99c897c7779735792ef6766c30cf644972a87e56f9c1ddccb + languageName: node + linkType: hard + "@types/connect@npm:*": version: 3.4.35 resolution: "@types/connect@npm:3.4.35" @@ -3278,10 +3388,28 @@ __metadata: languageName: node linkType: hard +"@types/cross-spawn@npm:^6.0.2": + version: 6.0.2 + resolution: "@types/cross-spawn@npm:6.0.2" + dependencies: + "@types/node": "*" + checksum: 658bd49267a7200e87e67c48ef1e58ee7418bbd4417fb191393b7051d47f590023090cad7b69eb3821d1907b82392b764e1114b1ec6000b01e98126926c8b06f + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.8 + resolution: "@types/debug@npm:4.1.8" + dependencies: + "@types/ms": "*" + checksum: 913aea60b8c94cd0009bbdd531d8a3594ec3275ca0e8d1cbcf783417884252b3c53113f6665fd2fb0076b8ce628ee12cd083d2af107ed26c0f2e75852d8bc074 + languageName: node + linkType: hard + "@types/detect-port@npm:^1.3.2": - version: 1.3.2 - resolution: "@types/detect-port@npm:1.3.2" - checksum: 4c9ab349b8724e32879c1d241c374e674ce040783dc6768b19d844afff011d1a70adaaf93bf96e1ed33eef9c88cc6c27ce7dce82a1cec8c6e9992ae445a5a255 + version: 1.3.3 + resolution: "@types/detect-port@npm:1.3.3" + checksum: 27c8000e3d41fd1158e2213b31c90b63852299ed66e4604b028a7146519530ab129b8ff867db02b06a32f61e7764f8d5aff0c44c5f543ce2b4b035e5968b62e1 languageName: node linkType: hard @@ -3299,18 +3427,35 @@ __metadata: languageName: node linkType: hard +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/estree-jsx@npm:1.0.0" + dependencies: + "@types/estree": "*" + checksum: faca4c8924cbc36095e11ac7677dce1875583cf8ea99b67911affbbcc2a06ef99e585c02fc7160e55406d3c127b447df5a8ba3b23c211e5bbaad45dd278cde97 + languageName: node + linkType: hard + +"@types/estree@npm:*": + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: b4022067f834d86766f23074a1a7ac6c460e823b00cd8fe94c997bc491e7794615facd3e1520a934c42bd8c0689dbff81e5c643b01f1dee143fc758cac19669e + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.33 - resolution: "@types/express-serve-static-core@npm:4.17.33" + version: 4.17.35 + resolution: "@types/express-serve-static-core@npm:4.17.35" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - checksum: 68f21adeb8cb7085014692daa8fd75b33be2cbb91f954f42fef4804e04cb34abbe8020918d7656243afec4882949ce0c4e8074eaf5a5f8dfbef704690799724a + "@types/send": "*" + checksum: 08db6ffff07b5d53d852bb0a078ea5ee6dc3eb581d8c8fdf0d65f48c641db2830658074c797844e618b0933ce4ca2ddd08191f9d79b12eb2ec3d66f8551716ec languageName: node linkType: hard -"@types/express@npm:^4.17.11, @types/express@npm:^4.7.0": +"@types/express@npm:^4.17.11": version: 4.17.17 resolution: "@types/express@npm:4.17.17" dependencies: @@ -3332,25 +3477,6 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:^9.0.6": - version: 9.0.13 - resolution: "@types/fs-extra@npm:9.0.13" - dependencies: - "@types/node": "*" - checksum: 576d4e9d382393316ed815c593f7f5c157408ec5e184521d077fcb15d514b5a985245f153ef52142b9b976cb9bd8f801850d51238153ebd0dc9e96b7a7548588 - languageName: node - linkType: hard - -"@types/glob@npm:*": - version: 8.1.0 - resolution: "@types/glob@npm:8.1.0" - dependencies: - "@types/minimatch": ^5.1.2 - "@types/node": "*" - checksum: ded07aa0d7a1caf3c47b85e262be82989ccd7933b4a14712b79c82fd45a239249811d9fc3a135b3e9457afa163e74a297033d7245b0dc63cd3d032f3906b053f - languageName: node - linkType: hard - "@types/glob@npm:^7.1.1": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" @@ -3370,6 +3496,45 @@ __metadata: languageName: node linkType: hard +"@types/hast@npm:^2.0.0": + version: 2.3.5 + resolution: "@types/hast@npm:2.3.5" + dependencies: + "@types/unist": ^2 + checksum: 3fc5185e7fb5139a4f60f0d4450179c1f88b7e288a054415b273e4a32f0c4cfe825a4cad075824dcdf3984609b47f13141f8900dedb3aeab482ae5a16275e807 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:*": + version: 4.0.1 + resolution: "@types/http-cache-semantics@npm:4.0.1" + checksum: 6d6068110a04cac213bdc0fff9c7bac028b5a2da390492204328987d8ddc500adc10d9cf5747a6333dab261712655dcfe120ea1d5527c205d012a39cdccc2a7b + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.1 + resolution: "@types/http-errors@npm:2.0.1" + checksum: 3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 + languageName: node + linkType: hard + +"@types/http-server@npm:^0.12.1": + version: 0.12.1 + resolution: "@types/http-server@npm:0.12.1" + dependencies: + "@types/connect": "*" + checksum: 9b2397640b961589b23c98c5b1ed9f507fe07413f5723b3b4f447740d70ed702a356ec32dfa7e77fc477505f65758e423ee8745b879efb1fdddc23a840c29534 + languageName: node + linkType: hard + +"@types/is-empty@npm:^1.0.0": + version: 1.2.1 + resolution: "@types/is-empty@npm:1.2.1" + checksum: 3bad9f550eb20817b7634cae1453f88cb3e50622b93b0e9a365239ee6b3135ee1b2390ba897eb7033fa257345d2044cd7d73c80198ec0e40d6fec7de5d165dd2 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -3396,12 +3561,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:>=26.0.0": - version: 29.5.0 - resolution: "@types/jest@npm:29.5.0" + version: 29.5.3 + resolution: "@types/jest@npm:29.5.3" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: e77f88cbdf867838320767bf42915570bcebbf7c378578d60654b9ea8c15981b6c2c06e4e56985e35467d0cdb673d9129fd49e21a485fda9db4bb0a152f2cb86 + checksum: ba5a28569368db62eeff85ea53661c7dff79a5be739a59926c37868888cc69f8b7d0c7c6209139ecca5b83056843ba67fa764f7e7fc9c8d1c4e1f80351ede0f4 languageName: node linkType: hard @@ -3417,9 +3582,9 @@ __metadata: linkType: hard "@types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: bd1f9a7b898ff15c4bb494eb19124f2d688b804c39f07cbf135ac73f35324970e9e8329b72aae1fb543d925ea295a1568b23056c26658cecec4741fa28c3b81a + version: 7.0.12 + resolution: "@types/json-schema@npm:7.0.12" + checksum: 2c39946ae321fe42d085c61a85872a81bbee70f9b2054ad344e8811dfc478fdbaf1ebf5f2989bb87c895ba2dfc3b1dcba85db11e467bbcdc023708814207791c languageName: node linkType: hard @@ -3439,19 +3604,28 @@ __metadata: languageName: node linkType: hard +"@types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "*" + checksum: ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + "@types/lodash@npm:^4, @types/lodash@npm:^4.14.175": - version: 4.14.192 - resolution: "@types/lodash@npm:4.14.192" - checksum: 6807402e293cb943808a444d1ef514ce13de4f870b3b382fe729f8235ea280c4d037b9514443723afd3d04b2cf9e8f1b3fc0075d947edfeb1078347dc2b471b0 + version: 4.14.195 + resolution: "@types/lodash@npm:4.14.195" + checksum: 6d733276df592614a0943a0053056140398b3c263cdf2557d4301b3a47b07ff561926cb9339a4725acbc7d8766f91ded218df11e0a4288cee369eafb5141d94d languageName: node linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.11 - resolution: "@types/mdast@npm:3.0.11" + version: 3.0.12 + resolution: "@types/mdast@npm:3.0.12" dependencies: - "@types/unist": "*" - checksum: 569ec32ac16deb42f2c9e7cdbfb5be0f67d2407036b49ba9cfa07ad0258b044c259922acba170eaed165ebcf5eb168032fbb4b3e35023fe8c581fe46e9bcbad0 + "@types/unist": ^2 + checksum: b5af41e4f19a149eba58cde8ccacc36117640aefe28966637c54c27a8fbcfa3972e88cafd859c7bf39cd5c4e965e4196169001beac4a1980cfee6b08eea896a6 languageName: node linkType: hard @@ -3462,41 +3636,48 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:*, @types/minimatch@npm:^5.1.2": +"@types/mime@npm:^1": + version: 1.3.2 + resolution: "@types/mime@npm:1.3.2" + checksum: 61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 + languageName: node + linkType: hard + +"@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" checksum: 83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 languageName: node linkType: hard -"@types/minimist@npm:^1.2.2": - version: 1.2.2 - resolution: "@types/minimist@npm:1.2.2" - checksum: f220f57f682bbc3793dab4518f8e2180faa79d8e2589c79614fd777d7182be203ba399020c3a056a115064f5d57a065004a32b522b2737246407621681b24137 +"@types/ms@npm:*": + version: 0.7.31 + resolution: "@types/ms@npm:0.7.31" + checksum: 19fae4f587651e8761c76a0c72ba8af1700d37054476878d164b758edcc926f4420ed06037a1a7fdddc1dbea25265895d743c8b2ea44f3f3f7ac06c449b9221e languageName: node linkType: hard "@types/node-fetch@npm:^2.5.7": - version: 2.6.3 - resolution: "@types/node-fetch@npm:2.6.3" + version: 2.6.4 + resolution: "@types/node-fetch@npm:2.6.4" dependencies: "@types/node": "*" form-data: ^3.0.0 - checksum: ce1a546d9a6f8df1c937f3c06ad85b57d92974a5feccc3502d13c0fc76c83629cd3f3f255dee03e5050abf90d0871f06628863ae758b70697af8b39cdd2e1c01 + checksum: e43e4670ed8b7693dbf660ac1450b14fcfcdd8efca1eb0f501b6ad95af2d1fa06f8541db03e9511e82a5fee510a238fe0913330c9a58f8ac6892b985f6dd993e languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^18.14.2": - version: 18.15.11 - resolution: "@types/node@npm:18.15.11" - checksum: 670deb1a9daa812dc86b1e8964c0c6b0bef7c32672833c10578c1e5dd2682f2bd99b86d814fde86a5dd4a3da48ea039f41db30a835b245aa7c34c62fa1f23f0d +"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^16.0.0": + version: 16.18.38 + resolution: "@types/node@npm:16.18.38" + checksum: 02631f1cfe0c111024e4bf0909c3bfc7476e65e03cb32dc48b2f71f000590b244d239b349b91a6b03667c33f31fbd3200c8fc5838623fcaadce3e92d60efee1a languageName: node linkType: hard -"@types/node@npm:^16.0.0": - version: 16.18.23 - resolution: "@types/node@npm:16.18.23" - checksum: 01cd6b3046273e1796bba0fb4bf8acff263212d16753385378952e77d239eb4b9535ff0c2427d751cb413c4883248475706e3115795c27be41176f0a7b8fccc8 +"@types/node@npm:^18.0.0": + version: 18.16.19 + resolution: "@types/node@npm:18.16.19" + checksum: 322aaf3c04dcbbae619c7e8d40ed70e4ae41894e88776267d87bf3719a71b9a21ecde903d9f67cec3a663cf608d2822056ab739b48dada75433db38fadac2514 languageName: node linkType: hard @@ -3515,9 +3696,16 @@ __metadata: linkType: hard "@types/prettier@npm:^2.1.5": - version: 2.7.2 - resolution: "@types/prettier@npm:2.7.2" - checksum: 16ffbd1135c10027f118517d3b12aaaf3936be1f3c6e4c6c9c03d26d82077c2d86bf0dcad545417896f29e7d90faf058aae5c9db2e868be64298c644492ea29e + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 + languageName: node + linkType: hard + +"@types/pretty-hrtime@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/pretty-hrtime@npm:1.0.1" + checksum: e990110a3626e987319092c5149d5ea244785b83fbbd8e62605714ec1fa4317a3524ae0b6381cdc2ca92619d9a451b3fe9ff4085c42826f5398e3380d3031bff languageName: node linkType: hard @@ -3537,14 +3725,7 @@ __metadata: languageName: node linkType: hard -"@types/ps-tree@npm:^1.1.2": - version: 1.1.2 - resolution: "@types/ps-tree@npm:1.1.2" - checksum: d43d5ac375886c37b11f54254578925ff07093b07326898d34eec744bf5721b61b7f3f743b2337e7157a368bb39166e679f26d464620371a0d232509f7f9ac99 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": +"@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" checksum: 157eb05f4c75790b0ebdcf7b0547ff117feabc8cda03c3cac3d3ea82bb19a1912e76a411df3eb0bdd01026a9770f07bc0e7e3fbe39ebb31c1be4564c16be35f1 @@ -3559,22 +3740,47 @@ __metadata: linkType: hard "@types/react-dom@npm:^16.9.17": - version: 16.9.18 - resolution: "@types/react-dom@npm:16.9.18" + version: 16.9.19 + resolution: "@types/react-dom@npm:16.9.19" dependencies: "@types/react": ^16 - checksum: 1a08887a339be7b63dd5cad8952bc484dd5ade7c21f101a7971b516a16be62340d0518eb5c5f3459c55dedc436623e67d9645a92304b11a172630c0b6ed0726c + checksum: fe74e2166054fd4c6ff86b561be559d2ffd77524818a49f07206892b73c473d0db0fa7d82bd68c81d5ba3dccfbb1dd0478c28879a6f8ac2639fb1e77cef3db0f + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.0.0": + version: 18.2.7 + resolution: "@types/react-dom@npm:18.2.7" + dependencies: + "@types/react": "*" + checksum: bd090f5e1b13765fbc191d9eb720dd152d26c20558221963009189c4636ce11e4c1c976e4cde4a74335f997a2be651af27d3727474a8091424101a83a71eebfb languageName: node linkType: hard -"@types/react@npm:^16, @types/react@npm:^16.14.34": - version: 16.14.38 - resolution: "@types/react@npm:16.14.38" +"@types/react@npm:*, @types/react@npm:^16, @types/react@npm:^16.14.34": + version: 16.14.43 + resolution: "@types/react@npm:16.14.43" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: bb483f18f3a6675f136a673dbc76b71042eeca09a378ac07a88a4067af4913a9b14ebb9c5c1d772bf640a0d2b7cb77eab4a79ff44fde9aa72db8241d80d46820 + checksum: 1878039ed0d81bcfcdb7e389e221f7e3f0470e82007c60e58196b160c733ff194f6784e104e8071a96ec93d14998875c88c2dcf48aa49b73d16c5fc75d1bb602 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/responselike@npm:1.0.0" + dependencies: + "@types/node": "*" + checksum: 474ac2402e6d43c007eee25f50d01eb1f67255ca83dd8e036877292bbe8dd5d2d1e50b54b408e233b50a8c38e681ff3ebeaf22f18b478056eddb65536abb003a + languageName: node + linkType: hard + +"@types/retry@npm:0.12.1": + version: 0.12.1 + resolution: "@types/retry@npm:0.12.1" + checksum: d2d08393973693826fc947fb09596c34bd65863201e2f6d7e9d7a02d504199d6a2bab13eba56f6366ee0fd45434c699a9fdcfff3311e63bf2fad7a4cf34bacfd languageName: node linkType: hard @@ -3586,29 +3792,30 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 73295bb1fee46f8c76c7a759feeae5a3022f5bedfdc17d16982092e4b33af17560234fb94861560c20992a702a1e1b9a173bb623a96f95f80892105f5e7d25e3 + version: 7.5.0 + resolution: "@types/semver@npm:7.5.0" + checksum: ca4ba4642b5972b6e88e73c5bc02bbaceb8d76bce71748d86e3e95042d4e5a44603113a1dcd2cb9b73ad6f91f6e4ab73185eb41bbfc9c73b11f0ed3db3b7443a languageName: node linkType: hard -"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.8": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" +"@types/send@npm:*": + version: 0.17.1 + resolution: "@types/send@npm:0.17.1" dependencies: - "@types/mime": "*" + "@types/mime": ^1 "@types/node": "*" - checksum: dc934e2adce730480af5af6081b99f50be4dfb7f44537893444bcf1dc97f5d5ffb16b38350ecd89dd114184d751ba3271500631fa56cf1faa35be56f8e45971b + checksum: 1aad6bfafdaa3a3cadad1b441843dfd166821c0e93513daabe979de85b552a1298cfb6f07d40f80b5ecf14a3194dc148deb138605039841f1dadc7132c73e634 languageName: node linkType: hard -"@types/shelljs@npm:^0.8.7": - version: 0.8.11 - resolution: "@types/shelljs@npm:0.8.11" +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.8": + version: 1.15.2 + resolution: "@types/serve-static@npm:1.15.2" dependencies: - "@types/glob": "*" + "@types/http-errors": "*" + "@types/mime": "*" "@types/node": "*" - checksum: e78c52012315d53e28560c2f926b18d2a8c6172a574c239c3982a63f95f4b562d05e13169153d11e11e13c86e10ede3c3d794d58b5833dd5f5b272766ad39a83 + checksum: 5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb languageName: node linkType: hard @@ -3619,12 +3826,26 @@ __metadata: languageName: node linkType: hard +"@types/supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "@types/supports-color@npm:8.1.1" + checksum: c124d04302f65abc0ca86d622aeafcc9582a92cb0573287ec76a5b17fe3cc52a5ad34b2d458cf57f8a146ec39616901f5745985ddfc054f476ec8a983dfa3830 + languageName: node + linkType: hard + "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.5 - resolution: "@types/testing-library__jest-dom@npm:5.14.5" + version: 5.14.8 + resolution: "@types/testing-library__jest-dom@npm:5.14.8" dependencies: "@types/jest": "*" - checksum: f4c82418fdc129806d413d48064049ab3b099635dad06c40be2188134d15135b0b053044de7b0e032867b1ec754e7446046d8fdf6863b9454f8f757f1cac702d + checksum: 83b9e7470da50d1a594c0afd999f689955e61cb8d9a8a32582ca14f73cc8503428376f98414becc1dc9e712f3de8ee2e49f41ed0117ab6a382c79988682e857e + languageName: node + linkType: hard + +"@types/text-table@npm:^0.2.0": + version: 0.2.2 + resolution: "@types/text-table@npm:0.2.2" + checksum: 83e7a78f8434b8c0f536249c39028624a3ef2c37e0d4acfe839c0cf1a53fda5bb2aa56403455c5c0cc92009d5fcebb24c195f93ea8aced6701577ad5d738c19a languageName: node linkType: hard @@ -3635,17 +3856,26 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/unist@npm:2.0.7" + checksum: ecfb4ad9909ba9390fc3b6923a1d783e99753b0687f5cd99a0e56b6c05e1c72bf4e55cb1b8c0ffda49c6cbead4636de351a130f63d7648c554dc526038733b25 languageName: node linkType: hard -"@types/which@npm:^2.0.2": - version: 2.0.2 - resolution: "@types/which@npm:2.0.2" - checksum: c9a2ca5f1d4ca26381cd8adc7415f9e203fa5bfa2f7855c68bc5b676dc402f9c31bd8c83766bfa73d7aa70a0f4b979e7eb139ceec41a17ac2e1fc08a5bca6ba8 +"@types/uuid@npm:^9.0.1": + version: 9.0.2 + resolution: "@types/uuid@npm:9.0.2" + checksum: 4c4834f9738575a69db1179589cf397830dc205850b491216697afb254764c79c96a63b92f76e81b6d03515bed9227adf184fa4d33bb04970e6377e2f7c5bab9 + languageName: node + linkType: hard + +"@types/wait-on@npm:^5.3.1": + version: 5.3.1 + resolution: "@types/wait-on@npm:5.3.1" + dependencies: + "@types/node": "*" + checksum: fae18fa11910e0471582b762839d198852ed1b9fc75b2feae388f9f27502c16609514121fb2d9c9a63e2f973037b878b84635ac00cc8de345b5f286d26f03fc1 languageName: node linkType: hard @@ -3656,15 +3886,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^15.0.0": - version: 15.0.15 - resolution: "@types/yargs@npm:15.0.15" - dependencies: - "@types/yargs-parser": "*" - checksum: b52519ba68a8d90996b54143ff74fcd8ac1722a1ef4a50ed8c3dbc1f7a76d14210f0262f8b91eabcdab202ff4babdd92ce7332ab1cdd6af4eae7c9fc81c83797 - languageName: node - linkType: hard - "@types/yargs@npm:^16.0.0": version: 16.0.5 resolution: "@types/yargs@npm:16.0.5" @@ -3684,15 +3905,15 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/eslint-plugin@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/type-utils": 5.57.1 - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/type-utils": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 semver: ^7.3.7 @@ -3703,54 +3924,54 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3847db76ed4a5df9cbb0f0155afa81951323a93ba37de3dca872b325502d0203da859a67f6d201bcfdf4985188b80227b7fd039206f7b921c96d33befe7ed25d + checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/experimental-utils@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" dependencies: - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/utils": 5.62.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 3a111083514902aa36eeeb7acfb76aba0fbf88aa8b36d8645ef454a6b7c219c432e6bd9d902615d1396abcf1b68dc613a9561a8fa911253fc2c9bdfa7772d875 + checksum: f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/parser@npm:5.57.1" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/typescript-estree": 5.57.1 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 4e2ea4694b261a25bca452db502666ddb4444cced9518eb2d34bd06d099885858307c9b320fd1aaeb45513811dc1984bbba370e5a8567671bad7fc5a0eb8bcc7 + checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/scope-manager@npm:5.57.1" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/visitor-keys": 5.57.1 - checksum: f0905f70939980164c0205c6c6d3638bea40fd9afb1acc83632360e66725f185eee9da595721f0bcd57cc5f951224d9d47bd8dc9c9b2373920f9d236081a8344 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/type-utils@npm:5.57.1" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": 5.57.1 - "@typescript-eslint/utils": 5.57.1 + "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -3758,23 +3979,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 21fb0653398d2d6d32e4bcb8fe4f4d802d63f0cd50f2e4b982f410b075f5441edffe64924dd1ba71f89eccef3b04eaae8c23543e7618723c7344914378ce3796 + checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/types@npm:5.57.1" - checksum: 549214a87a52359013270982ef4e69ce17d8a063717a8cb9d127425e76b9113a8db437b67e6802be2ba35c4c025cb37907b003cc29306a8d7d7800c58838aa38 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/typescript-estree@npm:5.57.1" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/visitor-keys": 5.57.1 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -3783,35 +4004,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3c5483a9bb8413ba117be12de334b9e533fe75320b5308e7d21a41661dd627b8a403575e5bce84ff9ca7b0678446dd6e98e73b2f05b9f4bb2d02a0a067b421d7 + checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.57.1, @typescript-eslint/utils@npm:^5.45.0": - version: 5.57.1 - resolution: "@typescript-eslint/utils@npm:5.57.1" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.45.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.57.1 - "@typescript-eslint/types": 5.57.1 - "@typescript-eslint/typescript-estree": 5.57.1 + "@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 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: bab8a94e30fc22fa6b3db5c6eee059697ce5e5e03f355c1fc465de184129b4824186a82235e14111c644d2b337721ae9f4d294a52a6f3dd4377edd35b922e3aa + checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.57.1": - version: 5.57.1 - resolution: "@typescript-eslint/visitor-keys@npm:5.57.1" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.57.1 + "@typescript-eslint/types": 5.62.0 eslint-visitor-keys: ^3.3.0 - checksum: 9a84589334fe675d18ca3a572aa0caf1b4c7baa80857642aee40378f5c79cf9dddd06a0fec31d7ff6a73f577f68f910fb745d51728fac317b388b8de764561db + checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard @@ -3825,32 +4046,32 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:6.0.0-6-next.67": - version: 6.0.0-6-next.67 - resolution: "@verdaccio/config@npm:6.0.0-6-next.67" +"@verdaccio/config@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/config@npm:6.0.0-6-next.74" dependencies: - "@verdaccio/core": 6.0.0-6-next.67 - "@verdaccio/utils": 6.0.0-6-next.35 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 3.1.2 yup: 0.32.11 - checksum: 35cee90b0a975f5426ce8023c0d5618b7ce58028671041b025b0b524db3bb0c148dfaf3b63f2055d13092a43d8bd651e308ef5bbf962935cb4ab65967282e6cf + checksum: e5f058d33d49a5734df9f8abb5e4bd2971d86956c523c45279957ea41d964a42070708d5293be379fd876cbb01d177248cf3c42c738d19cf7057dbfcde693df1 languageName: node linkType: hard -"@verdaccio/core@npm:6.0.0-6-next.67": - version: 6.0.0-6-next.67 - resolution: "@verdaccio/core@npm:6.0.0-6-next.67" +"@verdaccio/core@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/core@npm:6.0.0-6-next.74" dependencies: - ajv: 8.11.2 - core-js: 3.28.0 - http-errors: 1.8.1 + ajv: 8.12.0 + core-js: 3.30.2 + http-errors: 2.0.0 http-status-codes: 2.2.0 process-warning: 1.0.0 - semver: 7.3.8 - checksum: cbd59fbe650ef552b1088828fa924713b564a6a6c034b085fbb799c7c30874d6696eb8cd2d1d7ce6a19960ea24f8df7ec4f9f0d874f59ee930ea0ff3d81cf5cd + semver: 7.5.4 + checksum: fd67973cb6d9d368e492892d81d497d2cf6959f5a0598b4d61b738392f84a9ccafbcad2b9c8ca6dc7240e028178a84a78636d998f1db43a7abe823e3813a827a languageName: node linkType: hard @@ -3863,6 +4084,15 @@ __metadata: languageName: node linkType: hard +"@verdaccio/file-locking@npm:11.0.0-6-next.7": + version: 11.0.0-6-next.7 + resolution: "@verdaccio/file-locking@npm:11.0.0-6-next.7" + dependencies: + lockfile: 1.0.4 + checksum: 5c4017fff6db7fba3942590757eae6a9a5da31e959e03aad2f87ab2f642c218857c64cbaf542d4d4931cddfb29076178ace1f165a46078d930e69d7d773e5d45 + languageName: node + linkType: hard + "@verdaccio/local-storage@npm:10.3.3": version: 10.3.3 resolution: "@verdaccio/local-storage@npm:10.3.3" @@ -3879,56 +4109,63 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-7@npm:6.0.0-6-next.12": - version: 6.0.0-6-next.12 - resolution: "@verdaccio/logger-7@npm:6.0.0-6-next.12" +"@verdaccio/logger-7@npm:6.0.0-6-next.19": + version: 6.0.0-6-next.19 + resolution: "@verdaccio/logger-7@npm:6.0.0-6-next.19" dependencies: - "@verdaccio/logger-commons": 6.0.0-6-next.35 + "@verdaccio/logger-commons": 6.0.0-6-next.42 pino: 7.11.0 - checksum: 5a1a72f3afc0ce5c76792502c76bf090f39cba380f6c1845f514ee7ff2d4883e0c0ab3d89b6581e7ff01f06bf28ade85b0aa0049e3a3280e57c1346bb282dbfc + checksum: f14ce17274ff3b8119f6b0544b07d24708e6c14a874fb7e945bb993652ef01ff96eccb0e9cdd49b5cd2e16c31c2b0d20e66413e429844e56464b3623629c580a languageName: node linkType: hard -"@verdaccio/logger-commons@npm:6.0.0-6-next.35": - version: 6.0.0-6-next.35 - resolution: "@verdaccio/logger-commons@npm:6.0.0-6-next.35" +"@verdaccio/logger-commons@npm:6.0.0-6-next.42": + version: 6.0.0-6-next.42 + resolution: "@verdaccio/logger-commons@npm:6.0.0-6-next.42" dependencies: - "@verdaccio/core": 6.0.0-6-next.67 - "@verdaccio/logger-prettify": 6.0.0-6-next.9 - colorette: 2.0.19 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/logger-prettify": 6.0.0-6-next.10 + colorette: 2.0.20 debug: 4.3.4 - checksum: c5d9477ea7e1e722f14cde7134de92a59f51188dc1529d23a1474acb5a3d177f7588694ef06b11a9e796ed0225f17ffd73409caef86f932f14530ab74a0852f1 + checksum: 012f947588755e2973a2f73243f6ecadce078de9a5a69afe3fc1c5d3f2c48fec75ba49935f8906dec72d940101fc96a3e6cfd36c6e09f36e39e50d47ec857524 languageName: node linkType: hard -"@verdaccio/logger-prettify@npm:6.0.0-6-next.9": - version: 6.0.0-6-next.9 - resolution: "@verdaccio/logger-prettify@npm:6.0.0-6-next.9" +"@verdaccio/logger-prettify@npm:6.0.0-6-next.10": + version: 6.0.0-6-next.10 + resolution: "@verdaccio/logger-prettify@npm:6.0.0-6-next.10" dependencies: - colorette: 2.0.19 + colorette: 2.0.20 dayjs: 1.11.7 lodash: 4.17.21 pino-abstract-transport: 1.0.0 - sonic-boom: 3.2.1 - checksum: 43162f785baf4894a8734841c05fcb3dc299dcc3cda17047ac7131147eddc5347d9505b8028a6af0d8aa4d6894ced0a381cf9aba5df5cb1feb482bea627ec878 + sonic-boom: 3.3.0 + checksum: 60bbfaea9bfdc152995f6f7f254f9c00ed5d1817c179cf5041e311335ea69ef6978768e560b950b76935b9347560665a853253be2e22075b7bad847cd17cbcc6 languageName: node linkType: hard -"@verdaccio/middleware@npm:6.0.0-6-next.46": - version: 6.0.0-6-next.46 - resolution: "@verdaccio/middleware@npm:6.0.0-6-next.46" +"@verdaccio/middleware@npm:6.0.0-6-next.53": + version: 6.0.0-6-next.53 + resolution: "@verdaccio/middleware@npm:6.0.0-6-next.53" dependencies: - "@verdaccio/config": 6.0.0-6-next.67 - "@verdaccio/core": 6.0.0-6-next.67 - "@verdaccio/url": 11.0.0-6-next.33 - "@verdaccio/utils": 6.0.0-6-next.35 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 express: 4.18.2 express-rate-limit: 5.5.1 lodash: 4.17.21 - lru-cache: 7.16.1 + lru-cache: 7.18.3 mime: 2.6.0 - checksum: d267249a1c8aa84f93333bc3e778125dc220c4d6c11da849b1bc8f924c04627553b6ce759c4bed85ac036c2082448e3d754585486f7666a5cebcaa4667e1ba53 + checksum: ad93e542bcd6820f3ba9f951c5b919fe9e6aadde9ed914017ac19ab1db729b31aab4a8a6395e7c00d8f0d97bfd0a226f28049e129038feb71e544c392dd8d8ef + languageName: node + linkType: hard + +"@verdaccio/search@npm:6.0.0-6-next.2": + version: 6.0.0-6-next.2 + resolution: "@verdaccio/search@npm:6.0.0-6-next.2" + checksum: 0d529c30143206c4a031c64eb0fc2a62a1395c94f36c7595afb8200d2d3db35f48ae95c9ada835c3955ed6df84151fe5f6c5455e81aed9570bec18b1eed89b57 languageName: node linkType: hard @@ -3950,16 +4187,16 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:11.0.0-6-next.36": - version: 11.0.0-6-next.36 - resolution: "@verdaccio/tarball@npm:11.0.0-6-next.36" +"@verdaccio/tarball@npm:11.0.0-6-next.43": + version: 11.0.0-6-next.43 + resolution: "@verdaccio/tarball@npm:11.0.0-6-next.43" dependencies: - "@verdaccio/core": 6.0.0-6-next.67 - "@verdaccio/url": 11.0.0-6-next.33 - "@verdaccio/utils": 6.0.0-6-next.35 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 lodash: 4.17.21 - checksum: ece4307aaf2b1efe40ee9de4fe5291ad6cd519aab66f5deb638e6f7ff24a607dfbaa3ba16571aeae352d98cf7dc78f5792727f8b9e1d1a385bd6da7255124d2a + checksum: e1b5bd8ba9e1a9a2b6920672f5cede450a432c29d3c837dc59bb99ae3753622a3c180a4f245b1c5991e03094ae38a2257b07098dee5236fceb7ff1f33e9f17bb languageName: node linkType: hard @@ -3970,34 +4207,34 @@ __metadata: languageName: node linkType: hard -"@verdaccio/ui-theme@npm:6.0.0-6-next.67": - version: 6.0.0-6-next.67 - resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.67" - checksum: 967dd9af17ddf4ea9f5fc5ba347cd2ea34ae039e9d983ee967aa64e117ab6e714a028b26afec533b7d3002bb09995215a6e6962871d799a1cb74e7a4d4419f37 +"@verdaccio/ui-theme@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.74" + checksum: 887457df9282304c2650b3c0510f7e04cc63f3488746ebecc261b11fb650f3104c70a060b116185b17ad7282b2800342ec7c867d10bfac66b27ed5c539f0b321 languageName: node linkType: hard -"@verdaccio/url@npm:11.0.0-6-next.33": - version: 11.0.0-6-next.33 - resolution: "@verdaccio/url@npm:11.0.0-6-next.33" +"@verdaccio/url@npm:11.0.0-6-next.40": + version: 11.0.0-6-next.40 + resolution: "@verdaccio/url@npm:11.0.0-6-next.40" dependencies: - "@verdaccio/core": 6.0.0-6-next.67 + "@verdaccio/core": 6.0.0-6-next.74 debug: 4.3.4 lodash: 4.17.21 validator: 13.9.0 - checksum: 3bc3fdd18ac04cdc8f5b60231b5cdc70a2be12bb6e4204c3b4235fbcf3768c3ebfde60d34baa715340b0a70d3da03572e7ced85ebd2a135a21fabe74d1f3c320 + checksum: bcce4083797591a4ffc45e4162909912487a2635bd6d541adc326261d220598b57979eeae788b3d31c8347d0583cce99ed538e0ef8b6b9e88bfc6cd45a8f6e73 languageName: node linkType: hard -"@verdaccio/utils@npm:6.0.0-6-next.35": - version: 6.0.0-6-next.35 - resolution: "@verdaccio/utils@npm:6.0.0-6-next.35" +"@verdaccio/utils@npm:6.0.0-6-next.42": + version: 6.0.0-6-next.42 + resolution: "@verdaccio/utils@npm:6.0.0-6-next.42" dependencies: - "@verdaccio/core": 6.0.0-6-next.67 + "@verdaccio/core": 6.0.0-6-next.74 lodash: 4.17.21 minimatch: 3.1.2 - semver: 7.3.8 - checksum: b6bccb003726f2e72817ac07ffd638012d5b79308c4c5858980bdb5522d5f9ca4972e34c60652d45a092742c3f696f620830dfe72e7198ad92e60489303a058d + semver: 7.5.4 + checksum: c3f3dbed86dc470f19909127ad660b1a78f6fb58944ba4e9114d3683444014c723372f320d329e8c6b57962f5287fe43c3201afa0b7e6d3a5dd7f88647796b0c languageName: node linkType: hard @@ -4009,12 +4246,12 @@ __metadata: linkType: hard "@yarnpkg/parsers@npm:^3.0.0-rc.18": - version: 3.0.0-rc.42 - resolution: "@yarnpkg/parsers@npm:3.0.0-rc.42" + version: 3.0.0-rc.48.1 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.48.1" dependencies: js-yaml: ^3.10.0 tslib: ^2.4.0 - checksum: 31ffaecb01c903331063168e58cf9d6358bee4baecbc53a04c75a16d9403e477a9ac02c18924acfed54cb6164cd38a9858434d925baf0f4ef2b3d3e9672b4353 + checksum: 05197a056e9817f9fe059df303f7e0cb9b1740ffd18b4f5bc831366f8284f638973f1ae324e99300c463540ecb5a3c189c1b36f96c320d782c8224ff2954e8c2 languageName: node linkType: hard @@ -4048,13 +4285,20 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:1, abbrev@npm:^1.0.0": +"abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: 3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 languageName: node linkType: hard +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -4127,12 +4371,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 + checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 languageName: node linkType: hard @@ -4143,15 +4387,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:4, agent-base@npm:^4.3.0": - version: 4.3.0 - resolution: "agent-base@npm:4.3.0" - dependencies: - es6-promisify: ^5.0.0 - checksum: a618d4e4ca7c0c2023b2664346570773455c501a930718764f65016a8a9eea6d2ab5ba54255589e46de529bab4026a088523dce17f94e34ba385af1f644febe1 - languageName: node - linkType: hard - "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -4161,7 +4396,16 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": +"agent-base@npm:^7.0.2": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: ^4.3.4 + checksum: fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" dependencies: @@ -4196,7 +4440,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.0.0": +"ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: @@ -4207,15 +4451,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.11.2": - version: 8.11.2 - resolution: "ajv@npm:8.11.2" +"ajv@npm:8.12.0, ajv@npm:^8.0.0, ajv@npm:^8.2.0, ajv@npm:^8.9.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 - checksum: 152450e03f45e6ff09dab02d9647340e7bf7bcffbe88047b1c5ad7518cc278aa812f1f41606958772a93861b06b8abc91ddb9e124626aab253a9efef875d8e2c + checksum: ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e languageName: node linkType: hard @@ -4231,18 +4475,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.2.0, ajv@npm:^8.8.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - "ansi-align@npm:^3.0.0": version: 3.0.1 resolution: "ansi-align@npm:3.0.1" @@ -4269,11 +4501,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^6.0.0": - version: 6.1.0 - resolution: "ansi-escapes@npm:6.1.0" + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" dependencies: type-fest: ^3.0.0 - checksum: e71d2d0d28b622df3b838a03a8c25df100ca553623ac5ea100ffba2dff26fffa220a5ad8beb9f2428543aa69b4f96af566ec40bcaa581f7f9cb71d863437262d + checksum: 3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e languageName: node linkType: hard @@ -4316,6 +4548,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -4397,22 +4636,21 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" dependencies: - "@babel/runtime": ^7.10.2 - "@babel/runtime-corejs3": ^7.10.2 - checksum: 7e224fbbb4de8210c5d8cbaf0e1a22caa78f2068bf231f4c75302bd77eeba1c3e3b97912080535140be60174720d2ac817e5d6fec18592951b4b6488d4da7cdc + deep-equal: ^2.0.5 + checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf languageName: node linkType: hard "aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" dependencies: - deep-equal: ^2.0.5 - checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + dequal: ^2.0.3 + checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 languageName: node linkType: hard @@ -4433,7 +4671,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -4506,6 +4744,27 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.1": + version: 1.0.1 + resolution: "arraybuffer.prototype.slice@npm:1.0.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.0 + get-intrinsic: ^1.2.1 + is-array-buffer: ^3.0.2 + is-shared-array-buffer: ^1.0.2 + checksum: db460cb4a96c3c9e27a2a7eed5d0ab1fcfccae9fc8cd1b4883cbb03cd29060b373e0723e78b5c786fdec2025a0ab12eb840c72b2f26016bac906b91bc4e9e4db + languageName: node + linkType: hard + +"arrify@npm:^2.0.0, arrify@npm:^2.0.1": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" @@ -4589,13 +4848,6 @@ __metadata: languageName: node linkType: hard -"atob-lite@npm:^2.0.0": - version: 2.0.0 - resolution: "atob-lite@npm:2.0.0" - checksum: 8073795465dad14aa92b2cd3322472e93dbc8b87da5740150bbae9d716ee6cc254af1c375b7310a475d876eb24c25011584ae9c1277bdb3eb53ebb4cd236f501 - languageName: node - linkType: hard - "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" @@ -4625,38 +4877,50 @@ __metadata: linkType: hard "axe-core@npm:^4.6.2": - version: 4.6.3 - resolution: "axe-core@npm:4.6.3" - checksum: b26ee77b5c1f9c399a4ed5dadf82c5302fd70326f36b68f5023a57b7ec213d5db126aade0a2cd2866b9563e213192f4257bc5dc35edebb10a73f90155baa39da + version: 4.7.2 + resolution: "axe-core@npm:4.7.2" + checksum: 8dfc61f038fbd9623ae8a264c8a475d887113a027fb440a2b377b82ffd300e71d1a0bcf042ff13b517a8d548b34c44b4159eff693725c5d7cde240d0aa68feac + languageName: node + linkType: hard + +"axios@npm:1.1.3": + version: 1.1.3 + resolution: "axios@npm:1.1.3" + dependencies: + follow-redirects: ^1.15.0 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 78aea19cc15019fb0fb86ec737a9dccb88a8f8e8f00b0e6c5024a76d8df523daf88a7abf8c6593b0cdd9a346806be9f41285d793d8b6653c99877de11245bfa4 languageName: node linkType: hard -"axios@npm:^0.21.1, axios@npm:^0.21.2": - version: 0.21.4 - resolution: "axios@npm:0.21.4" +"axios@npm:^0.27.2": + version: 0.27.2 + resolution: "axios@npm:0.27.2" dependencies: - follow-redirects: ^1.14.0 - checksum: fbcff55ec68f71f02d3773d467db2fcecdf04e749826c82c2427a232f9eba63242150a05f15af9ef15818352b814257541155de0281f8fb2b7e8a5b79f7f2142 + follow-redirects: ^1.14.9 + form-data: ^4.0.0 + checksum: 76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 languageName: node linkType: hard "axios@npm:^1.0.0": - version: 1.3.4 - resolution: "axios@npm:1.3.4" + version: 1.4.0 + resolution: "axios@npm:1.4.0" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 39f03d83a9ed5760094f92a677af2533ab159448c8e22bfba98d8957bdef2babe142e117a0a7d9a5aff1d5f28f8ced28eb0471b6a91d33410375c89e49032193 + checksum: a925a07590b0ec1d4daf28cd27890f930daab980371558deb3b883af174b881da09e5ba2cb8393a648fda5859e39934982d0b8b092fe89fc84cb6c80a70a1910 languageName: node linkType: hard "axobject-query@npm:^3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" dependencies: - deep-equal: ^2.0.5 - checksum: fff3175a22fd1f41fceb7ae0cd25f6594a0d7fba28c2335dd904538b80eb4e1040432564a3c643025cd2bb748f68d35aaabffb780b794da97ecfc748810b25ad + dequal: ^2.0.3 + checksum: f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 languageName: node linkType: hard @@ -4676,11 +4940,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.5.0 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -4689,20 +4953,20 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 1114d3935e0f62b72e155ac79916214c078e798561be3b03d12ddd862f2849becc8516f89046719161ec457bded35d2e1fd7ddfb207a6169dd18bbb2a67ee987 + checksum: a32ac32f3b5bd66f3f8370cfd6244b0f7b18c2dd367d5829e86dea9f8516ffda63edfb2743d3e1768db93a0698b4db09cd9d22961447e0ed6fd309b5b9c22764 languageName: node linkType: hard "babel-loader@npm:^9.1.2": - version: 9.1.2 - resolution: "babel-loader@npm:9.1.2" + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" dependencies: - find-cache-dir: ^3.3.2 + find-cache-dir: ^4.0.0 schema-utils: ^4.0.0 peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: e62ca6af7dec5e9138908ca23f0f29b0865f733d76680b0b0ebc97b1ae18dc6e9cf887c02439ee0634a16eaaef0dc000d78d20c30c348f651a55f50aea5a62ff + checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb languageName: node linkType: hard @@ -4731,39 +4995,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" +"babel-plugin-polyfill-corejs2@npm:^0.4.4": + version: 0.4.4 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.4" dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.1 + "@nicolo-ribaudo/semver-v6": ^6.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 21e34d4ba961de66d3fe31f3fecca5612d5db99638949766a445d37de72c1f736552fe436f3bd3792e5cc307f48e8f78a498a01e858c84946627ddb662415cc4 + checksum: 4bb3056ae17002776e3003314068bdd7dd8e5d4b038ce1198db84346b953e73beb8d2b4445bff831c09ff217e533466eb28e771a80c3696decc2dae1347164e3 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" +"babel-plugin-polyfill-corejs3@npm:^0.8.2": + version: 0.8.2 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.2" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 + "@babel/helper-define-polyfill-provider": ^0.4.1 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 58f7d16c1fbc5e4a68cc58126039cb997edc9b9d29adf1bc4124eb6a12ec31eb9e1da8df769b7219714748af7916cfbb194b2f15bd55571b3b43cdcd7839fe8f + checksum: de094cc9d703a3bf6518f4312491b6f033f2db45791825499c905173b2d7d0f8ab9b1919a607eb76833907c6533a2106c951108da7689c0929354d38c661f346 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" +"babel-plugin-polyfill-regenerator@npm:^0.5.1": + version: 0.5.1 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.1" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 + "@babel/helper-define-polyfill-provider": ^0.4.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bd915d51e30259201b289a58dfa46c8c1bc8827a38c275ff3134c8194d27e634d5c32ec62137d489d81c7dd5f6ea46b04057eb44b7180d06c19388e3a5f4f8c6 + checksum: 5ec9e2ab2f031028a36f8d611f3fc3bc8347e2842e4354a28ac303e81697968549ea0ebea79cf0c28658e1e09d3a55a2a2085bb5a53d00f28bd688daa301fd6b languageName: node linkType: hard @@ -4808,6 +5072,13 @@ __metadata: languageName: node linkType: hard +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: 25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -4815,17 +5086,19 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.3.1": +"base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf languageName: node linkType: hard -"basic-auth@npm:^1.0.3": - version: 1.1.0 - resolution: "basic-auth@npm:1.1.0" - checksum: af1d7687a1f71acb823c44f6ae8f085dcdb450ff74cb6c98a9a68a3b7a7035050ddac10049d98046771ee4be5c534d5aeeae2304c9c7434f54433260ddef96aa +"basic-auth@npm:^2.0.1": + version: 2.0.1 + resolution: "basic-auth@npm:2.0.1" + dependencies: + safe-buffer: 5.1.2 + checksum: 05f56db3a0fc31c89c86b605231e32ee143fb6ae38dc60616bc0970ae6a0f034172def99e69d3aed0e2c9e7cac84e2d63bc51a0b5ff6ab5fc8808cc8b29923c1 languageName: node linkType: hard @@ -4845,7 +5118,7 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^2.0.0, before-after-hook@npm:^2.1.0, before-after-hook@npm:^2.2.0": +"before-after-hook@npm:^2.1.0, before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c @@ -4867,6 +5140,20 @@ __metadata: languageName: node linkType: hard +"big.js@npm:^6.0.0": + version: 6.2.1 + resolution: "big.js@npm:6.2.1" + checksum: 87734c70e6c668f3bc29d84e99b8a97392debbea258d260419c847039d63251fddb8675019c751ceb54ae6fa5f796c5221c4c08526b316149b14ad78dc0d7db1 + languageName: node + linkType: hard + +"bignumber.js@npm:^9.0.0": + version: 9.1.1 + resolution: "bignumber.js@npm:9.1.1" + checksum: 950312b15d038ae06028c8a6901fb4efd57fa889ada8c887cebd856e79f2fc9667641bebfb2e2ea4cc694e663fd55c1fe6e62a7e8fe40bbdebdf92269537b802 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -4874,7 +5161,17 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": +"bl@npm:^1.0.0": + version: 1.2.3 + resolution: "bl@npm:1.2.3" + dependencies: + readable-stream: ^2.3.5 + safe-buffer: ^5.1.1 + checksum: ee6478864d3b1295614f269f3fbabeb2362a2f2fc7f8dc2f6c1f944a278d84e0572ecefd6d0b0736d7418763f98dc3b2738253191ea9e98e4b08de211cfac0a6 + languageName: node + linkType: hard + +"bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -4905,26 +5202,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.2": - version: 1.20.2 - resolution: "body-parser@npm:1.20.2" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 - languageName: node - linkType: hard - "boxen@npm:^5.1.2": version: 5.1.2 resolution: "boxen@npm:5.1.2" @@ -4969,17 +5246,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" +"browserslist@npm:^4.21.9": + version: 4.21.9 + resolution: "browserslist@npm:4.21.9" dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 + caniuse-lite: ^1.0.30001503 + electron-to-chromium: ^1.4.431 + node-releases: ^2.0.12 + update-browserslist-db: ^1.0.11 bin: browserslist: cli.js - checksum: 903040d2c45b733e1177c288b4f146ff21d45e8a44ccc87d1d7fc2f6a8d021c7ee54b514fd7722529c282381969382a54bd2ab4263f5b6c8981a856b457ea162 + checksum: 903189787141f645f47ec46ec482dc85985d1297948062690dc2ea8480eb98fd6213507234eb17177825acaae49c53888445910f1af984abce5373fb65c270b8 languageName: node linkType: hard @@ -4992,10 +5269,27 @@ __metadata: languageName: node linkType: hard -"btoa-lite@npm:^1.0.0": - version: 1.0.0 - resolution: "btoa-lite@npm:1.0.0" - checksum: 7a4f0568ae3c915464650f98fde7901ae07b13a333a614515a0c86876b3528670fafece28dfef9745d971a613bb83341823afb0c20c6f318b384c1e364b9eb95 +"buffer-alloc-unsafe@npm:^1.1.0": + version: 1.1.0 + resolution: "buffer-alloc-unsafe@npm:1.1.0" + checksum: 06b9298c9369621a830227c3797ceb3ff5535e323946d7b39a7398fed8b3243798259b3c85e287608c5aad35ccc551cec1a0a5190cc8f39652e8eee25697fc9c + languageName: node + linkType: hard + +"buffer-alloc@npm:^1.2.0": + version: 1.2.0 + resolution: "buffer-alloc@npm:1.2.0" + dependencies: + buffer-alloc-unsafe: ^1.1.0 + buffer-fill: ^1.0.0 + checksum: 09d87dd53996342ccfbeb2871257d8cdb25ce9ee2259adc95c6490200cd6e528c5fbae8f30bcc323fe8d8efb0fe541e4ac3bbe9ee3f81c6b7c4b27434cc02ab4 + languageName: node + linkType: hard + +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 languageName: node linkType: hard @@ -5006,6 +5300,13 @@ __metadata: languageName: node linkType: hard +"buffer-fill@npm:^1.0.0": + version: 1.0.0 + resolution: "buffer-fill@npm:1.0.0" + checksum: 55b5654fbbf2d7ceb4991bb537f5e5b5b5b9debca583fee416a74fcec47c16d9e7a90c15acd27577da7bd750b7fa6396e77e7c221e7af138b6d26242381c6e4d + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -5013,7 +5314,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0": +"buffer@npm:^5.2.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -5065,55 +5366,45 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" +"cacache@npm:^17.0.0": + version: 17.1.3 + resolution: "cacache@npm:17.1.3" 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 + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 + lru-cache: ^7.7.1 + minipass: ^5.0.0 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 - checksum: 886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 + ssri: ^10.0.0 + tar: ^6.1.11 + unique-filename: ^3.0.0 + checksum: fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c languageName: node linkType: hard -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" +"cacheable-request@npm:^7.0.2": + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^6.0.1 + responselike: ^2.0.0 + checksum: 0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41 languageName: node linkType: hard @@ -5148,10 +5439,17 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001474 - resolution: "caniuse-lite@npm:1.0.30001474" - checksum: 4a5d1435c38c8f24c00b99bac7b70b1968f3f0772c8b34838a9247dcc630b2dda544ba5d4053efd3171c0e24240133cced26df054290c7413ce4540763588f93 +"camelcase@npm:^7.0.0": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001503": + version: 1.0.30001516 + resolution: "caniuse-lite@npm:1.0.30001516" + checksum: 64ae815c5319c7054146d8c443a34edcfce766e97b9e24cec030d4ce787b114fa949dff047cc59883967fd275b41e3dfdbe87ff53c65f475b4a7e93fa3fdb59d languageName: node linkType: hard @@ -5162,16 +5460,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.0": - version: 4.1.0 - resolution: "chalk@npm:4.1.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: 3787bd65ecd98ab3a1acc3b4f71d006268a675875e49ee6ea75fb54ba73d268b97544368358c18c42445e408e076ae8ad5cec8fbad36942a2c7ac654883dc61e - languageName: node - linkType: hard - "chalk@npm:^2.0.0, chalk@npm:^2.3.0": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -5204,9 +5492,9 @@ __metadata: linkType: hard "chalk@npm:^5.0.0, chalk@npm:^5.2.0": - version: 5.2.0 - resolution: "chalk@npm:5.2.0" - checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard @@ -5238,6 +5526,13 @@ __metadata: languageName: node linkType: hard +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 + languageName: node + linkType: hard + "character-reference-invalid@npm:^1.0.0": version: 1.1.4 resolution: "character-reference-invalid@npm:1.1.4" @@ -5285,7 +5580,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": +"ci-info@npm:^3.2.0, ci-info@npm:^3.8.0": version: 3.8.0 resolution: "ci-info@npm:3.8.0" checksum: 0d3052193b58356372b34ab40d2668c3e62f1006d5ca33726d1d3c423853b19a85508eadde7f5908496fb41448f465263bf61c1ee58b7832cb6a924537e3863a @@ -5293,9 +5588,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab languageName: node linkType: hard @@ -5329,6 +5624,13 @@ __metadata: languageName: node linkType: hard +"cli-spinners@npm:^2.5.0": + version: 2.9.0 + resolution: "cli-spinners@npm:2.9.0" + checksum: c0d5437acc1ace7361b1c58a4fda3c92c2d8691ff3169ac658ce30faee71280b7aa706c072bcb6d0e380c232f3495f7d5ad4668c1391fe02c4d3a39d37798f44 + languageName: node + linkType: hard + "cli-truncate@npm:^2.1.0": version: 2.1.0 resolution: "cli-truncate@npm:2.1.0" @@ -5339,18 +5641,18 @@ __metadata: languageName: node linkType: hard -"clipanion@npm:3.2.0": - version: 3.2.0 - resolution: "clipanion@npm:3.2.0" +"clipanion@npm:3.2.1": + version: 3.2.1 + resolution: "clipanion@npm:3.2.1" dependencies: typanion: ^3.8.0 peerDependencies: typanion: "*" - checksum: fcc3d44145bc0e162ccf856c27437c0770ba1be863d73296d54c352621accd7675bca33f0a1bed1b1cd7dd22c695abd35e4839da85f12fc1edb77a3f8aa100f4 + checksum: 6c148bd01ae645031aeb6e9a1a16f3ce07eb754cd9981c91edcab82b09e063b805ac41e4f36039d07602334b6dbba036b030d1807c12acd7f90778a696b7ac6e languageName: node linkType: hard -"cliui@npm:^7.0.2, cliui@npm:^7.0.4": +"cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" dependencies: @@ -5372,6 +5674,22 @@ __metadata: languageName: node linkType: hard +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: ^1.0.0 + checksum: 06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + "co@npm:3.1.0": version: 3.1.0 resolution: "co@npm:3.1.0" @@ -5409,9 +5727,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -5456,14 +5774,14 @@ __metadata: languageName: node linkType: hard -"colorette@npm:2.0.19, colorette@npm:^2.0.16": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 2bcc9134095750fece6e88167011499b964b78bf0ea953469130ddb1dba3c8fe6c03debb0ae181e710e2be10900d117460f980483a7df4ba4a1bac3b182ecb64 +"colorette@npm:2.0.20, colorette@npm:^2.0.16": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 languageName: node linkType: hard -"colors@npm:1.4.0, colors@npm:^1.4.0": +"colors@npm:1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb @@ -5479,7 +5797,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.18.0": +"commander@npm:^2.18.0, commander@npm:^2.8.1": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: 74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 @@ -5500,10 +5818,10 @@ __metadata: languageName: node linkType: hard -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb languageName: node linkType: hard @@ -5580,7 +5898,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": +"content-type@npm:~1.0.4": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af @@ -5625,33 +5943,26 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.25.1": - version: 3.30.0 - resolution: "core-js-compat@npm:3.30.0" +"core-js-compat@npm:^3.31.0": + version: 3.31.1 + resolution: "core-js-compat@npm:3.31.1" dependencies: - browserslist: ^4.21.5 - checksum: 27a941b1389bab7d389ff8097f7ad5684b7e26cb5f462e1f21ada2afbd5c7579683ca9af16feb71afb59361f39dd3ec4af936712be7220a93f0c071f216ea42f - languageName: node - linkType: hard - -"core-js-pure@npm:^3.25.1": - version: 3.30.0 - resolution: "core-js-pure@npm:3.30.0" - checksum: a2ee75f5d7a01be2fc173815cc837ec8b2e3f46543e13f3ec009c765247da0b342d386f22dc4bd91e2541874151feb316a61b61158cc305e681c89d155e5b223 + browserslist: ^4.21.9 + checksum: 2f05c5d5b04e8a69cf50f538ef3fb1932ab83bd7dc690c438c7b876049cb1515eb4ca9fa29400ed7cd5885f34c901bf6a26d9149dfff8665d8302cace7e96d72 languageName: node linkType: hard -"core-js@npm:3.28.0": - version: 3.28.0 - resolution: "core-js@npm:3.28.0" - checksum: beaebefa83520ff2ca1eeeddccb17e373474966a7bd935134a1107cecb793798a0971feaf6a1a9f6bbd5b22b7dc1f81f72533eb24e3f6df079fff40fc26a21b4 +"core-js@npm:3.30.2": + version: 3.30.2 + resolution: "core-js@npm:3.30.2" + checksum: 864d7dc908d4ece507d27e6c6d2830300dcb775d88cfefeec31e34ab95be5016bb23abb29c8b1c4a930bada01318af009276199d75dcab1a230c3cebdf8d3a70 languageName: node linkType: hard -"core-js@npm:^2.6.5": - version: 2.6.12 - resolution: "core-js@npm:2.6.12" - checksum: 00128efe427789120a06b819adc94cc72b96955acb331cb71d09287baf9bd37bebd191d91f1ee4939c893a050307ead4faea08876f09115112612b6a05684b63 +"core-js@npm:^3.8.2": + version: 3.31.1 + resolution: "core-js@npm:3.31.1" + checksum: 17b44ddc675d7e924ecf0da21dcae3dc9e26758048e3275ba05fcd1a8805d45e6bacee1335b781e9d59d0c38302d5cbfc49073ef33232387459f432852fb6cd9 languageName: node linkType: hard @@ -5662,6 +5973,13 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + "cors@npm:2.8.5": version: 2.8.5 resolution: "cors@npm:2.8.5" @@ -5786,32 +6104,32 @@ __metadata: languageName: node linkType: hard -"danger@npm:^10.6.2": - version: 10.9.0 - resolution: "danger@npm:10.9.0" +"danger@npm:^11.2.6": + version: 11.2.6 + resolution: "danger@npm:11.2.6" dependencies: - "@babel/polyfill": ^7.2.5 - "@octokit/rest": ^16.43.1 + "@gitbeaker/node": ^21.3.0 + "@octokit/rest": ^18.12.0 async-retry: 1.2.3 chalk: ^2.3.0 commander: ^2.18.0 + core-js: ^3.8.2 debug: ^4.1.1 fast-json-patch: ^3.0.0-1 get-stdin: ^6.0.0 - gitlab: ^10.0.1 - http-proxy-agent: ^2.1.0 - https-proxy-agent: ^2.2.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 hyperlinker: ^1.0.0 json5: ^2.1.0 jsonpointer: ^5.0.0 - jsonwebtoken: ^8.4.0 + jsonwebtoken: ^9.0.0 lodash.find: ^4.6.0 lodash.includes: ^4.3.0 lodash.isobject: ^3.0.2 lodash.keys: ^4.0.8 lodash.mapvalues: ^4.6.0 lodash.memoize: ^4.1.2 - memfs-or-file-map-to-github-branch: ^1.1.0 + memfs-or-file-map-to-github-branch: ^1.2.1 micromatch: ^4.0.4 node-cleanup: ^2.1.2 node-fetch: ^2.6.7 @@ -5824,6 +6142,7 @@ __metadata: pinpoint: ^1.1.0 prettyjson: ^1.2.1 readline-sync: ^1.4.9 + regenerator-runtime: ^0.13.9 require-from-string: ^2.0.2 supports-hyperlinks: ^1.0.1 bin: @@ -5836,7 +6155,7 @@ __metadata: danger-process: distribution/commands/danger-process.js danger-reset-status: distribution/commands/danger-reset-status.js danger-runner: distribution/commands/danger-runner.js - checksum: b8a6d9d04d0ea97ee0a7bf76c6062a6499616e2b0a1a3acbe604b0115a34bbdfba1bb9e096a0abe7f58be3f7d7eb53cfbb42ff36d21184b15fce0cccbf5ee1ed + checksum: 2968fbf2be3eb4b337d95e929381f69bd226bb45e54a44546600242275aae50e3a9e48557f1e0625e542d9fc99bdd67656591434aa2fdeea1f8e64a59de8b91f languageName: node linkType: hard @@ -5849,13 +6168,6 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:^4.0.0": - version: 4.0.1 - resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b - languageName: node - linkType: hard - "data-urls@npm:^3.0.2": version: 3.0.2 resolution: "data-urls@npm:3.0.2" @@ -5867,6 +6179,13 @@ __metadata: languageName: node linkType: hard +"dataloader@npm:^2.2.2": + version: 2.2.2 + resolution: "dataloader@npm:2.2.2" + checksum: 125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba + languageName: node + linkType: hard + "dayjs@npm:1.11.7": version: 1.11.7 resolution: "dayjs@npm:1.11.7" @@ -5883,15 +6202,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:3.1.0": - version: 3.1.0 - resolution: "debug@npm:3.1.0" - dependencies: - ms: 2.0.0 - checksum: 5bff34a352d7b2eaa31886eeaf2ee534b5461ec0548315b2f9f80bd1d2533cab7df1fa52e130ce27bc31c3945fbffb0fc72baacdceb274b95ce853db89254ea4 - languageName: node - linkType: hard - "debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -5904,7 +6214,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.1.0, debug@npm:^3.2.7": +"debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -5920,6 +6230,15 @@ __metadata: languageName: node linkType: hard +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: ^2.0.0 + checksum: 66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" @@ -5927,6 +6246,78 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: ^3.1.0 + checksum: bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + languageName: node + linkType: hard + +"decompress-tar@npm:^4.0.0, decompress-tar@npm:^4.1.0, decompress-tar@npm:^4.1.1": + version: 4.1.1 + resolution: "decompress-tar@npm:4.1.1" + dependencies: + file-type: ^5.2.0 + is-stream: ^1.1.0 + tar-stream: ^1.5.2 + checksum: 92d86c5dfe2a89f9b5db584668f8ed2a3107339083872c7f78b5f7d55222d954545e018c10346a50991542ad6d1406128bf1c97a24f023810993a1dcfb3c3f21 + languageName: node + linkType: hard + +"decompress-tarbz2@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-tarbz2@npm:4.1.1" + dependencies: + decompress-tar: ^4.1.0 + file-type: ^6.1.0 + is-stream: ^1.1.0 + seek-bzip: ^1.0.5 + unbzip2-stream: ^1.0.9 + checksum: d5ab2c2435a53f45da8348ffdb5ae0a3ff8fec55948b7890a1c55413de4d1e539a22978e7dcd8bd3561985878c9778253fe146cbdea429f04fa4529abb57c54e + languageName: node + linkType: hard + +"decompress-targz@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-targz@npm:4.1.1" + dependencies: + decompress-tar: ^4.1.1 + file-type: ^5.2.0 + is-stream: ^1.1.0 + checksum: 42514fb2df6248c56b2b115494b7d1d046bc582e960354ba4faad5792f261782a61d17d9ef53845abe78c0f0ecafc195cb0754c00227fa0bd0642a1bfd8eafad + languageName: node + linkType: hard + +"decompress-unzip@npm:^4.0.1": + version: 4.0.1 + resolution: "decompress-unzip@npm:4.0.1" + dependencies: + file-type: ^3.8.0 + get-stream: ^2.2.0 + pify: ^2.3.0 + yauzl: ^2.4.2 + checksum: 896f88e1c23b59cdce022227a8910c06158bd4b296c21d61af7167bd50d00e9e4355b605bdbfd7ba75d46ad277d4f881cdd037aec7165a40ccd0ee4ef59443a8 + languageName: node + linkType: hard + +"decompress@npm:^4.2.1": + version: 4.2.1 + resolution: "decompress@npm:4.2.1" + dependencies: + decompress-tar: ^4.0.0 + decompress-tarbz2: ^4.0.0 + decompress-targz: ^4.0.0 + decompress-unzip: ^4.0.1 + graceful-fs: ^4.1.10 + make-dir: ^1.0.0 + pify: ^2.3.0 + strip-dirs: ^2.0.0 + checksum: 6730279fa206aad04a8338a88ab49c596034c502b2d5f23a28d0a28290b82d9217f9e60c8b5739805474ca842fc856e08e2d64ed759f2118c2bcabe42fa9eece + languageName: node + linkType: hard + "dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" @@ -5935,14 +6326,15 @@ __metadata: linkType: hard "deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" + version: 2.2.2 + resolution: "deep-equal@npm:2.2.2" dependencies: + array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 - es-get-iterator: ^1.1.2 - get-intrinsic: ^1.1.3 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.1 is-arguments: ^1.1.1 - is-array-buffer: ^3.0.1 + is-array-buffer: ^3.0.2 is-date-object: ^1.0.5 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 @@ -5950,16 +6342,16 @@ __metadata: object-is: ^1.1.5 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 side-channel: ^1.0.4 which-boxed-primitive: ^1.0.2 which-collection: ^1.0.1 which-typed-array: ^1.1.9 - checksum: 31de99f3c1b516ef67ba82cbe54fdc1691cdd93ab8ede561eee94f7f8baff6594ddc0860c48707f6cd12e4efd5421e3450e20c40ca71906a9d0abe9017944cd3 + checksum: 07b46a9a848efdab223abc7e3ba612ef9168d88970c3400df185d5840a30ca384749c996ae5d7af844d6b27c42587fb73a4445c63e38aac77c2d0ed9a63faa87 languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -5973,6 +6365,22 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: ^1.0.2 + checksum: 9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.0": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -5980,7 +6388,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": version: 1.2.0 resolution: "define-properties@npm:1.2.0" dependencies: @@ -6036,13 +6444,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 - languageName: node - linkType: hard - "deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" @@ -6050,7 +6451,7 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.2": +"dequal@npm:^2.0.0, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 @@ -6071,6 +6472,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^7.0.1": + version: 7.0.1 + resolution: "detect-indent@npm:7.0.1" + checksum: 47b6e3e3dda603c386e73b129f3e84844ae59bc2615f5072becf3cc02eab400bed5a4e6379c49d0b18cf630e80c2b07e87e0038b777addbc6ef793ad77dd05bc + languageName: node + linkType: hard + "detect-newline@npm:3.1.0, detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -6078,6 +6486,13 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^4.0.0": + version: 4.0.0 + resolution: "detect-newline@npm:4.0.0" + checksum: 87dcff7a9ec25d1f4b356c068c3f05eb68bf6c2cbc4461da013df317ec184bbc96a2383bfaab9f963882ab988336bdadd5ce71b9cec55dde02d8ef84cef99250 + languageName: node + linkType: hard + "detect-port@npm:^1.3.0": version: 1.5.1 resolution: "detect-port@npm:1.5.1" @@ -6105,6 +6520,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^5.0.0": + version: 5.1.0 + resolution: "diff@npm:5.1.0" + checksum: 77a0d9beb9ed54796154ac2511872288432124ac90a1cabb1878783c9b4d81f1847f3b746a0630b1e836181461d2c76e1e6b95559bef86ed16294d114862e364 + languageName: node + linkType: hard + "diffable-html@npm:^4.1.0": version: 4.1.0 resolution: "diffable-html@npm:4.1.0" @@ -6247,14 +6669,14 @@ __metadata: languageName: node linkType: hard -"duplexer@npm:^0.1.1, duplexer@npm:~0.1.1": +"duplexer@npm:^0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" checksum: c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 languageName: node linkType: hard -"duplexify@npm:^4.1.2": +"duplexify@npm:^4.0.0, duplexify@npm:^4.1.1, duplexify@npm:^4.1.2": version: 4.1.2 resolution: "duplexify@npm:4.1.2" dependencies: @@ -6266,6 +6688,13 @@ __metadata: languageName: node linkType: hard +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" @@ -6276,7 +6705,7 @@ __metadata: languageName: node linkType: hard -"ecdsa-sig-formatter@npm:1.0.11": +"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" dependencies: @@ -6285,20 +6714,6 @@ __metadata: languageName: node linkType: hard -"ecstatic@npm:^3.3.2": - version: 3.3.2 - resolution: "ecstatic@npm:3.3.2" - dependencies: - he: ^1.1.1 - mime: ^1.6.0 - minimist: ^1.1.0 - url-join: ^2.0.5 - bin: - ecstatic: ./lib/ecstatic.js - checksum: e94ca9331c5035d7d553a5f15ed40c47ed62a723a49aec6011628952f7cc9a24005bf737a0256e0c65f8a305fb99889fefbe9e5bc4760bd2cbe611f516b849ef - languageName: node - linkType: hard - "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -6353,10 +6768,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.284": - version: 1.4.350 - resolution: "electron-to-chromium@npm:1.4.350" - checksum: 026603e4fac93a17e8fafb53d5c217a7259be23cb67d0d6e11ff0f054407f0013a2e2fc96042f1c2082d101aded46be501904299b33cd3458bf8d01be90077f8 +"electron-to-chromium@npm:^1.4.431": + version: 1.4.463 + resolution: "electron-to-chromium@npm:1.4.463" + checksum: d56cbe2d9dc9914584fbe3f443a594aaa8acf808f2a3a6e59703724a9cc87c2b5626b9a4ee9e7f50076b7969f0f46cab4952b93e2458315877bd381059904140 languageName: node linkType: hard @@ -6388,7 +6803,7 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.12, encoding@npm:^0.1.13": +"encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -6397,7 +6812,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -6407,12 +6822,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.0.0": - version: 5.12.0 - resolution: "enhanced-resolve@npm:5.12.0" + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: 5738924cfe3641d04b89c2856fee3d109d7bd71bbe234fb7f54843dda65f293e5f3eee6d5970ced70dbb09016085b961e60d1eb26cac72a21044479954b6cdfd + checksum: 69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a languageName: node linkType: hard @@ -6425,6 +6840,13 @@ __metadata: languageName: node linkType: hard +"ent@npm:^2.2.0": + version: 2.2.0 + resolution: "ent@npm:2.2.0" + checksum: d12c504d93afb8b22551323f78f60f0a2660289cf2de2210bdd2fdb07ac204956da23510a7711bf48079aa0aa726e21724224de6c6289120ddcf27652b30cb17 + languageName: node + linkType: hard + "entities@npm:^1.1.1": version: 1.1.2 resolution: "entities@npm:1.1.2" @@ -6447,9 +6869,9 @@ __metadata: linkType: hard "entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: b7971419897622d3996bbbff99249e166caaaf3ea95d3841d6dc5d3bf315f133b649fbe932623e3cc527d871112e7563a8284e24f23e472126aa90c4e9c3215b + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 languageName: node linkType: hard @@ -6460,12 +6882,12 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:7.8.1": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" +"envinfo@npm:7.10.0": + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" bin: envinfo: dist/cli.js - checksum: 01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 + checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf languageName: node linkType: hard @@ -6476,7 +6898,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.3.1": +"error-ex@npm:^1.3.1, error-ex@npm:^1.3.2": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -6486,16 +6908,17 @@ __metadata: linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" + version: 1.22.1 + resolution: "es-abstract@npm:1.22.1" dependencies: array-buffer-byte-length: ^1.0.0 + arraybuffer.prototype.slice: ^1.0.1 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 @@ -6515,19 +6938,23 @@ __metadata: object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 + safe-array-concat: ^1.0.0 safe-regex-test: ^1.0.0 string.prototype.trim: ^1.2.7 string.prototype.trimend: ^1.0.6 string.prototype.trimstart: ^1.0.6 + typed-array-buffer: ^1.0.0 + 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.9 - checksum: 7dc2c882bafbb13609b9c35c29f0717ebf5a4dbde23a73803be821f349aa38d55f324318ccebb6da83c074260622f11d0a7f4cd1e0e19f52cc03b6b5386693fb + which-typed-array: ^1.1.10 + checksum: 36abed2b7efa8dd337d938e50d0b97d070c0ef45b2257eec0ae8c3edc5c7e8f3e2906530afda5c0b8a4f44299391d078237fd5ea454ac4e9adb6f8343bf84980 languageName: node linkType: hard -"es-get-iterator@npm:^1.1.2": +"es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" dependencies: @@ -6582,22 +7009,6 @@ __metadata: languageName: node linkType: hard -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 - languageName: node - linkType: hard - -"es6-promisify@npm:^5.0.0": - version: 5.0.0 - resolution: "es6-promisify@npm:5.0.0" - dependencies: - es6-promise: ^4.0.3 - checksum: 23284c6a733cbf7842ec98f41eac742c9f288a78753c4fe46652bae826446ced7615b9e8a5c5f121a08812b1cd478ea58630f3e1c3d70835bd5dcd69c7cd75c9 - languageName: node - linkType: hard - "esbuild-plugin-alias@npm:^0.2.1": version: 0.2.1 resolution: "esbuild-plugin-alias@npm:0.2.1" @@ -6616,32 +7027,32 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.16.4": - version: 0.16.17 - resolution: "esbuild@npm:0.16.17" - dependencies: - "@esbuild/android-arm": 0.16.17 - "@esbuild/android-arm64": 0.16.17 - "@esbuild/android-x64": 0.16.17 - "@esbuild/darwin-arm64": 0.16.17 - "@esbuild/darwin-x64": 0.16.17 - "@esbuild/freebsd-arm64": 0.16.17 - "@esbuild/freebsd-x64": 0.16.17 - "@esbuild/linux-arm": 0.16.17 - "@esbuild/linux-arm64": 0.16.17 - "@esbuild/linux-ia32": 0.16.17 - "@esbuild/linux-loong64": 0.16.17 - "@esbuild/linux-mips64el": 0.16.17 - "@esbuild/linux-ppc64": 0.16.17 - "@esbuild/linux-riscv64": 0.16.17 - "@esbuild/linux-s390x": 0.16.17 - "@esbuild/linux-x64": 0.16.17 - "@esbuild/netbsd-x64": 0.16.17 - "@esbuild/openbsd-x64": 0.16.17 - "@esbuild/sunos-x64": 0.16.17 - "@esbuild/win32-arm64": 0.16.17 - "@esbuild/win32-ia32": 0.16.17 - "@esbuild/win32-x64": 0.16.17 +"esbuild@npm:^0.18.0": + version: 0.18.14 + resolution: "esbuild@npm:0.18.14" + dependencies: + "@esbuild/android-arm": 0.18.14 + "@esbuild/android-arm64": 0.18.14 + "@esbuild/android-x64": 0.18.14 + "@esbuild/darwin-arm64": 0.18.14 + "@esbuild/darwin-x64": 0.18.14 + "@esbuild/freebsd-arm64": 0.18.14 + "@esbuild/freebsd-x64": 0.18.14 + "@esbuild/linux-arm": 0.18.14 + "@esbuild/linux-arm64": 0.18.14 + "@esbuild/linux-ia32": 0.18.14 + "@esbuild/linux-loong64": 0.18.14 + "@esbuild/linux-mips64el": 0.18.14 + "@esbuild/linux-ppc64": 0.18.14 + "@esbuild/linux-riscv64": 0.18.14 + "@esbuild/linux-s390x": 0.18.14 + "@esbuild/linux-x64": 0.18.14 + "@esbuild/netbsd-x64": 0.18.14 + "@esbuild/openbsd-x64": 0.18.14 + "@esbuild/sunos-x64": 0.18.14 + "@esbuild/win32-arm64": 0.18.14 + "@esbuild/win32-ia32": 0.18.14 + "@esbuild/win32-x64": 0.18.14 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -6689,7 +7100,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: c2aaef0d2369349b2ef40c0115c2d2030ed7d7341cc91d26af3e243218ecec972f8f1243d5ce8e9a4c80b29439b89dff44c658e57c696d3b07e9074a77878b49 + checksum: 0a2656670b0e1263e4cf3737f78d304aff1cf76222b2196a12dacc7b520308f8ffb6e5f62ca2d4550bd4d46c215b1d852efe5b7036c667403c0f55e88d89f360 languageName: node linkType: hard @@ -6729,13 +7140,12 @@ __metadata: linkType: hard "escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -6743,7 +7153,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 + checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -6812,14 +7222,14 @@ __metadata: linkType: hard "eslint-module-utils@npm:^2.7.4": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: a14368a03d01824e4780e76df08460bbd5dcbf9d58944faf8660079559d169ab2b163b9b1b21fa2955c31c76f4ad348fdcde1bf0ef50cda7e14b89f6257b0eda + checksum: c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df languageName: node linkType: hard @@ -6992,8 +7402,8 @@ __metadata: linkType: hard "eslint-plugin-storybook@npm:^0.6.6": - version: 0.6.11 - resolution: "eslint-plugin-storybook@npm:0.6.11" + version: 0.6.12 + resolution: "eslint-plugin-storybook@npm:0.6.12" dependencies: "@storybook/csf": ^0.0.1 "@typescript-eslint/utils": ^5.45.0 @@ -7001,7 +7411,7 @@ __metadata: ts-dedent: ^2.2.0 peerDependencies: eslint: ">=6" - checksum: dedc3323023e43c1e5081c798f0b9f8383d340578c430d111c31d83b72392533dde7885b898ca7cde92bcec2c4ad97e34dd2d241c4120fdd83447d915e3d400a + checksum: b6a4da70ce4c13cfcbe80a4049d07f36ff4e5b0f9b21452c9df98d28ffb603498cd3d518672d36fb1abffe0f1b97f39aa9c1284042d03ed233ab796c66f2e581 languageName: node linkType: hard @@ -7015,13 +7425,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"eslint-scope@npm:^7.2.0": + version: 7.2.1 + resolution: "eslint-scope@npm:7.2.1" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 3ae3280cbea34af3b816e941b83888aca063aaa0169966ff7e4c1bfb0715dbbeac3811596e56315e8ceea84007a7403754459ae4f1d19f25487eb02acd951aa7 + checksum: 7207497acab2be257979d43403368fb07d3172227d576e04f5906218d76ed7ee99e7116ca71c31b4e00ecc7bb0a00efd98b338c74aa9eec7b7dea7010f9e6da8 languageName: node linkType: hard @@ -7032,22 +7442,22 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.0": - version: 3.4.0 - resolution: "eslint-visitor-keys@npm:3.4.0" - checksum: 8b8cc611219b8864952a7485540482763e33289d734161bd6fe00cb6c1fc98af6bd8fe5c1d02d6d2b2657ff5cc52d30828fd52606ed50924412953a3e7d95cb7 +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.1 + resolution: "eslint-visitor-keys@npm:3.4.1" + checksum: b4ebd35aed5426cd81b1fb92487825f1acf47a31e91d76597a3ee0664d69627140c4dafaf9b319cfeb1f48c1113a393e21a734c669e6565a72e6fcc311bd9911 languageName: node linkType: hard "eslint@npm:^8.28.0": - version: 8.37.0 - resolution: "eslint@npm:8.37.0" + version: 8.45.0 + resolution: "eslint@npm:8.45.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.2 - "@eslint/js": 8.37.0 - "@humanwhocodes/config-array": ^0.11.8 + "@eslint/eslintrc": ^2.1.0 + "@eslint/js": 8.44.0 + "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 @@ -7056,9 +7466,9 @@ __metadata: debug: ^4.3.2 doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-visitor-keys: ^3.4.0 - espree: ^9.5.1 + eslint-scope: ^7.2.0 + eslint-visitor-keys: ^3.4.1 + espree: ^9.6.0 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -7066,37 +7476,34 @@ __metadata: find-up: ^5.0.0 glob-parent: ^6.0.2 globals: ^13.19.0 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 - optionator: ^0.9.1 + optionator: ^0.9.3 strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 3798781652b1c32d8a4a654c2dd7f2abbff808a806ddd7fd8f86a49586a824854369943d49ee52dcda47b8b03cd49585820f2ab69fc61bb17a0d7677785a2cf7 + checksum: 2a043b8d3b9a5684e2f66bd446c3dc8522cc7afbb0982d0a5be76ea1f578d0e617598a7b289616a861ab8272b57f6056acb2b264bec6302c9b0921a1cfa66fdb languageName: node linkType: hard -"espree@npm:^9.5.1": - version: 9.5.1 - resolution: "espree@npm:9.5.1" +"espree@npm:^9.6.0": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.0 - checksum: a67a1551895aa25c59c182a58e45d31a34cbeffb4a3731812db0a859fa0373cd9921af22a8aae15f42c3bf22c75a1dbd2304cdeb6530a5e7f672af87a9f9ef5f + eslint-visitor-keys: ^3.4.1 + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -7156,21 +7563,6 @@ __metadata: languageName: node linkType: hard -"event-stream@npm:=3.3.4": - version: 3.3.4 - resolution: "event-stream@npm:3.3.4" - dependencies: - duplexer: ~0.1.1 - from: ~0 - map-stream: ~0.1.0 - pause-stream: 0.0.11 - split: 0.3 - stream-combiner: ~0.0.4 - through: ~2.3.1 - checksum: c3ec4e1efc27ab3e73a98923f0a2fa9a19051b87068fea2f3d53d2e4e8c5cfdadf8c8a115b17f3d90b16a46432d396bad91b6e8d0cceb3e449be717a03b75209 - languageName: node - linkType: hard - "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" @@ -7291,16 +7683,24 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" +"expect@npm:^29.0.0, expect@npm:^29.6.1": + version: 29.6.1 + resolution: "expect@npm:29.6.1" dependencies: - "@jest/expect-utils": ^29.5.0 + "@jest/expect-utils": ^29.6.1 + "@types/node": "*" jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - checksum: 3c9382967217ad1453e9271e0da3f83c4aeb12272968007b90fc5873340e7fb64bf4852e1522bdf27556623d031ce62f82aaac09e485a15c6d0589d50999422d + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + checksum: 8ffdd2c8c09d6d632ae85a1172a7e785e75f187ac0009330fa5bcb00e07a06d781b8016579952a1f0ef43e1604068fcdaade3029c8b5ffb99931f79bff57e778 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 languageName: node linkType: hard @@ -7359,7 +7759,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0, extend@npm:~3.0.2": +"extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 @@ -7388,9 +7788,21 @@ __metadata: linkType: hard "fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 2fbcb23957fb0bc920832a94ba627b860400f9cce45e1594e931dabf62e858369a58c6c2603e2ecc4f7679580f710b5b5b6e698a355a9a9bfcfd93c06c7c4350 + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-folder-size@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-folder-size@npm:2.1.0" + dependencies: + decompress: ^4.2.1 + https-proxy-agent: ^7.0.0 + bin: + fast-folder-size: cli.js + checksum: dd83eedd43d98c6b6f113b98b1ed3692d9ebe549626b0a892bc18fc80359a0aba773e7b66ac81e9d7530e765ac1bdacbab60105358e0e3d58e37c2b9e468079a languageName: node linkType: hard @@ -7407,16 +7819,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.0 + resolution: "fast-glob@npm:3.3.0" 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 - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + checksum: 4700063a2d7c9aae178f575648580bee1fc3f02ab3f358236d77811f52332bc10a398e75c6d5ecde61216996f3308247b37d70e2ee605a0748abe147f01b8f64 languageName: node linkType: hard @@ -7434,7 +7846,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -7442,9 +7854,9 @@ __metadata: linkType: hard "fast-redact@npm:^3.0.0": - version: 3.1.2 - resolution: "fast-redact@npm:3.1.2" - checksum: 3be61f1702d93f13beab3d8743568afdb7d5016ad71cb2a5e38b7e0c069d0736041ca123efcfa577cb91b0271fdca1fcb0c0201430839805be2ecaa398888643 + version: 3.2.0 + resolution: "fast-redact@npm:3.2.0" + checksum: a258a178ff8d2f760985be774e589a65df5a573ec12ebc1c72e090950aa860a2a6efb01f673d1be015e9f1170446903cd1ff402e8658b4a84635308dfcef164a languageName: node linkType: hard @@ -7455,6 +7867,13 @@ __metadata: languageName: node linkType: hard +"fast-text-encoding@npm:^1.0.0": + version: 1.0.6 + resolution: "fast-text-encoding@npm:1.0.6" + checksum: e1d0381bda229c92c7906f63308f3b9caca8c78b732768b1ee16f560089ed21bc159bbe1434138ccd3815931ec8d4785bdade1ad1c45accfdf27ac6606ac67d2 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.15.0 resolution: "fastq@npm:1.15.0" @@ -7473,6 +7892,15 @@ __metadata: languageName: node linkType: hard +"fault@npm:^2.0.0": + version: 2.0.1 + resolution: "fault@npm:2.0.1" + dependencies: + format: ^0.2.0 + checksum: b80fbf1019b9ce8b08ee09ce86e02b028563e13a32ac3be34e42bfac00a97b96d8dee6d31e26578ffc16224eb6729e01ff1f97ddfeee00494f4f56c0aeed4bdd + languageName: node + linkType: hard + "fb-watchman@npm:^2.0.0": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -7482,13 +7910,12 @@ __metadata: languageName: node linkType: hard -"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.2.0 - resolution: "fetch-blob@npm:3.2.0" +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" dependencies: - node-domexception: ^1.0.0 - web-streams-polyfill: ^3.0.3 - checksum: 60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69 + pend: ~1.2.0 + checksum: 304dd70270298e3ffe3bcc05e6f7ade2511acc278bc52d025f8918b48b6aa3b77f10361bddfadfe2a28163f7af7adbdce96f4d22c31b2f648ba2901f0c5fc20e languageName: node linkType: hard @@ -7517,17 +7944,28 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:^2.0.0": - version: 2.0.2 - resolution: "file-system-cache@npm:2.0.2" - dependencies: - fs-extra: ^11.1.0 - ramda: ^0.28.0 - checksum: e82fb68e224f7cda9ae2315a5b795470ac225082d8913059d841e1e141d1b370cb75bdc8215f46ab28bfc7e37c0892d8ea8123d31590229282796134dbed1c84 +"file-type@npm:^3.8.0": + version: 3.9.0 + resolution: "file-type@npm:3.9.0" + checksum: 7ae074b350c2300807a99d428600a8ee6b2ace901400898706a20ddc2c43c9abb7e05177ff55ed67a2fd26dfa9b91857b21ec9c0ab3202b9cabebc7e65900240 + languageName: node + linkType: hard + +"file-type@npm:^5.2.0": + version: 5.2.0 + resolution: "file-type@npm:5.2.0" + checksum: c16c2f4e484a838c12b63e08637277905f08aebb1afbc291086029210aea17ded5ed701c9a4588313446ae0c1da71566b58df9a9c758a1ec300c4f80b9713cbf + languageName: node + linkType: hard + +"file-type@npm:^6.1.0": + version: 6.2.0 + resolution: "file-type@npm:6.2.0" + checksum: 3d7fe85a10bd97ca0c35fd9a20d21f5b20849bbb70985d37c34475051433f3c6109c76a3e5893bff6773037b769be9730a2db762789ecf25def9b62a4c2ee953 languageName: node linkType: hard -"filelist@npm:^1.0.1": +"filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" dependencies: @@ -7567,14 +8005,13 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.3.2": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff languageName: node linkType: hard @@ -7607,6 +8044,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + "find-versions@npm:^4.0.0": version: 4.0.0 resolution: "find-versions@npm:4.0.0" @@ -7642,7 +8089,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.15.0": +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" peerDependenciesMeta: @@ -7678,17 +8125,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^2.5.0": - version: 2.5.1 - resolution: "form-data@npm:2.5.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 7e8fb913b84a7ac04074781a18d0f94735bbe82815ff35348803331f6480956ff0035db5bcf15826edee09fe01e665cfac664678f1526646a6374ee13f960e56 - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -7729,15 +8165,6 @@ __metadata: languageName: node linkType: hard -"formdata-polyfill@npm:^4.0.10": - version: 4.0.10 - resolution: "formdata-polyfill@npm:4.0.10" - dependencies: - fetch-blob: ^3.1.2 - checksum: 5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6 - languageName: node - linkType: hard - "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -7752,13 +8179,6 @@ __metadata: languageName: node linkType: hard -"from@npm:~0": - version: 0.1.7 - resolution: "from@npm:0.1.7" - checksum: 3aab5aea8fe8e1f12a5dee7f390d46a93431ce691b6222dcd5701c5d34378e51ca59b44967da1105a0f90fcdf5d7629d963d51e7ccd79827d19693bdcfb688d4 - languageName: node - linkType: hard - "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -7773,17 +8193,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: 5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e - languageName: node - linkType: hard - "fs-extra@npm:^11.1.0": version: 11.1.1 resolution: "fs-extra@npm:11.1.1" @@ -7795,7 +8204,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": +"fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -7804,6 +8213,15 @@ __metadata: languageName: node linkType: hard +"fs-minipass@npm:^3.0.0": + version: 3.0.2 + resolution: "fs-minipass@npm:3.0.2" + dependencies: + minipass: ^5.0.0 + checksum: 34726f25b968ac05f6122ea7e9457fe108c7ae3b82beff0256953b0e405def61af2850570e32be2eb05c1e7660b663f24e14b6ab882d1d8a858314faacc4c972 + languageName: node + linkType: hard + "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -7849,7 +8267,7 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": +"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca @@ -7877,15 +8295,37 @@ __metadata: version: 4.0.4 resolution: "gauge@npm:4.0.4" dependencies: - 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 - checksum: ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + 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 + checksum: ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + languageName: node + linkType: hard + +"gaxios@npm:^5.0.0, gaxios@npm:^5.0.1": + version: 5.1.3 + resolution: "gaxios@npm:5.1.3" + dependencies: + extend: ^3.0.2 + https-proxy-agent: ^5.0.0 + is-stream: ^2.0.0 + node-fetch: ^2.6.9 + checksum: eb1fd1910491c18445b4e22932098346b3c16917caa3b71567abba296e2d3dcf53d4ede47825ec06223f8943ea35744553d66238c5ad8f3f7835d9dc8ed540ba + languageName: node + linkType: hard + +"gcp-metadata@npm:^5.3.0": + version: 5.3.0 + resolution: "gcp-metadata@npm:5.3.0" + dependencies: + gaxios: ^5.0.0 + json-bigint: ^1.0.0 + checksum: c0570f8ed821429444d6d9d46279831aa1b68092bd5f394928dd816c39904721f8a80ed463fcbeb607a469b1917fe24dad0e66dc4a94388620c9172a54fb5a5f languageName: node linkType: hard @@ -7903,14 +8343,15 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: function-bind: ^1.1.1 has: ^1.0.3 + has-proto: ^1.0.1 has-symbols: ^1.0.3 - checksum: 7c564f6b1061e6ca9eb1abab424a2cf80b93e75dcde65229d504e4055aa0ea54f88330e9b75d10e41c72bca881a947e84193b3549a4692d836f304239a178d63 + checksum: 49eab47f9de8f1a4f9b458b8b74ee5199fb2614414a91973eb175e07db56b52b6df49b255cc7ff704cb0786490fb93bfe8f2ad138b590a8de09b47116a366bc9 languageName: node linkType: hard @@ -7942,6 +8383,23 @@ __metadata: languageName: node linkType: hard +"get-stdin@npm:^9.0.0": + version: 9.0.0 + resolution: "get-stdin@npm:9.0.0" + checksum: 7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b + languageName: node + linkType: hard + +"get-stream@npm:^2.2.0": + version: 2.3.1 + resolution: "get-stream@npm:2.3.1" + dependencies: + object-assign: ^4.0.1 + pinkie-promise: ^2.0.0 + checksum: 46c12f496e7edec688a1cc570fe7556ce91e91201fa7efb146853fb9f0a8f0b0bb9a02cf9d9e4e9d4e2097f98c83b09621d9034c25ca0cf80ae6f4dace9c3465 + languageName: node + linkType: hard + "get-stream@npm:^4.0.0": version: 4.1.0 resolution: "get-stream@npm:4.1.0" @@ -7951,7 +8409,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.0.0": +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -8004,6 +8462,13 @@ __metadata: languageName: node linkType: hard +"git-hooks-list@npm:^3.0.0": + version: 3.1.0 + resolution: "git-hooks-list@npm:3.1.0" + checksum: f1b93dd11b80b2a687b99a8bb553c0d07f344532d475b3ac2a5ff044d40fa71567ddcfa5cb39fae0b4e43a670a33f02f71ec3b24b7263233f3a3df89deddfb5a + languageName: node + linkType: hard + "github-release-from-changelog@npm:^2.1.1": version: 2.1.1 resolution: "github-release-from-changelog@npm:2.1.1" @@ -8016,21 +8481,6 @@ __metadata: languageName: node linkType: hard -"gitlab@npm:^10.0.1": - version: 10.2.1 - resolution: "gitlab@npm:10.2.1" - dependencies: - form-data: ^2.5.0 - humps: ^2.0.1 - ky: ^0.12.0 - ky-universal: ^0.3.0 - li: ^1.3.0 - query-string: ^6.8.2 - universal-url: ^2.0.0 - checksum: 0d5ca8206b0505eef6c5a1c3d1694910bacac89519c889491beec3efcf799ae5263dc8bb5953ef4ee272d557811e0f45a781d5b6ee27be3280b73d80093e0c65 - languageName: node - linkType: hard - "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -8077,19 +8527,18 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0": - version: 10.2.1 - resolution: "glob@npm:10.2.1" +"glob@npm:^10.0.0, glob@npm:^10.2.2": + version: 10.3.3 + resolution: "glob@npm:10.3.3" dependencies: foreground-child: ^3.1.0 - fs.realpath: ^1.0.0 jackspeak: ^2.0.3 - minimatch: ^9.0.0 - minipass: ^5.0.0 - path-scurry: ^1.7.0 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: a640527535f46e71e407384cc580c42d1443c1ba1180befbb21406cdf6613718f655f39af129ab54d805a1f4787a61b459a2e1f3cd60f0a9c79563c936decba0 + checksum: 50effa4208762e508def5688e4d88242db80b5913f65e9c5d5aefb707c59e66a27e845fbf18127157189f6ed0f055e2c94d7112c97a065b9cbfe002e1b26d330 languageName: node linkType: hard @@ -8106,7 +8555,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -8120,7 +8569,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.1": +"glob@npm:^8.0.0": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -8188,16 +8637,16 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.0.0, globby@npm:^13.1.3": - version: 13.1.3 - resolution: "globby@npm:13.1.3" +"globby@npm:^13.0.0, globby@npm:^13.1.2": + version: 13.2.2 + resolution: "globby@npm:13.2.2" dependencies: dir-glob: ^3.0.1 - fast-glob: ^3.2.11 - ignore: ^5.2.0 + fast-glob: ^3.3.0 + ignore: ^5.2.4 merge2: ^1.4.1 slash: ^4.0.0 - checksum: 34199932fad67ae6a4cca764eaad8e7678efabd4321f553bfb8a52046e03f8e8e2f9c14216a6734b692b7c26c4da1b1cfe9ce23733d28d1777d73f4bf34b09c7 + checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard @@ -8222,6 +8671,34 @@ __metadata: languageName: node linkType: hard +"google-auth-library@npm:^8.0.2": + version: 8.9.0 + resolution: "google-auth-library@npm:8.9.0" + dependencies: + arrify: ^2.0.0 + base64-js: ^1.3.0 + ecdsa-sig-formatter: ^1.0.11 + fast-text-encoding: ^1.0.0 + gaxios: ^5.0.0 + gcp-metadata: ^5.3.0 + gtoken: ^6.1.0 + jws: ^4.0.0 + lru-cache: ^6.0.0 + checksum: a9b101e15ba0457d3abe548b59323211f2c34071721da73a74ba6a773e199e73736910fd7d39b0c978eb7655220ae6f90f4e0b5665419d298ab544f9159d1625 + languageName: node + linkType: hard + +"google-p12-pem@npm:^4.0.0": + version: 4.0.1 + resolution: "google-p12-pem@npm:4.0.1" + dependencies: + node-forge: ^1.3.1 + bin: + gp12-pem: build/src/bin/gp12-pem.js + checksum: 2cd15077cb2179306870223c65b49d38f0860bd8cc60da8072cc632c9aad8cb7e61e46e63d72e8ef3fca27ad9e6b8870db6cc809839f279382d9cc4d891a9a7b + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -8231,24 +8708,36 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 +"got@npm:^11.1.4": + version: 11.8.6 + resolution: "got@npm:11.8.6" + dependencies: + "@sindresorhus/is": ^4.0.0 + "@szmarczak/http-timer": ^4.0.5 + "@types/cacheable-request": ^6.0.1 + "@types/responselike": ^1.0.0 + cacheable-lookup: ^5.0.3 + cacheable-request: ^7.0.2 + decompress-response: ^6.0.0 + http2-wrapper: ^1.0.0-beta.5.2 + lowercase-keys: ^2.0.0 + p-cancelable: ^2.0.0 + responselike: ^2.0.0 + checksum: 754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1 languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 languageName: node linkType: hard -"graphql@npm:^15.4.0": - version: 15.8.0 - resolution: "graphql@npm:15.8.0" - checksum: 30cc09b77170a9d1ed68e4c017ec8c5265f69501c96e4f34f8f6613f39a886c96dd9853eac925f212566ed651736334c8fe24ceae6c44e8d7625c95c3009a801 +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard @@ -8268,6 +8757,17 @@ __metadata: languageName: node linkType: hard +"gtoken@npm:^6.1.0": + version: 6.1.2 + resolution: "gtoken@npm:6.1.2" + dependencies: + gaxios: ^5.0.1 + google-p12-pem: ^4.0.0 + jws: ^4.0.0 + checksum: d660fbb8ad00a9f5b6eb426090593cb2a07d63dc22a11b0cf155d43779b6078f804e3467e37deb9a1c078ae34e683070279dc5a1577c50e0e3166a6a6748d98e + languageName: node + linkType: hard + "handlebars@npm:4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -8379,14 +8879,7 @@ __metadata: languageName: node linkType: hard -"hasurl@npm:^1.0.0": - version: 1.0.0 - resolution: "hasurl@npm:1.0.0" - checksum: 7762739a9713612d7c81f8c59807c59e696ea4402861ff799fd9d507860d4e37ad7eac4e1741a713ae96a74306a98ee5a03245695352ede885cc4287a44c632b - languageName: node - linkType: hard - -"he@npm:^1.1.1": +"he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: @@ -8453,26 +8946,13 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc languageName: node linkType: hard -"http-errors@npm:1.8.1": - version: 1.8.1 - resolution: "http-errors@npm:1.8.1" - dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.1 - checksum: f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 - languageName: node - linkType: hard - "http-errors@npm:2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" @@ -8486,17 +8966,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^2.1.0": - version: 2.1.0 - resolution: "http-proxy-agent@npm:2.1.0" - dependencies: - agent-base: 4 - debug: 3.1.0 - checksum: 526294de33953bacb21b883d8bbc01a82e1e9f5a721785345dd538b15b62c7a5d4080b729eb3177ad15d842f931f44002431d5cf9b036cc8cea4bfb5ec172228 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.0, http-proxy-agent@npm:^4.0.1": +"http-proxy-agent@npm:^4.0.0": version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" dependencies: @@ -8518,7 +8988,7 @@ __metadata: languageName: node linkType: hard -"http-proxy@npm:^1.18.0": +"http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" dependencies: @@ -8529,24 +8999,26 @@ __metadata: languageName: node linkType: hard -"http-server@npm:^0.12.3": - version: 0.12.3 - resolution: "http-server@npm:0.12.3" +"http-server@npm:^14.1.1": + version: 14.1.1 + resolution: "http-server@npm:14.1.1" dependencies: - basic-auth: ^1.0.3 - colors: ^1.4.0 + basic-auth: ^2.0.1 + chalk: ^4.1.2 corser: ^2.0.1 - ecstatic: ^3.3.2 - http-proxy: ^1.18.0 - minimist: ^1.2.5 + he: ^1.2.0 + html-encoding-sniffer: ^3.0.0 + http-proxy: ^1.18.1 + mime: ^1.6.0 + minimist: ^1.2.6 opener: ^1.5.1 - portfinder: ^1.0.25 + portfinder: ^1.0.28 secure-compare: 3.0.1 union: ~0.5.0 + url-join: ^4.0.1 bin: - hs: bin/http-server http-server: bin/http-server - checksum: fa779a959119d9870fc738eaa689a8b9ea447bbac97ad656a29e4cd84f9c89e9257ef66a7e597d919dff81def2e796e575d8e128193dfd2780cdaf447f1a01ca + checksum: c5770ddd722dd520ce0af25efee6bfb7c6300ff4e934636d4eec83fa995739e64de2e699e89e7a795b3a1894bcc37bec226617c1023600aacd7871fd8d6ffe6d languageName: node linkType: hard @@ -8568,6 +9040,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.0.0 + checksum: 6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1 + languageName: node + linkType: hard + "https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -8578,13 +9060,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^2.2.1": - version: 2.2.4 - resolution: "https-proxy-agent@npm:2.2.4" +"https-proxy-agent@npm:^7.0.0": + version: 7.0.1 + resolution: "https-proxy-agent@npm:7.0.1" dependencies: - agent-base: ^4.3.0 - debug: ^3.1.0 - checksum: 4bdde8fcd9ea0adc4a77282de2b4f9e27955e0441425af0f27f0fe01006946b80eaee6749e08e838d350c06ed2ebd5d11347d3beb88c45eacb0667e27276cdad + agent-base: ^7.0.2 + debug: 4 + checksum: f08f646809c04803843534b5e0ea5b4034beaa065ef2f9505e4afaeb2fa962a15494e563357c819203cff07232d1631739947f031149eb837a16a2f3553fbe32 languageName: node linkType: hard @@ -8618,13 +9100,6 @@ __metadata: languageName: node linkType: hard -"humps@npm:^2.0.1": - version: 2.0.1 - resolution: "humps@npm:2.0.1" - checksum: 554f3bb9de780ce833f0058f30536f87615bd75ead2008b98d900598379fe5dcd3300bdd9092d3e078d47b66fade82276974dda7151318b5de7a1d837c3abe6e - languageName: node - linkType: hard - "husky@npm:^4.3.7": version: 4.3.8 resolution: "husky@npm:4.3.8" @@ -8694,14 +9169,14 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -8723,6 +9198,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^2.0.0": + version: 2.2.2 + resolution: "import-meta-resolve@npm:2.2.2" + checksum: 80873aebf0d2a66e824e278fb6cbb16a6660f86df49b367404e5de80928720ecb44f643243b46dc5c5fae506abb666ef54d6f281b45ee0f1034951acb2261eb5 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -8737,13 +9219,6 @@ __metadata: languageName: node linkType: hard -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 - languageName: node - linkType: hard - "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -8754,7 +9229,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -8768,6 +9243,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:^4.1.0": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 + languageName: node + linkType: hard + "internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": version: 1.0.5 resolution: "internal-slot@npm:1.0.5" @@ -8779,13 +9261,6 @@ __metadata: languageName: node linkType: hard -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 - languageName: node - linkType: hard - "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -8903,12 +9378,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.9.0": + version: 2.12.1 + resolution: "is-core-module@npm:2.12.1" dependencies: has: ^1.0.3 - checksum: fd8f78ef4e243c295deafa809f89381d89aff5aaf38bb63266b17ee6e34b6a051baa5bdc2365456863336d56af6a59a4c1df1256b4eff7d6b4afac618586b004 + checksum: ff1d0dfc0b7851310d289398e416eb92ae8a9ac7ea8b8b9737fa8c0725f5a78c5f3db6edd4dff38c9ed731f3aaa1f6410a320233fcb52a2c8f1cf58eebf10a4b languageName: node linkType: hard @@ -9017,6 +9492,13 @@ __metadata: languageName: node linkType: hard +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -9041,6 +9523,13 @@ __metadata: languageName: node linkType: hard +"is-natural-number@npm:^4.0.1": + version: 4.0.1 + resolution: "is-natural-number@npm:4.0.1" + checksum: f05c544cb0ad39d4410e2ae2244282bf61918ebbb808b665436ffca4f6bbe908d3ae3a8d21fe143d302951f157d969986dd432098b63899561639fcd1ce1c280 + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" @@ -9101,6 +9590,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^4.0.0, is-plain-obj@npm:^4.1.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + "is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" @@ -9195,15 +9691,11 @@ __metadata: linkType: hard "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 + which-typed-array: ^1.1.11 + checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard @@ -9256,6 +9748,13 @@ __metadata: languageName: node linkType: hard +"is@npm:^3.3.0": + version: 3.3.0 + resolution: "is@npm:3.3.0" + checksum: d2474beed01c7abba47926d51989fbf6f1c154e01ab7f1052af7e2327d160fda12e52967c96440fdb962489bdd5ecce6a7102cbf98ea43c951b0faa3c21d104a + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -9263,6 +9762,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -9270,16 +9776,6 @@ __metadata: languageName: node linkType: hard -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 - languageName: node - linkType: hard - "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -9340,29 +9836,29 @@ __metadata: linkType: hard "jackspeak@npm:^2.0.3": - version: 2.0.3 - resolution: "jackspeak@npm:2.0.3" + version: 2.2.1 + resolution: "jackspeak@npm:2.2.1" dependencies: + "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 - cliui: ^7.0.4 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 50bbf3fc03632cd4127e94209deb7adfb6569e786b23c24143022c3e4e851352bd63a7645106561eb44469961bf5d6b4252e373c33cbaf3c08ac0e2fe035a9a1 + checksum: 510860a5d1eaf12cba509a09a8f7d1696090bfa7c8ae75c6d9c836890d2897409f3b3dd91039cf0020627d6eba8c024f571ae4d78bd956162b07794ddfb9dd62 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" + version: 10.8.7 + resolution: "jake@npm:10.8.7" dependencies: async: ^3.2.3 chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 + filelist: ^1.0.4 + minimatch: ^3.1.2 bin: - jake: ./bin/cli.js - checksum: fc1f59c291b1c5bafad8ccde0e5d97f5f22ceb857f204f15634011e642b9cdf652dae2943b5ffe5ab037fe2f77b263653911ed2a408b2887a6dee31873e5c3d8 + jake: bin/cli.js + checksum: 89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 languageName: node linkType: hard @@ -9376,48 +9872,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-circus@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.5.0 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-each: ^29.6.1 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 p-limit: ^3.1.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 77f77b826941f67e9794e185072ee612cbddf53a1cfbf736de86176b7dc54e54aef151cf31b492adaef221f550924fd60dbaa01c9b939c3a4bfb46d8392c60a8 + checksum: 9321dfabfa6fe41d4495f4fd21d1a840baacdfe9f0cc7c2346b89cd4f775ee37cc839c6d6aaac415059852bbdfafca1ed8c392999f7fbd152d6b231ca0920d1d languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -9427,34 +9923,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: d63df7e329760bc036d11980883399de86b41a7fa93bbc2e79feef28284b096dec40afc21796504555ccbf32806bfc78cf64a63eac9093bb4f036b282b409863 + checksum: 37850378efcb5bea2d000d4c78eac5af871bcd53d3f8e60902f33f116ec847f9a3641ca78f1ca046b4c1c6e2031e084d78b01eba3592788b3e3c983c0d5a4b21 languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.5.0 - "@jest/types": ^29.5.0 - babel-jest: ^29.5.0 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.5.0 - jest-environment-node: ^29.5.0 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-runner: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -9465,19 +9961,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 01780eb66815e3d31d237aab5d7611ea59e0cdf159cbab2a7c682cb08bde6d053c17a528547440fb1b0294c26ebfd5b54ad35d8c9439f6fae76960ee0bc90197 + checksum: 6f3c3ac7587b651d22b199fdc3c4ad17a08397c2fcae05543a7a81e03a7e12355aaa3c75ce39e6df5c8fd8efcd65518cf05f528f7724cb8df17aa4e44dd74ecf languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" +"jest-diff@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-diff@npm:29.6.1" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 00fda597fa6ee22774453c3cd35c2210bd7f749cf48ad7a41c13b898b2943c9c047842720eb928cdb949b9de87204d8d8987bf12aefdb2f0504f5f4112cab5b0 + pretty-format: ^29.6.1 + checksum: f067d977937744df7dd8a269e2948620e4bcb35ff70d9ea1d0fe75a47fa603ce3edc350961b671c94f8de5adb65d6bdeb0002569b59983fba56f02dd4b47d171 languageName: node linkType: hard @@ -9490,51 +9986,51 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-each@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.5.0 - pretty-format: ^29.5.0 - checksum: 214f6b5adfc0d6a3e837769018b7a7b69f41e99aac939fe4730bcca23f69e3566ed23706f95a396b20e63e6b9f90990053fc3c1662808036d4f41e4d6d32641d + jest-util: ^29.6.1 + pretty-format: ^29.6.1 + checksum: b2cbea027a7d68c6a22afff1d460c866389e5c3ec1fece930b3fa79df24fb39f3ca258679de9ca0c2af4a6a70e5aa542ff6779f32d21289bdf981a7c1470aa0e languageName: node linkType: hard "jest-environment-jsdom@npm:^29.3.1": - version: 29.5.0 - resolution: "jest-environment-jsdom@npm:29.5.0" + version: 29.6.1 + resolution: "jest-environment-jsdom@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 972a1bdfb1d508a359951ec11ade5dfad7cfabea0ab9f7746737ba10e0c6381e34f2b4acb03c7e5eb623611813310dfb0775eb0607c5537b7618234d04aab2ac + checksum: 457ac6f78b9b98d1a86af944469fd2cce6d16d40afa748a8226c77850b98fd376d5bbcbf2b68a72ee3748091b95321fedc4044d3def45c47b139a9b57d4757be languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-environment-node@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 2e636a095ff9a9e0aa20fda5b4c06eebed8f3ba2411062bdf724b114eedafd49b880167998af9f77aa8aa68231621aebe3998389d73433e9553ea5735cad1e14 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 2e168708553f45c2afc42234dd78c4677d1bd34a11e0c8d43e8ca6da8e68cd55acb2215cdfc46cba8c5b1dbc0061783006ecbc214a02a5ae962602f80232d7fc languageName: node linkType: hard @@ -9545,11 +10041,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-haste-map@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -9557,14 +10053,14 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 162edfa185478db9ebe7dff73f3475ef2c205d94fa2b0fc3b41aba4fc29bab274d4a76ca41ca20ea7d9d6ed2b0d8519e298cfffbf5cad6631412d8961c190612 + checksum: 6d100cd80c89d2c45175e6504eafe40ba4dfb1e77a4e204204a5f2905a4840e73ff66cee187b39e33a1af2406831a48f1f945efdf872071e19ac417eb0a3aac1 languageName: node linkType: hard @@ -9599,42 +10095,54 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-leak-detector@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: d7db5d4a7cb676fc151f533d6887f3d6bbb4e35346346cbed0b5583c296b13af2d3c8434b30f62b0eb9c711718c7f4bd48496c47af3a20320ee162e33d64aaf2 + pretty-format: ^29.6.1 + checksum: 17e702b3a790e37dd76b93e2f782de228bb332030e478264f2eb081e1d13907f414a6ec2271b173b2516e7faa4c7b0ddd1c9c5ae9b9293ed921a9ee943fafd1a languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" +"jest-matcher-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-matcher-utils@npm:29.6.1" dependencies: chalk: ^4.0.0 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 0a3ae95ef5c5c4ac2b2c503c2f57e173fa82725722e1fadcd902fd801afe17d9d36e9366820959465f553627bf1e481a0e4a540125f3b4371eec674b3557f7f3 + pretty-format: ^29.6.1 + checksum: 4425bcb900bd25dbd679c220ef978f80aab11a7b6bed0e178cf8fe3c7167ecefdb6f522e3cf3e877a622160f781cea02aac43a3e243dc8afca917e90418434b8 languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" +"jest-message-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-message-util@npm:29.6.1" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 706e89cacc89c090af584f4687c4e7f0616706481e468ec7c88270e07ae7458a829e477b7b3dff56b75d801f799d65eb2c28d6453c25dd02bea0fd98f0809dbb + checksum: 7a34c7ee4efada36aa385a07e1d22f8b6183dda37f7bca15fcf2e9575e9b91ce6ea88429a0b749bc59d934327492e622913d7cd9ab23ca78c29353184795a68d + languageName: node + linkType: hard + +"jest-mock-extended@npm:^3.0.4": + version: 3.0.4 + resolution: "jest-mock-extended@npm:3.0.4" + dependencies: + ts-essentials: ^7.0.3 + peerDependencies: + jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 + typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: b9514c0cf2b50460ef154818f71fe356fb8b0bf66af72050257813f88f7bb7313a30172c7ff09bc19e16bc59bae7160a854be2f86364fb8fa70d6e16299db4e0 languageName: node linkType: hard @@ -9648,14 +10156,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-mock@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-mock@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.5.0 - checksum: c5b71d397d6acd44d99cd48dad8ca76334fc5a27e120da72d264d7527a9efc7c6fc431d79de64d0b73aa0ab26a2d0712498e323d42b9e03bee05e983b0d2035c + jest-util: ^29.6.1 + checksum: 26e666787d04f341887d7612b2ada7a9c86868dac319056dac46709a00fc2ee694e7a64fad8f0d5450690d779ddaacaff7a35aaf1716a165b3e1eaf56d0aa300 languageName: node linkType: hard @@ -9685,89 +10193,89 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve-dependencies@npm:29.6.1" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.5.0 - checksum: fbe513b7d905c4a70be17fd1cb4bd83da1e82cceb47ed7ceababbe11c75f1d0c18eadeb3f4ebb6997ba979f35fa18dfd02e1d57eb556675e47b35675fde0aac7 + jest-snapshot: ^29.6.1 + checksum: 330fdc103dd1c01ae73e9e4fc4ae11d341569187a82c09aea41d50cdf9e5353d00b0405177db020b3af76cb0e402c98f2dab129afde7bcd5d99f5123d6182321 languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: e7ea3b1cf865a7e63ad297d0f43a093dde145f9ca72dc8e75b6c7eb3af60fe78e4f7d024fd92fa280419a4ca038d42a9268d4d5d512958d11347e680daca1f12 + checksum: 809ee25be7a97ed33755dbe536617cb83a0a8218c81310f5927f1a2f9e82e48353d60a5b0b630b6c25bc66825d0b2197c6c569d043a8431bae01ba6e226b5a57 languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runner@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/environment": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/environment": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-leak-detector: ^29.5.0 - jest-message-util: ^29.5.0 - jest-resolve: ^29.5.0 - jest-runtime: ^29.5.0 - jest-util: ^29.5.0 - jest-watcher: ^29.5.0 - jest-worker: ^29.5.0 + jest-environment-node: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-leak-detector: ^29.6.1 + jest-message-util: ^29.6.1 + jest-resolve: ^29.6.1 + jest-runtime: ^29.6.1 + jest-util: ^29.6.1 + jest-watcher: ^29.6.1 + jest-worker: ^29.6.1 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 96f47976b9bcc0554455c200d02ebc1547b9a7749b05353c0d55aff535509032c0c12ea25ccc294350f62c14665dbc1e00b15e0d1c52207edfb807e4fec4a36a + checksum: 69d4f22c06d06498ffacf658460c3b40d87d77ac924a9f1e5c176f56e49d696b86234473463a764bd227f056d6e4e3852a2e10f95c74d5861d7fc4c17101ab55 languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" - dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/globals": ^29.5.0 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 +"jest-runtime@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runtime@npm:29.6.1" + dependencies: + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/globals": ^29.6.1 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-resolve: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 9b5c0a97e1f24945059695e056188041730a3f1dc5924153e323eb7429244e10e7cc877b13d057869d6621c460deae11b77a2a2e9ab56e22b56864a3e44c4448 + checksum: 79850c21fb630cb35fe23e7688daa67d387735cf2912febcd95ef4195bcc4931699d28e3b16e705fa8c2843fca958524133b1fa3fe0361bc2dac17192b40125b languageName: node linkType: hard @@ -9780,62 +10288,60 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-snapshot@npm:29.6.1" dependencies: "@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.3.3 - "@jest/expect-utils": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/babel__traverse": ^7.0.6 + "@jest/expect-utils": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.5.0 + expect: ^29.6.1 graceful-fs: ^4.2.9 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 natural-compare: ^1.4.0 - pretty-format: ^29.5.0 - semver: ^7.3.5 - checksum: db9957d9c8607d75bb08302605331b5d90fa738fafeed820ab8ebcb2c90f9e62fb4fec0b4c826c04a37557cbb7a9ed26a10b0c74d46ffedce2d6ae8a9c891b00 + pretty-format: ^29.6.1 + semver: ^7.5.3 + checksum: 1322fb9b23e7316b5f83d467ce2f46a65fdfa84a67e0000825fd9ef4910e66bdc732cb16e6da406f94c18905b2a8c6bbc29000c79f31e1e3eeb57508ac233bb4 languageName: node linkType: hard -"jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" +"jest-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 + checksum: c4765afe8769239aef6a76aa69d9c98d383e171e4745eb65c4abb2e776f7965ab762c758f740bf726ebab428bc52b099c23f37e93dc30cf1ec46b915543f80af languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 7aabde27a9b736df65902a1bb4ec63af518d4c95e12a910e7658140784168f08c662d5babe67dfa70d843dd2096bc08aa7090fef83c7a9d6bb0893793c3a599a + pretty-format: ^29.6.1 + checksum: 4f6889852b0167f9087c3a67b598365be0807d4e8cce77e246b97df3e3cd1c13d3c98c18de07080d670c9e52b81b81d0ee48fa0544eddc987d32796f50f86371 languageName: node linkType: hard @@ -9856,42 +10362,42 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.5.0 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: 6a2e71e720183303913fc34fc24a3f87fca7fcfa638bc6c9109a4808b36251a1cb7fe98b956eb0d9c9ead1ad47c3dc3745289ee89e62c6c615168e92282069ca + checksum: bf007eb358f27c4f180202a8ec4bae2948a9563a84da073a185375b6a5251fe6cf9bf3f02f0682d2b8c343bcc5c1c2f185703009b6a47883ef1daeefed55881c languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-worker@npm:29.6.1" dependencies: "@types/node": "*" - jest-util: ^29.5.0 + jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d + checksum: 15a5c699e6074401aac85bcc869e3be95353767f127fd41cccc97c9b38e62596a1ec336866eab180beec305da2cc7da75a663f3a5ddf63b6838ff839ef5073ec languageName: node linkType: hard "jest@npm:^29.3.1": - version: 29.5.0 - resolution: "jest@npm:29.5.0" + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -9899,7 +10405,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 32e29cfa2373530ed323ea65dfb4fd5172026349be48ebb7a2dc5660adadd1c68f6b0fe2b67cc3ee723cc34e2d4552a852730ac787251b406cf58e37a90f6dac + checksum: 2c161c63cb502265805c4982b8b722307f6a7016afdcff267eab33e727b9b737baaf8c22e0a8fedfc19634e903421a0352f0c056d26a8f24b908aaed335283c8 languageName: node linkType: hard @@ -9910,16 +10416,16 @@ __metadata: languageName: node linkType: hard -"joi@npm:^17.3.0": - version: 17.9.1 - resolution: "joi@npm:17.9.1" +"joi@npm:^17.7.0": + version: 17.9.2 + resolution: "joi@npm:17.9.2" dependencies: "@hapi/hoek": ^9.0.0 "@hapi/topo": ^5.0.0 "@sideway/address": ^4.1.3 "@sideway/formula": ^3.0.1 "@sideway/pinpoint": ^2.0.0 - checksum: 27bae524494f42db55a5a5e5e794c2616ad3524695af8f92f6c122dd5e65b12f2c0b76960cf0f1da7b01e5eb06d4b0579f96edf6b4df890c3fd6517f43dee6be + checksum: 284bc34d5070c7b064a9fa68e02703961ad08229dd95dfe0baf2aa5d278c7a99543ecb979b8a6e6f72035539bfdaf1269ac7fa7684a503b6de18b173f72dcc89 languageName: node linkType: hard @@ -9930,13 +10436,6 @@ __metadata: languageName: node linkType: hard -"js-sdsl@npm:^4.1.4": - version: 4.4.0 - resolution: "js-sdsl@npm:4.4.0" - checksum: 1eabe718867d293771074b5a14a82a115727b3d4abc9524fb9b0cb74293f447b90fe27bb74eb712b6400aeb7b869631c0a67d3347670cf22d067e77caeeb2f33 - languageName: node - linkType: hard - "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -10031,13 +10530,36 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0": +"json-bigint@npm:^1.0.0": + version: 1.0.0 + resolution: "json-bigint@npm:1.0.0" + dependencies: + bignumber.js: ^9.0.0 + checksum: e3f34e43be3284b573ea150a3890c92f06d54d8ded72894556357946aeed9877fd795f62f37fe16509af189fd314ab1104d0fd0f163746ad231b9f378f5b33f4 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" checksum: 140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 languageName: node linkType: hard +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.0 + resolution: "json-parse-even-better-errors@npm:3.0.0" + checksum: 128de17135e7af655ed83fc26dab0fe54faf43b3517fa73dcd997cce6e05a445932664f085ec6dbc219aeb0c592e53ef10d2d6dee4a8e9211ea901b8e6dd0b52 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -10084,7 +10606,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.0.0, json5@npm:^2.1.0, json5@npm:^2.2.2": +"json5@npm:^2.0.0, json5@npm:^2.1.0, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -10139,21 +10661,15 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:^8.4.0": - version: 8.5.1 - resolution: "jsonwebtoken@npm:8.5.1" +"jsonwebtoken@npm:9.0.1, jsonwebtoken@npm:^9.0.0": + version: 9.0.1 + resolution: "jsonwebtoken@npm:9.0.1" dependencies: jws: ^3.2.2 - lodash.includes: ^4.3.0 - lodash.isboolean: ^3.0.3 - lodash.isinteger: ^4.0.4 - lodash.isnumber: ^3.0.3 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.once: ^4.0.0 + lodash: ^4.17.21 ms: ^2.1.1 - semver: ^5.6.0 - checksum: c5ad937b6fa23a230efa8ed8ca3c0da8ebfdd377bafc3e8432a11b03ef90e733400a00b26c0dfee47db44a2e64b88b154b57e9926a92990f98dd25aaed15006e + semver: ^7.3.8 + checksum: 3508912a0fb5ad06a09a79f655681f6fc389376fb8e7fdcaf367fbdd02e9fb5e11a7a4ff715cbe44d8be0e7a99319b03a7d34ef5daede61cf1f8d3519bbb08d6 languageName: node linkType: hard @@ -10170,12 +10686,14 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" + version: 3.3.4 + resolution: "jsx-ast-utils@npm:3.3.4" dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: fb69ce100931e50d42c8f72a01495b7d090064824ce481cf7746449609c148a29aae6984624cf9066ac14bdf7978f8774461e120d5b50fa90b3bfe0a0e21ff77 + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: 6761ccd830deab6a4cb8ca182c7b3627f4478138b6f4e2b680afc2b5e954635feb460ff75218b67f8694a9f8a0da6f0833a013e34961a16fbe4457fb34a0a7b2 languageName: node linkType: hard @@ -10199,6 +10717,17 @@ __metadata: languageName: node linkType: hard +"jwa@npm:^2.0.0": + version: 2.0.0 + resolution: "jwa@npm:2.0.0" + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: ^5.0.1 + checksum: 6baab823b93c038ba1d2a9e531984dcadbc04e9eb98d171f4901b7a40d2be15961a359335de1671d78cb6d987f07cbe5d350d8143255977a889160c4d90fcc3c + languageName: node + linkType: hard + "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" @@ -10209,6 +10738,16 @@ __metadata: languageName: node linkType: hard +"jws@npm:^4.0.0": + version: 4.0.0 + resolution: "jws@npm:4.0.0" + dependencies: + jwa: ^2.0.0 + safe-buffer: ^5.0.1 + checksum: f1ca77ea5451e8dc5ee219cb7053b8a4f1254a79cb22417a2e1043c1eb8a569ae118c68f24d72a589e8a3dd1824697f47d6bd4fb4bebb93a3bdf53545e721661 + languageName: node + linkType: hard + "keygrip@npm:~1.1.0": version: 1.1.0 resolution: "keygrip@npm:1.1.0" @@ -10218,6 +10757,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.0.0": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" + dependencies: + json-buffer: 3.0.1 + checksum: 7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 + languageName: node + linkType: hard + "kind-of@npm:^3.0.2": version: 3.2.2 resolution: "kind-of@npm:3.2.2" @@ -10234,7 +10782,7 @@ __metadata: languageName: node linkType: hard -"kleur@npm:4.1.5": +"kleur@npm:4.1.5, kleur@npm:^4.0.3": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a @@ -10248,25 +10796,6 @@ __metadata: languageName: node linkType: hard -"ky-universal@npm:^0.3.0": - version: 0.3.0 - resolution: "ky-universal@npm:0.3.0" - dependencies: - abort-controller: ^3.0.0 - node-fetch: ^2.6.0 - peerDependencies: - ky: ">=0.12.0" - checksum: 8f2d5dba50f113bd4c67547cb8f6fb7ed94e3a62152a4778539452bd7064636c3467c9b3126c05e68ac53a2ca02ab740f0c260f05221f9610587eb8e03e469fa - languageName: node - linkType: hard - -"ky@npm:^0.12.0": - version: 0.12.0 - resolution: "ky@npm:0.12.0" - checksum: cdca90751ddf69521fd6bcb55acc236d61d4164850a55d7d4e1c167288af2c9ac0f7c9c8e70b409d583704e905ed9af10da4d5cd41b7d717484b5ade7801e24f - languageName: node - linkType: hard - "language-subtag-registry@npm:~0.3.2": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" @@ -10300,16 +10829,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - "li@npm:^1.3.0": version: 1.3.0 resolution: "li@npm:1.3.0" @@ -10342,7 +10861,7 @@ __metadata: languageName: node linkType: hard -"lines-and-columns@npm:~2.0.3": +"lines-and-columns@npm:^2.0.2, lines-and-columns@npm:~2.0.3": version: 2.0.3 resolution: "lines-and-columns@npm:2.0.3" checksum: 09525c10010a925b7efe858f1dd3184eeac34f0a9bc34993075ec490efad71e948147746b18e9540279cc87cd44085b038f986903db3de65ffe96d38a7b91c4c @@ -10405,6 +10924,16 @@ __metadata: languageName: node linkType: hard +"load-plugin@npm:^5.0.0": + version: 5.1.0 + resolution: "load-plugin@npm:5.1.0" + dependencies: + "@npmcli/config": ^6.0.0 + import-meta-resolve: ^2.0.0 + checksum: 645f6a584275004ae44e491f56252a21f0264d541f99bfd8ee36858d9b048e8680397a8da0faabe831cb827285f895d79d76ff2a0f000a3f629011d4bd84bfaf + languageName: node + linkType: hard + "load-tsconfig@npm:^0.2.3": version: 0.2.5 resolution: "load-tsconfig@npm:0.2.5" @@ -10440,6 +10969,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + "lockfile@npm:1.0.4": version: 1.0.4 resolution: "lockfile@npm:1.0.4" @@ -10466,14 +11004,7 @@ __metadata: "lodash.find@npm:^4.6.0": version: 4.6.0 resolution: "lodash.find@npm:4.6.0" - checksum: 0238f3abc0b87aa441820ab0ab31a81156e1809a66285f454fbea18cbdf4d16572d504dd9e96c22df8a36b81d0272bca9205d09d217d61f9b53fa3358023377f - languageName: node - linkType: hard - -"lodash.get@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.get@npm:4.4.2" - checksum: 48f40d471a1654397ed41685495acb31498d5ed696185ac8973daef424a749ca0c7871bf7b665d5c14f5cc479394479e0307e781f61d5573831769593411be6e + checksum: 0238f3abc0b87aa441820ab0ab31a81156e1809a66285f454fbea18cbdf4d16572d504dd9e96c22df8a36b81d0272bca9205d09d217d61f9b53fa3358023377f languageName: node linkType: hard @@ -10484,27 +11015,6 @@ __metadata: languageName: node linkType: hard -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: 0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 - languageName: node - linkType: hard - -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 - languageName: node - linkType: hard - -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d - languageName: node - linkType: hard - "lodash.isobject@npm:^3.0.2": version: 3.0.2 resolution: "lodash.isobject@npm:3.0.2" @@ -10512,20 +11022,6 @@ __metadata: languageName: node linkType: hard -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb - languageName: node - linkType: hard - -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: 09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 - languageName: node - linkType: hard - "lodash.keys@npm:^4.0.8": version: 4.2.0 resolution: "lodash.keys@npm:4.2.0" @@ -10554,20 +11050,6 @@ __metadata: languageName: node linkType: hard -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: 46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 - languageName: node - linkType: hard - -"lodash.set@npm:^4.3.2": - version: 4.3.2 - resolution: "lodash.set@npm:4.3.2" - checksum: c641d31905e51df43170dce8a1d11a1cff11356e2e2e75fe2615995408e9687d58c3e1d64c3c284c2df2bc519f79a98af737d2944d382ff82ffd244ff6075c29 - languageName: node - linkType: hard - "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -10575,13 +11057,6 @@ __metadata: languageName: node linkType: hard -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: 262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e - languageName: node - linkType: hard - "lodash@npm:4, lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -10589,7 +11064,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.0.0": +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -10618,6 +11093,13 @@ __metadata: languageName: node linkType: hard +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: 7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa + languageName: node + linkType: hard + "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -10642,10 +11124,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:7.16.1": - version: 7.16.1 - resolution: "lru-cache@npm:7.16.1" - checksum: 0cb0986ff022e13bdc52c2b1395c57d5d2cb1bfad24e4db7a5ab1118228eb51c19cdc7d19fc4197eec13e215a30194a3da7d0df4d3d839d1011bc3608c9f14d0 +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 languageName: node linkType: hard @@ -10674,30 +11156,14 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.0.0": - version: 9.1.0 - resolution: "lru-cache@npm:9.1.0" - checksum: 88b71fde4e40182a81c0f51b3609551547d48f937daa6462595750f28c722684956aa65698cc4c52433ed66a4256289381118e58d340fb4a1c7b6f0c0ddd1d68 - languageName: node - linkType: hard - -"lunr-mutable-indexes@npm:2.3.2": - version: 2.3.2 - resolution: "lunr-mutable-indexes@npm:2.3.2" - dependencies: - lunr: ">= 2.3.0 < 2.4.0" - checksum: c7c7bbb836f21d5fbeb7216c582553f2024d173f3b9343c36eab487ed9cd87d7abe27cc16cf09ff29559c047aeef80177cbb7ee6e1b2af1bb61652448108b9d3 - languageName: node - linkType: hard - -"lunr@npm:>= 2.3.0 < 2.4.0": - version: 2.3.9 - resolution: "lunr@npm:2.3.9" - checksum: 77d7dbb4fbd602aac161e2b50887d8eda28c0fa3b799159cee380fbb311f1e614219126ecbbd2c3a9c685f1720a8109b3c1ca85cc893c39b6c9cc6a62a1d8a8b +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.0 + resolution: "lru-cache@npm:10.0.0" + checksum: 347b7b391091e9f91182b6f683ce04329932a542376a2d7d300637213b99f06c222a3bb0f0db59adf246dac6cef1bb509cab352451a96621d07c41b10a20495f languageName: node linkType: hard -"lz-string@npm:^1.4.4": +"lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -10713,7 +11179,16 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^1.0.0": + version: 1.3.0 + resolution: "make-dir@npm:1.3.0" + dependencies: + pify: ^3.0.0 + checksum: 5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.0, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -10729,51 +11204,26 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" dependencies: agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 + 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: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 + 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: ^7.0.0 - ssri: ^9.0.0 - checksum: 28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - 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 - 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-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 2c737faf6a7f67077679da548b5bfeeef890595bf8c4323a1f76eae355d27ebb33dcf9cf1a673f944cf2f2a7cbf4e2b09f0a0a62931737728f210d902c6be966 + ssri: ^10.0.0 + checksum: c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b languageName: node linkType: hard @@ -10793,13 +11243,6 @@ __metadata: languageName: node linkType: hard -"map-stream@npm:~0.1.0": - version: 0.1.0 - resolution: "map-stream@npm:0.1.0" - checksum: 7dd6debe511c1b55d9da75e1efa65a28b1252a2d8357938d2e49b412713c478efbaefb0cdf0ee0533540c3bf733e8f9f71e1a15aa0fe74bf71b64e75bf1576bd - languageName: node - linkType: hard - "markdown-extensions@npm:^1.1.0": version: 1.1.1 resolution: "markdown-extensions@npm:1.1.1" @@ -10814,6 +11257,16 @@ __metadata: languageName: node linkType: hard +"mdast-comment-marker@npm:^2.0.0": + version: 2.1.2 + resolution: "mdast-comment-marker@npm:2.1.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-mdx-expression: ^1.1.0 + checksum: ee162384eb75209dab9a3a6871e6b7a17f9d89daf2a0f152be3887b62bc8a51be75914635321decab10f9866fa04c32e947d881c81152fa6ca05f55392f12c28 + languageName: node + linkType: hard + "mdast-util-from-markdown@npm:^0.8.0": version: 0.8.5 resolution: "mdast-util-from-markdown@npm:0.8.5" @@ -10827,6 +11280,26 @@ __metadata: languageName: node linkType: hard +"mdast-util-from-markdown@npm:^1.0.0": + version: 1.3.1 + resolution: "mdast-util-from-markdown@npm:1.3.1" + dependencies: + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + decode-named-character-reference: ^1.0.0 + mdast-util-to-string: ^3.1.0 + micromark: ^3.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-decode-string: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + unist-util-stringify-position: ^3.0.0 + uvu: ^0.5.0 + checksum: f4e901bf2a2e93fe35a339e0cff581efacce2f7117cd5652e9a270847bd7e2508b3e717b7b4156af54d4f896d63033e06ff9fafbf59a1d46fe17dd5e2a3f7846 + languageName: node + linkType: hard + "mdast-util-heading-style@npm:^1.0.2": version: 1.0.6 resolution: "mdast-util-heading-style@npm:1.0.6" @@ -10834,6 +11307,38 @@ __metadata: languageName: node linkType: hard +"mdast-util-heading-style@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-heading-style@npm:2.0.1" + dependencies: + "@types/mdast": ^3.0.0 + checksum: 662b0da13cdaf551994f06c7d02606d46ee6423dd4b29cdb9e8a17be5100c783cb929f106aba597bbc79a8b4011767bb4b907e662943a52bcc22a80382ee0b5d + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^1.1.0": + version: 1.3.2 + resolution: "mdast-util-mdx-expression@npm:1.3.2" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^2.0.0 + "@types/mdast": ^3.0.0 + mdast-util-from-markdown: ^1.0.0 + mdast-util-to-markdown: ^1.0.0 + checksum: 01f306ee809d28825cbec23b3c80376a0fbe69601b6b2843d23beb5662a31ec7560995f52b96b13093cc03de1130404a47f139d16f58c3f54e91e88f4bdd82d2 + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^3.0.0": + version: 3.0.1 + resolution: "mdast-util-phrasing@npm:3.0.1" + dependencies: + "@types/mdast": ^3.0.0 + unist-util-is: ^5.0.0 + checksum: 5e00e303652a7581593549dbce20dfb69d687d79a972f7928f6ca1920ef5385bceb737a3d5292ab6d937ed8c67bb59771e80e88f530b78734fe7d155f833e32b + languageName: node + linkType: hard + "mdast-util-to-markdown@npm:^0.6.0": version: 0.6.5 resolution: "mdast-util-to-markdown@npm:0.6.5" @@ -10848,6 +11353,22 @@ __metadata: languageName: node linkType: hard +"mdast-util-to-markdown@npm:^1.0.0": + version: 1.5.0 + resolution: "mdast-util-to-markdown@npm:1.5.0" + dependencies: + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + longest-streak: ^3.0.0 + mdast-util-phrasing: ^3.0.0 + mdast-util-to-string: ^3.0.0 + micromark-util-decode-string: ^1.0.0 + unist-util-visit: ^4.0.0 + zwitch: ^2.0.0 + checksum: 9831d14aa6c097750a90c7b87b4e814b040731c30606a794c9b136dc746633dd9ec07154ca97d4fec4eaf732cf89d14643424e2581732d6ee18c9b0e51ff7664 + languageName: node + linkType: hard + "mdast-util-to-string@npm:^1.0.2": version: 1.1.0 resolution: "mdast-util-to-string@npm:1.1.0" @@ -10862,6 +11383,15 @@ __metadata: languageName: node linkType: hard +"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": + version: 3.2.0 + resolution: "mdast-util-to-string@npm:3.2.0" + dependencies: + "@types/mdast": ^3.0.0 + checksum: 112f4bf0f6758dcb95deffdcf37afba7eaecdfe2ee13252de031723094d4d55220e147326690a8b91244758e2d678e7aeb1fdd0fa6ef3317c979bc42effd9a21 + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -10869,7 +11399,7 @@ __metadata: languageName: node linkType: hard -"memfs-or-file-map-to-github-branch@npm:^1.1.0": +"memfs-or-file-map-to-github-branch@npm:^1.2.1": version: 1.2.1 resolution: "memfs-or-file-map-to-github-branch@npm:1.2.1" dependencies: @@ -10915,6 +11445,242 @@ __metadata: languageName: node linkType: hard +"micromark-core-commonmark@npm:^1.0.1": + version: 1.1.0 + resolution: "micromark-core-commonmark@npm:1.1.0" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-factory-destination: ^1.0.0 + micromark-factory-label: ^1.0.0 + micromark-factory-space: ^1.0.0 + micromark-factory-title: ^1.0.0 + micromark-factory-whitespace: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-classify-character: ^1.0.0 + micromark-util-html-tag-name: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: b3bf7b7004ce7dbb3ae151dcca4db1d12546f1b943affb2418da4b90b9ce59357373c433ee2eea4c868aee0791dafa355aeed19f5ef2b0acaf271f32f1ecbe6a + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-destination@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 71ebd9089bf0c9689b98ef42215c04032ae2701ae08c3546b663628553255dca18e5310dbdacddad3acd8de4f12a789835fff30dadc4da3c4e30387a75e6b488 + languageName: node + linkType: hard + +"micromark-factory-label@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-label@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 5e2cd2d8214bb92a34dfcedf9c7aecf565e3648650a3a6a0495ededf15f2318dd214dc069e3026402792cd5839d395313f8ef9c2e86ca34a8facaa0f75a77753 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-space@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 3da81187ce003dd4178c7adc4674052fb8befc8f1a700ae4c8227755f38581a4ae963866dc4857488d62d1dc9837606c9f2f435fa1332f62a0f1c49b83c6a822 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-title@npm:1.1.0" + dependencies: + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: cf8c687d1d5c3928846a4791d4a7e2f1d7bdd2397051e20d60f06b7565a48bf85198ab6f85735e997ab3f0cbb80b8b6391f4f7ebc0aae2f2f8c3a08541257bf6 + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-whitespace@npm:1.1.0" + dependencies: + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 7248cc4534f9befb38c6f398b6e38efd3199f1428fc214c9cb7ed5b6e9fa7a82c0d8cdfa9bcacde62887c9a7c8c46baf5c318b2ae8f701afbccc8ad702e92dce + languageName: node + linkType: hard + +"micromark-util-character@npm:^1.0.0": + version: 1.2.0 + resolution: "micromark-util-character@npm:1.2.0" + dependencies: + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 3390a675a50731b58a8e5493cd802e190427f10fa782079b455b00f6b54e406e36882df7d4a3bd32b709f7a2c3735b4912597ebc1c0a99566a8d8d0b816e2cd4 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-chunked@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: 59534cf4aaf481ed58d65478d00eae0080df9b5816673f79b5ddb0cea263e5a9ee9cbb6cc565daf1eb3c8c4ff86fc4e25d38a0577539655cda823a4249efd358 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-classify-character@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 3266453dc0fdaf584e24c9b3c91d1ed180f76b5856699c51fd2549305814fcab7ec52afb4d3e83d002a9115cd2d2b2ffdc9c0b38ed85120822bf515cc00636ec + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-combine-extensions@npm:1.1.0" + dependencies: + micromark-util-chunked: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 0bc572fab3fe77f533c29aa1b75cb847b9fc9455f67a98623ef9740b925c0b0426ad9f09bbb56f1e844ea9ebada7873d1f06d27f7c979a917692b273c4b69e31 + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-decode-numeric-character-reference@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: 64ef2575e3fc2426976c19e16973348f20b59ddd5543f1467ac2e251f29e0a91f12089703d29ae985b0b9a408ee0d72f06d04ed3920811aa2402aabca3bdf9e4 + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-decode-string@npm:1.1.0" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: 757a0aaa5ad6c50c7480bd75371d407ac75f5022cd4404aba07adadf1448189502aea9bb7b2d09d25e18745e0abf72b95506b6beb184bcccabe919e48e3a5df7 + languageName: node + linkType: hard + +"micromark-util-encode@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-encode@npm:1.1.0" + checksum: 9878c9bc96999d45626a7597fffac85348ea842dce75d2417345cbf070a9941c62477bd0963bef37d4f0fd29f2982be6ddf416d62806f00ccb334af9d6ee87e7 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^1.0.0": + version: 1.2.0 + resolution: "micromark-util-html-tag-name@npm:1.2.0" + checksum: 15421869678d36b4fe51df453921e8186bff514a14e9f79f32b7e1cdd67874e22a66ad34a7f048dd132cbbbfc7c382ae2f777a2bfd1f245a47705dc1c6d4f199 + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-normalize-identifier@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: a9657321a2392584e4d978061882117a84db7d2c2c1c052c0f5d25da089d463edb9f956d5beaf7f5768984b6f72d046d59b5972951ec7bf25397687a62b8278a + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-resolve-all@npm:1.1.0" + dependencies: + micromark-util-types: ^1.0.0 + checksum: b5c95484c06e87bbbb60d8430eb030a458733a5270409f4c67892d1274737087ca6a7ca888987430e57cf1dcd44bb16390d3b3936a2bf07f7534ec8f52ce43c9 + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^1.0.0": + version: 1.2.0 + resolution: "micromark-util-sanitize-uri@npm:1.2.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: dbdb98248e9f0408c7a00f1c1cd805775b41d213defd659533835f34b38da38e8f990bf7b3f782e96bffbc549aec9c3ecdab197d4ad5adbfe08f814a70327b6e + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-subtokenize@npm:1.1.0" + dependencies: + micromark-util-chunked: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: f292b1b162845db50d36255c9d4c4c6d47931fbca3ac98a80c7e536d2163233fd662f8ca0479ee2b80f145c66a1394c7ed17dfce801439741211015e77e3901e + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-symbol@npm:1.1.0" + checksum: 10ceaed33a90e6bfd3a5d57053dbb53f437d4809cc11430b5a09479c0ba601577059be9286df4a7eae6e350a60a2575dc9fa9d9872b5b8d058c875e075c33803 + languageName: node + linkType: hard + +"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": + version: 1.1.0 + resolution: "micromark-util-types@npm:1.1.0" + checksum: a9749cb0a12a252ff536baabcb7012421b6fad4d91a5fdd80d7b33dc7b4c22e2d0c4637dfe5b902d00247fe6c9b01f4a24fce6b572b16ccaa4da90e6ce2a11e4 + languageName: node + linkType: hard + +"micromark@npm:^3.0.0": + version: 3.2.0 + resolution: "micromark@npm:3.2.0" + dependencies: + "@types/debug": ^4.0.0 + debug: ^4.0.0 + decode-named-character-reference: ^1.0.0 + micromark-core-commonmark: ^1.0.1 + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-combine-extensions: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-sanitize-uri: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: f243e805d1b3cc699fddae2de0b1492bc82462f1a709d7ae5c82039f88b1e009c959100184717e748be057b5f88603289d5681679a4e6fbabcd037beb34bc744 + languageName: node + linkType: hard + "micromark@npm:~2.11.0": version: 2.11.4 resolution: "micromark@npm:2.11.4" @@ -10992,6 +11758,20 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -11026,16 +11806,16 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.0": - version: 9.0.0 - resolution: "minimatch@npm:9.0.0" +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: ^2.0.1 - checksum: d966656c280a994f89c3711e8cdac0c78d8703d028a26722d0229e3e92bf515a065165caa64cbccdd7ca89bb0338a3094920f8d42d36295c4d55922e19ae366e + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": +"minimist@npm:^1.0.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -11051,33 +11831,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: a43da7401cd7c4f24b993887d41bd37d097356083b0bb836fd655916467463a1e6e9e553b2da4fcbe8745bf23d40c8b884eab20745562199663b3e9060cd8e7a - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" +"minipass-fetch@npm:^3.0.0": + version: 3.0.3 + resolution: "minipass-fetch@npm:3.0.3" dependencies: encoding: ^0.1.13 - minipass: ^3.1.6 + minipass: ^5.0.0 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true - checksum: 33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 + checksum: 12e0fde7e8fdb1bd923b9243b4788e7d3df305c6ddb3b79ab2da4587fa608c126157c7f6dd43746e8063ee99ec5abbb898d0426c812e9c9b68260c4fea9b279a languageName: node linkType: hard @@ -11090,7 +11855,7 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": +"minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -11108,7 +11873,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: @@ -11117,13 +11882,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^4.0.0": - version: 4.2.5 - resolution: "minipass@npm:4.2.5" - checksum: 98ef3a4f0e7cbb2a152139069fd48eca331296948946c69fd569eee24d875e1dbbe989609b561b9ff8ecdc3438f46ed6c287efd150facd7d374a8fd6ba689d02 - languageName: node - linkType: hard - "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -11131,7 +11889,14 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.2 + resolution: "minipass@npm:7.0.2" + checksum: 5e800acfc9dc75eacac5c4969ab50210463a8afbe8b487de1ae681106e17eb93772513854b6a38462b200b5758af95eeeb481945e050ce76f575ff1150fff4b4 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -11181,6 +11946,13 @@ __metadata: languageName: node linkType: hard +"mri@npm:^1.1.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -11254,7 +12026,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 @@ -11291,27 +12063,9 @@ __metadata: languageName: node linkType: hard -"node-domexception@npm:^1.0.0": - version: 1.0.0 - resolution: "node-domexception@npm:1.0.0" - checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b - languageName: node - linkType: hard - -"node-fetch@npm:3.2.10": - version: 3.2.10 - resolution: "node-fetch@npm:3.2.10" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: b9b754517df2dd55d16eaa6be681d277fe772ea0ac61e67ca4aef8f5154baf8581e2fd32c03cb8c5fdefa07dc24cafdb327b2033715edd9e4abc6883e20650c0 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.9 - resolution: "node-fetch@npm:2.6.9" +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -11319,7 +12073,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 7a4a0e027e509b741bec4172749103f158da23187ff251cb988dd54ea7267519c3fa11838971da0f5f3c54e79da3174e7bd72aa2179c9f69887511ece16c9c0f + checksum: 10372e4b5ee07acadc15e6b2bc6fd8940582eea7b9b2a331f4e3665fdcd968498c1656f79f2fa572080ebb37ea80e1474a6478b3b36057ef901b63f4be8fd899 languageName: node linkType: hard @@ -11337,6 +12091,13 @@ __metadata: languageName: node linkType: hard +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + "node-gyp-build@npm:^4.3.0": version: 4.6.0 resolution: "node-gyp-build@npm:4.6.0" @@ -11348,34 +12109,15 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^8.4.0": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 80ef333b3a882eb6a2695a8e08f31d618f4533eff192864e4a3a16b67ff0abc9d8c1d5fac0395550ec699326b9248c5e2b3be178492f7f4d1ccf97d2cf948021 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" +"node-gyp@npm:^9.3.1, node-gyp@npm:latest": + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 + make-fetch-happen: ^11.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 @@ -11384,7 +12126,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 3285c110768eb65aadd9aa1d056f917e594ea22611d21fd535ab3677ea433d0a281e7f09bc73d53e64b02214f4379dbca476dc33faffe455b0ac1d5ba92802f4 + checksum: e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad languageName: node linkType: hard @@ -11402,32 +12144,32 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: 90947653e8e3d85bda4bcbf28d019693ccfb5d5947838ca64e91208b51d7bfc13ba930b8216389a4faffbad8145b2c616bf1f7a09c97a1a9ac57fd6ef6d01c5c +"node-releases@npm:^2.0.12": + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 languageName: node linkType: hard -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" dependencies: - abbrev: 1 + abbrev: ^1.0.0 bin: nopt: bin/nopt.js - checksum: fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 + checksum: 837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 languageName: node linkType: hard -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" dependencies: - abbrev: ^1.0.0 + abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: 837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 + checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff languageName: node linkType: hard @@ -11450,6 +12192,20 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 + languageName: node + linkType: hard + "npm-run-path@npm:^2.0.0": version: 2.0.2 resolution: "npm-run-path@npm:2.0.2" @@ -11511,27 +12267,46 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.2 - resolution: "nwsapi@npm:2.2.2" - checksum: f7c4fedb0dc0786204ee99f440e9827d6e01a0c0322e93b5c9a9a382dd0bd9650d98ca3d1967a77554e3ec1f9a46a20cfea80a41fb00e91c5101c53d8b2c9aed - languageName: node - linkType: hard - -"nx@npm:15.9.2, nx@npm:^15.4.5": - version: 15.9.2 - resolution: "nx@npm:15.9.2" - dependencies: - "@nrwl/cli": 15.9.2 - "@nrwl/nx-darwin-arm64": 15.9.2 - "@nrwl/nx-darwin-x64": 15.9.2 - "@nrwl/nx-linux-arm-gnueabihf": 15.9.2 - "@nrwl/nx-linux-arm64-gnu": 15.9.2 - "@nrwl/nx-linux-arm64-musl": 15.9.2 - "@nrwl/nx-linux-x64-gnu": 15.9.2 - "@nrwl/nx-linux-x64-musl": 15.9.2 - "@nrwl/nx-win32-arm64-msvc": 15.9.2 - "@nrwl/nx-win32-x64-msvc": 15.9.2 - "@nrwl/tao": 15.9.2 + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db + languageName: node + linkType: hard + +"nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "nx-cloud@npm:16.0.5" + dependencies: + "@nrwl/nx-cloud": 16.0.5 + axios: 1.1.3 + chalk: ^4.1.0 + dotenv: ~10.0.0 + fs-extra: ^11.1.0 + node-machine-id: ^1.1.12 + open: ~8.4.0 + strip-json-comments: ^3.1.1 + tar: 6.1.11 + yargs-parser: ">=21.1.1" + bin: + nx-cloud: bin/nx-cloud.js + checksum: 02f0bf081c3f69c2682d9e21bc9e281df80a0e31852cd81cb8746d9dd07ebdc071c5138867ed9b84f922c0da40bd0170f2d735c4d8cf0768c24d6a47078ebf48 + languageName: node + linkType: hard + +"nx@npm:16.2.1": + version: 16.2.1 + resolution: "nx@npm:16.2.1" + dependencies: + "@nrwl/tao": 16.2.1 + "@nx/nx-darwin-arm64": 16.2.1 + "@nx/nx-darwin-x64": 16.2.1 + "@nx/nx-linux-arm-gnueabihf": 16.2.1 + "@nx/nx-linux-arm64-gnu": 16.2.1 + "@nx/nx-linux-arm64-musl": 16.2.1 + "@nx/nx-linux-x64-gnu": 16.2.1 + "@nx/nx-linux-x64-musl": 16.2.1 + "@nx/nx-win32-arm64-msvc": 16.2.1 + "@nx/nx-win32-x64-msvc": 16.2.1 "@parcel/watcher": 2.0.4 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": ^3.0.0-rc.18 @@ -11569,23 +12344,23 @@ __metadata: "@swc-node/register": ^1.4.2 "@swc/core": ^1.2.173 dependenciesMeta: - "@nrwl/nx-darwin-arm64": + "@nx/nx-darwin-arm64": optional: true - "@nrwl/nx-darwin-x64": + "@nx/nx-darwin-x64": optional: true - "@nrwl/nx-linux-arm-gnueabihf": + "@nx/nx-linux-arm-gnueabihf": optional: true - "@nrwl/nx-linux-arm64-gnu": + "@nx/nx-linux-arm64-gnu": optional: true - "@nrwl/nx-linux-arm64-musl": + "@nx/nx-linux-arm64-musl": optional: true - "@nrwl/nx-linux-x64-gnu": + "@nx/nx-linux-x64-gnu": optional: true - "@nrwl/nx-linux-x64-musl": + "@nx/nx-linux-x64-musl": optional: true - "@nrwl/nx-win32-arm64-msvc": + "@nx/nx-win32-arm64-msvc": optional: true - "@nrwl/nx-win32-x64-msvc": + "@nx/nx-win32-x64-msvc": optional: true peerDependenciesMeta: "@swc-node/register": @@ -11594,7 +12369,7 @@ __metadata: optional: true bin: nx: bin/nx.js - checksum: a60b9684d624f785b81068b89778c8b2bcefe2951d0b28f207ef15ed827f199bbd6ea770a7925660c5a59bdb592f1b88a46e9ee31860c278999e4345a9707f8a + checksum: a6d78686dea2cb72d84d06dc1feed0dc0e07080c607c78939c1083b7a05cc9d30514016aa79dc584fd54dffa0612c7051666ddb7fb1ddf4e7373f0515f7ed6f6 languageName: node linkType: hard @@ -11636,7 +12411,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -11691,13 +12466,6 @@ __metadata: languageName: node linkType: hard -"octokit-pagination-methods@npm:^1.1.0": - version: 1.1.0 - resolution: "octokit-pagination-methods@npm:1.1.0" - checksum: e8b2b346e7ad91c1b10a3d8be76d8aa33889b4df0bd5c28106dc2e8b5498185bbb5bd884ef07a57b09a5c54003deb2814280bab6ed6991e9e650c5cdc9879924 - languageName: node - linkType: hard - "on-exit-leak-free@npm:^0.2.0": version: 0.2.0 resolution: "on-exit-leak-free@npm:0.2.0" @@ -11748,7 +12516,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.4.0": +"open@npm:^8.4.0, open@npm:~8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -11777,31 +12545,34 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 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 - checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + 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 + checksum: 10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 languageName: node linkType: hard @@ -11829,6 +12600,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01 + languageName: node + linkType: hard + "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -11861,6 +12639,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -11888,6 +12675,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -11897,6 +12693,16 @@ __metadata: languageName: node linkType: hard +"p-retry@npm:^5.1.2": + version: 5.1.2 + resolution: "p-retry@npm:5.1.2" + dependencies: + "@types/retry": 0.12.1 + retry: ^0.13.1 + checksum: 9017001ebfbe2a08cf45c970106f6953f5c76d1f8d8e9ff81afcbf6c25fe9f0e13499c5ac49b35d114672cf15689a952f4f3287fd1316420eb810a5a99ecf4e7 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -11966,6 +12772,18 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^6.0.0": + version: 6.0.2 + resolution: "parse-json@npm:6.0.2" + dependencies: + "@babel/code-frame": ^7.16.0 + error-ex: ^1.3.2 + json-parse-even-better-errors: ^2.3.1 + lines-and-columns: ^2.0.2 + checksum: e421b87d7ccb37123d11d9cabafd6078a2a0036d7d5006463cbdbe011e3b029843dab15c2438f7fc1dba8e9c5446716313d1ecd5e56185214557101b980fb4fa + languageName: node + linkType: hard + "parse-link-header@npm:^2.0.0": version: 2.0.0 resolution: "parse-link-header@npm:2.0.0" @@ -11975,6 +12793,13 @@ __metadata: languageName: node linkType: hard +"parse-ms@npm:^3.0.0": + version: 3.0.0 + resolution: "parse-ms@npm:3.0.0" + checksum: 056b4a32a9d3749f3f4cfffefb45c45540491deaa8e1d8ad43c2ddde7ba04edd076bd1b298f521238bb5fb084a9b2c4a2ebb78aefa651afbc4c2b0af4232fc54 + languageName: node + linkType: hard + "parse-passwd@npm:^1.0.0": version: 1.0.0 resolution: "parse-passwd@npm:1.0.0" @@ -12012,6 +12837,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -12047,13 +12879,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.7.0": - version: 1.7.0 - resolution: "path-scurry@npm:1.7.0" +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" dependencies: - lru-cache: ^9.0.0 - minipass: ^5.0.0 - checksum: a8d1fd105b5b1bb0b86c73e3e1433d8227b8075c4868453529611ed8b0ba768d1195c54690c1de125277c4e8f09c7459b0e98f99fbd357c9b34dd566cbe6b55b + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard @@ -12080,12 +12912,10 @@ __metadata: languageName: node linkType: hard -"pause-stream@npm:0.0.11": - version: 0.0.11 - resolution: "pause-stream@npm:0.0.11" - dependencies: - through: ~2.3 - checksum: 86f12c64cdaaa8e45ebaca4e39a478e1442db8b4beabc280b545bfaf79c0e2f33c51efb554aace5c069cc441c7b924ba484837b345eaa4ba6fc940d62f826802 +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 8a87e63f7a4afcfb0f9f77b39bb92374afc723418b9cb716ee4257689224171002e07768eeade4ecd0e86f1fa3d8f022994219fb45634f2dbd78c6803e452458 languageName: node linkType: hard @@ -12124,7 +12954,7 @@ __metadata: languageName: node linkType: hard -"pinkie-promise@npm:^2.0.1": +"pinkie-promise@npm:^2.0.0, pinkie-promise@npm:^2.0.1": version: 2.0.1 resolution: "pinkie-promise@npm:2.0.1" dependencies: @@ -12196,9 +13026,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.1, pirates@npm:^4.0.4": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: 58b6ff0f137a3d70ff34ac4802fd19819cdc19b53e9c95adecae6c7cfc77719a11f561ad85d46e79e520ef57c31145a564c8bc3bee8cfee75d441fab2928a51d + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -12213,7 +13043,7 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": +"pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: @@ -12231,6 +13061,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + "pkginfo@npm:0.4.1": version: 0.4.1 resolution: "pkginfo@npm:0.4.1" @@ -12238,6 +13077,26 @@ __metadata: languageName: node linkType: hard +"playwright-core@npm:1.36.0": + version: 1.36.0 + resolution: "playwright-core@npm:1.36.0" + bin: + playwright-core: cli.js + checksum: 5b5d32495e222ddd4351d1d8b116a25a7d93ea5f3439dceaceeb916d0abdce6d5b0b84f80df0b239168d55a100e7aecc9db4774ff20ba0210d8de027f258b544 + languageName: node + linkType: hard + +"playwright@npm:1.36.0": + version: 1.36.0 + resolution: "playwright@npm:1.36.0" + dependencies: + playwright-core: 1.36.0 + bin: + playwright: cli.js + checksum: dc39eb6271b22901cb6219a8ecdd44736169edd789d2a8be5885ded5414ee2a9e2c73a19e24d55336ddbae6f9d69522b46f1fe92998740745f1cb78d58b6cb6e + languageName: node + linkType: hard + "please-upgrade-node@npm:^3.2.0": version: 3.2.0 resolution: "please-upgrade-node@npm:3.2.0" @@ -12268,7 +13127,7 @@ __metadata: languageName: node linkType: hard -"portfinder@npm:^1.0.25": +"portfinder@npm:^1.0.28": version: 1.0.32 resolution: "portfinder@npm:1.0.32" dependencies: @@ -12304,13 +13163,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -12321,23 +13173,18 @@ __metadata: linkType: hard "prettier@npm:^2.8.0": - version: 2.8.7 - resolution: "prettier@npm:2.8.7" + version: 2.8.8 + resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: 84c5b62f7d4909ae5b18b1a4cee67f6a30a548244c8919e67158dee1453f4fa4ff4d291c6f2e41e21d443a0c405f03ec27690502d4ad90c3a7c59bcaf38b51ba + checksum: 463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a languageName: node linkType: hard -"pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-regex: ^5.0.0 - ansi-styles: ^4.0.0 - react-is: ^17.0.1 - checksum: b5ddf0e949b874b699d313fe9407f0eb65e67d00823b2dd95335905a73457260af7612f3bff6b48611fcca9ffcff003359e4c9faba4200d6209da433a859aef3 +"pretty-bytes@npm:^6.1.0": + version: 6.1.1 + resolution: "pretty-bytes@npm:6.1.1" + checksum: c7a660b933355f3b4587ad3f001c266a8dd6afd17db9f89ebc50812354bb142df4b9600396ba5999bdb1f9717300387dc311df91895c5f0f2a1780e22495b5f8 languageName: node linkType: hard @@ -12352,14 +13199,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": + version: 29.6.1 + resolution: "pretty-format@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: bcc0190d050196b64e501e5c2b44beb802d79a2b70b6fe6b24ae2d5e0f31237dfcb1f0ab2ada4678829b6ee38507ba292396301aff0a8122e575ffd45d5d037c + checksum: decb4ca86b34e53a08e525d2b50be19ef4bffa4bb4122787740b012c11490311879de53dee8b669a82376b6fec06040ec546831f2c3ce0df963c00d743cce664 languageName: node linkType: hard @@ -12370,6 +13217,15 @@ __metadata: languageName: node linkType: hard +"pretty-ms@npm:^8.0.0": + version: 8.0.0 + resolution: "pretty-ms@npm:8.0.0" + dependencies: + parse-ms: ^3.0.0 + checksum: e960d633ecca45445cf5c6dffc0f5e4bef6744c92449ab0e8c6c704800675ab71e181c5e02ece5265e02137a33e313d3f3e355fbf8ea30b4b5b23de423329f8d + languageName: node + linkType: hard + "prettyjson@npm:^1.2.1": version: 1.2.5 resolution: "prettyjson@npm:1.2.5" @@ -12382,6 +13238,20 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + "process-warning@npm:1.0.0, process-warning@npm:^1.0.0": version: 1.0.0 resolution: "process-warning@npm:1.0.0" @@ -12396,13 +13266,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -12458,17 +13321,6 @@ __metadata: languageName: node linkType: hard -"ps-tree@npm:^1.2.0": - version: 1.2.0 - resolution: "ps-tree@npm:1.2.0" - dependencies: - event-stream: =3.3.4 - bin: - ps-tree: ./bin/ps-tree.js - checksum: 9d1c159e0890db5aa05f84d125193c2190a6c4ecd457596fd25e7611f8f747292a846459dcc0244e27d45529d4cea6d1010c3a2a087fad02624d12fdb7d97c22 - languageName: node - linkType: hard - "psl@npm:^1.1.28, psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -12494,9 +13346,9 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.1 - resolution: "pure-rand@npm:6.0.1" - checksum: d8e046e066d4a980140b501021a8426da0d7a01af901cb03ba8e1863c3960cd01216d997cd2ea7f370f1e9056c31fd88e925679a19787fb874dbc45f51d756e2 + version: 6.0.2 + resolution: "pure-rand@npm:6.0.2" + checksum: 0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa languageName: node linkType: hard @@ -12509,12 +13361,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.10.0, qs@npm:^6.4.0": - version: 6.11.1 - resolution: "qs@npm:6.11.1" +"qs@npm:^6.4.0": + version: 6.11.2 + resolution: "qs@npm:6.11.2" dependencies: side-channel: ^1.0.4 - checksum: 7ec57d3d62334c6313346b54f2b588b28c983793bf73981b77d769396fbb04fec911fa4e8a085528c3ebe7c04cfc9c9130410b277b3328da91087ae8ca728437 + checksum: 4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 languageName: node linkType: hard @@ -12525,7 +13377,7 @@ __metadata: languageName: node linkType: hard -"query-string@npm:^6.8.2": +"query-string@npm:^6.12.1": version: 6.14.1 resolution: "query-string@npm:6.14.1" dependencies: @@ -12558,10 +13410,10 @@ __metadata: languageName: node linkType: hard -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 0f9dc0cc3b0432ff047f1e2a5e58860c531a84574674c0f52fef535efc6e1e07fa3851102fff3da7dd551a592c743f6f6fa521379a6aa5fe50266f8af8f0b570 +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da languageName: node linkType: hard @@ -12584,18 +13436,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - "react-dom@npm:16.14.0": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -12649,6 +13489,16 @@ __metadata: languageName: node linkType: hard +"read-package-json-fast@npm:^3.0.0, read-package-json-fast@npm:^3.0.2": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: ^3.0.0 + npm-normalize-package-bin: ^3.0.0 + checksum: 37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -12672,6 +13522,21 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: 7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + "readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -12684,14 +13549,15 @@ __metadata: linkType: hard "readable-stream@npm:^4.0.0": - version: 4.3.0 - resolution: "readable-stream@npm:4.3.0" + version: 4.4.2 + resolution: "readable-stream@npm:4.4.2" dependencies: abort-controller: ^3.0.0 buffer: ^6.0.3 events: ^3.3.0 process: ^0.11.10 - checksum: c74b8bfdfa09b0295e3cf031c17358ce6638e04498299c9c85ff922cd786e44b4098e79961d0c7ac9aa5a8279b335b8eb2f97d41fb0661bebce643be0ec3f49b + string_decoder: ^1.3.0 + checksum: cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c languageName: node linkType: hard @@ -12729,24 +13595,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.1 - resolution: "recast@npm:0.23.1" + version: 0.23.3 + resolution: "recast@npm:0.23.3" dependencies: assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: ce3f239721f56ef0773683eb1de774fb4c748f9aa3b81a935a06726226d27a2f884fd0f716f5ca17b96072061d72577e3a5e3a4883e2ce0c11c22a536dd2139a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: 22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 + checksum: 2f2d0ce271b187e29f8ea15bf3c319e708376145aaef2797e9a9d3e337e12178bd0d05d607baf601bb607075fbc040ca51f2d58a8bd566d8069c8a9d4b334608 languageName: node linkType: hard @@ -12776,7 +13633,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.4": +"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.9": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 @@ -12792,14 +13649,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 5d797c7fb95f72a52dd9685a485faf0af3c55a4d1f2fafc1153a7be3df036cc3274b195b3ae051ee3d896a01960b446d726206e0d9a90b749e90d93445bb781f + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: 312b7966c5cd2e6837da4073e0e6450191e3c6e8f07276cbed35e170ea5606f91487b435eb3290593f8aed39b1191c44f5340e6e5392650feaf2b34a98378464 languageName: node linkType: hard @@ -12828,6 +13685,18 @@ __metadata: languageName: node linkType: hard +"remark-cli@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-cli@npm:11.0.0" + dependencies: + remark: ^14.0.0 + unified-args: ^10.0.0 + bin: + remark: cli.js + checksum: 707bdc2431817154a88ba0092c5391a72f8df239b3aea798fbb5c2d94a59e1e5c700a51ee4d5d779c5e5452069aeb63b53620d54d3dd5b2be74ae9896968a509 + languageName: node + linkType: hard + "remark-cli@npm:^9.0.0": version: 9.0.0 resolution: "remark-cli@npm:9.0.0" @@ -12850,6 +13719,17 @@ __metadata: languageName: node linkType: hard +"remark-lint-final-newline@npm:^2.0.0": + version: 2.1.2 + resolution: "remark-lint-final-newline@npm:2.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + checksum: 47d9880fa589d3cd220965a38060fc6dc027adb11c244ab05c4099d9f29f0afbe69452488a78f246ea5de40011471a5695a23a5c445ee1f80ae0cd9a419e036f + languageName: node + linkType: hard + "remark-lint-hard-break-spaces@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-hard-break-spaces@npm:2.0.1" @@ -12862,6 +13742,20 @@ __metadata: languageName: node linkType: hard +"remark-lint-hard-break-spaces@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-hard-break-spaces@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: 6216d93a893e9724f81f2ae34a4484d74beaf20b91319897eaf0b5ce6e60dfdc32077efd0d0a7b777855d09ea11746daa0604c74299570a617fc50b96d5da37c + languageName: node + linkType: hard + "remark-lint-list-item-bullet-indent@npm:^3.0.0": version: 3.0.0 resolution: "remark-lint-list-item-bullet-indent@npm:3.0.0" @@ -12874,6 +13768,19 @@ __metadata: languageName: node linkType: hard +"remark-lint-list-item-bullet-indent@npm:^4.0.0": + version: 4.1.2 + resolution: "remark-lint-list-item-bullet-indent@npm:4.1.2" + dependencies: + "@types/mdast": ^3.0.0 + pluralize: ^8.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: b8af3a7e328d300344cecd51218eb34b4261425a648d095c8def3c1abc5a4734fecc5f470b58faef56edbc565ccdbe939acf6832dd60d5d93a5748ebade57cd4 + languageName: node + linkType: hard + "remark-lint-list-item-indent@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-list-item-indent@npm:2.0.1" @@ -12887,6 +13794,21 @@ __metadata: languageName: node linkType: hard +"remark-lint-list-item-indent@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-list-item-indent@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + pluralize: ^8.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: 2204a5bb4ead4178d505ef00d10b7ec9b50dbe4331557db59bcbbe35aa83434c6f10b86537af715e2955cc7c82e17f5da361f9f07c4febdb82acebe2ea594204 + languageName: node + linkType: hard + "remark-lint-no-auto-link-without-protocol@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-auto-link-without-protocol@npm:2.0.1" @@ -12913,6 +13835,21 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-blockquote-without-marker@npm:^5.0.0": + version: 5.1.2 + resolution: "remark-lint-no-blockquote-without-marker@npm:5.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + vfile-location: ^4.0.0 + checksum: 2340cfcdb4304118995335649928f9618581cbfc726a632c23a7f0ee40b512c9204f0d746ca1672b55e516e81a99194334e5db419485856e7b54509e0c1e94bd + languageName: node + linkType: hard + "remark-lint-no-duplicate-definitions@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-duplicate-definitions@npm:2.0.1" @@ -12926,6 +13863,21 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-duplicate-definitions@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-no-duplicate-definitions@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-stringify-position: ^3.0.0 + unist-util-visit: ^4.0.0 + checksum: 50b70ee22b7a58ce926595a5a71930b237e1917d1bf4e040f735e0099fb38f4d58b3010e125f6e6fd11373a5d9c1804750f51dbd2d764a33133a93f63f04bf3c + languageName: node + linkType: hard + "remark-lint-no-heading-content-indent@npm:^3.0.0": version: 3.0.0 resolution: "remark-lint-no-heading-content-indent@npm:3.0.0" @@ -12940,6 +13892,22 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-heading-content-indent@npm:^4.0.0": + version: 4.1.2 + resolution: "remark-lint-no-heading-content-indent@npm:4.1.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-heading-style: ^2.0.0 + pluralize: ^8.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: 4773db789fbd9e429afd2a7f1bd57abb7400d331126d9ff7584b518b74ac77bd62fb2d3138be3d75da319ea41ba763f1a94b3dcea05dd3283dcce8d9e0a3a022 + languageName: node + linkType: hard + "remark-lint-no-inline-padding@npm:^3.0.0": version: 3.0.0 resolution: "remark-lint-no-inline-padding@npm:3.0.0" @@ -12952,6 +13920,20 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-inline-padding@npm:^4.0.0": + version: 4.1.2 + resolution: "remark-lint-no-inline-padding@npm:4.1.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-to-string: ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: 014eec4f44c98a818ad4fc50db193242a521c1abeb7bf90fd929597ffae9642c3f74e387a2839e72d8bf9c1e038b5e79c1a5c80a5ed0755c1a662a8a16049164 + languageName: node + linkType: hard + "remark-lint-no-literal-urls@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-literal-urls@npm:2.0.1" @@ -12965,6 +13947,21 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-literal-urls@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-no-literal-urls@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-to-string: ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: 4fad28c408676f6cd72a4994ac4ec4253f75ff03817262f8ca025bd424313a2f5bcc5295431e2246e75db47ea0f03c05428ee872879cf497f91356aeb7273766 + languageName: node + linkType: hard + "remark-lint-no-shortcut-reference-image@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-shortcut-reference-image@npm:2.0.1" @@ -12976,6 +13973,19 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-shortcut-reference-image@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-no-shortcut-reference-image@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: af84df873b34189108e83141aeb91a98975e555c9978bf918a108e34cb244aac29f24a973f04ec7664b00482a6e5c870ff8a068b1862cf2347670a370c6336a1 + languageName: node + linkType: hard + "remark-lint-no-shortcut-reference-link@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-shortcut-reference-link@npm:2.0.1" @@ -12987,6 +13997,19 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-shortcut-reference-link@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-no-shortcut-reference-link@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: 84d4d7be035f77d5068bc71530bb5b439b6dd7ce05058ef3a645456513838dfd83306fb8852d47f0d733ab5f4fbf742428c4f97254923e2594efbf58ad5ca81f + languageName: node + linkType: hard + "remark-lint-no-undefined-references@npm:^3.0.0": version: 3.0.0 resolution: "remark-lint-no-undefined-references@npm:3.0.0" @@ -13001,6 +14024,22 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-undefined-references@npm:^4.0.0": + version: 4.2.1 + resolution: "remark-lint-no-undefined-references@npm:4.2.1" + dependencies: + "@types/mdast": ^3.0.0 + micromark-util-normalize-identifier: ^1.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + vfile-location: ^4.0.0 + checksum: 9b7d40456016f45142e4c8b2ae9561dc8714ac40ad68e39cf6687bf996243e2d15021b323fbfb09d140d5234bd4a164930a67f04b0ac100e1cba7c15d539ed3e + languageName: node + linkType: hard + "remark-lint-no-unused-definitions@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-no-unused-definitions@npm:2.0.1" @@ -13012,6 +14051,19 @@ __metadata: languageName: node linkType: hard +"remark-lint-no-unused-definitions@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-no-unused-definitions@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: 6c0cda55e2c1dbfc79bb940d4277123dd42cf65d37b8617191958cbe8318086006ad403808a24369efa6c4beb8fa6972d3e3a7ec8b17e16e4e5f71dde803b59f + languageName: node + linkType: hard + "remark-lint-ordered-list-marker-style@npm:^2.0.0": version: 2.0.1 resolution: "remark-lint-ordered-list-marker-style@npm:2.0.1" @@ -13024,6 +14076,20 @@ __metadata: languageName: node linkType: hard +"remark-lint-ordered-list-marker-style@npm:^3.0.0": + version: 3.1.2 + resolution: "remark-lint-ordered-list-marker-style@npm:3.1.2" + dependencies: + "@types/mdast": ^3.0.0 + unified: ^10.0.0 + unified-lint-rule: ^2.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: 1e2789a95d3c19378de7a07203cdc9a5d790d83304bbe93ae3fc2c48c448bb9d4bb2596beb6447ca3434cc3fe1531b3a9db7c2f20cdc706a3974bf4647195cae + languageName: node + linkType: hard + "remark-lint@npm:^8.0.0": version: 8.0.0 resolution: "remark-lint@npm:8.0.0" @@ -13033,6 +14099,17 @@ __metadata: languageName: node linkType: hard +"remark-lint@npm:^9.0.0, remark-lint@npm:^9.1.2": + version: 9.1.2 + resolution: "remark-lint@npm:9.1.2" + dependencies: + "@types/mdast": ^3.0.0 + remark-message-control: ^7.0.0 + unified: ^10.1.0 + checksum: 31bdbebe519e6a46159ed9337a81219d2eb3d9223e57f2981817e2c173e5cc94469b6ad7b9e773407fa01b539a2b1bacbd3f827a65f99f839166d044d0892977 + languageName: node + linkType: hard + "remark-message-control@npm:^6.0.0": version: 6.0.0 resolution: "remark-message-control@npm:6.0.0" @@ -13043,6 +14120,30 @@ __metadata: languageName: node linkType: hard +"remark-message-control@npm:^7.0.0": + version: 7.1.1 + resolution: "remark-message-control@npm:7.1.1" + dependencies: + "@types/mdast": ^3.0.0 + mdast-comment-marker: ^2.0.0 + unified: ^10.0.0 + unified-message-control: ^4.0.0 + vfile: ^5.0.0 + checksum: 290c9355a2d3a438ece919c0e1120a7493751060ead0bb0f3e8ebd393ca12c89cfc0d0c24c6496c61b8f4878486ac87a52ffa57435b8ef13af2926bc01929372 + languageName: node + linkType: hard + +"remark-parse@npm:^10.0.0": + version: 10.0.2 + resolution: "remark-parse@npm:10.0.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-from-markdown: ^1.0.0 + unified: ^10.0.0 + checksum: 30cb8f2790380b1c7370a1c66cda41f33a7dc196b9e440a00e2675037bca55aea868165a8204e0cdbacc27ef4a3bdb7d45879826bd6efa07d9fdf328cb67a332 + languageName: node + linkType: hard + "remark-parse@npm:^9.0.0": version: 9.0.0 resolution: "remark-parse@npm:9.0.0" @@ -13076,6 +14177,42 @@ __metadata: languageName: node linkType: hard +"remark-preset-lint-recommended@npm:^6.1.3": + version: 6.1.3 + resolution: "remark-preset-lint-recommended@npm:6.1.3" + dependencies: + "@types/mdast": ^3.0.0 + remark-lint: ^9.0.0 + remark-lint-final-newline: ^2.0.0 + remark-lint-hard-break-spaces: ^3.0.0 + remark-lint-list-item-bullet-indent: ^4.0.0 + remark-lint-list-item-indent: ^3.0.0 + remark-lint-no-blockquote-without-marker: ^5.0.0 + remark-lint-no-duplicate-definitions: ^3.0.0 + remark-lint-no-heading-content-indent: ^4.0.0 + remark-lint-no-inline-padding: ^4.0.0 + remark-lint-no-literal-urls: ^3.0.0 + remark-lint-no-shortcut-reference-image: ^3.0.0 + remark-lint-no-shortcut-reference-link: ^3.0.0 + remark-lint-no-undefined-references: ^4.0.0 + remark-lint-no-unused-definitions: ^3.0.0 + remark-lint-ordered-list-marker-style: ^3.0.0 + unified: ^10.0.0 + checksum: 48abd8dbdfacb9dd178dbae534541a083a535757324e7c9ad2ef0085f9a4a9e034d8f02871b6138268accf02a6cb9b1a0d36ce913436481aa1998475b40df8b1 + languageName: node + linkType: hard + +"remark-stringify@npm:^10.0.0": + version: 10.0.3 + resolution: "remark-stringify@npm:10.0.3" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-to-markdown: ^1.0.0 + unified: ^10.0.0 + checksum: 682f26c66ce72e97a00bff75774b68f8008184dc1e4407039e186de896b5cd5d336aa65842bf131f4826a7415acdcd01d14ba59ff41b421a250c23fb187cda85 + languageName: node + linkType: hard + "remark-stringify@npm:^9.0.0": version: 9.0.1 resolution: "remark-stringify@npm:9.0.1" @@ -13096,6 +14233,18 @@ __metadata: languageName: node linkType: hard +"remark@npm:^14.0.0, remark@npm:^14.0.3": + version: 14.0.3 + resolution: "remark@npm:14.0.3" + dependencies: + "@types/mdast": ^3.0.0 + remark-parse: ^10.0.0 + remark-stringify: ^10.0.0 + unified: ^10.0.0 + checksum: d4dbef29abdb62b01ae632d787bf0038af819df3e4308e037754ece8cb9c4d8ea52e8629174a47b5c46a7448cd22feba5dfea09b3ffdaa8c745b4c9bdd01b41d + languageName: node + linkType: hard + "repeat-string@npm:^1.0.0, repeat-string@npm:^1.5.0": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" @@ -13159,6 +14308,13 @@ __metadata: languageName: node linkType: hard +"resolve-alpn@npm:^1.0.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -13189,16 +14345,16 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1": + version: 1.22.3 + resolution: "resolve@npm:1.22.3" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 6d58b1cb40f3fc80b9e45dd799d84cdc3829a993e4b9fa3b59d331e1dfacd0870e1851f4d0eb549d68c796e0b7087b43d1aec162653ccccff9e18191221a6e7d + checksum: 5ebd90dc08467e7d9af8f89a67f127c90d77e58d3bfc65da5221699cc15679c5bae5e410e6795ee4b9f717cd711c495a52a3b650ce6720b0626de46e5074e796 languageName: node linkType: hard @@ -13215,16 +14371,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=c3c19d" +"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin<compat/resolve>::version=1.22.3&hash=c3c19d" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 0d8ccceba5537769c42aa75e4aa75ae854aac866a11d7e9ffdb1663f0158ee646a0d48fc2818ed5e7fb364d64220a1fb9092a160e11e00cbdd5fbab39a13092c + checksum: 6267bdbbbb1da23975463e979dadf5135fcc40c4b9281c5af4581afa848ced98090ab4e2dbc9085e58f8ea48c0eb7c4fe94b1e8f55ebdd17a725d86982eb5288 languageName: node linkType: hard @@ -13241,6 +14397,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: ^2.0.0 + checksum: 360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -13251,6 +14416,16 @@ __metadata: languageName: node linkType: hard +"retry-request@npm:^5.0.0": + version: 5.0.2 + resolution: "retry-request@npm:5.0.2" + dependencies: + debug: ^4.1.1 + extend: ^3.0.2 + checksum: 06de24fd2f08a3d7985ad12d5993a5772dd0a4e0a079577ad63c0ce9b4005fcf464c8b0b215b732bede995f326ac0408c0fa04658736c8ffae5adde5b0194ed9 + languageName: node + linkType: hard + "retry@npm:0.12.0, retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -13258,6 +14433,13 @@ __metadata: languageName: node linkType: hard +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -13306,8 +14488,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.5": - version: 3.20.2 - resolution: "rollup@npm:3.20.2" + version: 3.26.3 + resolution: "rollup@npm:3.26.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -13315,7 +14497,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 1203da200a6f7dd2e62445fe31c9711134545f32d8a91f8fc3d79d5eff648d5faaf296af1d867c95439b862a39457670f5a32ecad583c11fc0de1ab2d2ca12b1 + checksum: 41d02540dcb125150d2dc4a136e35776290eef489ed0735814afcdcfd3e0a8944cd30875daa872360e4fe8bf75bb4adf41090913a32e636722f43a5d2caf241e languageName: node linkType: hard @@ -13328,32 +14510,44 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^6.5.4, rxjs@npm:^6.6.3": - version: 6.6.7 - resolution: "rxjs@npm:6.6.7" +"rxjs@npm:^7.5.1, rxjs@npm:^7.8.0": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: ^2.1.0 + checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"sade@npm:^1.7.3": + version: 1.8.1 + resolution: "sade@npm:1.8.1" dependencies: - tslib: ^1.9.0 - checksum: e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + mri: ^1.1.0 + checksum: da8a3a5d667ad5ce3bf6d4f054bbb9f711103e5df21003c5a5c1a8a77ce12b640ed4017dd423b13c2307ea7e645adee7c2ae3afe8051b9db16a6f6d3da3f90b1 languageName: node linkType: hard -"rxjs@npm:^7.5.1": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" +"safe-array-concat@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-array-concat@npm:1.0.0" dependencies: - tslib: ^2.1.0 - checksum: c48833638ae5d339332f8b792e716c3c662950ba95ba04e9e97a8cfd4628d8f009129672793c6c067c872a4dab5757231d41d7256a2114a5fabbf30d8a5b9d67 + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: 792d41fde9834583980912cb16bee511ce25e1759d3c467fdbbb3fc3245346a2289a6476d821713aa1ae23cc1d613d17e79c80e55adb29577f6a29e6f45e7f46 languageName: node linkType: hard -"safe-buffer@npm:5.1.2": +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" checksum: 780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -13405,14 +14599,14 @@ __metadata: linkType: hard "schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" dependencies: "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 + ajv: ^8.9.0 ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 + ajv-keywords: ^5.1.0 + checksum: 8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 languageName: node linkType: hard @@ -13423,6 +14617,18 @@ __metadata: languageName: node linkType: hard +"seek-bzip@npm:^1.0.5": + version: 1.0.6 + resolution: "seek-bzip@npm:1.0.6" + dependencies: + commander: ^2.8.1 + bin: + seek-bunzip: bin/seek-bunzip + seek-table: bin/seek-bzip-table + checksum: e4019e4498bb725ff855603595c4116ca003674b13d29cb9ed9891b2ceec884ccf7c1cb5dba0d6b50fe6ce760a011078f5744efb79823f4ddb9decb1571e9912 + languageName: node + linkType: hard + "semver-compare@npm:^1.0.0": version: 1.0.0 resolution: "semver-compare@npm:1.0.0" @@ -13437,12 +14643,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 + semver: bin/semver + checksum: e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 languageName: node linkType: hard @@ -13457,23 +14663,23 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.3.8, semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.3.8 - resolution: "semver@npm:7.3.8" +"semver@npm:7.5.4, semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 7e581d679530db31757301c2117721577a2bb36a301a443aac833b8efad372cda58e7f2a464fe4412ae1041cc1f63a6c1fe0ced8c57ce5aca1e0b57bb0d627b9 + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: - semver: ./bin/semver.js - checksum: 1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 + semver: bin/semver.js + checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -13556,19 +14762,6 @@ __metadata: languageName: node linkType: hard -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -13588,9 +14781,20 @@ __metadata: linkType: hard "signal-exit@npm:^4.0.1": - version: 4.0.1 - resolution: "signal-exit@npm:4.0.1" - checksum: 8ff362b7fe81d50cb664c773d2406d68f02aef7ab50b2fdb6a0bb2514730529062be4f981cc5534c05f34a20caa6f91a78a5d1dc90446a968359d80adb63b014 + version: 4.0.2 + resolution: "signal-exit@npm:4.0.2" + checksum: 3c36ae214f4774b4a7cbbd2d090b2864f8da4dc3f9140ba5b76f38bea7605c7aa8042adf86e48ee8a0955108421873f9b0f20281c61b8a65da4d9c1c1de4929f + languageName: node + linkType: hard + +"simple-git@npm:^3.18.0": + version: 3.19.1 + resolution: "simple-git@npm:3.19.1" + dependencies: + "@kwsites/file-exists": ^1.1.1 + "@kwsites/promise-deferred": ^1.1.1 + debug: ^4.3.4 + checksum: 0f6ba68824cb97fcdd3a53dfd6e3920f00e988141f69f24ffd8ebe98c06cf963c1ebe1cf3344975e5778f26e4d093689acf3eb5aad98be05e5d3ae83036b268f languageName: node linkType: hard @@ -13623,9 +14827,9 @@ __metadata: linkType: hard "slash@npm:^5.0.0": - version: 5.0.0 - resolution: "slash@npm:5.0.0" - checksum: 157e61f9c749d107a2069a8d6169f40451bf8853e4e104938afd6c02ad224059033bc0420aeb85ad5ff71d36ca483a90bd1ea831a2ffa427317ce4844bcd966a + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 languageName: node linkType: hard @@ -13665,17 +14869,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: d75c1cf1fdd7f8309a43a77f84409b793fc0f540742ef915154e70ac09a08b0490576fe85d4f8d68bbf80e604a62957a17ab5ef50d312fe1442b0ab6f8f6e6f6 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -13697,12 +14890,12 @@ __metadata: languageName: node linkType: hard -"sonic-boom@npm:3.2.1": - version: 3.2.1 - resolution: "sonic-boom@npm:3.2.1" +"sonic-boom@npm:3.3.0": + version: 3.3.0 + resolution: "sonic-boom@npm:3.3.0" dependencies: atomic-sleep: ^1.0.0 - checksum: e922aaefc76ad54606369440467b72df4621cbbbff9739f348bdbb2bed36d4794feb9fd10a46c844992b29ed5fd43ea23c44f8ca4c8539e87ae565787f25ce2b + checksum: c5d387d9e35726a60afe5b5c54317db2428158ecaf3769fb16418e50d2a47176cbd800bf664a410dc0aab0792b421d394ce6edaf63b796ac3c7986f01933cddd languageName: node linkType: hard @@ -13722,7 +14915,7 @@ __metadata: languageName: node linkType: hard -"sort-package-json@npm:^1.22.1, sort-package-json@npm:^1.48.1": +"sort-package-json@npm:^1.22.1": version: 1.57.0 resolution: "sort-package-json@npm:1.57.0" dependencies: @@ -13738,6 +14931,23 @@ __metadata: languageName: node linkType: hard +"sort-package-json@npm:^2.0.0": + version: 2.5.1 + resolution: "sort-package-json@npm:2.5.1" + dependencies: + detect-indent: ^7.0.1 + detect-newline: ^4.0.0 + get-stdin: ^9.0.0 + git-hooks-list: ^3.0.0 + globby: ^13.1.2 + is-plain-obj: ^4.1.0 + sort-object-keys: ^1.1.3 + bin: + sort-package-json: cli.js + checksum: 923d272e419110dd7d0261b54471a65db3e0b9b0097b1f762d3f65fd3f37f8468018e29bbcd64be34d446cbad268c6f2dc570adc79b356005760795935e4b32b + languageName: node + linkType: hard + "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -13821,15 +15031,6 @@ __metadata: languageName: node linkType: hard -"split@npm:0.3": - version: 0.3.3 - resolution: "split@npm:0.3.3" - dependencies: - through: 2 - checksum: 88c09b1b4de84953bf5d6c153123a1fbb20addfea9381f70d27b4eb6b2bfbadf25d313f8f5d3fd727d5679b97bfe54da04766b91010f131635bf49e51d5db3fc - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -13865,21 +15066,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: 5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" +"ssri@npm:^10.0.0": + version: 10.0.4 + resolution: "ssri@npm:10.0.4" dependencies: - minipass: ^3.1.1 - checksum: c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 + minipass: ^5.0.0 + checksum: d085474ea6b439623a9a6a2c67570cb9e68e1bb6060e46e4d387f113304d75a51946d57c524be3a90ebfa3c73026edf76eb1a2d79a7f6cff0b04f21d99f127ab languageName: node linkType: hard @@ -13899,13 +15091,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.5.0 < 2": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - "steno@npm:^0.4.1": version: 0.4.4 resolution: "steno@npm:0.4.4" @@ -13924,15 +15109,6 @@ __metadata: languageName: node linkType: hard -"stream-combiner@npm:~0.0.4": - version: 0.0.4 - resolution: "stream-combiner@npm:0.0.4" - dependencies: - duplexer: ~0.1.1 - checksum: 8075a94c0eb0f20450a8236cb99d4ce3ea6e6a4b36d8baa7440b1a08cde6ffd227debadffaecd80993bd334282875d0e927ab5b88484625e01970dd251004ff5 - languageName: node - linkType: hard - "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -13983,7 +15159,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -13994,6 +15170,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -14043,7 +15230,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -14052,6 +15239,15 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + "stringify-object@npm:^3.3.0": version: 3.3.0 resolution: "stringify-object@npm:3.3.0" @@ -14063,7 +15259,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: @@ -14073,11 +15269,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" dependencies: ansi-regex: ^6.0.1 - checksum: a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 + checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 languageName: node linkType: hard @@ -14095,6 +15291,15 @@ __metadata: languageName: node linkType: hard +"strip-dirs@npm:^2.0.0": + version: 2.1.0 + resolution: "strip-dirs@npm:2.1.0" + dependencies: + is-natural-number: ^4.0.1 + checksum: 073d6d08331ec2e87afc2c2535d7336fee1d63797384045e4ecb9908a5ac6615022ee000cc278d6bbc94147bed7350f7cf4657b6d18c377813f37e7ae329fb52 + languageName: node + linkType: hard + "strip-eof@npm:^1.0.0": version: 1.0.0 resolution: "strip-eof@npm:1.0.0" @@ -14125,7 +15330,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -14152,17 +15357,18 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: 3e4670f26f79bcfba628dcc2756d9d415edfcbf4ec51e40f3b628fd15286222257317cad57390752964eba85cca6163a7621ce90038d68dd630a674479e52334 +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 languageName: node linkType: hard "sucrase@npm:^3.20.3": - version: 3.31.0 - resolution: "sucrase@npm:3.31.0" + version: 3.33.0 + resolution: "sucrase@npm:3.33.0" dependencies: + "@jridgewell/gen-mapping": ^0.3.2 commander: ^4.0.0 glob: 7.1.6 lines-and-columns: ^1.1.6 @@ -14172,7 +15378,7 @@ __metadata: bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: cfd3444f802e2e3c024d7cf45b30913905a8f944feba693a3d974fd1a43fe3c1e010d7c796bbb5c134dc9c4f5efbff19ca6dc7635ae0ab2a85f4e4fadc5cd1bf + checksum: 559aac6198403d4a8cd59d07165c18920e31de8f686d59e0bb86c887146c4bf867c9c60bad8e48afadff3df4fd4b4f9c1ec634ffcf0991f29f97b9c57b78314f languageName: node linkType: hard @@ -14212,6 +15418,13 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^9.0.0": + version: 9.4.0 + resolution: "supports-color@npm:9.4.0" + checksum: 6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 + languageName: node + linkType: hard + "supports-hyperlinks@npm:^1.0.1": version: 1.0.1 resolution: "supports-hyperlinks@npm:1.0.1" @@ -14236,13 +15449,6 @@ __metadata: languageName: node linkType: hard -"synchronous-promise@npm:^2.0.15": - version: 2.0.17 - resolution: "synchronous-promise@npm:2.0.17" - checksum: 1babe643d8417789ef6e5a2f3d4b8abcda2de236acd09bbe2c98f6be82c0a2c92ed21a6e4f934845fa8de18b1435a9cba1e8c3d945032e8a532f076224c024b1 - languageName: node - linkType: hard - "syntax-error@npm:^1.1.6": version: 1.4.0 resolution: "syntax-error@npm:1.4.0" @@ -14259,6 +15465,21 @@ __metadata: languageName: node linkType: hard +"tar-stream@npm:^1.5.2": + version: 1.6.2 + resolution: "tar-stream@npm:1.6.2" + dependencies: + bl: ^1.0.0 + buffer-alloc: ^1.2.0 + end-of-stream: ^1.0.0 + fs-constants: ^1.0.0 + readable-stream: ^2.3.0 + to-buffer: ^1.1.1 + xtend: ^4.0.0 + checksum: ab8528d2cc9ccd0906d1ce6d8089030b2c92a578c57645ff4971452c8c5388b34c7152c04ed64b8510d22a66ffaf0fee58bada7d6ab41ad1e816e31993d59cf3 + languageName: node + linkType: hard + "tar-stream@npm:~2.2.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" @@ -14286,17 +15507,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.13 - resolution: "tar@npm:6.1.13" +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.15 + resolution: "tar@npm:6.1.15" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 - minipass: ^4.0.0 + minipass: ^5.0.0 minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: eee5f264f3f3c27cd8d4934f80c568470f92811c416144ab671bb36b45a8ed55fbfbbd31f0146f3eddaca91fd564c9a7ec4d2086940968b836f4a2c54146c060 + checksum: bb2babe7b14442f690d83c2b2c571c9dd0bf802314773e05f4a3e4a241fdecd7fb560b8e4e7d6ea34533c8cd692e1b8418a3b8ba3b9687fe78a683dfbad7f82d languageName: node linkType: hard @@ -14313,12 +15534,16 @@ __metadata: languageName: node linkType: hard -"telejson@npm:^7.0.3": - version: 7.1.0 - resolution: "telejson@npm:7.1.0" +"teeny-request@npm:^8.0.0": + version: 8.0.3 + resolution: "teeny-request@npm:8.0.3" dependencies: - memoizerific: ^1.11.3 - checksum: dc9a185d0e00d947c0eaa229bfb993aab61a3ba79282ae409768fc8ae66d236e89a64ebe291f9ea6ed5e05396e0be52a7542ea32b6c1321b20440f28c7828edc + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + node-fetch: ^2.6.1 + stream-events: ^1.0.5 + uuid: ^9.0.0 + checksum: d3f60db26aa314ed64776c89255abc2d2cfb264656921c952781b27c314e2d157134ad0c514ce170eb9c0c5443e7e2dbfe221310ade6c5b1badbc980184e6b57 languageName: node linkType: hard @@ -14387,13 +15612,20 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": +"through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc languageName: node linkType: hard +"tiny-invariant@npm:^1.3.1": + version: 1.3.1 + resolution: "tiny-invariant@npm:1.3.1" + checksum: 5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db + languageName: node + linkType: hard + "tmp@npm:~0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" @@ -14410,6 +15642,13 @@ __metadata: languageName: node linkType: hard +"to-buffer@npm:^1.1.1": + version: 1.1.1 + resolution: "to-buffer@npm:1.1.1" + checksum: fb9fc6a0103f2b06e2e01c3d291586d0148759d5584f35d0973376434d1b58bd6ee5df9273f0bb1190eb2a5747c894bf49fed571325a7ac10208a48f31736439 + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -14436,6 +15675,16 @@ __metadata: languageName: node linkType: hard +"to-vfile@npm:^7.0.0": + version: 7.2.4 + resolution: "to-vfile@npm:7.2.4" + dependencies: + is-buffer: ^2.0.0 + vfile: ^5.1.0 + checksum: f1399e6df3d6e523bac11258258faa582ba4d2a059921c7a41997bde54bf197918c5bf2370e8d39db50b98927978d5c647a9ce4e18358afa88c10ac47fa091e0 + languageName: node + linkType: hard + "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -14451,14 +15700,14 @@ __metadata: linkType: hard "tough-cookie@npm:^4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: psl: ^1.1.33 punycode: ^2.1.1 universalify: ^0.2.0 url-parse: ^1.5.3 - checksum: 1f9d97bc9ff22b41e107eca4a146064f916e567b5557795dbfe742f098557ba1101b8f7c4e02ac785236663f7f086c37dc595a5b9813ef8fb27f8d800dc9eb9b + checksum: 4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 languageName: node linkType: hard @@ -14529,6 +15778,13 @@ __metadata: languageName: node linkType: hard +"trough@npm:^2.0.0": + version: 2.1.0 + resolution: "trough@npm:2.1.0" + checksum: 9a973f0745fa69b9d34f29fe8123599abb6915350a5f4e9e9c9026156219f8774af062d916f4ec327b796149188719170ad87f0d120f1e94271a1843366efcc3 + languageName: node + linkType: hard + "try-catch@npm:^3.0.0": version: 3.0.1 resolution: "try-catch@npm:3.0.1" @@ -14543,6 +15799,15 @@ __metadata: languageName: node linkType: hard +"ts-essentials@npm:^7.0.3": + version: 7.0.3 + resolution: "ts-essentials@npm:7.0.3" + peerDependencies: + typescript: ">=3.7.0" + checksum: ea1919534ec6ce4ca4d9cb0ff1ab8e053509237da8d4298762ab3bfba4e78ca5649a599ce78a5c7c2624f3a7a971f62b265b7b0c3c881336e4fa6acaf6f37544 + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -14551,8 +15816,8 @@ __metadata: linkType: hard "ts-loader@npm:^9.4.2": - version: 9.4.2 - resolution: "ts-loader@npm:9.4.2" + version: 9.4.4 + resolution: "ts-loader@npm:9.4.4" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 @@ -14561,7 +15826,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: d5a9ecf5440c82724d78b20e08965eebf4b23fcdf644d215e089144794faaaf955564c83b13954728a6f10c7bef292d3990905870152275191779c8661385c77 + checksum: 11dba0651d7177eba9af38c43c79a28898ffcdfe7e73079fe48716dd93ca6634d3140dbbbc3ac34907be564be2429f0299ebdc7b58ce09482fad54333ccf611c languageName: node linkType: hard @@ -14626,7 +15891,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0": +"tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 @@ -14634,9 +15899,9 @@ __metadata: linkType: hard "tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e + version: 2.6.0 + resolution: "tslib@npm:2.6.0" + checksum: 8d18020a8b9e70ecc529a744c883c095f177805efdbc9786bd50bd82a46c17547923133c5444fbcaf1f7f1c44e0e29c89f73ecf6d8fd1039668024a073a81dc6 languageName: node linkType: hard @@ -14703,6 +15968,13 @@ __metadata: languageName: node linkType: hard +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -14711,9 +15983,9 @@ __metadata: linkType: hard "typanion@npm:^3.8.0": - version: 3.12.1 - resolution: "typanion@npm:3.12.1" - checksum: 90cf558a34011144d4b741d85615423f594ac769c9850677989e9c42ef6f5e1ea9be5d55c6ff00291038058273a9bc25d7271bec5db0bd05e26af9a0872fb8e6 + version: 3.13.0 + resolution: "typanion@npm:3.13.0" + checksum: eeeb03e419cd466dae97ed58c78c2752aee38db9778975773a6e9cabc7aee18f6a11e3cb0dd3c5baf76840b64de4efafffe89645e3e89832286b47580c6bfe0b languageName: node linkType: hard @@ -14726,15 +15998,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -14742,62 +16005,56 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.16.0": - version: 0.16.0 - resolution: "type-fest@npm:0.16.0" - checksum: 6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: 0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 +"type-fest@npm:~2.19": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb languageName: node linkType: hard -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d languageName: node linkType: hard -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + is-typed-array: ^1.1.10 + checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c languageName: node linkType: hard -"type-fest@npm:^3.0.0, type-fest@npm:^3.4.0": - version: 3.7.2 - resolution: "type-fest@npm:3.7.2" - checksum: 4ba9da0b4122c6ee455246670ae7ea9c736b00714fa2e0f916ce1d352a3421aa182883b24f43ce2a8c60303b0eaa9469296e58d1ab3e0075383e8d05a883eee8 +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 languageName: node linkType: hard @@ -14819,23 +16076,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~4.9.3": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" +"typescript@npm:5.0.4": + version: 5.0.4 + resolution: "typescript@npm:5.0.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 5f6cad2e728a8a063521328e612d7876e12f0d8a8390d3b3aaa452a6a65e24e9ac8ea22beb72a924fd96ea0a49ea63bb4e251fb922b12eedfb7f7a26475e5c56 + checksum: 2f5bd1cead194905957cb34e220b1d6ff1662399adef8ec1864f74620922d860ee35b6e50eafb3b636ea6fd437195e454e1146cb630a4236b5095ed7617395c2 languageName: node linkType: hard -"typescript@patch:typescript@~4.9.3#~builtin<compat/typescript>": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76" +"typescript@patch:typescript@5.0.4#~builtin<compat/typescript>": + version: 5.0.4 + resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin<compat/typescript>::version=5.0.4&hash=b5f058" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10d31da0caa997927eab0167b7ddacb9ac8d3fd87e6584185b14da32b7f033e727309682fc0395021f4ac110860a3be6054e9b039a996a24d282a20bafc599f4 + checksum: c3f7b80577bddf6fab202a7925131ac733bfc414aec298c2404afcddc7a6f242cfa8395cf2d48192265052e11a7577c27f6e5fac8d8fe6a6602023c83d6b3292 languageName: node linkType: hard @@ -14860,10 +16117,13 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b +"unbzip2-stream@npm:^1.0.9": + version: 1.4.3 + resolution: "unbzip2-stream@npm:1.4.3" + dependencies: + buffer: ^5.2.1 + through: ^2.3.8 + checksum: 2ea2048f3c9db3499316ccc1d95ff757017ccb6f46c812d7c42466247e3b863fb178864267482f7f178254214247779daf68e85f50bd7736c3c97ba2d58b910a languageName: node linkType: hard @@ -14898,6 +16158,23 @@ __metadata: languageName: node linkType: hard +"unified-args@npm:^10.0.0": + version: 10.0.0 + resolution: "unified-args@npm:10.0.0" + dependencies: + "@types/text-table": ^0.2.0 + camelcase: ^7.0.0 + chalk: ^5.0.0 + chokidar: ^3.0.0 + fault: ^2.0.0 + json5: ^2.0.0 + minimist: ^1.0.0 + text-table: ^0.2.0 + unified-engine: ^10.0.0 + checksum: 1fb45d99b8b67b5bb5af51f5094e4dc0d23986bb6fb39f3c418400e3dfbacafe315579d206188c33d676bdcbc6ac8022fd0550c2a90e7c5edd05aa0213a86038 + languageName: node + linkType: hard + "unified-args@npm:^8.0.0": version: 8.1.0 resolution: "unified-args@npm:8.1.0" @@ -14914,6 +16191,36 @@ __metadata: languageName: node linkType: hard +"unified-engine@npm:^10.0.0": + version: 10.1.0 + resolution: "unified-engine@npm:10.1.0" + dependencies: + "@types/concat-stream": ^2.0.0 + "@types/debug": ^4.0.0 + "@types/is-empty": ^1.0.0 + "@types/node": ^18.0.0 + "@types/unist": ^2.0.0 + concat-stream: ^2.0.0 + debug: ^4.0.0 + fault: ^2.0.0 + glob: ^8.0.0 + ignore: ^5.0.0 + is-buffer: ^2.0.0 + is-empty: ^1.0.0 + is-plain-obj: ^4.0.0 + load-plugin: ^5.0.0 + parse-json: ^6.0.0 + to-vfile: ^7.0.0 + trough: ^2.0.0 + unist-util-inspect: ^7.0.0 + vfile-message: ^3.0.0 + vfile-reporter: ^7.0.0 + vfile-statistics: ^2.0.0 + yaml: ^2.0.0 + checksum: 39590f11bf07cf03b7dc71f3ee64b97d04b070eb75bcc0cd7fab2e300c4497b72727c43cce4deaee499dd937b246b0d339fcc6b06a36765e088e3843e8e960fd + languageName: node + linkType: hard + "unified-engine@npm:^8.0.0": version: 8.2.0 resolution: "unified-engine@npm:8.2.0" @@ -14948,6 +16255,18 @@ __metadata: languageName: node linkType: hard +"unified-lint-rule@npm:^2.0.0": + version: 2.1.2 + resolution: "unified-lint-rule@npm:2.1.2" + dependencies: + "@types/unist": ^2.0.0 + trough: ^2.0.0 + unified: ^10.0.0 + vfile: ^5.0.0 + checksum: a37e4b90f021077b89bb4661f33bb0705bf04f7593973ce36972e7d91fbc385a4d946cf12dad4950198d01072d566c2e21ddf449588bbddec4f02b111990630d + languageName: node + linkType: hard + "unified-message-control@npm:^3.0.0": version: 3.0.3 resolution: "unified-message-control@npm:3.0.3" @@ -14958,6 +16277,35 @@ __metadata: languageName: node linkType: hard +"unified-message-control@npm:^4.0.0": + version: 4.0.0 + resolution: "unified-message-control@npm:4.0.0" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + unist-util-visit: ^3.0.0 + vfile: ^5.0.0 + vfile-location: ^4.0.0 + vfile-message: ^3.0.0 + checksum: bcf0a2b36e71fb27fdb8ae8209fdfb51a1121a21973586e548b2582be506d81810361e31970396e543a60d0781739fa5084bc29d7a06b4be95c8cac35d385956 + languageName: node + linkType: hard + +"unified@npm:^10.0.0, unified@npm:^10.1.0": + version: 10.1.2 + resolution: "unified@npm:10.1.2" + dependencies: + "@types/unist": ^2.0.0 + bail: ^2.0.0 + extend: ^3.0.0 + is-buffer: ^2.0.0 + is-plain-obj: ^4.0.0 + trough: ^2.0.0 + vfile: ^5.0.0 + checksum: da9195e3375a74ab861a65e1d7b0454225d17a61646697911eb6b3e97de41091930ed3d167eb11881d4097c51deac407091d39ddd1ee8bf1fde3f946844a17a7 + languageName: node + linkType: hard + "unified@npm:^9.1.0": version: 9.2.2 resolution: "unified@npm:9.2.2" @@ -14981,39 +16329,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" dependencies: - imurmurhash: ^0.1.4 - checksum: 9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + unique-slug: ^4.0.0 + checksum: 6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f languageName: node linkType: hard -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 + checksum: cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 languageName: node linkType: hard @@ -15033,6 +16363,13 @@ __metadata: languageName: node linkType: hard +"unist-util-generated@npm:^2.0.0": + version: 2.0.1 + resolution: "unist-util-generated@npm:2.0.1" + checksum: 6f052dd47a7280785f3787f52cdfe8819e1de50317a1bcf7c9346c63268cf2cebc61a5980e7ca734a54735e27dbb73091aa0361a98504ab7f9409fb75f1b16bb + languageName: node + linkType: hard + "unist-util-inspect@npm:^5.0.0": version: 5.0.1 resolution: "unist-util-inspect@npm:5.0.1" @@ -15042,6 +16379,15 @@ __metadata: languageName: node linkType: hard +"unist-util-inspect@npm:^7.0.0": + version: 7.0.2 + resolution: "unist-util-inspect@npm:7.0.2" + dependencies: + "@types/unist": ^2.0.0 + checksum: 154bb1984fa5eaaa5134d0efff50364db6c7b70bf7860794ea89b5e9174f3ee78fa9e98b0ad5821b144b4b117ed4244fa234ab6d2ca0829616cc6b608280df5c + languageName: node + linkType: hard + "unist-util-is@npm:^4.0.0": version: 4.1.0 resolution: "unist-util-is@npm:4.1.0" @@ -15049,6 +16395,15 @@ __metadata: languageName: node linkType: hard +"unist-util-is@npm:^5.0.0": + version: 5.2.1 + resolution: "unist-util-is@npm:5.2.1" + dependencies: + "@types/unist": ^2.0.0 + checksum: a2376910b832bb10653d2167c3cd85b3610a5fd53f5169834c08b3c3a720fae9043d75ad32d727eedfc611491966c26a9501d428ec62467edc17f270feb5410b + languageName: node + linkType: hard + "unist-util-position@npm:^3.0.0, unist-util-position@npm:^3.1.0": version: 3.1.0 resolution: "unist-util-position@npm:3.1.0" @@ -15056,6 +16411,15 @@ __metadata: languageName: node linkType: hard +"unist-util-position@npm:^4.0.0": + version: 4.0.4 + resolution: "unist-util-position@npm:4.0.4" + dependencies: + "@types/unist": ^2.0.0 + checksum: e506d702e25a0fb47a64502054f709a6ff5db98993bf139eec868cd11eb7de34392b781c6c2002e2c24d97aa398c14b32a47076129f36e4b894a2c1351200888 + languageName: node + linkType: hard + "unist-util-stringify-position@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-stringify-position@npm:2.0.3" @@ -15065,6 +16429,15 @@ __metadata: languageName: node linkType: hard +"unist-util-stringify-position@npm:^3.0.0": + version: 3.0.3 + resolution: "unist-util-stringify-position@npm:3.0.3" + dependencies: + "@types/unist": ^2.0.0 + checksum: 14550027825230528f6437dad7f2579a841780318569851291be6c8a970bae6f65a7feb24dabbcfce0e5e68cacae85bf12cbda3f360f7c873b4db602bdf7bb21 + languageName: node + linkType: hard + "unist-util-visit-parents@npm:^3.0.0": version: 3.1.1 resolution: "unist-util-visit-parents@npm:3.1.1" @@ -15075,6 +16448,26 @@ __metadata: languageName: node linkType: hard +"unist-util-visit-parents@npm:^4.0.0": + version: 4.1.1 + resolution: "unist-util-visit-parents@npm:4.1.1" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + checksum: f84b544a111af5a17f2b80c462da9f7fdcb46a69f85ab317d2d9ddca766c00e2ceea6c76c0960e58ef4607aad89661c99eccf290973b453e15dd1621c57079d4 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^5.1.1": + version: 5.1.3 + resolution: "unist-util-visit-parents@npm:5.1.3" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + checksum: f6829bfd8f2eddf63a32e2c302cd50978ef0c194b792c6fe60c2b71dfd7232415a3c5941903972543e9d34e6a8ea69dee9ccd95811f4a795495ed2ae855d28d0 + languageName: node + linkType: hard + "unist-util-visit@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-visit@npm:2.0.3" @@ -15086,22 +16479,25 @@ __metadata: languageName: node linkType: hard -"universal-url@npm:^2.0.0": - version: 2.0.0 - resolution: "universal-url@npm:2.0.0" +"unist-util-visit@npm:^3.0.0": + version: 3.1.0 + resolution: "unist-util-visit@npm:3.1.0" dependencies: - hasurl: ^1.0.0 - whatwg-url: ^7.0.0 - checksum: 57a5f887676987650f9f2b62811159e2706645e6fbb2b5ed83d802d996310de1e39066478e6f4f11cc9ec4e92624dd0f943f950d9ecaac2763b2b22d2aac8ae0 + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + unist-util-visit-parents: ^4.0.0 + checksum: 9b92ea4e6debadbb77f2c7a0ab8c8b7c63781b2f2050563c971687df368f6f6fe932d864442347a685f0dc56b570a55e5d7ffeb87a452489100640cf280dc8da languageName: node linkType: hard -"universal-user-agent@npm:^4.0.0": - version: 4.0.1 - resolution: "universal-user-agent@npm:4.0.1" +"unist-util-visit@npm:^4.0.0": + version: 4.1.2 + resolution: "unist-util-visit@npm:4.1.2" dependencies: - os-name: ^3.1.0 - checksum: e590abd8decb36400d1a630da5957e61f0356492bf413e12f78c169cade915080b03dbfbe8fa62c557bd73413edc681de580ad84488565bf30a9d509fd1b311f + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + unist-util-visit-parents: ^5.1.1 + checksum: 56a1f49a4d8e321e75b3c7821d540a45165a031dd06324bb0e8c75e7737bc8d73bdddbf0b0ca82000f9708a4c36861c6ebe88d01f7cf00e925f5d75f13a3a017 languageName: node linkType: hard @@ -15149,17 +16545,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" +"update-browserslist-db@npm:^1.0.11": + version: 1.0.11 + resolution: "update-browserslist-db@npm:1.0.11" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: e6fa55b515a674cc3b6c045d1f37f72780ddbbbb48b3094391fb2e43357b859ca5cee4c7d3055fd654d442ef032777d0972494a9a2e6c30d3660ee57b7138ae9 + update-browserslist-db: cli.js + checksum: 280d5cf92e302d8de0c12ef840a6af26ec024a5158aa2020975cd01bf0ded09c709793a6f421e6d0f1a47557d6a1a10dc43af80f9c30b8fd0df9691eb98c1c69 languageName: node linkType: hard @@ -15172,10 +16568,10 @@ __metadata: languageName: node linkType: hard -"url-join@npm:^2.0.5": - version: 2.0.5 - resolution: "url-join@npm:2.0.5" - checksum: 4551af5942417c98db5eb43d1eaae65686ddcb7b9374241e93eea2b74e9b7f069c8eb0eac405eea9db496e2a79d73a805e0b85d7ab0b6238d6d771cd926c0dde +"url-join@npm:^4.0.1": + version: 4.0.1 + resolution: "url-join@npm:4.0.1" + checksum: ac65e2c7c562d7b49b68edddcf55385d3e922bc1dd5d90419ea40b53b6de1607d1e45ceb71efb9d60da02c681d13c6cb3a1aa8b13fc0c989dfc219df97ee992d languageName: node linkType: hard @@ -15205,7 +16601,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 @@ -15250,6 +16646,29 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.0": + version: 9.0.0 + resolution: "uuid@npm:9.0.0" + bin: + uuid: dist/bin/uuid + checksum: 8867e438990d1d33ac61093e2e4e3477a2148b844e4fa9e3c2360fa4399292429c4b6ec64537eb1659c97b2d10db349c673ad58b50e2824a11e0d3630de3c056 + languageName: node + linkType: hard + +"uvu@npm:^0.5.0": + version: 0.5.6 + resolution: "uvu@npm:0.5.6" + dependencies: + dequal: ^2.0.0 + diff: ^5.0.0 + kleur: ^4.0.3 + sade: ^1.7.3 + bin: + uvu: bin.js + checksum: ad32eb5f7d94bdeb71f80d073003f0138e24f61ed68cecc8e15d2f30838f44c9670577bb1775c8fac894bf93d1bc1583d470a9195e49bfa6efa14cc6f4942bff + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -15299,16 +16718,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:11.0.0-6-next.30": - version: 11.0.0-6-next.30 - resolution: "verdaccio-audit@npm:11.0.0-6-next.30" +"verdaccio-audit@npm:11.0.0-6-next.37": + version: 11.0.0-6-next.37 + resolution: "verdaccio-audit@npm:11.0.0-6-next.37" dependencies: - "@verdaccio/config": 6.0.0-6-next.67 - "@verdaccio/core": 6.0.0-6-next.67 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 express: 4.18.2 https-proxy-agent: 5.0.1 node-fetch: cjs - checksum: ef6d4bca3cb6ccf919dc3952ab8013bfaf9214c3cf5d19b2acb59eef58c83181d7b4bc409c5e75ca0349f56dc6c4a7acaf9dd4728eb3d104e3543e016ed9753e + checksum: b146b062ad4a55f295443ffb301d287832531173c59ffa294d016c9ba29d3cd256e04feb67c40c6fbdf8a2515d4d56e82d03f30746c3b686ff54c4ba22743393 languageName: node linkType: hard @@ -15321,68 +16740,67 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:10.5.4": - version: 10.5.4 - resolution: "verdaccio-htpasswd@npm:10.5.4" +"verdaccio-htpasswd@npm:11.0.0-6-next.44": + version: 11.0.0-6-next.44 + resolution: "verdaccio-htpasswd@npm:11.0.0-6-next.44" dependencies: - "@verdaccio/file-locking": 10.3.1 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/file-locking": 11.0.0-6-next.7 apache-md5: 1.1.8 bcryptjs: 2.4.3 + core-js: 3.30.2 + debug: 4.3.4 http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 - checksum: 4f2e515ce1b41ac57e23bfa9966f9ff69d21c15bf13a41a5d35486b7f46df06f7b78f3690ef47ef03270cb7fe7c7b5e44ef3067d8208cb1fe6d7d7ef26fb2690 + checksum: 60bfcef8ec382898850745b179e243c1d8f2ee0c22f16c81d517c21459b09731de6901effdc42cbc1cb7276e9006f5ea0aa167a6623517bde36ea0555f34fdf4 languageName: node linkType: hard "verdaccio@npm:^5.19.1": - version: 5.23.2 - resolution: "verdaccio@npm:5.23.2" + version: 5.26.0 + resolution: "verdaccio@npm:5.26.0" dependencies: - "@verdaccio/config": 6.0.0-6-next.67 - "@verdaccio/core": 6.0.0-6-next.67 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 "@verdaccio/local-storage": 10.3.3 - "@verdaccio/logger-7": 6.0.0-6-next.12 - "@verdaccio/middleware": 6.0.0-6-next.46 + "@verdaccio/logger-7": 6.0.0-6-next.19 + "@verdaccio/middleware": 6.0.0-6-next.53 + "@verdaccio/search": 6.0.0-6-next.2 "@verdaccio/signature": 6.0.0-6-next.2 "@verdaccio/streams": 10.2.1 - "@verdaccio/tarball": 11.0.0-6-next.36 - "@verdaccio/ui-theme": 6.0.0-6-next.67 - "@verdaccio/url": 11.0.0-6-next.33 - "@verdaccio/utils": 6.0.0-6-next.35 + "@verdaccio/tarball": 11.0.0-6-next.43 + "@verdaccio/ui-theme": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 JSONStream: 1.3.5 async: 3.2.4 - body-parser: 1.20.2 - clipanion: 3.2.0 + clipanion: 3.2.1 compression: 1.7.4 cookies: 0.8.0 cors: 2.8.5 debug: ^4.3.4 - envinfo: 7.8.1 + envinfo: 7.10.0 express: 4.18.2 express-rate-limit: 5.5.1 fast-safe-stringify: 2.1.1 handlebars: 4.7.7 js-yaml: 4.1.0 - jsonwebtoken: 9.0.0 + jsonwebtoken: 9.0.1 kleur: 4.1.5 lodash: 4.17.21 lru-cache: 7.18.3 - lunr-mutable-indexes: 2.3.2 mime: 3.0.0 mkdirp: 1.0.4 mv: 2.1.1 pkginfo: 0.4.1 request: 2.88.2 - semver: 7.3.8 + semver: 7.5.4 validator: 13.9.0 - verdaccio-audit: 11.0.0-6-next.30 - verdaccio-htpasswd: 10.5.4 - dependenciesMeta: - "@verdaccio/types@11.0.0-6-next.24": - unplugged: true + verdaccio-audit: 11.0.0-6-next.37 + verdaccio-htpasswd: 11.0.0-6-next.44 bin: verdaccio: bin/verdaccio - checksum: b4ed1e987546e141e2f84c26a9c369eeeda5cc89f05d0b676f6fa0856619662c22bf49dabfd78145f058f402bf5bd8bf1c4e0680018fb33a659b6db5a2fc564b + checksum: 8b31d908a05c50b8bda55f72e367ae4202892744fdb49b858bf0c62383b4462200f4fc1dc5d73247ae6aa71d88ddcc35bee9ab3abc13b33459864983b28ab438 languageName: node linkType: hard @@ -15404,6 +16822,16 @@ __metadata: languageName: node linkType: hard +"vfile-location@npm:^4.0.0": + version: 4.1.0 + resolution: "vfile-location@npm:4.1.0" + dependencies: + "@types/unist": ^2.0.0 + vfile: ^5.0.0 + checksum: 77097e819579214d3346aaa2b06e4d23e2413221ac4914679d312cf64973011b76f0e2424fa8f18987befcd6ed60f4f6c4c6ebd5d5326062173a95f6b4445a96 + languageName: node + linkType: hard + "vfile-message@npm:^2.0.0": version: 2.0.4 resolution: "vfile-message@npm:2.0.4" @@ -15414,6 +16842,16 @@ __metadata: languageName: node linkType: hard +"vfile-message@npm:^3.0.0": + version: 3.1.4 + resolution: "vfile-message@npm:3.1.4" + dependencies: + "@types/unist": ^2.0.0 + unist-util-stringify-position: ^3.0.0 + checksum: c4ccf9c0ced92d657846fd067fefcf91c5832cdbe2ecc431bb67886e8c959bf7fc05a9dbbca5551bc34c9c87a0a73854b4249f65c64ddfebc4d59ea24a18b996 + languageName: node + linkType: hard + "vfile-reporter@npm:^6.0.0": version: 6.0.2 resolution: "vfile-reporter@npm:6.0.2" @@ -15428,6 +16866,22 @@ __metadata: languageName: node linkType: hard +"vfile-reporter@npm:^7.0.0": + version: 7.0.5 + resolution: "vfile-reporter@npm:7.0.5" + dependencies: + "@types/supports-color": ^8.0.0 + string-width: ^5.0.0 + supports-color: ^9.0.0 + unist-util-stringify-position: ^3.0.0 + vfile: ^5.0.0 + vfile-message: ^3.0.0 + vfile-sort: ^3.0.0 + vfile-statistics: ^2.0.0 + checksum: 92da5d7bed8d216a2bb17d60bef79c1c4990e9af409db7dd80a80a405a227d92b6c451693aeb6d099760fdfcc3610b1c5eff5d150f45ceb96fe1d99f7adcff92 + languageName: node + linkType: hard + "vfile-sort@npm:^2.1.2": version: 2.2.2 resolution: "vfile-sort@npm:2.2.2" @@ -15435,6 +16889,16 @@ __metadata: languageName: node linkType: hard +"vfile-sort@npm:^3.0.0": + version: 3.0.1 + resolution: "vfile-sort@npm:3.0.1" + dependencies: + vfile: ^5.0.0 + vfile-message: ^3.0.0 + checksum: c05f932131f7d49cef9444a6e2b497698b62960e4301123bb69d04bc88d2fad751cd0235327fed73294bf3ec645ef14c9b7ee5f3aa9a93ea381bc8f29017f880 + languageName: node + linkType: hard + "vfile-statistics@npm:^1.1.0": version: 1.1.4 resolution: "vfile-statistics@npm:1.1.4" @@ -15442,6 +16906,16 @@ __metadata: languageName: node linkType: hard +"vfile-statistics@npm:^2.0.0": + version: 2.0.1 + resolution: "vfile-statistics@npm:2.0.1" + dependencies: + vfile: ^5.0.0 + vfile-message: ^3.0.0 + checksum: 20e20718b5cb918f3406992e26ad806fef13a77c8e4a100691a38e6d7cc5ae5f77d38f3cc0696741fc3a0269f225e27350fb015d94c7bc849af52280bfaedb61 + languageName: node + linkType: hard + "vfile@npm:^4.0.0": version: 4.2.1 resolution: "vfile@npm:4.2.1" @@ -15454,6 +16928,18 @@ __metadata: languageName: node linkType: hard +"vfile@npm:^5.0.0, vfile@npm:^5.1.0": + version: 5.3.7 + resolution: "vfile@npm:5.3.7" + dependencies: + "@types/unist": ^2.0.0 + is-buffer: ^2.0.0 + unist-util-stringify-position: ^3.0.0 + vfile-message: ^3.0.0 + checksum: c36bd4c3f16ec0c6cbad0711ca99200316bbf849d6b07aa4cb5d9062cc18ae89249fe62af9521926e9659c0e6bc5c2c1da0fe26b41fb71e757438297e1a41da4 + languageName: node + linkType: hard + "vscode-json-languageservice@npm:^4.1.6": version: 4.2.1 resolution: "vscode-json-languageservice@npm:4.2.1" @@ -15468,9 +16954,9 @@ __metadata: linkType: hard "vscode-languageserver-textdocument@npm:^1.0.3": - version: 1.0.9 - resolution: "vscode-languageserver-textdocument@npm:1.0.9" - checksum: b5bf8dabfbbd046ca071a9ac360b147b23bb05ce1811a2add9d2a89aabc8b67caf118af59a6395c299f98d5ccbe711058a1fd4b3cbdc2e912778191251503746 + version: 1.0.10 + resolution: "vscode-languageserver-textdocument@npm:1.0.10" + checksum: 0f4e82c262eaea2ed84e004c751453ac900a669763287dee92f9b631804a6ef1dabd62880185fa4d9a063f27d46e65c5251f7f0c8329aee5e3b3db6b6dfa2109 languageName: node linkType: hard @@ -15504,18 +16990,25 @@ __metadata: languageName: node linkType: hard -"wait-on@npm:^5.2.1": - version: 5.3.0 - resolution: "wait-on@npm:5.3.0" +"wait-on@npm:^7.0.1": + version: 7.0.1 + resolution: "wait-on@npm:7.0.1" dependencies: - axios: ^0.21.1 - joi: ^17.3.0 + axios: ^0.27.2 + joi: ^17.7.0 lodash: ^4.17.21 - minimist: ^1.2.5 - rxjs: ^6.6.3 + minimist: ^1.2.7 + rxjs: ^7.8.0 bin: wait-on: bin/wait-on - checksum: 5ca740e3f2cf4f73ebd2787ff15f7b8d0ee99f188dd37aae0a7d116ae9837f04b8752e4306218aee5165ca4e37cfd3c5b114627748e465e46f8cd51af0da1790 + checksum: 2a9c56d26dac573e6bfd36e85d99f072021c23dc2c0faab900a411460b58e16982b96b018d9168c366040f56196314fa46f3d79ef19e3dc38f55824d5035f2ec + languageName: node + linkType: hard + +"walk-up-path@npm:^3.0.1": + version: 3.0.1 + resolution: "walk-up-path@npm:3.0.1" + checksum: 3184738e0cf33698dd58b0ee4418285b9c811e58698f52c1f025435a85c25cbc5a63fee599f1a79cb29ca7ef09a44ec9417b16bfd906b1a37c305f7aa20ee5bc languageName: node linkType: hard @@ -15528,10 +17021,12 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.0.3": - version: 3.2.1 - resolution: "web-streams-polyfill@npm:3.2.1" - checksum: 70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: ^1.0.3 + checksum: 5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 languageName: node linkType: hard @@ -15556,15 +17051,6 @@ __metadata: languageName: node linkType: hard -"webpod@npm:^0": - version: 0.0.2 - resolution: "webpod@npm:0.0.2" - bin: - webpod: dist/index.js - checksum: 92b5920be7a8a080839221ce70e5d18f5cac86455af9ee20a54e77ee5c577746981c6d70afc2510df15061d3e3ea8c47f9fc36c2be01f47fd7630db1c9e5cba0 - languageName: node - linkType: hard - "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" @@ -15644,17 +17130,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: 7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 + checksum: 2cf4ce417beb50ae0ec3b1b479ea6d72d3e71986462ebd77344ca6398f77c7c59804eebe88f4126ce79f85edbcaa6c7783f54b0a5bf34f785eab7cbb35c30499 languageName: node linkType: hard @@ -15680,17 +17165,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^3.0.0": - version: 3.0.0 - resolution: "which@npm:3.0.0" - dependencies: - isexe: ^2.0.0 - bin: - node-which: bin/which.js - checksum: 10bcacbcf5062b5a15caa047b7d81ac03525969dc4a06d085f0a23a1c5bca9e048b6fb3f6fa50fb96de997ab5898934f7627e658c135fff054f61421833475df - languageName: node - linkType: hard - "wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -15730,13 +17204,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -15744,6 +17211,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + "wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" @@ -15755,14 +17233,14 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard @@ -15808,6 +17286,13 @@ __metadata: languageName: node linkType: hard +"xcase@npm:^2.0.1": + version: 2.0.1 + resolution: "xcase@npm:2.0.1" + checksum: 11b8ae8f6734b29d442a5acf1dff3a896cabbf49e7ffa01472ff6fa687a6e6f6a25889d06c10a41950e7a90fe89239fa78d95eab0c5eb654ca75f0ccd71ba8ed + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -15848,7 +17333,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.2, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: 366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e @@ -15883,14 +17368,14 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.1": - version: 2.2.1 - resolution: "yaml@npm:2.2.1" - checksum: 12f3a73f2d28970d146184b1425d32a63f65e9f4840eeab09155a4d23a15be8401ac7a3a09b6626895ccf853c1b9069450957c0ad82cfe591369aaa58d1593d6 +"yaml@npm:^2.0.0, yaml@npm:^2.3.1": + version: 2.3.1 + resolution: "yaml@npm:2.3.1" + checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 languageName: node linkType: hard -"yargs-parser@npm:21.1.1, yargs-parser@npm:>=21.0.1, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:21.1.1, yargs-parser@npm:>=21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 @@ -15898,8 +17383,8 @@ __metadata: linkType: hard "yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.6.2": - version: 17.7.1 - resolution: "yargs@npm:17.7.1" + version: 17.7.2 + resolution: "yargs@npm:17.7.2" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 @@ -15908,7 +17393,17 @@ __metadata: string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 - checksum: 0ed3b7694d94da777f3591f1d786d947ed2e59b897da0a0c30e541109ae087979ac26b4ec39557f5e9c4592f19806447963fb132049b9806a1d416bcdd24d2b4 + checksum: ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yauzl@npm:^2.4.2": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: ~0.2.3 + fd-slicer: ~1.1.0 + checksum: f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 languageName: node linkType: hard @@ -15926,6 +17421,13 @@ __metadata: languageName: node linkType: hard +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + "yup@npm:0.32.11": version: 0.32.11 resolution: "yup@npm:0.32.11" @@ -15941,6 +17443,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: 161e8cf7aea38a99244d65da4a9477d9d966f6a533e503feaa20ff7968a9691065c38c6f1eab5cbbdc8374142fff4a05c9cacb8479803ab50ab6a6ca80e5d624 + languageName: node + linkType: hard + "zwitch@npm:^1.0.0": version: 1.0.5 resolution: "zwitch@npm:1.0.5" @@ -15948,26 +17457,9 @@ __metadata: languageName: node linkType: hard -"zx@npm:^7.0.3": - version: 7.2.1 - resolution: "zx@npm:7.2.1" - dependencies: - "@types/fs-extra": ^11.0.1 - "@types/minimist": ^1.2.2 - "@types/node": ^18.14.2 - "@types/ps-tree": ^1.1.2 - "@types/which": ^2.0.2 - chalk: ^5.2.0 - fs-extra: ^11.1.0 - globby: ^13.1.3 - minimist: ^1.2.8 - node-fetch: 3.2.10 - ps-tree: ^1.2.0 - webpod: ^0 - which: ^3.0.0 - yaml: ^2.2.1 - bin: - zx: build/cli.js - checksum: 8a4b32b65b6f8b4113f3470d55337d522133c30aed395d1784d7f81e9d9f9ea62fcbc30f0d4b5e7fd7f7c8b60a848cb9458378b51c9d8a576a77fa1871bcfc82 +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: 3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e languageName: node linkType: hard diff --git a/test-storybooks/ember-cli/package.json b/test-storybooks/ember-cli/package.json index 40f27a6398f9..8e593b60f357 100644 --- a/test-storybooks/ember-cli/package.json +++ b/test-storybooks/ember-cli/package.json @@ -1,6 +1,6 @@ { "name": "ember-example", - "version": "7.0.0-alpha.43", + "version": "7.2.0-alpha.0", "private": true, "scripts": { "--build-storybook": "yarn storybook-prebuild && NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook build", @@ -10,59 +10,6 @@ "storybook-prebuild": "yarn build && shx cp -r public/* ember-output", "storybook:dev": "yarn dev & NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook dev -p 9009" }, - "dependencies": { - "ember-named-blocks-polyfill": "^0.2.3", - "ember-template-compiler": "^1.9.0-alpha" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@ember/optional-features": "^2.0.0", - "@storybook/addon-a11y": "7.0.0-alpha.43", - "@storybook/addon-actions": "7.0.0-alpha.43", - "@storybook/addon-backgrounds": "7.0.0-alpha.43", - "@storybook/addon-controls": "7.0.0-alpha.43", - "@storybook/addon-docs": "7.0.0-alpha.43", - "@storybook/addon-highlight": "7.0.0-alpha.43", - "@storybook/addon-links": "7.0.0-alpha.43", - "@storybook/addon-storysource": "7.0.0-alpha.43", - "@storybook/addon-viewport": "7.0.0-alpha.43", - "@storybook/addons": "7.0.0-alpha.43", - "@storybook/ember": "7.0.0-alpha.43", - "@storybook/ember-cli-storybook": "^0.2.1", - "@storybook/source-loader": "7.0.0-alpha.43", - "babel-loader": "^8.2.5", - "broccoli-asset-rev": "^3.0.0", - "browserify-zlib": "^0.2.0", - "cross-env": "^7.0.3", - "ember-ajax": "^5.0.0", - "ember-cli": "~3.24.0", - "ember-cli-app-version": "^4.0.0", - "ember-cli-babel": "^7.23.0", - "ember-cli-htmlbars": "^4.4.0", - "ember-cli-inject-live-reload": "^2.0.2", - "ember-cli-shims": "^1.2.0", - "ember-cli-sri": "^2.1.1", - "ember-cli-uglify": "^3.0.0", - "ember-load-initializers": "^2.1.2", - "ember-resolver": "^7.0.0", - "ember-source": "~3.24.0", - "loader.js": "^4.7.0", - "os-browserify": "^0.3.0", - "shx": "^0.3.2", - "storybook": "7.0.0-alpha.43", - "stream-browserify": "^3.0.0", - "vm-browserify": "^1.1.2", - "webpack": "5", - "webpack-cli": "^4.9.2" - }, - "engines": { - "node": "^4.5 || 6.* || >= 7.*" - }, - "--storybook": { - "chromatic": { - "projectToken": "19z23qxndju" - } - }, "resolutions": { "@storybook/addon-a11y": "portal:../../code/addons/a11y", "@storybook/addon-actions": "portal:../../code/addons/actions", @@ -81,54 +28,35 @@ "@storybook/addon-storysource": "portal:../../code/addons/storysource", "@storybook/addon-toolbars": "portal:../../code/addons/toolbars", "@storybook/addon-viewport": "portal:../../code/addons/viewport", + "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/ember": "portal:../../code/frameworks/ember", - "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", - "@storybook/nextjs": "portal:../../code/frameworks/nextjs", - "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", - "@storybook/react-vite": "portal:../../code/frameworks/react-vite", - "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", - "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", - "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", - "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", - "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", - "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", - "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", - "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", - "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", - "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", - "@storybook/addons": "portal:../../code/lib/addons", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", - "@storybook/builder-manager": "portal:../../code/lib/builder-manager", - "@storybook/builder-vite": "portal:../../code/lib/builder-vite", - "@storybook/builder-webpack5": "portal:../../code/lib/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", + "@storybook/builder-manager": "portal:../../code/builders/builder-manager", + "@storybook/builder-vite": "portal:../../code/builders/builder-vite", + "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", - "sb": "portal:../../code/lib/cli-sb", - "storybook": "portal:../../code/lib/cli-storybook", - "@storybook/client-api": "portal:../../code/lib/client-api", + "@storybook/client-api": "portal:../../code/deprecated/client-api", "@storybook/client-logger": "portal:../../code/lib/client-logger", "@storybook/codemod": "portal:../../code/lib/codemod", "@storybook/components": "portal:../../code/lib/components", - "@storybook/core-client": "portal:../../code/lib/core-client", + "@storybook/core-client": "portal:../../code/deprecated/core-client", "@storybook/core-common": "portal:../../code/lib/core-common", "@storybook/core-events": "portal:../../code/lib/core-events", "@storybook/core-server": "portal:../../code/lib/core-server", "@storybook/core-webpack": "portal:../../code/lib/core-webpack", "@storybook/csf-tools": "portal:../../code/lib/csf-tools", "@storybook/docs-tools": "portal:../../code/lib/docs-tools", + "@storybook/ember": "portal:../../code/frameworks/ember", + "@storybook/html": "portal:../../code/renderers/html", + "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", "@storybook/instrumenter": "portal:../../code/lib/instrumenter", + "@storybook/manager": "portal:../../code/ui/manager", + "@storybook/nextjs": "portal:../../code/frameworks/nextjs", "@storybook/node-logger": "portal:../../code/lib/node-logger", "@storybook/postinstall": "portal:../../code/lib/postinstall", - "@storybook/preview-web": "portal:../../code/lib/preview-web", - "@storybook/router": "portal:../../code/lib/router", - "@storybook/source-loader": "portal:../../code/lib/source-loader", - "@storybook/store": "portal:../../code/lib/store", - "@storybook/telemetry": "portal:../../code/lib/telemetry", - "@storybook/theming": "portal:../../code/lib/theming", + "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", "@storybook/preset-html-webpack": "portal:../../code/presets/html-webpack", "@storybook/preset-preact-webpack": "portal:../../code/presets/preact-webpack", "@storybook/preset-react-webpack": "portal:../../code/presets/react-webpack", @@ -137,14 +65,83 @@ "@storybook/preset-vue-webpack": "portal:../../code/presets/vue-webpack", "@storybook/preset-vue3-webpack": "portal:../../code/presets/vue3-webpack", "@storybook/preset-web-components-webpack": "portal:../../code/presets/web-components-webpack", - "@storybook/html": "portal:../../code/renderers/html", - "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preview-web": "portal:../../code/deprecated/preview-web", "@storybook/react": "portal:../../code/renderers/react", + "@storybook/react-vite": "portal:../../code/frameworks/react-vite", + "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", + "@storybook/router": "portal:../../code/lib/router", "@storybook/server": "portal:../../code/renderers/server", + "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", + "@storybook/source-loader": "portal:../../code/lib/source-loader", + "@storybook/store": "portal:../../code/deprecated/store", "@storybook/svelte": "portal:../../code/renderers/svelte", + "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", + "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", + "@storybook/telemetry": "portal:../../code/lib/telemetry", + "@storybook/theming": "portal:../../code/lib/theming", "@storybook/vue": "portal:../../code/renderers/vue", + "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", + "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", "@storybook/vue3": "portal:../../code/renderers/vue3", + "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", + "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", "@storybook/web-components": "portal:../../code/renderers/web-components", - "@storybook/manager": "portal:../../code/ui/manager" + "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", + "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", + "sb": "portal:../../code/lib/cli-sb", + "storybook": "portal:../../code/lib/cli-storybook" + }, + "dependencies": { + "ember-named-blocks-polyfill": "^0.2.3", + "ember-template-compiler": "^1.9.0-alpha" + }, + "devDependencies": { + "@babel/core": "^7.22.0", + "@ember/optional-features": "^2.0.0", + "@storybook/addon-a11y": "7.2.0-alpha.0", + "@storybook/addon-actions": "7.2.0-alpha.0", + "@storybook/addon-backgrounds": "7.2.0-alpha.0", + "@storybook/addon-controls": "7.2.0-alpha.0", + "@storybook/addon-docs": "7.2.0-alpha.0", + "@storybook/addon-highlight": "7.2.0-alpha.0", + "@storybook/addon-links": "7.2.0-alpha.0", + "@storybook/addon-storysource": "7.2.0-alpha.0", + "@storybook/addon-viewport": "7.2.0-alpha.0", + "@storybook/addons": "7.2.0-alpha.0", + "@storybook/ember": "7.2.0-alpha.0", + "@storybook/ember-cli-storybook": "^0.2.1", + "@storybook/source-loader": "7.2.0-alpha.0", + "babel-loader": "^8.2.5", + "broccoli-asset-rev": "^3.0.0", + "browserify-zlib": "^0.2.0", + "cross-env": "^7.0.3", + "ember-ajax": "^5.0.0", + "ember-cli": "~3.24.0", + "ember-cli-app-version": "^4.0.0", + "ember-cli-babel": "^7.23.0", + "ember-cli-htmlbars": "^4.4.0", + "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-shims": "^1.2.0", + "ember-cli-sri": "^2.1.1", + "ember-cli-uglify": "^3.0.0", + "ember-load-initializers": "^2.1.2", + "ember-resolver": "^7.0.0", + "ember-source": "~3.24.0", + "loader.js": "^4.7.0", + "os-browserify": "^0.3.0", + "shx": "^0.3.2", + "storybook": "7.2.0-alpha.0", + "stream-browserify": "^3.0.0", + "vm-browserify": "^1.1.2", + "webpack": "5", + "webpack-cli": "^4.9.2" + }, + "engines": { + "node": "^4.5 || 6.* || >= 7.*" + }, + "--storybook": { + "chromatic": { + "projectToken": "19z23qxndju" + } } } \ No newline at end of file diff --git a/test-storybooks/ember-cli/yarn.lock b/test-storybooks/ember-cli/yarn.lock index a2404c961ef3..e69de29bb2d1 100644 --- a/test-storybooks/ember-cli/yarn.lock +++ b/test-storybooks/ember-cli/yarn.lock @@ -1,16911 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@aw-web-design/x-default-browser@npm:1.4.88": - version: 1.4.88 - resolution: "@aw-web-design/x-default-browser@npm:1.4.88" - dependencies: - default-browser-id: 3.0.0 - bin: - x-default-browser: bin/x-default-browser.js - checksum: c85e61dc9e5bb04906d8ac29cce35369705c3ea3abe36a5afdecc9caefd7ee0f14596ccc6eb617c86790a67b6ee7f7f070a3e2f9e9152a8ba92adf2ccee1433a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.19.3, @babel/compat-data@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/compat-data@npm:7.19.4" - checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.3.4": - version: 7.19.6 - resolution: "@babel/core@npm:7.19.6" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helpers": ^7.19.4 - "@babel/parser": ^7.19.6 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 85c0bd38d0ef180aa2d23c3db6840a0baec88d2e05c30e7ffc3dfeb6b2b89d6e4864922f04997a1f4ce55f9dd469bf2e76518d5c7ae744b98516709d32769b73 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/generator@npm:7.19.6" - dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: 734fcb1fbef182e7b8967459cb39b81edd2701dd13170c154b368d4e086842f72ef214798c5a37e67e0a695dfb34b13143277bedcd9795b3b1b83da8e1d236c6 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.0, @babel/helper-compilation-targets@npm:^7.19.3": - version: 7.19.3 - resolution: "@babel/helper-compilation-targets@npm:7.19.3" - dependencies: - "@babel/compat-data": ^7.19.3 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f0c6fb77b6f113d70f308e7093f60dd465b697818badf5df0519d8dd12b6bfb1f4ad300b923207ce9f9c1c940ef58bff12ac4270c0863eadf9e303b7dd6d01b6 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.1.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 811cc90afe9fc25a74ed37fc0c1361a4a91b0b940235dd3958e3f03b366d40a903b40fc93b51bcb93be774aba573219f8f215664bea1d1301f58797ca6854f3f - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.8.3": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/helper-module-transforms@npm:7.19.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.19.4 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - checksum: c28692b37d4b5abacc775bcab52a74f44a493f38c58cb72b56a6c6d67a97485dd8aff6f26905abd1a924d3261a171d0214a9fb76f48d8598f1e35b8b29284792 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.19.0 - resolution: "@babel/helper-plugin-utils@npm:7.19.0" - checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.18.9, @babel/helper-replace-supers@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-replace-supers@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.19.1 - "@babel/types": ^7.19.0 - checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-simple-access@npm:7.19.4" - dependencies: - "@babel/types": ^7.19.4 - checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: 6e93ccd10248293082606a4b3e30eed32c6f796d378f6b662796c88f462f348aa368aadeb48eb410cfcc8250db93b2d6627c2e55662530f08fc25397e588d68a - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.19.0 - resolution: "@babel/helper-wrap-function@npm:7.19.0" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 2453a6b134f12cc779179188c4358a66252c29b634a8195c0cf626e17f9806c3c4c40e159cd8056c2ec82b69b9056a088014fa43d6ccc1aca67da8d9605da8fd - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helpers@npm:7.19.4" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.4 - "@babel/types": ^7.19.4 - checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.6, @babel/parser@npm:^7.4.5": - version: 7.19.6 - resolution: "@babel/parser@npm:7.19.6" - bin: - parser: ./bin/babel-parser.js - checksum: 9a3dca4ee3acd7e4fc3b58e1e1526a11fa334acbfe437f8ebf91dfaf48e943c147ef64b1733ba0a55af57d1eccafbf4e4a4afc46a15becd921971fe2ddf309bf - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 93abb5cb179a13db171bfc2cdf79489598f43c50cc174f97a2b7bb1d44d24ade7109665a20cf4e317ad6c1c730f036f06478f7c7e789b4240be1abdb60d6452f - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f101555b00aee6ee0107c9e40d872ad646bbd3094abdbeda56d17b107df69a0cb49e5d02dcf5f9d8753e25564e798d08429f12d811aaa1b307b6a725c0b8159c - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.1.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.16.5, @babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b8d7ae99ed5ad784f39e7820e3ac03841f91d6ed60ab4a98c61d6112253da36013e12807bae4ffed0ef3cb318e47debac112ed614e03b403fb8b075b09a828ee - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.13.5": - version: 7.19.6 - resolution: "@babel/plugin-proposal-decorators@npm:7.19.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-replace-supers": ^7.19.1 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 69162475282507e1579232fdaae26330cfcfa7843f4a943383d76c61a5e225ea1fe08edd7c700c400694ab9b57e8b3928b757da985ac613ddfc78be5a9b61c47 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dd87fa4a48c6408c5e85dbd6405a65cc8fe909e3090030df46df90df64cdf3e74007381a58ed87608778ee597eff7395d215274009bb3f5d8964b2db5557754f - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.18.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 90a2a59da305e6c8c83831e16079193df33d727a77a90972e286af2c8c0295fddb91b0978b88f16f63080d08a82b08ce3ee82a88b0488b3c51decc73c1d35786 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f2db40e26172f07c50b635cb61e1f36165de3ba868fcf608d967642f0d044b7c6beb0e7ecf17cbd421144b99e1eae7ad6031ded92925343bb0ed1d08707b514f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.16.5, @babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5, @babel/plugin-proposal-private-property-in-object@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c8e56a972930730345f39f2384916fd8e711b3f4b4eae2ca9740e99958980118120d5cc9b6ac150f0965a5a35f825910e2c3013d90be3e9993ab6111df444569 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-decorators@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 105a13d581a8643ba145d4d0d31f34a492b352defa5b155e785702da6ce9c3ff0c1843ba9bee176e35f6e38afa19dc7bd12c120220af0495de4b128f1dd27f6e - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 54918a05375325ba0c60bc81abfb261e6f118bed2de94e4c17dca9a2006fc25e13b1a8b5504b9a881238ea394fd2f098f60b2eb3a392585d6348874565445e7b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.18.6, @babel/plugin-syntax-typescript@npm:^7.2.0": - version: 7.18.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 900f5c695755062b91eec74da6f9092f40b8fada099058b92576f1e23c55e9813ec437051893a9b3c05cefe39e8ac06303d4a91b384e1c03dd8dc1581ea11602 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.18.6" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-remap-async-to-generator": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2cca47468cf1aeefdc7ec35d670e195c86cee4de28a1970648c46a88ce6bd1806ef0bab27251b9e7fb791bb28a64dcd543770efd899f28ee5f7854e64e873d3 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.19.4, @babel/plugin-transform-block-scoping@npm:^7.8.3": - version: 7.19.4 - resolution: "@babel/plugin-transform-block-scoping@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 86353ccbb57b4a0513ac2b1209271858f9c3f2c56b15a6225ff5f1c97ffb1c48f8984046a718a9835ecdae100cbe80ed0b9ca15a5554e33386671b56a8cd887c - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-classes@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.19.0 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5500953031fc3eae73f717c7b59ef406158a4a710d566a0f78a4944240bcf98f817f07cf1d6af0e749e21f0dfee29c36412b75d57b0a753c3ad823b70c596b79 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6bfbea207827d77592628973c0e8cc3319db636506bdc6e81e21582de2e767890e6975b382d0511e9ec3773b9f43691185df90832883bbf9251f688d27fbc1d - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-transform-destructuring@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0ca40f6abf7273dafefb7a1cc11fef2b9ab3edbd23188cdcff8cd5e30783b89d64e7813e44aae9efab417b90972ae80971bf6c4130eeeb112bcfb44100c72657 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-for-of@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ca64c623cf0c7a80ab6f07ebd3e6e4ade95e2ae806696f70b43eafe6394fa8ce21f2b1ffdd15df2067f7363d2ecfe26472a97c6c774403d2163fa05f50c98f17 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.12.1, @babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-amd@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4236aad970025bc10c772c1589b1e2eab8b7681933bb5ffa6e395d4c1a52532b28c47c553e3011b4272ea81e5ab39fe969eb5349584e8390e59771055c467d42 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-simple-access": ^7.19.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85d46945ab5ba3fff89e962d560a5d40253f228b9659a697683db3de07c0236e8cd60e5eb41958007359951a42bc268bf32350fcdb5b4a86f58dff1e032c096e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.19.0": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.6" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8526431cc81ea3eb232ad50862d0ed1cbb422b5251d14a8d6610d0ca0617f6e75f35179e98eb1235d0cccb980120350b9f112594e5646dd45378d41eaaf87342 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.19.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8a40f5d04f2140c44fe890a5a3fd72abc2a88445443ac2bd92e1e85d9366d3eb8f1ebb7e2c89d2daeaf213d9b28cb65605502ac9b155936d48045eeda6053494 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-assign@npm:^7.8.3": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-assign@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a9738264cc996c54febafa0701c5a182d99afbddbfe9fbcc0b2536e3b2332b3318a8143aacd0368e31e18c24cd1b1980be7a3b0b2e5122efb520952d863a1203 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-parameters@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b5863300da60face8a250d91da16294333bd5626e9721b13a3ba2078bd2a5a190e32c6e7a1323d5f547f579aeb2804ff49a62a55fcad2b1d099e55a55b788ea - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.12.12": - version: 7.19.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-regenerator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - regenerator-transform: ^0.15.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 60bd482cb0343c714f85c3e19a13b3b5fa05ee336c079974091c0b35e263307f4e661f4555dff90707a87d5efe19b1d51835db44455405444ac1813e268ad750 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - -"@babel/plugin-transform-runtime@npm:^7.13.9": - version: 7.19.6 - resolution: "@babel/plugin-transform-runtime@npm:7.19.6" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ef93efbcbb00dcf4da6dcc55bda698a2a57fca3fb05a6a13e932ecfdb7c1c5d2f0b5b245c1c4faca0318853937caba0d82442f58b7653249f64275d08052fbd8 - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-spread@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e73a4deb095999185e70b524d0ff4e35df50fcda58299e700a6149a15bbc1a9b369ef1cef384e15a54b3c3ce316cc0f054dbf249dcd0d1ca59f4281dd4df9718 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.19.3 - resolution: "@babel/plugin-transform-typescript@npm:7.19.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 094c8c4ad05fee7f1bda243923cadb2b05b58448ea7cf9560e734c7cffd72acfeab3e1e0d2b084eb47a5a950ac316f970b83904b3504c203fa6fe9d8d61526a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:~7.4.0": - version: 7.4.5 - resolution: "@babel/plugin-transform-typescript@npm:7.4.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-syntax-typescript": ^7.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2c3aadfba8db8726a1e0c5341578e65ab8a2d46c79844509ccc74bff1c8eaa4943e94f458e4f006a7d21a2ea93025ae3629bdeb9858c7b53967b9f7aee154543 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - -"@babel/polyfill@npm:^7.11.5": - version: 7.12.1 - resolution: "@babel/polyfill@npm:7.12.1" - dependencies: - core-js: ^2.6.5 - regenerator-runtime: ^0.13.4 - checksum: 3f59a9d85a41b390b044a1be13e11ae6d8efbfcf4e07217964585c7cef337b828eecfc5e164083227189146d2b6efc1affae8f59c831438eb40b848ab6fe5f39 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:^7.16.5": - version: 7.19.4 - resolution: "@babel/preset-env@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-async-generator-functions": ^7.19.1 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.19.4 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@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.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.19.4 - "@babel/plugin-transform-classes": ^7.19.0 - "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.19.4 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.8 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.18.6 - "@babel/plugin-transform-modules-commonjs": ^7.18.6 - "@babel/plugin-transform-modules-systemjs": ^7.19.0 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.18.8 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.19.0 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.19.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f12af25281f3c5e7df60fa1e79ad481ddd7f6a111d4c0fabcffdabf0eaed3a01b4f8c647ae5445ed1f58df70f52083ffd283e8919ade7afa73801a49c733d22c - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.13.13": - version: 7.18.6 - resolution: "@babel/preset-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-flow-strip-types": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/preset-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.16": - version: 7.18.9 - resolution: "@babel/register@npm:7.18.9" - dependencies: - clone-deep: ^4.0.1 - find-cache-dir: ^2.0.0 - make-dir: ^2.1.0 - pirates: ^4.0.5 - source-map-support: ^0.5.16 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 - languageName: node - linkType: hard - -"@babel/runtime@npm:7.12.18": - version: 7.12.18 - resolution: "@babel/runtime@npm:7.12.18" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 0ba38dc8d478584b0b5fb15fc2b7855f9f20561917bd434a66429d55d1165199d6161bc5fb087b87254712827f63561ff5196df66701e5647d67c7d0f557569a - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.8.4": - version: 7.19.4 - resolution: "@babel/runtime@npm:7.19.4" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 66b7e3c13e9ee1d2c9397ea89144f29a875edee266a0eb2d9971be51b32fdbafc85808c7a45e011e6681899bb804b4e2ee2aed6dc07108dbbd6b11b6cc2afba6 - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.19.6, @babel/traverse@npm:^7.4.5": - version: 7.19.6 - resolution: "@babel/traverse@npm:7.19.6" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.6 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3fafa244f7d0b696a9d38f5da016a8f8db4b08ac60a067b299a8f54d91fb7c70c3edf06f921221d333137e65ffb64392526e68fdcf596ec91e95720037789d66 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.2.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3": - version: 7.19.4 - resolution: "@babel/types@npm:7.19.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 - languageName: node - linkType: hard - -"@cnakazawa/watch@npm:^1.0.3": - version: 1.0.4 - resolution: "@cnakazawa/watch@npm:1.0.4" - dependencies: - exec-sh: ^0.3.2 - minimist: ^1.2.0 - bin: - watch: cli.js - checksum: 88f395ca0af2f3c0665b8ce7bb29e83647ec5d141e8735712aeeee4117081555436712966b6957aa1c461f6f826a4d23b0034e379c443a10e919f81c8748bf29 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.0, @discoveryjs/json-ext@npm:^0.5.3": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 - languageName: node - linkType: hard - -"@ember-data/rfc395-data@npm:^0.0.4": - version: 0.0.4 - resolution: "@ember-data/rfc395-data@npm:0.0.4" - checksum: 59760b1f7b1cf131fe4a3b817b912e7e62e69e100acd813db37d11106a40c1b22da068cd7d4cdc1bb4c69b0dbde45c96ebff848b6b2380715eae7896bb2e109c - languageName: node - linkType: hard - -"@ember/edition-utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@ember/edition-utils@npm:1.2.0" - checksum: eb1eeb08b66344054acb34a4695a80dbfaeb678d10cb11327eec4c0d03b2324ad7c05d0239a7d0298d5f8931e1698d85cba23dac37bff18ab52104f678a0e8c7 - languageName: node - linkType: hard - -"@ember/optional-features@npm:^2.0.0": - version: 2.0.0 - resolution: "@ember/optional-features@npm:2.0.0" - dependencies: - chalk: ^4.1.0 - ember-cli-version-checker: ^5.1.1 - glob: ^7.1.6 - inquirer: ^7.3.3 - mkdirp: ^1.0.4 - silent-error: ^1.1.1 - checksum: 8fce4edc03b95c364770468398b5163791f36d2c305a7ed7221506558d13d114b79a5e5a58fe98d260b38cff4eece2c2fd87ccdff1bc10a7de8270ab3b3f49d1 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.14.54": - version: 0.14.54 - resolution: "@esbuild/linux-loong64@npm:0.14.54" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": - version: 2.1.2 - resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" - checksum: c59715902b9062aa7ff38973f298b509499fd146dbf564dc338b3f9e896da5bffb4ca676c27587fde79b3586003e24d65960acb62f009bca43dca34c76f8cbf7 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 - languageName: node - linkType: hard - -"@jest/transform@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/transform@npm:26.6.2" - dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^26.6.2 - babel-plugin-istanbul: ^6.0.0 - chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-util: ^26.6.2 - micromatch: ^4.0.2 - pirates: ^4.0.1 - slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: 31667b925a2f3b310d854495da0ab67be8f5da24df76ecfc51162e75f1140aed5d18069ba190cb5e0c7e492b04272c8c79076ddf5bbcff530ee80a16a02c4545 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "@mdx-js/mdx@npm:2.1.5" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/mdx": ^2.0.0 - estree-util-build-jsx: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-util-to-js: ^1.1.0 - estree-walker: ^3.0.0 - hast-util-to-estree: ^2.0.0 - markdown-extensions: ^1.0.0 - periscopic: ^3.0.0 - remark-mdx: ^2.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - unified: ^10.0.0 - unist-util-position-from-estree: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - checksum: 51b8b40aafbbeee618fd289ef6e0311e28e2598c514016aefb094237fa9cdf3e1c1407267a08dc7f8da9673de354b5b946f3ceb7ba5735bdf869d18c2a49117d - languageName: node - linkType: hard - -"@mdx-js/react@npm:^2.1.5": - version: 2.1.5 - resolution: "@mdx-js/react@npm:2.1.5" - dependencies: - "@types/mdx": ^2.0.0 - "@types/react": ">=16" - peerDependencies: - react: ">=16" - checksum: e47fb7086a4dd3e4d75d9ef0bf530009f72437a5ea91048e65d2e2f53955015a8c81b5058ac56fa00f401843305518e9f298183645d56c7e34336df4cc0b62bf - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 - languageName: node - linkType: hard - -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.1 - resolution: "@pnpm/network.ca-file@npm:1.0.1" - dependencies: - graceful-fs: 4.2.10 - checksum: c847d8618725b037427616ce5e8edc305ffe94759b8bb3862431d72a79011beac2d8a097796678a2369a747e490f4e19833347a2e1b4f641e2da29238f8c5535 - languageName: node - linkType: hard - -"@pnpm/npm-conf@npm:^1.0.4": - version: 1.0.5 - resolution: "@pnpm/npm-conf@npm:1.0.5" - dependencies: - "@pnpm/network.ca-file": ^1.0.1 - config-chain: ^1.1.11 - checksum: 0c5f1a63782309a877b70e3cbdd21ff1da57549924a941772bafd0117323881fdcda0e9753f0a695c3f85f4360f5ca27a0e20153abae6985350502f2d94b7d40 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@socket.io/component-emitter@npm:~3.1.0": - version: 3.1.0 - resolution: "@socket.io/component-emitter@npm:3.1.0" - checksum: db069d95425b419de1514dffe945cc439795f6a8ef5b9465715acf5b8b50798e2c91b8719cbf5434b3fe7de179d6cdcd503c277b7871cb3dd03febb69bdd50fa - languageName: node - linkType: hard - -"@storybook/addon-a11y@portal:../../code/addons/a11y::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-a11y@portal:../../code/addons/a11y::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addon-highlight": 7.0.0-alpha.42 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - axe-core: ^4.2.0 - global: ^4.4.0 - lodash: ^4.17.21 - react-sizeme: ^3.0.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-actions@portal:../../code/addons/actions::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-actions@portal:../../code/addons/actions::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - polished: ^4.2.2 - prop-types: ^15.7.2 - react-inspector: ^6.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - uuid-browser: ^3.1.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - memoizerific: ^1.11.3 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-controls@portal:../../code/addons/controls::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-controls@portal:../../code/addons/controls::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/blocks": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - lodash: ^4.17.21 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-docs@portal:../../code/addons/docs::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-docs@portal:../../code/addons/docs::locator=ember-example%40workspace%3A." - dependencies: - "@babel/plugin-transform-react-jsx": ^7.12.12 - "@jest/transform": ^26.6.2 - "@mdx-js/react": ^2.1.5 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/blocks": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/mdx2-csf": 0.1.0-next.0 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/postinstall": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/source-loader": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - fs-extra: ^9.0.1 - global: ^4.4.0 - remark-external-links: ^8.0.0 - remark-slug: ^6.0.0 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-highlight@portal:../../code/addons/highlight::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-highlight@portal:../../code/addons/highlight::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/addon-links@portal:../../code/addons/links::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-links@portal:../../code/addons/links::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - global: ^4.4.0 - prop-types: ^15.7.2 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-storysource@portal:../../code/addons/storysource::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-storysource@portal:../../code/addons/storysource::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/router": 7.0.0-alpha.42 - "@storybook/source-loader": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - estraverse: ^5.2.0 - prop-types: ^15.7.2 - react-syntax-highlighter: ^15.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-viewport@portal:../../code/addons/viewport::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-viewport@portal:../../code/addons/viewport::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - memoizerific: ^1.11.3 - prop-types: ^15.7.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addons@portal:../../code/lib/addons::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addons@portal:../../code/lib/addons::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/api@portal:../../code/lib/api::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/api@portal:../../code/lib/api::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - semver: ^7.3.7 - store2: ^2.12.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/blocks@portal:../../code/lib/blocks::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/blocks@portal:../../code/lib/blocks::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/lodash": ^4.14.167 - color-convert: ^2.0.1 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - markdown-to-jsx: ^7.1.3 - memoizerific: ^1.11.3 - polished: ^4.2.2 - react-colorful: ^5.1.2 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=ember-example%40workspace%3A." - dependencies: - "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - "@types/ejs": ^3.1.1 - "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 - browser-assert: ^1.2.1 - ejs: ^3.1.8 - esbuild: ^0.14.48 - esbuild-plugin-alias: ^0.2.1 - express: ^4.17.1 - fs-extra: ^9.0.1 - process: ^0.11.10 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=ember-example%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/core-webpack": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/router": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-loader: ^8.2.5 - babel-plugin-named-exports-order: ^0.0.2 - browser-assert: ^1.2.1 - case-sensitive-paths-webpack-plugin: ^2.4.0 - css-loader: ^6.7.1 - fork-ts-checker-webpack-plugin: ^7.2.8 - global: ^4.4.0 - html-webpack-plugin: ^5.5.0 - path-browserify: ^1.0.1 - process: ^0.11.10 - semver: ^7.3.7 - style-loader: ^3.3.1 - terser-webpack-plugin: ^5.3.1 - ts-dedent: ^2.0.0 - util: ^0.12.4 - util-deprecate: ^1.0.2 - webpack: 5 - webpack-dev-middleware: ^5.3.1 - webpack-hot-middleware: ^2.25.1 - webpack-virtual-modules: ^0.4.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - global: ^4.4.0 - qs: ^6.10.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - global: ^4.4.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channels@portal:../../code/lib/channels::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channels@portal:../../code/lib/channels::locator=ember-example%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/cli@portal:../../code/lib/cli::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/cli@portal:../../code/lib/cli::locator=ember-example%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@babel/preset-env": ^7.12.11 - "@storybook/codemod": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-server": 7.0.0-alpha.42 - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/semver": ^7.3.4 - boxen: ^5.1.2 - chalk: ^4.1.0 - commander: ^6.2.1 - cross-spawn: ^7.0.3 - degit: ^2.8.4 - detect-indent: ^6.1.0 - envinfo: ^7.7.3 - execa: ^5.0.0 - express: ^4.17.1 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - get-port: ^5.1.1 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - leven: ^3.1.0 - prompts: ^2.4.0 - puppeteer-core: ^2.1.1 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - shelljs: ^0.8.5 - strip-json-comments: ^3.0.1 - ts-dedent: ^2.0.0 - update-notifier: ^6.0.2 - util-deprecate: ^1.0.2 - bin: - getstorybook: ./bin/index.js - sb: ./bin/index.js - languageName: node - linkType: soft - -"@storybook/client-api@portal:../../code/lib/client-api::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-api@portal:../../code/lib/client-api::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - "@types/qs": ^6.9.5 - "@types/webpack-env": ^1.16.4 - global: ^4.4.0 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/client-logger@portal:../../code/lib/client-logger::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-logger@portal:../../code/lib/client-logger::locator=ember-example%40workspace%3A." - dependencies: - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/codemod@portal:../../code/lib/codemod::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/codemod@portal:../../code/lib/codemod::locator=ember-example%40workspace%3A." - dependencies: - "@babel/types": ^7.12.11 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - cross-spawn: ^7.0.3 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - lodash: ^4.17.21 - prettier: ">=2.2.1 <=2.3.0" - recast: ^0.19.0 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/components@portal:../../code/lib/components::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/components@portal:../../code/lib/components::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/core-client@portal:../../code/lib/core-client::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-client@portal:../../code/lib/core-client::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - global: ^4.4.0 - regenerator-runtime: ^0.13.7 - util-deprecate: ^1.0.2 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-common@portal:../../code/lib/core-common::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-common@portal:../../code/lib/core-common::locator=ember-example%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/csf": next - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - "@types/node": ^16.0.0 - "@types/pretty-hrtime": ^1.0.0 - chalk: ^4.1.0 - esbuild: ^0.14.48 - esbuild-register: ^3.3.3 - express: ^4.17.1 - file-system-cache: ^2.0.0 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - glob: ^7.1.6 - handlebars: ^4.7.7 - lazy-universal-dotenv: ^3.0.1 - picomatch: ^2.3.0 - pkg-dir: ^5.0.0 - pretty-hrtime: ^1.0.3 - resolve-from: ^5.0.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-events@portal:../../code/lib/core-events::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-events@portal:../../code/lib/core-events::locator=ember-example%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/core-server@portal:../../code/lib/core-server::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-server@portal:../../code/lib/core-server::locator=ember-example%40workspace%3A." - dependencies: - "@aw-web-design/x-default-browser": 1.4.88 - "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/docs-mdx": 0.0.1-canary.12433cf.0 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/node-fetch": ^2.5.7 - "@types/pretty-hrtime": ^1.0.0 - "@types/semver": ^7.3.4 - better-opn: ^2.1.1 - boxen: ^5.1.2 - chalk: ^4.1.0 - cli-table3: ^0.6.1 - compression: ^1.7.4 - detect-port: ^1.3.0 - express: ^4.17.1 - fs-extra: ^9.0.1 - global: ^4.4.0 - globby: ^11.0.2 - ip: ^2.0.0 - lodash: ^4.17.21 - node-fetch: ^2.6.7 - open: ^8.4.0 - pretty-hrtime: ^1.0.3 - prompts: ^2.4.0 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - serve-favicon: ^2.5.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - watchpack: ^2.2.0 - ws: ^8.2.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=ember-example%40workspace%3A." - dependencies: - "@babel/generator": ^7.12.11 - "@babel/parser": ^7.12.11 - "@babel/traverse": ^7.12.11 - "@babel/types": ^7.12.11 - "@storybook/csf": next - fs-extra: ^9.0.1 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf@npm:next": - version: 0.0.2-next.0 - resolution: "@storybook/csf@npm:0.0.2-next.0" - dependencies: - expect-type: ^0.14.2 - lodash: ^4.17.15 - type-fest: ^2.19.0 - checksum: 8bfcb27f03a3d443b10af09f537ca3891cadcd5b2d48f1c5551f477fd37a154fc28bd8d204ec7479a6ff9f2cf61afd9cf0d00215bd77a64bf12c32e7e49ce90d - languageName: node - linkType: hard - -"@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0": - version: 0.0.1-canary.12433cf.0 - resolution: "@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0" - dependencies: - "@babel/traverse": ^7.12.11 - "@mdx-js/mdx": ^2.0.0 - estree-to-babel: ^4.9.0 - hast-util-to-estree: ^2.0.2 - checksum: 2c0d2cd4a01e51470b2cd3bdbf60ee09eaff476117ef258fc0336b04ddb8ef205f18aa256c67bc914533788932f99b66504c3d2895738f39e862ccc2d05f13c1 - languageName: node - linkType: hard - -"@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=ember-example%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - doctrine: ^3.0.0 - lodash: ^4.17.21 - languageName: node - linkType: soft - -"@storybook/ember-cli-storybook@npm:^0.2.1": - version: 0.2.1 - resolution: "@storybook/ember-cli-storybook@npm:0.2.1" - dependencies: - broccoli-funnel: ^2.0.2 - cheerio: ^1.0.0-rc.2 - ember-cli-addon-docs-yuidoc: ^0.2.3 - ember-cli-babel: ^7.1.2 - checksum: bf720930f8edc11dc26d3ac1883c5a029b22843f1b32e2c11f87f7e4567a2cb513a81ab7a3276ad461bee4a83f7fd7c9d56ee0f2825ff5da20bdaab9fd8d98ef - languageName: node - linkType: hard - -"@storybook/ember@portal:../../code/frameworks/ember::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/ember@portal:../../code/frameworks/ember::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - global: ^4.4.0 - react: 16.14.0 - react-dom: 16.14.0 - read-pkg-up: ^7.0.1 - ts-dedent: ^2.0.0 - peerDependencies: - "@babel/core": "*" - "@types/ember__component": 4.0.8 - babel-plugin-ember-modules-api-polyfill: ^2.12.0 - babel-plugin-htmlbars-inline-precompile: 2 || 3 - ember-source: ~3.28.1 - languageName: node - linkType: soft - -"@storybook/mdx2-csf@npm:0.1.0-next.0": - version: 0.1.0-next.0 - resolution: "@storybook/mdx2-csf@npm:0.1.0-next.0" - dependencies: - "@babel/generator": ^7.12.11 - "@babel/parser": ^7.12.11 - "@mdx-js/mdx": ^2.0.0 - estree-to-babel: ^4.9.0 - hast-util-to-estree: ^2.0.2 - js-string-escape: ^1.0.1 - loader-utils: ^2.0.0 - lodash: ^4.17.21 - checksum: 2651dc9f01c40f1346f5890ae4e535574a80fed10277ae44537abf6f3f4eb4c204ae367329585f1345dda55d22430df6fe799c33f6b4c94f542ec74d33285924 - languageName: node - linkType: hard - -"@storybook/node-logger@portal:../../code/lib/node-logger::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/node-logger@portal:../../code/lib/node-logger::locator=ember-example%40workspace%3A." - dependencies: - "@types/npmlog": ^4.1.2 - chalk: ^4.1.0 - npmlog: ^5.0.1 - pretty-hrtime: ^1.0.3 - languageName: node - linkType: soft - -"@storybook/postinstall@portal:../../code/lib/postinstall::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/postinstall@portal:../../code/lib/postinstall::locator=ember-example%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/preview-web@portal:../../code/lib/preview-web::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preview-web@portal:../../code/lib/preview-web::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - ansi-to-html: ^0.6.11 - global: ^4.4.0 - lodash: ^4.17.21 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - languageName: node - linkType: soft - -"@storybook/router@portal:../../code/lib/router::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/router@portal:../../code/lib/router::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - qs: ^6.10.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/source-loader@portal:../../code/lib/source-loader::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/source-loader@portal:../../code/lib/source-loader::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/csf": next - estraverse: ^5.2.0 - lodash: ^4.17.21 - prettier: ">=2.2.1 <=2.3.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/store@portal:../../code/lib/store::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/store@portal:../../code/lib/store::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - slash: ^3.0.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/telemetry@portal:../../code/lib/telemetry::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/telemetry@portal:../../code/lib/telemetry::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - chalk: ^4.1.0 - detect-package-manager: ^2.0.1 - fetch-retry: ^5.0.2 - fs-extra: ^9.0.1 - isomorphic-unfetch: ^3.1.0 - nanoid: ^3.3.1 - read-pkg-up: ^7.0.1 - languageName: node - linkType: soft - -"@storybook/theming@portal:../../code/lib/theming::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/theming@portal:../../code/lib/theming::locator=ember-example%40workspace%3A." - dependencies: - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/manager@portal:../../code/ui/manager::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/manager@portal:../../code/ui/manager::locator=ember-example%40workspace%3A." - languageName: node - linkType: soft - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@types/acorn@npm:^4.0.0": - version: 4.0.6 - resolution: "@types/acorn@npm:4.0.6" - dependencies: - "@types/estree": "*" - checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0": - version: 7.1.19 - resolution: "@types/babel__core@npm:7.1.19" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.18.2 - resolution: "@types/babel__traverse@npm:7.18.2" - dependencies: - "@babel/types": ^7.3.0 - checksum: 05972775e21cf07753b3bec725bf76f5a9804f99f660d323040746e3c8a4fe1b4ef6df17d7a80c4e2e335382cc72c62fc5a7079af836871ff9cbf0c21804e6d9 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 - languageName: node - linkType: hard - -"@types/chai-as-promised@npm:^7.1.2": - version: 7.1.5 - resolution: "@types/chai-as-promised@npm:7.1.5" - dependencies: - "@types/chai": "*" - checksum: 7c1345c6e32513d52d8e562ec173c23161648d6b792046525f18803a9932d7b3ad3dca8f0181e3c529ec42b106099f174e34edeb184d61dc93e32c98b5132fd4 - languageName: node - linkType: hard - -"@types/chai@npm:*, @types/chai@npm:^4.2.9": - version: 4.3.3 - resolution: "@types/chai@npm:4.3.3" - checksum: 20cd094753e137cfc35939cae7f0ed78ecda7861e5c94704efab6979b9121a63807e9b631bdcf3a2792d6c6dba44050b13387262f9e63ebb040741c01c345f0a - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/cookie@npm:^0.4.1": - version: 0.4.1 - resolution: "@types/cookie@npm:0.4.1" - checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 - languageName: node - linkType: hard - -"@types/cors@npm:^2.8.12": - version: 2.8.12 - resolution: "@types/cors@npm:2.8.12" - checksum: 8c45f112c7d1d2d831b4b266f2e6ed33a1887a35dcbfe2a18b28370751fababb7cd045e745ef84a523c33a25932678097bf79afaa367c6cb3fa0daa7a6438257 - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - -"@types/ejs@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/ejs@npm:3.1.1" - checksum: 12fa444920aaa70af2fae4424fa62b49c23b31a37129c428b7c9f9068e58c0696b4e5601b0449f87bae8794e039c679a43651c356c34f17d1bb460456dd41441 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.7 - resolution: "@types/eslint@npm:8.4.7" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 5e1b8ed100dcb96c74098030ca00386d1661e83261c0b64a841e570a4dd74740bc15fe04363cb22d7c6e0c56cee61f8b2c1455ec7124e69226d41fb4fed2028e - languageName: node - linkType: hard - -"@types/estree-jsx@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree-jsx@npm:1.0.0" - dependencies: - "@types/estree": "*" - checksum: 851d7afb63a89fb9ce7822563930660433f29106d72db279ce9c99f791ec996ef21b05adc6f545325cd1745b3041cc86422f0ffa39a06734305b90cfbc871765 - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 - languageName: node - linkType: hard - -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.31 - resolution: "@types/express-serve-static-core@npm:4.17.31" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df - languageName: node - linkType: hard - -"@types/express@npm:^4.17.2, @types/express@npm:^4.7.0": - version: 4.17.14 - resolution: "@types/express@npm:4.17.14" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.18 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 15c1af46d02de834e4a225eccaa9d85c0370fdbb3ed4e1bc2d323d24872309961542b993ae236335aeb3e278630224a6ea002078d39e651d78a3b0356b1eaa79 - languageName: node - linkType: hard - -"@types/fs-extra@npm:^5.0.5": - version: 5.1.0 - resolution: "@types/fs-extra@npm:5.1.0" - dependencies: - "@types/node": "*" - checksum: 9b4abc891ad0dc3baa77b0ebcf91dff8e7a5936aa037de0bd6ded399ab38b5896be1ee02b5c0a18c0915cfc40ab590a915709e6f2beef8f6f7e16fd3759e469a - languageName: node - linkType: hard - -"@types/fs-extra@npm:^8.1.0": - version: 8.1.2 - resolution: "@types/fs-extra@npm:8.1.2" - dependencies: - "@types/node": "*" - checksum: 7277198ded9caea5750c82e569ba1e6fbac28cdb4a95e5d52d24e7c4c2ac90bf45fbe89e08fc21de8f9d3c9b302e30680566eb04e460c30ceac66ad24c161b37 - languageName: node - linkType: hard - -"@types/glob@npm:*": - version: 8.0.0 - resolution: "@types/glob@npm:8.0.0" - dependencies: - "@types/minimatch": "*" - "@types/node": "*" - checksum: 1817b05f5a8aed851d102a65b5e926d5c777bef927ea62b36d635860eef5364f2046bb5a692d135b6f2b28f34e4a9d44ade9396122c0845bcc7636d35f624747 - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1": - version: 7.2.0 - resolution: "@types/glob@npm:7.2.0" - dependencies: - "@types/minimatch": "*" - "@types/node": "*" - checksum: 6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" - dependencies: - "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - -"@types/is-function@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/is-function@npm:1.0.1" - checksum: dfbb591936dfebd4686b109603bc3e2d23a17087d6ec913fb35cd6b5a4ef908ed68ab93cb27d508f1546d312edf03e663cb6738d3b67d420c68da961ac2b3d1f - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.167": - version: 4.14.186 - resolution: "@types/lodash@npm:4.14.186" - checksum: ee0c1368a8100bb6efb88335107473a41928fc307ff1ef4ff1278868ccddba9c04c68c36d1ffe3a0392ef4a956e1955f7de3203ec09df4f1655dd1b88485c549 - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" - dependencies: - "@types/unist": "*" - checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313 - languageName: node - linkType: hard - -"@types/mdx@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/mdx@npm:2.0.3" - checksum: 41deb51c29535913af01d25f0e1414cfb5a6948d0e60e77e4aca895694de48bf0ac69c5a81fe2d9617d726cb253001ef82a65b683d5ef51987d15aa1931d086b - languageName: node - linkType: hard - -"@types/mime-types@npm:^2.1.0": - version: 2.1.1 - resolution: "@types/mime-types@npm:2.1.1" - checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c - languageName: node - linkType: hard - -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 - languageName: node - linkType: hard - -"@types/minimatch@npm:*": - version: 5.1.2 - resolution: "@types/minimatch@npm:5.1.2" - checksum: 0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 - languageName: node - linkType: hard - -"@types/minimatch@npm:^3.0.3": - version: 3.0.5 - resolution: "@types/minimatch@npm:3.0.5" - checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.5.7": - version: 2.6.2 - resolution: "@types/node-fetch@npm:2.6.2" - dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:>=10.0.0": - version: 18.11.4 - resolution: "@types/node@npm:18.11.4" - checksum: 1de782b4eef4a5115396ae62137f248390ee5d1d9e9eeb49599714554cce1328af43da31bc28e7bab5a0ef859538a584a907b26163a59b42bc87b8317dc00bb8 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.0 - resolution: "@types/node@npm:16.18.0" - checksum: 4eb4b88012c7d3f527c1b4989cf085479d44ce418fb047fb8d3b545601a3e1fc436de8491b9734debeda8eae241963fb802cea87a5a5698bf5f6f3d489d446a8 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/npmlog@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/npmlog@npm:4.1.4" - checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: a6cdee417eea6f7af914e4fcd13e05822864ce10b5d7646525632e86d69b79123eec55a5d3fff0155ba46b61902775e1644bcb80e1e4dffdac28e7febb089083 - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/react@npm:>=16": - version: 18.0.21 - resolution: "@types/react@npm:18.0.21" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 36c1a7c9d507e81e2e629c1ad3db51d7b84d8b010c2d5008da411874286c6a5ccc711ae1d4c470efc0bdc77153cc8804a40e927e929e5164c669ca41b84b846d - languageName: node - linkType: hard - -"@types/rimraf@npm:^2.0.2, @types/rimraf@npm:^2.0.3": - version: 2.0.5 - resolution: "@types/rimraf@npm:2.0.5" - dependencies: - "@types/glob": "*" - "@types/node": "*" - checksum: e388f546840704a240fb31536498921623bca4ec1230925013d6b6d7c7d2211c8ec07fcbbd2606151d7549cbbc28a01c18fb0df502107a9293860a5ff64bc147 - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.2 - resolution: "@types/scheduler@npm:0.16.2" - checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4": - version: 7.3.12 - resolution: "@types/semver@npm:7.3.12" - checksum: 35536b2fc5602904f21cae681f6c9498e177dab3f54ae37c92f9a1b7e43c35f18bcd81e1c98c1cf0d33ee046bb06c771e9928c1c00a401d56a03f56549252a15 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.0 - resolution: "@types/serve-static@npm:1.15.0" - dependencies: - "@types/mime": "*" - "@types/node": "*" - checksum: b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 - languageName: node - linkType: hard - -"@types/symlink-or-copy@npm:^1.2.0": - version: 1.2.0 - resolution: "@types/symlink-or-copy@npm:1.2.0" - checksum: 18fb73094b2cf6c84544939bd6344d7a8cd1ccf8496a1cfb1320f38491c8dfbea3248bb6e91495322a51a493e04a767582a214d5261f5c5b007aa6ef65fc8b50 - languageName: node - linkType: hard - -"@types/unist@npm:*, @types/unist@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db - languageName: node - linkType: hard - -"@types/webpack-env@npm:^1.16.4": - version: 1.18.0 - resolution: "@types/webpack-env@npm:1.18.0" - checksum: ecf4daa31cb37d474ac0ce058d83a3cadeb9881ca8107ae93c2299eaa9954943aae09b43e143c62ccbe4288a14db00c918c9debd707afe17c3998f873eaabc59 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 - languageName: node - linkType: hard - -"@types/yargs@npm:^15.0.0": - version: 15.0.14 - resolution: "@types/yargs@npm:15.0.14" - dependencies: - "@types/yargs-parser": "*" - checksum: 8e358aeb8f0c3758e59e2b8fcfdee5627ab2fe3d92f50f380503d966c7f33287be3322155516a50d27727fde1ad3878f48f60cd6648439126d4b0bbb1a1153ed - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 - languageName: node - linkType: hard - -"@webpack-cli/configtest@npm:^1.2.0": - version: 1.2.0 - resolution: "@webpack-cli/configtest@npm:1.2.0" - peerDependencies: - webpack: 4.x.x || 5.x.x - webpack-cli: 4.x.x - checksum: a2726cd9ec601d2b57e5fc15e0ebf5200a8892065e735911269ac2038e62be4bfc176ea1f88c2c46ff09b4d05d4c10ae045e87b3679372483d47da625a327e28 - languageName: node - linkType: hard - -"@webpack-cli/info@npm:^1.5.0": - version: 1.5.0 - resolution: "@webpack-cli/info@npm:1.5.0" - dependencies: - envinfo: ^7.7.3 - peerDependencies: - webpack-cli: 4.x.x - checksum: 7f56fe037cd7d1fd5c7428588519fbf04a0cad33925ee4202ffbafd00f8ec1f2f67d991245e687d50e0f3e23f7b7814273d56cb9f7da4b05eed47c8d815c6296 - languageName: node - linkType: hard - -"@webpack-cli/serve@npm:^1.7.0": - version: 1.7.0 - resolution: "@webpack-cli/serve@npm:1.7.0" - peerDependencies: - webpack-cli: 4.x.x - peerDependenciesMeta: - webpack-dev-server: - optional: true - checksum: d475e8effa23eb7ff9a48b14d4de425989fd82f906ce71c210921cc3852327c22873be00c35e181a25a6bd03d424ae2b83e7f3b3f410ac7ee31b128ab4ac7713 - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:^0.8.0": - version: 0.8.3 - resolution: "@xmldom/xmldom@npm:0.8.3" - checksum: 087303060fc794f0ec8c0e9031362c1ae56eb1cf06b291cc178602462c072fb9f84657a430ae9c8c1b4c0d33549259e89ed14ebc86ca1a696f253bdd7f0dffcf - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec - languageName: node - linkType: hard - -"@yarnpkg/esbuild-plugin-pnp@npm:^3.0.0-rc.10": - version: 3.0.0-rc.15 - resolution: "@yarnpkg/esbuild-plugin-pnp@npm:3.0.0-rc.15" - dependencies: - tslib: ^2.4.0 - peerDependencies: - esbuild: ">=0.10.0" - checksum: 04da15355a99773b441742814ba4d0f3453a83df47aa07e215f167e156f109ab8e971489c8b1a4ddf3c79d568d35213f496ad52e97298228597e1aacc22680aa - languageName: node - linkType: hard - -"abbrev@npm:1, abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" - peerDependencies: - acorn: ^8 - checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.0.0": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn@npm:^8.0.0, acorn@npm:^8.5.0, acorn@npm:^8.7.1": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" - bin: - acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc - languageName: node - linkType: hard - -"address@npm:^1.0.1": - version: 1.2.1 - resolution: "address@npm:1.2.1" - checksum: e4c0f961464ccad09c3f7ed3a8d12f609354a87dd1ad379e43661e9684446fbf158be3edeef85e1590dfc6c88c0897c5908bc18f232eb86e43993a2ada5820fa - languageName: node - linkType: hard - -"agent-base@npm:5": - version: 5.1.1 - resolution: "agent-base@npm:5.1.1" - checksum: 61ae789f3019f1dc10e8cba6d3ae9826949299a4e54aaa1cfa2fa37c95a108e70e95423b963bb987d7891a703fd9a5c383a506f4901819f3ee56f3147c0aa8ab - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.0.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: ^3.1.3 - peerDependencies: - ajv: ^8.8.2 - checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.8.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef - languageName: node - linkType: hard - -"amd-name-resolver@npm:^1.3.1": - version: 1.3.1 - resolution: "amd-name-resolver@npm:1.3.1" - dependencies: - ensure-posix-path: ^1.0.1 - object-hash: ^1.3.1 - checksum: c48f68922f394078acaac97f1691a46dcb94fa3d5ee47b9a0c5b81bf66073005b75b5784f93ed6c1081b0afa92d41a5c581073960dbde9baa80b8abef4cccb2b - languageName: node - linkType: hard - -"amdefine@npm:>=0.0.4": - version: 1.0.1 - resolution: "amdefine@npm:1.0.1" - checksum: 9d4e15b94641643a9385b2841b4cb2bcf4e8e2f741ea4bd475c93ad7bab261ad4ed827a32e9c549b38b98759c4526c173ae4e6dde8caeb75ee5cebedc9863762 - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: ^4.1.0 - checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d - languageName: node - linkType: hard - -"ansi-escapes@npm:^3.2.0": - version: 3.2.0 - resolution: "ansi-escapes@npm:3.2.0" - checksum: 0f94695b677ea742f7f1eed961f7fd8d05670f744c6ad1f8f635362f6681dcfbc1575cb05b43abc7bb6d67e25a75fb8c7ea8f2a57330eb2c76b33f18cb2cef0a - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-html-community@npm:0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 - languageName: node - linkType: hard - -"ansi-html@npm:^0.0.7": - version: 0.0.7 - resolution: "ansi-html@npm:0.0.7" - bin: - ansi-html: ./bin/ansi-html - checksum: 9b839ce99650b4c2d83621d67d68622d27e7948b54f7a4386f2218a3997ee4e684e5a6e8d290880c3f3260e8d90c2613c59c7028f04992ad5c8d99d3a0fcc02c - languageName: node - linkType: hard - -"ansi-regex@npm:^2.0.0": - version: 2.1.1 - resolution: "ansi-regex@npm:2.1.1" - checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 - languageName: node - linkType: hard - -"ansi-regex@npm:^3.0.0": - version: 3.0.1 - resolution: "ansi-regex@npm:3.0.1" - checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc - languageName: node - linkType: hard - -"ansi-regex@npm:^4.1.0": - version: 4.1.1 - resolution: "ansi-regex@npm:4.1.1" - checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^2.2.1": - version: 2.2.1 - resolution: "ansi-styles@npm:2.2.1" - checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c - languageName: node - linkType: hard - -"ansi-styles@npm:^3.0.0, ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - -"ansi-to-html@npm:^0.6.11, ansi-to-html@npm:^0.6.6": - version: 0.6.15 - resolution: "ansi-to-html@npm:0.6.15" - dependencies: - entities: ^2.0.0 - bin: - ansi-to-html: bin/ansi-to-html - checksum: c899362a29b92c8ae075b72168b826f7c233875b475719304942f80695e0ce4a6812845021192da5fb0ac80b10209b4fae5aede42620a1b1b3d3b30f3ef77a86 - languageName: node - linkType: hard - -"ansicolors@npm:~0.2.1": - version: 0.2.1 - resolution: "ansicolors@npm:0.2.1" - checksum: 7120ca45a780cf17d786070874776637adcc107cf2bb9b38934f92d88cb5c3d16e1e7092708ba0f64f2031e6c10844c26e8a13d9e27f7b058c36ad8950cbfd02 - languageName: node - linkType: hard - -"any-promise@npm:^1.1.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de - languageName: node - linkType: hard - -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 - languageName: node - linkType: hard - -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"app-root-dir@npm:^1.0.2": - version: 1.0.2 - resolution: "app-root-dir@npm:1.0.2" - checksum: d4b1653fc60b6465b982bf5a88b12051ed2d807d70609386a809306e1c636496f53522d61fa30f9f98c71aaae34f34e1651889cf17d81a44e3dafd2859d495ad - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7, argparse@npm:~1.0.2": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - -"array-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "array-equal@npm:1.0.0" - checksum: 3f68045806357db9b2fa1ad583e42a659de030633118a0cd35ee4975cb20db3b9a3d36bbec9b5afe70011cf989eefd215c12fe0ce08c498f770859ca6e70688a - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-to-error@npm:^1.0.0": - version: 1.1.1 - resolution: "array-to-error@npm:1.1.1" - dependencies: - array-to-sentence: ^1.1.0 - checksum: c476c79249b4852f4ae6e2cff1463c3343986d1324e273c6404ccea1748a5b1900d05e774fc84f3f29c964aa4d36702d5c0426034856197da73557797c947e0f - languageName: node - linkType: hard - -"array-to-sentence@npm:^1.1.0": - version: 1.1.0 - resolution: "array-to-sentence@npm:1.1.0" - checksum: 7252ed7b93c6c5f07afcc67feef34b68f9b0b744f00fc7317e6d12f2c3320dc5417cedfc0c23497cc867ebdeca0573486ca8e6b09a515c5e6a90e860c668f2b6 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - -"asn1@npm:0.1.11": - version: 0.1.11 - resolution: "asn1@npm:0.1.11" - checksum: b2891b16457ec46b987fd1b6d40cf58a0ca2a742498146d77f0534b268cbf802ced9052f52b9f2bc78f84d1b7856cf9f98eb81889da87b0713a1065cf973b3d3 - languageName: node - linkType: hard - -"assert-plus@npm:^0.1.5": - version: 0.1.5 - resolution: "assert-plus@npm:0.1.5" - checksum: a6172bec8482763362b282217f3a2e2931a2b6bcd476c299da3e858b8dfe1f1cd2da0a838919492b06fd35c143d9aaaccb24973e4ac459f82e23b410baaeebbd - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - -"ast-types@npm:0.13.3": - version: 0.13.3 - resolution: "ast-types@npm:0.13.3" - checksum: 23d08bc589aacb787e22ac7efc086ebcc158e739c057dac74de409a97e26ec9c5bcb2d0709f5678bd5d90f67d93f62fba0e5fe98161a0a3a7534d55a155544d8 - languageName: node - linkType: hard - -"ast-types@npm:0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: ^2.0.1 - checksum: 8674a77307764979f0a0b2006b7223a4b789abffaa7acbf6a1132650a799252155170173a1ff6a7fb6897f59437fc955f2707bdfc391b0797750898876e6c9ed - languageName: node - linkType: hard - -"astring@npm:^1.8.0": - version: 1.8.3 - resolution: "astring@npm:1.8.3" - bin: - astring: bin/astring - checksum: 72fc85de7420ca6edeee15157fd65c5253a8cb1ced979ba66ecc439fa569f1c1cc242e4c0a9fc5a6380bf73fb5ec894dc65cf1dc0f3d1cab8c707b31df7daa1c - languageName: node - linkType: hard - -"async-disk-cache@npm:^1.2.1": - version: 1.3.5 - resolution: "async-disk-cache@npm:1.3.5" - dependencies: - debug: ^2.1.3 - heimdalljs: ^0.2.3 - istextorbinary: 2.1.0 - mkdirp: ^0.5.0 - rimraf: ^2.5.3 - rsvp: ^3.0.18 - username-sync: ^1.0.2 - checksum: 1844554469dc4a0abc855ad3c46296ccf105923186a662c47a85e5fa6a818a2693f2f941b903f2e28ab29895bd41596a81b42f670b71772a8134374f7459f51e - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - -"async-promise-queue@npm:^1.0.3, async-promise-queue@npm:^1.0.5": - version: 1.0.5 - resolution: "async-promise-queue@npm:1.0.5" - dependencies: - async: ^2.4.1 - debug: ^2.6.8 - checksum: 6f18b65e4bac8c12822d66c532aba6c8a8d81ee6e7d790bc7c399e882ff55b642a86379a58df9129db8560f57f76dea0af39b065f43568fb4bec4edf40e415a9 - languageName: node - linkType: hard - -"async@npm:^2.4.1, async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" - dependencies: - lodash: ^4.17.14 - checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 - languageName: node - linkType: hard - -"async@npm:^3.2.3": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - -"async@npm:~0.2.9": - version: 0.2.10 - resolution: "async@npm:0.2.10" - checksum: 9ea83419ba67dc4ecf42d4eb0d93ce0ac80a67cabb612f160ed096aef5d001e3184ec9e9be5d4dc39b2c51a34e2ae16f9b21d737068b0f615fccb4eea16d0138 - languageName: node - linkType: hard - -"async@npm:~0.9.0": - version: 0.9.2 - resolution: "async@npm:0.9.2" - checksum: 87dbf129292b8a6c32a4e07f43f462498162aa86f404a7e11f978dbfdf75cfb163c26833684bb07b9d436083cd604cbbf730a57bfcbe436c6ae1ed266cdc56bb - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"aws-sign2@npm:~0.5.0": - version: 0.5.0 - resolution: "aws-sign2@npm:0.5.0" - checksum: 554aad6b41b622304adc04382d179209e1f89420351623bfc0933c1b3d80b38144992b040b13707444d1c093a89f2ab62b2ea143d1c668d79a3cb7b22e304e03 - languageName: node - linkType: hard - -"axe-core@npm:^4.2.0": - version: 4.4.3 - resolution: "axe-core@npm:4.4.3" - checksum: c3ea000d9ace3ba0bc747c8feafc24b0de62a0f7d93021d0f77b19c73fca15341843510f6170da563d51535d6cfb7a46c5fc0ea36170549dbb44b170208450a2 - languageName: node - linkType: hard - -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - -"babel-loader@npm:^8.2.5": - version: 8.2.5 - resolution: "babel-loader@npm:8.2.5" - dependencies: - find-cache-dir: ^3.3.1 - loader-utils: ^2.0.0 - make-dir: ^3.1.0 - schema-utils: ^2.6.5 - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: a6605557885eabbc3250412405f2c63ca87287a95a439c643fdb47d5ea3d5326f72e43ab97be070316998cb685d5dfbc70927ce1abe8be7a6a4f5919287773fb - languageName: node - linkType: hard - -"babel-plugin-debug-macros@npm:^0.3.3, babel-plugin-debug-macros@npm:^0.3.4": - version: 0.3.4 - resolution: "babel-plugin-debug-macros@npm:0.3.4" - dependencies: - semver: ^5.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 77762b945a4d4a24d973b659938e4ff9fe485f08c4ad5c8459f184669d946f5883870a6f05a39f09773bcd0923162dcad5fbf8773cf38b3176d71ca415e9e869 - languageName: node - linkType: hard - -"babel-plugin-ember-data-packages-polyfill@npm:^0.1.2": - version: 0.1.2 - resolution: "babel-plugin-ember-data-packages-polyfill@npm:0.1.2" - dependencies: - "@ember-data/rfc395-data": ^0.0.4 - checksum: c61f9d70898db94feefea7a8cc958c52015fc23b17957eac2f360324b32b4d5b36aa7c2725102b44ee592e1e16b35fd8ee6cdfa949ffc0b11686387251226190 - languageName: node - linkType: hard - -"babel-plugin-ember-modules-api-polyfill@npm:^3.5.0": - version: 3.5.0 - resolution: "babel-plugin-ember-modules-api-polyfill@npm:3.5.0" - dependencies: - ember-rfc176-data: ^0.3.17 - checksum: 70a4926fe9c9a6553b877ecf09cd6a077e3c73ac13b5e269fee116c7dcaceaff28b317a7b68c16a9cb6d0470079fbbb3265c2cf755061341c9ccbde28c58d684 - languageName: node - linkType: hard - -"babel-plugin-filter-imports@npm:^4.0.0": - version: 4.0.0 - resolution: "babel-plugin-filter-imports@npm:4.0.0" - dependencies: - "@babel/types": ^7.7.2 - lodash: ^4.17.15 - checksum: 757522ac26c3f9f957a1c94c7eaca7abc2c493072b17f8af713589a2b56e1b8321d9c26ca5d0f1060e7be22f55c89a09bde771f8708f0f672d240eb2640fd9d1 - languageName: node - linkType: hard - -"babel-plugin-htmlbars-inline-precompile@npm:^3.2.0": - version: 3.2.0 - resolution: "babel-plugin-htmlbars-inline-precompile@npm:3.2.0" - checksum: 87793c975af74fd02cabc3a652a0694c15389bc24a1eecd4f2e78b6094be194a6d6e220f0a0489561ea123c052be86544ad96839bf7d78fb6867ffb16dc42ca0 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.0.0": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-module-resolver@npm:^3.2.0": - version: 3.2.0 - resolution: "babel-plugin-module-resolver@npm:3.2.0" - dependencies: - find-babel-config: ^1.1.0 - glob: ^7.1.2 - pkg-up: ^2.0.0 - reselect: ^3.0.1 - resolve: ^1.4.0 - checksum: ef4f7fdb6db97b8c5d7f70b85f54876a1bead35ee360b85a4153d02ce32eba4571afcc71ae11d43b2b6d4c5eeae865fc2127012f9534cfab07f998e2692671e5 - languageName: node - linkType: hard - -"babel-plugin-module-resolver@npm:^4.0.0": - version: 4.1.0 - resolution: "babel-plugin-module-resolver@npm:4.1.0" - dependencies: - find-babel-config: ^1.2.0 - glob: ^7.1.6 - pkg-up: ^3.1.0 - reselect: ^4.0.0 - resolve: ^1.13.1 - checksum: 3907fba21ca3c66a081e01fbd16bb09c84781749db16aa57805becc376bb5ee8dc373d4b209613e1453d30ea6c836d13073e9e7b6d239ff1806dd1763a9ab18f - languageName: node - linkType: hard - -"babel-plugin-named-exports-order@npm:^0.0.2": - version: 0.0.2 - resolution: "babel-plugin-named-exports-order@npm:0.0.2" - checksum: d918390a09c0148893ea93bdc9c4fc6a03447c688eaf40bed0f0682d036e985ecee830b90fec2ab149b8dc0cb3220a2c0ac5054e42626bdfe0b436b505b7ef22 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c - languageName: node - linkType: hard - -"backbone@npm:^1.1.2": - version: 1.4.1 - resolution: "backbone@npm:1.4.1" - dependencies: - underscore: ">=1.8.3" - checksum: 709bd7dde1bbd93eee9375ae9bcd33efa9f253a56f5bf22d67197d8e3c57574f93ab230dcbb750d224a0d9bc58a66ade1d4c6082b998b6c89e939c2e66b65832 - languageName: node - linkType: hard - -"bail@npm:^2.0.0": - version: 2.0.2 - resolution: "bail@npm:2.0.2" - checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base64id@npm:2.0.0, base64id@npm:~2.0.0": - version: 2.0.0 - resolution: "base64id@npm:2.0.0" - checksum: 581b1d37e6cf3738b7ccdd4d14fe2bfc5c238e696e2720ee6c44c183b838655842e22034e53ffd783f872a539915c51b0d4728a49c7cc678ac5a758e00d62168 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"basic-auth@npm:~2.0.1": - version: 2.0.1 - resolution: "basic-auth@npm:2.0.1" - dependencies: - safe-buffer: 5.1.2 - checksum: 3419b805d5dfc518f3a05dcf42aa53aa9ce820e50b6df5097f9e186322e1bc733c36722b624802cd37e791035aa73b828ed814d8362333d42d7f5cd04d7a5e48 - languageName: node - linkType: hard - -"batch-processor@npm:1.0.0": - version: 1.0.0 - resolution: "batch-processor@npm:1.0.0" - checksum: 5519b024f6cd0e95a543bb3edf0ae19e5badae0c32b30b41839b4469bbb1f91e14fc04bff3759cd9c2621aa9e16def48c938783e9027e7ec977fba62d537a468 - languageName: node - linkType: hard - -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" - dependencies: - open: ^7.0.3 - checksum: 3d1a945d125cbbc6e6a841bef7540435d77d5aa61fc4d345896f5f0b3780fcf9c7145373deaedf62d674a427b187ae973f4410884f9fea0c15f7f01f9dc339c7 - languageName: node - linkType: hard - -"big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"binaryextensions@npm:1 || 2": - version: 2.3.0 - resolution: "binaryextensions@npm:2.3.0" - checksum: e64e4658a611a753e0320b047a0045a063c6f2dd92d7a7fc06c25f7e72fb3700dabcf328e319c79f1038e6d0ea46edb0644686603d5f36bff3350d0e7eb198a9 - languageName: node - linkType: hard - -"blank-object@npm:^1.0.1": - version: 1.0.2 - resolution: "blank-object@npm:1.0.2" - checksum: 0d9aff57f4438c3dce6513ac77874fb74f3419e3e8384d4a520b9a3e9cfc8bee6be0f39f77c079da4e6e3fd8e347c125fb618816e730c34804c3092e5c3c5404 - languageName: node - linkType: hard - -"bluebird@npm:^3.4.6, bluebird@npm:^3.7.2": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef - languageName: node - linkType: hard - -"body-parser@npm:1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 - languageName: node - linkType: hard - -"body@npm:^5.1.0": - version: 5.1.0 - resolution: "body@npm:5.1.0" - dependencies: - continuable-cache: ^0.3.1 - error: ^7.0.0 - raw-body: ~1.1.0 - safe-json-parse: ~1.0.1 - checksum: 58a5a46b6de80c82ee2f6e00bdc0084be1697d50e47cfa0d53ff6daf70b0e5ec20359c134d41710d0fa8046ecd67e06128c134c821f090e40a31ed452a9b6b7f - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"boom@npm:0.4.x": - version: 0.4.2 - resolution: "boom@npm:0.4.2" - dependencies: - hoek: 0.9.x - checksum: 127816e6809b382a2d7bf558cac59de9c9b0ce273ea38bbfab913d4b590ee8ade089b23db985054842e4a26de3836e026f5a8899e2e0e645da09e6ab4e401807 - languageName: node - linkType: hard - -"bower-config@npm:^1.4.3": - version: 1.4.3 - resolution: "bower-config@npm:1.4.3" - dependencies: - graceful-fs: ^4.1.3 - minimist: ^0.2.1 - mout: ^1.0.0 - osenv: ^0.1.3 - untildify: ^2.1.0 - wordwrap: ^0.0.3 - checksum: 195d829d32b99a6c88d58f0e77b3aad2d32c5ecb913e6a078be5a540f0fc3d34888c8c2e3d7cf268e389711a7b231ef4397ac3cd02053fdd115db58a5c8b19a3 - languageName: node - linkType: hard - -"bower-endpoint-parser@npm:0.2.2": - version: 0.2.2 - resolution: "bower-endpoint-parser@npm:0.2.2" - checksum: e5752ae90a7950da4aa32448105fd50e050cf47042f89db79bbaf64e0cf4342b39dae450353848ea8a766c969e7b760afb4de85d2e808eedd7d1340b4251cda0 - languageName: node - linkType: hard - -"boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: ^3.0.0 - camelcase: ^6.2.0 - chalk: ^4.1.0 - cli-boxes: ^2.2.1 - string-width: ^4.2.2 - type-fest: ^0.20.2 - widest-line: ^3.1.0 - wrap-ansi: ^7.0.0 - checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 - languageName: node - linkType: hard - -"boxen@npm:^7.0.0": - version: 7.0.0 - resolution: "boxen@npm:7.0.0" - dependencies: - ansi-align: ^3.0.1 - camelcase: ^7.0.0 - chalk: ^5.0.1 - cli-boxes: ^3.0.0 - string-width: ^5.1.2 - type-fest: ^2.13.0 - widest-line: ^4.0.1 - wrap-ansi: ^8.0.1 - checksum: b917cf7a168ef3149635a8c02d5c9717d66182348bd27038d85328ad12655151e3324db0f2815253846c33e5f0ddf28b6cd52d56a12b9f88617b7f8f722b946a - languageName: node - linkType: hard - -"bplist-parser@npm:^0.2.0": - version: 0.2.0 - resolution: "bplist-parser@npm:0.2.0" - dependencies: - big-integer: ^1.6.44 - checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"broccoli-amd-funnel@npm:^2.0.1": - version: 2.0.1 - resolution: "broccoli-amd-funnel@npm:2.0.1" - dependencies: - broccoli-plugin: ^1.3.0 - symlink-or-copy: ^1.2.0 - checksum: 1f9327d1291fbdd00366da710091fc3c4d1c3f5a5c697cc2eb9e1f29d8b906ba9eb93ab612c9c1367b91d64b9a2f7a446cfa8a1e6faf4ce05315ff0f2ebdadf6 - languageName: node - linkType: hard - -"broccoli-asset-rev@npm:^3.0.0": - version: 3.0.0 - resolution: "broccoli-asset-rev@npm:3.0.0" - dependencies: - broccoli-asset-rewrite: ^2.0.0 - broccoli-filter: ^1.2.2 - broccoli-persistent-filter: ^1.4.3 - json-stable-stringify: ^1.0.0 - minimatch: ^3.0.4 - rsvp: ^3.0.6 - checksum: 92822588babb5d82d3a09ce6e3646f59400566138c3a3824c93cdff568cbf74a318900a41be64bb39b322ec8442099ccc11932f335e877637823c1bf0a6de0d6 - languageName: node - linkType: hard - -"broccoli-asset-rewrite@npm:^2.0.0": - version: 2.0.0 - resolution: "broccoli-asset-rewrite@npm:2.0.0" - dependencies: - broccoli-filter: ^1.2.3 - checksum: 05a8d882ca6e3f2fd073650acb65e0f2c0945529c09a47b1b220455a0a67099e0d5bed7a0c52b7aaee40ad5f07f8e6db20b641aceb5330256b801fe1b8e39952 - languageName: node - linkType: hard - -"broccoli-babel-transpiler@npm:^7.8.0": - version: 7.8.1 - resolution: "broccoli-babel-transpiler@npm:7.8.1" - dependencies: - "@babel/core": ^7.12.0 - "@babel/polyfill": ^7.11.5 - broccoli-funnel: ^2.0.2 - broccoli-merge-trees: ^3.0.2 - broccoli-persistent-filter: ^2.2.1 - clone: ^2.1.2 - hash-for-dep: ^1.4.7 - heimdalljs: ^0.2.1 - heimdalljs-logger: ^0.1.9 - json-stable-stringify: ^1.0.1 - rsvp: ^4.8.4 - workerpool: ^3.1.1 - checksum: cd1d798e38dfc285082b1b114017639b1951f529436dd47c7b56d995ad5adb897084dadaf6da94cf2b7af6cc118099f1b5411b58b5ec72f5247bd9e820ac9ff6 - languageName: node - linkType: hard - -"broccoli-builder@npm:^0.18.14": - version: 0.18.14 - resolution: "broccoli-builder@npm:0.18.14" - dependencies: - broccoli-node-info: ^1.1.0 - heimdalljs: ^0.2.0 - promise-map-series: ^0.2.1 - quick-temp: ^0.1.2 - rimraf: ^2.2.8 - rsvp: ^3.0.17 - silent-error: ^1.0.1 - checksum: 06721fdc65f97ec331126d3fca329ac287c879cffd748b4c536acca16376995d3200d26af22b9a4fef464476202f83bb3a9dbdcdec8939914600ee1e8760f995 - languageName: node - linkType: hard - -"broccoli-caching-writer@npm:^2.2.0": - version: 2.3.1 - resolution: "broccoli-caching-writer@npm:2.3.1" - dependencies: - broccoli-kitchen-sink-helpers: ^0.2.5 - broccoli-plugin: 1.1.0 - debug: ^2.1.1 - rimraf: ^2.2.8 - rsvp: ^3.0.17 - walk-sync: ^0.2.5 - checksum: 3ee20d818f1a833c41499fd2d7abc09c75951a4ea7522d6ec1cd853351a03a5cfd283e50efd068705104e3825401165dff3438fa723e5b6760072a280c42fa61 - languageName: node - linkType: hard - -"broccoli-caching-writer@npm:^3.0.3": - version: 3.0.3 - resolution: "broccoli-caching-writer@npm:3.0.3" - dependencies: - broccoli-kitchen-sink-helpers: ^0.3.1 - broccoli-plugin: ^1.2.1 - debug: ^2.1.1 - rimraf: ^2.2.8 - rsvp: ^3.0.17 - walk-sync: ^0.3.0 - checksum: 30b002bb2050b0f51ece58e088b26212784779205184021acf5fc807e2619820daa95b56a390da10de3b49defa76f525f095b980c009fb4c7cb30d3d18875117 - languageName: node - linkType: hard - -"broccoli-clean-css@npm:^1.1.0": - version: 1.1.0 - resolution: "broccoli-clean-css@npm:1.1.0" - dependencies: - broccoli-persistent-filter: ^1.1.6 - clean-css-promise: ^0.1.0 - inline-source-map-comment: ^1.0.5 - json-stable-stringify: ^1.0.0 - checksum: 7b1739c9e12ccbf9e86b0f98be97b2c2f0ef8ac831e87f7e478ca4dc8fce3e93db4e625ad53ddb48bab4efbe8d0d2304ee77bdd015aab84d71250d9fb8ff44c7 - languageName: node - linkType: hard - -"broccoli-concat@npm:^4.2.4": - version: 4.2.5 - resolution: "broccoli-concat@npm:4.2.5" - dependencies: - broccoli-debug: ^0.6.5 - broccoli-kitchen-sink-helpers: ^0.3.1 - broccoli-plugin: ^4.0.2 - ensure-posix-path: ^1.0.2 - fast-sourcemap-concat: ^2.1.0 - find-index: ^1.1.0 - fs-extra: ^8.1.0 - fs-tree-diff: ^2.0.1 - lodash.merge: ^4.6.2 - lodash.omit: ^4.1.0 - lodash.uniq: ^4.2.0 - checksum: a8eb7394863d7ba3dd9b8011ef37ef746182bea42c50c61bc5cf25767bcd0edec1dac9c37dcf8ba34d24568fdc3e69ce88b414316eedbbecf9deae13f349cc7e - languageName: node - linkType: hard - -"broccoli-config-loader@npm:^1.0.1": - version: 1.0.1 - resolution: "broccoli-config-loader@npm:1.0.1" - dependencies: - broccoli-caching-writer: ^3.0.3 - checksum: 92543dee0b8e3da15533262190a34287c53dad913190d14306d706ef8f2594106c240fe2c4eff026af0730e79dd77990271bf74cfd37051040b7dc177cea49e4 - languageName: node - linkType: hard - -"broccoli-config-replace@npm:^1.1.2": - version: 1.1.2 - resolution: "broccoli-config-replace@npm:1.1.2" - dependencies: - broccoli-kitchen-sink-helpers: ^0.3.1 - broccoli-plugin: ^1.2.0 - debug: ^2.2.0 - fs-extra: ^0.24.0 - checksum: 578471fb135e00d914334eaa8e1305ba2183f6be26833eff941c3c30bd002d157054a45ed16afb96784c25aa2a3f5bad73cd9c21a005acb61be7a960739b3725 - languageName: node - linkType: hard - -"broccoli-debug@npm:^0.6.4, broccoli-debug@npm:^0.6.5": - version: 0.6.5 - resolution: "broccoli-debug@npm:0.6.5" - dependencies: - broccoli-plugin: ^1.2.1 - fs-tree-diff: ^0.5.2 - heimdalljs: ^0.2.1 - heimdalljs-logger: ^0.1.7 - symlink-or-copy: ^1.1.8 - tree-sync: ^1.2.2 - checksum: 03cd34dea7cc6c1cb4d2b0aa564449e44bf4a0a874dc8ca28ffc22bc7ab062ccbe8bb08a7d4e44639f532f392d4a56913a372e75f1bde7763b20898da852aeba - languageName: node - linkType: hard - -"broccoli-file-creator@npm:^1.1.1": - version: 1.2.0 - resolution: "broccoli-file-creator@npm:1.2.0" - dependencies: - broccoli-plugin: ^1.1.0 - mkdirp: ^0.5.1 - checksum: 591be2b9a9e2aadd0f5c07fb85a2125eebf29a50ca8dbed4c67f8b75d7e5a296f7740f41e1a441d3861bb2b298a76201995ca2df59c34e1c641521e4f3555d50 - languageName: node - linkType: hard - -"broccoli-filter@npm:^1.2.2, broccoli-filter@npm:^1.2.3": - version: 1.3.0 - resolution: "broccoli-filter@npm:1.3.0" - dependencies: - broccoli-kitchen-sink-helpers: ^0.3.1 - broccoli-plugin: ^1.0.0 - copy-dereference: ^1.0.0 - debug: ^2.2.0 - mkdirp: ^0.5.1 - promise-map-series: ^0.2.1 - rsvp: ^3.0.18 - symlink-or-copy: ^1.0.1 - walk-sync: ^0.3.1 - checksum: 4908af4844c166adfd61def33c21a152870e7cc319fa16d50caa906ad68c46e5abbc6fb9c3373e3b7bc494473d4972461ef0a0fa0d2ae82c0f0d44ec0fe3cfc5 - languageName: node - linkType: hard - -"broccoli-funnel-reducer@npm:^1.0.0": - version: 1.0.0 - resolution: "broccoli-funnel-reducer@npm:1.0.0" - checksum: 3a924dc63136168325ea202d05139ad238290eff649cb6a2570f3faeccbbf0d904792525100fc41da34a1fd0946d951bdb247ecd1e4d7d99f29f82583b94ce7b - languageName: node - linkType: hard - -"broccoli-funnel@npm:^2.0.0, broccoli-funnel@npm:^2.0.1, broccoli-funnel@npm:^2.0.2": - version: 2.0.2 - resolution: "broccoli-funnel@npm:2.0.2" - dependencies: - array-equal: ^1.0.0 - blank-object: ^1.0.1 - broccoli-plugin: ^1.3.0 - debug: ^2.2.0 - fast-ordered-set: ^1.0.0 - fs-tree-diff: ^0.5.3 - heimdalljs: ^0.2.0 - minimatch: ^3.0.0 - mkdirp: ^0.5.0 - path-posix: ^1.0.0 - rimraf: ^2.4.3 - symlink-or-copy: ^1.0.0 - walk-sync: ^0.3.1 - checksum: e039c07f7a69d538a2a60e66167ccff8e00e14f053e6e0e5ce6d446c5a6d351e55cc9be57aad1a9e9d684b444bea81cd2eade387c5764fa9355b9f30fcc4bd48 - languageName: node - linkType: hard - -"broccoli-kitchen-sink-helpers@npm:^0.2.5": - version: 0.2.9 - resolution: "broccoli-kitchen-sink-helpers@npm:0.2.9" - dependencies: - glob: ^5.0.10 - mkdirp: ^0.5.1 - checksum: cf67d77f4ee028c90c4917626eda636b736a3fdd11f84ba2c9b00708222c8878909c1b30d824b4b9d946c6c975b6e3bd08cc218ed3cfbe6f9436808e9023a941 - languageName: node - linkType: hard - -"broccoli-kitchen-sink-helpers@npm:^0.3.1": - version: 0.3.1 - resolution: "broccoli-kitchen-sink-helpers@npm:0.3.1" - dependencies: - glob: ^5.0.10 - mkdirp: ^0.5.1 - checksum: c3af1f4a902ab69fa6e576430c2829cceaa2c34e6f6ff68eb5f6305c10835123b4644bfcb036452c7222d6853c720bf83ec1e5e125db7915d849c7968d0e652e - languageName: node - linkType: hard - -"broccoli-merge-trees@npm:^2.0.0": - version: 2.0.1 - resolution: "broccoli-merge-trees@npm:2.0.1" - dependencies: - broccoli-plugin: ^1.3.0 - merge-trees: ^1.0.1 - checksum: cf58d11761a3a362d80634e0f3b1b5fdb87572c9e54740fbc24803d79b44f2246b12b76aecb2f783d92c0cef55f7a3b7eb5314bc463fd94cb6d29f1b370a4289 - languageName: node - linkType: hard - -"broccoli-merge-trees@npm:^3.0.0, broccoli-merge-trees@npm:^3.0.1, broccoli-merge-trees@npm:^3.0.2": - version: 3.0.2 - resolution: "broccoli-merge-trees@npm:3.0.2" - dependencies: - broccoli-plugin: ^1.3.0 - merge-trees: ^2.0.0 - checksum: 4239955a72f9e9547d3b8af27784e7b4931d88bc83c80b48eaae5819a839e3ab3973ccd459502459fcbc9b69749bbc89e9f06e0025fe5483b1704c6dbe0dd61c - languageName: node - linkType: hard - -"broccoli-merge-trees@npm:^4.2.0": - version: 4.2.0 - resolution: "broccoli-merge-trees@npm:4.2.0" - dependencies: - broccoli-plugin: ^4.0.2 - merge-trees: ^2.0.0 - checksum: 8e5371bf41d8b95dd3d600a35d159e185fe0ce0a558cb7b35cdfbb0e3cf2941ee92745dafa7452be0034929459c84acdb55bf762d8c2ca5e59fd124fb219e559 - languageName: node - linkType: hard - -"broccoli-middleware@npm:^2.1.1": - version: 2.1.1 - resolution: "broccoli-middleware@npm:2.1.1" - dependencies: - ansi-html: ^0.0.7 - handlebars: ^4.0.4 - has-ansi: ^3.0.0 - mime-types: ^2.1.18 - checksum: d32e8d871869737d554bb0913491f2cf80b975eac43f7c1cde1334468d4610830b6a4f2d75a310b3d113d0e513e3b8b966b5d58789a9d396b52a40d279587a1f - languageName: node - linkType: hard - -"broccoli-node-api@npm:^1.6.0, broccoli-node-api@npm:^1.7.0": - version: 1.7.0 - resolution: "broccoli-node-api@npm:1.7.0" - checksum: 37b83c81549294d0c843bb4c07ef5330a5493f5e8204e4f7eda716c4f5175f5ccf0f10f0957a18321324b5ff3d4fe2a2cd6cd8e598d6f9e7986c45b8dd200b99 - languageName: node - linkType: hard - -"broccoli-node-info@npm:^1.1.0": - version: 1.1.0 - resolution: "broccoli-node-info@npm:1.1.0" - checksum: f3e552f3e2ba05d9bb73f5d9ba0e27961851744e3a1a70de3f712598746e6214a7b8b8a7ceafc8235f81973a2e9dca58e022a9f150b4c5963aed5bf90d496b96 - languageName: node - linkType: hard - -"broccoli-node-info@npm:^2.1.0": - version: 2.2.0 - resolution: "broccoli-node-info@npm:2.2.0" - checksum: e5d68ebb35aa4406dc7dd9e90f15f68fb58c2026696bda2a67045f993261e856fbfec35b3d424c835af7873bd7de00f15630a5b2626c8c0929365035ade9cddd - languageName: node - linkType: hard - -"broccoli-output-wrapper@npm:^2.0.0": - version: 2.0.0 - resolution: "broccoli-output-wrapper@npm:2.0.0" - dependencies: - heimdalljs-logger: ^0.1.10 - checksum: 9e2abb307e7d852827548fecfb2b5daa6efea70bcc23d39f1ad51494477a38d8049a3592f7a0e18aa20cb9bcad7b49389ec5052f3a368cbcdb94a4dbe0650381 - languageName: node - linkType: hard - -"broccoli-output-wrapper@npm:^3.2.5": - version: 3.2.5 - resolution: "broccoli-output-wrapper@npm:3.2.5" - dependencies: - fs-extra: ^8.1.0 - heimdalljs-logger: ^0.1.10 - symlink-or-copy: ^1.2.0 - checksum: c23d875544bfdd4cf0767fb9080a6a16bf938497a1a6601fe9ea2e0e5cce26f1a4f4ab81f80e50376b0d86b622cef848d0ffba3f5fa4f2e3c4b531539383eddb - languageName: node - linkType: hard - -"broccoli-persistent-filter@npm:^1.1.6, broccoli-persistent-filter@npm:^1.4.3": - version: 1.4.6 - resolution: "broccoli-persistent-filter@npm:1.4.6" - dependencies: - async-disk-cache: ^1.2.1 - async-promise-queue: ^1.0.3 - broccoli-plugin: ^1.0.0 - fs-tree-diff: ^0.5.2 - hash-for-dep: ^1.0.2 - heimdalljs: ^0.2.1 - heimdalljs-logger: ^0.1.7 - mkdirp: ^0.5.1 - promise-map-series: ^0.2.1 - rimraf: ^2.6.1 - rsvp: ^3.0.18 - symlink-or-copy: ^1.0.1 - walk-sync: ^0.3.1 - checksum: 42adb04ba99ccbd943299d37d40fc87f5c9629ec98d0774c43695590ec7ad9392ba6c5bef5e089e1bc208d49de820d13aa46dc0d80d71444f00f9b0df9811df9 - languageName: node - linkType: hard - -"broccoli-persistent-filter@npm:^2.2.1, broccoli-persistent-filter@npm:^2.3.0, broccoli-persistent-filter@npm:^2.3.1": - version: 2.3.1 - resolution: "broccoli-persistent-filter@npm:2.3.1" - dependencies: - async-disk-cache: ^1.2.1 - async-promise-queue: ^1.0.3 - broccoli-plugin: ^1.0.0 - fs-tree-diff: ^2.0.0 - hash-for-dep: ^1.5.0 - heimdalljs: ^0.2.1 - heimdalljs-logger: ^0.1.7 - mkdirp: ^0.5.1 - promise-map-series: ^0.2.1 - rimraf: ^2.6.1 - rsvp: ^4.7.0 - symlink-or-copy: ^1.0.1 - sync-disk-cache: ^1.3.3 - walk-sync: ^1.0.0 - checksum: 35228d15267f6b08e7e572698c6ef2fc4623701f97604a6bce4826c0dbc3074e743cf583f56d014051d64d3cf72f26dd29f26f9ff8e79f907d762fad9481da36 - languageName: node - linkType: hard - -"broccoli-plugin@npm:1.1.0": - version: 1.1.0 - resolution: "broccoli-plugin@npm:1.1.0" - dependencies: - promise-map-series: ^0.2.1 - quick-temp: ^0.1.3 - rimraf: ^2.3.4 - symlink-or-copy: ^1.0.1 - checksum: 3f660605a82e9661378d64cfaa079ef549e3c389e12ce8114329e0c5268e68e07c8e3c9fe1c7762c30cfd639aa7c5f484c8e134ddffb49f0b04113818a06a5d8 - languageName: node - linkType: hard - -"broccoli-plugin@npm:^1.0.0, broccoli-plugin@npm:^1.1.0, broccoli-plugin@npm:^1.2.0, broccoli-plugin@npm:^1.2.1, broccoli-plugin@npm:^1.3.0": - version: 1.3.1 - resolution: "broccoli-plugin@npm:1.3.1" - dependencies: - promise-map-series: ^0.2.1 - quick-temp: ^0.1.3 - rimraf: ^2.3.4 - symlink-or-copy: ^1.1.8 - checksum: 53ddfa2f419feb1b30e2b16d29d7b0877ac56ec97a16b07075ce6ec065d4382e20e94ce992a836942f24aee12a1fbff4f93f711d470e5614a786b4b29d0e215d - languageName: node - linkType: hard - -"broccoli-plugin@npm:^2.1.0": - version: 2.1.0 - resolution: "broccoli-plugin@npm:2.1.0" - dependencies: - promise-map-series: ^0.2.1 - quick-temp: ^0.1.3 - rimraf: ^2.3.4 - symlink-or-copy: ^1.1.8 - checksum: c5481d7d3a0d2f481bdaa7d18cbf7f88edc40ae363eb28c97856955991f0c44671433bb925f841efcce7e32a5eebc26c48f8ca361e8ce2725aae2bc86ba5b948 - languageName: node - linkType: hard - -"broccoli-plugin@npm:^3.1.0": - version: 3.1.0 - resolution: "broccoli-plugin@npm:3.1.0" - dependencies: - broccoli-node-api: ^1.6.0 - broccoli-output-wrapper: ^2.0.0 - fs-merger: ^3.0.1 - promise-map-series: ^0.2.1 - quick-temp: ^0.1.3 - rimraf: ^2.3.4 - symlink-or-copy: ^1.1.8 - checksum: 6ae0eecb8f894de66445a8d7000a5f7fc6f0c07250ee788706ef7a6f9846c10e473be120999353b0ed89a0e60f96332586da01f40325d5df7d79e02a9f01d154 - languageName: node - linkType: hard - -"broccoli-plugin@npm:^4.0.2": - version: 4.0.7 - resolution: "broccoli-plugin@npm:4.0.7" - dependencies: - broccoli-node-api: ^1.7.0 - broccoli-output-wrapper: ^3.2.5 - fs-merger: ^3.2.1 - promise-map-series: ^0.3.0 - quick-temp: ^0.1.8 - rimraf: ^3.0.2 - symlink-or-copy: ^1.3.1 - checksum: 49d6a55ebfe1880e73956dc8bf23104ad81c1272d4a06755823e6e1eec5255583d2913de99427b3e0a620e3b56178fdd8ea03c832b7452f0440c166044aa555c - languageName: node - linkType: hard - -"broccoli-slow-trees@npm:^3.0.1, broccoli-slow-trees@npm:^3.1.0": - version: 3.1.0 - resolution: "broccoli-slow-trees@npm:3.1.0" - dependencies: - heimdalljs: ^0.2.1 - checksum: 13c03939279e547484ee404a01a2f026eb518ddfdf7bc5376b5b7fa1c22be6fea2a1bb5aaa4d1d7bbc4fc0d3cab1083ae419d230bde90553e424957197cf9296 - languageName: node - linkType: hard - -"broccoli-source@npm:^2.1.2": - version: 2.1.2 - resolution: "broccoli-source@npm:2.1.2" - checksum: b8dfacce8a442a7a6af6f127663830387c88e4584be02854815959422598610557d3d8fc1f01c93f3f1b0afa7ffd8f151fead4377fb3e711adecd0d0c0e39e67 - languageName: node - linkType: hard - -"broccoli-source@npm:^3.0.0": - version: 3.0.1 - resolution: "broccoli-source@npm:3.0.1" - dependencies: - broccoli-node-api: ^1.6.0 - checksum: e47d16d269b616f12d525629d85e71e2d91b2daaf2e59a367c81f8db8cc324d7c9259de43dfa5130358ba6333fd0b620016895947dbc969c92d2ea94c2b755ea - languageName: node - linkType: hard - -"broccoli-sri-hash@npm:^2.1.0": - version: 2.1.2 - resolution: "broccoli-sri-hash@npm:2.1.2" - dependencies: - broccoli-caching-writer: ^2.2.0 - mkdirp: ^0.5.1 - rsvp: ^3.1.0 - sri-toolbox: ^0.2.0 - symlink-or-copy: ^1.0.1 - checksum: af64a10b40004a9e2f538c2a892d0cb010f42f5554af6af14ad844a25c1e9eb3d34a30fc81b5b22de06640dc0c8c95fbb74ee56a0f038218767cdf2c18d7a5fd - languageName: node - linkType: hard - -"broccoli-stew@npm:^3.0.0": - version: 3.0.0 - resolution: "broccoli-stew@npm:3.0.0" - dependencies: - broccoli-debug: ^0.6.5 - broccoli-funnel: ^2.0.0 - broccoli-merge-trees: ^3.0.1 - broccoli-persistent-filter: ^2.3.0 - broccoli-plugin: ^2.1.0 - chalk: ^2.4.1 - debug: ^4.1.1 - ensure-posix-path: ^1.0.1 - fs-extra: ^8.0.1 - minimatch: ^3.0.4 - resolve: ^1.11.1 - rsvp: ^4.8.5 - symlink-or-copy: ^1.2.0 - walk-sync: ^1.1.3 - checksum: c5fc1f024d0ccc9a31b4fd9a70e34c0320b487ec86cfeaf66b6d7a06936b352fd65be59dccc200b9ffc17e528e6f9a5b2525b59169d17cd3e36daf8ce5f1deed - languageName: node - linkType: hard - -"broccoli-uglify-sourcemap@npm:^3.1.0": - version: 3.2.0 - resolution: "broccoli-uglify-sourcemap@npm:3.2.0" - dependencies: - async-promise-queue: ^1.0.5 - broccoli-plugin: ^1.2.1 - debug: ^4.1.0 - lodash.defaultsdeep: ^4.6.1 - matcher-collection: ^2.0.0 - mkdirp: ^0.5.0 - source-map-url: ^0.4.0 - symlink-or-copy: ^1.0.1 - terser: ^4.3.9 - walk-sync: ^1.1.3 - workerpool: ^5.0.1 - checksum: be2c06a4ee14a78c8fbb0afea00ede69c63933b34d38c855454e27b344fa02b03888cb5e2a15ddd344d3dec420145cfec94ddab3d4a3c957d6f67e5ebee8577d - languageName: node - linkType: hard - -"broccoli@npm:^3.5.0": - version: 3.5.2 - resolution: "broccoli@npm:3.5.2" - dependencies: - "@types/chai": ^4.2.9 - "@types/chai-as-promised": ^7.1.2 - "@types/express": ^4.17.2 - ansi-html: ^0.0.7 - broccoli-node-info: ^2.1.0 - broccoli-slow-trees: ^3.0.1 - broccoli-source: ^3.0.0 - commander: ^4.1.1 - connect: ^3.6.6 - console-ui: ^3.0.4 - esm: ^3.2.4 - findup-sync: ^4.0.0 - handlebars: ^4.7.3 - heimdalljs: ^0.2.6 - heimdalljs-logger: ^0.1.9 - https: ^1.0.0 - mime-types: ^2.1.26 - resolve-path: ^1.4.0 - rimraf: ^3.0.2 - sane: ^4.0.0 - tmp: ^0.0.33 - tree-sync: ^2.0.0 - underscore.string: ^3.2.2 - watch-detector: ^1.0.0 - checksum: 765fa5c409d0d14a7429472989f311b51c46fb15b0fa0a8eb8b9be8cb3b957bf253172d61fd3c202597db573d40f8b5c7557e8416a93b6c99ce0b46962d46ccd - languageName: node - linkType: hard - -"browser-assert@npm:^1.2.1": - version: 1.2.1 - resolution: "browser-assert@npm:1.2.1" - checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 - languageName: node - linkType: hard - -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" - dependencies: - pako: ~1.0.5 - checksum: 5cd9d6a665190fedb4a97dfbad8dabc8698d8a507298a03f42c734e96d58ca35d3c7d4085e283440bbca1cd1938cff85031728079bedb3345310c58ab1ec92d6 - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" - dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 - bin: - browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"builtins@npm:^1.0.3": - version: 1.0.3 - resolution: "builtins@npm:1.0.3" - checksum: 47ce94f7eee0e644969da1f1a28e5f29bd2e48b25b2bbb61164c345881086e29464ccb1fb88dbc155ea26e8b1f5fc8a923b26c8c1ed0935b67b644d410674513 - languageName: node - linkType: hard - -"bytes@npm:1": - version: 1.0.0 - resolution: "bytes@npm:1.0.0" - checksum: 6e475440d7e32971611d2bc592695fee484ee91ca1cd49f99c855560131f71670d3d185210f6cdd1704f12281f0cfcee5cb1c1f6788cb2f676b410464b7d6885 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.1": - version: 10.2.2 - resolution: "cacheable-request@npm:10.2.2" - dependencies: - "@types/http-cache-semantics": ^4.0.1 - get-stream: ^6.0.1 - http-cache-semantics: ^4.1.0 - keyv: ^4.5.0 - mimic-response: ^4.0.0 - normalize-url: ^7.2.0 - responselike: ^3.0.0 - checksum: 15e8ab68debc7a82ff21607f9b6edfdb3a97fdee402efeb183ae605c5ef47d0236e3c4528347f25afcdcaf2b3186f0f2f00a9d4014a323148931337e7ef1edc3 - languageName: node - linkType: hard - -"calculate-cache-key-for-tree@npm:^2.0.0": - version: 2.0.0 - resolution: "calculate-cache-key-for-tree@npm:2.0.0" - dependencies: - json-stable-stringify: ^1.0.1 - checksum: 8b7434417be8ba7efad7b783d0e31d757ff26e1edb7586ccd829347cc7860b738c1595194f7cc63b1b23975c07845d53023ded6a160d22e27898f695d2cf3c63 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0, callsites@npm:^3.1.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"camelcase@npm:^7.0.0": - version: 7.0.0 - resolution: "camelcase@npm:7.0.0" - checksum: 162d59607b3b46e910af151348d5e40af579048a5d07f3c06370b096ca0d42ba4a88bd92cf4e3482645ba1ffdd6f744d8273c1b9594e493fc10883d54adf7cbe - languageName: node - linkType: hard - -"can-symlink@npm:^1.0.0": - version: 1.0.0 - resolution: "can-symlink@npm:1.0.0" - dependencies: - tmp: 0.0.28 - bin: - can-symlink: ./can-symlink.js - checksum: 02bc43799685ab0fe42af8a7b697ef3918baaf77b1fff0417392b933cfb6bddb8cf93b3afd83983bea21922c9312c6047a58718f5a30d1232ce09540b52f78a4 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001423 - resolution: "caniuse-lite@npm:1.0.30001423" - checksum: fe443f323f5dc6a858ef7d7deddb93db5e5f9a35e22970c4a65c4ef793bb696c1e2f038df572722d9edf29021e43ed16f5131faafde783563bd0d9eccf486592 - languageName: node - linkType: hard - -"capture-exit@npm:^2.0.0": - version: 2.0.0 - resolution: "capture-exit@npm:2.0.0" - dependencies: - rsvp: ^4.8.4 - checksum: 0b9f10daca09e521da9599f34c8e7af14ad879c336e2bdeb19955b375398ae1c5bcc91ac9f2429944343057ee9ed028b1b2fb28816c384e0e55d70c439b226f4 - languageName: node - linkType: hard - -"cardinal@npm:^1.0.0": - version: 1.0.0 - resolution: "cardinal@npm:1.0.0" - dependencies: - ansicolors: ~0.2.1 - redeyed: ~1.0.0 - bin: - cdl: ./bin/cdl.js - checksum: c77852b228c2be38cfa66b43ec3bfaee021954f621328def00e2fba364160bbbafadbad560485da29d6deb87042268d7a23f91a460058308a14c5d18a329ab57 - languageName: node - linkType: hard - -"case-sensitive-paths-webpack-plugin@npm:^2.4.0": - version: 2.4.0 - resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: bcf469446eeee9ac0046e30860074ebb9aa4803aab9140e6bb72b600b23b1d70635690754be4504ce35cd99cdf05226bee8d894ba362a3f5485d5f6310fc6d02 - languageName: node - linkType: hard - -"ccount@npm:^2.0.0": - version: 2.0.1 - resolution: "ccount@npm:2.0.1" - checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 - languageName: node - linkType: hard - -"chalk@npm:^1.0.0": - version: 1.1.3 - resolution: "chalk@npm:1.1.3" - dependencies: - ansi-styles: ^2.2.1 - escape-string-regexp: ^1.0.2 - has-ansi: ^2.0.0 - strip-ansi: ^3.0.0 - supports-color: ^2.0.0 - checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.1.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"chalk@npm:^5.0.1": - version: 5.1.2 - resolution: "chalk@npm:5.1.2" - checksum: 804d7485e33531abe45b14e91026ceb5615974a8c04259ab0806f214a7666f6ea03e39ab124f7d5a0c78a83fda89005f236db3c5f10c2abe9ae875f7aa56bcb5 - languageName: node - linkType: hard - -"character-entities-html4@npm:^2.0.0": - version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0" - checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d - languageName: node - linkType: hard - -"character-entities-legacy@npm:^1.0.0": - version: 1.1.4 - resolution: "character-entities-legacy@npm:1.1.4" - checksum: fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811 - languageName: node - linkType: hard - -"character-entities-legacy@npm:^3.0.0": - version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0" - checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 - languageName: node - linkType: hard - -"character-entities@npm:^1.0.0": - version: 1.2.4 - resolution: "character-entities@npm:1.2.4" - checksum: e1545716571ead57beac008433c1ff69517cd8ca5b336889321c5b8ff4a99c29b65589a701e9c086cda8a5e346a67295e2684f6c7ea96819fe85cbf49bf8686d - languageName: node - linkType: hard - -"character-entities@npm:^2.0.0": - version: 2.0.2 - resolution: "character-entities@npm:2.0.2" - checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def - languageName: node - linkType: hard - -"character-reference-invalid@npm:^1.0.0": - version: 1.1.4 - resolution: "character-reference-invalid@npm:1.1.4" - checksum: 20274574c70e05e2f81135f3b93285536bc8ff70f37f0809b0d17791a832838f1e49938382899ed4cb444e5bbd4314ca1415231344ba29f4222ce2ccf24fea0b - languageName: node - linkType: hard - -"character-reference-invalid@npm:^2.0.0": - version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1" - checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee - languageName: node - linkType: hard - -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d - languageName: node - linkType: hard - -"charm@npm:^1.0.0": - version: 1.0.2 - resolution: "charm@npm:1.0.2" - dependencies: - inherits: ^2.0.1 - checksum: 767e4ea65014c3a93ed6943d230150b80bea8842b3a19890a30a477f47c8dfb68687d754f5a538bd628fc3a0a6b84c4986c9c3f9c541c4956239d8d280472614 - languageName: node - linkType: hard - -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" - dependencies: - boolbase: ^1.0.0 - css-select: ^5.1.0 - css-what: ^6.1.0 - domelementtype: ^2.3.0 - domhandler: ^5.0.3 - domutils: ^3.0.1 - checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b - languageName: node - linkType: hard - -"cheerio@npm:^1.0.0-rc.2": - version: 1.0.0-rc.12 - resolution: "cheerio@npm:1.0.0-rc.12" - dependencies: - cheerio-select: ^2.1.0 - dom-serializer: ^2.0.0 - domhandler: ^5.0.3 - domutils: ^3.0.1 - htmlparser2: ^8.0.1 - parse5: ^7.0.0 - parse5-htmlparser2-tree-adapter: ^7.0.0 - checksum: 5d4c1b7a53cf22d3a2eddc0aff70cf23cbb30d01a4c79013e703a012475c02461aa1fcd99127e8d83a02216386ed6942b2c8103845fd0812300dd199e6e7e054 - languageName: node - linkType: hard - -"chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.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 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 - languageName: node - linkType: hard - -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.5.0 - resolution: "ci-info@npm:3.5.0" - checksum: 7def3789706ec18db3dc371dc699bd0df12057d54b796201f50ba87200e0849d3d83c68da00ab2ab8cdd738d91b25ab9e31620588f8d7e64ffaa1f760fd121cf - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - -"clean-base-url@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-base-url@npm:1.0.0" - checksum: df819e54595b0c04cadfd1a5485216591d4b68d80a3603b657e7e50ac6b34539ef8a6e2100531131d67da325603b26a96a80cfd7c2fc24702ce1db0e1e39dde0 - languageName: node - linkType: hard - -"clean-css-promise@npm:^0.1.0": - version: 0.1.1 - resolution: "clean-css-promise@npm:0.1.1" - dependencies: - array-to-error: ^1.0.0 - clean-css: ^3.4.5 - pinkie-promise: ^2.0.0 - checksum: 5d2a4ad633453c4e6f3d865f7f19f1a821d20985309f914307a87c36c0ef79674ccb24f61195ff45506b50c12b49ec0448581b0f60c31472925d77fc923129ea - languageName: node - linkType: hard - -"clean-css@npm:^3.4.5": - version: 3.4.28 - resolution: "clean-css@npm:3.4.28" - dependencies: - commander: 2.8.x - source-map: 0.4.x - bin: - cleancss: ./bin/cleancss - checksum: eacc573e5ba118aa59bb44a3d188e54d390b7482cad7941559b3865e4946c677afb2deab50bcf8e97592532935f684a53b3abff1d5c55e95e21ded1e93b69132 - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" - dependencies: - source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0, clean-stack@npm:^2.2.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"clean-up-path@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-up-path@npm:1.0.0" - checksum: a4182d6126d897b326b4918e9931c359ae64c7a8fcf2eab4554f9eabf7820c78e3d917b8e0ddb6589837f905ff1b4158a10504664727b0ade67f55815020b41f - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 - languageName: node - linkType: hard - -"cli-boxes@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-boxes@npm:3.0.0" - checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 - languageName: node - linkType: hard - -"cli-cursor@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-cursor@npm:2.1.0" - dependencies: - restore-cursor: ^2.0.0 - checksum: d88e97bfdac01046a3ffe7d49f06757b3126559d7e44aa2122637eb179284dc6cd49fca2fac4f67c19faaf7e6dab716b6fe1dfcd309977407d8c7578ec2d044d - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: ^3.1.0 - checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 - languageName: node - linkType: hard - -"cli-spinners@npm:^2.0.0": - version: 2.7.0 - resolution: "cli-spinners@npm:2.7.0" - checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": 1.5.0 - string-width: ^4.2.0 - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c - languageName: node - linkType: hard - -"cli-table@npm:^0.3.1": - version: 0.3.11 - resolution: "cli-table@npm:0.3.11" - dependencies: - colors: 1.0.3 - checksum: 59fb61f992ac9bc8610ed98c72bf7f5d396c5afb42926b6747b46b0f8bb98a0dfa097998e77542ac334c1eb7c18dbf4f104d5783493273c5ec4c34084aa7c663 - languageName: node - linkType: hard - -"cli-width@npm:^2.0.0": - version: 2.2.1 - resolution: "cli-width@npm:2.2.1" - checksum: 3c21b897a2ff551ae5b3c3ab32c866ed2965dcf7fb442f81adf0e27f4a397925c8f84619af7bcc6354821303f6ee9b2aa31d248306174f32c287986158cf4eed - languageName: node - linkType: hard - -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: ^2.0.4 - kind-of: ^6.0.2 - shallow-clone: ^3.0.0 - checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd - languageName: node - linkType: hard - -"clone@npm:^2.1.2": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colorette@npm:^2.0.10, colorette@npm:^2.0.14": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"colors@npm:1.0.3": - version: 1.0.3 - resolution: "colors@npm:1.0.3" - checksum: 234e8d3ab7e4003851cdd6a1f02eaa16dabc502ee5f4dc576ad7959c64b7477b15bd21177bab4055a4c0a66aa3d919753958030445f87c39a253d73b7a3637f5 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"combined-stream@npm:~0.0.4": - version: 0.0.7 - resolution: "combined-stream@npm:0.0.7" - dependencies: - delayed-stream: 0.0.5 - checksum: 312bce22547da11c63cef1be38db208f71c05daf6b903b8b5d46038fa820a584852e0cef15a21b492726fbcffa91ce444001ca6a2f79a2159ce5589fd183b135 - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^1.0.0": - version: 1.0.8 - resolution: "comma-separated-tokens@npm:1.0.8" - checksum: 0adcb07174fa4d08cf0f5c8e3aec40a36b5ff0c2c720e5e23f50fe02e6789d1d00a67036c80e0c1e1539f41d3e7f0101b074039dd833b4e4a59031b659d6ca0d - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "comma-separated-tokens@npm:2.0.2" - checksum: 8fa68ff2605233571536a802a7c712b0c766e0c5088e067be72740054e84d040865eea945c984924ae84932bcc3e25a99f71601220b438e875b5f42b87277767 - languageName: node - linkType: hard - -"commander@npm:2.8.x": - version: 2.8.1 - resolution: "commander@npm:2.8.1" - dependencies: - graceful-readlink: ">= 1.0.0" - checksum: 9552028af84683cf2b20397c54fa4dd5b18fb69555e201a8edc3880b344f5aadd8857f777da97ce0c99e50fc133adf356f0299e9958b9b4e95b96c45f0696dfd - languageName: node - linkType: hard - -"commander@npm:^2.20.0, commander@npm:^2.6.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:^4.1.1": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 - languageName: node - linkType: hard - -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - -"commander@npm:^7.0.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - -"common-tags@npm:^1.8.0": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab - languageName: node - linkType: hard - -"configstore@npm:^5.0.1": - version: 5.0.1 - resolution: "configstore@npm:5.0.1" - dependencies: - dot-prop: ^5.2.0 - graceful-fs: ^4.1.2 - make-dir: ^3.0.0 - unique-string: ^2.0.0 - write-file-atomic: ^3.0.0 - xdg-basedir: ^4.0.0 - checksum: 60ef65d493b63f96e14b11ba7ec072fdbf3d40110a94fb7199d1c287761bdea5c5244e76b2596325f30c1b652213aa75de96ea20afd4a5f82065e61ea090988e - languageName: node - linkType: hard - -"configstore@npm:^6.0.0": - version: 6.0.0 - resolution: "configstore@npm:6.0.0" - dependencies: - dot-prop: ^6.0.1 - graceful-fs: ^4.2.6 - unique-string: ^3.0.0 - write-file-atomic: ^3.0.3 - xdg-basedir: ^5.0.1 - checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 - languageName: node - linkType: hard - -"connect@npm:^3.6.6": - version: 3.7.0 - resolution: "connect@npm:3.7.0" - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: ~1.3.3 - utils-merge: 1.0.1 - checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"console-ui@npm:^3.0.4, console-ui@npm:^3.1.2": - version: 3.1.2 - resolution: "console-ui@npm:3.1.2" - dependencies: - chalk: ^2.1.0 - inquirer: ^6 - json-stable-stringify: ^1.0.1 - ora: ^3.4.0 - through2: ^3.0.1 - checksum: f475401147c5f1205a39dcd0ca9e196e053285a357fe10d4233947e7288f8412bca1ac5666446cced5aab0bd6309ff6715efd395cd285225836c72d27c821008 - languageName: node - linkType: hard - -"consolidate@npm:^0.16.0": - version: 0.16.0 - resolution: "consolidate@npm:0.16.0" - dependencies: - bluebird: ^3.7.2 - checksum: f17164ffb2c4f79b4cbf685f1c76a49f59d329a40954b436425498861dc137b46fe821b2aadafa2dcfeb7eebd46846f35bd2c36b4a704d38521b4210a22a7515 - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"continuable-cache@npm:^0.3.1": - version: 0.3.1 - resolution: "continuable-cache@npm:0.3.1" - checksum: d88b9891cdc76533bf018613ec80c7f8f3ce7159fa8c1402dae7be546c4b0566ef0c18e488b08da66b8a8f5aab7c91ce9910e4c32d965d902ffe34e095ccc2cb - languageName: node - linkType: hard - -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 - languageName: node - linkType: hard - -"cookie@npm:~0.4.1": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b - languageName: node - linkType: hard - -"copy-dereference@npm:^1.0.0": - version: 1.0.0 - resolution: "copy-dereference@npm:1.0.0" - checksum: ffa946e4d3ab77e53e7543fb58b89ffffebc29cc1560adcfd09ad521e2c5b8f087a4639ac98a2d3945a173f0defad444ce1873f3d1104c1978d83c54dd888caf - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"core-js-compat@npm:^3.25.1": - version: 3.26.0 - resolution: "core-js-compat@npm:3.26.0" - dependencies: - browserslist: ^4.21.4 - checksum: 120780ec33d441e476810abac9bf57199c2083006b179dc23d0ab0cfea096eff2a2fc3e9cb315d245735df661cfa4b76a8b8c37f5056fd02428a3cd2ea1d9f36 - languageName: node - linkType: hard - -"core-js@npm:^2.6.5": - version: 2.6.12 - resolution: "core-js@npm:2.6.12" - checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016 - languageName: node - linkType: hard - -"core-js@npm:^3.0.4": - version: 3.26.0 - resolution: "core-js@npm:3.26.0" - checksum: 0149eb9d3909fde9c17626af3a6e625c326e8598d0bb5e6c5b48a18e5fcd4eaf48d4964d873667d8148542ff590fb98eb3f93618da114ca54999d6bc0349734b - languageName: node - linkType: hard - -"core-object@npm:^3.1.5": - version: 3.1.5 - resolution: "core-object@npm:3.1.5" - dependencies: - chalk: ^2.0.0 - checksum: d53022008fa9da9db3ac5d2636750300da114b58432a28bcde4cbb099e60208e3b0ae2b8a05cec2d2ec70bdcad72bfac18134ab60e435aec3117b3edad00235d - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"cors@npm:~2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" - dependencies: - object-assign: ^4 - vary: ^1 - checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.1": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" - 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 - checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b - languageName: node - linkType: hard - -"cross-env@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-env@npm:7.0.3" - dependencies: - cross-spawn: ^7.0.1 - bin: - cross-env: src/bin/cross-env.js - cross-env-shell: src/bin/cross-env-shell.js - checksum: 26f2f3ea2ab32617f57effb70d329c2070d2f5630adc800985d8b30b56e8bf7f5f439dd3a0358b79cee6f930afc23cf8e23515f17ccfb30092c6b62c6b630a79 - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.0": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: ^1.0.4 - path-key: ^2.0.1 - semver: ^5.5.0 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"cryptiles@npm:0.2.x": - version: 0.2.2 - resolution: "cryptiles@npm:0.2.2" - dependencies: - boom: 0.4.x - checksum: fd872f89935c8411112e0b048f362fa4c9f8ca29fe0ffeb956e463b098a1cc3df1740d9213bc45c44d765e033e3287dfc6dbd5a6bea4e2708eaed3ebc45f3a50 - languageName: node - linkType: hard - -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 - languageName: node - linkType: hard - -"crypto-random-string@npm:^4.0.0": - version: 4.0.0 - resolution: "crypto-random-string@npm:4.0.0" - dependencies: - type-fest: ^1.0.1 - checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 - languageName: node - linkType: hard - -"css-loader@npm:^6.7.1": - version: 6.7.1 - resolution: "css-loader@npm:6.7.1" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.7 - 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 - postcss-value-parser: ^4.2.0 - semver: ^7.3.5 - peerDependencies: - webpack: ^5.0.0 - checksum: 170fdbc630a05a43679ef60fa97694766b568dbde37adccc0faafa964fc675f08b976bc68837bb73b61d60240e8d2cbcbf51540fe94ebc9dafc56e7c46ba5527 - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 - languageName: node - linkType: hard - -"css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.1.0 - domhandler: ^5.0.2 - domutils: ^3.0.1 - nth-check: ^2.0.1 - checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda - languageName: node - linkType: hard - -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d - languageName: node - linkType: hard - -"ctype@npm:0.5.3": - version: 0.5.3 - resolution: "ctype@npm:0.5.3" - checksum: 198be77f3825910340778ac5b72deb3393f9b3913e75cbb228169acc25ce9a7dede02d86d8d496699af35c031c7e508c928368922cfd40af2efbc5f85f210dfc - languageName: node - linkType: hard - -"dag-map@npm:^2.0.2": - version: 2.0.2 - resolution: "dag-map@npm:2.0.2" - checksum: c15b70127c32b5f674ce43d17ee2268d757777df88883468550b946fdd29cee59c3faff1ec6d3ce05a4cb220a708426ac33b2f0a3bb6654541e7295e2d3a654a - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.1.0, debug@npm:^2.1.1, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.8, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.3, debug@npm:~4.3.1, debug@npm:~4.3.2": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:^3.0.1, debug@npm:^3.1.0, debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" - dependencies: - character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"default-browser-id@npm:3.0.0": - version: 3.0.0 - resolution: "default-browser-id@npm:3.0.0" - dependencies: - bplist-parser: ^0.2.0 - untildify: ^4.0.0 - checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: ^1.0.2 - checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - -"degit@npm:^2.8.4": - version: 2.8.4 - resolution: "degit@npm:2.8.4" - bin: - degit: degit - checksum: bb58c48ff1ae3828825d7e614db703afd69905abc2d666009bb4affecb8d87be993511556395889dffc99a5eba7a058117402050c509a6e2c3dd56a579120236 - languageName: node - linkType: hard - -"delayed-stream@npm:0.0.5": - version: 0.0.5 - resolution: "delayed-stream@npm:0.0.5" - checksum: 6fcd0961ac3315fff5d5a6c2ba9a4e92cfd00043499eb83b3c38d94531c611121e3f37181849a84d8cb4777750e560b0c1711efb6303ec289544ec2d3a46771f - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"depd@npm:^1.1.2, depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 - languageName: node - linkType: hard - -"detect-file@npm:^1.0.0": - version: 1.0.0 - resolution: "detect-file@npm:1.0.0" - checksum: 1861e4146128622e847abe0e1ed80fef01e78532665858a792267adf89032b7a9c698436137707fcc6f02956c2a6a0052d6a0cef5be3d4b76b1ff0da88e2158a - languageName: node - linkType: hard - -"detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d - languageName: node - linkType: hard - -"detect-newline@npm:3.1.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - -"detect-package-manager@npm:^2.0.1": - version: 2.0.1 - resolution: "detect-package-manager@npm:2.0.1" - dependencies: - execa: ^5.1.1 - checksum: e72b910182d5ad479198d4235be206ac64a479257b32201bb06f3c842cc34c65ea851d46f72cc1d4bf535bcc6c4b44b5b86bb29fe1192b8c9c07b46883672f28 - languageName: node - linkType: hard - -"detect-port@npm:^1.3.0": - version: 1.5.1 - resolution: "detect-port@npm:1.5.1" - dependencies: - address: ^1.0.1 - debug: 4 - bin: - detect: bin/detect-port.js - detect-port: bin/detect-port.js - checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b - languageName: node - linkType: hard - -"diff@npm:^4.0.2": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d - languageName: node - linkType: hard - -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 - languageName: node - linkType: hard - -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" - dependencies: - domelementtype: ^2.3.0 - domhandler: ^5.0.2 - entities: ^4.2.0 - checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 - languageName: node - linkType: hard - -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa - languageName: node - linkType: hard - -"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" - dependencies: - domelementtype: ^2.3.0 - checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c - languageName: node - linkType: hard - -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 - languageName: node - linkType: hard - -"domutils@npm:^3.0.1": - version: 3.0.1 - resolution: "domutils@npm:3.0.1" - dependencies: - dom-serializer: ^2.0.0 - domelementtype: ^2.3.0 - domhandler: ^5.0.1 - checksum: 23aa7a840572d395220e173cb6263b0d028596e3950100520870a125af33ff819e6f609e1606d6f7d73bd9e7feb03bb404286e57a39063b5384c62b724d987b3 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"dot-prop@npm:^5.2.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: ^2.0.0 - checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 - languageName: node - linkType: hard - -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 8017675b7f254384915d55f9eb6388e577cf0a1231a28d54b0ca03b782be9501b0ac90ac57338636d395fa59051e6209e9b44b8ddf169ce6076dffb5dea227d3 - languageName: node - linkType: hard - -"dotenv@npm:^8.0.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 38e902c80b0666ab59e9310a3d24ed237029a7ce34d976796349765ac96b8d769f6df19090f1f471b77a25ca391971efde8a1ea63bb83111bd8bec8e5cc9b2cd - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"editions@npm:^1.1.1": - version: 1.3.4 - resolution: "editions@npm:1.3.4" - checksum: 8c2041459816db2cacac53598a9bca7928a7de2c5eb0dae532c2273a60ef83acbd807ce33ff1cd5cf7aa547737c55f7f4b52436752df0f13f5936efa329c13f7 - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"ejs@npm:^3.1.8": - version: 3.1.8 - resolution: "ejs@npm:3.1.8" - dependencies: - jake: ^10.8.5 - bin: - ejs: bin/cli.js - checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.251": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a - languageName: node - linkType: hard - -"element-resize-detector@npm:^1.2.2": - version: 1.2.4 - resolution: "element-resize-detector@npm:1.2.4" - dependencies: - batch-processor: 1.0.0 - checksum: 81c47b7e229c303889d3a9d78ec3f3232e88a6682f1e2424fb0632d9b4f503b2ca011e6954321060604da07749a5a972b6a175fdf6c6806093a3b80a304cde7b - languageName: node - linkType: hard - -"ember-ajax@npm:^5.0.0": - version: 5.1.2 - resolution: "ember-ajax@npm:5.1.2" - dependencies: - ember-cli-babel: ^7.5.0 - najax: ^1.0.7 - checksum: 8f65c9b607c57aba1f2a6ee68455e862c9885d21c5010637ff44c18c4265ff999557c6ebaa09d3bdb1c3f43e408d04b07877e3aee4a0c1f636ed61dee215672b - languageName: node - linkType: hard - -"ember-cli-addon-docs-yuidoc@npm:^0.2.3": - version: 0.2.4 - resolution: "ember-cli-addon-docs-yuidoc@npm:0.2.4" - dependencies: - broccoli-caching-writer: ^3.0.3 - ember-cli-babel: ^7.7.3 - fs-extra: ^5.0.0 - json-api-serializer: ^1.11.0 - lodash: ^4.17.5 - yuidocjs: ^0.10.2 - checksum: 9db67f05a44ddbabd1908ae2541d764cbe81a1a53cfe3a4b017de962e5e469b1619d3ed70a37c62bea36b6fb7c9f2cc8cecdba8ffc6f221360db8ce07a8507df - languageName: node - linkType: hard - -"ember-cli-app-version@npm:^4.0.0": - version: 4.0.0 - resolution: "ember-cli-app-version@npm:4.0.0" - dependencies: - ember-cli-babel: ^7.22.1 - git-repo-info: ^2.1.1 - checksum: 75ea0d33735a1d2ae50b7878ad616105de0af4b1da29a8bebf2d0969c0efa7ffb599d4c6042817ae3705117d3b7a6a020685a1ce8f8ee735ee5da96b711f8a0e - languageName: node - linkType: hard - -"ember-cli-babel-plugin-helpers@npm:^1.0.0, ember-cli-babel-plugin-helpers@npm:^1.1.0, ember-cli-babel-plugin-helpers@npm:^1.1.1": - version: 1.1.1 - resolution: "ember-cli-babel-plugin-helpers@npm:1.1.1" - checksum: 3dc684317dbc4728d41a61de13d2fb1de5227105c1ba9194005647d2724b469d43aba3b1fa73622f2b5cd04c8283a15568b3a0044ec7a5036c17f336ac098ff5 - languageName: node - linkType: hard - -"ember-cli-babel@npm:^7.1.2, ember-cli-babel@npm:^7.13.0, ember-cli-babel@npm:^7.13.2, ember-cli-babel@npm:^7.19.0, ember-cli-babel@npm:^7.22.1, ember-cli-babel@npm:^7.23.0, ember-cli-babel@npm:^7.5.0, ember-cli-babel@npm:^7.7.3": - version: 7.26.11 - resolution: "ember-cli-babel@npm:7.26.11" - dependencies: - "@babel/core": ^7.12.0 - "@babel/helper-compilation-targets": ^7.12.0 - "@babel/plugin-proposal-class-properties": ^7.16.5 - "@babel/plugin-proposal-decorators": ^7.13.5 - "@babel/plugin-proposal-private-methods": ^7.16.5 - "@babel/plugin-proposal-private-property-in-object": ^7.16.5 - "@babel/plugin-transform-modules-amd": ^7.13.0 - "@babel/plugin-transform-runtime": ^7.13.9 - "@babel/plugin-transform-typescript": ^7.13.0 - "@babel/polyfill": ^7.11.5 - "@babel/preset-env": ^7.16.5 - "@babel/runtime": 7.12.18 - amd-name-resolver: ^1.3.1 - babel-plugin-debug-macros: ^0.3.4 - babel-plugin-ember-data-packages-polyfill: ^0.1.2 - babel-plugin-ember-modules-api-polyfill: ^3.5.0 - babel-plugin-module-resolver: ^3.2.0 - broccoli-babel-transpiler: ^7.8.0 - broccoli-debug: ^0.6.4 - broccoli-funnel: ^2.0.2 - broccoli-source: ^2.1.2 - calculate-cache-key-for-tree: ^2.0.0 - clone: ^2.1.2 - ember-cli-babel-plugin-helpers: ^1.1.1 - ember-cli-version-checker: ^4.1.0 - ensure-posix-path: ^1.0.2 - fixturify-project: ^1.10.0 - resolve-package-path: ^3.1.0 - rimraf: ^3.0.1 - semver: ^5.5.0 - checksum: 72b2819018d4d29b5250284cab5fa992a7fd6b0cf958a1fc4abed4a4f6394c0aca4ee32d4c8981d8643fef7280763fadf70ebd807f262967899f4898679bcb90 - languageName: node - linkType: hard - -"ember-cli-get-component-path-option@npm:^1.0.0": - version: 1.0.0 - resolution: "ember-cli-get-component-path-option@npm:1.0.0" - checksum: 4a4d9b2b0cb05c69fad962b1787b65d9bca0c64aa161c2f12d172b9af6ef951d33dd1ac38bfa7468a4a11a08a17dda2912fd47cb92cbfd8795fe2e8008e155e4 - languageName: node - linkType: hard - -"ember-cli-htmlbars@npm:^4.4.0": - version: 4.5.0 - resolution: "ember-cli-htmlbars@npm:4.5.0" - dependencies: - "@ember/edition-utils": ^1.2.0 - babel-plugin-htmlbars-inline-precompile: ^3.2.0 - broccoli-debug: ^0.6.5 - broccoli-persistent-filter: ^2.3.1 - broccoli-plugin: ^3.1.0 - common-tags: ^1.8.0 - ember-cli-babel-plugin-helpers: ^1.1.0 - fs-tree-diff: ^2.0.1 - hash-for-dep: ^1.5.1 - heimdalljs-logger: ^0.1.10 - json-stable-stringify: ^1.0.1 - semver: ^6.3.0 - strip-bom: ^4.0.0 - walk-sync: ^2.0.2 - checksum: 4cecd9e5df64fc9df22ea944b2ab86dd88d3bd105b22b46e810856a050d617f73610645c1e91ff018836e73f4b488a14217a3d767557c1fa663494b54de93af6 - languageName: node - linkType: hard - -"ember-cli-inject-live-reload@npm:^2.0.2": - version: 2.1.0 - resolution: "ember-cli-inject-live-reload@npm:2.1.0" - dependencies: - clean-base-url: ^1.0.0 - ember-cli-version-checker: ^3.1.3 - checksum: 423bd479d29e58c19d3d8232b1d025fdd070006b2a59b2b14fc252372aa227da7ac56fdea7fbf4c518b37705b328190c58e4ffacb8f6ce81f6cfb42c1262c591 - languageName: node - linkType: hard - -"ember-cli-is-package-missing@npm:^1.0.0": - version: 1.0.0 - resolution: "ember-cli-is-package-missing@npm:1.0.0" - checksum: a2c4950a644827ae9236c39cf27d6e79d3cb06ee50154f64a1bd72f4abda8dcd542759a45ed47f77731baea9edb7d672145d1faf38b29aab287b281713e14760 - languageName: node - linkType: hard - -"ember-cli-lodash-subset@npm:^2.0.1": - version: 2.0.1 - resolution: "ember-cli-lodash-subset@npm:2.0.1" - checksum: 2667cd59443a67a04cf6f9cc402ffd7f6dac1c987b4908e3178481fd6ea0d492706f7999f8e6a2d4b97b136fe42e62457b569e96e91af78a1b096aa69d14984e - languageName: node - linkType: hard - -"ember-cli-normalize-entity-name@npm:^1.0.0": - version: 1.0.0 - resolution: "ember-cli-normalize-entity-name@npm:1.0.0" - dependencies: - silent-error: ^1.0.0 - checksum: 0f56d4714e59f7b2f40b9e070f5ad69be1171c48e614348d4e15bcb43e3495e7c5dc91b51b7a59fb88683b8a599010716fc2ca3ded3d7e201290efbae91a1bc5 - languageName: node - linkType: hard - -"ember-cli-path-utils@npm:^1.0.0": - version: 1.0.0 - resolution: "ember-cli-path-utils@npm:1.0.0" - checksum: 15652e41e040bb1c204705d6502f2f499686fba068ccddb7871fd4db7c0e71a93768480f1fe2cdef62470bdd1ce41c49c99699f5fff1c6b5abc3c875368cadae - languageName: node - linkType: hard - -"ember-cli-preprocess-registry@npm:^3.3.0": - version: 3.3.0 - resolution: "ember-cli-preprocess-registry@npm:3.3.0" - dependencies: - broccoli-clean-css: ^1.1.0 - broccoli-funnel: ^2.0.1 - debug: ^3.0.1 - process-relative-require: ^1.0.0 - checksum: 7b0a19b0842b6283a3ce7b0ccb77aa08ea3134bb8ada5952b4fb43e0a46a583c178e815e6573869fcaeccb4530fb975986b80d8a9d365811c471bcbf9cd98c95 - languageName: node - linkType: hard - -"ember-cli-shims@npm:^1.2.0": - version: 1.2.0 - resolution: "ember-cli-shims@npm:1.2.0" - dependencies: - broccoli-file-creator: ^1.1.1 - broccoli-merge-trees: ^2.0.0 - ember-cli-version-checker: ^2.0.0 - ember-rfc176-data: ^0.3.1 - silent-error: ^1.0.1 - checksum: a7d1101003c86ae6fddd60a0a0e6644e3dc4df61deb1c391f9a5332a653fc6ab579ec395b2784096b4113cc23de82c0c6243b9dbb1f7adaa2bbf65d5710ffbe0 - languageName: node - linkType: hard - -"ember-cli-sri@npm:^2.1.1": - version: 2.1.1 - resolution: "ember-cli-sri@npm:2.1.1" - dependencies: - broccoli-sri-hash: ^2.1.0 - checksum: 56eeb37c25e4695b05f7acd6321b95818b7e75013b445ecb101c2ed829ff75601f1a71332020b888d305d7a04e8c406b141381fdeb973f276930ab20c126933f - languageName: node - linkType: hard - -"ember-cli-string-utils@npm:^1.1.0": - version: 1.1.0 - resolution: "ember-cli-string-utils@npm:1.1.0" - checksum: cb833925596b1fedc5e8ad0d05d1dcb3db7305d4a73f1a3332ba3eb2bfa7a4f0e7674afc8dd5ac474cc526ee3129158b0e26c49d6392e5ea579a927b2af7f3e9 - languageName: node - linkType: hard - -"ember-cli-typescript@npm:^2.0.2": - version: 2.0.2 - resolution: "ember-cli-typescript@npm:2.0.2" - dependencies: - "@babel/plugin-proposal-class-properties": ^7.1.0 - "@babel/plugin-transform-typescript": ~7.4.0 - ansi-to-html: ^0.6.6 - debug: ^4.0.0 - ember-cli-babel-plugin-helpers: ^1.0.0 - execa: ^1.0.0 - fs-extra: ^7.0.0 - resolve: ^1.5.0 - rsvp: ^4.8.1 - semver: ^6.0.0 - stagehand: ^1.0.0 - walk-sync: ^1.0.0 - checksum: a1eecb5733df78de96eee3d75f1d0425c8e2638fddcdfb4b2fa46b70131df78216fc341419ccdcf4c32ca480c2bc3d91c0390b81b5ad738a409335ae5ff7f993 - languageName: node - linkType: hard - -"ember-cli-uglify@npm:^3.0.0": - version: 3.0.0 - resolution: "ember-cli-uglify@npm:3.0.0" - dependencies: - broccoli-uglify-sourcemap: ^3.1.0 - lodash.defaultsdeep: ^4.6.0 - checksum: f41a8ec0a92003eb0fa793648fde6e7920738bde38756042237bb34fc9c1737d279f96bd30d70c811accda92e11e1102b88237f71173309c09833914de07d3d8 - languageName: node - linkType: hard - -"ember-cli-version-checker@npm:^2.0.0": - version: 2.2.0 - resolution: "ember-cli-version-checker@npm:2.2.0" - dependencies: - resolve: ^1.3.3 - semver: ^5.3.0 - checksum: 2e2db30c0276df207e5921ff57574299ff027a528d52932ba42d9ddc6078da62dc3f34e6dc2ac647f5e07245d64c6acf4a395d453acccd819756f137fc4ec529 - languageName: node - linkType: hard - -"ember-cli-version-checker@npm:^3.1.3": - version: 3.1.3 - resolution: "ember-cli-version-checker@npm:3.1.3" - dependencies: - resolve-package-path: ^1.2.6 - semver: ^5.6.0 - checksum: 07a8b579272d4bd489b658b7dce3f6eefb0c9358a06b064fd59d2faf82defe60ade662fcc22bd009e3de6ac7ff602d88cdeb3b4e29c3669a09adb9a751d987a5 - languageName: node - linkType: hard - -"ember-cli-version-checker@npm:^4.1.0": - version: 4.1.1 - resolution: "ember-cli-version-checker@npm:4.1.1" - dependencies: - resolve-package-path: ^2.0.0 - semver: ^6.3.0 - silent-error: ^1.1.1 - checksum: 43beddcef0e26c159721e61cea0bc606c901a5f1b4ce21c83418d7ee30d3c7b0f073310e5db03bde3ca76c082309358766d7bacd3655bad1745fc458f5ffe4a1 - languageName: node - linkType: hard - -"ember-cli-version-checker@npm:^5.1.1": - version: 5.1.2 - resolution: "ember-cli-version-checker@npm:5.1.2" - dependencies: - resolve-package-path: ^3.1.0 - semver: ^7.3.4 - silent-error: ^1.1.1 - checksum: 95e98e11c5fdd31659d67b67abc7c781f3463e1da7a3642d5cae4717262e6382ba0d3487fe29e1bef1d5c3d03a2687fca9cd169445845abe2e486397ff92feef - languageName: node - linkType: hard - -"ember-cli@npm:~3.24.0": - version: 3.24.0 - resolution: "ember-cli@npm:3.24.0" - dependencies: - "@babel/core": ^7.12.9 - "@babel/plugin-transform-modules-amd": ^7.12.1 - amd-name-resolver: ^1.3.1 - babel-plugin-module-resolver: ^4.0.0 - bower-config: ^1.4.3 - bower-endpoint-parser: 0.2.2 - broccoli: ^3.5.0 - broccoli-amd-funnel: ^2.0.1 - broccoli-babel-transpiler: ^7.8.0 - broccoli-builder: ^0.18.14 - broccoli-concat: ^4.2.4 - broccoli-config-loader: ^1.0.1 - broccoli-config-replace: ^1.1.2 - broccoli-debug: ^0.6.5 - broccoli-funnel: ^2.0.2 - broccoli-funnel-reducer: ^1.0.0 - broccoli-merge-trees: ^3.0.2 - broccoli-middleware: ^2.1.1 - broccoli-slow-trees: ^3.1.0 - broccoli-source: ^3.0.0 - broccoli-stew: ^3.0.0 - calculate-cache-key-for-tree: ^2.0.0 - capture-exit: ^2.0.0 - chalk: ^4.1.0 - ci-info: ^2.0.0 - clean-base-url: ^1.0.0 - compression: ^1.7.4 - configstore: ^5.0.1 - console-ui: ^3.1.2 - core-object: ^3.1.5 - dag-map: ^2.0.2 - diff: ^4.0.2 - ember-cli-is-package-missing: ^1.0.0 - ember-cli-lodash-subset: ^2.0.1 - ember-cli-normalize-entity-name: ^1.0.0 - ember-cli-preprocess-registry: ^3.3.0 - ember-cli-string-utils: ^1.1.0 - ember-source-channel-url: ^3.0.0 - ensure-posix-path: ^1.1.1 - execa: ^4.1.0 - exit: ^0.1.2 - express: ^4.17.1 - filesize: ^6.1.0 - find-up: ^5.0.0 - find-yarn-workspace-root: ^2.0.0 - fixturify-project: ^2.1.0 - fs-extra: ^9.0.1 - fs-tree-diff: ^2.0.1 - get-caller-file: ^2.0.5 - git-repo-info: ^2.1.1 - glob: ^7.1.6 - heimdalljs: ^0.2.6 - heimdalljs-fs-monitor: ^1.1.0 - heimdalljs-graph: ^1.0.0 - heimdalljs-logger: ^0.1.10 - http-proxy: ^1.18.1 - inflection: ^1.12.0 - is-git-url: ^1.0.0 - is-language-code: ^2.0.0 - isbinaryfile: ^4.0.6 - js-yaml: ^3.14.0 - json-stable-stringify: ^1.0.1 - leek: 0.0.24 - lodash.template: ^4.5.0 - markdown-it: ^12.0.2 - markdown-it-terminal: 0.2.1 - minimatch: ^3.0.4 - morgan: ^1.10.0 - nopt: ^3.0.6 - npm-package-arg: ^8.1.0 - p-defer: ^3.0.0 - portfinder: ^1.0.28 - promise-map-series: ^0.3.0 - promise.hash.helper: ^1.0.7 - quick-temp: ^0.1.8 - resolve: ^1.19.0 - resolve-package-path: ^3.1.0 - sane: ^4.1.0 - semver: ^7.3.2 - silent-error: ^1.1.1 - sort-package-json: ^1.48.0 - symlink-or-copy: ^1.3.1 - temp: 0.9.4 - testem: ^3.2.0 - tiny-lr: ^2.0.0 - tree-sync: ^2.1.0 - uuid: ^8.3.1 - walk-sync: ^2.2.0 - watch-detector: ^1.0.0 - workerpool: ^6.0.3 - yam: ^1.0.0 - bin: - ember: bin/ember - checksum: 697a97ebe43e3a43932c695aa147a90d26e1768324f1f1b63fa45f910bcd221547af7285a53adcffc1d0641ea17131217dd078ce1aad9f165c0c2bb26fecf46d - languageName: node - linkType: hard - -"ember-example@workspace:.": - version: 0.0.0-use.local - resolution: "ember-example@workspace:." - dependencies: - "@babel/core": ^7.12.10 - "@ember/optional-features": ^2.0.0 - "@storybook/addon-a11y": 7.0.0-alpha.42 - "@storybook/addon-actions": 7.0.0-alpha.42 - "@storybook/addon-backgrounds": 7.0.0-alpha.42 - "@storybook/addon-controls": 7.0.0-alpha.42 - "@storybook/addon-docs": 7.0.0-alpha.42 - "@storybook/addon-highlight": 7.0.0-alpha.42 - "@storybook/addon-links": 7.0.0-alpha.42 - "@storybook/addon-storysource": 7.0.0-alpha.42 - "@storybook/addon-viewport": 7.0.0-alpha.42 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/ember": 7.0.0-alpha.42 - "@storybook/ember-cli-storybook": ^0.2.1 - "@storybook/source-loader": 7.0.0-alpha.42 - babel-loader: ^8.2.5 - broccoli-asset-rev: ^3.0.0 - browserify-zlib: ^0.2.0 - cross-env: ^7.0.3 - ember-ajax: ^5.0.0 - ember-cli: ~3.24.0 - ember-cli-app-version: ^4.0.0 - ember-cli-babel: ^7.23.0 - ember-cli-htmlbars: ^4.4.0 - ember-cli-inject-live-reload: ^2.0.2 - ember-cli-shims: ^1.2.0 - ember-cli-sri: ^2.1.1 - ember-cli-uglify: ^3.0.0 - ember-load-initializers: ^2.1.2 - ember-named-blocks-polyfill: ^0.2.3 - ember-resolver: ^7.0.0 - ember-source: ~3.24.0 - ember-template-compiler: ^1.9.0-alpha - loader.js: ^4.7.0 - os-browserify: ^0.3.0 - shx: ^0.3.2 - storybook: 7.0.0-alpha.42 - stream-browserify: ^3.0.0 - vm-browserify: ^1.1.2 - webpack: 5 - webpack-cli: ^4.9.2 - languageName: unknown - linkType: soft - -"ember-load-initializers@npm:^2.1.2": - version: 2.1.2 - resolution: "ember-load-initializers@npm:2.1.2" - dependencies: - ember-cli-babel: ^7.13.0 - ember-cli-typescript: ^2.0.2 - checksum: 104b38cb4b755894b65d39ab94f316bdb1b571884b8e52118ced0bfeb06de8e3e7685dcc4579fd8dae57fc6c62e2e50df042e782e960565e05a4cf4eaf6db337 - languageName: node - linkType: hard - -"ember-named-blocks-polyfill@npm:^0.2.3": - version: 0.2.5 - resolution: "ember-named-blocks-polyfill@npm:0.2.5" - dependencies: - ember-cli-babel: ^7.19.0 - ember-cli-version-checker: ^5.1.1 - checksum: f3ca8eeb61a208bf4690d423806b35371b5f01c58028404c9065d7d6e289d2220f40232756718a784fe0d0a65ed9c5a66a3df76f4abd222d07fca35886f5c583 - languageName: node - linkType: hard - -"ember-resolver@npm:^7.0.0": - version: 7.0.0 - resolution: "ember-resolver@npm:7.0.0" - dependencies: - babel-plugin-debug-macros: ^0.3.3 - broccoli-funnel: ^2.0.2 - broccoli-merge-trees: ^3.0.0 - ember-cli-babel: ^7.13.2 - ember-cli-version-checker: ^3.1.3 - resolve: ^1.14.0 - checksum: 3da2c3f8aa58103214db87d161ce8bc555cdf8522da4156e3dadfc89acdb0d510cd279ea17c2e8945a01bb8fe2dd64c317023a411ac02c86f88cc59b77ca2762 - languageName: node - linkType: hard - -"ember-rfc176-data@npm:^0.3.1, ember-rfc176-data@npm:^0.3.17": - version: 0.3.17 - resolution: "ember-rfc176-data@npm:0.3.17" - checksum: bc35da90149178d4c0e67097446d46ab69910571fcd02308dead097ca21c6d86767c4031d2bba4df267213ce6c43d1fe5660ded9e061051c1d84ba171fd02366 - languageName: node - linkType: hard - -"ember-router-generator@npm:^2.0.0": - version: 2.0.0 - resolution: "ember-router-generator@npm:2.0.0" - dependencies: - "@babel/parser": ^7.4.5 - "@babel/traverse": ^7.4.5 - recast: ^0.18.1 - checksum: e163e0d68e49a942658aee7c05638dd5c2db939753b51efc9c6d9f0e582953be185daf4cdd569c1b8a35ed47f35f4cb18067a6a1db68e135d7464bbad6ef9d93 - languageName: node - linkType: hard - -"ember-source-channel-url@npm:^3.0.0": - version: 3.0.0 - resolution: "ember-source-channel-url@npm:3.0.0" - dependencies: - node-fetch: ^2.6.0 - bin: - ember-source-channel-url: bin/ember-source-channel-url - checksum: 17f24d48b7264be0a17336a2efcdd8ef26a61683858bd398de2de32fc611e6ff13d22873924dfa97b67da0e4da2dd41444f9cb0408052f0faf31aa6dceb96dd1 - languageName: node - linkType: hard - -"ember-source@npm:~3.24.0": - version: 3.24.6 - resolution: "ember-source@npm:3.24.6" - dependencies: - "@babel/helper-module-imports": ^7.8.3 - "@babel/plugin-transform-block-scoping": ^7.8.3 - "@babel/plugin-transform-object-assign": ^7.8.3 - "@ember/edition-utils": ^1.2.0 - babel-plugin-debug-macros: ^0.3.3 - babel-plugin-filter-imports: ^4.0.0 - broccoli-concat: ^4.2.4 - broccoli-debug: ^0.6.4 - broccoli-funnel: ^2.0.2 - broccoli-merge-trees: ^4.2.0 - chalk: ^4.0.0 - ember-cli-babel: ^7.23.0 - ember-cli-get-component-path-option: ^1.0.0 - ember-cli-is-package-missing: ^1.0.0 - ember-cli-normalize-entity-name: ^1.0.0 - ember-cli-path-utils: ^1.0.0 - ember-cli-string-utils: ^1.1.0 - ember-cli-version-checker: ^5.1.1 - ember-router-generator: ^2.0.0 - inflection: ^1.12.0 - jquery: ^3.5.0 - resolve: ^1.17.0 - semver: ^6.1.1 - silent-error: ^1.1.1 - checksum: 5db1ae67a3ba7b2271eff274f41ae9424499259d14dfde8832e136d5a748e2bf2f292051723020d79d5d4b554f9dce288b1ffa6f6258b2a11fb179279ffdf584 - languageName: node - linkType: hard - -"ember-template-compiler@npm:^1.9.0-alpha": - version: 1.9.0-alpha - resolution: "ember-template-compiler@npm:1.9.0-alpha" - peerDependencies: - handlebars: ~2 - bin: - ember-template-compiler: ./bin/compiler - checksum: ec8def6d60dd240aa7c45084de06237d50ace51b027a0d335159de23789bb9b9bc1d2d5a64d0846916da5d76c1f0459bfb7bcf9ce8b369ac6ce10f9638ba1896 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"engine.io-parser@npm:~5.0.3": - version: 5.0.4 - resolution: "engine.io-parser@npm:5.0.4" - checksum: d4ad0cef6ff63c350e35696da9bb3dbd180f67b56e93e90375010cc40393e6c0639b780d5680807e1d93a7e2e3d7b4a1c3b27cf75db28eb8cbf605bc1497da03 - languageName: node - linkType: hard - -"engine.io@npm:~6.2.0": - version: 6.2.0 - resolution: "engine.io@npm:6.2.0" - dependencies: - "@types/cookie": ^0.4.1 - "@types/cors": ^2.8.12 - "@types/node": ">=10.0.0" - accepts: ~1.3.4 - base64id: 2.0.0 - cookie: ~0.4.1 - cors: ~2.8.5 - debug: ~4.3.1 - engine.io-parser: ~5.0.3 - ws: ~8.2.3 - checksum: cc485c5ba2e0c4f6ca02dcafd192b22f9dad89d01dc815005298780d3fb910db4cebab4696e8615290c473c2eeb259e8bee2a1fb7ab594d9c80f9f3485771911 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.10.0": - version: 5.10.0 - resolution: "enhanced-resolve@npm:5.10.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 0bb9830704db271610f900e8d79d70a740ea16f251263362b0c91af545576d09fe50103496606c1300a05e588372d6f9780a9bc2e30ce8ef9b827ec8f44687ff - languageName: node - linkType: hard - -"ensure-posix-path@npm:^1.0.0, ensure-posix-path@npm:^1.0.1, ensure-posix-path@npm:^1.0.2, ensure-posix-path@npm:^1.1.0, ensure-posix-path@npm:^1.1.1": - version: 1.1.1 - resolution: "ensure-posix-path@npm:1.1.1" - checksum: 90ac69f48a08003abe6f194b75bad78c3320762bd193a063eb76cd8f696be6a34e1524f16435eeee09ccbe3a719a7fb76409dead3ccedd10e32d906ff050457b - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 - languageName: node - linkType: hard - -"entities@npm:~1.1.1": - version: 1.1.2 - resolution: "entities@npm:1.1.2" - checksum: d537b02799bdd4784ffd714d000597ed168727bddf4885da887c5a491d735739029a00794f1998abbf35f3f6aeda32ef5c15010dca1817d401903a501b6d3e05 - languageName: node - linkType: hard - -"entities@npm:~2.1.0": - version: 2.1.0 - resolution: "entities@npm:2.1.0" - checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"error@npm:^7.0.0": - version: 7.2.1 - resolution: "error@npm:7.2.1" - dependencies: - string-template: ~0.2.1 - checksum: 9c790d20a386947acfeabb0d1c39173efe8e5a38cb732b5f06c11a25c23ce8ac4dafbb7aa240565e034580a49aba0703e743d0274c6228500ddf947a1b998568 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - 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-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"esbuild-android-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-64@npm:0.14.54" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-arm64@npm:0.14.54" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-64@npm:0.14.54" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-arm64@npm:0.14.54" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-64@npm:0.14.54" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-arm64@npm:0.14.54" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-32@npm:0.14.54" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-64@npm:0.14.54" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm64@npm:0.14.54" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm@npm:0.14.54" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-mips64le@npm:0.14.54" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-ppc64le@npm:0.14.54" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-riscv64@npm:0.14.54" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-s390x@npm:0.14.54" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-netbsd-64@npm:0.14.54" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-openbsd-64@npm:0.14.54" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-plugin-alias@npm:^0.2.1": - version: 0.2.1 - resolution: "esbuild-plugin-alias@npm:0.2.1" - checksum: afe2d2c8b5f09d5321cb8d9c0825e8a9f6e03c2d50df92f953a291d4620cc29eddb3da9e33b238f6d8f77738e0277bdcb831f127399449fecf78fb84c04e5da9 - languageName: node - linkType: hard - -"esbuild-register@npm:^3.3.3": - version: 3.3.3 - resolution: "esbuild-register@npm:3.3.3" - peerDependencies: - esbuild: ">=0.12 <1" - checksum: f43fecb9f5c48fcf859a0b3681368af8987c299c822da9a996b90f453b9b2226b9a90c7dbaec0968a86b53ee524af0d8b4ed828866c29bfede5c176834bc0f2b - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-sunos-64@npm:0.14.54" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-32@npm:0.14.54" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-64@npm:0.14.54" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-arm64@npm:0.14.54" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.48": - version: 0.14.54 - resolution: "esbuild@npm:0.14.54" - dependencies: - "@esbuild/linux-loong64": 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dependenciesMeta: - "@esbuild/linux-loong64": - optional: true - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 49e360b1185c797f5ca3a7f5f0a75121494d97ddf691f65ed1796e6257d318f928342a97f559bb8eced6a90cf604dd22db4a30e0dbbf15edd9dbf22459b639af - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-goat@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-goat@npm:4.0.0" - checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"esm@npm:^3.2.4": - version: 3.2.25 - resolution: "esm@npm:3.2.25" - checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64 - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:~4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esprima@npm:~3.0.0": - version: 3.0.0 - resolution: "esprima@npm:3.0.0" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: d6d65bc4ec29f1278357013117f944742e06905989d4fd023c4378d11e631c1a990ecea9c3dc394091ab183d8f23b5e9b3ab7f7816643d8dffb35b1bcef9d334 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"estree-to-babel@npm:^4.9.0": - version: 4.9.0 - resolution: "estree-to-babel@npm:4.9.0" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - checksum: 82a6338e66cef2a29351de8eb615a3f967deef86087366f175862d8bc6c497ded4b907b69335b818d91046f79c00464b9ba36ac2200dfad91d9e71e776a0fcb8 - languageName: node - linkType: hard - -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-attach-comments@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - checksum: 8489b977dc420e4af59b03528487b2963d7bfe2d6d265819231dce5a1a5c389109230be102d4b7b85a86ec64f75a7e70b0f306542d56ec557c83f92ec326738a - languageName: node - linkType: hard - -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.0 - resolution: "estree-util-build-jsx@npm:2.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-walker: ^3.0.0 - checksum: 639b76f5395df5234e5424e092c583d656418a07075156947b72e69183c01feeb94946e79002117cd7dff374a25115832ab4af4ad449f1f6cac3594c95006aa5 - languageName: node - linkType: hard - -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.1 - resolution: "estree-util-is-identifier-name@npm:2.0.1" - checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 - languageName: node - linkType: hard - -"estree-util-to-js@npm:^1.1.0": - version: 1.1.0 - resolution: "estree-util-to-js@npm:1.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - astring: ^1.8.0 - source-map: ^0.7.0 - checksum: 3ce2ef2fd78497fa7a0e5250be0f217af9060c819f7ed4f4739285e4ade4ed244536cb88e8ba1e38986af98d3a9064165122bb1622f2c6d57fe7b241b884fc47 - languageName: node - linkType: hard - -"estree-util-visit@npm:^1.0.0": - version: 1.2.0 - resolution: "estree-util-visit@npm:1.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/unist": ^2.0.0 - checksum: d36a36aed82d6cb00d24615889052e22308ff008191b3760f65f93e9d0b06d3bc448af9f99a685947f1c69fba36d9a412da243b0b026096c66ecd74054c3b090 - languageName: node - linkType: hard - -"estree-walker@npm:^3.0.0": - version: 3.0.1 - resolution: "estree-walker@npm:3.0.1" - checksum: 674096950819041f1ee471e63f7aa987f2ed3a3a441cc41a5176e9ed01ea5cfd6487822c3b9c2cddd0e2c8f9d7ef52d32d06147a19b5a9ca9f8ab0c094bd43b9 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.0": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 - languageName: node - linkType: hard - -"events-to-array@npm:^1.0.1": - version: 1.1.2 - resolution: "events-to-array@npm:1.1.2" - checksum: c4f5f0f6d0c8658b96f940f703ac9c8c99effca1dd7b1f8eb030be7a940725b42a72fa5eb405961c171c2e9e1d5b7efa9a75be5cdaba88f3fc0fcce59d0e6a0f - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"exec-sh@npm:^0.3.2": - version: 0.3.6 - resolution: "exec-sh@npm:0.3.6" - checksum: 0be4f06929c8e4834ea4812f29fe59e2dfcc1bc3fc4b4bb71acb38a500c3b394628a05ef7ba432520bc6c5ec4fadab00cc9c513c4ff6a32104965af302e998e0 - languageName: node - linkType: hard - -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: ^6.0.0 - get-stream: ^4.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 - languageName: node - linkType: hard - -"execa@npm:^4.1.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 - strip-final-newline: ^2.0.0 - checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 - languageName: node - linkType: hard - -"execa@npm:^5.0.0, execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - 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 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": - version: 2.0.2 - resolution: "expand-tilde@npm:2.0.2" - dependencies: - homedir-polyfill: ^1.0.1 - checksum: 2efe6ed407d229981b1b6ceb552438fbc9e5c7d6a6751ad6ced3e0aa5cf12f0b299da695e90d6c2ac79191b5c53c613e508f7149e4573abfbb540698ddb7301a - languageName: node - linkType: hard - -"expect-type@npm:^0.14.2": - version: 0.14.2 - resolution: "expect-type@npm:0.14.2" - checksum: b8dba1f67d6562d203359d5f5e7ee9c2066c091a7bf3c8744858cbe801fb6becab760961fa206ad5bfd2c532b2a01f835f8f1a4f86f2ad8e6881c0930b48aca5 - languageName: node - linkType: hard - -"express@npm:^4.10.7, express@npm:^4.13.1, express@npm:^4.17.1": - version: 4.18.2 - resolution: "express@npm:4.18.2" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.11.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"external-editor@npm:^3.0.3": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: ^0.7.0 - iconv-lite: ^0.4.24 - tmp: ^0.0.33 - checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - -"extract-stack@npm:^2.0.0": - version: 2.0.0 - resolution: "extract-stack@npm:2.0.0" - checksum: 16a45ae6cfe7fe105061f192124cb7d98653728d81827426c4f900763f9fda56c13dd9048de6838107898536b969d1c6f98028fcf4092e542fa2616d4dacb34d - languageName: node - linkType: hard - -"extract-zip@npm:^1.6.6": - version: 1.7.0 - resolution: "extract-zip@npm:1.7.0" - dependencies: - concat-stream: ^1.6.2 - debug: ^2.6.9 - mkdirp: ^0.5.4 - yauzl: ^2.10.0 - bin: - extract-zip: cli.js - checksum: 011bab660d738614555773d381a6ba4815d98c1cfcdcdf027e154ebcc9fc8c9ef637b3ea5c9b2144013100071ee41722ed041fc9aacc60f6198ef747cac0c073 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - 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 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fast-ordered-set@npm:^1.0.0": - version: 1.0.3 - resolution: "fast-ordered-set@npm:1.0.3" - dependencies: - blank-object: ^1.0.1 - checksum: c94a229e1c005746cd5cc920ff48003afade14210c0b7453d1d35542b46ed6e4111b94ae3673a664ff2a46835f75d73fa577a98a44e6a4624387735990454f6e - languageName: node - linkType: hard - -"fast-sourcemap-concat@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-sourcemap-concat@npm:2.1.0" - dependencies: - chalk: ^2.0.0 - fs-extra: ^5.0.0 - heimdalljs-logger: ^0.1.9 - memory-streams: ^0.1.3 - mkdirp: ^0.5.0 - source-map: ^0.4.2 - source-map-url: ^0.3.0 - sourcemap-validator: ^1.1.0 - checksum: d8ee2f37ec483f4ff30988186497652e065df81f2286c3f11e2934209736d3662d9f8140d8d1d41cfb9529aff9f1a9a7960d08ac2d92f6fb2ffba3358f32f4d4 - languageName: node - linkType: hard - -"fastest-levenshtein@npm:^1.0.12": - version: 1.0.16 - resolution: "fastest-levenshtein@npm:1.0.16" - checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.13.0 - resolution: "fastq@npm:1.13.0" - dependencies: - reusify: ^1.0.4 - checksum: 32cf15c29afe622af187d12fc9cd93e160a0cb7c31a3bb6ace86b7dea3b28e7b72acde89c882663f307b2184e14782c6c664fa315973c03626c7d4bff070bb0b - languageName: node - linkType: hard - -"fault@npm:^1.0.0": - version: 1.0.4 - resolution: "fault@npm:1.0.4" - dependencies: - format: ^0.2.0 - checksum: 5ac610d8b09424e0f2fa8cf913064372f2ee7140a203a79957f73ed557c0e79b1a3d096064d7f40bde8132a69204c1fe25ec23634c05c6da2da2039cff26c4e7 - languageName: node - linkType: hard - -"faye-websocket@npm:^0.11.3": - version: 0.11.4 - resolution: "faye-websocket@npm:0.11.4" - dependencies: - websocket-driver: ">=0.5.1" - checksum: d49a62caf027f871149fc2b3f3c7104dc6d62744277eb6f9f36e2d5714e847d846b9f7f0d0b7169b25a012e24a594cde11a93034b30732e4c683f20b8a5019fa - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 - languageName: node - linkType: hard - -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"fetch-retry@npm:^5.0.2": - version: 5.0.3 - resolution: "fetch-retry@npm:5.0.3" - checksum: b4eebc04bd41651417e89ae9287e5b9e5421970ce07058c6e1e22f7d9c1cd5f935fc39a328fd66b433247c0ae1bb8a6b2d48c073d5a9f911992f72c5d311b14d - languageName: node - linkType: hard - -"figures@npm:^2.0.0": - version: 2.0.0 - resolution: "figures@npm:2.0.0" - dependencies: - escape-string-regexp: ^1.0.5 - checksum: 081beb16ea57d1716f8447c694f637668322398b57017b20929376aaf5def9823b35245b734cdd87e4832dc96e9c6f46274833cada77bfe15e5f980fea1fd21f - languageName: node - linkType: hard - -"figures@npm:^3.0.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: ^1.0.5 - checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b - languageName: node - linkType: hard - -"file-system-cache@npm:^2.0.0": - version: 2.0.1 - resolution: "file-system-cache@npm:2.0.1" - dependencies: - fs-extra: ^10.1.0 - ramda: ^0.28.0 - checksum: fba527d852dd0d90d21da4f53341584532f8c639a52f79479f543576caf464e333f2c076117e516dcc30ed5de136b48461b5336238daafdf11676bb423606e53 - languageName: node - linkType: hard - -"filelist@npm:^1.0.1": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: ^5.0.1 - checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 - languageName: node - linkType: hard - -"filesize@npm:^6.1.0": - version: 6.4.0 - resolution: "filesize@npm:6.4.0" - checksum: 83619b0a656225e84ba9a73271b80091629c0e88c2936c1ebd36fff96fb0e2fbae0273c2caccd522c02bc1a32ad9eba869c28c6b2c36e06187d25fd298c3dfe8 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"finalhandler@npm:1.1.2": - version: 1.1.2 - resolution: "finalhandler@npm:1.1.2" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - statuses: ~1.5.0 - unpipe: ~1.0.0 - checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 - languageName: node - linkType: hard - -"find-babel-config@npm:^1.1.0, find-babel-config@npm:^1.2.0": - version: 1.2.0 - resolution: "find-babel-config@npm:1.2.0" - dependencies: - json5: ^0.5.1 - path-exists: ^3.0.0 - checksum: 0a1785d3da9f38637885d9d65f183aaa072f51a834f733035e9694e4d0f6983ae8c8e75cd4e08b92af6f595b3b490ee813a1c5a9b14740685aa836fa1e878583 - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" - dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 - languageName: node - linkType: hard - -"find-index@npm:^1.1.0": - version: 1.1.1 - resolution: "find-index@npm:1.1.1" - checksum: 02bb296389021b6126198f87bf5306450359cac8a1332140091ae6968a9b0859d6da7257d2b06012780ea269a0673f2c2945b57fdf0342da339fb48cebea7fd1 - languageName: node - linkType: hard - -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"find-yarn-workspace-root@npm:^2.0.0": - version: 2.0.0 - resolution: "find-yarn-workspace-root@npm:2.0.0" - dependencies: - micromatch: ^4.0.2 - checksum: fa5ca8f9d08fe7a54ce7c0a5931ff9b7e36f9ee7b9475fb13752bcea80ec6b5f180fa5102d60b376d5526ce924ea3fc6b19301262efa0a5d248dd710f3644242 - languageName: node - linkType: hard - -"findup-sync@npm:^4.0.0": - version: 4.0.0 - resolution: "findup-sync@npm:4.0.0" - dependencies: - detect-file: ^1.0.0 - is-glob: ^4.0.0 - micromatch: ^4.0.2 - resolve-dir: ^1.0.1 - checksum: 94131e1107ad63790ed00c4c39ca131a93ea602607bd97afeffd92b69a9a63cf2c6f57d6db88cb753fe748ac7fde79e1e76768ff784247026b7c5ebf23ede3a0 - languageName: node - linkType: hard - -"fireworm@npm:^0.7.0": - version: 0.7.2 - resolution: "fireworm@npm:0.7.2" - dependencies: - async: ~0.2.9 - is-type: 0.0.1 - lodash.debounce: ^3.1.1 - lodash.flatten: ^3.0.2 - minimatch: ^3.0.2 - checksum: 0ad72e2ff34df45a5264da39e504b47964e350fbe575186306c8743799a0330c227870efd67e65d031532b14b5b01a9602c5c691c818b7902818bfd44a8b1aa8 - languageName: node - linkType: hard - -"fixturify-project@npm:^1.10.0": - version: 1.10.0 - resolution: "fixturify-project@npm:1.10.0" - dependencies: - fixturify: ^1.2.0 - tmp: ^0.0.33 - checksum: e92bd6c565005dbdd91ddda2f27f5278587e85601603697960066e8e436828535638f522691db3d640e7bf38e2ae9eb382df243f3eb9a3bc552926da6c8ef5fb - languageName: node - linkType: hard - -"fixturify-project@npm:^2.1.0": - version: 2.1.1 - resolution: "fixturify-project@npm:2.1.1" - dependencies: - fixturify: ^2.1.0 - tmp: ^0.0.33 - type-fest: ^0.11.0 - checksum: 60a435eeba234fa1332f8eb9d6384229a37883b6a175153b8ee0c723a17fad3577cd72777aac21085dd94b6d264ff3e2a77c33675dc75b3dd65c5ea7ec31867f - languageName: node - linkType: hard - -"fixturify@npm:^1.2.0": - version: 1.3.0 - resolution: "fixturify@npm:1.3.0" - dependencies: - "@types/fs-extra": ^5.0.5 - "@types/minimatch": ^3.0.3 - "@types/rimraf": ^2.0.2 - fs-extra: ^7.0.1 - matcher-collection: ^2.0.0 - checksum: e0fd2bcd3c27c40ba080243847f8941b27c377bee9ac24275784ac5612c87dfa0bcb897d661cef3c401c965c7e8d754b63f3c46d10320eaa0a61d539ef450fd6 - languageName: node - linkType: hard - -"fixturify@npm:^2.1.0": - version: 2.1.1 - resolution: "fixturify@npm:2.1.1" - dependencies: - "@types/fs-extra": ^8.1.0 - "@types/minimatch": ^3.0.3 - "@types/rimraf": ^2.0.3 - fs-extra: ^8.1.0 - matcher-collection: ^2.0.1 - walk-sync: ^2.0.2 - checksum: ac66ae40302bc6beed1dfb81eab009ba6aee23ddddc0c043a1b01b65c07a7eada8b6edc3e76beb6ea01e6083c8b6e5686459286137e9c9bca7a7dfcd650eb125 - languageName: node - linkType: hard - -"flow-parser@npm:0.*": - version: 0.190.1 - resolution: "flow-parser@npm:0.190.1" - checksum: 64aeedda7570ac44d3e7af077e0a65ff7cf29f2461f32038144a1a125abb24c50fffb747783305f0edd7afee915f1558a5e1b73b39e644d43e09f2165118764e - languageName: node - linkType: hard - -"follow-redirects@npm:^1.0.0": - version: 1.15.2 - resolution: "follow-redirects@npm:1.15.2" - peerDependenciesMeta: - debug: - optional: true - checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - -"forever-agent@npm:~0.5.0": - version: 0.5.2 - resolution: "forever-agent@npm:0.5.2" - checksum: 668524bd6a380c9e9544c68a660409979d25af80277b96d58147f61c22c8bc17885bc401a978608a318790b69eaa52d9c6abb21e79aa363a59e9c4d5506fb80a - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^7.2.8": - version: 7.2.13 - resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 - peerDependencies: - typescript: ">3.6.0" - vue-template-compiler: "*" - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 3d4694c6fee4b8b2f213d0d10a3f40da770ca0ed3aa2a3dc8d1e701ad1ecaed3a1507f77a1b0cea6ef80539b04d8e5f5f02560e688d310bcb9e8c81f684d2950 - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.1.2": - version: 2.1.3 - resolution: "form-data-encoder@npm:2.1.3" - checksum: f2db77767f2c0f45fcbab717f4c8ec1a952fba372440b841bd0f9f3f7b867e3a26bbe8bf72598127ebcfee5d493caee87942b30e9dff219898a4c12dad1dcedc - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"form-data@npm:~0.1.0": - version: 0.1.4 - resolution: "form-data@npm:0.1.4" - dependencies: - async: ~0.9.0 - combined-stream: ~0.0.4 - mime: ~1.2.11 - checksum: 8ab2dba6dff30bb3a5b8d1564a2e86c353e0b2b907cf82c66e9d64c9be27905e8642c048adfccb6e5b7fe7e000c0f1abff5d33105cabcf18b680f5898f8fb644 - languageName: node - linkType: hard - -"format@npm:^0.2.0": - version: 0.2.2 - resolution: "format@npm:0.2.2" - checksum: 646a60e1336250d802509cf24fb801e43bd4a70a07510c816fa133aa42cdbc9c21e66e9cc0801bb183c5b031c9d68be62e7fbb6877756e52357850f92aa28799 - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"from2@npm:^2.1.1": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: ^2.0.1 - readable-stream: ^2.0.0 - checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b - languageName: node - linkType: hard - -"fs-extra@npm:^0.24.0": - version: 0.24.0 - resolution: "fs-extra@npm:0.24.0" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^2.1.0 - path-is-absolute: ^1.0.0 - rimraf: ^2.2.8 - checksum: 7addd3f7f1df95f0c7d61d87c16531db96e683a8f3ef693a21ba45af4d0fdaf7a6c9799248a4f63ae47f31d631672a05c3178aad2247139a6d2b9363de09c63d - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 - languageName: node - linkType: hard - -"fs-extra@npm:^4.0.2": - version: 4.0.3 - resolution: "fs-extra@npm:4.0.3" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: c5ae3c7043ad7187128e619c0371da01b58694c1ffa02c36fb3f5b459925d9c27c3cb1e095d9df0a34a85ca993d8b8ff6f6ecef868fd5ebb243548afa7fc0936 - languageName: node - linkType: hard - -"fs-extra@npm:^5.0.0": - version: 5.0.0 - resolution: "fs-extra@npm:5.0.0" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: b3dcaf1d545097013c4fa649951c85cad1b845316ab473cc3440254a45e9b0b17d8ca9355af477e982c7d126f1a30417bcf78b1f744593ce77a0f43165f2d5e5 - languageName: node - linkType: hard - -"fs-extra@npm:^7.0.0, fs-extra@npm:^7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf - languageName: node - linkType: hard - -"fs-extra@npm:^8.0.1, fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 - languageName: node - linkType: hard - -"fs-merger@npm:^3.0.1, fs-merger@npm:^3.2.1": - version: 3.2.1 - resolution: "fs-merger@npm:3.2.1" - dependencies: - broccoli-node-api: ^1.7.0 - broccoli-node-info: ^2.1.0 - fs-extra: ^8.0.1 - fs-tree-diff: ^2.0.1 - walk-sync: ^2.2.0 - checksum: bfb93b537919407d947ab89c44f6d85f7cb58d1337aaa9115de0bd38178165b158809ad83c4f5d610d42ce0ee2f81ac7ad0ae5b573a69784b676a8a6ce506500 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0 - languageName: node - linkType: hard - -"fs-tree-diff@npm:^0.5.2, fs-tree-diff@npm:^0.5.3, fs-tree-diff@npm:^0.5.4, fs-tree-diff@npm:^0.5.6": - version: 0.5.9 - resolution: "fs-tree-diff@npm:0.5.9" - dependencies: - heimdalljs-logger: ^0.1.7 - object-assign: ^4.1.0 - path-posix: ^1.0.0 - symlink-or-copy: ^1.1.8 - checksum: 5221dee3baa76d597c471aa8786d552452ee2a58de63f0fcc38dd618cafd5d776760f8afcd19ab796c2a8cc584191c46431464096ea347b4158e1a14cb690ed1 - languageName: node - linkType: hard - -"fs-tree-diff@npm:^2.0.0, fs-tree-diff@npm:^2.0.1": - version: 2.0.1 - resolution: "fs-tree-diff@npm:2.0.1" - dependencies: - "@types/symlink-or-copy": ^1.2.0 - heimdalljs-logger: ^0.1.7 - object-assign: ^4.1.0 - path-posix: ^1.0.0 - symlink-or-copy: ^1.1.8 - checksum: ea7927af283b1db3994b98e4c636ed7f8ecfcfb39dc205b57841b22f8ebf39e97649dca07b16ae2e421b000d81b6d96449f32d4dc78742ccb22dfd19db160a45 - languageName: node - linkType: hard - -"fs-updater@npm:^1.0.4": - version: 1.0.4 - resolution: "fs-updater@npm:1.0.4" - dependencies: - can-symlink: ^1.0.0 - clean-up-path: ^1.0.0 - heimdalljs: ^0.2.5 - heimdalljs-logger: ^0.1.9 - rimraf: ^2.6.2 - checksum: 8c46798de408fbb1c7da339de2a82334261c120aef235bc30ef66e617fd1a735d0279654fc27373597d4826c325fb08a299e3b05252e0289d8d9e749c67dd96d - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^2.1.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^2.1.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - 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 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-port@npm:^5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 - languageName: node - linkType: hard - -"get-stdin@npm:^4.0.1": - version: 4.0.1 - resolution: "get-stdin@npm:4.0.1" - checksum: 4f73d3fe0516bc1f3dc7764466a68ad7c2ba809397a02f56c2a598120e028430fcff137a648a01876b2adfb486b4bc164119f98f1f7d7c0abd63385bdaa0113f - languageName: node - linkType: hard - -"get-stream@npm:^4.0.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^5.0.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - -"git-hooks-list@npm:1.0.3": - version: 1.0.3 - resolution: "git-hooks-list@npm:1.0.3" - checksum: a1dd03d39c1d727ba08a35dbdbdcc6e96de8c4170c942dc95bf787ca6e34998d39fb5295a00242b58a3d265de0b69a0686d0cf583baa6b7830f268542c4576b9 - languageName: node - linkType: hard - -"git-repo-info@npm:^2.1.1": - version: 2.1.1 - resolution: "git-repo-info@npm:2.1.1" - checksum: 58cedacae81bbe8fedc81d226346c472d11357d1758140ab0ee5d0c3360ad5b7a9d8613ca6e8b50d089d073e5b3f2e2893536d0cb57bced5f558dc913d5e21c6 - languageName: node - linkType: hard - -"github-slugger@npm:^1.0.0": - version: 1.4.0 - resolution: "github-slugger@npm:1.4.0" - checksum: 4f52e7a21f5c6a4c5328f01fe4fe13ae8881fea78bfe31f9e72c4038f97e3e70d52fb85aa7633a52c501dc2486874474d9abd22aa61cbe9b113099a495551c6b - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 - languageName: node - linkType: hard - -"glob@npm:^5.0.10": - version: 5.0.15 - resolution: "glob@npm:5.0.15" - dependencies: - inflight: ^1.0.4 - inherits: 2 - minimatch: 2 || 3 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: f9742448303460672607e569457f1b57e486a79a985e269b69465834d2075b243378225f65dc54c09fcd4b75e4fb34442aec88f33f8c65fa4abccc8ee2dc2f5d - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.0.4, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.0 - resolution: "global-dirs@npm:3.0.0" - dependencies: - ini: 2.0.0 - checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 - languageName: node - linkType: hard - -"global-modules@npm:^1.0.0": - version: 1.0.0 - resolution: "global-modules@npm:1.0.0" - dependencies: - global-prefix: ^1.0.1 - is-windows: ^1.0.1 - resolve-dir: ^1.0.0 - checksum: 10be68796c1e1abc1e2ba87ec4ea507f5629873b119ab0cd29c07284ef2b930f1402d10df01beccb7391dedd9cd479611dd6a24311c71be58937beaf18edf85e - languageName: node - linkType: hard - -"global-prefix@npm:^1.0.1": - version: 1.0.2 - resolution: "global-prefix@npm:1.0.2" - dependencies: - expand-tilde: ^2.0.2 - homedir-polyfill: ^1.0.1 - ini: ^1.3.4 - is-windows: ^1.0.1 - which: ^1.2.14 - checksum: 061b43470fe498271bcd514e7746e8a8535032b17ab9570517014ae27d700ff0dca749f76bbde13ba384d185be4310d8ba5712cb0e74f7d54d59390db63dd9a0 - languageName: node - linkType: hard - -"global@npm:^4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globby@npm:10.0.0": - version: 10.0.0 - resolution: "globby@npm:10.0.0" - dependencies: - "@types/glob": ^7.1.1 - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.0.3 - glob: ^7.1.3 - ignore: ^5.1.1 - merge2: ^1.2.3 - slash: ^3.0.0 - checksum: fbff58d2fcaedd9207901f6e3b5341ff885b6d499c3a095f7befde0fd03ec1ea634452a82f81e894e46f6a5d704da44b842ba93066f90dced52adf84d4b8d1cc - languageName: node - linkType: hard - -"globby@npm:^11.0.2": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - 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 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"got@npm:^12.1.0": - version: 12.5.2 - resolution: "got@npm:12.5.2" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - cacheable-lookup: ^7.0.0 - cacheable-request: ^10.2.1 - decompress-response: ^6.0.0 - form-data-encoder: ^2.1.2 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^3.0.0 - checksum: f84b704ca8edb5af17b4df32d21729a0a837a680d197c9d5a922090024ffc15d71a2c5a470de57ca2bb3e3e55aa7e996767d9106df7c57eb99d8de84ce56691f - languageName: node - linkType: hard - -"graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"graceful-readlink@npm:>= 1.0.0": - version: 1.0.1 - resolution: "graceful-readlink@npm:1.0.1" - checksum: 4c1889ca0a6fc0bb9585b55c26a99719be132cbc4b7d84036193b70608059b9783e52e2a866d5a8e39821b16a69e899644ca75c6206563f1319b6720836b9ab2 - languageName: node - linkType: hard - -"growly@npm:^1.3.0": - version: 1.3.0 - resolution: "growly@npm:1.3.0" - checksum: 53cdecd4c16d7d9154a9061a9ccb87d602e957502ca69b529d7d1b2436c2c0b700ec544fc6b3e4cd115d59b81e62e44ce86bd0521403b579d3a2a97d7ce72a44 - languageName: node - linkType: hard - -"handlebars@npm:^4.0.4, handlebars@npm:^4.7.3, handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"has-ansi@npm:^2.0.0": - version: 2.0.0 - resolution: "has-ansi@npm:2.0.0" - dependencies: - ansi-regex: ^2.0.0 - checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec - languageName: node - linkType: hard - -"has-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "has-ansi@npm:3.0.0" - dependencies: - ansi-regex: ^3.0.0 - checksum: d52ff546c982fb8646e6aa6a4e3741c123a29dcd0342db0e98cd17561356fc47fb03cc0cab9ad2000887facc39b8e7ce385089bdce548e6ff5463858ed5c12c1 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - -"has-yarn@npm:^3.0.0": - version: 3.0.0 - resolution: "has-yarn@npm:3.0.0" - checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hash-for-dep@npm:^1.0.2, hash-for-dep@npm:^1.4.7, hash-for-dep@npm:^1.5.0, hash-for-dep@npm:^1.5.1": - version: 1.5.1 - resolution: "hash-for-dep@npm:1.5.1" - dependencies: - broccoli-kitchen-sink-helpers: ^0.3.1 - heimdalljs: ^0.2.3 - heimdalljs-logger: ^0.1.7 - path-root: ^0.1.1 - resolve: ^1.10.0 - resolve-package-path: ^1.0.11 - checksum: ea9854cfeaedc5e3b7ba38f902a9173919f3f1abef13ee27ddc15b5ec8768be340762ed502e9d16b3ffbeb8e8af0f099cb0348215f9de39c31bb722af52895d9 - languageName: node - linkType: hard - -"hast-util-parse-selector@npm:^2.0.0": - version: 2.2.5 - resolution: "hast-util-parse-selector@npm:2.2.5" - checksum: 22ee4afbd11754562144cb3c4f3ec52524dafba4d90ee52512902d17cf11066d83b38f7bdf6ca571bbc2541f07ba30db0d234657b6ecb8ca4631587466459605 - languageName: node - linkType: hard - -"hast-util-to-estree@npm:^2.0.0, hast-util-to-estree@npm:^2.0.2": - version: 2.1.0 - resolution: "hast-util-to-estree@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - comma-separated-tokens: ^2.0.0 - estree-util-attach-comments: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - hast-util-whitespace: ^2.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 - unist-util-position: ^4.0.0 - zwitch: ^2.0.0 - checksum: 1e14cfbfd57ff00ffda48cfef23bcebb6ebbea0385bb03d748a9432591c60f0a69428baaba82375a8cdbc924217ba9e75d30820b3641fdbe12ae62aa6c3f90a7 - languageName: node - linkType: hard - -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "hast-util-whitespace@npm:2.0.0" - checksum: abeb5386075bfb0facfce89eed0e13d2cb27a0910cec8fd234b48821a1538387a73fa7f458842e8c404148dc69434acbc10488d75b02817e460652c2c894c024 - languageName: node - linkType: hard - -"hastscript@npm:^6.0.0": - version: 6.0.0 - resolution: "hastscript@npm:6.0.0" - dependencies: - "@types/hast": ^2.0.0 - comma-separated-tokens: ^1.0.0 - hast-util-parse-selector: ^2.0.0 - property-information: ^5.0.0 - space-separated-tokens: ^1.0.0 - checksum: 5e50b85af0d2cb7c17979cb1ddca75d6b96b53019dd999b39e7833192c9004201c3cee6445065620ea05d0087d9ae147a4844e582d64868be5bc6b0232dfe52d - languageName: node - linkType: hard - -"hawk@npm:1.1.1": - version: 1.1.1 - resolution: "hawk@npm:1.1.1" - dependencies: - boom: 0.4.x - cryptiles: 0.2.x - hoek: 0.9.x - sntp: 0.2.x - checksum: 5c0701e1cfe6dd782b6b8677acbb4b08f978937264b982298377a1215c7ce5d1a31e117f744c3b5273b7651c7306d4a58e9bac2d203cc1e2f0e8dba5cac20772 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"heimdalljs-fs-monitor@npm:^1.1.0": - version: 1.1.1 - resolution: "heimdalljs-fs-monitor@npm:1.1.1" - dependencies: - callsites: ^3.1.0 - clean-stack: ^2.2.0 - extract-stack: ^2.0.0 - heimdalljs: ^0.2.3 - heimdalljs-logger: ^0.1.7 - checksum: 0932adf032888bcc22c9ff8b5d832c708f1303b04e5a8c34b88dac09948bf6a45e4ea7d34bfdf30a3aaa41eabb0311d0e00e0fad1da862e16cc0950db50101cd - languageName: node - linkType: hard - -"heimdalljs-graph@npm:^1.0.0": - version: 1.0.0 - resolution: "heimdalljs-graph@npm:1.0.0" - checksum: eef4a3de227fa4b3e6b20f634b7c1bbb3c7ae9a83639444ce7f5f8ffbc979e205021538452ecd92804d49013245ed9a989075c8c9147cca8666f4d7a1983da93 - languageName: node - linkType: hard - -"heimdalljs-logger@npm:^0.1.10, heimdalljs-logger@npm:^0.1.7, heimdalljs-logger@npm:^0.1.9": - version: 0.1.10 - resolution: "heimdalljs-logger@npm:0.1.10" - dependencies: - debug: ^2.2.0 - heimdalljs: ^0.2.6 - checksum: 40a698843aa4773e3376f4e000c87599460971f4411b402985526a8f82563f5486fc85bfde90ce3e63d25381cf417289e870242321ce92ade32ea3b91585cfad - languageName: node - linkType: hard - -"heimdalljs@npm:^0.2.0, heimdalljs@npm:^0.2.1, heimdalljs@npm:^0.2.3, heimdalljs@npm:^0.2.5, heimdalljs@npm:^0.2.6": - version: 0.2.6 - resolution: "heimdalljs@npm:0.2.6" - dependencies: - rsvp: ~3.2.1 - checksum: 5b28d3df4e77ea94293b43c29f0a358381aa811079817f780a1dafc9d244c891a0a713691a3c53d0d2dc31a76484fb36d998e7ae5040ef4b52e8c4a00d2173ae - languageName: node - linkType: hard - -"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": - version: 10.7.3 - resolution: "highlight.js@npm:10.7.3" - checksum: defeafcd546b535d710d8efb8e650af9e3b369ef53e28c3dc7893eacfe263200bba4c5fcf43524ae66d5c0c296b1af0870523ceae3e3104d24b7abf6374a4fea - languageName: node - linkType: hard - -"hoek@npm:0.9.x": - version: 0.9.1 - resolution: "hoek@npm:0.9.1" - checksum: 43d1faa57c7af7a49f9d07846e50fbfec6f741e51fa579796f5a76cb546112b45bee6d141f1c9112225b0f557715e2353c0db45633ed3b6a9e2803f106b044ac - languageName: node - linkType: hard - -"hoek@npm:4.x.x": - version: 4.2.1 - resolution: "hoek@npm:4.2.1" - checksum: 3f28857c9d4c29e0d4c0bfb0d73973529fdd700266e963f9964c59ad92a4bc08943b94c4ada97c105a20c78d4dec98e4fc2c08025660743722558e6da793fd0f - languageName: node - linkType: hard - -"homedir-polyfill@npm:^1.0.1": - version: 1.0.3 - resolution: "homedir-polyfill@npm:1.0.3" - dependencies: - parse-passwd: ^1.0.0 - checksum: 18dd4db87052c6a2179d1813adea0c4bfcfa4f9996f0e226fefb29eb3d548e564350fa28ec46b0bf1fbc0a1d2d6922ceceb80093115ea45ff8842a4990139250 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd - languageName: node - linkType: hard - -"hosted-git-info@npm:^4.0.1": - version: 4.1.0 - resolution: "hosted-git-info@npm:4.1.0" - dependencies: - lru-cache: ^6.0.0 - checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" - dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - webpack: ^5.20.0 - checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 - languageName: node - linkType: hard - -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - domutils: ^2.5.2 - entities: ^2.0.0 - checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e - languageName: node - linkType: hard - -"htmlparser2@npm:^8.0.1": - version: 8.0.1 - resolution: "htmlparser2@npm:8.0.1" - dependencies: - domelementtype: ^2.3.0 - domhandler: ^5.0.2 - domutils: ^3.0.1 - entities: ^4.3.0 - checksum: 06d5c71e8313597722bc429ae2a7a8333d77bd3ab07ccb916628384b37332027b047f8619448d8f4a3312b6609c6ea3302a4e77435d859e9e686999e6699ca39 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: ">= 1.4.0 < 2" - checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.8 - resolution: "http-parser-js@npm:0.5.8" - checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 - languageName: node - linkType: hard - -"http-proxy@npm:^1.13.1, http-proxy@npm:^1.18.1": - version: 1.18.1 - resolution: "http-proxy@npm:1.18.1" - dependencies: - eventemitter3: ^4.0.0 - follow-redirects: ^1.0.0 - requires-port: ^1.0.0 - checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 - languageName: node - linkType: hard - -"http-signature@npm:~0.10.0": - version: 0.10.1 - resolution: "http-signature@npm:0.10.1" - dependencies: - asn1: 0.1.11 - assert-plus: ^0.1.5 - ctype: 0.5.3 - checksum: d4d02f401efdf84517a150b621e3de2ef5ceccbac59d52f9df28db0dfabae933795717c7d74480e7dd65393f69f6b0e120cc1ba215ebdf7b8bac0241689a88da - languageName: node - linkType: hard - -"http2-wrapper@npm:^2.1.10": - version: 2.1.11 - resolution: "http2-wrapper@npm:2.1.11" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 5da05aa2c77226ac9cc82c616383f59c8f31b79897b02ecbe44b09714be1fca1f21bb184e672a669ca2830eefea4edac5f07e71c00cb5a8c5afec8e5a20cfaf7 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^4.0.0": - version: 4.0.0 - resolution: "https-proxy-agent@npm:4.0.0" - dependencies: - agent-base: 5 - debug: 4 - checksum: 19471d5aae3e747b1c98b17556647e2a1362e68220c6b19585a8527498f32e62e03c41d2872d059d8720d56846bd7460a80ac06f876bccfa786468ff40dd5eef - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"https@npm:^1.0.0": - version: 1.0.0 - resolution: "https@npm:1.0.0" - checksum: ccea8a8363a018d4b241db7748cff3a85c9f5b71bf80639e9c37dc6823f590f35dda098b80b726930e9f945387c8bfd6b1461df25cab5bf65a31903d81875b5d - languageName: node - linkType: hard - -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"ignore@npm:^5.1.1, ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-lazy@npm:^4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - -"import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" - dependencies: - pkg-dir: ^4.2.0 - resolve-cwd: ^3.0.0 - bin: - import-local-fixture: fixtures/cli.js - checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflection@npm:^1.12.0": - version: 1.13.4 - resolution: "inflection@npm:1.13.4" - checksum: 6744feede9998ad8abd2b1db4af79f494a166e656a0aa949d90c8f4a945c1d07038a3756bf7af78c8f6fce368ba213a7ebf35da3edeffd39f1da0ff465eed6eb - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"inline-source-map-comment@npm:^1.0.5": - version: 1.0.5 - resolution: "inline-source-map-comment@npm:1.0.5" - dependencies: - chalk: ^1.0.0 - get-stdin: ^4.0.1 - minimist: ^1.1.1 - sum-up: ^1.0.1 - xtend: ^4.0.0 - bin: - inline-source-map-comment: cli.js - checksum: 0eedf1c77d35cddc89e17d5b738c273471a50521c2103dde056e36460a1bcb747bc2eb5a7de052ded5e26f23154064232d1a29f5116dd273610ed6ab03179ede - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 - languageName: node - linkType: hard - -"inquirer@npm:^6": - version: 6.5.2 - resolution: "inquirer@npm:6.5.2" - dependencies: - ansi-escapes: ^3.2.0 - chalk: ^2.4.2 - cli-cursor: ^2.1.0 - cli-width: ^2.0.0 - external-editor: ^3.0.3 - figures: ^2.0.0 - lodash: ^4.17.12 - mute-stream: 0.0.7 - run-async: ^2.2.0 - rxjs: ^6.4.0 - string-width: ^2.1.0 - strip-ansi: ^5.1.0 - through: ^2.3.6 - checksum: 175ad4cd1ebed493b231b240185f1da5afeace5f4e8811dfa83cf55dcae59c3255eaed990aa71871b0fd31aa9dc212f43c44c50ed04fb529364405e72f484d28 - languageName: node - linkType: hard - -"inquirer@npm:^7.3.3": - version: 7.3.3 - resolution: "inquirer@npm:7.3.3" - dependencies: - ansi-escapes: ^4.2.1 - chalk: ^4.1.0 - cli-cursor: ^3.1.0 - cli-width: ^3.0.0 - external-editor: ^3.0.3 - figures: ^3.0.0 - lodash: ^4.17.19 - mute-stream: 0.0.8 - run-async: ^2.4.0 - rxjs: ^6.6.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - through: ^2.3.6 - checksum: 4d387fc1eb6126acbd58cbdb9ad99d2887d181df86ab0c2b9abdf734e751093e2d5882c2b6dc7144d9ab16b7ab30a78a1d7f01fb6a2850a44aeb175d1e3f8778 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - -"interpret@npm:^2.2.0": - version: 2.2.0 - resolution: "interpret@npm:2.2.0" - checksum: f51efef7cb8d02da16408ffa3504cd6053014c5aeb7bb8c223727e053e4235bf565e45d67028b0c8740d917c603807aa3c27d7bd2f21bf20b6417e2bb3e5fd6e - languageName: node - linkType: hard - -"into-stream@npm:^3.1.0": - version: 3.1.0 - resolution: "into-stream@npm:3.1.0" - dependencies: - from2: ^2.1.1 - p-is-promise: ^1.1.0 - checksum: e6e1a202227b20c446c251ef95348b3e8503cdc75aa2a09076f8821fc42c1b7fd43fabaeb8ed3cf9eb875942cfa4510b66949c5317997aa640921cc9bbadcd17 - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: ^1.0.0 - checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.0": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - -"is-alphabetical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphabetical@npm:1.0.4" - checksum: 6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb - languageName: node - linkType: hard - -"is-alphabetical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1" - checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa - languageName: node - linkType: hard - -"is-alphanumerical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphanumerical@npm:1.0.4" - dependencies: - is-alphabetical: ^1.0.0 - is-decimal: ^1.0.0 - checksum: e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f - languageName: node - linkType: hard - -"is-alphanumerical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1" - dependencies: - is-alphabetical: ^2.0.0 - is-decimal: ^2.0.0 - checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: ^2.0.0 - bin: - is-ci: bin.js - checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: ^3.2.0 - bin: - is-ci: bin.js - checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e - languageName: node - linkType: hard - -"is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-decimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-decimal@npm:1.0.4" - checksum: ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96 - languageName: node - linkType: hard - -"is-decimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-decimal@npm:2.0.1" - checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-function@npm:^1.0.2": - version: 1.0.2 - resolution: "is-function@npm:1.0.2" - checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b - languageName: node - linkType: hard - -"is-git-url@npm:^1.0.0": - version: 1.0.0 - resolution: "is-git-url@npm:1.0.0" - checksum: 77d8a147ca57cca1544e3a363400bece8e1d765d3da245e38262654281aeb4c97a3c798868cf8931a2ed51bb413611f98c113d3ce5d4f8eb9e98139e2fb435c1 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-hexadecimal@npm:1.0.4" - checksum: a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1" - checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: ^3.0.0 - is-path-inside: ^3.0.2 - checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-language-code@npm:^2.0.0": - version: 2.0.0 - resolution: "is-language-code@npm:2.0.0" - checksum: 76c166e04c62f975e71d4b7e8f12a58ed90cd3f2226d11e75df49bb7391e3c171accb6fbde9ef29216017b20d6ef76dd39243d947dd5c84d68cf89481483726d - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-npm@npm:^6.0.0": - version: 6.0.0 - resolution: "is-npm@npm:6.0.0" - checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-reference@npm:^3.0.0": - version: 3.0.0 - resolution: "is-reference@npm:3.0.0" - dependencies: - "@types/estree": "*" - checksum: 408bb3442ff5f90a9740bf578e8fa2863f68bc07ee99b92079a358a34af58341dc7014b054e8cc51a3da5d1ab83f635b6ee1ce2982db7899a128d7a05173898f - languageName: node - linkType: hard - -"is-regex@npm:^1.1.2, is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-type@npm:0.0.1": - version: 0.0.1 - resolution: "is-type@npm:0.0.1" - dependencies: - core-util-is: ~1.0.0 - checksum: c0ea697d42775270b0eefbe31f01f40e4ab1c86c31580d846b7f3b5a46f744b89248c7bcbb9e2e51325592bdf5d24e0dd265e1cdabd052241a5f3f0c72fd58e1 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "is-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - checksum: 11910f1e58755fef43bf0074e52fa5b932bf101ec65d613e0a83d40e8e4c6e3f2ee142d624ebc7624c091d3bbe921131f8db7d36ecbbb71909f2fe310c1faa65 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.4.0": - version: 0.4.0 - resolution: "is-yarn-global@npm:0.4.0" - checksum: a5fcf09c3a426af7d9d7d5d48cfe203fbe132961e00f0e8a818a9a1a1f49423af907422905088522380de782d8c2ab787222d8fcc53b011c2b22bacb5087c6c2 - languageName: node - linkType: hard - -"isarray@npm:0.0.1": - version: 0.0.1 - resolution: "isarray@npm:0.0.1" - checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isbinaryfile@npm:^4.0.6": - version: 4.0.10 - resolution: "isbinaryfile@npm:4.0.10" - checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 - languageName: node - linkType: hard - -"isemail@npm:3.x.x": - version: 3.2.0 - resolution: "isemail@npm:3.2.0" - dependencies: - punycode: 2.x.x - checksum: 77adfbe8d6b3f9970c37516e008fd1c2e33be186f4cd09b31daf37a9fa8f82adc0dd8ce4bd12818f0c0e63018f9ec0c22490793d704ed635770c98a9d48b21c4 - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isobject@npm:^4.0.0": - version: 4.0.0 - resolution: "isobject@npm:4.0.0" - checksum: bbcb522e46d54fb22418ba49fb9a82057ffa201c8401fb6e018c042e2c98cf7d9c7b185aff88e035ec8adea0814506dc2aeff2d08891bbc158e1671a49e99c06 - languageName: node - linkType: hard - -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 - languageName: node - linkType: hard - -"istextorbinary@npm:2.1.0": - version: 2.1.0 - resolution: "istextorbinary@npm:2.1.0" - dependencies: - binaryextensions: 1 || 2 - editions: ^1.1.1 - textextensions: 1 || 2 - checksum: f07e2c8648663ffa609ee89fa6a50157bcd4d99b8fee3c99c5d5114c068d733e3b5ba16f0c9b704cbf7fd8a1cab0836b1451b40de56c790a283fbabf34d52167 - languageName: node - linkType: hard - -"jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" - dependencies: - async: ^3.2.3 - chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 - bin: - jake: ./bin/cli.js - checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba - languageName: node - linkType: hard - -"jest-haste-map@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-haste-map@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/graceful-fs": ^4.1.2 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.1.2 - graceful-fs: ^4.2.4 - jest-regex-util: ^26.0.0 - jest-serializer: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - micromatch: ^4.0.2 - sane: ^4.0.3 - walker: ^1.0.7 - dependenciesMeta: - fsevents: - optional: true - checksum: 8ad5236d5646d2388d2bd58a57ea53698923434f43d59ea9ebdc58bce4d0b8544c8de2f7acaa9a6d73171f04460388b2b6d7d6b6c256aea4ebb8780140781596 - languageName: node - linkType: hard - -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 930a00665e8dfbedc29140678b4a54f021b41b895cf35050f76f557c1da3ac48ff42dd7b18ba2ccba6f4e518c6445d6753730d03ec7049901b93992db1ef0483 - languageName: node - linkType: hard - -"jest-serializer@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-serializer@npm:26.6.2" - dependencies: - "@types/node": "*" - graceful-fs: ^4.2.4 - checksum: dbecfb0d01462fe486a0932cf1680cf6abb204c059db2a8f72c6c2a7c9842a82f6d256874112774cea700764ed8f38fc9e3db982456c138d87353e3390e746fe - languageName: node - linkType: hard - -"jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - is-ci: ^2.0.0 - micromatch: ^4.0.2 - checksum: 3c6a5fba05c4c6892cd3a9f66196ea8867087b77a5aa1a3f6cd349c785c3f1ca24abfd454664983aed1a165cab7846688e44fe8630652d666ba326b08625bc3d - languageName: node - linkType: hard - -"jest-worker@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 - languageName: node - linkType: hard - -"joi@npm:^12.0.0": - version: 12.0.0 - resolution: "joi@npm:12.0.0" - dependencies: - hoek: 4.x.x - isemail: 3.x.x - topo: 2.x.x - checksum: 07c57e29a37865465c7f66d55660d4406f79b1348e790a6202cee9fc0993fe053b589a7863f41595b4ef7bace8b266e46bf9b93a9a717cd6699a936ba45a9eda - languageName: node - linkType: hard - -"jquery-deferred@npm:^0.3.0": - version: 0.3.1 - resolution: "jquery-deferred@npm:0.3.1" - checksum: def8b86bd664eb4f24da83b7482288cd37d4dec285e4987e490484e72f0116e2fbc34ed22f72ad7af17bb71301cc19e456c1a18d92ec18ac49f3ed654b529ddd - languageName: node - linkType: hard - -"jquery@npm:^3.5.0": - version: 3.6.1 - resolution: "jquery@npm:3.6.1" - checksum: 6177d866a74f1137cad800f142c7cdbd5ab19cd4282546f8bdb4890c9f933b1d542ab96f2aa15d007e43c98de7315b0513e849ec5359d3ac5640f720892fe547 - languageName: node - linkType: hard - -"js-string-escape@npm:^1.0.1": - version: 1.0.1 - resolution: "js-string-escape@npm:1.0.1" - checksum: f11e0991bf57e0c183b55c547acec85bd2445f043efc9ea5aa68b41bd2a3e7d3ce94636cb233ae0d84064ba4c1a505d32e969813c5b13f81e7d4be12c59256fe - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0, js-yaml@npm:^3.2.5, js-yaml@npm:^3.2.7": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - -"jscodeshift@npm:^0.13.1": - version: 0.13.1 - resolution: "jscodeshift@npm:0.13.1" - dependencies: - "@babel/core": ^7.13.16 - "@babel/parser": ^7.13.16 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/preset-flow": ^7.13.13 - "@babel/preset-typescript": ^7.13.0 - "@babel/register": ^7.13.16 - babel-core: ^7.0.0-bridge.0 - chalk: ^4.1.2 - flow-parser: 0.* - graceful-fs: ^4.2.4 - micromatch: ^3.1.10 - neo-async: ^2.5.0 - node-dir: ^0.1.17 - recast: ^0.20.4 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 - peerDependencies: - "@babel/preset-env": ^7.1.6 - bin: - jscodeshift: bin/jscodeshift.js - checksum: 1c35938de5fc29cafec80e2c37d5c3411f85cd5d40e0243b52f2da0c1ab4b659daddfd62de558eca5d562303616f7838097727b651f4ad8e32b1e96f169cdd76 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.3.x": - version: 0.3.0 - resolution: "jsesc@npm:0.3.0" - bin: - jsesc: bin/jsesc - checksum: a5222fb2a599e874461ca384b59ecdc6449d52b6dd9d6ce0e878917e49ac6eb304e549cd69cb80bcf710d65aba130b31c795d1f1cd59f490d78e93d743bb6a4b - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-api-serializer@npm:^1.11.0": - version: 1.15.1 - resolution: "json-api-serializer@npm:1.15.1" - dependencies: - into-stream: ^3.1.0 - joi: ^12.0.0 - lodash: ^4.5.1 - stream-to-array: ^2.3.0 - through2: ^2.0.3 - unique-stream: ^2.2.1 - checksum: 07fc30334e6c167087fd37404b9bc4426d3e87e875a9b8023dd0d4d9baaa119feec4089f70039a02fdf9320d9e709488f94f096bd925d7ac68fce597e6356757 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 - languageName: node - linkType: hard - -"json-stable-stringify@npm:^1.0.0, json-stable-stringify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify@npm:1.0.1" - dependencies: - jsonify: ~0.0.0 - checksum: 65d6cbf0fca72a4136999f65f4401cf39a129f7aeff0fdd987ac3d3423a2113659294045fb8377e6e20d865cac32b1b8d70f3d87346c9786adcee60661d96ca5 - languageName: node - linkType: hard - -"json-stringify-safe@npm:~5.0.0": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"json5@npm:^0.5.1": - version: 0.5.1 - resolution: "json5@npm:0.5.1" - bin: - json5: lib/cli.js - checksum: 9b85bf06955b23eaa4b7328aa8892e3887e81ca731dd27af04a5f5f1458fbc5e1de57a24442e3272f8a888dd1abe1cb68eb693324035f6b3aeba4fcab7667d62 - languageName: node - linkType: hard - -"json5@npm:^2.1.2, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" - bin: - json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b - languageName: node - linkType: hard - -"jsonfile@npm:^2.1.0": - version: 2.4.0 - resolution: "jsonfile@npm:2.4.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: f5064aabbc9e35530dc471d8b203ae1f40dbe949ddde4391c6f6a6d310619a15f0efdae5587df594d1d70c555193aaeee9d2ed4aec9ffd5767bd5e4e62d49c3d - languageName: node - linkType: hard - -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"jsonify@npm:~0.0.0": - version: 0.0.1 - resolution: "jsonify@npm:0.0.1" - checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 - languageName: node - linkType: hard - -"keyv@npm:^4.5.0": - version: 4.5.0 - resolution: "keyv@npm:4.5.0" - dependencies: - json-buffer: 3.0.1 - checksum: d294873cf88ec8f691e5edeb7b4b884f886c5f021a01902a0e243c362449db2b55419d7fb7187d059add747b7398321e39e44d391b65f94935174ce13452714d - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - -"latest-version@npm:^7.0.0": - version: 7.0.0 - resolution: "latest-version@npm:7.0.0" - dependencies: - package-json: ^8.1.0 - checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 - languageName: node - linkType: hard - -"lazy-universal-dotenv@npm:^3.0.1": - version: 3.0.1 - resolution: "lazy-universal-dotenv@npm:3.0.1" - dependencies: - "@babel/runtime": ^7.5.0 - app-root-dir: ^1.0.2 - core-js: ^3.0.4 - dotenv: ^8.0.0 - dotenv-expand: ^5.1.0 - checksum: a80509d8cb40dafcfab5859335920754a21814320aa16115e58c0ae5ef3b1d8bd4daa96349ea548e2833f2f89269ddbb103ebd55be06cfdba00e0af6785b5ba7 - languageName: node - linkType: hard - -"leek@npm:0.0.24": - version: 0.0.24 - resolution: "leek@npm:0.0.24" - dependencies: - debug: ^2.1.0 - lodash.assign: ^3.2.0 - rsvp: ^3.0.21 - checksum: da2c554c7ea37c6e5ef680ce1940f7be2c2eef5661dc7f74e1bc86ac65136525fdb11e1d1f8f5c582ea8b9e4c8a31ba61d82e1192495a8f91bf1ca702b8d19f2 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"linkify-it@npm:^2.0.0": - version: 2.2.0 - resolution: "linkify-it@npm:2.2.0" - dependencies: - uc.micro: ^1.0.1 - checksum: d198871d0b3f3cfdb745dae564bfd6743474f20cd0ef1057e6ca29451834749e7f3da52b59b4de44e98f31a1e5c71bdad160490d4ae54de251cbcde57e4d7837 - languageName: node - linkType: hard - -"linkify-it@npm:^3.0.1": - version: 3.0.3 - resolution: "linkify-it@npm:3.0.3" - dependencies: - uc.micro: ^1.0.1 - checksum: 31367a4bb70c5bbc9703246236b504b0a8e049bcd4e0de4291fa50f0ebdebf235b5eb54db6493cb0b1319357c6eeafc4324c9f4aa34b0b943d9f2e11a1268fbc - languageName: node - linkType: hard - -"linkify-it@npm:~1.2.0": - version: 1.2.4 - resolution: "linkify-it@npm:1.2.4" - dependencies: - uc.micro: ^1.0.1 - checksum: f0e2d673d59cb06909205b4f4273ae37f92f1405795950c61e8ca87b72e24bf0c7e07e9ca77e328b7a6b219e6b637c4d50cf12151e45555292524c29ad47483c - languageName: node - linkType: hard - -"livereload-js@npm:^3.3.1": - version: 3.4.1 - resolution: "livereload-js@npm:3.4.1" - checksum: 31a432b6ea7aafb445e2ec1f5d4c2db9ea20ff47816fdcb36e238b13798b11e9b2e731e5f10993a566b5bc6e5fb595f39000a6939d3d2d0baf1c16f4933cf8cf - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "loader-utils@npm:2.0.3" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: d055c61ce5927b64cb4af40218606603a7d3a39adb7b6eec116bb31d19203875950e478152dea056de404eced8e87e9bfd336ec636591ded040ea451f63c7d88 - languageName: node - linkType: hard - -"loader.js@npm:^4.7.0": - version: 4.7.0 - resolution: "loader.js@npm:4.7.0" - checksum: 947412e7665e47ed1fefcd5c07b8fbcfd9991ccc4f39aa3ad631fc0be301c4410f57a2ed762e710450643210072fbbb54ea00128f9c449d76ee79fe5b8481ec6 - languageName: node - linkType: hard - -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash._baseassign@npm:^3.0.0": - version: 3.2.0 - resolution: "lodash._baseassign@npm:3.2.0" - dependencies: - lodash._basecopy: ^3.0.0 - lodash.keys: ^3.0.0 - checksum: 27155048736d02dc384f97af303ba66bb5f768aedd5191dddf25acbd13a0733c530d4258df2136440fce7e28c8240561ecd94e769ce4cbb0115dbfd9ab5c4203 - languageName: node - linkType: hard - -"lodash._basecopy@npm:^3.0.0": - version: 3.0.1 - resolution: "lodash._basecopy@npm:3.0.1" - checksum: 4ccbeef09f53cb1a0cdf1cafeaea2d445ec2184337e1389eb3b81649a3e30f33c377d79027fbce06dae199a6f8ffb4fbd32f1ce07bddbdfae14f51f8340ae68c - languageName: node - linkType: hard - -"lodash._baseflatten@npm:^3.0.0": - version: 3.1.4 - resolution: "lodash._baseflatten@npm:3.1.4" - dependencies: - lodash.isarguments: ^3.0.0 - lodash.isarray: ^3.0.0 - checksum: 7637d1105ce272c5df5c552879dccdbae48da8b8e613d303c3bc1bbee9e1443fd1c934f7c8c0049b96e54df14d9cfd1bab5522412ad6952bb13cbdff1b37a20c - languageName: node - linkType: hard - -"lodash._bindcallback@npm:^3.0.0": - version: 3.0.1 - resolution: "lodash._bindcallback@npm:3.0.1" - checksum: 3916fd72bc02de3643a52d46cf5aaeab4c0b21cd7cb2fb801a8bf9dacdc8532e89b30a4ebafdf65da5fe09d8b0bf898a7416402704fd7262a976703e1c59e549 - languageName: node - linkType: hard - -"lodash._createassigner@npm:^3.0.0": - version: 3.1.1 - resolution: "lodash._createassigner@npm:3.1.1" - dependencies: - lodash._bindcallback: ^3.0.0 - lodash._isiterateecall: ^3.0.0 - lodash.restparam: ^3.0.0 - checksum: ca9e08350914c279560b8930a3f7aa065b061a7e2b0bf13b33af1f782be8b5356f623ce01e89248212cc6099b1bc6c39e03ed9ffc9e0c2fd7169b1b7c447c01e - languageName: node - linkType: hard - -"lodash._getnative@npm:^3.0.0": - version: 3.9.1 - resolution: "lodash._getnative@npm:3.9.1" - checksum: ba2152bb10bf44beb54fcd273598197972c989c2181b54e533cec1ff1ebebdf8bb02d4ffc3d5a648480a48beb3026db191f5de99adecd7eac36bbd6025c9b048 - languageName: node - linkType: hard - -"lodash._isiterateecall@npm:^3.0.0": - version: 3.0.9 - resolution: "lodash._isiterateecall@npm:3.0.9" - checksum: 95ace291d07f2930d9f038ec3c662f88cef48ccebd508665ce08a3251f126b2a645234ab734a6dff0987e1ae9ef74dad706e0d9a2bf26828e50d19c7a6238cab - languageName: node - linkType: hard - -"lodash._reinterpolate@npm:^3.0.0": - version: 3.0.0 - resolution: "lodash._reinterpolate@npm:3.0.0" - checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 - languageName: node - linkType: hard - -"lodash.assign@npm:^3.2.0": - version: 3.2.0 - resolution: "lodash.assign@npm:3.2.0" - dependencies: - lodash._baseassign: ^3.0.0 - lodash._createassigner: ^3.0.0 - lodash.keys: ^3.0.0 - checksum: 135351c0e376e2963ec785d4ad4efce55cd7f1d5e3d34387e940c1de6c5f92d6f91d3e415218bc37657f34aae823bc9ecf2fb38bd4734dc69f7d659582cc4178 - languageName: node - linkType: hard - -"lodash.assignin@npm:^4.1.0": - version: 4.2.0 - resolution: "lodash.assignin@npm:4.2.0" - checksum: 4b55bc1d65ccd7648fdba8a4316d10546929bf0beb5950830d86c559948cf170f0e65b77c95e66b45b511b85a31161714de8b2008d2537627ef3c7759afe36a6 - languageName: node - linkType: hard - -"lodash.castarray@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.castarray@npm:4.4.0" - checksum: fca8c7047e0ae2738b0b2503fb00157ae0ff6d8a1b716f87ed715b22560e09de438c75b65e01a7e44ceb41c5b31dce2eb576e46db04beb9c699c498e03cbd00f - languageName: node - linkType: hard - -"lodash.clonedeep@npm:^4.4.1": - version: 4.5.0 - resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489 - languageName: node - linkType: hard - -"lodash.debounce@npm:^3.1.1": - version: 3.1.1 - resolution: "lodash.debounce@npm:3.1.1" - dependencies: - lodash._getnative: ^3.0.0 - checksum: 8d9dcd6f66246c3e92a25420881714b68f6d7a794db9ffcedb4a2c0f9005f4c6fd59c80ff801eca3ef8aa7fc227d62ae301f37854a73db6d064bd8dcaa93355d - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash.defaultsdeep@npm:^4.6.0, lodash.defaultsdeep@npm:^4.6.1": - version: 4.6.1 - resolution: "lodash.defaultsdeep@npm:4.6.1" - checksum: 1f346f16158b760545ca99553cb13e907a28b281425751af6bfe681387b9e5685438a7ddbfd36a8d5cc8bda066867a134aa31416f17e318db8c461c377810a76 - languageName: node - linkType: hard - -"lodash.find@npm:^4.5.1": - version: 4.6.0 - resolution: "lodash.find@npm:4.6.0" - checksum: b737f849a4fe36f5c3664ea636780dda2fde18335021faf80cdfdcb300ed75441da6f55cfd6de119092d8bb2ddbc4433f4a8de4b99c0b9c8640465b0901c717c - languageName: node - linkType: hard - -"lodash.flatten@npm:^3.0.2": - version: 3.0.2 - resolution: "lodash.flatten@npm:3.0.2" - dependencies: - lodash._baseflatten: ^3.0.0 - lodash._isiterateecall: ^3.0.0 - checksum: 7d2dc97c02ad305cf8d4d8761fbc41f3bde6a8f7f1c4d720d5b234c4e81f6a00c1f0afd8f84d7fb7330fdd799a734f1fab4191a806f3629e28e3ba00eb4b9e26 - languageName: node - linkType: hard - -"lodash.foreach@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.foreach@npm:4.5.0" - checksum: a940386b158ca0d62994db41fc16529eb8ae67138f29ced38e91f912cb5435d1b0ed34b18e6f7b9ddfc32ab676afc6dfec60d1e22633d8e3e4b33413402ab4ad - languageName: node - linkType: hard - -"lodash.isarguments@npm:^3.0.0": - version: 3.1.0 - resolution: "lodash.isarguments@npm:3.1.0" - checksum: ae1526f3eb5c61c77944b101b1f655f846ecbedcb9e6b073526eba6890dc0f13f09f72e11ffbf6540b602caee319af9ac363d6cdd6be41f4ee453436f04f13b5 - languageName: node - linkType: hard - -"lodash.isarray@npm:^3.0.0": - version: 3.0.4 - resolution: "lodash.isarray@npm:3.0.4" - checksum: 3b298fb76ff16981353f7d0695d8680be9451b74d2e76714ddbd903a90fbaa8e1d84979d0ae99325f5a9033776771154b19e05027ab23de83202251c8abe81b5 - languageName: node - linkType: hard - -"lodash.keys@npm:^3.0.0": - version: 3.1.2 - resolution: "lodash.keys@npm:3.1.2" - dependencies: - lodash._getnative: ^3.0.0 - lodash.isarguments: ^3.0.0 - lodash.isarray: ^3.0.0 - checksum: ac7c02c793334c48161a8e8a1f12576c73ee50d1371e75680afc6c2d3740d5e9bdc899517e6c0034014eaa2512c5f433a2e6985c9e16cf28b5c9013ec81bd35e - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.0, lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 - languageName: node - linkType: hard - -"lodash.omit@npm:^4.1.0": - version: 4.5.0 - resolution: "lodash.omit@npm:4.5.0" - checksum: 434645e49fe84ab315719bd5a9a3a585a0f624aa4160bc09157dd041a414bcc287c15840365c1379476a3f3eda41fbe838976c3f7bdecbbf4c5478e86c471a30 - languageName: node - linkType: hard - -"lodash.restparam@npm:^3.0.0": - version: 3.6.1 - resolution: "lodash.restparam@npm:3.6.1" - checksum: 8bda0c7aaeac93da2b7e856bfeec8e6fdefb4d7eadfe6fd84775312a729fc1cb985636d922fe33b49f41aba135204962f4b853d7946105b7704102edb2bf6082 - languageName: node - linkType: hard - -"lodash.template@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.template@npm:4.5.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - lodash.templatesettings: ^4.0.0 - checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 - languageName: node - linkType: hard - -"lodash.templatesettings@npm:^4.0.0": - version: 4.2.0 - resolution: "lodash.templatesettings@npm:4.2.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 - languageName: node - linkType: hard - -"lodash.uniq@npm:^4.2.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d - languageName: node - linkType: hard - -"lodash.uniqby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.uniqby@npm:4.7.0" - checksum: 659264545a95726d1493123345aad8cbf56e17810fa9a0b029852c6d42bc80517696af09d99b23bef1845d10d95e01b8b4a1da578f22aeba7a30d3e0022a4938 - languageName: node - linkType: hard - -"lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.5, lodash@npm:^4.5.1": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"log-symbols@npm:^2.2.0": - version: 2.2.0 - resolution: "log-symbols@npm:2.2.0" - dependencies: - chalk: ^2.0.1 - checksum: 4c95e3b65f0352dbe91dc4989c10baf7a44e2ef5b0db7e6721e1476268e2b6f7090c3aa880d4f833a05c5c3ff18f4ec5215a09bd0099986d64a8186cfeb48ac8 - languageName: node - linkType: hard - -"longest-streak@npm:^3.0.0": - version: 3.0.1 - resolution: "longest-streak@npm:3.0.1" - checksum: 3b59c4c04ce3c70f137e339c10d574026fa3a711c45dc0e69a63a2c0ac981e57f837e1d5b64b991eee5234c4fa46fa10886a20626fb739ed3b04b77bcf6d14a8 - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - -"lowlight@npm:^1.17.0": - version: 1.20.0 - resolution: "lowlight@npm:1.20.0" - dependencies: - fault: ^1.0.0 - highlight.js: ~10.7.0 - checksum: 14a1815d6bae202ddee313fc60f06d46e5235c02fa483a77950b401d85b4c1e12290145ccd17a716b07f9328bd5864aa2d402b6a819ff3be7c833d9748ff8ba7 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.14.0 - resolution: "lru-cache@npm:7.14.0" - checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 8a6dd128be1c524049ea6a41a9193715c2835d3d706af4b8b714ff2043a82786dbcd4a8f1fa9ddd28facbc444426c97515aef2d1f3dd11d5e2d63749ba577b1e - languageName: node - linkType: hard - -"markdown-it-terminal@npm:0.2.1": - version: 0.2.1 - resolution: "markdown-it-terminal@npm:0.2.1" - dependencies: - ansi-styles: ^3.0.0 - cardinal: ^1.0.0 - cli-table: ^0.3.1 - lodash.merge: ^4.6.2 - markdown-it: ^8.3.1 - checksum: ecd8ebc2b0558070ce1c5943a131aaabc627689cf916227148b1acce5eb97e3cccd30d90b319fd8d7d9cfe2f7d4bf01dd09811402c9e2212b9903eb73a86da61 - languageName: node - linkType: hard - -"markdown-it@npm:^12.0.2": - version: 12.3.2 - resolution: "markdown-it@npm:12.3.2" - dependencies: - argparse: ^2.0.1 - entities: ~2.1.0 - linkify-it: ^3.0.1 - mdurl: ^1.0.1 - uc.micro: ^1.0.5 - bin: - markdown-it: bin/markdown-it.js - checksum: 890555711c1c00fa03b936ca2b213001a3b9b37dea140d8445ae4130ce16628392aad24b12e2a0a9935336ca5951f2957a38f4e5309a2e38eab44e25ff32a41e - languageName: node - linkType: hard - -"markdown-it@npm:^4.3.0": - version: 4.4.0 - resolution: "markdown-it@npm:4.4.0" - dependencies: - argparse: ~1.0.2 - entities: ~1.1.1 - linkify-it: ~1.2.0 - mdurl: ~1.0.0 - uc.micro: ^1.0.0 - bin: - markdown-it: bin/markdown-it.js - checksum: 97600eb5dd2fab37dbaa160a4adffb6749f4aefcb435c17ae9bef5de6c6f1088d05e01d947228766a499b44ca259d25ad1b134c78c6aa80e0722798de0d7b060 - languageName: node - linkType: hard - -"markdown-it@npm:^8.3.1": - version: 8.4.2 - resolution: "markdown-it@npm:8.4.2" - dependencies: - argparse: ^1.0.7 - entities: ~1.1.1 - linkify-it: ^2.0.0 - mdurl: ^1.0.1 - uc.micro: ^1.0.5 - bin: - markdown-it: bin/markdown-it.js - checksum: ad171466933d6ce33fcdddf32f641fc7ff238820a11397f07d45ab293e3fd6d83de14eaa59bfdc67dc4a715e73aa08bae9b2a38e44b119d7340d8ae691ca4b2d - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.3": - version: 7.1.7 - resolution: "markdown-to-jsx@npm:7.1.7" - peerDependencies: - react: ">= 0.14.0" - checksum: b2c0ea7d0988fad0c709989b3b1b3a5600d1e80b60266f9618386f7afead4a6b5eba9ee1a3943df6a3dcb1599ea89e58467d1b17b6dd3af3c60984c60a85d06d - languageName: node - linkType: hard - -"matcher-collection@npm:^1.0.0, matcher-collection@npm:^1.1.1": - version: 1.1.2 - resolution: "matcher-collection@npm:1.1.2" - dependencies: - minimatch: ^3.0.2 - checksum: 9aaf90944fa185187a099000b5df9542b85c4fd330c66f1747578c945b78242376066d1a1bc74fcd6d48375ab11dd2dbb5619c6f1c00e7720cf1f4f5df9d291b - languageName: node - linkType: hard - -"matcher-collection@npm:^2.0.0, matcher-collection@npm:^2.0.1": - version: 2.0.1 - resolution: "matcher-collection@npm:2.0.1" - dependencies: - "@types/minimatch": ^3.0.3 - minimatch: ^3.0.2 - checksum: f6d4f94bdcf773f9cbd4b7b10199a7632c434833a4c01bfb29c373e118647bb3b748aa3f20c70d6c3a715915fcc44ad4a77a9f8d5f059f3a0d15c984c0acc83d - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-util-definitions@npm:4.0.0" - dependencies: - unist-util-visit: ^2.0.0 - checksum: 2325f20b82b3fb8cb5fda77038ee0bbdd44f82cfca7c48a854724b58bc1fe5919630a3ce7c45e210726df59d46c881d020b2da7a493bfd1ee36eb2bbfef5d78e - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.1 - resolution: "mdast-util-definitions@npm:5.1.1" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-from-markdown@npm:1.2.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40 - languageName: node - linkType: hard - -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdx-expression@npm:1.3.1" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 456d59a616a274416f5b02bce64bf5245c4b7247927b4539f4db35bec5674352580fb91f51ed11f1a769d17330c44eec7ca481faf81ee839c2efe71309195225 - languageName: node - linkType: hard - -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-mdx-jsx@npm:2.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - ccount: ^2.0.0 - mdast-util-to-markdown: ^1.3.0 - parse-entities: ^4.0.0 - stringify-entities: ^4.0.0 - unist-util-remove-position: ^4.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 40520a299449e4074ff1097789c7372220c9751e0de151566dcc133118d748c2231e29bafcbbf2c3beb3a917a85cfbbaa9195dadfb4122603bad479f93a61dbe - languageName: node - linkType: hard - -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx@npm:2.0.0" - dependencies: - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdx-jsx: ^2.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - checksum: 4744bfbbd337c2a99a3ef339673c549a670d6496e0d3a6d747d2451e112d6fef7d27613549b0bd62a5f92ea7919e3bacd78c731e8a3d80552a09b80896554cf6 - languageName: node - linkType: hard - -"mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-mdxjs-esm@npm:1.3.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: df3902eb884b4f83cebbfe33647f51938b36db54d4539afd884dc83ff43052676cd48df4c382dc986335290f5c691576d1a848da8ffb671b69ade29fe1c317e0 - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:^12.1.0": - version: 12.2.4 - resolution: "mdast-util-to-hast@npm:12.2.4" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 - trim-lines: ^3.0.0 - unist-builder: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: c9a1c31527590a11ec7a637ae46a8f52b05b457523e9be9c4ca8bcc1efb3eac5ed1575353e97a70fffcf61e40c80d649bee28058fa1509bc1c213eacfa73bc5f - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": - version: 1.3.0 - resolution: "mdast-util-to-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - longest-streak: ^3.0.0 - mdast-util-to-string: ^3.0.0 - micromark-util-decode-string: ^1.0.0 - unist-util-visit: ^4.0.0 - zwitch: ^2.0.0 - checksum: 0ea4fc11b7a49b15d400d50044429c45222cb9bc583553288c7c54704d051f25049233817129ba56a6f581f1e20916e5c540870a80987318747a95b44a36ba3e - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^1.0.0": - version: 1.1.0 - resolution: "mdast-util-to-string@npm:1.1.0" - checksum: eec1eb283f3341376c8398b67ce512a11ab3e3191e3dbd5644d32a26784eac8d5f6d0b0fb81193af00d75a2c545cde765c8b03e966bd890076efb5d357fb4fe2 - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.1.0 - resolution: "mdast-util-to-string@npm:3.1.0" - checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29 - languageName: node - linkType: hard - -"mdn-links@npm:^0.1.0": - version: 0.1.0 - resolution: "mdn-links@npm:0.1.0" - checksum: 34d6f93744ee6cc04ce53822100197afffe975ff364571cc10614c0357a718d3710443e076bec4937d7c8a91704bd02e862e0bfbd1765d4710efbb62f3b9503a - languageName: node - linkType: hard - -"mdurl@npm:^1.0.1, mdurl@npm:~1.0.0": - version: 1.0.1 - resolution: "mdurl@npm:1.0.1" - checksum: 71731ecba943926bfbf9f9b51e28b5945f9411c4eda80894221b47cc105afa43ba2da820732b436f0798fd3edbbffcd1fc1415843c41a87fea08a41cc1e3d02b - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"memfs@npm:^3.4.1, memfs@npm:^3.4.3": - version: 3.4.7 - resolution: "memfs@npm:3.4.7" - dependencies: - fs-monkey: ^1.0.3 - checksum: fab88266dc576dc4999e38bdf531d703fb798affac2e0dd3fc17470878486844027b2766008ba80c0103b443f52cf9068a5c00f4e1ecf04106f4b29c11855822 - languageName: node - linkType: hard - -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: ^1.5.0 - checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a - languageName: node - linkType: hard - -"memory-streams@npm:^0.1.3": - version: 0.1.3 - resolution: "memory-streams@npm:0.1.3" - dependencies: - readable-stream: ~1.0.2 - checksum: aebb6dc54c35ff8e7fcbbffc736ae95938d9bb7ed66735b693ed18743fcc6268f64eaa80b2580a49c3c73ddc00cd880d5847f318997affe6d2a46b75365715f8 - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge-trees@npm:^1.0.1": - version: 1.0.1 - resolution: "merge-trees@npm:1.0.1" - dependencies: - can-symlink: ^1.0.0 - fs-tree-diff: ^0.5.4 - heimdalljs: ^0.2.1 - heimdalljs-logger: ^0.1.7 - rimraf: ^2.4.3 - symlink-or-copy: ^1.0.0 - checksum: d32b06a9b18ab6963718c99b38fbe010e91f54a16f6f5555b32d48be0938c7f33ea81b8f0411846c43e6a5cfdbbf9aa2817fccc0186c2aa071944fe76bdc0372 - languageName: node - linkType: hard - -"merge-trees@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-trees@npm:2.0.0" - dependencies: - fs-updater: ^1.0.4 - heimdalljs: ^0.2.5 - checksum: 8e315ac6838192a7e61fecd003cca465b135b60d9d74e37501eef01e29a6f403850359b28a7b8696f369127caf28a5ff6d22493f11dc9cf5f7bbdfa11836cd7e - languageName: node - linkType: hard - -"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-expression@npm:1.0.3" - dependencies: - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: ef4b4137894624a6754b951d3cb7abb20951ca7b37f9ad8a50d2e2b95d0cf880258d71296bfac6be4ff83a8d137b6b657ae852bb6f11f4ca11e5e6d62f1b025d - languageName: node - linkType: hard - -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" - dependencies: - "@types/acorn": ^4.0.0 - estree-util-is-identifier-name: ^2.0.0 - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 1a5566890aabc52fe96b78e3a3a507dee03a2232e44b9360b00617734e156f934e85bc6a477fbb856c793fe33c9fb7d2207a4f50e680168c0d04ba9c9336d960 - languageName: node - linkType: hard - -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: b4f205e1d5f0946b4755541ef44ffd0b3be8c7ecfc08d8b139b6a21fbd3ff62d8fdb6b7e6d17bd9a3b610450267f43a41703dc48b341da9addd743a28cdefa64 - languageName: node - linkType: hard - -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" - dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.1.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 756074656391a5e5bb96bc8a0e9c1df7d9f7be5299847c9719e6a90552e1c76a11876aa89986ad5da89ab485f776a4a43a61ea3acddd4f865a5cee43ac523ffd - languageName: node - linkType: hard - -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" - dependencies: - acorn: ^8.0.0 - acorn-jsx: ^5.0.0 - micromark-extension-mdx-expression: ^1.0.0 - micromark-extension-mdx-jsx: ^1.0.0 - micromark-extension-mdx-md: ^1.0.0 - micromark-extension-mdxjs-esm: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: ba836c6d2dfc67597886e88f533ffa02f2029dbe216a0651f1066e70f8529a700bcc7fa2bc4201ee12fd3d1cd7da7093d5a442442daeb84b27df96aaffb7699c - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 - languageName: node - linkType: hard - -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.6 - resolution: "micromark-factory-mdx-expression@npm:1.0.6" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 7b69f0e77664e9820639cf23c4f01d43aa0e7abd88021c3db428435e3a5a1f9446f8dc5c2a6ed4ac16c6495ca51937609a5c98ff59a62c54be382c2725500b39 - languageName: node - linkType: hard - -"micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 - languageName: node - linkType: hard - -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - -"micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" - dependencies: - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f - languageName: node - linkType: hard - -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-events-to-acorn@npm:1.2.0" - dependencies: - "@types/acorn": ^4.0.0 - "@types/estree": ^1.0.0 - estree-util-visit: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-location: ^4.0.0 - vfile-message: ^3.0.0 - checksum: 422285d68c8e8a57042bf31eefa55a136eec5c1fb021278a7c25d60a000c4e3ddaf140c94065a270499281f79ff59999468b850a461f22b5731fc47eccb2c4c2 - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c - languageName: node - linkType: hard - -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - -"micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d - languageName: node - linkType: hard - -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df - languageName: node - linkType: hard - -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - -"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.25, mime-types@npm:^2.1.26, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mime-types@npm:~1.0.1": - version: 1.0.2 - resolution: "mime-types@npm:1.0.2" - checksum: 0867f6ed9829fb3fe36659a453c2f98a3426028ca28eca885c23679a531e3f569775e55fc36bd60e5b07e1f41b7dfb686b20ed307062cea1b0cf4659d9d042ea - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - -"mime@npm:^2.0.3": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 - languageName: node - linkType: hard - -"mime@npm:~1.2.11": - version: 1.2.11 - resolution: "mime@npm:1.2.11" - checksum: 68248e74bd65db30d2b59c077cc8794e3caee1497fd7ca40efcf8797c4aea75dc9d5b05d1448fdfb3de09da0b894a47e90cde0985a0c5ec5d7d2305c36aa2c75 - languageName: node - linkType: hard - -"mimic-fn@npm:^1.0.0": - version: 1.2.0 - resolution: "mimic-fn@npm:1.2.0" - checksum: 69c08205156a1f4906d9c46f9b4dc08d18a50176352e77fdeb645cedfe9f20c0b19865d465bd2dec27a5c432347f24dc07fc3695e11159d193f892834233e939 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 - languageName: node - linkType: hard - -"minimatch@npm:2 || 3, minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" - dependencies: - brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 - languageName: node - linkType: hard - -"minimist@npm:^0.2.1": - version: 0.2.2 - resolution: "minimist@npm:0.2.2" - checksum: c6b140b08b18bf315c65292d0d850279e5ec355d3d8d1f67bb7f7df3914d609c0215007fb876fd81f8dc99556b522d1b06f3b823f7f00fc297bf31cfdbd8b20b - languageName: node - linkType: hard - -"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^2.2.0": - version: 2.9.0 - resolution: "minipass@npm:2.9.0" - dependencies: - safe-buffer: ^5.1.2 - yallist: ^3.0.0 - checksum: 077b66f31ba44fd5a0d27d12a9e6a86bff8f97a4978dedb0373167156b5599fadb6920fdde0d9f803374164d810e05e8462ce28e86abbf7f0bea293a93711fc6 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" - dependencies: - yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:^0.5.6": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"mktemp@npm:~0.4.0": - version: 0.4.0 - resolution: "mktemp@npm:0.4.0" - checksum: f67d8b1ed599807a4ec154efc6a50d61b28f4183fa740c4fe3bd75ce8442d84a3b8fca382fb3cb4e20bb883cb14478a7fe549c4eab6135cd213163ca5083f0fe - languageName: node - linkType: hard - -"morgan@npm:^1.10.0": - version: 1.10.0 - resolution: "morgan@npm:1.10.0" - dependencies: - basic-auth: ~2.0.1 - debug: 2.6.9 - depd: ~2.0.0 - on-finished: ~2.3.0 - on-headers: ~1.0.2 - checksum: fb41e226ab5a1abf7e8909e486b387076534716d60207e361acfb5df78b84d703a7b7ea58f3046a9fd0b83d3c94bfabde32323341a1f1b26ce50680abd2ea5dd - languageName: node - linkType: hard - -"mout@npm:^1.0.0": - version: 1.2.4 - resolution: "mout@npm:1.2.4" - checksum: 761801ab6616cea1a7f3c2082d1e2fb0b984898cc92117c70f34aab104723285eadf03545b5e092d44a17d6cfbd367a005064d7b23a8517ee4f6b77a8d345561 - languageName: node - linkType: hard - -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"mustache@npm:^4.2.0": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 928fcb63e3aa44a562bfe9b59ba202cccbe40a46da50be6f0dd831b495be1dd7e38ca4657f0ecab2c1a89dc7bccba0885eab7ee7c1b215830da765758c7e0506 - languageName: node - linkType: hard - -"mute-stream@npm:0.0.7": - version: 0.0.7 - resolution: "mute-stream@npm:0.0.7" - checksum: a9d4772c1c84206aa37c218ed4751cd060239bf1d678893124f51e037f6f22f4a159b2918c030236c93252638a74beb29c9b1fd3267c9f24d4b3253cf1eaa86f - languageName: node - linkType: hard - -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 - languageName: node - linkType: hard - -"najax@npm:^1.0.7": - version: 1.0.7 - resolution: "najax@npm:1.0.7" - dependencies: - jquery-deferred: ^0.3.0 - lodash: ^4.17.21 - qs: ^6.2.0 - checksum: ace9950ed322edf6cdc5fdbbd8aa8568ab235e85c5b78da6948725eb2ed622681b3f28381ee84209c7b8d6494c6a53b16c124a138a8fa2f42b9a4f3f61ee91d7 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.0.1": - version: 3.0.1 - resolution: "node-abort-controller@npm:3.0.1" - checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee - languageName: node - linkType: hard - -"node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: ^3.0.2 - checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-modules-path@npm:^1.0.0": - version: 1.0.2 - resolution: "node-modules-path@npm:1.0.2" - checksum: 1cee65591a65a71e420b72d011e313bd938ffced368c6b6ca2bfd5a741cea9af5200417afb49272bbdac1cee1350c0f56e0a80b611d6694de914959c1ddfc9f3 - languageName: node - linkType: hard - -"node-notifier@npm:^10.0.0": - version: 10.0.1 - resolution: "node-notifier@npm:10.0.1" - dependencies: - growly: ^1.3.0 - is-wsl: ^2.2.0 - semver: ^7.3.5 - shellwords: ^0.1.1 - uuid: ^8.3.2 - which: ^2.0.2 - checksum: ac09456152e433462dd3ca277048de7a60c6d63fc657e00ac72805841baf9bb2573e8d3f64c4b64af73546d1ed39733af6b0036c38b57a83c883aa33fff35a2e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf - languageName: node - linkType: hard - -"node-uuid@npm:~1.4.0": - version: 1.4.8 - resolution: "node-uuid@npm:1.4.8" - bin: - uuid: ./bin/uuid - checksum: 71b3766d46da0479a37fe9a2bea206b0f7249faf1e67896b5bd3c770efe20c352bcf62b0fe883cfa602ec5b81669317190a0ca838d9b8e5cdb4efff99448c598 - languageName: node - linkType: hard - -"nopt@npm:^3.0.6": - version: 3.0.6 - resolution: "nopt@npm:3.0.6" - dependencies: - abbrev: 1 - bin: - nopt: ./bin/nopt.js - checksum: 7f8579029a0d7cb3341c6b1610b31e363f708b7aaaaf3580e3ec5ae8528d1f3a79d350d8bfa331776e6c6703a5a148b72edd9b9b4c1dd55874d8e70e963d1e20 - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-url@npm:^7.2.0": - version: 7.2.0 - resolution: "normalize-url@npm:7.2.0" - checksum: 7753f081ee997520c9cd855f06975d7ac24b1ef58002e310d5058c831b9a6165ec2ec9fc0c5bc9e886e1257affaffa7c36731ae39073fcf74af07197997d4fb6 - languageName: node - linkType: hard - -"npm-package-arg@npm:^8.1.0": - version: 8.1.5 - resolution: "npm-package-arg@npm:8.1.5" - dependencies: - hosted-git-info: ^4.0.1 - semver: ^7.3.4 - validate-npm-package-name: ^3.0.0 - checksum: ae76afbcebb4ea8d0b849b8b18ed1b0491030fb04a0af5d75f1b8390cc50bec186ced9fbe60f47d939eab630c7c0db0919d879ac56a87d3782267dfe8eec60d3 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 - languageName: node - linkType: hard - -"oauth-sign@npm:~0.3.0": - version: 0.3.0 - resolution: "oauth-sign@npm:0.3.0" - checksum: dc8e6387789d91399e2b20dceee3ad1deba2ec2e9a69204a348f52c07e51b84e511e84f1c5bbe596537c22536560a3c5502e46e3531e227b943394428f0f387b - languageName: node - linkType: hard - -"object-assign@npm:4.1.1, object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-hash@npm:^1.3.1": - version: 1.3.1 - resolution: "object-hash@npm:1.3.1" - checksum: fdcb957a2f15a9060e30655a9f683ba1fc25dfb8809a73d32e9634bec385a2f1d686c707ac1e5f69fb773bc12df03fb64c77ce3faeed83e35f4eb1946cb1989e - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 - languageName: node - linkType: hard - -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^2.0.0": - version: 2.0.1 - resolution: "onetime@npm:2.0.1" - dependencies: - mimic-fn: ^1.0.0 - checksum: bb44015ac7a525d0fb43b029a583d4ad359834632b4424ca209b438aacf6d669dda81b5edfbdb42c22636e607b276ba5589f46694a729e3bc27948ce26f4cc1a - languageName: node - linkType: hard - -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: ^2.0.0 - is-wsl: ^2.1.1 - checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91 - languageName: node - linkType: hard - -"open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c - languageName: node - linkType: hard - -"ora@npm:^3.4.0": - version: 3.4.0 - resolution: "ora@npm:3.4.0" - dependencies: - chalk: ^2.4.2 - cli-cursor: ^2.1.0 - cli-spinners: ^2.0.0 - log-symbols: ^2.2.0 - strip-ansi: ^5.2.0 - wcwidth: ^1.0.1 - checksum: f1f8e7f290b766276dcd19ddf2159a1971b1ec37eec4a5556b8f5e4afbe513a965ed65c183d38956724263b6a20989b3d8fb71b95ac4a2d6a01db2f1ed8899e4 - languageName: node - linkType: hard - -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 16e37ba3c0e6a4c63443c7b55799ce4066d59104143cb637ecb9fce586d5da319cdca786ba1c867abbe3890d2cbf37953f2d51eea85e20dd6c4570d6c54bfebf - languageName: node - linkType: hard - -"os-homedir@npm:^1.0.0": - version: 1.0.2 - resolution: "os-homedir@npm:1.0.2" - checksum: af609f5a7ab72de2f6ca9be6d6b91a599777afc122ac5cad47e126c1f67c176fe9b52516b9eeca1ff6ca0ab8587fe66208bc85e40a3940125f03cdb91408e9d2 - languageName: node - linkType: hard - -"os-tmpdir@npm:^1.0.0, os-tmpdir@npm:~1.0.1, os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d - languageName: node - linkType: hard - -"osenv@npm:^0.1.3": - version: 0.1.5 - resolution: "osenv@npm:0.1.5" - dependencies: - os-homedir: ^1.0.0 - os-tmpdir: ^1.0.0 - checksum: 779d261920f2a13e5e18cf02446484f12747d3f2ff82280912f52b213162d43d312647a40c332373cbccd5e3fb8126915d3bfea8dde4827f70f82da76e52d359 - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - -"p-defer@npm:^3.0.0": - version: 3.0.0 - resolution: "p-defer@npm:3.0.0" - checksum: ac3b0976a1c76b67cca1a34e00f7299b0cc230891f820749686aa84f8947326bbe0f8e3b7d9ca511578ee06f0c1a6e0ff68c8e9c325eac455f09d99f91697161 - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-is-promise@npm:^1.1.0": - version: 1.1.0 - resolution: "p-is-promise@npm:1.1.0" - checksum: 64d7c6cda18af2c91c04209e5856c54d1a9818662d2320b34153d446645f431307e04406969a1be00cad680288e86dcf97b9eb39edd5dc4d0b1bd714ee85e13b - languageName: node - linkType: hard - -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json@npm:^8.1.0": - version: 8.1.0 - resolution: "package-json@npm:8.1.0" - dependencies: - got: ^12.1.0 - registry-auth-token: ^5.0.1 - registry-url: ^6.0.0 - semver: ^7.3.7 - checksum: 28c16ef0296915533c3dec9ce579fd6ea8ac62df0cd0b4b44e65a45506fda781cf1d1fd4a083fe90af3e041a9514b6be30562d85689da450986aff43dc856cc7 - languageName: node - linkType: hard - -"pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 - languageName: node - linkType: hard - -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-entities@npm:^2.0.0": - version: 2.0.0 - resolution: "parse-entities@npm:2.0.0" - dependencies: - character-entities: ^1.0.0 - character-entities-legacy: ^1.0.0 - character-reference-invalid: ^1.0.0 - is-alphanumerical: ^1.0.0 - is-decimal: ^1.0.0 - is-hexadecimal: ^1.0.0 - checksum: 7addfd3e7d747521afac33c8121a5f23043c6973809756920d37e806639b4898385d386fcf4b3c8e2ecf1bc28aac5ae97df0b112d5042034efbe80f44081ebce - languageName: node - linkType: hard - -"parse-entities@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-entities@npm:4.0.0" - dependencies: - "@types/unist": ^2.0.0 - character-entities: ^2.0.0 - character-entities-legacy: ^3.0.0 - character-reference-invalid: ^2.0.0 - decode-named-character-reference: ^1.0.0 - is-alphanumerical: ^2.0.0 - is-decimal: ^2.0.0 - is-hexadecimal: ^2.0.0 - checksum: cd9fa53bc056ad8cf8a45494bfd7ce65e8bf6f1b12dcc9a6343376fa529c2012041303c5d0f86babf70afbd13b71c2f219fc3a76fb97d9d559b66578e19cdaf0 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parse-passwd@npm:^1.0.0": - version: 1.0.0 - resolution: "parse-passwd@npm:1.0.0" - checksum: 4e55e0231d58f828a41d0f1da2bf2ff7bcef8f4cb6146e69d16ce499190de58b06199e6bd9b17fbf0d4d8aef9052099cdf8c4f13a6294b1a522e8e958073066e - languageName: node - linkType: hard - -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.0.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" - dependencies: - domhandler: ^5.0.2 - parse5: ^7.0.0 - checksum: fc5d01e07733142a1baf81de5c2a9c41426c04b7ab29dd218acb80cd34a63177c90aff4a4aee66cf9f1d0aeecff1389adb7452ad6f8af0a5888e3e9ad6ef733d - languageName: node - linkType: hard - -"parse5@npm:^7.0.0": - version: 7.1.1 - resolution: "parse5@npm:7.1.1" - dependencies: - entities: ^4.4.0 - checksum: 8f72fbfa6df83a3f29f58e1818f7bd46b47ff3e26d79c74e10b8fc7ef7ee76163f205113f1b2f6a5b8dc4e31e726f490444f04890cead6e974dbcbe8172b1321 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-posix@npm:^1.0.0": - version: 1.0.0 - resolution: "path-posix@npm:1.0.0" - checksum: 4f64ad212de6ad8d0dbfa440cac8b924303c25c30301769ad0501e29e83a5b9d469e8133753f999ad37482c9c8d3511129e4d83db55d2e4b1555b183c9749ae8 - languageName: node - linkType: hard - -"path-root-regex@npm:^0.1.0": - version: 0.1.2 - resolution: "path-root-regex@npm:0.1.2" - checksum: dcd75d1f8e93faabe35a58e875b0f636839b3658ff2ad8c289463c40bc1a844debe0dab73c3398ef9dc8f6ec6c319720aff390cf4633763ddcf3cf4b1bbf7e8b - languageName: node - linkType: hard - -"path-root@npm:^0.1.1": - version: 0.1.1 - resolution: "path-root@npm:0.1.1" - dependencies: - path-root-regex: ^0.1.0 - checksum: ff88aebfc1c59ace510cc06703d67692a11530989920427625e52b66a303ca9b3d4059b0b7d0b2a73248d1ad29bcb342b8b786ec00592f3101d38a45fd3b2e08 - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - -"periscopic@npm:^3.0.0": - version: 3.0.4 - resolution: "periscopic@npm:3.0.4" - dependencies: - estree-walker: ^3.0.0 - is-reference: ^3.0.0 - checksum: 0920ea1b0294c2463b7df858d7f895d0a69f15ec5c7b93d63749e7a8f6d9c065853ebea701305f1756f70310633832cf5c90e43e9363cce51abec44cc2f5c188 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b - languageName: node - linkType: hard - -"pinkie-promise@npm:^2.0.0": - version: 2.0.1 - resolution: "pinkie-promise@npm:2.0.1" - dependencies: - pinkie: ^2.0.0 - checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca - languageName: node - linkType: hard - -"pinkie@npm:^2.0.0": - version: 2.0.4 - resolution: "pinkie@npm:2.0.4" - checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db - languageName: node - linkType: hard - -"pirates@npm:^4.0.1, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: ^5.0.0 - checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 - languageName: node - linkType: hard - -"pkg-up@npm:^2.0.0": - version: 2.0.0 - resolution: "pkg-up@npm:2.0.0" - dependencies: - find-up: ^2.1.0 - checksum: de4b418175281a082e366ce1a919f032520ee53cf421578b35173f03816f6ec4c19e1552066840bb0988c3e1215859653948efd6ca3507a23f4f44229269500d - languageName: node - linkType: hard - -"pkg-up@npm:^3.1.0": - version: 3.1.0 - resolution: "pkg-up@npm:3.1.0" - dependencies: - find-up: ^3.0.0 - checksum: 5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 - languageName: node - linkType: hard - -"polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.17.8 - checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 - languageName: node - linkType: hard - -"portfinder@npm:^1.0.28": - version: 1.0.32 - resolution: "portfinder@npm:1.0.32" - dependencies: - async: ^2.6.4 - debug: ^3.2.7 - mkdirp: ^0.5.6 - checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.10 - resolution: "postcss-selector-parser@npm:6.0.10" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 46afaa60e3d1998bd7adf6caa374baf857cc58d3ff944e29459c9a9e4680a7fe41597bd5b755fc81d7c388357e9bf67c0251d047c640a09f148e13606b8a8608 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:^8.4.7": - version: 8.4.18 - resolution: "postcss@npm:8.4.18" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 9349fd99849b2e3d2e134ff949b7770ecb12375f352723ce2bcc06167eba3850ea7844c1b191a85cd915d6a396b4e8ee9a5267e6cc5d8d003d0cbc7a97555d39 - languageName: node - linkType: hard - -"prettier@npm:>=2.2.1 <=2.3.0": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" - bin: - prettier: bin-prettier.js - checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff - languageName: node - linkType: hard - -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" - dependencies: - lodash: ^4.17.20 - renderkid: ^3.0.0 - checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 - languageName: node - linkType: hard - -"pretty-hrtime@npm:^1.0.3": - version: 1.0.3 - resolution: "pretty-hrtime@npm:1.0.3" - checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 - languageName: node - linkType: hard - -"printf@npm:^0.6.1": - version: 0.6.1 - resolution: "printf@npm:0.6.1" - checksum: 7643279e5e4e2032b86b61babb21e60b99eac71491556a0fc3f01a443f61f90f1701f9912be41a1e44e1164a69fa349b907719716b983e3a222ad9a978ba06f9 - languageName: node - linkType: hard - -"prismjs@npm:^1.27.0": - version: 1.29.0 - resolution: "prismjs@npm:1.29.0" - checksum: 007a8869d4456ff8049dc59404e32d5666a07d99c3b0e30a18bd3b7676dfa07d1daae9d0f407f20983865fd8da56de91d09cb08e6aa61f5bc420a27c0beeaf93 - languageName: node - linkType: hard - -"prismjs@npm:~1.27.0": - version: 1.27.0 - resolution: "prismjs@npm:1.27.0" - checksum: 85c7f4a3e999073502cc9e1882af01e3709706369ec254b60bff1149eda701f40d02512acab956012dc7e61cfd61743a3a34c1bd0737e8dbacd79141e5698bbc - languageName: node - linkType: hard - -"private@npm:^0.1.8": - version: 0.1.8 - resolution: "private@npm:0.1.8" - checksum: a00abd713d25389f6de7294f0e7879b8a5d09a9ec5fd81cc2f21b29d4f9a80ec53bc4222927d3a281d4aadd4cd373d9a28726fca3935921950dc75fd71d1fdbb - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process-relative-require@npm:^1.0.0": - version: 1.0.0 - resolution: "process-relative-require@npm:1.0.0" - dependencies: - node-modules-path: ^1.0.0 - checksum: 659265a7dad2329edd0483d36b7e25f61f8663901b74dd672ebd0bb5248494156b2892f0860ef0574049a235423183996656bee052ce2212fef2fbc61034df7e - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"progress@npm:^2.0.1": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-map-series@npm:^0.2.1": - version: 0.2.3 - resolution: "promise-map-series@npm:0.2.3" - dependencies: - rsvp: ^3.0.14 - checksum: 3f63265f596580388c025742492e379b54470fb94a1b05626723092e412f722ec8fe8e2be78cbf1c788887a307bf6cd0fedd071bec1d409a2972aec5238ea35a - languageName: node - linkType: hard - -"promise-map-series@npm:^0.3.0": - version: 0.3.0 - resolution: "promise-map-series@npm:0.3.0" - checksum: a1c992562e68a3e14c39d010bd6335166e4a0469763fd161a8b1e15f972033fce5207722edb9c16ecc9324b44ef45e42674f7015e6a8922972f45a85849bbeef - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"promise.hash.helper@npm:^1.0.7": - version: 1.0.8 - resolution: "promise.hash.helper@npm:1.0.8" - checksum: 88844dd1dd9d95a3d3b9c27f092dee938da02f9c9f3bd62a6b7b20e16c51c64a0db33edf09d25615055a1cb7ad96b5edcc837680cde88de09a12c466adfaf435 - languageName: node - linkType: hard - -"prompts@npm:^2.4.0": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 - languageName: node - linkType: hard - -"property-information@npm:^5.0.0": - version: 5.6.0 - resolution: "property-information@npm:5.6.0" - dependencies: - xtend: ^4.0.0 - checksum: fcf87c6542e59a8bbe31ca0b3255a4a63ac1059b01b04469680288998bcfa97f341ca989566adbb63975f4d85339030b82320c324a511532d390910d1c583893 - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.1.1 - resolution: "property-information@npm:6.1.1" - checksum: 654b1e5c3578e1d522bd22b7cf48881f5054789969ddbefea22e5359805fda5dbf0c5ef76bb26516da26fedac8752587ddc4c8f3b9e16bc0c6e7feb8b6086864 - languageName: node - linkType: hard - -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.0.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"punycode@npm:2.x.x, punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"pupa@npm:^3.1.0": - version: 3.1.0 - resolution: "pupa@npm:3.1.0" - dependencies: - escape-goat: ^4.0.0 - checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 - languageName: node - linkType: hard - -"puppeteer-core@npm:^2.1.1": - version: 2.1.1 - resolution: "puppeteer-core@npm:2.1.1" - dependencies: - "@types/mime-types": ^2.1.0 - debug: ^4.1.0 - extract-zip: ^1.6.6 - https-proxy-agent: ^4.0.0 - mime: ^2.0.3 - mime-types: ^2.1.25 - progress: ^2.0.1 - proxy-from-env: ^1.0.0 - rimraf: ^2.6.1 - ws: ^6.1.0 - checksum: 2ddb597ef1b2d162b4aa49833b977734129edf7c8fa558fc38c59d273e79aa1bd079481c642de87f7163665f7f37aa52683da2716bafb7d3cab68c262c36ec28 - languageName: node - linkType: hard - -"qs@npm:6.11.0, qs@npm:^6.10.0, qs@npm:^6.2.0, qs@npm:^6.4.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - -"qs@npm:~1.0.0": - version: 1.0.2 - resolution: "qs@npm:1.0.2" - checksum: 69aa6249afa72e8152190f9026f0369fae8bd58424a3eb4d2b10956750609ae761d48017eb82611327f559761d3cff0b6165a70e11afe11684cd4a8c9af9aab3 - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - -"quick-temp@npm:^0.1.2, quick-temp@npm:^0.1.3, quick-temp@npm:^0.1.5, quick-temp@npm:^0.1.8": - version: 0.1.8 - resolution: "quick-temp@npm:0.1.8" - dependencies: - mktemp: ~0.4.0 - rimraf: ^2.5.4 - underscore.string: ~3.3.4 - checksum: b9a60934301afd5cb67a10946f8124e63ccb0cd305d35e2d8e5fe7be80df4d29b8414605ee1e55a714c3b87468856fa92526737569fc5e4a11e056ee192b72c8 - languageName: node - linkType: hard - -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 44ea6e5010bba70151b6a92d8114a91915e8b5a16105cce65fae58c9d7386b812c429645e35f21141d7087568550ce383bc10ee1a65cdec951f4b69ea457e6a4 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e - languageName: node - linkType: hard - -"raw-body@npm:~1.1.0": - version: 1.1.7 - resolution: "raw-body@npm:1.1.7" - dependencies: - bytes: 1 - string_decoder: 0.10 - checksum: 75ab1815ac54992abccccdffb27bd9ad9f5b6f5fb66e740474ad0d1bd3c1425e407b2be5eb34e0bef3da2c66bfa6a2c2b77498596f5b9999ead2d449fff0226f - languageName: node - linkType: hard - -"rc@npm:1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e - languageName: node - linkType: hard - -"react-colorful@npm:^5.1.2": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: e432b7cb0df57e8f0bcdc3b012d2e93fcbcb6092c9e0f85654788d5ebfc4442536d8cc35b2418061ba3c4afb8b7788cc101c606d86a1732407921de7a9244c8d - languageName: node - linkType: hard - -"react-dom@npm:16.14.0": - version: 16.14.0 - resolution: "react-dom@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - scheduler: ^0.19.1 - peerDependencies: - react: ^16.14.0 - checksum: 5a5c49da0f106b2655a69f96c622c347febcd10532db391c262b26aec225b235357d9da1834103457683482ab1b229af7a50f6927a6b70e53150275e31785544 - languageName: node - linkType: hard - -"react-inspector@npm:^6.0.0": - version: 6.0.1 - resolution: "react-inspector@npm:6.0.1" - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 877cbccf36fdc6213abb9611fb9279c4bb76ef7ecb4ec554b3935419a99d55e6d30a80799a054d468d43cc59a9777f21d22d6219a4597bfbd27f3f08a4cdfdc6 - languageName: node - linkType: hard - -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"react-sizeme@npm:^3.0.1": - version: 3.0.2 - resolution: "react-sizeme@npm:3.0.2" - dependencies: - element-resize-detector: ^1.2.2 - invariant: ^2.2.4 - shallowequal: ^1.1.0 - throttle-debounce: ^3.0.1 - checksum: 97cb852c24bbd50acb310da89df564e0d069415f6635676dae3d3bdc583ece88090c0f2ee88a6b0dc36d2793af4a11e83bf6bbb41b86225dd0cf338e8f7e8552 - languageName: node - linkType: hard - -"react-syntax-highlighter@npm:^15.5.0": - version: 15.5.0 - resolution: "react-syntax-highlighter@npm:15.5.0" - dependencies: - "@babel/runtime": ^7.3.1 - highlight.js: ^10.4.1 - lowlight: ^1.17.0 - prismjs: ^1.27.0 - refractor: ^3.6.0 - peerDependencies: - react: ">= 0.14.0" - checksum: c082b48f30f8ba8d0c55ed1d761910630860077c7ff5793c4c912adcb5760df06436ed0ad62be0de28113aac9ad2af55eccd995f8eee98df53382e4ced2072fb - languageName: node - linkType: hard - -"react@npm:16.14.0": - version: 16.14.0 - resolution: "react@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - checksum: 8484f3ecb13414526f2a7412190575fc134da785c02695eb92bb6028c930bfe1c238d7be2a125088fec663cc7cda0a3623373c46807cf2c281f49c34b79881ac - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 - languageName: node - linkType: hard - -"readable-stream@npm:2 || 3, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:~1.0.2": - version: 1.0.34 - resolution: "readable-stream@npm:1.0.34" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.1 - isarray: 0.0.1 - string_decoder: ~0.10.x - checksum: 85042c537e4f067daa1448a7e257a201070bfec3dd2706abdbd8ebc7f3418eb4d3ed4b8e5af63e2544d69f88ab09c28d5da3c0b77dc76185fddd189a59863b60 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"recast@npm:^0.18.1": - version: 0.18.10 - resolution: "recast@npm:0.18.10" - dependencies: - ast-types: 0.13.3 - esprima: ~4.0.0 - private: ^0.1.8 - source-map: ~0.6.1 - checksum: bb6b3083153301985511ed2ae1dd244a6b8e6a1b799ce1e0db49e57162247eec98f38dc7322d13a3680e5ab85be7cdff7edc28b0be11a689f2cb5fd925d6adbb - languageName: node - linkType: hard - -"recast@npm:^0.19.0": - version: 0.19.1 - resolution: "recast@npm:0.19.1" - dependencies: - ast-types: 0.13.3 - esprima: ~4.0.0 - private: ^0.1.8 - source-map: ~0.6.1 - checksum: f5de5f803a1b026d38fd9f11b510ec2d18d7d0518f14ea24e088b9b0061ab5b52cfb6206e826396bbd72870eca55894ca961b909fc18d382e3695275fb253b5c - languageName: node - linkType: hard - -"recast@npm:^0.20.4": - version: 0.20.5 - resolution: "recast@npm:0.20.5" - dependencies: - ast-types: 0.14.2 - esprima: ~4.0.0 - source-map: ~0.6.1 - tslib: ^2.0.1 - checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - -"rechoir@npm:^0.7.0": - version: 0.7.1 - resolution: "rechoir@npm:0.7.1" - dependencies: - resolve: ^1.9.0 - checksum: 2a04aab4e28c05fcd6ee6768446bc8b859d8f108e71fc7f5bcbc5ef25e53330ce2c11d10f82a24591a2df4c49c4f61feabe1fd11f844c66feedd4cd7bb61146a - languageName: node - linkType: hard - -"redeyed@npm:~1.0.0": - version: 1.0.1 - resolution: "redeyed@npm:1.0.1" - dependencies: - esprima: ~3.0.0 - checksum: fb189829954ce9dfa1647b38e2fdcbe53857dd6d37d2c66feea3a3f7cf22dafa74b66cef5f3d3d3deb5fe1614aa6966d21372374af5685c0a0e437ee68370d64 - languageName: node - linkType: hard - -"refractor@npm:^3.6.0": - version: 3.6.0 - resolution: "refractor@npm:3.6.0" - dependencies: - hastscript: ^6.0.0 - parse-entities: ^2.0.0 - prismjs: ~1.27.0 - checksum: 39b01c4168c77c5c8486f9bf8907bbb05f257f15026057ba5728535815a2d90eed620468a4bfbb2b8ceefbb3ce3931a1be8b17152dbdbc8b0eef92450ff750a2 - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4, regenerator-runtime@npm:^0.13.7": - version: 0.13.10 - resolution: "regenerator-runtime@npm:0.13.10" - checksum: 09893f5a9e82932642d9a999716b6c626dc53ef2a01307c952ebbf8e011802360163a37c304c18a6c358548be5a72b448e37209954a18696f21e438c81cbb4b9 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.0": - version: 0.15.0 - resolution: "regenerator-transform@npm:0.15.0" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 86e54849ab1167618d28bb56d214c52a983daf29b0d115c976d79840511420049b6b42c9ebdf187defa8e7129bdd74b6dd266420d0d3868c9fa7f793b5d15d49 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.1.0": - version: 5.2.1 - resolution: "regexpu-core@npm:5.2.1" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: c1244db79f7a4597414cd7fdf5171fa73905f0cbc684385c78127fc6198f9cade8fe829a1c4036c8ec57ac75b1ffb8c196451abdd2e153f26a4d8043fa10bbb3 - languageName: node - linkType: hard - -"registry-auth-token@npm:^5.0.1": - version: 5.0.1 - resolution: "registry-auth-token@npm:5.0.1" - dependencies: - "@pnpm/npm-conf": ^1.0.4 - checksum: abd3a3b14aee445398d09efc3b67be57fbf1b1e93b61443b45196055d2372f3814e6942a56ecd5a5385ab8e26c2078e0b3f6d346689c49b82f7e5049940e4b03 - languageName: node - linkType: hard - -"registry-url@npm:^6.0.0": - version: 6.0.1 - resolution: "registry-url@npm:6.0.1" - dependencies: - rc: 1.2.8 - checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab - languageName: node - linkType: hard - -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - -"remark-external-links@npm:^8.0.0": - version: 8.0.0 - resolution: "remark-external-links@npm:8.0.0" - dependencies: - extend: ^3.0.0 - is-absolute-url: ^3.0.0 - mdast-util-definitions: ^4.0.0 - space-separated-tokens: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 48c4a41fe38916f79febb390b0c4deefe82b554dd36dc534262d851860d17fb6d15d78d515f29194e5fa48db5f01f4405a6f6dd077aaf32812a2efffb01700d7 - languageName: node - linkType: hard - -"remark-mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "remark-mdx@npm:2.1.5" - dependencies: - mdast-util-mdx: ^2.0.0 - micromark-extension-mdxjs: ^1.0.0 - checksum: a5b2ccaa2bdb9d236e418e4b1868539b3dc4f8df0476b5574c9beb0cc8cf8a09573fa91aeb24f56a5c3bb4ed00d9b6db6afe36a53450985fdbdcf9736bed115b - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 - languageName: node - linkType: hard - -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 - languageName: node - linkType: hard - -"remark-slug@npm:^6.0.0": - version: 6.1.0 - resolution: "remark-slug@npm:6.1.0" - dependencies: - github-slugger: ^1.0.0 - mdast-util-to-string: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 81fff0dcfaf6d6117ef1293bb1d26c3e25483d99c65c22434298eed93583a89ea5d7b94063d9a7f47c0647a708ce84f00ff62d274503f248feec03c344cabb20 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"renderkid@npm:^3.0.0": - version: 3.0.0 - resolution: "renderkid@npm:3.0.0" - dependencies: - css-select: ^4.1.3 - dom-converter: ^0.2.0 - htmlparser2: ^6.1.0 - lodash: ^4.17.21 - strip-ansi: ^6.0.1 - checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - -"request@npm:~2.40.0": - version: 2.40.0 - resolution: "request@npm:2.40.0" - dependencies: - aws-sign2: ~0.5.0 - forever-agent: ~0.5.0 - form-data: ~0.1.0 - hawk: 1.1.1 - http-signature: ~0.10.0 - json-stringify-safe: ~5.0.0 - mime-types: ~1.0.1 - node-uuid: ~1.4.0 - oauth-sign: ~0.3.0 - qs: ~1.0.0 - stringstream: ~0.0.4 - tough-cookie: ">=0.12.0" - tunnel-agent: ~0.4.0 - dependenciesMeta: - aws-sign2: - optional: true - form-data: - optional: true - hawk: - optional: true - http-signature: - optional: true - oauth-sign: - optional: true - stringstream: - optional: true - tough-cookie: - optional: true - tunnel-agent: - optional: true - checksum: 3bd6a19abe740640d3772d71b1fb36b35628a52fa7b4b8167115e02b3fecee43be2437244e25b62a5b6150e5c5898b8a9afb1ab26d3cca229f45f70ff844eab9 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - -"reselect@npm:^3.0.1": - version: 3.0.1 - resolution: "reselect@npm:3.0.1" - checksum: c7ce544bae92db2dc6e768bc2dcc1248f9a21ada22ab5906c5e3c472e1dbc5f080889e5a715b8a2535e652d74c599dd090f5a68bcbe7e6f88053b7599ef4e8d3 - languageName: node - linkType: hard - -"reselect@npm:^4.0.0": - version: 4.1.6 - resolution: "reselect@npm:4.1.6" - checksum: 3ea1058422904063ec93c8f4693fe33dcb2178bbf417ace8db5b2c797a5875cf357d9308d11ed3942ee22507dd34ecfbf1f3a21340a4f31c206cab1d36ceef31 - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: ^5.0.0 - checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - -"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": - version: 1.0.1 - resolution: "resolve-dir@npm:1.0.1" - dependencies: - expand-tilde: ^2.0.0 - global-modules: ^1.0.0 - checksum: ef736b8ed60d6645c3b573da17d329bfb50ec4e1d6c5ffd6df49e3497acef9226f9810ea6823b8ece1560e01dcb13f77a9f6180d4f242d00cc9a8f4de909c65c - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-package-path@npm:^1.0.11, resolve-package-path@npm:^1.2.6": - version: 1.2.7 - resolution: "resolve-package-path@npm:1.2.7" - dependencies: - path-root: ^0.1.1 - resolve: ^1.10.0 - checksum: 554855963c8599ef7ce4c29629356891f36652834d0ba39555459009918474fa28bd75332139223e3fb297455f103ae0c880233fa51603c1bc1ba3e2e280b7ec - languageName: node - linkType: hard - -"resolve-package-path@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-package-path@npm:2.0.0" - dependencies: - path-root: ^0.1.1 - resolve: ^1.13.1 - checksum: 606fab28e752d863bdeef9cef1e67e92830d8e7e0f038f40fbff94f9808a57cb2a810bd70c387c5b438bee626c1753cd11a0d953a7fd28e9dba190910cd6783a - languageName: node - linkType: hard - -"resolve-package-path@npm:^3.1.0": - version: 3.1.0 - resolution: "resolve-package-path@npm:3.1.0" - dependencies: - path-root: ^0.1.1 - resolve: ^1.17.0 - checksum: 9d1d170db3b01e5439bc0918344e7b539c4dece53f68ff2b6c13e3c941bb10c2553b7ea837fef8aee25ce3dd5f404d83eac91a5f5b651a42578bd2df5a301a7e - languageName: node - linkType: hard - -"resolve-path@npm:^1.4.0": - version: 1.4.0 - resolution: "resolve-path@npm:1.4.0" - dependencies: - http-errors: ~1.6.2 - path-is-absolute: 1.0.1 - checksum: 1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.13.1, resolve@npm:^1.14.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.3.3, resolve@npm:^1.4.0, resolve@npm:^1.5.0, resolve@npm:^1.9.0": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.11.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.13.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.3.3#~builtin<compat/resolve>, resolve@patch:resolve@^1.4.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.5.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.9.0#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: ^3.0.0 - checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e - languageName: node - linkType: hard - -"restore-cursor@npm:^2.0.0": - version: 2.0.0 - resolution: "restore-cursor@npm:2.0.0" - dependencies: - onetime: ^2.0.0 - signal-exit: ^3.0.2 - checksum: 482e13d02d834b6e5e3aa90304a8b5e840775d6f06916cc92a50038adf9f098dcc72405b567da8a37e137ae40ad3e31896fa3136ae62f7a426c2fbf53d036536 - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: ^5.1.0 - signal-exit: ^3.0.2 - checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rimraf@npm:^2.2.8, rimraf@npm:^2.3.4, rimraf@npm:^2.4.1, rimraf@npm:^2.4.3, rimraf@npm:^2.5.3, rimraf@npm:^2.5.4, rimraf@npm:^2.6.1, rimraf@npm:^2.6.2, rimraf@npm:^2.6.3": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - -"rimraf@npm:^3.0.1, rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 - languageName: node - linkType: hard - -"rsvp@npm:^3.0.14, rsvp@npm:^3.0.17, rsvp@npm:^3.0.18, rsvp@npm:^3.0.21, rsvp@npm:^3.0.6, rsvp@npm:^3.1.0": - version: 3.6.2 - resolution: "rsvp@npm:3.6.2" - checksum: 08504ea7ab3dba0349ff820011a460da69de08edf7149ee672f4511310ee4bd3767bfa83b6db019fa99b144125e1e93e6fba122d75a702a005360393f4352864 - languageName: node - linkType: hard - -"rsvp@npm:^4.7.0, rsvp@npm:^4.8.1, rsvp@npm:^4.8.4, rsvp@npm:^4.8.5": - version: 4.8.5 - resolution: "rsvp@npm:4.8.5" - checksum: 2d8ef30d8febdf05bdf856ccca38001ae3647e41835ca196bc1225333f79b94ae44def733121ca549ccc36209c9b689f6586905e2a043873262609744da8efc1 - languageName: node - linkType: hard - -"rsvp@npm:~3.2.1": - version: 3.2.1 - resolution: "rsvp@npm:3.2.1" - checksum: e2ac49cbe35b8c2701b07698066d7cd8004115b070f3352d45759dfcd820fa57e687230331ba41f5a40e1871789cbf122de6e73559598777a0b18b66953dc09b - languageName: node - linkType: hard - -"run-async@npm:^2.2.0, run-async@npm:^2.4.0": - version: 2.4.1 - resolution: "run-async@npm:2.4.1" - checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"rxjs@npm:^6.4.0, rxjs@npm:^6.6.0": - version: 6.6.7 - resolution: "rxjs@npm:6.6.7" - dependencies: - tslib: ^1.9.0 - checksum: bc334edef1bb8bbf56590b0b25734ba0deaf8825b703256a93714308ea36dff8a11d25533671adf8e104e5e8f256aa6fdfe39b2e248cdbd7a5f90c260acbbd1b - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 7f117b604554c9daca713be76cecc6c52932ed1dd6303638274f21319038bfd760fbfd353e526cc83f11894935bc4beb71f5b7b9478c11bf9718c0e0d94c51cb - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-json-parse@npm:~1.0.1": - version: 1.0.1 - resolution: "safe-json-parse@npm:1.0.1" - checksum: aea585d967fb373903aae99e6e31157a68ebebdc9d0011bc86732b6c700994768349e30d4fb6dfdc346106004a85104187d0b48964fe1caff90b0886df5827eb - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"sane@npm:^4.0.0, sane@npm:^4.0.3, sane@npm:^4.1.0": - version: 4.1.0 - resolution: "sane@npm:4.1.0" - dependencies: - "@cnakazawa/watch": ^1.0.3 - anymatch: ^2.0.0 - capture-exit: ^2.0.0 - exec-sh: ^0.3.2 - execa: ^1.0.0 - fb-watchman: ^2.0.0 - micromatch: ^3.1.4 - minimist: ^1.1.1 - walker: ~1.0.5 - bin: - sane: ./src/cli.js - checksum: 97716502d456c0d38670a902a4ea943d196dcdf998d1e40532d8f3e24e25d7eddfd4c3579025a1eee8eac09a48dfd05fba61a2156c56704e7feaa450eb249f7c - languageName: node - linkType: hard - -"scheduler@npm:^0.19.1": - version: 0.19.1 - resolution: "scheduler@npm:0.19.1" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 73e185a59e2ff5aa3609f5b9cb97ddd376f89e1610579d29939d952411ca6eb7a24907a4ea4556569dacb931467a1a4a56d94fe809ef713aa76748642cd96a6c - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.5": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": ^7.0.5 - ajv: ^6.12.4 - ajv-keywords: ^3.5.2 - checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 - ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f - languageName: node - linkType: hard - -"semver-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "semver-diff@npm:4.0.0" - dependencies: - semver: ^7.3.5 - checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.5.0, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: ~1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: ~1.3.2 - safe-buffer: 5.1.1 - checksum: f4dd0fbee3b7e18d0a27ba6ba01d2f585f23f533010c9e8c74aad74615b19b12d8fbe714f14cb3579803f0bacecd67cdc858714cb56c6e28f8dd07ccc997aea4 - languageName: node - linkType: hard - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: ^6.0.2 - checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 - languageName: node - linkType: hard - -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 8d73a5e9861f5e5f1068e2cfc39bc0002400fe58558ab5e5fa75630d2c3adf44ca1fac81957609c8320d5533e093802fcafc72904bf1a32b95de3c19a0b1c0d4 - languageName: node - linkType: hard - -"shx@npm:^0.3.2": - version: 0.3.4 - resolution: "shx@npm:0.3.4" - dependencies: - minimist: ^1.2.3 - shelljs: ^0.8.5 - bin: - shx: lib/cli.js - checksum: 0aa168bfddc11e3fe8943cce2e0d2d8514a560bd58cf2b835b4351ba03f46068f7d88286c2627f4b85604e81952154c43746369fb3f0d60df0e3b511f465e5b8 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"silent-error@npm:^1.0.0, silent-error@npm:^1.0.1, silent-error@npm:^1.1.1": - version: 1.1.1 - resolution: "silent-error@npm:1.1.1" - dependencies: - debug: ^2.2.0 - checksum: 4b35a081351acf5610bca231f8788fde72de17e0ab35b6d54a3090dac16ecec56becdbc619da756eee84b134f2030f806a105c70f8fcc6544738654b8aceefd7 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - -"sntp@npm:0.2.x": - version: 0.2.4 - resolution: "sntp@npm:0.2.4" - dependencies: - hoek: 0.9.x - checksum: 992da9dfc725d82a204cc4ff8ba9955fc0d1f9bd3afb60b08723d365a77daab8c19f43b51af26953c44e0097d44fad40680602ba1efceb49ee5c30ae8e362f44 - languageName: node - linkType: hard - -"socket.io-adapter@npm:~2.4.0": - version: 2.4.0 - resolution: "socket.io-adapter@npm:2.4.0" - checksum: a84639946dce13547b95f6e09fe167cdcd5d80941afc2e46790cc23384e0fd3c901e690ecc9bdd600939ce6292261ee15094a0b486f797ed621cfc8783d87a0c - languageName: node - linkType: hard - -"socket.io-parser@npm:~4.2.0": - version: 4.2.1 - resolution: "socket.io-parser@npm:4.2.1" - dependencies: - "@socket.io/component-emitter": ~3.1.0 - debug: ~4.3.1 - checksum: 2582202f22538d7e6b4436991378cb4cea3b2f8219cda24923ae35afd291ab5ad6120e7d093e41738256b6c6ad10c667dd25753c2d9a2340fead04e9286f152d - languageName: node - linkType: hard - -"socket.io@npm:^4.1.2": - version: 4.5.3 - resolution: "socket.io@npm:4.5.3" - dependencies: - accepts: ~1.3.4 - base64id: ~2.0.0 - debug: ~4.3.2 - engine.io: ~6.2.0 - socket.io-adapter: ~2.4.0 - socket.io-parser: ~4.2.0 - checksum: 2a7e4c64bbebb444d211bc66fb8356c14dd0fd4138d31e1781db03fa5a731a3abb7b305fa32cb6c7b57e5ac788601583aad14bea6ff9b8c4ca7b74118ba55f66 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"sort-object-keys@npm:^1.1.3": - version: 1.1.3 - resolution: "sort-object-keys@npm:1.1.3" - checksum: abea944d6722a1710a1aa6e4f9509da085d93d5fc0db23947cb411eedc7731f80022ce8fa68ed83a53dd2ac7441fcf72a3f38c09b3d9bbc4ff80546aa2e151ad - languageName: node - linkType: hard - -"sort-package-json@npm:^1.48.0": - version: 1.57.0 - resolution: "sort-package-json@npm:1.57.0" - dependencies: - detect-indent: ^6.0.0 - detect-newline: 3.1.0 - git-hooks-list: 1.0.3 - globby: 10.0.0 - is-plain-obj: 2.1.0 - sort-object-keys: ^1.1.3 - bin: - sort-package-json: cli.js - checksum: 15758ba6b1033ae136863eabd4b8c8a28e79dd68b71327f6803c2ea740dc149dc9ad708b006d07ee9de56b6dc7cadb7c697801ad50c01348aa91022c6ff6e21d - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map-url@npm:^0.3.0": - version: 0.3.0 - resolution: "source-map-url@npm:0.3.0" - checksum: 9ed12e3fd1b09cd6506c6197129c062e02451f474dcd7ef6419f20fe86ba969c74ba10c37fb4ea5e1f2265e62fde8d31946596d7971e3251a0c75fbf411c5f1b - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:0.4.x, source-map@npm:^0.4.2": - version: 0.4.4 - resolution: "source-map@npm:0.4.4" - dependencies: - amdefine: ">=0.0.4" - checksum: b31992fcb4a2a6c335617f187bd36f392896dfcc111830ebdb8b716923cf6554b665833b975fc998bdf3a63881b2c8b4c5c34fda0280357b8c18fe6aa5d148ea - languageName: node - linkType: hard - -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.0": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - -"source-map@npm:~0.1.x": - version: 0.1.43 - resolution: "source-map@npm:0.1.43" - dependencies: - amdefine: ">=0.0.4" - checksum: 0a230f8cae8a8ea70bd36701c33d01fb0c437b798508a561c896a99b42f5af81a206176a250fc654c7c57a736b8081c4b4a6c9887455f7d2724f847451f1d7d9 - languageName: node - linkType: hard - -"sourcemap-validator@npm:^1.1.0": - version: 1.1.1 - resolution: "sourcemap-validator@npm:1.1.1" - dependencies: - jsesc: ~0.3.x - lodash.foreach: ^4.5.0 - lodash.template: ^4.5.0 - source-map: ~0.1.x - checksum: 51b704c08d6899dcb3abbf42cdcf39ccc2199a4c1be201935dd366f15ee8c2e43f684b1eef3c84e08f209280616943fd17feef2542873ca37471205288f13467 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^1.0.0": - version: 1.1.5 - resolution: "space-separated-tokens@npm:1.1.5" - checksum: 8ef68f1cfa8ccad316b7f8d0df0919d0f1f6d32101e8faeee34ea3a923ce8509c1ad562f57388585ee4951e92d27afa211ed0a077d3d5995b5ba9180331be708 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^2.0.0": - version: 2.0.1 - resolution: "space-separated-tokens@npm:2.0.1" - checksum: 66e30a6382d6e3ab0a6573d510235a198202071d4ebfef8c198f10433166f0cdced4dbf0946cad3c4b2ecc336896a11f98b2ec93047e140fe7aef6fd3a21365b - languageName: node - linkType: hard - -"spawn-args@npm:^0.2.0": - version: 0.2.0 - resolution: "spawn-args@npm:0.2.0" - checksum: bfae0a52166bf4b0b18388220532aa48c436413e970f8c404ca249e541ad63b5e5371f54f1db9b0fd57517ea333a1356d71209783a7686f08c883338e75ae0ac - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.12 - resolution: "spdx-license-ids@npm:3.0.12" - checksum: 92a4dddce62ce1db6fe54a7a839cf85e06abc308fc83b776a55b44e4f1906f02e7ebd506120847039e976bbbad359ea8bdfafb7925eae5cd7e73255f02e0b7d6 - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"sprintf-js@npm:^1.1.1": - version: 1.1.2 - resolution: "sprintf-js@npm:1.1.2" - checksum: d4bb46464632b335e5faed381bd331157e0af64915a98ede833452663bc672823db49d7531c32d58798e85236581fb7342fd0270531ffc8f914e186187bf1c90 - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"sri-toolbox@npm:^0.2.0": - version: 0.2.0 - resolution: "sri-toolbox@npm:0.2.0" - checksum: 945af49e38f8481e28d02e71e9c23ac1eea008da4328f9c98610cb44eeed83c74e4fa64de7f7264b1385dccb8acabc25ac0a9bb6dbe67ef6261cf18f9e308d01 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"stagehand@npm:^1.0.0": - version: 1.0.0 - resolution: "stagehand@npm:1.0.0" - dependencies: - debug: ^4.1.0 - checksum: 262ca2bfff9e505588a7595a24792814d9df27e54f8703aa5f2aa451df7f499b23a6860d42d9cd7462e37f45421365d430680705edca1ffe04d1cce481ed782a - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - -"statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c - languageName: node - linkType: hard - -"store2@npm:^2.12.0": - version: 2.14.2 - resolution: "store2@npm:2.14.2" - checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 - languageName: node - linkType: hard - -"storybook@portal:../../code/lib/cli-storybook::locator=ember-example%40workspace%3A.": - version: 0.0.0-use.local - resolution: "storybook@portal:../../code/lib/cli-storybook::locator=ember-example%40workspace%3A." - dependencies: - "@storybook/cli": 7.0.0-alpha.42 - bin: - sb: ./index.js - storybook: ./index.js - languageName: node - linkType: soft - -"stream-browserify@npm:^3.0.0": - version: 3.0.0 - resolution: "stream-browserify@npm:3.0.0" - dependencies: - inherits: ~2.0.4 - readable-stream: ^3.5.0 - checksum: 4c47ef64d6f03815a9ca3874e2319805e8e8a85f3550776c47ce523b6f4c6cd57f40e46ec6a9ab8ad260fde61863c2718f250d3bedb3fe9052444eb9abfd9921 - languageName: node - linkType: hard - -"stream-to-array@npm:^2.3.0": - version: 2.3.0 - resolution: "stream-to-array@npm:2.3.0" - dependencies: - any-promise: ^1.1.0 - checksum: 7feaf63b38399b850615e6ffcaa951e96e4c8f46745dbce4b553a94c5dc43966933813747014935a3ff97793e7f30a65270bde19f82b2932871a1879229a77cf - languageName: node - linkType: hard - -"string-template@npm:~0.2.1": - version: 0.2.1 - resolution: "string-template@npm:0.2.1" - checksum: 042cdcf4d4832378f12fbf45b42f479990f330cc409e6dc184838801efbc8352ccf9428fe169f8f8cfff2b864879d4ba1ef8b5f41d63d1d71844c48005a1683f - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^2.1.0": - version: 2.1.1 - resolution: "string-width@npm:2.1.1" - dependencies: - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^4.0.0 - checksum: d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - -"string_decoder@npm:0.10, string_decoder@npm:~0.10.x": - version: 0.10.31 - resolution: "string_decoder@npm:0.10.31" - checksum: fe00f8e303647e5db919948ccb5ce0da7dea209ab54702894dd0c664edd98e5d4df4b80d6fabf7b9e92b237359d21136c95bf068b2f7760b772ca974ba970202 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"stringify-entities@npm:^4.0.0": - version: 4.0.3 - resolution: "stringify-entities@npm:4.0.3" - dependencies: - character-entities-html4: ^2.0.0 - character-entities-legacy: ^3.0.0 - checksum: 59e8f523b403bf7d415690e72ae52982decd6ea5426bd8b3f5c66225ddde73e766c0c0d91627df082d0794e30b19dd907ffb5864cef3602e4098d6777d7ca3c2 - languageName: node - linkType: hard - -"stringstream@npm:~0.0.4": - version: 0.0.6 - resolution: "stringstream@npm:0.0.6" - checksum: 17f7708bbb93b73e48c844e1f890ad031111543da295f11bfd0cd5910481d101e2dc62b2fa2099c5b46471c3c0b9a7ee5d97d674eb213b51612a42e24a5cc4f6 - languageName: node - linkType: hard - -"strip-ansi@npm:^3.0.0": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: ^2.0.0 - checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 - languageName: node - linkType: hard - -"strip-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-ansi@npm:4.0.0" - dependencies: - ansi-regex: ^3.0.0 - checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca - languageName: node - linkType: hard - -"strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": - version: 5.2.0 - resolution: "strip-ansi@npm:5.2.0" - dependencies: - ansi-regex: ^4.1.0 - checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: ^6.0.1 - checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.0.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 - languageName: node - linkType: hard - -"style-loader@npm:^3.3.1": - version: 3.3.1 - resolution: "style-loader@npm:3.3.1" - peerDependencies: - webpack: ^5.0.0 - checksum: 470feef680f59e2fce4d6601b5c55b88c01ad8d1dd693c528ffd591ff5fd7c01a4eff3bdbe62f26f847d6bd2430c9ab594be23307cfe7a3446ab236683f0d066 - languageName: node - linkType: hard - -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" - dependencies: - inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 - languageName: node - linkType: hard - -"styled_string@npm:0.0.1": - version: 0.0.1 - resolution: "styled_string@npm:0.0.1" - checksum: cc01e28ec5b7559e66cfb88b2a712beb3af91dc932df2bbe09e32d9bd5ae915bfe9dc1c1d3f5f9fcfe80acbe1ec2d741fa300a1a9032859c0f20856f5ef0e32a - languageName: node - linkType: hard - -"sum-up@npm:^1.0.1": - version: 1.0.3 - resolution: "sum-up@npm:1.0.3" - dependencies: - chalk: ^1.0.0 - checksum: bd08f404c83464f4e7a880340e84ad4aeb271a1b0a5ee8d084dd511988f96f7e321fb64442c7ca21249990c7562476f929ec8bd1cf6f4514ca25e6aae5281ee6 - languageName: node - linkType: hard - -"supports-color@npm:^2.0.0": - version: 2.0.0 - resolution: "supports-color@npm:2.0.0" - checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"symlink-or-copy@npm:^1.0.0, symlink-or-copy@npm:^1.0.1, symlink-or-copy@npm:^1.1.8, symlink-or-copy@npm:^1.2.0, symlink-or-copy@npm:^1.3.1": - version: 1.3.1 - resolution: "symlink-or-copy@npm:1.3.1" - checksum: 430c32ab5606f7b7c946a5a29ea17ce6cb0b34d8cb8394234b7abe710c8c029bf41030df79406cf49c4fc1e49aa979ca950b836767e3b8702acf9efe922a2f74 - languageName: node - linkType: hard - -"sync-disk-cache@npm:^1.3.3": - version: 1.3.4 - resolution: "sync-disk-cache@npm:1.3.4" - dependencies: - debug: ^2.1.3 - heimdalljs: ^0.2.3 - mkdirp: ^0.5.0 - rimraf: ^2.2.8 - username-sync: ^1.0.2 - checksum: b828cf52b43500d83f4d98b626463227a773743cb14a5a1b5fc4f437ef85170e2a5259c6a1686e569cc231557a9a7b4278fa0cf16cef976329b18154d88215bd - languageName: node - linkType: hard - -"synchronous-promise@npm:^2.0.15": - version: 2.0.16 - resolution: "synchronous-promise@npm:2.0.16" - checksum: 1a3e5dfa9e3b913452366e182d4cae5c2ffb9de8c9753ecb602539a298e82ab82de951a0b0ecd86b2e2e237b1236eb5e82964c8ce13b2d23f7ecd52767a2b74d - languageName: node - linkType: hard - -"tap-parser@npm:^7.0.0": - version: 7.0.0 - resolution: "tap-parser@npm:7.0.0" - dependencies: - events-to-array: ^1.0.1 - js-yaml: ^3.2.7 - minipass: ^2.2.0 - bin: - tap-parser: bin/cmd.js - checksum: 9970c8e797b97bcdb91d92eb0847e8d550e64b914800c4485bea0a28756f9c4e4cbbfe429e7d05c2140b1a83ae092b5636e191360c8fc3f817e60acb96658147 - languageName: node - linkType: hard - -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - 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 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"telejson@npm:^6.0.8": - version: 6.0.8 - resolution: "telejson@npm:6.0.8" - dependencies: - "@types/is-function": ^1.0.0 - global: ^4.4.0 - is-function: ^1.0.2 - is-regex: ^1.1.2 - is-symbol: ^1.0.3 - isobject: ^4.0.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - checksum: 7411a5e78a35720bd0654a544409d3ce467b1dbb2073c73f36476b4c0905d97dbf539d6cbae737bb1fd8c872c2058f2a5450163a15117ed3fa031b2a2b8b33f6 - languageName: node - linkType: hard - -"temp@npm:0.9.4": - version: 0.9.4 - resolution: "temp@npm:0.9.4" - dependencies: - mkdirp: ^0.5.1 - rimraf: ~2.6.2 - checksum: 8709d4d63278bd309ca0e49e80a268308dea543a949e71acd427b3314cd9417da9a2cc73425dd9c21c6780334dbffd67e05e7be5aaa73e9affe8479afc6f20e3 - languageName: node - linkType: hard - -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1": - version: 5.3.6 - resolution: "terser-webpack-plugin@npm:5.3.6" - dependencies: - "@jridgewell/trace-mapping": ^0.3.14 - jest-worker: ^27.4.5 - schema-utils: ^3.1.1 - serialize-javascript: ^6.0.0 - terser: ^5.14.1 - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8f3448d7fdb0434ce6a0c09d95c462bfd2f4a5a430233d854163337f734a7f5c07c74513d16081e06d4ca33d366d5b1a36f5444219bc41a7403afd6162107bad - languageName: node - linkType: hard - -"terser@npm:^4.3.9": - version: 4.8.1 - resolution: "terser@npm:4.8.1" - dependencies: - commander: ^2.20.0 - source-map: ~0.6.1 - source-map-support: ~0.5.12 - bin: - terser: bin/terser - checksum: b342819bf7e82283059aaa3f22bb74deb1862d07573ba5a8947882190ad525fd9b44a15074986be083fd379c58b9a879457a330b66dcdb77b485c44267f9a55a - languageName: node - linkType: hard - -"terser@npm:^5.10.0, terser@npm:^5.14.1": - version: 5.15.1 - resolution: "terser@npm:5.15.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: 9880a1e0956983a1ce5de204ea35121c0009fa41d582a6904ae850e1953a1a2cc021168439565280c5a8eee67c85a874175627e24989b046c7a72589b81c3979 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - -"testem@npm:^3.2.0": - version: 3.9.0 - resolution: "testem@npm:3.9.0" - dependencies: - "@xmldom/xmldom": ^0.8.0 - backbone: ^1.1.2 - bluebird: ^3.4.6 - charm: ^1.0.0 - commander: ^2.6.0 - compression: ^1.7.4 - consolidate: ^0.16.0 - execa: ^1.0.0 - express: ^4.10.7 - fireworm: ^0.7.0 - glob: ^7.0.4 - http-proxy: ^1.13.1 - js-yaml: ^3.2.5 - lodash.assignin: ^4.1.0 - lodash.castarray: ^4.4.0 - lodash.clonedeep: ^4.4.1 - lodash.find: ^4.5.1 - lodash.uniqby: ^4.7.0 - mkdirp: ^1.0.4 - mustache: ^4.2.0 - node-notifier: ^10.0.0 - npmlog: ^6.0.0 - printf: ^0.6.1 - rimraf: ^3.0.2 - socket.io: ^4.1.2 - spawn-args: ^0.2.0 - styled_string: 0.0.1 - tap-parser: ^7.0.0 - tmp: 0.0.33 - bin: - testem: testem.js - checksum: c2c0668dfeed4b5327391eee8a8fe92b735acab82d921b8b975dc56220b6c4c1ac9d6a8a4fc15dd9f1cb50d7054885060e3b9b86990453d71f183b83c6b74adb - languageName: node - linkType: hard - -"textextensions@npm:1 || 2": - version: 2.6.0 - resolution: "textextensions@npm:2.6.0" - checksum: e28781f092d0172b78974fd22d5c007cc43ac50be666b36bbf10125d961775faf309a70b51697a2debc074c8f23cc923f1386b1e4661e11b128cee292060034c - languageName: node - linkType: hard - -"throttle-debounce@npm:^3.0.1": - version: 3.0.1 - resolution: "throttle-debounce@npm:3.0.1" - checksum: e34ef638e8df3a9154249101b68afcbf2652a139c803415ef8a2f6a8bc577bcd4d79e4bb914ad3cd206523ac78b9fb7e80885bfa049f64fbb1927f99d98b5736 - languageName: node - linkType: hard - -"through2-filter@npm:^3.0.0": - version: 3.0.0 - resolution: "through2-filter@npm:3.0.0" - dependencies: - through2: ~2.0.0 - xtend: ~4.0.0 - checksum: 2fa0f042290749824b973c27ae006f9dfe7c9bcee570504ab066998e3bd7d43bea28b642eef8a4434dbfd0a7cd18c8823ac81927614234fd477ccd5ea38fab18 - languageName: node - linkType: hard - -"through2@npm:^2.0.3, through2@npm:~2.0.0": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 - languageName: node - linkType: hard - -"through2@npm:^3.0.1": - version: 3.0.2 - resolution: "through2@npm:3.0.2" - dependencies: - inherits: ^2.0.4 - readable-stream: 2 || 3 - checksum: 47c9586c735e7d9cbbc1029f3ff422108212f7cc42e06d5cc9fff7901e659c948143c790e0d0d41b1b5f89f1d1200bdd200c7b72ad34f42f9edbeb32ea49e8b7 - languageName: node - linkType: hard - -"through@npm:^2.3.6": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"tiny-lr@npm:^2.0.0": - version: 2.0.0 - resolution: "tiny-lr@npm:2.0.0" - dependencies: - body: ^5.1.0 - debug: ^3.1.0 - faye-websocket: ^0.11.3 - livereload-js: ^3.3.1 - object-assign: ^4.1.0 - qs: ^6.4.0 - checksum: d1804c15727e741aa6eccdee6171548fce8d2865b0f18b3e1b6ac9f80048c2e099eeec2540a49380a1fd6f3eb6cafe1cb5adc76dfec2c9dceee3e014a4f25991 - languageName: node - linkType: hard - -"tmp@npm:0.0.28": - version: 0.0.28 - resolution: "tmp@npm:0.0.28" - dependencies: - os-tmpdir: ~1.0.1 - checksum: 8167d2471b650f88fde1515bbf6c62d2adef07972d06531569f789863a2436c32027b6d5fbe3102ed2c430b86043dffd337db12494f1f982534862d9487e4eff - languageName: node - linkType: hard - -"tmp@npm:0.0.33, tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: ~1.0.2 - checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 - languageName: node - linkType: hard - -"tmp@npm:^0.1.0": - version: 0.1.0 - resolution: "tmp@npm:0.1.0" - dependencies: - rimraf: ^2.6.3 - checksum: 6bab8431de9d245d4264bd8cd6bb216f9d22f179f935dada92a11d1315572c8eb7c3334201e00594b4708608bd536fad3a63bfb037e7804d827d66aa53a1afcd - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 - languageName: node - linkType: hard - -"topo@npm:2.x.x": - version: 2.0.2 - resolution: "topo@npm:2.0.2" - dependencies: - hoek: 4.x.x - checksum: 02ecb8cba2aa46abb94cc2a4459bd39874ba84a712aa51d482fdcddf16ea0bf69f232e55e6a2c32653f7c15d619a29567f97c5c8cb402257ddcb6794a55720bc - languageName: node - linkType: hard - -"tough-cookie@npm:>=0.12.0": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"tree-sync@npm:^1.2.2": - version: 1.4.0 - resolution: "tree-sync@npm:1.4.0" - dependencies: - debug: ^2.2.0 - fs-tree-diff: ^0.5.6 - mkdirp: ^0.5.1 - quick-temp: ^0.1.5 - walk-sync: ^0.3.3 - checksum: af76c496653dea16c125cf16a7313814d453ce51d7d9ac3aafc9b4d60150c25477c7228a9821b8479951ef70d7bf2f7950c206cbc2e9843e57692d69c2221503 - languageName: node - linkType: hard - -"tree-sync@npm:^2.0.0, tree-sync@npm:^2.1.0": - version: 2.1.0 - resolution: "tree-sync@npm:2.1.0" - dependencies: - debug: ^4.1.1 - fs-tree-diff: ^2.0.1 - mkdirp: ^0.5.5 - quick-temp: ^0.1.5 - walk-sync: ^0.3.3 - checksum: 6454ca6021cf7ab9220764b7577370af4601d4172085b55f45ab6f414639281f95deb2e10cb46007b6f04dba5189cb11e48fb43be908f78369a93a6b680c9342 - languageName: node - linkType: hard - -"trim-lines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" - checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed - languageName: node - linkType: hard - -"trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 - languageName: node - linkType: hard - -"ts-dedent@npm:^2.0.0": - version: 2.2.0 - resolution: "ts-dedent@npm:2.2.0" - checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af - languageName: node - linkType: hard - -"tslib@npm:^1.9.0": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": - version: 2.4.0 - resolution: "tslib@npm:2.4.0" - checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 - languageName: node - linkType: hard - -"tunnel-agent@npm:~0.4.0": - version: 0.4.3 - resolution: "tunnel-agent@npm:0.4.3" - checksum: da6080d1a46e60b7458b9d0378da23a5a4573c94f2be238618f2b8acfbc456497f51d9c14b1d3b3f7b41facc5bf22860dd224860afc6652318ac46c94b162c4b - languageName: node - linkType: hard - -"type-fest@npm:^0.11.0": - version: 0.11.0 - resolution: "type-fest@npm:0.11.0" - checksum: 8e7589e1eb5ced6c8e1d3051553b59b9f525c41e58baa898229915781c7bf55db8cb2f74e56d8031f6af5af2eecc7cb8da9ca3af7e5b80b49d8ca5a81891f3f9 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.1": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 - languageName: node - linkType: hard - -"type-fest@npm:^2.13.0, type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 - languageName: node - linkType: hard - -"uc.micro@npm:^1.0.0, uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": - version: 1.0.6 - resolution: "uc.micro@npm:1.0.6" - checksum: 6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" - bin: - uglifyjs: bin/uglifyjs - checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"underscore.string@npm:^3.2.2, underscore.string@npm:~3.3.4": - version: 3.3.6 - resolution: "underscore.string@npm:3.3.6" - dependencies: - sprintf-js: ^1.1.1 - util-deprecate: ^1.0.2 - checksum: b7719c30e5d1fdda4ee9379e8d80dca2b0668942420ba365ae3410120e08225fe36707a7981ce0f921812dee6a2290b713cdce1e75e770b98e67a45d8a378d35 - languageName: node - linkType: hard - -"underscore@npm:>=1.8.3": - version: 1.13.6 - resolution: "underscore@npm:1.13.6" - checksum: d5cedd14a9d0d91dd38c1ce6169e4455bb931f0aaf354108e47bd46d3f2da7464d49b2171a5cf786d61963204a42d01ea1332a903b7342ad428deaafaf70ec36 - languageName: node - linkType: hard - -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: ^2.0.0 - unicode-property-aliases-ecmascript: ^2.0.0 - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c - languageName: node - linkType: hard - -"unique-stream@npm:^2.2.1": - version: 2.3.1 - resolution: "unique-stream@npm:2.3.1" - dependencies: - json-stable-stringify-without-jsonify: ^1.0.1 - through2-filter: ^3.0.0 - checksum: 65e433e68e46640e9283dbb022493c8d79ed1dac47807fe751dfe3bd50586927f63ad880ce9e01c2f85911f3caca48d04731aff6f07869434d5f76ecfe478559 - languageName: node - linkType: hard - -"unique-string@npm:^2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: ^2.0.0 - checksum: ef68f639136bcfe040cf7e3cd7a8dff076a665288122855148a6f7134092e6ed33bf83a7f3a9185e46c98dddc445a0da6ac25612afa1a7c38b8b654d6c02498e - languageName: node - linkType: hard - -"unique-string@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-string@npm:3.0.0" - dependencies: - crypto-random-string: ^4.0.0 - checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df - languageName: node - linkType: hard - -"unist-builder@npm:^3.0.0": - version: 3.0.0 - resolution: "unist-builder@npm:3.0.0" - dependencies: - "@types/unist": ^2.0.0 - checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84 - languageName: node - linkType: hard - -"unist-util-generated@npm:^2.0.0": - version: 2.0.0 - resolution: "unist-util-generated@npm:2.0.0" - checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0 - languageName: node - linkType: hard - -"unist-util-is@npm:^4.0.0": - version: 4.1.0 - resolution: "unist-util-is@npm:4.1.0" - checksum: 726484cd2adc9be75a939aeedd48720f88294899c2e4a3143da413ae593f2b28037570730d5cf5fd910ff41f3bc1501e3d636b6814c478d71126581ef695f7ea - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.1.1 - resolution: "unist-util-is@npm:5.1.1" - checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4 - languageName: node - linkType: hard - -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.1 - resolution: "unist-util-position-from-estree@npm:1.1.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: 63808bdcb8b49afa5231712d95b586fe877859ee03d23adb47485c30222007a5af55e95d103d4af51d1d16376aaa5a58fa985a08d63727c38b1515873df8b79b - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.3 - resolution: "unist-util-position@npm:4.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209 - languageName: node - linkType: hard - -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.1 - resolution: "unist-util-remove-position@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 7d2808662ac65f2b2f615822b78060419f738fb3b074b10cec77c596ea966b8f5c47553d2d322822a5975c49d2b21cdd64c198ae9fb02a9d54d1afa6342cdd6a - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.2 - resolution: "unist-util-stringify-position@npm:3.0.2" - dependencies: - "@types/unist": ^2.0.0 - checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^3.0.0": - version: 3.1.1 - resolution: "unist-util-visit-parents@npm:3.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - checksum: 1170e397dff88fab01e76d5154981666eb0291019d2462cff7a2961a3e76d3533b42eaa16b5b7e2d41ad42a5ea7d112301458283d255993e660511387bf67bc3 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.1.1": - version: 5.1.1 - resolution: "unist-util-visit-parents@npm:5.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18 - languageName: node - linkType: hard - -"unist-util-visit@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-visit@npm:2.0.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - unist-util-visit-parents: ^3.0.0 - checksum: 1fe19d500e212128f96d8c3cfa3312846e586b797748a1fd195fe6479f06bc90a6f6904deb08eefc00dd58e83a1c8a32fb8677252d2273ad7a5e624525b69b8f - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit@npm:4.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0 - languageName: node - linkType: hard - -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff - languageName: node - linkType: hard - -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"untildify@npm:^2.1.0": - version: 2.1.0 - resolution: "untildify@npm:2.1.0" - dependencies: - os-homedir: ^1.0.0 - checksum: 071b394053fc94747d9df8c7f7ca50af41355c1207c8a0bf9f35f52b0d9ad5142a1920b018bc2b6ff04340a4f9c599ad50c9b8f4ff2c689ae52b1463ebbda94e - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.9": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"update-notifier@npm:^6.0.2": - version: 6.0.2 - resolution: "update-notifier@npm:6.0.2" - dependencies: - boxen: ^7.0.0 - chalk: ^5.0.1 - configstore: ^6.0.0 - has-yarn: ^3.0.0 - import-lazy: ^4.0.0 - is-ci: ^3.0.1 - is-installed-globally: ^0.4.0 - is-npm: ^6.0.0 - is-yarn-global: ^0.4.0 - latest-version: ^7.0.0 - pupa: ^3.1.0 - semver: ^7.3.7 - semver-diff: ^4.0.0 - xdg-basedir: ^5.1.0 - checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - -"username-sync@npm:^1.0.2": - version: 1.0.3 - resolution: "username-sync@npm:1.0.3" - checksum: 1a2aaa8629d018daebd8500272a3064041e18ed157eb32d098dab6ea7dc111b2904222c61bb50f25340d378f003aacbefb3fd6313dd42586137532bc38befe8e - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util@npm:^0.12.4": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: ^2.0.3 - is-arguments: ^1.0.4 - is-generator-function: ^1.0.7 - is-typed-array: ^1.1.3 - which-typed-array: ^1.1.2 - checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uuid-browser@npm:^3.1.0": - version: 3.1.0 - resolution: "uuid-browser@npm:3.1.0" - checksum: 951ec47593865c7cc746df671f7b0f0ff48fcab583fcdaeab6c517a5222af0f5e144a6fcea5fa9620a5b3be047e2f9412a80267ea5c45050e07d51774197d49e - languageName: node - linkType: hard - -"uuid@npm:^8.3.1, uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad - languageName: node - linkType: hard - -"validate-npm-package-name@npm:^3.0.0": - version: 3.0.0 - resolution: "validate-npm-package-name@npm:3.0.0" - dependencies: - builtins: ^1.0.3 - checksum: ce4c68207abfb22c05eedb09ff97adbcedc80304a235a0844f5344f1fd5086aa80e4dbec5684d6094e26e35065277b765c1caef68bcea66b9056761eddb22967 - languageName: node - linkType: hard - -"vary@npm:^1, vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"vfile-location@npm:^4.0.0": - version: 4.0.1 - resolution: "vfile-location@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: cc0df62075c741beee699e651374aeb56c4c1f4333398c0ba924281c2b51d4b7669c69c5b837ea395775626ad030d6f1bd27fd0a7eaf3f9f1bbd55393948ad6c - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.2 - resolution: "vfile-message@npm:3.1.2" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: 96fbd9e9b5e0babb5ee61e3a716dc7a6a8c28f2c8c711837d95c88b782161b31549ad16059a78990d7b836d0f4d3b4d8c9ffde44370d48d9cac991fc1e3e17c5 - languageName: node - linkType: hard - -"vfile@npm:^5.0.0": - version: 5.3.5 - resolution: "vfile@npm:5.3.5" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 14a9ea19d1801bb99fc9a451d220d2ee84d891bae52094db660f9bf637c1cada0c45a3e00962ff3e901da16dd5051367e25a4a214e40db57ae40f57363796b45 - languageName: node - linkType: hard - -"vm-browserify@npm:^1.1.2": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 10a1c50aab54ff8b4c9042c15fc64aefccce8d2fb90c0640403242db0ee7fb269f9b102bdb69cfb435d7ef3180d61fd4fb004a043a12709abaf9056cfd7e039d - languageName: node - linkType: hard - -"walk-sync@npm:^0.2.5": - version: 0.2.7 - resolution: "walk-sync@npm:0.2.7" - dependencies: - ensure-posix-path: ^1.0.0 - matcher-collection: ^1.0.0 - checksum: dd5ee5de5504a4e45f86ee6c3ba6af02728a788e43b929a14fc13f19d06faaddc39692a23fba61ace4ff552b5d98b6c56fe207770bb09d87caa85a7e64bf384e - languageName: node - linkType: hard - -"walk-sync@npm:^0.3.0, walk-sync@npm:^0.3.1, walk-sync@npm:^0.3.3": - version: 0.3.4 - resolution: "walk-sync@npm:0.3.4" - dependencies: - ensure-posix-path: ^1.0.0 - matcher-collection: ^1.0.0 - checksum: 07e45a065421d504d305c70d385e37f192600dfd714ba35bb5c2664682e87bfb8be9640212df160b58ae78b506479aa437267f36d6c2f54f1dd800a84d229d86 - languageName: node - linkType: hard - -"walk-sync@npm:^1.0.0, walk-sync@npm:^1.1.3": - version: 1.1.4 - resolution: "walk-sync@npm:1.1.4" - dependencies: - "@types/minimatch": ^3.0.3 - ensure-posix-path: ^1.1.0 - matcher-collection: ^1.1.1 - checksum: 21ce5bfdca01b8ccf3a088e22b7634f1d045f70aac7577728d9797cbdabd4a4cdb1341145a1d5a7fe07c4a15ae106ae2625a319cb6aab3e260fdbf48719e3cc5 - languageName: node - linkType: hard - -"walk-sync@npm:^2.0.2, walk-sync@npm:^2.2.0": - version: 2.2.0 - resolution: "walk-sync@npm:2.2.0" - dependencies: - "@types/minimatch": ^3.0.3 - ensure-posix-path: ^1.1.0 - matcher-collection: ^2.0.0 - minimatch: ^3.0.4 - checksum: e579b574f769977a739607d4feba40ded8931ff641f26964ea5a10a280d648d1c1aca260e9ab60288f16d69500ff33687d3ba5fa4dbd427090123189f0f0c9b6 - languageName: node - linkType: hard - -"walker@npm:^1.0.7, walker@npm:~1.0.5": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"watch-detector@npm:^1.0.0": - version: 1.0.2 - resolution: "watch-detector@npm:1.0.2" - dependencies: - heimdalljs-logger: ^0.1.10 - silent-error: ^1.1.1 - tmp: ^0.1.0 - checksum: 1c3bb68ba4ad5e0cdec1daf4d9dc3ff80cacebcc598ad162e2436be06adf5ce5626d4c0bcec84bff9c9ee27add9ff98d6ed4e29cdff2c86a7c4d8120b5f50c1d - languageName: node - linkType: hard - -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" - dependencies: - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: ^1.0.3 - checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"webpack-cli@npm:^4.9.2": - version: 4.10.0 - resolution: "webpack-cli@npm:4.10.0" - dependencies: - "@discoveryjs/json-ext": ^0.5.0 - "@webpack-cli/configtest": ^1.2.0 - "@webpack-cli/info": ^1.5.0 - "@webpack-cli/serve": ^1.7.0 - colorette: ^2.0.14 - commander: ^7.0.0 - cross-spawn: ^7.0.3 - fastest-levenshtein: ^1.0.12 - import-local: ^3.0.2 - interpret: ^2.2.0 - rechoir: ^0.7.0 - webpack-merge: ^5.7.3 - peerDependencies: - webpack: 4.x.x || 5.x.x - peerDependenciesMeta: - "@webpack-cli/generators": - optional: true - "@webpack-cli/migrate": - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - bin: - webpack-cli: bin/cli.js - checksum: 2ff5355ac348e6b40f2630a203b981728834dca96d6d621be96249764b2d0fc01dd54edfcc37f02214d02935de2cf0eefd6ce689d970d154ef493f01ba922390 - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" - dependencies: - colorette: ^2.0.10 - memfs: ^3.4.3 - mime-types: ^2.1.31 - range-parser: ^1.2.1 - schema-utils: ^4.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 - languageName: node - linkType: hard - -"webpack-hot-middleware@npm:^2.25.1": - version: 2.25.2 - resolution: "webpack-hot-middleware@npm:2.25.2" - dependencies: - ansi-html-community: 0.0.8 - html-entities: ^2.1.0 - strip-ansi: ^6.0.0 - checksum: 9bbcb4a3109d5efc3fedc41ab84209745e47770a205897324adff9126196d9cd086237288161d71cd7273a0154e09046d025a3c30c6938bd04e58d3b379fdcca - languageName: node - linkType: hard - -"webpack-merge@npm:^5.7.3": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" - dependencies: - clone-deep: ^4.0.1 - wildcard: ^2.0.0 - checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.4.3": - version: 0.4.5 - resolution: "webpack-virtual-modules@npm:0.4.5" - checksum: 0ae9a8b50d0cb1e43da5ff8acaa7b99c34a42f0d6cc83a82908fb6e131e574a949d19948df4fdd3de0dbfdbadb2b93ceb4a740c55727a4236eb3b2bbc8f785a6 - languageName: node - linkType: hard - -"webpack@npm:5": - version: 5.74.0 - resolution: "webpack@npm:5.74.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.1.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 320c41369a75051b19e18c63f408b3dcc481852e992f83d311771c5ec0f05f2946385e8ebef62030cf3587f0a3d2f12779ffdb191569a966847289ba7313f946 - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: ">=0.5.1" - safe-buffer: ">=5.1.0" - websocket-extensions: ">=0.1.1" - checksum: fffe5a33fe8eceafd21d2a065661d09e38b93877eae1de6ab5d7d2734c6ed243973beae10ae48c6613cfd675f200e5a058d1e3531bc9e6c5d4f1396ff1f0bfb9 - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 5976835e68a86afcd64c7a9762ed85f2f27d48c488c707e67ba85e717b90fa066b98ab33c744d64255c9622d349eedecf728e65a5f921da71b58d0e9591b9038 - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2": - version: 1.1.8 - resolution: "which-typed-array@npm:1.1.8" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.9 - checksum: bedf4d30a738e848404fe67fe0ace33433a7298cf3f5a4d4b2c624ba99c4d25f06a7fd6f3566c3d16af5f8a54f0c6293cbfded5b1208ce11812753990223b45a - languageName: node - linkType: hard - -"which@npm:^1.2.14, which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: ^4.0.0 - checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 - languageName: node - linkType: hard - -"widest-line@npm:^4.0.1": - version: 4.0.1 - resolution: "widest-line@npm:4.0.1" - dependencies: - string-width: ^5.0.1 - checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba - languageName: node - linkType: hard - -"wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 1f4fe4c03dfc492777c60f795bbba597ac78794f1b650d68f398fbee9adb765367c516ebd4220889b6a81e9626e7228bbe0d66237abb311573c2ee1f4902a5ad - languageName: node - linkType: hard - -"wordwrap@npm:^0.0.3": - version: 0.0.3 - resolution: "wordwrap@npm:0.0.3" - checksum: dfc2d3512e857ae4b3bc2e8d4e5d2c285c28a4b87cd1d81c977ce9a1a99152d355807e046851a3d61148f39d877fbb889352e07b65a9cbdd2256aa928e159026 - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"workerpool@npm:^3.1.1": - version: 3.1.2 - resolution: "workerpool@npm:3.1.2" - dependencies: - "@babel/core": ^7.3.4 - object-assign: 4.1.1 - rsvp: ^4.8.4 - checksum: 7b382021ca70310926662b40c489ce78d391fb15a3aa7cf1d03eb7578e49eec777b1f332155b5f654118c03b53367ef96f66a42b128e5ca48b25164de9ef2a99 - languageName: node - linkType: hard - -"workerpool@npm:^5.0.1": - version: 5.0.4 - resolution: "workerpool@npm:5.0.4" - checksum: 735a9b19a3dce3c6391c88ee85ca7a952d48d1e1e4c32ec208adb9f29920eb052755737e04d1c44f32614d5a81c26387f3a2cfb7e96f15c87cfa01c7b1218958 - languageName: node - linkType: hard - -"workerpool@npm:^6.0.3": - version: 6.3.0 - resolution: "workerpool@npm:6.3.0" - checksum: 4f8455cf82383be007fb0f4e315835a37dc062d85ba572eaad8628066747f85fec00fa74be319c3f652f1f27ebdbeed26a7741ce69b4ca41af63e306d3a0f318 - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.0.1": - version: 8.0.1 - resolution: "wrap-ansi@npm:8.0.1" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.0, write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^6.1.0": - version: 6.2.2 - resolution: "ws@npm:6.2.2" - dependencies: - async-limiter: ~1.0.0 - checksum: aec3154ec51477c094ac2cb5946a156e17561a581fa27005cbf22c53ac57f8d4e5f791dd4bbba6a488602cb28778c8ab7df06251d590507c3c550fd8ebeee949 - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.9.0 - resolution: "ws@npm:8.9.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 23aa0f021b2eb65c108ec4c3e08c0d81ba01f82b500432dfe327fd6be36079c1d81fdb0eac6464d2a0eb49904d34a9ab8c59619d673fa07b8346f83aeb0cbf12 - languageName: node - linkType: hard - -"ws@npm:~8.2.3": - version: 8.2.3 - resolution: "ws@npm:8.2.3" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: c869296ccb45f218ac6d32f8f614cd85b50a21fd434caf11646008eef92173be53490810c5c23aea31bc527902261fbfd7b062197eea341b26128d4be56a85e4 - languageName: node - linkType: hard - -"xdg-basedir@npm:^4.0.0": - version: 4.0.0 - resolution: "xdg-basedir@npm:4.0.0" - checksum: 0073d5b59a37224ed3a5ac0dd2ec1d36f09c49f0afd769008a6e9cd3cd666bd6317bd1c7ce2eab47e1de285a286bad11a9b038196413cd753b79770361855f3c - languageName: node - linkType: hard - -"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": - version: 5.1.0 - resolution: "xdg-basedir@npm:5.1.0" - checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea - languageName: node - linkType: hard - -"xtend@npm:^4.0.0, xtend@npm:~4.0.0, xtend@npm:~4.0.1": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a - languageName: node - linkType: hard - -"yallist@npm:^3.0.0": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yam@npm:^1.0.0": - version: 1.0.0 - resolution: "yam@npm:1.0.0" - dependencies: - fs-extra: ^4.0.2 - lodash.merge: ^4.6.0 - checksum: b954d6fedeb19525ff559e25ce8bd38033ffe75f11a13a71fa960b3c36055c0e4a57910aac441ffd8ae9513ef3461ed1a9f91c767825546f3ea3831b39bdb5c9 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"yui@npm:^3.18.1": - version: 3.18.1 - resolution: "yui@npm:3.18.1" - dependencies: - request: ~2.40.0 - checksum: dee678ff7e5967404ec3cf21a0492c6e946f962d1907500ad48192be0aafd9b0099206ab2fa52f9b56b6c49abe54d9aadcce5a5b2b0b1685b96937b3ca002613 - languageName: node - linkType: hard - -"yuidocjs@npm:^0.10.2": - version: 0.10.2 - resolution: "yuidocjs@npm:0.10.2" - dependencies: - express: ^4.13.1 - graceful-fs: ^4.1.2 - markdown-it: ^4.3.0 - mdn-links: ^0.1.0 - minimatch: ^3.0.2 - rimraf: ^2.4.1 - yui: ^3.18.1 - bin: - yuidoc: ./lib/cli.js - checksum: 30652c8aaa0c6acfc41d1c0285d10443e4e46727b4db67e5b7ca3534c611882f713fd7ac1533acbbf2ff692bb3faf160ba43af3b387e47c6a6e719d8aeac34eb - languageName: node - linkType: hard - -"zwitch@npm:^2.0.0": - version: 2.0.2 - resolution: "zwitch@npm:2.0.2" - checksum: 8edd7af8375f12f64d8dbef815af32cd77bd9237d0b013210ba4e3aef25fdc460fe264cd0a19deabe9f86ef0c607240ebac1a336bf4a70bf06ef53e0652de116 - languageName: node - linkType: hard diff --git a/test-storybooks/external-docs/package.json b/test-storybooks/external-docs/package.json index 69518c0e76d3..b8e2add1be67 100644 --- a/test-storybooks/external-docs/package.json +++ b/test-storybooks/external-docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/external-docs", - "version": "7.0.0-alpha.43", + "version": "7.2.0-alpha.0", "private": true, "scripts": { "build": "next build", @@ -10,37 +10,6 @@ "start": "next start", "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook dev -p 9011 -c .storybook" }, - "dependencies": { - "@storybook/addon-docs": "7.0.0-alpha.43", - "@storybook/addon-essentials": "7.0.0-alpha.43", - "@storybook/blocks": "7.0.0-alpha.43", - "@storybook/components": "7.0.0-alpha.43", - "@storybook/preview-web": "7.0.0-alpha.43", - "@storybook/react": "7.0.0-alpha.43", - "@storybook/react-webpack5": "7.0.0-alpha.43", - "@storybook/theming": "7.0.0-alpha.43", - "formik": "^2.2.9", - "next": "^12.1.0", - "nextra": "^1.1.0", - "nextra-theme-docs": "^1.2.6", - "prop-types": "^15.8.1", - "react": "16.14.0", - "react-dom": "16.14.0" - }, - "devDependencies": { - "@babel/preset-env": "^7.17.10", - "@testing-library/dom": "^7.31.2", - "@testing-library/user-event": "^13.1.9", - "@types/babel__preset-env": "^7", - "@types/prop-types": "^15", - "@types/react": "^17.0.39", - "cross-env": "^7.0.3", - "eslint": "8.7.0", - "eslint-config-next": "12.0.8", - "storybook": "7.0.0-alpha.43", - "typescript": "~4.9.3", - "webpack": "5" - }, "resolutions": { "@storybook/addon-a11y": "portal:../../code/addons/a11y", "@storybook/addon-actions": "portal:../../code/addons/actions", @@ -59,54 +28,36 @@ "@storybook/addon-storysource": "portal:../../code/addons/storysource", "@storybook/addon-toolbars": "portal:../../code/addons/toolbars", "@storybook/addon-viewport": "portal:../../code/addons/viewport", + "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/ember": "portal:../../code/frameworks/ember", - "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", - "@storybook/nextjs": "portal:../../code/frameworks/nextjs", - "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", - "@storybook/react-vite": "portal:../../code/frameworks/react-vite", - "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", - "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", - "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", - "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", - "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", - "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", - "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", - "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", - "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", - "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", - "@storybook/addons": "portal:../../code/lib/addons", - "@storybook/manager-api": "portal:../../code/lib/manager-api", "@storybook/blocks": "portal:../../code/ui/blocks", - "@storybook/builder-manager": "portal:../../code/lib/builder-manager", - "@storybook/builder-vite": "portal:../../code/lib/builder-vite", - "@storybook/builder-webpack5": "portal:../../code/lib/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", + "@storybook/builder-manager": "portal:../../code/builders/builder-manager", + "@storybook/builder-vite": "portal:../../code/builders/builder-vite", + "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", - "sb": "portal:../../code/lib/cli-sb", - "storybook": "portal:../../code/lib/cli-storybook", - "@storybook/client-api": "portal:../../code/lib/client-api", + "@storybook/client-api": "portal:../../code/deprecated/client-api", "@storybook/client-logger": "portal:../../code/lib/client-logger", "@storybook/codemod": "portal:../../code/lib/codemod", "@storybook/components": "portal:../../code/ui/components", - "@storybook/core-client": "portal:../../code/lib/core-client", + "@storybook/core-client": "portal:../../code/deprecated/core-client", "@storybook/core-common": "portal:../../code/lib/core-common", "@storybook/core-events": "portal:../../code/lib/core-events", "@storybook/core-server": "portal:../../code/lib/core-server", "@storybook/core-webpack": "portal:../../code/lib/core-webpack", "@storybook/csf-tools": "portal:../../code/lib/csf-tools", "@storybook/docs-tools": "portal:../../code/lib/docs-tools", + "@storybook/ember": "portal:../../code/frameworks/ember", + "@storybook/html": "portal:../../code/renderers/html", + "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", "@storybook/instrumenter": "portal:../../code/lib/instrumenter", + "@storybook/manager": "portal:../../code/ui/manager", + "@storybook/manager-api": "portal:../../code/lib/manager-api", + "@storybook/nextjs": "portal:../../code/frameworks/nextjs", "@storybook/node-logger": "portal:../../code/lib/node-logger", "@storybook/postinstall": "portal:../../code/lib/postinstall", - "@storybook/preview-api": "portal:../../code/lib/preview-api", - "@storybook/router": "portal:../../code/lib/router", - "@storybook/source-loader": "portal:../../code/lib/source-loader", - "@storybook/store": "portal:../../code/lib/store", - "@storybook/telemetry": "portal:../../code/lib/telemetry", - "@storybook/theming": "portal:../../code/lib/theming", + "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", "@storybook/preset-html-webpack": "portal:../../code/presets/html-webpack", "@storybook/preset-preact-webpack": "portal:../../code/presets/preact-webpack", "@storybook/preset-react-webpack": "portal:../../code/presets/react-webpack", @@ -115,14 +66,61 @@ "@storybook/preset-vue-webpack": "portal:../../code/presets/vue-webpack", "@storybook/preset-vue3-webpack": "portal:../../code/presets/vue3-webpack", "@storybook/preset-web-components-webpack": "portal:../../code/presets/web-components-webpack", - "@storybook/html": "portal:../../code/renderers/html", - "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preview-api": "portal:../../code/lib/preview-api", "@storybook/react": "portal:../../code/renderers/react", + "@storybook/react-vite": "portal:../../code/frameworks/react-vite", + "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", + "@storybook/router": "portal:../../code/lib/router", "@storybook/server": "portal:../../code/renderers/server", + "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", + "@storybook/source-loader": "portal:../../code/lib/source-loader", + "@storybook/store": "portal:../../code/deprecated/store", "@storybook/svelte": "portal:../../code/renderers/svelte", + "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", + "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", + "@storybook/telemetry": "portal:../../code/lib/telemetry", + "@storybook/theming": "portal:../../code/lib/theming", "@storybook/vue": "portal:../../code/renderers/vue", + "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", + "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", "@storybook/vue3": "portal:../../code/renderers/vue3", + "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", + "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", "@storybook/web-components": "portal:../../code/renderers/web-components", - "@storybook/manager": "portal:../../code/ui/manager" + "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", + "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", + "sb": "portal:../../code/lib/cli-sb", + "storybook": "portal:../../code/lib/cli-storybook" + }, + "dependencies": { + "@storybook/addon-docs": "7.2.0-alpha.0", + "@storybook/addon-essentials": "7.2.0-alpha.0", + "@storybook/blocks": "7.2.0-alpha.0", + "@storybook/components": "7.2.0-alpha.0", + "@storybook/preview-web": "7.2.0-alpha.0", + "@storybook/react": "7.2.0-alpha.0", + "@storybook/react-webpack5": "7.2.0-alpha.0", + "@storybook/theming": "7.2.0-alpha.0", + "formik": "^2.2.9", + "next": "^12.1.0", + "nextra": "^1.1.0", + "nextra-theme-docs": "^1.2.6", + "prop-types": "^15.8.1", + "react": "16.14.0", + "react-dom": "16.14.0" + }, + "devDependencies": { + "@babel/preset-env": "^7.22.0", + "@testing-library/dom": "^7.31.2", + "@testing-library/user-event": "^13.1.9", + "@types/babel__preset-env": "^7", + "@types/prop-types": "^15", + "@types/react": "^17.0.39", + "cross-env": "^7.0.3", + "eslint": "8.7.0", + "eslint-config-next": "12.0.8", + "storybook": "7.2.0-alpha.0", + "typescript": "~4.9.3", + "webpack": "5" } } diff --git a/test-storybooks/external-docs/yarn.lock b/test-storybooks/external-docs/yarn.lock index 5bd892208ffd..e69de29bb2d1 100644 --- a/test-storybooks/external-docs/yarn.lock +++ b/test-storybooks/external-docs/yarn.lock @@ -1,14658 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@aw-web-design/x-default-browser@npm:1.4.88": - version: 1.4.88 - resolution: "@aw-web-design/x-default-browser@npm:1.4.88" - dependencies: - default-browser-id: 3.0.0 - bin: - x-default-browser: bin/x-default-browser.js - checksum: c85e61dc9e5bb04906d8ac29cce35369705c3ea3abe36a5afdecc9caefd7ee0f14596ccc6eb617c86790a67b6ee7f7f070a3e2f9e9152a8ba92adf2ccee1433a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.0, @babel/compat-data@npm:^7.20.1": - version: 7.20.5 - resolution: "@babel/compat-data@npm:7.20.5" - checksum: 523790c43ef6388fae91d1ca9acf1ab0e1b22208dcd39c0e5e7a6adf0b48a133f1831be8d5931a72ecd48860f3e3fb777cb89840794abd8647a5c8e5cfab484e - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.2, @babel/core@npm:^7.7.5": - version: 7.20.5 - resolution: "@babel/core@npm:7.20.5" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.5 - "@babel/helper-compilation-targets": ^7.20.0 - "@babel/helper-module-transforms": ^7.20.2 - "@babel/helpers": ^7.20.5 - "@babel/parser": ^7.20.5 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 9547f1e6364bc58c3621e3b17ec17f0d034ff159e5a520091d9381608d40af3be4042dd27c20ad7d3e938422d75850ac56a3758d6801d65df701557af4bd244b - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/generator@npm:7.20.5" - dependencies: - "@babel/types": ^7.20.5 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: 31c10d1e122f08cf755a24bd6f5d197f47eceba03f1133759687d00ab72d210e60ba4011da42f368b6e9fa85cbfda7dc4adb9889c2c20cc5c34bb2d57c1deab7 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-compilation-targets@npm:7.20.0" - dependencies: - "@babel/compat-data": ^7.20.0 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: bc183f2109648849c8fde0b3c5cf08adf2f7ad6dc617b546fd20f34c8ef574ee5ee293c8d1bd0ed0221212e8f5907cdc2c42097870f1dcc769a654107d82c95b - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.20.2, @babel/helper-create-class-features-plugin@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.20.5" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.19.1 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 51b0662cc44ae5fe3691ed552f97312006709ec3f5321a5e5b5a139a5743eaaf65987f30ee7c171af80ab77460fb57c1970b0b1583dd70d90b58e4433b117a1b - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.20.5" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.2.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 7f29c3cb7447cca047b0d394f8ab98e4923d00e86a7afa56e5df9770c48ec107891505d2d1f06b720ecc94ed24bf58d90986cc35fe4a43b549eb7b7a5077b693 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6, @babel/helper-module-transforms@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-module-transforms@npm:7.20.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.1 - "@babel/types": ^7.20.2 - checksum: 33a60ca115f6fce2c9d98e2a2e5649498aa7b23e2ae3c18745d7a021487708fc311458c33542f299387a0da168afccba94116e077f2cce49ae9e5ab83399e8a2 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-replace-supers@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.19.1 - "@babel/types": ^7.19.0 - checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.19.4, @babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": ^7.20.0 - checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.20.5": - version: 7.20.6 - resolution: "@babel/helpers@npm:7.20.6" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: f03ec6eb2bf8dc7cdfe2569ee421fd9ba6c7bac6c862d90b608ccdd80281ebe858bc56ca175fc92b3ac50f63126b66bbd5ec86f9f361729289a20054518f1ac5 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/parser@npm:7.20.5" - bin: - parser: ./bin/babel-parser.js - checksum: e8d514ce0aa74d56725bd102919a49fa367afef9cd8208cf52f670f54b061c4672f51b4b7980058ab1f5fe73615fe4dc90720ab47bbcebae07ad08d667eda318 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 93abb5cb179a13db171bfc2cdf79489598f43c50cc174f97a2b7bb1d44d24ade7109665a20cf4e317ad6c1c730f036f06478f7c7e789b4240be1abdb60d6452f - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.20.1": - version: 7.20.1 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 518483a68c5618932109913eb7316ed5e656c575cbd9d22667bc0451e35a1be45f8eaeb8e2065834b36c8a93c4840f78cebf8f1d067b07c422f7be16d58eca60 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b8d7ae99ed5ad784f39e7820e3ac03841f91d6ed60ab4a98c61d6112253da36013e12807bae4ffed0ef3cb318e47debac112ed614e03b403fb8b075b09a828ee - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dd87fa4a48c6408c5e85dbd6405a65cc8fe909e3090030df46df90df64cdf3e74007381a58ed87608778ee597eff7395d215274009bb3f5d8964b2db5557754f - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.2" - dependencies: - "@babel/compat-data": ^7.20.1 - "@babel/helper-compilation-targets": ^7.20.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.20.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9764d1a4735fcd384fdb9b6c6ccb20d1bea2f88f648640d26ce5d9cd5880ce1e389d2f852d7bea7e86ff343726225dc16e1deb92c7b3dc5c5721ed905a602318 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f2db40e26172f07c50b635cb61e1f36165de3ba868fcf608d967642f0d044b7c6beb0e7ecf17cbd421144b99e1eae7ad6031ded92925343bb0ed1d08707b514f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6": - version: 7.20.5 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.20.5" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 513b5e0e2c1b2846be5336cf680e932ae17924ef885aa1429e1a4f7924724bdd99b15f28d67187d0a006d5f18a0c4b61d96c3ecb4902fed3c8fe2f0abfc9753a - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 900f5c695755062b91eec74da6f9092f40b8fada099058b92576f1e23c55e9813ec437051893a9b3c05cefe39e8ac06303d4a91b384e1c03dd8dc1581ea11602 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.18.6" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-remap-async-to-generator": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2cca47468cf1aeefdc7ec35d670e195c86cee4de28a1970648c46a88ce6bd1806ef0bab27251b9e7fb791bb28a64dcd543770efd899f28ee5f7854e64e873d3 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.20.2": - version: 7.20.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 03606bc6710c15cd4e4d1163e1cbab08799f852a5dd55a1f7e115032e9406ac9430ddc0cb6d09a51a4095446985640411f60683c6fcea9bc1a7b202462022e1c - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/plugin-transform-classes@npm:7.20.2" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.0 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.19.1 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 57f3467a8eb7853cdb61cda963cfb6c6568ad276d77c9de2ff5a2194650010217aa318ef3733975537c6fb906b73a019afb6ea650b01852e7d2e1fab4034361b - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6bfbea207827d77592628973c0e8cc3319db636506bdc6e81e21582de2e767890e6975b382d0511e9ec3773b9f43691185df90832883bbf9251f688d27fbc1d - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/plugin-transform-destructuring@npm:7.20.2" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 09033e09b28ca1b0d46a8d82f5a677b1d718a739b3c199886908c3ef1af23369317d0c429b21507d480ee82721c15892a9893be18e50ad6fc219e69312f4b097 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-for-of@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ca64c623cf0c7a80ab6f07ebd3e6e4ade95e2ae806696f70b43eafe6394fa8ce21f2b1ffdd15df2067f7363d2ecfe26472a97c6c774403d2163fa05f50c98f17 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-amd@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4236aad970025bc10c772c1589b1e2eab8b7681933bb5ffa6e395d4c1a52532b28c47c553e3011b4272ea81e5ab39fe969eb5349584e8390e59771055c467d42 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-simple-access": ^7.19.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85d46945ab5ba3fff89e962d560a5d40253f228b9659a697683db3de07c0236e8cd60e5eb41958007359951a42bc268bf32350fcdb5b4a86f58dff1e032c096e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.6" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8526431cc81ea3eb232ad50862d0ed1cbb422b5251d14a8d6610d0ca0617f6e75f35179e98eb1235d0cccb980120350b9f112594e5646dd45378d41eaaf87342 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.20.1": - version: 7.20.5 - resolution: "@babel/plugin-transform-parameters@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fa588b0d8551e3e0cfde5fcb9d63a7acd38da199bee1851dd7e2abb34b3d754684defb1209a5669ecf0076d3d17ddc375b3f107da770b550a30402e4b9d7aa2f - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" - dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.18.6, @babel/plugin-transform-react-jsx@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.18.6": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-spread@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e73a4deb095999185e70b524d0ff4e35df50fcda58299e700a6149a15bbc1a9b369ef1cef384e15a54b3c3ce316cc0f054dbf249dcd0d1ca59f4281dd4df9718 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.20.2 - resolution: "@babel/plugin-transform-typescript@npm:7.20.2" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.20.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-typescript": ^7.20.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 14434eb77cb3c8c4187a055eabdd5ff8b3e90a37ac95ecc7c9007ea8fc5660e0652c445646a2a25836a02d91944e0dc1e8b58ef55b063a901e54a24fdb4168af - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.17.10, @babel/preset-env@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/preset-env@npm:7.20.2" - dependencies: - "@babel/compat-data": ^7.20.1 - "@babel/helper-compilation-targets": ^7.20.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-async-generator-functions": ^7.20.1 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.2 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@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.20.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.20.2 - "@babel/plugin-transform-classes": ^7.20.2 - "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.20.2 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.8 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.19.6 - "@babel/plugin-transform-modules-commonjs": ^7.19.6 - "@babel/plugin-transform-modules-systemjs": ^7.19.6 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.20.1 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.19.0 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.20.2 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ece2d7e9c7789db6116e962b8e1a55eb55c110c44c217f0c8f6ffea4ca234954e66557f7bd019b7affadf7fbb3a53ccc807e93fc935aacd48146234b73b6947e - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/preset-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-flow-strip-types": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 - languageName: node - linkType: hard - -"@babel/preset-react@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/preset-react@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.18.6 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 540d9cf0a0cc0bb07e6879994e6fb7152f87dafbac880b56b65e2f528134c7ba33e0cd140b58700c77b2ebf4c81fa6468fed0ba391462d75efc7f8c1699bb4c3 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/preset-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.16": - version: 7.18.9 - resolution: "@babel/register@npm:7.18.9" - dependencies: - clone-deep: ^4.0.1 - find-cache-dir: ^2.0.0 - make-dir: ^2.1.0 - pirates: ^4.0.5 - source-map-support: ^0.5.16 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 - languageName: node - linkType: hard - -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.20.6 - resolution: "@babel/runtime-corejs3@npm:7.20.6" - dependencies: - core-js-pure: ^3.25.1 - regenerator-runtime: ^0.13.11 - checksum: d533d432216509426c4f9dad56db2fe453112b7d738433111944372fba4abd0b07bee3261f19a218530b435de46592121b2a6a57b98c0c7c3452d552ba009c3e - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.10.5, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.9, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4": - version: 7.20.6 - resolution: "@babel/runtime@npm:7.20.6" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 42a8504db21031b1859fbc0f52d698a3d2f5ada9519eb76c6f96a7e657d8d555732a18fe71ef428a67cc9fc81ca0d3562fb7afdc70549c5fec343190cbaa9b03 - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.20.1, @babel/traverse@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/traverse@npm:7.20.5" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.5 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.5 - "@babel/types": ^7.20.5 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: c7fed468614aab1cf762dda5df26e2cfcd2b1b448c9d3321ac44786c4ee773fb0e10357e6593c3c6a648ae2e0be6d90462d855998dc10e3abae84de99291e008 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.20.5 - resolution: "@babel/types@npm:7.20.5" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 773f0a1ad9f6ca5c5beaf751d1d8d81b9130de87689d1321fc911d73c3b1167326d66f0ae086a27fb5bfc8b4ee3ffebf1339be50d3b4d8015719692468c31f2d - languageName: node - linkType: hard - -"@base2/pretty-print-object@npm:1.0.1": - version: 1.0.1 - resolution: "@base2/pretty-print-object@npm:1.0.1" - checksum: 1e8a5af578037a9d47d72f815983f9e4efb038e5f03e7635fc893194c5daa723215d71af33267893a9b618656c8eaea7be931b1c063c9b066a40994be0d23545 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.3": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.14.54": - version: 0.14.54 - resolution: "@esbuild/linux-loong64@npm:0.14.54" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^1.0.5": - version: 1.3.3 - resolution: "@eslint/eslintrc@npm:1.3.3" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.4.0 - globals: ^13.15.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: f03e9d6727efd3e0719da2051ea80c0c73d20e28c171121527dbb868cd34232ca9c1d0525a66e517a404afea26624b1e47895b6a92474678418c2f50c9566694 - languageName: node - linkType: hard - -"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": - version: 2.1.2 - resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" - checksum: c59715902b9062aa7ff38973f298b509499fd146dbf564dc338b3f9e896da5bffb4ca676c27587fde79b3586003e24d65960acb62f009bca43dca34c76f8cbf7 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.9.2": - version: 0.9.5 - resolution: "@humanwhocodes/config-array@npm:0.9.5" - dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.4 - checksum: 8ba6281bc0590f6c6eadeefc14244b5a3e3f5903445aadd1a32099ed80e753037674026ce1b3c945ab93561bea5eb29e3c5bff67060e230c295595ba517a3492 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.0.0": - version: 29.0.0 - resolution: "@jest/schemas@npm:29.0.0" - dependencies: - "@sinclair/typebox": ^0.24.1 - checksum: 41355c78f09eb1097e57a3c5d0ca11c9099e235e01ea5fa4e3953562a79a6a9296c1d300f1ba50ca75236048829e056b00685cd2f1ff8285e56fd2ce01249acb - languageName: node - linkType: hard - -"@jest/transform@npm:^29.3.1": - version: 29.3.1 - resolution: "@jest/transform@npm:29.3.1" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.3.1 - "@jridgewell/trace-mapping": ^0.3.15 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.3.1 - jest-regex-util: ^29.2.0 - jest-util: ^29.3.1 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.1 - checksum: 673df5900ffc95bc811084e09d6e47948034dea6ab6cc4f81f80977e3a52468a6c2284d0ba9796daf25a62ae50d12f7e97fc9a3a0c587f11f2a479ff5493ca53 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 - languageName: node - linkType: hard - -"@jest/types@npm:^29.3.1": - version: 29.3.1 - resolution: "@jest/types@npm:29.3.1" - dependencies: - "@jest/schemas": ^29.0.0 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: 6f9faf27507b845ff3839c1adc6dbd038d7046d03d37e84c9fc956f60718711a801a5094c7eeee6b39ccf42c0ab61347fdc0fa49ab493ae5a8efd2fd41228ee8 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@mdx-js/loader@npm:^2.0.0-next.9": - version: 2.1.5 - resolution: "@mdx-js/loader@npm:2.1.5" - dependencies: - "@mdx-js/mdx": ^2.0.0 - source-map: ^0.7.0 - peerDependencies: - webpack: ">=4" - checksum: a4108e5ba8075a7369d0279e8bee09dcee4483474e7a621a805fc4e3af53b79b5b59219dc78249a8c97906b15a1e47b036626725697d8cf227c849fafaf7d3d1 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "@mdx-js/mdx@npm:2.1.5" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/mdx": ^2.0.0 - estree-util-build-jsx: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-util-to-js: ^1.1.0 - estree-walker: ^3.0.0 - hast-util-to-estree: ^2.0.0 - markdown-extensions: ^1.0.0 - periscopic: ^3.0.0 - remark-mdx: ^2.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - unified: ^10.0.0 - unist-util-position-from-estree: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - checksum: 51b8b40aafbbeee618fd289ef6e0311e28e2598c514016aefb094237fa9cdf3e1c1407267a08dc7f8da9673de354b5b946f3ceb7ba5735bdf869d18c2a49117d - languageName: node - linkType: hard - -"@mdx-js/react@npm:^1.6.16": - version: 1.6.22 - resolution: "@mdx-js/react@npm:1.6.22" - peerDependencies: - react: ^16.13.1 || ^17.0.0 - checksum: bc84bd514bc127f898819a0c6f1a6915d9541011bd8aefa1fcc1c9bea8939f31051409e546bdec92babfa5b56092a16d05ef6d318304ac029299df5181dc94c8 - languageName: node - linkType: hard - -"@mdx-js/react@npm:^2.1.5": - version: 2.1.5 - resolution: "@mdx-js/react@npm:2.1.5" - dependencies: - "@types/mdx": ^2.0.0 - "@types/react": ">=16" - peerDependencies: - react: ">=16" - checksum: e47fb7086a4dd3e4d75d9ef0bf530009f72437a5ea91048e65d2e2f53955015a8c81b5058ac56fa00f401843305518e9f298183645d56c7e34336df4cc0b62bf - languageName: node - linkType: hard - -"@next/env@npm:12.3.4": - version: 12.3.4 - resolution: "@next/env@npm:12.3.4" - checksum: daa3fc11efd1344c503eab41311a0e503ba7fd08607eeb3dc571036a6211eb37959cc4ed48b71dcc411cc214e7623ffd02411080aad3e09dc6a1192d5b256e60 - languageName: node - linkType: hard - -"@next/eslint-plugin-next@npm:12.0.8": - version: 12.0.8 - resolution: "@next/eslint-plugin-next@npm:12.0.8" - dependencies: - glob: 7.1.7 - checksum: b6e5bb303ce430f10660dc173462094535797df4c2f1763161f02504954b97d19a47519a977932d6ff7f0399c963939a4735e0e13daee38ae7b17d22318254f1 - languageName: node - linkType: hard - -"@next/swc-android-arm-eabi@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-android-arm-eabi@npm:12.3.4" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@next/swc-android-arm64@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-android-arm64@npm:12.3.4" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-darwin-arm64@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-darwin-arm64@npm:12.3.4" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-darwin-x64@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-darwin-x64@npm:12.3.4" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@next/swc-freebsd-x64@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-freebsd-x64@npm:12.3.4" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@next/swc-linux-arm-gnueabihf@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-linux-arm-gnueabihf@npm:12.3.4" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@next/swc-linux-arm64-gnu@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-linux-arm64-gnu@npm:12.3.4" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@next/swc-linux-arm64-musl@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-linux-arm64-musl@npm:12.3.4" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@next/swc-linux-x64-gnu@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-linux-x64-gnu@npm:12.3.4" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@next/swc-linux-x64-musl@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-linux-x64-musl@npm:12.3.4" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@next/swc-win32-arm64-msvc@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-win32-arm64-msvc@npm:12.3.4" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-win32-ia32-msvc@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-win32-ia32-msvc@npm:12.3.4" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@next/swc-win32-x64-msvc@npm:12.3.4": - version: 12.3.4 - resolution: "@next/swc-win32-x64-msvc@npm:12.3.4" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.5": - version: 0.5.10 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.10" - dependencies: - ansi-html-community: ^0.0.8 - common-path-prefix: ^3.0.0 - core-js-pure: ^3.23.3 - error-stack-parser: ^2.0.6 - find-up: ^5.0.0 - html-entities: ^2.1.0 - loader-utils: ^2.0.4 - schema-utils: ^3.0.0 - source-map: ^0.7.3 - peerDependencies: - "@types/webpack": 4.x || 5.x - react-refresh: ">=0.10.0 <1.0.0" - sockjs-client: ^1.4.0 - type-fest: ">=0.17.0 <4.0.0" - webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - "@types/webpack": - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - checksum: c45beded9c56fbbdc7213a2c36131ace5db360ed704d462cc39d6678f980173a91c9a3f691e6bd3a026f25486644cd0027e8a12a0a4eced8e8b886a0472e7d34 - languageName: node - linkType: hard - -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.2 - resolution: "@pnpm/network.ca-file@npm:1.0.2" - dependencies: - graceful-fs: 4.2.10 - checksum: d8d0884646500576bd5390464d13db1bb9a62e32a1069293e5bddb2ad8354b354b7e2d2a35e12850025651e795e6a80ce9e601c66312504667b7e3ee7b52becc - languageName: node - linkType: hard - -"@pnpm/npm-conf@npm:^1.0.4": - version: 1.0.5 - resolution: "@pnpm/npm-conf@npm:1.0.5" - dependencies: - "@pnpm/network.ca-file": ^1.0.1 - config-chain: ^1.1.11 - checksum: 0c5f1a63782309a877b70e3cbdd21ff1da57549924a941772bafd0117323881fdcda0e9753f0a695c3f85f4360f5ca27a0e20153abae6985350502f2d94b7d40 - languageName: node - linkType: hard - -"@reach/skip-nav@npm:^0.11.2": - version: 0.11.2 - resolution: "@reach/skip-nav@npm:0.11.2" - dependencies: - "@reach/utils": 0.11.2 - tslib: ^2.0.0 - peerDependencies: - react: ^16.8.0 - react-dom: ^16.8.0 - checksum: 7c28dce5eeaaf51bbb1ec5a0302f83a423c4e6819bcd1051316250069c19c4924c0d8a712e0ee5bfd9420ddfdb17b0e07e514934c268e1c0758dedfff93ef2ec - languageName: node - linkType: hard - -"@reach/utils@npm:0.11.2": - version: 0.11.2 - resolution: "@reach/utils@npm:0.11.2" - dependencies: - "@types/warning": ^3.0.0 - tslib: ^2.0.0 - warning: ^4.0.3 - peerDependencies: - react: ^16.8.0 - react-dom: ^16.8.0 - checksum: affb4dca8285965d3560bcd516a13c99afb047041f119f8bfdedab4dd64b03b969275d9abaf22a64e1e24a1f8675d148df31cddae1e74008407daa8944343d53 - languageName: node - linkType: hard - -"@rushstack/eslint-patch@npm:^1.0.8": - version: 1.2.0 - resolution: "@rushstack/eslint-patch@npm:1.2.0" - checksum: faa749faae0e83c26ae9eb00ad36a897ac78f3cf27da8e8ff21c00bcf7973b598d823d8f2b3957ef66079288bcf577f94df831eae2d65f3f68d8ca32f18b6aff - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.51 - resolution: "@sinclair/typebox@npm:0.24.51" - checksum: fd0d855e748ef767eb19da1a60ed0ab928e91e0f358c1dd198d600762c0015440b15755e96d1176e2a0db7e09c6a64ed487828ee10dd0c3e22f61eb09c478cd0 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^0.7.0": - version: 0.7.0 - resolution: "@sindresorhus/is@npm:0.7.0" - checksum: decc50f6fe80b75c981bcff0a585c05259f5e04424a46a653ac9a7e065194145c463ca81001e3a229bd203f59474afadb5b1fa0af5507723f87f2dd45bd3897c - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@storybook/addon-actions@portal:../../code/addons/actions::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-actions@portal:../../code/addons/actions::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - polished: ^4.2.2 - prop-types: ^15.7.2 - react-inspector: ^6.0.0 - telejson: ^7.0.3 - ts-dedent: ^2.0.0 - uuid-browser: ^3.1.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - global: ^4.4.0 - memoizerific: ^1.11.3 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-controls@portal:../../code/addons/controls::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-controls@portal:../../code/addons/controls::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/blocks": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - lodash: ^4.17.21 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-docs@portal:../../code/addons/docs::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-docs@portal:../../code/addons/docs::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/plugin-transform-react-jsx": ^7.19.0 - "@jest/transform": ^29.3.1 - "@mdx-js/react": ^2.1.5 - "@storybook/blocks": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/csf-plugin": 7.0.0-alpha.56 - "@storybook/csf-tools": 7.0.0-alpha.56 - "@storybook/mdx2-csf": next - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/postinstall": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - fs-extra: ^9.0.1 - global: ^4.4.0 - remark-external-links: ^8.0.0 - remark-slug: ^6.0.0 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-essentials@portal:../../code/addons/essentials::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-essentials@portal:../../code/addons/essentials::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/addon-actions": 7.0.0-alpha.56 - "@storybook/addon-backgrounds": 7.0.0-alpha.56 - "@storybook/addon-controls": 7.0.0-alpha.56 - "@storybook/addon-docs": 7.0.0-alpha.56 - "@storybook/addon-highlight": 7.0.0-alpha.56 - "@storybook/addon-measure": 7.0.0-alpha.56 - "@storybook/addon-outline": 7.0.0-alpha.56 - "@storybook/addon-toolbars": 7.0.0-alpha.56 - "@storybook/addon-viewport": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - ts-dedent: ^2.0.0 - peerDependencies: - "@babel/core": ^7.9.6 - languageName: node - linkType: soft - -"@storybook/addon-highlight@portal:../../code/addons/highlight::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-highlight@portal:../../code/addons/highlight::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/addon-measure@portal:../../code/addons/measure::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-measure@portal:../../code/addons/measure::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - global: ^4.4.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-outline@portal:../../code/addons/outline::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-outline@portal:../../code/addons/outline::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - global: ^4.4.0 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-toolbars@portal:../../code/addons/toolbars::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-toolbars@portal:../../code/addons/toolbars::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-viewport@portal:../../code/addons/viewport::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-viewport@portal:../../code/addons/viewport::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - global: ^4.4.0 - memoizerific: ^1.11.3 - prop-types: ^15.7.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addons@portal:../../code/lib/addons::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addons@portal:../../code/lib/addons::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/api@npm:7.0.0-alpha.56": - version: 7.0.0-alpha.56 - resolution: "@storybook/api@npm:7.0.0-alpha.56" - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - checksum: 72640af126a3199671f1429fcaecb17c0c13a7e11fc4916edbf1a2aa6521770da24691ed14f08f6b90ab30c36d1d030ee48ab22327c9d1d4d1da6addb0595d21 - languageName: node - linkType: hard - -"@storybook/blocks@portal:../../code/ui/blocks::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/blocks@portal:../../code/ui/blocks::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/csf": next - "@storybook/docs-tools": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/lodash": ^4.14.167 - color-convert: ^2.0.1 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - markdown-to-jsx: ^7.1.3 - memoizerific: ^1.11.3 - polished: ^4.2.2 - react-colorful: ^5.1.2 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/manager": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@types/ejs": ^3.1.1 - "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 - browser-assert: ^1.2.1 - ejs: ^3.1.8 - esbuild: ^0.14.48 - esbuild-plugin-alias: ^0.2.1 - express: ^4.17.1 - fs-extra: ^9.0.1 - process: ^0.11.10 - slash: ^3.0.0 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/addons": 7.0.0-alpha.56 - "@storybook/api": 7.0.0-alpha.56 - "@storybook/channel-postmessage": 7.0.0-alpha.56 - "@storybook/channel-websocket": 7.0.0-alpha.56 - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-api": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/components": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/core-webpack": 7.0.0-alpha.56 - "@storybook/manager-api": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/preview": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/router": 7.0.0-alpha.56 - "@storybook/store": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-loader: ^8.3.0 - babel-plugin-named-exports-order: ^0.0.2 - browser-assert: ^1.2.1 - case-sensitive-paths-webpack-plugin: ^2.4.0 - css-loader: ^6.7.1 - express: ^4.17.1 - fork-ts-checker-webpack-plugin: ^7.2.8 - fs-extra: ^9.0.1 - global: ^4.4.0 - html-webpack-plugin: ^5.5.0 - path-browserify: ^1.0.1 - process: ^0.11.10 - semver: ^7.3.7 - style-loader: ^3.3.1 - terser-webpack-plugin: ^5.3.1 - ts-dedent: ^2.0.0 - util: ^0.12.4 - util-deprecate: ^1.0.2 - webpack: 5 - webpack-dev-middleware: ^5.3.1 - webpack-hot-middleware: ^2.25.1 - webpack-virtual-modules: ^0.4.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - global: ^4.4.0 - qs: ^6.10.0 - telejson: ^7.0.3 - languageName: node - linkType: soft - -"@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - global: ^4.4.0 - telejson: ^7.0.3 - languageName: node - linkType: soft - -"@storybook/channels@portal:../../code/lib/channels::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channels@portal:../../code/lib/channels::locator=%40storybook%2Fexternal-docs%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/cli@portal:../../code/lib/cli::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/cli@portal:../../code/lib/cli::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/core": ^7.20.2 - "@babel/preset-env": ^7.20.2 - "@storybook/codemod": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/core-server": 7.0.0-alpha.56 - "@storybook/csf-tools": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/telemetry": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/semver": ^7.3.4 - boxen: ^5.1.2 - chalk: ^4.1.0 - commander: ^6.2.1 - cross-spawn: ^7.0.3 - detect-indent: ^6.1.0 - envinfo: ^7.7.3 - execa: ^5.0.0 - express: ^4.17.1 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - get-port: ^5.1.1 - giget: ^1.0.0 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - leven: ^3.1.0 - prompts: ^2.4.0 - puppeteer-core: ^2.1.1 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - shelljs: ^0.8.5 - strip-json-comments: ^3.0.1 - ts-dedent: ^2.0.0 - update-notifier: ^6.0.2 - util-deprecate: ^1.0.2 - bin: - getstorybook: ./bin/index.js - sb: ./bin/index.js - languageName: node - linkType: soft - -"@storybook/client-api@portal:../../code/lib/client-api::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-api@portal:../../code/lib/client-api::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - languageName: node - linkType: soft - -"@storybook/client-logger@portal:../../code/lib/client-logger::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-logger@portal:../../code/lib/client-logger::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/codemod@portal:../../code/lib/codemod::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/codemod@portal:../../code/lib/codemod::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/types": ^7.20.2 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - cross-spawn: ^7.0.3 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - lodash: ^4.17.21 - prettier: ^2.8.0 - recast: ^0.19.0 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/components@portal:../../code/ui/components::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/components@portal:../../code/ui/components::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - memoizerific: ^1.11.3 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/core-client@portal:../../code/lib/core-client::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-client@portal:../../code/lib/core-client::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - languageName: node - linkType: soft - -"@storybook/core-common@portal:../../code/lib/core-common::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-common@portal:../../code/lib/core-common::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/core": ^7.20.2 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/babel__core": ^7.1.20 - "@types/express": ^4.7.0 - "@types/node": ^16.0.0 - "@types/pretty-hrtime": ^1.0.0 - chalk: ^4.1.0 - esbuild: ^0.14.48 - esbuild-register: ^3.3.3 - express: ^4.17.1 - file-system-cache: ^2.0.0 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - glob: ^7.1.6 - handlebars: ^4.7.7 - lazy-universal-dotenv: ^3.0.1 - picomatch: ^2.3.0 - pkg-dir: ^5.0.0 - pretty-hrtime: ^1.0.3 - resolve-from: ^5.0.0 - slash: ^3.0.0 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-events@portal:../../code/lib/core-events::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-events@portal:../../code/lib/core-events::locator=%40storybook%2Fexternal-docs%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/core-server@portal:../../code/lib/core-server::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-server@portal:../../code/lib/core-server::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@aw-web-design/x-default-browser": 1.4.88 - "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.56 - "@storybook/docs-mdx": next - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/telemetry": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/node": ^16.0.0 - "@types/node-fetch": ^2.5.7 - "@types/pretty-hrtime": ^1.0.0 - "@types/semver": ^7.3.4 - better-opn: ^2.1.1 - boxen: ^5.1.2 - chalk: ^4.1.0 - cli-table3: ^0.6.1 - compression: ^1.7.4 - detect-port: ^1.3.0 - express: ^4.17.1 - fs-extra: ^9.0.1 - global: ^4.4.0 - globby: ^11.0.2 - ip: ^2.0.0 - lodash: ^4.17.21 - node-fetch: ^2.6.7 - open: ^8.4.0 - pretty-hrtime: ^1.0.3 - prompts: ^2.4.0 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - serve-favicon: ^2.5.0 - slash: ^3.0.0 - telejson: ^7.0.3 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - watchpack: ^2.2.0 - ws: ^8.2.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/node": ^16.0.0 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf-plugin@npm:7.0.0-alpha.56": - version: 7.0.0-alpha.56 - resolution: "@storybook/csf-plugin@npm:7.0.0-alpha.56" - dependencies: - "@storybook/csf-tools": 7.0.0-alpha.56 - unplugin: ^0.10.2 - checksum: e9af8bfc2cf1329083581ab8022e3cadd2d81e89a0c084801f2670e74cff48bbae8e4d267661a3ae13599831ed5b9a46cecebda6625ee4f9fdf38a657d71ca95 - languageName: node - linkType: hard - -"@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/types": ^7.20.2 - "@storybook/csf": next - "@storybook/types": 7.0.0-alpha.56 - fs-extra: ^9.0.1 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf@npm:next": - version: 0.0.2-next.7 - resolution: "@storybook/csf@npm:0.0.2-next.7" - dependencies: - expect-type: ^0.14.2 - lodash: ^4.17.15 - type-fest: ^2.19.0 - checksum: 3bf9581f214374d2ff2cd33e8810dd4b62609b40c43071cdbe057b547fc380e782ffe60ebfe5d5179b3db74787fff86d2ab56c1339bd79956404d143778251b3 - languageName: node - linkType: hard - -"@storybook/docs-mdx@npm:next": - version: 0.0.1-next.4 - resolution: "@storybook/docs-mdx@npm:0.0.1-next.4" - checksum: b40d98caa07cf493466438058af37a794221c3d6f8869e24328ee6219fcbd21419377448c0b1123e6aadd457559006920fa05d81bd599afa8dde11a27cf11a62 - languageName: node - linkType: hard - -"@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/core-common": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - doctrine: ^3.0.0 - lodash: ^4.17.21 - languageName: node - linkType: soft - -"@storybook/external-docs@workspace:.": - version: 0.0.0-use.local - resolution: "@storybook/external-docs@workspace:." - dependencies: - "@babel/preset-env": ^7.17.10 - "@storybook/addon-docs": 7.0.0-alpha.43 - "@storybook/addon-essentials": 7.0.0-alpha.43 - "@storybook/blocks": 7.0.0-alpha.43 - "@storybook/components": 7.0.0-alpha.43 - "@storybook/preview-web": 7.0.0-alpha.43 - "@storybook/react": 7.0.0-alpha.43 - "@storybook/react-webpack5": 7.0.0-alpha.43 - "@storybook/theming": 7.0.0-alpha.43 - "@testing-library/dom": ^7.31.2 - "@testing-library/user-event": ^13.1.9 - "@types/babel__preset-env": ^7 - "@types/prop-types": ^15 - "@types/react": ^17.0.39 - cross-env: ^7.0.3 - eslint: 8.7.0 - eslint-config-next: 12.0.8 - formik: ^2.2.9 - next: ^12.1.0 - nextra: ^1.1.0 - nextra-theme-docs: ^1.2.6 - prop-types: ^15.8.1 - react: 16.14.0 - react-dom: 16.14.0 - storybook: 7.0.0-alpha.43 - typescript: ~4.6.3 - webpack: 5 - languageName: unknown - linkType: soft - -"@storybook/manager-api@portal:../../code/lib/manager-api::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/manager-api@portal:../../code/lib/manager-api::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.56 - "@storybook/theming": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - semver: ^7.3.7 - store2: ^2.12.0 - telejson: ^7.0.3 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/manager@portal:../../code/ui/manager::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/manager@portal:../../code/ui/manager::locator=%40storybook%2Fexternal-docs%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/mdx2-csf@npm:next": - version: 0.1.0-next.7 - resolution: "@storybook/mdx2-csf@npm:0.1.0-next.7" - dependencies: - loader-utils: ^2.0.4 - checksum: 80038a1df415486346cf0316d159a2dfec309cb697d5d253bad37f0d0274ba9bdb8e11aa365987e8e8bb33747bf2ab1bb2600d4281ab07709d0562bfb606b4ac - languageName: node - linkType: hard - -"@storybook/node-logger@portal:../../code/lib/node-logger::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/node-logger@portal:../../code/lib/node-logger::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@types/npmlog": ^4.1.2 - chalk: ^4.1.0 - npmlog: ^5.0.1 - pretty-hrtime: ^1.0.3 - languageName: node - linkType: soft - -"@storybook/postinstall@portal:../../code/lib/postinstall::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/postinstall@portal:../../code/lib/postinstall::locator=%40storybook%2Fexternal-docs%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/preset-react-webpack@portal:../../code/presets/react-webpack::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preset-react-webpack@portal:../../code/presets/react-webpack::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@babel/preset-flow": ^7.18.6 - "@babel/preset-react": ^7.18.6 - "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/core-webpack": 7.0.0-alpha.56 - "@storybook/docs-tools": 7.0.0-alpha.56 - "@storybook/node-logger": 7.0.0-alpha.56 - "@storybook/react": 7.0.0-alpha.56 - "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-plugin-add-react-displayname: ^0.0.5 - babel-plugin-react-docgen: ^4.2.1 - fs-extra: ^9.0.1 - react-refresh: ^0.11.0 - semver: ^7.3.7 - peerDependencies: - "@babel/core": ^7.11.5 - jest-specific-snapshot: ^7.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - require-from-string: ^2.0.2 - webpack: 5 - peerDependenciesMeta: - "@babel/core": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/preview-api@portal:../../code/lib/preview-api::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preview-api@portal:../../code/lib/preview-api::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/channel-postmessage": 7.0.0-alpha.56 - "@storybook/channels": 7.0.0-alpha.56 - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/core-events": 7.0.0-alpha.56 - "@storybook/csf": next - "@storybook/types": 7.0.0-alpha.56 - "@types/qs": ^6.9.5 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - qs: ^6.10.0 - slash: ^3.0.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - languageName: node - linkType: soft - -"@storybook/preview-web@npm:7.0.0-alpha.43": - version: 7.0.0-alpha.43 - resolution: "@storybook/preview-web@npm:7.0.0-alpha.43" - dependencies: - "@storybook/addons": 7.0.0-alpha.43 - "@storybook/channels": 7.0.0-alpha.43 - "@storybook/client-logger": 7.0.0-alpha.43 - "@storybook/core-events": 7.0.0-alpha.43 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.43 - ansi-to-html: ^0.6.11 - global: ^4.4.0 - lodash: ^4.17.21 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - checksum: 8d61d0c37bd943390742945b028ecffeaa99d2e8abe56a7cbc4748d6bb7accdf7992f8329f4721aa4547a99053828e04b8a6cb1e9be4b79bf8a5db08dcdf9eab - languageName: node - linkType: hard - -"@storybook/preview@npm:7.0.0-alpha.56": - version: 7.0.0-alpha.56 - resolution: "@storybook/preview@npm:7.0.0-alpha.56" - checksum: 968b25eb2778d3985f049e3f2e5a94f4d0d55aca3d69ed5647be66c243b17eff4f928083c1d8f997c458f3d1cf9172f72b3c52f911bd18927ca628e288ca7ed8 - languageName: node - linkType: hard - -"@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": - version: 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 - resolution: "@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" - dependencies: - debug: ^4.1.1 - endent: ^2.0.1 - find-cache-dir: ^3.3.1 - flat-cache: ^3.0.4 - micromatch: ^4.0.2 - react-docgen-typescript: ^2.1.1 - tslib: ^2.0.0 - peerDependencies: - typescript: ">= 3.x" - webpack: ">= 4" - checksum: 91a3015d384e93d9ffb4def904cad51218eb1a9eaf504c758083f2988a97d8bf8748bc280aa629864eb26fd9f7fc05bd087df95383d719e0c914c722016804b9 - languageName: node - linkType: hard - -"@storybook/react-webpack5@portal:../../code/frameworks/react-webpack5::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/react-webpack5@portal:../../code/frameworks/react-webpack5::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.56 - "@storybook/preset-react-webpack": 7.0.0-alpha.56 - "@storybook/react": 7.0.0-alpha.56 - "@types/node": ^16.0.0 - peerDependencies: - "@babel/core": ^7.11.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@babel/core": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/react@portal:../../code/renderers/react::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/react@portal:../../code/renderers/react::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/core-client": 7.0.0-alpha.56 - "@storybook/docs-tools": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - "@storybook/types": 7.0.0-alpha.56 - "@types/estree": ^0.0.51 - "@types/node": ^16.0.0 - acorn: ^7.4.1 - acorn-jsx: ^5.3.1 - acorn-walk: ^7.2.0 - escodegen: ^2.0.0 - global: ^4.4.0 - html-tags: ^3.1.0 - lodash: ^4.17.21 - prop-types: ^15.7.2 - react-element-to-jsx-string: ^15.0.0 - ts-dedent: ^2.0.0 - type-fest: ^2.19.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/router@portal:../../code/lib/router::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/router@portal:../../code/lib/router::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - memoizerific: ^1.11.3 - qs: ^6.10.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/store@portal:../../code/lib/store::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/store@portal:../../code/lib/store::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/preview-api": 7.0.0-alpha.56 - languageName: node - linkType: soft - -"@storybook/telemetry@portal:../../code/lib/telemetry::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/telemetry@portal:../../code/lib/telemetry::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.56 - "@storybook/core-common": 7.0.0-alpha.56 - chalk: ^4.1.0 - detect-package-manager: ^2.0.1 - fetch-retry: ^5.0.2 - fs-extra: ^9.0.1 - isomorphic-unfetch: ^3.1.0 - nanoid: ^3.3.1 - read-pkg-up: ^7.0.1 - languageName: node - linkType: soft - -"@storybook/theming@portal:../../code/lib/theming::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/theming@portal:../../code/lib/theming::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.0.0-alpha.56 - memoizerific: ^1.11.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/types@npm:7.0.0-alpha.56": - version: 7.0.0-alpha.56 - resolution: "@storybook/types@npm:7.0.0-alpha.56" - dependencies: - "@babel/core": ^7.12.10 - "@storybook/channels": 7.0.0-alpha.56 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - express: ^4.17.1 - file-system-cache: ^2.0.0 - checksum: dc53b59575572e12d8992804b24ead69432bd6e9ba29efdcc83d74b304cbca64fd2fba6898d2e59b879209234124ad44540bf7021a2b4d469308d3120fb97287 - languageName: node - linkType: hard - -"@swc/helpers@npm:0.4.11": - version: 0.4.11 - resolution: "@swc/helpers@npm:0.4.11" - dependencies: - tslib: ^2.4.0 - checksum: 736857d524b41a8a4db81094e9b027f554004e0fa3e86325d85bdb38f7e6459ce022db079edb6c61ba0f46fe8583b3e663e95f7acbd13e51b8da6c34e45bba2e - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 - languageName: node - linkType: hard - -"@testing-library/dom@npm:^7.31.2": - version: 7.31.2 - resolution: "@testing-library/dom@npm:7.31.2" - dependencies: - "@babel/code-frame": ^7.10.4 - "@babel/runtime": ^7.12.5 - "@types/aria-query": ^4.2.0 - aria-query: ^4.2.2 - chalk: ^4.1.0 - dom-accessibility-api: ^0.5.6 - lz-string: ^1.4.4 - pretty-format: ^26.6.2 - checksum: 54fbedd1ecdfe1d47be2e592b98d18b2ab9d7e731f57231caf9b152593fe7329fe5ebe219e0e5d1e0df5b1ab803121cb8acd8b73bd1fb292bfdc2c55663eb01d - languageName: node - linkType: hard - -"@testing-library/user-event@npm:^13.1.9": - version: 13.5.0 - resolution: "@testing-library/user-event@npm:13.5.0" - dependencies: - "@babel/runtime": ^7.12.5 - peerDependencies: - "@testing-library/dom": ">=7.21.4" - checksum: 16319de685fbb7008f1ba667928f458b2d08196918002daca56996de80ef35e6d9de26e9e1ece7d00a004692b95a597cf9142fff0dc53f2f51606a776584f549 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@types/acorn@npm:^4.0.0": - version: 4.0.6 - resolution: "@types/acorn@npm:4.0.6" - dependencies: - "@types/estree": "*" - checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 - languageName: node - linkType: hard - -"@types/aria-query@npm:^4.2.0": - version: 4.2.2 - resolution: "@types/aria-query@npm:4.2.2" - checksum: 6f2ce11d91e2d665f3873258db19da752d91d85d3679eb5efcdf9c711d14492287e1e4eb52613b28e60375841a9e428594e745b68436c963d8bad4bf72188df3 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.20": - version: 7.1.20 - resolution: "@types/babel__core@npm:7.1.20" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: a09c4f0456552547a5b8a5a009a3daec4d362f622168f8e08bda0ded2da0a65ab0b1642e23c433b3616721f5701dc34a996c5bde5baeaea53eda98f438043f2c - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__preset-env@npm:^7": - version: 7.9.2 - resolution: "@types/babel__preset-env@npm:7.9.2" - checksum: a905ed92a3f602384966153e74a94790425e98af54e392a7fcfb5c5ded2f2a58c49a9fa64a0cb506fbffb8169ad25b56ea87983c812a4fb880f0716668c8c085 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.18.3 - resolution: "@types/babel__traverse@npm:7.18.3" - dependencies: - "@babel/types": ^7.3.0 - checksum: d20953338b2f012ab7750932ece0a78e7d1645b0a6ff42d49be90f55e9998085da1374a9786a7da252df89555c6586695ba4d1d4b4e88ab2b9f306bcd35e00d3 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - -"@types/ejs@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/ejs@npm:3.1.1" - checksum: 12fa444920aaa70af2fae4424fa62b49c23b31a37129c428b7c9f9068e58c0696b4e5601b0449f87bae8794e039c679a43651c356c34f17d1bb460456dd41441 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.10 - resolution: "@types/eslint@npm:8.4.10" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 21e009ed9ed9bc8920fdafc6e11ff321c4538b4cc18a56fdd59dc5184ea7bbf363c71638c9bdb59fc1254dddcdd567485136ed68b0ee4750948d4e32cb79c689 - languageName: node - linkType: hard - -"@types/estree-jsx@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree-jsx@npm:1.0.0" - dependencies: - "@types/estree": "*" - checksum: 851d7afb63a89fb9ce7822563930660433f29106d72db279ce9c99f791ec996ef21b05adc6f545325cd1745b3041cc86422f0ffa39a06734305b90cfbc871765 - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 - languageName: node - linkType: hard - -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.31 - resolution: "@types/express-serve-static-core@npm:4.17.31" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df - languageName: node - linkType: hard - -"@types/express@npm:^4.7.0": - version: 4.17.14 - resolution: "@types/express@npm:4.17.14" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.18 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 15c1af46d02de834e4a225eccaa9d85c0370fdbb3ed4e1bc2d323d24872309961542b993ae236335aeb3e278630224a6ea002078d39e651d78a3b0356b1eaa79 - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" - dependencies: - "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - -"@types/keyv@npm:^3.1.1": - version: 3.1.4 - resolution: "@types/keyv@npm:3.1.4" - dependencies: - "@types/node": "*" - checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.167": - version: 4.14.191 - resolution: "@types/lodash@npm:4.14.191" - checksum: ba0d5434e10690869f32d5ea49095250157cae502f10d57de0a723fd72229ce6c6a4979576f0f13e0aa9fbe3ce2457bfb9fa7d4ec3d6daba56730a51906d1491 - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" - dependencies: - "@types/unist": "*" - checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313 - languageName: node - linkType: hard - -"@types/mdx@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/mdx@npm:2.0.3" - checksum: 41deb51c29535913af01d25f0e1414cfb5a6948d0e60e77e4aca895694de48bf0ac69c5a81fe2d9617d726cb253001ef82a65b683d5ef51987d15aa1931d086b - languageName: node - linkType: hard - -"@types/mime-types@npm:^2.1.0": - version: 2.1.1 - resolution: "@types/mime-types@npm:2.1.1" - checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c - languageName: node - linkType: hard - -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.5.7": - version: 2.6.2 - resolution: "@types/node-fetch@npm:2.6.2" - dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 18.11.10 - resolution: "@types/node@npm:18.11.10" - checksum: 0f60cb090b2ee91fcd3dc4311bc1ed7889b92f14644c0069f100776f86474c12eebbcc6c75bc0d7d96b975a103b4d5d6b3c22b4e88bea6e7f4e2b1bb0daf5ea8 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.4 - resolution: "@types/node@npm:16.18.4" - checksum: c2da162df295d81eed199d2b12f1edf9618d9f4099ba84a8553859b40e1dac2d44131c75b57803bd35cf9da881434d0abebe46994a2936b6b9c16d8e52db9146 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/npmlog@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/npmlog@npm:4.1.4" - checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: a6cdee417eea6f7af914e4fcd13e05822864ce10b5d7646525632e86d69b79123eec55a5d3fff0155ba46b61902775e1644bcb80e1e4dffdac28e7febb089083 - languageName: node - linkType: hard - -"@types/prop-types@npm:*, @types/prop-types@npm:^15": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/react@npm:>=16": - version: 18.0.26 - resolution: "@types/react@npm:18.0.26" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: b62f0ea3cdfa68e106391728325057ad36f1bde7ba2dfae029472c47e01e482bc77c6ba4f1dad59f3f04ee81cb597618ff7c30a33c157c0a20462b6dd6aa2d4d - languageName: node - linkType: hard - -"@types/react@npm:^17.0.39": - version: 17.0.52 - resolution: "@types/react@npm:17.0.52" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: a51b98dd87838d161278fdf9dd78e6a4ff8c018f406d6647f77963e144fb52a8beee40c89fd0e7e840eaeaa8bd9fe2f34519410540b1a52d43a6f8b4d2fbce33 - languageName: node - linkType: hard - -"@types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" - dependencies: - "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.2 - resolution: "@types/scheduler@npm:0.16.2" - checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.0 - resolution: "@types/serve-static@npm:1.15.0" - dependencies: - "@types/mime": "*" - "@types/node": "*" - checksum: b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 - languageName: node - linkType: hard - -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db - languageName: node - linkType: hard - -"@types/warning@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/warning@npm:3.0.0" - checksum: 120dcf90600d583c68a60872200061eab9318ae15ea898581f8e9a6dc71b7941095dd81d8324e36d2a6006e5e12b6fc1cf8eda00cc514ee12bb39a912cc4e040 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 - languageName: node - linkType: hard - -"@types/yargs@npm:^15.0.0": - version: 15.0.14 - resolution: "@types/yargs@npm:15.0.14" - dependencies: - "@types/yargs-parser": "*" - checksum: 8e358aeb8f0c3758e59e2b8fcfdee5627ab2fe3d92f50f380503d966c7f33287be3322155516a50d27727fde1ad3878f48f60cd6648439126d4b0bbb1a1153ed - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.15 - resolution: "@types/yargs@npm:17.0.15" - dependencies: - "@types/yargs-parser": "*" - checksum: f6a12cf5fbfba6317fcbdf0fb545002bd37e48131f573c0b95473f1f245ba0e8ecfe859fcb43e972ff4dbd821944467d145419c5b12fdb0ba00cde886732097e - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^5.0.0": - version: 5.45.0 - resolution: "@typescript-eslint/parser@npm:5.45.0" - dependencies: - "@typescript-eslint/scope-manager": 5.45.0 - "@typescript-eslint/types": 5.45.0 - "@typescript-eslint/typescript-estree": 5.45.0 - debug: ^4.3.4 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: b8ce3af72de3ff22bb206c3299e728d37a836dbe1f75bcb66ad3bb7962204174b7fff834992b84f0e661de507729c01c7ad71ad2707c217cccc3c0f798a9dc23 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.45.0": - version: 5.45.0 - resolution: "@typescript-eslint/scope-manager@npm:5.45.0" - dependencies: - "@typescript-eslint/types": 5.45.0 - "@typescript-eslint/visitor-keys": 5.45.0 - checksum: 8f686be8ee0c7ac49ee2a313570cddf86a1364b1ec129f50f8a531038a3bb241429734dc5e2c4e5dd76cc3ed149628aa3e8425cc092f37ca6885b1995c99c2d1 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.45.0": - version: 5.45.0 - resolution: "@typescript-eslint/types@npm:5.45.0" - checksum: 43d533622995f002221e439ea517aa07dbce2067cc880a6eb9d26307c505b746975f334d76b35501a2f4dd06d7aaf79964d86ce5a95e76a4f309d6e54faf5213 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.45.0": - version: 5.45.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.45.0" - dependencies: - "@typescript-eslint/types": 5.45.0 - "@typescript-eslint/visitor-keys": 5.45.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8f48b3c75c155491ee49436c470e491f9fe48e6e7c95190c4d0c0ab64ce24e8bc6715de86996baf57fc9f0c6dae986ce9ae075e656664489bfa1dc706eaafcd7 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.45.0": - version: 5.45.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.45.0" - dependencies: - "@typescript-eslint/types": 5.45.0 - eslint-visitor-keys: ^3.3.0 - checksum: 050cc4275d8a3638a106c2915410710e775382996130a6b2af732269e55cbbc4ed438c8662ddf409635d2d8bd0d8a4389b3980bc2cb38c6105c77c6835222af0 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec - languageName: node - linkType: hard - -"@yarnpkg/esbuild-plugin-pnp@npm:^3.0.0-rc.10": - version: 3.0.0-rc.15 - resolution: "@yarnpkg/esbuild-plugin-pnp@npm:3.0.0-rc.15" - dependencies: - tslib: ^2.4.0 - peerDependencies: - esbuild: ">=0.10.0" - checksum: 04da15355a99773b441742814ba4d0f3453a83df47aa07e215f167e156f109ab8e971489c8b1a4ddf3c79d568d35213f496ad52e97298228597e1aacc22680aa - languageName: node - linkType: hard - -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" - peerDependencies: - acorn: ^8 - checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.2.0": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn@npm:^7.4.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.0.0, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": - version: 8.8.1 - resolution: "acorn@npm:8.8.1" - bin: - acorn: bin/acorn - checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f - languageName: node - linkType: hard - -"address@npm:^1.0.1": - version: 1.2.1 - resolution: "address@npm:1.2.1" - checksum: e4c0f961464ccad09c3f7ed3a8d12f609354a87dd1ad379e43661e9684446fbf158be3edeef85e1590dfc6c88c0897c5908bc18f232eb86e43993a2ada5820fa - languageName: node - linkType: hard - -"agent-base@npm:5": - version: 5.1.1 - resolution: "agent-base@npm:5.1.1" - checksum: 61ae789f3019f1dc10e8cba6d3ae9826949299a4e54aaa1cfa2fa37c95a108e70e95423b963bb987d7891a703fd9a5c383a506f4901819f3ee56f3147c0aa8ab - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.0.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: ^3.1.3 - peerDependencies: - ajv: ^8.8.2 - checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 - languageName: node - linkType: hard - -"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.8.0": - version: 8.11.2 - resolution: "ajv@npm:8.11.2" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 53435bf79ee7d1eabba8085962dba4c08d08593334b304db7772887f0b7beebc1b3d957432f7437ed4b60e53b5d966a57b439869890209c50fed610459999e3e - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: ^4.1.0 - checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d - languageName: node - linkType: hard - -"ansi-html-community@npm:0.0.8, ansi-html-community@npm:^0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.1.0, ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - -"ansi-to-html@npm:^0.6.11": - version: 0.6.15 - resolution: "ansi-to-html@npm:0.6.15" - dependencies: - entities: ^2.0.0 - bin: - ansi-to-html: bin/ansi-to-html - checksum: c899362a29b92c8ae075b72168b826f7c233875b475719304942f80695e0ce4a6812845021192da5fb0ac80b10209b4fae5aede42620a1b1b3d3b30f3ef77a86 - languageName: node - linkType: hard - -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - -"app-root-dir@npm:^1.0.2": - version: 1.0.2 - resolution: "app-root-dir@npm:1.0.2" - checksum: d4b1653fc60b6465b982bf5a88b12051ed2d807d70609386a809306e1c636496f53522d61fa30f9f98c71aaae34f34e1651889cf17d81a44e3dafd2859d495ad - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"arch@npm:^2.1.0": - version: 2.2.0 - resolution: "arch@npm:2.2.0" - checksum: e21b7635029fe8e9cdd5a026f9a6c659103e63fff423834323cdf836a1bb240a72d0c39ca8c470f84643385cf581bd8eda2cad8bf493e27e54bd9783abe9101f - languageName: node - linkType: hard - -"archive-type@npm:^4.0.0": - version: 4.0.0 - resolution: "archive-type@npm:4.0.0" - dependencies: - file-type: ^4.2.0 - checksum: 271f0d118294dd0305831f0700b635e8a9475f97693212d548eee48017f917e14349a25ad578f8e13486ba4b7cde1972d53e613d980e8738cfccea5fc626c76f - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - -"arg@npm:1.0.0": - version: 1.0.0 - resolution: "arg@npm:1.0.0" - checksum: 0a35939e3cb59d4f18207884563e00b0f71647becccec932348e9c5bdecfe6ca41b2ed854bbb267a2e87f97f605ed3ca936f2f0b3313bf88be6d7cdbb2d0a4b1 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.10.2 - "@babel/runtime-corejs3": ^7.10.2 - checksum: 38401a9a400f26f3dcc24b84997461a16b32869a9893d323602bed8da40a8bcc0243b8d2880e942249a1496cea7a7de769e93d21c0baa439f01e1ee936fed665 - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-includes@npm:^3.1.4, array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - is-string: ^1.0.7 - checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.2.5": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - get-intrinsic: ^1.1.3 - checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - -"ast-types-flow@npm:^0.0.7": - version: 0.0.7 - resolution: "ast-types-flow@npm:0.0.7" - checksum: a26dcc2182ffee111cad7c471759b0bda22d3b7ebacf27c348b22c55f16896b18ab0a4d03b85b4020dce7f3e634b8f00b593888f622915096ea1927fa51866c4 - languageName: node - linkType: hard - -"ast-types@npm:0.13.3": - version: 0.13.3 - resolution: "ast-types@npm:0.13.3" - checksum: 23d08bc589aacb787e22ac7efc086ebcc158e739c057dac74de409a97e26ec9c5bcb2d0709f5678bd5d90f67d93f62fba0e5fe98161a0a3a7534d55a155544d8 - languageName: node - linkType: hard - -"ast-types@npm:0.14.2, ast-types@npm:^0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: ^2.0.1 - checksum: 8674a77307764979f0a0b2006b7223a4b789abffaa7acbf6a1132650a799252155170173a1ff6a7fb6897f59437fc955f2707bdfc391b0797750898876e6c9ed - languageName: node - linkType: hard - -"astring@npm:^1.8.0": - version: 1.8.3 - resolution: "astring@npm:1.8.3" - bin: - astring: bin/astring - checksum: 72fc85de7420ca6edeee15157fd65c5253a8cb1ced979ba66ecc439fa569f1c1cc242e4c0a9fc5a6380bf73fb5ec894dc65cf1dc0f3d1cab8c707b31df7daa1c - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - -"async@npm:^3.2.3": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"axe-core@npm:^4.4.3": - version: 4.5.2 - resolution: "axe-core@npm:4.5.2" - checksum: 4068f183b2ef1db7e5a75606032c238781abfaa34ab4c23177e17f7dff8cc83f175e887b52689d20d88d2d4f001cbf632bd98925850026fe1d9abc739cabcf16 - languageName: node - linkType: hard - -"axobject-query@npm:^2.2.0": - version: 2.2.0 - resolution: "axobject-query@npm:2.2.0" - checksum: 96b8c7d807ca525f41ad9b286186e2089b561ba63a6d36c3e7d73dc08150714660995c7ad19cda05784458446a0793b45246db45894631e13853f48c1aa3117f - languageName: node - linkType: hard - -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - -"babel-loader@npm:^8.3.0": - version: 8.3.0 - resolution: "babel-loader@npm:8.3.0" - dependencies: - find-cache-dir: ^3.3.1 - loader-utils: ^2.0.0 - make-dir: ^3.1.0 - schema-utils: ^2.6.5 - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: d48bcf9e030e598656ad3ff5fb85967db2eaaf38af5b4a4b99d25618a2057f9f100e6b231af2a46c1913206db506115ca7a8cbdf52c9c73d767070dae4352ab5 - languageName: node - linkType: hard - -"babel-plugin-add-react-displayname@npm:^0.0.5": - version: 0.0.5 - resolution: "babel-plugin-add-react-displayname@npm:0.0.5" - checksum: a5b52aa14327b1fa2949f32140cd1b0b283b2035881453d71dcedc825a7378aa3a578bff5f76d1632875eedb40612dc4e71585852ce5cb3c2869c180643fd001 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-named-exports-order@npm:^0.0.2": - version: 0.0.2 - resolution: "babel-plugin-named-exports-order@npm:0.0.2" - checksum: d918390a09c0148893ea93bdc9c4fc6a03447c688eaf40bed0f0682d036e985ecee830b90fec2ab149b8dc0cb3220a2c0ac5054e42626bdfe0b436b505b7ef22 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c - languageName: node - linkType: hard - -"babel-plugin-react-docgen@npm:^4.2.1": - version: 4.2.1 - resolution: "babel-plugin-react-docgen@npm:4.2.1" - dependencies: - ast-types: ^0.14.2 - lodash: ^4.17.15 - react-docgen: ^5.0.0 - checksum: 6126d358ac2cb27a9a7f145ab586b7a28cb19ef09ca37c4f08a853246a101328ffe6c87813e95b1b4ba05beb627285199f7d0ba16abfb61b35cc4febb6d5eabd - languageName: node - linkType: hard - -"bail@npm:^1.0.0": - version: 1.0.5 - resolution: "bail@npm:1.0.5" - checksum: 6c334940d7eaa4e656a12fb12407b6555649b6deb6df04270fa806e0da82684ebe4a4e47815b271c794b40f8d6fa286e0c248b14ddbabb324a917fab09b7301a - languageName: node - linkType: hard - -"bail@npm:^2.0.0": - version: 2.0.2 - resolution: "bail@npm:2.0.2" - checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" - dependencies: - open: ^7.0.3 - checksum: 3d1a945d125cbbc6e6a841bef7540435d77d5aa61fc4d345896f5f0b3780fcf9c7145373deaedf62d674a427b187ae973f4410884f9fea0c15f7f01f9dc339c7 - languageName: node - linkType: hard - -"big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"bl@npm:^1.0.0": - version: 1.2.3 - resolution: "bl@npm:1.2.3" - dependencies: - readable-stream: ^2.3.5 - safe-buffer: ^5.1.1 - checksum: 123f097989ce2fa9087ce761cd41176aaaec864e28f7dfe5c7dab8ae16d66d9844f849c3ad688eb357e3c5e4f49b573e3c0780bb8bc937206735a3b6f8569a5f - languageName: node - linkType: hard - -"body-parser@npm:1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: ^3.0.0 - camelcase: ^6.2.0 - chalk: ^4.1.0 - cli-boxes: ^2.2.1 - string-width: ^4.2.2 - type-fest: ^0.20.2 - widest-line: ^3.1.0 - wrap-ansi: ^7.0.0 - checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 - languageName: node - linkType: hard - -"boxen@npm:^7.0.0": - version: 7.0.0 - resolution: "boxen@npm:7.0.0" - dependencies: - ansi-align: ^3.0.1 - camelcase: ^7.0.0 - chalk: ^5.0.1 - cli-boxes: ^3.0.0 - string-width: ^5.1.2 - type-fest: ^2.13.0 - widest-line: ^4.0.1 - wrap-ansi: ^8.0.1 - checksum: b917cf7a168ef3149635a8c02d5c9717d66182348bd27038d85328ad12655151e3324db0f2815253846c33e5f0ddf28b6cd52d56a12b9f88617b7f8f722b946a - languageName: node - linkType: hard - -"bplist-parser@npm:^0.2.0": - version: 0.2.0 - resolution: "bplist-parser@npm:0.2.0" - dependencies: - big-integer: ^1.6.44 - checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"browser-assert@npm:^1.2.1": - version: 1.2.1 - resolution: "browser-assert@npm:1.2.1" - checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" - dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 - bin: - browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer-alloc-unsafe@npm:^1.1.0": - version: 1.1.0 - resolution: "buffer-alloc-unsafe@npm:1.1.0" - checksum: c5e18bf51f67754ec843c9af3d4c005051aac5008a3992938dda1344e5cfec77c4b02b4ca303644d1e9a6e281765155ce6356d85c6f5ccc5cd21afc868def396 - languageName: node - linkType: hard - -"buffer-alloc@npm:^1.2.0": - version: 1.2.0 - resolution: "buffer-alloc@npm:1.2.0" - dependencies: - buffer-alloc-unsafe: ^1.1.0 - buffer-fill: ^1.0.0 - checksum: 560cd27f3cbe73c614867da373407d4506309c62fe18de45a1ce191f3785ec6ca2488d802ff82065798542422980ca25f903db078c57822218182c37c3576df5 - languageName: node - linkType: hard - -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - -"buffer-fill@npm:^1.0.0": - version: 1.0.0 - resolution: "buffer-fill@npm:1.0.0" - checksum: c29b4723ddeab01e74b5d3b982a0c6828f2ded49cef049ddca3dac661c874ecdbcecb5dd8380cf0f4adbeb8cff90a7de724126750a1f1e5ebd4eb6c59a1315b1 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"buffer@npm:^5.2.1": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.1.13 - checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e - languageName: node - linkType: hard - -"c8@npm:^7.6.0": - version: 7.12.0 - resolution: "c8@npm:7.12.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@istanbuljs/schema": ^0.1.3 - find-up: ^5.0.0 - foreground-child: ^2.0.0 - istanbul-lib-coverage: ^3.2.0 - istanbul-lib-report: ^3.0.0 - istanbul-reports: ^3.1.4 - rimraf: ^3.0.2 - test-exclude: ^6.0.0 - v8-to-istanbul: ^9.0.0 - yargs: ^16.2.0 - yargs-parser: ^20.2.9 - bin: - c8: bin/c8.js - checksum: 3b7fa9ad7cff2cb0bb579467e6b544498fbd46e9353a809ad3b8cf749df4beadd074cde277356b0552f3c8055b1b3ec3ebaf2209e9ad4bdefed92dbf64d283ab - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.1": - version: 10.2.3 - resolution: "cacheable-request@npm:10.2.3" - dependencies: - "@types/http-cache-semantics": ^4.0.1 - get-stream: ^6.0.1 - http-cache-semantics: ^4.1.0 - keyv: ^4.5.2 - mimic-response: ^4.0.0 - normalize-url: ^8.0.0 - responselike: ^3.0.0 - checksum: f54c57c40e54b2d23fabb9e3af94a11d9c7cd837627b143b9a2921c9ce25f0ae5da537b4a76006a086351423e6db05962066ae22af3362978569977acf0fde72 - languageName: node - linkType: hard - -"cacheable-request@npm:^2.1.1": - version: 2.1.4 - resolution: "cacheable-request@npm:2.1.4" - dependencies: - clone-response: 1.0.2 - get-stream: 3.0.0 - http-cache-semantics: 3.8.1 - keyv: 3.0.0 - lowercase-keys: 1.0.0 - normalize-url: 2.0.1 - responselike: 1.0.2 - checksum: 69c684cb3645f75af094e3ef6e7959ca5edff33d70737498de1a068d2f719a12786efdd82fe1e2254a1f332bb88cce088273bd78fad3e57cdef5034f3ded9432 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"camelcase@npm:^7.0.0": - version: 7.0.0 - resolution: "camelcase@npm:7.0.0" - checksum: 162d59607b3b46e910af151348d5e40af579048a5d07f3c06370b096ca0d42ba4a88bd92cf4e3482645ba1ffdd6f744d8273c1b9594e493fc10883d54adf7cbe - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001400, caniuse-lite@npm:^1.0.30001406": - version: 1.0.30001436 - resolution: "caniuse-lite@npm:1.0.30001436" - checksum: 7928ac7d93741a81b3005ca4623b133e7d790828be70b26ee55e4860facc59bc344f4092e20034981070a4714f70814c8be4929be4b22728031784f267f69099 - languageName: node - linkType: hard - -"case-sensitive-paths-webpack-plugin@npm:^2.4.0": - version: 2.4.0 - resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: bcf469446eeee9ac0046e30860074ebb9aa4803aab9140e6bb72b600b23b1d70635690754be4504ce35cd99cdf05226bee8d894ba362a3f5485d5f6310fc6d02 - languageName: node - linkType: hard - -"ccount@npm:^1.0.0": - version: 1.1.0 - resolution: "ccount@npm:1.1.0" - checksum: b335a79d0aa4308919cf7507babcfa04ac63d389ebed49dbf26990d4607c8a4713cde93cc83e707d84571ddfe1e7615dad248be9bc422ae4c188210f71b08b78 - languageName: node - linkType: hard - -"ccount@npm:^2.0.0": - version: 2.0.1 - resolution: "ccount@npm:2.0.1" - checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 - languageName: node - linkType: hard - -"chalk@npm:2.3.0": - version: 2.3.0 - resolution: "chalk@npm:2.3.0" - dependencies: - ansi-styles: ^3.1.0 - escape-string-regexp: ^1.0.5 - supports-color: ^4.0.0 - checksum: d348fc0f4f8d27c068a6ac492e708fa35a75e273d5f0004da61ea694e958981658c96693790f4d23e7b3712f9e3e4ca0988136cb0403876de5459a4c0d13078f - languageName: node - linkType: hard - -"chalk@npm:^2.0.0": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"chalk@npm:^5.0.1": - version: 5.1.2 - resolution: "chalk@npm:5.1.2" - checksum: 804d7485e33531abe45b14e91026ceb5615974a8c04259ab0806f214a7666f6ea03e39ab124f7d5a0c78a83fda89005f236db3c5f10c2abe9ae875f7aa56bcb5 - languageName: node - linkType: hard - -"character-entities-html4@npm:^2.0.0": - version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0" - checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d - languageName: node - linkType: hard - -"character-entities-legacy@npm:^1.0.0": - version: 1.1.4 - resolution: "character-entities-legacy@npm:1.1.4" - checksum: fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811 - languageName: node - linkType: hard - -"character-entities-legacy@npm:^3.0.0": - version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0" - checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 - languageName: node - linkType: hard - -"character-entities@npm:^1.0.0": - version: 1.2.4 - resolution: "character-entities@npm:1.2.4" - checksum: e1545716571ead57beac008433c1ff69517cd8ca5b336889321c5b8ff4a99c29b65589a701e9c086cda8a5e346a67295e2684f6c7ea96819fe85cbf49bf8686d - languageName: node - linkType: hard - -"character-entities@npm:^2.0.0": - version: 2.0.2 - resolution: "character-entities@npm:2.0.2" - checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def - languageName: node - linkType: hard - -"character-reference-invalid@npm:^1.0.0": - version: 1.1.4 - resolution: "character-reference-invalid@npm:1.1.4" - checksum: 20274574c70e05e2f81135f3b93285536bc8ff70f37f0809b0d17791a832838f1e49938382899ed4cb444e5bbd4314ca1415231344ba29f4222ce2ccf24fea0b - languageName: node - linkType: hard - -"character-reference-invalid@npm:^2.0.0": - version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1" - checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee - languageName: node - linkType: hard - -"chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.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 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.7.0 - resolution: "ci-info@npm:3.7.0" - checksum: 6e5df0250382ff3732703b36b958d2d892dd3c481f9671666f96c2ab7888be744bc4dca81395be958dcb828502d94f18fa9aa8901c5a3c9923cda212df02724c - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - -"classnames@npm:^2.2.6": - version: 2.3.2 - resolution: "classnames@npm:2.3.2" - checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" - dependencies: - source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 - languageName: node - linkType: hard - -"cli-boxes@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-boxes@npm:3.0.0" - checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": 1.5.0 - string-width: ^4.2.0 - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c - languageName: node - linkType: hard - -"clipboardy@npm:1.2.2": - version: 1.2.2 - resolution: "clipboardy@npm:1.2.2" - dependencies: - arch: ^2.1.0 - execa: ^0.8.0 - checksum: 7744a95e014e5945f17554b426fe78c6e1329ead85a61fa589dd4c3f4a596a037d45cad0bfaa3e60bdf77717f0dfda67c35454216f4dbb7832ec0eba42ba8a06 - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: ^2.0.4 - kind-of: ^6.0.2 - shallow-clone: ^3.0.0 - checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"clone-response@npm:1.0.2": - version: 1.0.2 - resolution: "clone-response@npm:1.0.2" - dependencies: - mimic-response: ^1.0.0 - checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colorette@npm:^2.0.10, colorette@npm:^2.0.19": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.3 - resolution: "comma-separated-tokens@npm:2.0.3" - checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d - languageName: node - linkType: hard - -"commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.8.1": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab - languageName: node - linkType: hard - -"configstore@npm:^6.0.0": - version: 6.0.0 - resolution: "configstore@npm:6.0.0" - dependencies: - dot-prop: ^6.0.1 - graceful-fs: ^4.2.6 - unique-string: ^3.0.0 - write-file-atomic: ^3.0.3 - xdg-basedir: ^5.0.1 - checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.2": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 - languageName: node - linkType: hard - -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"core-js-compat@npm:^3.25.1": - version: 3.26.1 - resolution: "core-js-compat@npm:3.26.1" - dependencies: - browserslist: ^4.21.4 - checksum: f222bce0002eae405327d68286e1d566037e8ac21906a47d7ecd15858adca7b12e82140db11dc43c8cc1fc066c5306120f3c27bfb2d7dbc2d20a72a2d90d38dc - languageName: node - linkType: hard - -"core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.25.1": - version: 3.26.1 - resolution: "core-js-pure@npm:3.26.1" - checksum: d88c40e5e29e413c11d1ef991a8d5b6a63f00bd94707af0f649d3fc18b3524108b202f4ae75ce77620a1557d1ba340bc3362b4f25d590eccc37cf80fc75f7cd4 - languageName: node - linkType: hard - -"core-js@npm:^3.0.4": - version: 3.26.1 - resolution: "core-js@npm:3.26.1" - checksum: 0a01149f51ff1e9f41d1ea49cc4c9222047949ea597189ede7c4cf8cde3b097766b9c7615acc77c86fe65b4002f20b638a133dfba7b41dba830d707aeeed45ad - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.1": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - 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 - checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f - languageName: node - linkType: hard - -"cross-env@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-env@npm:7.0.3" - dependencies: - cross-spawn: ^7.0.1 - bin: - cross-env: src/bin/cross-env.js - cross-env-shell: src/bin/cross-env-shell.js - checksum: 26f2f3ea2ab32617f57effb70d329c2070d2f5630adc800985d8b30b56e8bf7f5f439dd3a0358b79cee6f930afc23cf8e23515f17ccfb30092c6b62c6b630a79 - languageName: node - linkType: hard - -"cross-spawn@npm:^5.0.1": - version: 5.1.0 - resolution: "cross-spawn@npm:5.1.0" - dependencies: - lru-cache: ^4.0.1 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: 726939c9954fc70c20e538923feaaa33bebc253247d13021737c3c7f68cdc3e0a57f720c0fe75057c0387995349f3f12e20e9bfdbf12274db28019c7ea4ec166 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"crypto-random-string@npm:^4.0.0": - version: 4.0.0 - resolution: "crypto-random-string@npm:4.0.0" - dependencies: - type-fest: ^1.0.1 - checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 - languageName: node - linkType: hard - -"css-loader@npm:^6.7.1": - version: 6.7.2 - resolution: "css-loader@npm:6.7.2" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.18 - 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 - postcss-value-parser: ^4.2.0 - semver: ^7.3.8 - peerDependencies: - webpack: ^5.0.0 - checksum: f3c980cc9c033a02e60df7e5a2f33a1e8c2c3dd552f017485d2d81b383be623ae8c4189404e7a4a7403b52744683ae4b516def0f7ccf125c2b198cb647e46543 - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 - languageName: node - linkType: hard - -"css-what@npm:^6.0.1": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d - languageName: node - linkType: hard - -"damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" - dependencies: - character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 - languageName: node - linkType: hard - -"decompress-response@npm:^3.3.0": - version: 3.3.0 - resolution: "decompress-response@npm:3.3.0" - dependencies: - mimic-response: ^1.0.0 - checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - -"decompress-tar@npm:^4.0.0, decompress-tar@npm:^4.1.0, decompress-tar@npm:^4.1.1": - version: 4.1.1 - resolution: "decompress-tar@npm:4.1.1" - dependencies: - file-type: ^5.2.0 - is-stream: ^1.1.0 - tar-stream: ^1.5.2 - checksum: 42d5360b558a28dd884e1bf809e3fea92b9910fda5151add004d4a64cc76ac124e8b3e9117e805f2349af9e49c331d873e6fc5ad86a00e575703fee632b0a225 - languageName: node - linkType: hard - -"decompress-tarbz2@npm:^4.0.0": - version: 4.1.1 - resolution: "decompress-tarbz2@npm:4.1.1" - dependencies: - decompress-tar: ^4.1.0 - file-type: ^6.1.0 - is-stream: ^1.1.0 - seek-bzip: ^1.0.5 - unbzip2-stream: ^1.0.9 - checksum: 519c81337730159a1f2d7072a6ee8523ffd76df48d34f14c27cb0a27f89b4e2acf75dad2f761838e5bc63230cea1ac154b092ecb7504be4e93f7d0e32ddd6aff - languageName: node - linkType: hard - -"decompress-targz@npm:^4.0.0": - version: 4.1.1 - resolution: "decompress-targz@npm:4.1.1" - dependencies: - decompress-tar: ^4.1.1 - file-type: ^5.2.0 - is-stream: ^1.1.0 - checksum: 22738f58eb034568dc50d370c03b346c428bfe8292fe56165847376b5af17d3c028fefca82db642d79cb094df4c0a599d40a8f294b02aad1d3ddec82f3fd45d4 - languageName: node - linkType: hard - -"decompress-unzip@npm:^4.0.1": - version: 4.0.1 - resolution: "decompress-unzip@npm:4.0.1" - dependencies: - file-type: ^3.8.0 - get-stream: ^2.2.0 - pify: ^2.3.0 - yauzl: ^2.4.2 - checksum: ba9f3204ab2415bedb18d796244928a18148ef40dbb15174d0d01e5991b39536b03d02800a8a389515a1523f8fb13efc7cd44697df758cd06c674879caefd62b - languageName: node - linkType: hard - -"decompress@npm:^4.2.1": - version: 4.2.1 - resolution: "decompress@npm:4.2.1" - dependencies: - decompress-tar: ^4.0.0 - decompress-tarbz2: ^4.0.0 - decompress-targz: ^4.0.0 - decompress-unzip: ^4.0.1 - graceful-fs: ^4.1.10 - make-dir: ^1.0.0 - pify: ^2.3.0 - strip-dirs: ^2.0.0 - checksum: 8247a31c6db7178413715fdfb35a482f019c81dfcd6e8e623d9f0382c9889ce797ce0144de016b256ed03298907a620ce81387cca0e69067a933470081436cb8 - languageName: node - linkType: hard - -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - -"deepmerge@npm:^2.1.1": - version: 2.2.1 - resolution: "deepmerge@npm:2.2.1" - checksum: 284b71065079e66096229f735a9a0222463c9ca9ee9dda7d5e9a0545bf254906dbc7377e3499ca3b2212073672b1a430d80587993b43b87d8de17edc6af649a8 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"default-browser-id@npm:3.0.0": - version: 3.0.0 - resolution: "default-browser-id@npm:3.0.0" - dependencies: - bplist-parser: ^0.2.0 - untildify: ^4.0.0 - checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - -"defu@npm:^6.1.1": - version: 6.1.1 - resolution: "defu@npm:6.1.1" - checksum: 51d05b48297fca6c5a0ac73558f1c6182eca544c9ac7b290692ec7e165d8c5cd20d772c58b0777a8a1186fa25f49c19d28f095982a9e478d33857d46e5fa5e48 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 - languageName: node - linkType: hard - -"detect-indent@npm:^6.1.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d - languageName: node - linkType: hard - -"detect-package-manager@npm:^2.0.1": - version: 2.0.1 - resolution: "detect-package-manager@npm:2.0.1" - dependencies: - execa: ^5.1.1 - checksum: e72b910182d5ad479198d4235be206ac64a479257b32201bb06f3c842cc34c65ea851d46f72cc1d4bf535bcc6c4b44b5b86bb29fe1192b8c9c07b46883672f28 - languageName: node - linkType: hard - -"detect-port@npm:^1.3.0": - version: 1.5.1 - resolution: "detect-port@npm:1.5.1" - dependencies: - address: ^1.0.1 - debug: 4 - bin: - detect: bin/detect-port.js - detect-port: bin/detect-port.js - checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b - languageName: node - linkType: hard - -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.6": - version: 0.5.14 - resolution: "dom-accessibility-api@npm:0.5.14" - checksum: 782c813f75a09ba6735ef03b5e1624406a3829444ae49d5bdedd272a49d437ae3354f53e02ffc8c9fd9165880250f41546538f27461f839dd4ea1234e77e8d5e - languageName: node - linkType: hard - -"dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 - languageName: node - linkType: hard - -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa - languageName: node - linkType: hard - -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: ^2.0.0 - checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 - languageName: node - linkType: hard - -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 8017675b7f254384915d55f9eb6388e577cf0a1231a28d54b0ca03b782be9501b0ac90ac57338636d395fa59051e6209e9b44b8ddf169ce6076dffb5dea227d3 - languageName: node - linkType: hard - -"dotenv@npm:^8.0.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 38e902c80b0666ab59e9310a3d24ed237029a7ce34d976796349765ac96b8d769f6df19090f1f471b77a25ca391971efde8a1ea63bb83111bd8bec8e5cc9b2cd - languageName: node - linkType: hard - -"download@npm:^8.0.0": - version: 8.0.0 - resolution: "download@npm:8.0.0" - dependencies: - archive-type: ^4.0.0 - content-disposition: ^0.5.2 - decompress: ^4.2.1 - ext-name: ^5.0.0 - file-type: ^11.1.0 - filenamify: ^3.0.0 - get-stream: ^4.1.0 - got: ^8.3.1 - make-dir: ^2.1.0 - p-event: ^2.1.0 - pify: ^4.0.1 - checksum: 8a26b21eee8d23352265729dba8eea9f18cba0ebfa3e064041afffeefdfe508fc31e54a08bd0606ff8b0d548466bdb2e2e32b571a8f95227efa5b7c09c261a2f - languageName: node - linkType: hard - -"duplexer3@npm:^0.1.4": - version: 0.1.5 - resolution: "duplexer3@npm:0.1.5" - checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"ejs@npm:^3.1.8": - version: 3.1.8 - resolution: "ejs@npm:3.1.8" - dependencies: - jake: ^10.8.5 - bin: - ejs: bin/cli.js - checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.251": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"endent@npm:^2.0.1": - version: 2.1.0 - resolution: "endent@npm:2.1.0" - dependencies: - dedent: ^0.7.0 - fast-json-parse: ^1.0.3 - objectorarray: ^1.0.5 - checksum: c352831088fce745a39ddbd5f87a17e073ea6556e7e96e9010d945a3f3020f836b9a84657123fa01e897db9216f4b080d950b5ded9bf3a8227f14a34efaaaf7c - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.10.0": - version: 5.12.0 - resolution: "enhanced-resolve@npm:5.12.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: bf3f787facaf4ce3439bef59d148646344e372bef5557f0d37ea8aa02c51f50a925cd1f07b8d338f18992c29f544ec235a8c64bcdb56030196c48832a5494174 - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"error-stack-parser@npm:^2.0.6": - version: 2.1.4 - resolution: "error-stack-parser@npm:2.1.4" - dependencies: - stackframe: ^1.3.4 - checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - 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-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: ^1.0.3 - checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"esbuild-android-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-64@npm:0.14.54" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-arm64@npm:0.14.54" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-64@npm:0.14.54" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-arm64@npm:0.14.54" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-64@npm:0.14.54" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-arm64@npm:0.14.54" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-32@npm:0.14.54" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-64@npm:0.14.54" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm64@npm:0.14.54" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm@npm:0.14.54" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-mips64le@npm:0.14.54" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-ppc64le@npm:0.14.54" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-riscv64@npm:0.14.54" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-s390x@npm:0.14.54" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-netbsd-64@npm:0.14.54" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-openbsd-64@npm:0.14.54" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-plugin-alias@npm:^0.2.1": - version: 0.2.1 - resolution: "esbuild-plugin-alias@npm:0.2.1" - checksum: afe2d2c8b5f09d5321cb8d9c0825e8a9f6e03c2d50df92f953a291d4620cc29eddb3da9e33b238f6d8f77738e0277bdcb831f127399449fecf78fb84c04e5da9 - languageName: node - linkType: hard - -"esbuild-register@npm:^3.3.3": - version: 3.4.1 - resolution: "esbuild-register@npm:3.4.1" - dependencies: - debug: ^4.3.4 - peerDependencies: - esbuild: ">=0.12 <1" - checksum: 02750477b7215101bd2ffa3eae5064026586afd9a5267e94f5b81722c85c8063794c06328e618b5a93d7b0db4138a092417cfc024471b8a3616d212d09e3d868 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-sunos-64@npm:0.14.54" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-32@npm:0.14.54" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-64@npm:0.14.54" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-arm64@npm:0.14.54" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.48": - version: 0.14.54 - resolution: "esbuild@npm:0.14.54" - dependencies: - "@esbuild/linux-loong64": 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dependenciesMeta: - "@esbuild/linux-loong64": - optional: true - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 49e360b1185c797f5ca3a7f5f0a75121494d97ddf691f65ed1796e6257d318f928342a97f559bb8eced6a90cf604dd22db4a30e0dbbf15edd9dbf22459b639af - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-goat@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-goat@npm:4.0.0" - checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - -"eslint-config-next@npm:12.0.8": - version: 12.0.8 - resolution: "eslint-config-next@npm:12.0.8" - dependencies: - "@next/eslint-plugin-next": 12.0.8 - "@rushstack/eslint-patch": ^1.0.8 - "@typescript-eslint/parser": ^5.0.0 - 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.27.0 - eslint-plugin-react-hooks: ^4.3.0 - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - next: ">=10.2.0" - typescript: ">=3.3.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8a038367e56c8b3ad496ee42b2d7ee2f2b5d58ccd7ce0f97f0f874ad9e18f0ba752f560afadd1e5d51ee2ba3048073c4ae9e8a7e8bffcd384eaf934316100208 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.4, eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" - dependencies: - debug: ^3.2.7 - resolve: ^1.20.0 - checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 - languageName: node - linkType: hard - -"eslint-import-resolver-typescript@npm:^2.4.0": - version: 2.7.1 - resolution: "eslint-import-resolver-typescript@npm:2.7.1" - dependencies: - debug: ^4.3.4 - glob: ^7.2.0 - is-glob: ^4.0.3 - resolve: ^1.22.0 - tsconfig-paths: ^3.14.1 - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - checksum: 1d81b657b1f73bf95b8f0b745c0305574b91630c1db340318f3ca8918e206fce20a933b95e7c419338cc4452cb80bb2b2d92acaf01b6aa315c78a332d832545c - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.7.3": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" - dependencies: - debug: ^3.2.7 - peerDependenciesMeta: - eslint: - optional: true - checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.25.2": - version: 2.26.0 - resolution: "eslint-plugin-import@npm:2.26.0" - 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.3 - has: ^1.0.3 - is-core-module: ^2.8.1 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.values: ^1.1.5 - resolve: ^1.22.0 - tsconfig-paths: ^3.14.1 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:^6.5.1": - version: 6.6.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.6.1" - dependencies: - "@babel/runtime": ^7.18.9 - aria-query: ^4.2.2 - array-includes: ^3.1.5 - ast-types-flow: ^0.0.7 - axe-core: ^4.4.3 - axobject-query: ^2.2.0 - damerau-levenshtein: ^1.0.8 - emoji-regex: ^9.2.2 - has: ^1.0.3 - jsx-ast-utils: ^3.3.2 - language-tags: ^1.0.5 - minimatch: ^3.1.2 - semver: ^6.3.0 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: baae7377f0e25a0cc9b34dc333a3dc6ead9ee8365e445451eff554c3ca267a0a6cb88127fe90395c578ab1b92cfed246aef7dc8d2b48b603389e10181799e144 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:^4.3.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 23001801f14c1d16bf0a837ca7970d9dd94e7b560384b41db378b49b6e32dc43d6e2790de1bd737a652a86f81a08d6a91f402525061b47719328f586a57e86c3 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:^7.27.0": - version: 7.31.11 - resolution: "eslint-plugin-react@npm:7.31.11" - dependencies: - array-includes: ^3.1.6 - array.prototype.flatmap: ^1.3.1 - array.prototype.tosorted: ^1.1.1 - 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.6 - object.fromentries: ^2.0.6 - object.hasown: ^1.1.2 - object.values: ^1.1.6 - prop-types: ^15.8.1 - resolve: ^2.0.0-next.3 - semver: ^6.3.0 - string.prototype.matchall: ^4.0.8 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: a3d612f6647bef33cf2a67c81a6b37b42c075300ed079cffecf5fb475c0d6ab855c1de340d1cbf361a0126429fb906dda597527235d2d12c4404453dbc712fc6 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"eslint-scope@npm:^7.1.0": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.2.0, eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 - languageName: node - linkType: hard - -"eslint@npm:8.7.0": - version: 8.7.0 - resolution: "eslint@npm:8.7.0" - dependencies: - "@eslint/eslintrc": ^1.0.5 - "@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.0 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.2.0 - espree: ^9.3.0 - 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 - bin: - eslint: bin/eslint.js - checksum: 1c80375a48b0fe3ccae3c6354323e4f0e92e970f23abc5b9705b90b7aef514b69ebd0a63e74962d30789986c91fa41c0e25cd2f98f19e9e2a2d36aafdfc9ccc9 - languageName: node - linkType: hard - -"espree@npm:^9.3.0, espree@npm:^9.4.0": - version: 9.4.1 - resolution: "espree@npm:9.4.1" - dependencies: - acorn: ^8.8.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.3.0 - checksum: 4d266b0cf81c7dfe69e542c7df0f246e78d29f5b04dda36e514eb4c7af117ee6cfbd3280e560571ed82ff6c9c3f0003c05b82583fc7a94006db7497c4fe4270e - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" - dependencies: - estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"estree-to-babel@npm:^3.1.0": - version: 3.2.1 - resolution: "estree-to-babel@npm:3.2.1" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - c8: ^7.6.0 - checksum: a4584d0c60b80ce41abe91b11052f5d48635e811c67839942c4ebd51aa33d9f9b156ad615f71ceae2a8260b5e3054f36d73db6d0d2a3b9951483f4b6187495c8 - languageName: node - linkType: hard - -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-attach-comments@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - checksum: 8489b977dc420e4af59b03528487b2963d7bfe2d6d265819231dce5a1a5c389109230be102d4b7b85a86ec64f75a7e70b0f306542d56ec557c83f92ec326738a - languageName: node - linkType: hard - -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.0 - resolution: "estree-util-build-jsx@npm:2.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-walker: ^3.0.0 - checksum: 639b76f5395df5234e5424e092c583d656418a07075156947b72e69183c01feeb94946e79002117cd7dff374a25115832ab4af4ad449f1f6cac3594c95006aa5 - languageName: node - linkType: hard - -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.1 - resolution: "estree-util-is-identifier-name@npm:2.0.1" - checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 - languageName: node - linkType: hard - -"estree-util-to-js@npm:^1.1.0": - version: 1.1.0 - resolution: "estree-util-to-js@npm:1.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - astring: ^1.8.0 - source-map: ^0.7.0 - checksum: 3ce2ef2fd78497fa7a0e5250be0f217af9060c819f7ed4f4739285e4ade4ed244536cb88e8ba1e38986af98d3a9064165122bb1622f2c6d57fe7b241b884fc47 - languageName: node - linkType: hard - -"estree-util-visit@npm:^1.0.0": - version: 1.2.0 - resolution: "estree-util-visit@npm:1.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/unist": ^2.0.0 - checksum: d36a36aed82d6cb00d24615889052e22308ff008191b3760f65f93e9d0b06d3bc448af9f99a685947f1c69fba36d9a412da243b0b026096c66ecd74054c3b090 - languageName: node - linkType: hard - -"estree-walker@npm:^3.0.0": - version: 3.0.1 - resolution: "estree-walker@npm:3.0.1" - checksum: 674096950819041f1ee471e63f7aa987f2ed3a3a441cc41a5176e9ed01ea5cfd6487822c3b9c2cddd0e2c8f9d7ef52d32d06147a19b5a9ca9f8ab0c094bd43b9 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"execa@npm:^0.8.0": - version: 0.8.0 - resolution: "execa@npm:0.8.0" - dependencies: - cross-spawn: ^5.0.1 - get-stream: ^3.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: c2a4bf6e051737e46bee61a93ec286cb71a05f16650a1918c8d6262ba9f0bac031472252411baa8c78b7f432f10cb4c601349403774d69be2ebd864e9b1eca60 - languageName: node - linkType: hard - -"execa@npm:^5.0.0, execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - 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 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expect-type@npm:^0.14.2": - version: 0.14.2 - resolution: "expect-type@npm:0.14.2" - checksum: b8dba1f67d6562d203359d5f5e7ee9c2066c091a7bf3c8744858cbe801fb6becab760961fa206ad5bfd2c532b2a01f835f8f1a4f86f2ad8e6881c0930b48aca5 - languageName: node - linkType: hard - -"express@npm:^4.17.1": - version: 4.18.2 - resolution: "express@npm:4.18.2" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.11.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 - languageName: node - linkType: hard - -"ext-list@npm:^2.0.0": - version: 2.2.2 - resolution: "ext-list@npm:2.2.2" - dependencies: - mime-db: ^1.28.0 - checksum: 9b2426bea312e674eeced62c5f18407ab9a8653bbdfbde36492331c7973dab7fbf9e11d6c38605786168b42da333910314988097ca06eee61f1b9b57efae3f18 - languageName: node - linkType: hard - -"ext-name@npm:^5.0.0": - version: 5.0.0 - resolution: "ext-name@npm:5.0.0" - dependencies: - ext-list: ^2.0.0 - sort-keys-length: ^1.0.0 - checksum: f598269bd5de4295540ea7d6f8f6a01d82a7508f148b7700a05628ef6121648d26e6e5e942049e953b3051863df6b54bd8fe951e7877f185e34ace5d44370b33 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - -"extract-zip@npm:^1.6.6": - version: 1.7.0 - resolution: "extract-zip@npm:1.7.0" - dependencies: - concat-stream: ^1.6.2 - debug: ^2.6.9 - mkdirp: ^0.5.4 - yauzl: ^2.10.0 - bin: - extract-zip: cli.js - checksum: 011bab660d738614555773d381a6ba4815d98c1cfcdcdf027e154ebcc9fc8c9ef637b3ea5c9b2144013100071ee41722ed041fc9aacc60f6198ef747cac0c073 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - 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 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-json-parse@npm:^1.0.3": - version: 1.0.3 - resolution: "fast-json-parse@npm:1.0.3" - checksum: c19117c56ec18a9aa133c8ebf450c99d1037117e47a3cb9aff91b60580ba48d0fd8484b696c26749a1b9cb4914084177b3fa9ebef72063a74dee7d9ead987603 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.14.0 - resolution: "fastq@npm:1.14.0" - dependencies: - reusify: ^1.0.4 - checksum: da2c05ec1446ef77b8ba2b76619c90d483404f5087e71e77469fbee797280a1f4ef26a63be15b2377198bc20d09fdf25c7d6e1e492a1e568a29dfdd9bcb7538c - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 - languageName: node - linkType: hard - -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"fetch-retry@npm:^5.0.2": - version: 5.0.3 - resolution: "fetch-retry@npm:5.0.3" - checksum: b4eebc04bd41651417e89ae9287e5b9e5421970ce07058c6e1e22f7d9c1cd5f935fc39a328fd66b433247c0ae1bb8a6b2d48c073d5a9f911992f72c5d311b14d - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 - languageName: node - linkType: hard - -"file-system-cache@npm:^2.0.0": - version: 2.0.1 - resolution: "file-system-cache@npm:2.0.1" - dependencies: - fs-extra: ^10.1.0 - ramda: ^0.28.0 - checksum: fba527d852dd0d90d21da4f53341584532f8c639a52f79479f543576caf464e333f2c076117e516dcc30ed5de136b48461b5336238daafdf11676bb423606e53 - languageName: node - linkType: hard - -"file-type@npm:^11.1.0": - version: 11.1.0 - resolution: "file-type@npm:11.1.0" - checksum: 66c2086867291fda760a245534bec1fbf12817dc6fd3426c2b41f29a37c71bb61f1091505c98f03a446703321cc1d4a8e873ce631f5763fc53178645d9eb3f85 - languageName: node - linkType: hard - -"file-type@npm:^3.8.0": - version: 3.9.0 - resolution: "file-type@npm:3.9.0" - checksum: 1db70b2485ac77c4edb4b8753c1874ee6194123533f43c2651820f96b518f505fa570b093fedd6672eb105ba9fb89c62f84b6492e46788e39c3447aed37afa2d - languageName: node - linkType: hard - -"file-type@npm:^4.2.0": - version: 4.4.0 - resolution: "file-type@npm:4.4.0" - checksum: f3e0b38bef643a330b3d98e3aa9d6f0f32d2d80cb9341f5612187bd53ac84489a4dc66b354bd0cff6b60bff053c7ef21eb8923d62e9f1196ac627b63bd7875ef - languageName: node - linkType: hard - -"file-type@npm:^5.2.0": - version: 5.2.0 - resolution: "file-type@npm:5.2.0" - checksum: b2b21c7fc3cfb3c6a3a18b0d5d7233b74d8c17d82757655766573951daf42962a5c809e5fc3637675b237c558ebc67e4958fb2cc5a4ad407bc545aaa40001c74 - languageName: node - linkType: hard - -"file-type@npm:^6.1.0": - version: 6.2.0 - resolution: "file-type@npm:6.2.0" - checksum: 749540cefcd4959121eb83e373ed84e49b2e5a510aa5d598b725bd772dd306ae41fd00d3162ae3f6563b4db5cfafbbd0df321de3f20c17e20a8c56431ae55e58 - languageName: node - linkType: hard - -"filelist@npm:^1.0.1": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: ^5.0.1 - checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 - languageName: node - linkType: hard - -"filename-reserved-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "filename-reserved-regex@npm:2.0.0" - checksum: 323a0020fd7f243238ffccab9d728cbc5f3a13c84b2c10e01efb09b8324561d7a51776be76f36603c734d4f69145c39a5d12492bf6142a28b50d7f90bd6190bc - languageName: node - linkType: hard - -"filenamify@npm:^3.0.0": - version: 3.0.0 - resolution: "filenamify@npm:3.0.0" - dependencies: - filename-reserved-regex: ^2.0.0 - strip-outer: ^1.0.0 - trim-repeated: ^1.0.0 - checksum: d419eaa1b8c331ab8616e1fffe33e4af135c60b5364320bbe015bc93ded89c6c301363f69593991de18a8f9dd278324c0a0d89fd554c30250306f4c16c956673 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" - dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" - dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 - languageName: node - linkType: hard - -"flatted@npm:^3.1.0": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 - languageName: node - linkType: hard - -"flow-parser@npm:0.*": - version: 0.194.0 - resolution: "flow-parser@npm:0.194.0" - checksum: 8ccd1eca37b6b423d8e24db9b0079c364661d99d69dc4ae1a330437a0f2daeb928ec9fca059413d36274f536f8716343893b6764d40ebb29372e2f2cd17a703b - languageName: node - linkType: hard - -"focus-visible@npm:^5.1.0": - version: 5.2.0 - resolution: "focus-visible@npm:5.2.0" - checksum: 876f646ef453680d3d34e9f9b23961527ffd5ccaed8690f423d4fbfa37ff023d98a490972bc1387850e37ec2e44958c81f6096ef95b67462e5c4b5404cf1dbb9 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - -"foreground-child@npm:^2.0.0": - version: 2.0.0 - resolution: "foreground-child@npm:2.0.0" - dependencies: - cross-spawn: ^7.0.0 - signal-exit: ^3.0.2 - checksum: f77ec9aff621abd6b754cb59e690743e7639328301fbea6ff09df27d2befaf7dd5b77cec51c32323d73a81a7d91caaf9413990d305cbe3d873eec4fe58960956 - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^7.2.8": - version: 7.2.13 - resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 - peerDependencies: - typescript: ">3.6.0" - vue-template-compiler: "*" - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 3d4694c6fee4b8b2f213d0d10a3f40da770ca0ed3aa2a3dc8d1e701ad1ecaed3a1507f77a1b0cea6ef80539b04d8e5f5f02560e688d310bcb9e8c81f684d2950 - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.1.2": - version: 2.1.4 - resolution: "form-data-encoder@npm:2.1.4" - checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"formik@npm:^2.2.9": - version: 2.2.9 - resolution: "formik@npm:2.2.9" - dependencies: - deepmerge: ^2.1.1 - hoist-non-react-statics: ^3.3.0 - lodash: ^4.17.21 - lodash-es: ^4.17.21 - react-fast-compare: ^2.0.1 - tiny-warning: ^1.0.2 - tslib: ^1.10.0 - peerDependencies: - react: ">=16.8.0" - checksum: f07f80eee8423b4c5560546c48c4093c47530dae7d931a4e0d947d68ae1aab94291b1bf2e99ecaa5854ee50593b415fb5724c624c787338f0577f066009e8812 - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"from2@npm:^2.1.1": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: ^2.0.1 - readable-stream: ^2.0.0 - checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b - languageName: node - linkType: hard - -"fs-constants@npm:^1.0.0": - version: 1.0.0 - resolution: "fs-constants@npm:1.0.0" - checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - 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 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-port@npm:^5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 - languageName: node - linkType: hard - -"get-stream@npm:3.0.0, get-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "get-stream@npm:3.0.0" - checksum: 36142f46005ed74ce3a45c55545ec4e7da8e243554179e345a786baf144e5c4a35fb7bdc49fadfa9f18bd08000589b6fe364abdadfc4e1eb0e1b9914a6bb9c56 - languageName: node - linkType: hard - -"get-stream@npm:^2.2.0": - version: 2.3.1 - resolution: "get-stream@npm:2.3.1" - dependencies: - object-assign: ^4.0.1 - pinkie-promise: ^2.0.0 - checksum: d82c86556e131ba7bef00233aa0aa7a51230e6deac11a971ce0f47cd43e2a5e968a3e3914cd082f07cd0d69425653b2f96735b0a7d5c5c03fef3ab857a531367 - languageName: node - linkType: hard - -"get-stream@npm:^4.1.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - -"giget@npm:^1.0.0": - version: 1.0.0 - resolution: "giget@npm:1.0.0" - dependencies: - colorette: ^2.0.19 - defu: ^6.1.1 - https-proxy-agent: ^5.0.1 - mri: ^1.2.0 - node-fetch-native: ^1.0.1 - pathe: ^1.0.0 - tar: ^6.1.12 - bin: - giget: dist/cli.mjs - checksum: adb9a1ed8a2895e9962865ac02d648134c82e17bd149804244322a27a7fc547bf57a0f8d4090d7d5bbce5ceba2914d5db6a94db41489eae92fbef2f1a1c27261 - languageName: node - linkType: hard - -"github-slugger@npm:^1.0.0, github-slugger@npm:^1.3.0": - version: 1.5.0 - resolution: "github-slugger@npm:1.5.0" - checksum: c70988224578b3bdaa25df65973ffc8c24594a77a28550c3636e495e49d17aef5cdb04c04fa3f1744babef98c61eecc6a43299a13ea7f3cc33d680bf9053ffbe - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.1": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 - languageName: node - linkType: hard - -"glob@npm:7.1.7": - version: 7.1.7 - resolution: "glob@npm:7.1.7" - 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 - checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8 - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.1 - resolution: "global-dirs@npm:3.0.1" - dependencies: - ini: 2.0.0 - checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 - languageName: node - linkType: hard - -"global@npm:^4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globals@npm:^13.15.0, globals@npm:^13.6.0": - version: 13.18.0 - resolution: "globals@npm:13.18.0" - dependencies: - type-fest: ^0.20.2 - checksum: 9fdaa74cfd5d4ac91319662f512c29b11d1d2deb9c8a20d3998097671deba83d195f20730b2345887de3ddab958a6fa68952feed9ae836ee4594a82ace62fdb4 - languageName: node - linkType: hard - -"globby@npm:^11.0.2, globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - 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 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 - languageName: node - linkType: hard - -"got@npm:^12.1.0": - version: 12.5.3 - resolution: "got@npm:12.5.3" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - cacheable-lookup: ^7.0.0 - cacheable-request: ^10.2.1 - decompress-response: ^6.0.0 - form-data-encoder: ^2.1.2 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^3.0.0 - checksum: e35ea3ccdb5f2c36d0bb9648a6a87300d017900ce2e647ad95f54a6fb674a82fe7d53b2c838542d15a9fa25290cc5361d6f82cadac3e94b2e91d93b5670cf304 - languageName: node - linkType: hard - -"got@npm:^8.3.1": - version: 8.3.2 - resolution: "got@npm:8.3.2" - dependencies: - "@sindresorhus/is": ^0.7.0 - cacheable-request: ^2.1.1 - decompress-response: ^3.3.0 - duplexer3: ^0.1.4 - get-stream: ^3.0.0 - into-stream: ^3.1.0 - is-retry-allowed: ^1.1.0 - isurl: ^1.0.0-alpha5 - lowercase-keys: ^1.0.0 - mimic-response: ^1.0.0 - p-cancelable: ^0.4.0 - p-timeout: ^2.0.1 - pify: ^3.0.0 - safe-buffer: ^5.1.1 - timed-out: ^4.0.1 - url-parse-lax: ^3.0.0 - url-to-options: ^1.0.1 - checksum: ab05bfcb6de86dc0c3fba8d25cc51cb2b09851ff3f6f899c86cde8c63b30269f8823d69dbbc6d03f7c58bb069f55a3c5f60aba74aad6721938652d8f35fd3165 - languageName: node - linkType: hard - -"graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 - languageName: node - linkType: hard - -"gray-matter@npm:^4.0.3": - version: 4.0.3 - resolution: "gray-matter@npm:4.0.3" - dependencies: - js-yaml: ^3.13.1 - kind-of: ^6.0.2 - section-matter: ^1.0.0 - strip-bom-string: ^1.0.0 - checksum: 37717bd424344487d655392251ce8d8878a1275ee087003e61208fba3bfd59cbb73a85b2159abf742ae95e23db04964813fdc33ae18b074208428b2528205222 - languageName: node - linkType: hard - -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^2.0.0": - version: 2.0.0 - resolution: "has-flag@npm:2.0.0" - checksum: 7d060d142ef6740c79991cb99afe5962b267e6e95538bf8b607026b9b1e7451288927bc8e7b4a9484a8b99935c0af023070f91ee49faef791ecd401dc58b2e8d - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbol-support-x@npm:^1.4.1": - version: 1.4.2 - resolution: "has-symbol-support-x@npm:1.4.2" - checksum: ff06631d556d897424c00e8e79c10093ad34c93e88bb0563932d7837f148a4c90a4377abc5d8da000cb6637c0ecdb4acc9ae836c7cfd0ffc919986db32097609 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-to-string-tag-x@npm:^1.2.0": - version: 1.4.1 - resolution: "has-to-string-tag-x@npm:1.4.1" - dependencies: - has-symbol-support-x: ^1.4.1 - checksum: 804c4505727be7770f8b2f5e727ce31c9affc5b83df4ce12344f44b68d557fefb31f77751dbd739de900653126bcd71f8842fac06f97a3fae5422685ab0ce6f0 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - -"has-yarn@npm:^3.0.0": - version: 3.0.0 - resolution: "has-yarn@npm:3.0.0" - checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hast-util-to-estree@npm:^2.0.0": - version: 2.1.0 - resolution: "hast-util-to-estree@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - comma-separated-tokens: ^2.0.0 - estree-util-attach-comments: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - hast-util-whitespace: ^2.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 - unist-util-position: ^4.0.0 - zwitch: ^2.0.0 - checksum: 1e14cfbfd57ff00ffda48cfef23bcebb6ebbea0385bb03d748a9432591c60f0a69428baaba82375a8cdbc924217ba9e75d30820b3641fdbe12ae62aa6c3f90a7 - languageName: node - linkType: hard - -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "hast-util-whitespace@npm:2.0.0" - checksum: abeb5386075bfb0facfce89eed0e13d2cb27a0910cec8fd234b48821a1538387a73fa7f458842e8c404148dc69434acbc10488d75b02817e460652c2c894c024 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.3.0": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: ^16.7.0 - checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 - languageName: node - linkType: hard - -"html-tags@npm:^3.1.0": - version: 3.2.0 - resolution: "html-tags@npm:3.2.0" - checksum: a0c9e96ac26c84adad9cc66d15d6711a17f60acda8d987218f1d4cbaacd52864939b230e635cce5a1179f3ddab2a12b9231355617dfbae7945fcfec5e96d2041 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" - dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - webpack: ^5.20.0 - checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 - languageName: node - linkType: hard - -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - domutils: ^2.5.2 - entities: ^2.0.0 - checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e - languageName: node - linkType: hard - -"http-cache-semantics@npm:3.8.1": - version: 3.8.1 - resolution: "http-cache-semantics@npm:3.8.1" - checksum: b1108d37be478fa9b03890d4185217aac2256e9d2247ce6c6bd90bc5432687d68dc7710ba908cea6166fb983a849d902195241626cf175a3c62817a494c0f7f6 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 - languageName: node - linkType: hard - -"http2-wrapper@npm:^2.1.10": - version: 2.2.0 - resolution: "http2-wrapper@npm:2.2.0" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa - languageName: node - linkType: hard - -"https-proxy-agent@npm:^4.0.0": - version: 4.0.0 - resolution: "https-proxy-agent@npm:4.0.0" - dependencies: - agent-base: 5 - debug: 4 - checksum: 19471d5aae3e747b1c98b17556647e2a1362e68220c6b19585a8527498f32e62e03c41d2872d059d8720d56846bd7460a80ac06f876bccfa786468ff40dd5eef - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"ignore@npm:^5.2.0": - version: 5.2.1 - resolution: "ignore@npm:5.2.1" - checksum: 7251d00cba49fe88c4f3565fadeb4aa726ba38294a9a79ffed542edc47bafd989d4b2ccf65700c5b1b26a1e91dfc7218fb23017937c79216025d5caeec0ee9d5 - languageName: node - linkType: hard - -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-lazy@npm:^4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - -"intersection-observer@npm:^0.12.0": - version: 0.12.2 - resolution: "intersection-observer@npm:0.12.2" - checksum: d1fa9ebbb1e0baafe88ad95545bbb93f92bdcb8789912a2bd11b2463ab177ef185052c9c79c26187833d633f404acb077d4b1249353c5f6e2ca5cd64f50e216b - languageName: node - linkType: hard - -"into-stream@npm:^3.1.0": - version: 3.1.0 - resolution: "into-stream@npm:3.1.0" - dependencies: - from2: ^2.1.1 - p-is-promise: ^1.1.0 - checksum: e6e1a202227b20c446c251ef95348b3e8503cdc75aa2a09076f8821fc42c1b7fd43fabaeb8ed3cf9eb875942cfa4510b66949c5317997aa640921cc9bbadcd17 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.0": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - -"is-alphabetical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphabetical@npm:1.0.4" - checksum: 6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb - languageName: node - linkType: hard - -"is-alphabetical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1" - checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa - languageName: node - linkType: hard - -"is-alphanumerical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphanumerical@npm:1.0.4" - dependencies: - is-alphabetical: ^1.0.0 - is-decimal: ^1.0.0 - checksum: e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f - languageName: node - linkType: hard - -"is-alphanumerical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1" - dependencies: - is-alphabetical: ^2.0.0 - is-decimal: ^2.0.0 - checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: ^3.2.0 - bin: - is-ci: bin.js - checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-decimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-decimal@npm:1.0.4" - checksum: ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96 - languageName: node - linkType: hard - -"is-decimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-decimal@npm:2.0.1" - checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-hexadecimal@npm:1.0.4" - checksum: a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1" - checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: ^3.0.0 - is-path-inside: ^3.0.2 - checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-natural-number@npm:^4.0.1": - version: 4.0.1 - resolution: "is-natural-number@npm:4.0.1" - checksum: 3e5e3d52e0dfa4fea923b5d2b8a5cdbd9bf110c4598d30304b98528b02f40c9058a2abf1bae10bcbaf2bac18ace41cff7bc9673aff339f8c8297fae74ae0e75d - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-npm@npm:^6.0.0": - version: 6.0.0 - resolution: "is-npm@npm:6.0.0" - checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-object@npm:1.0.2" - checksum: 971219c4b1985b9751f65e4c8296d3104f0457b0e8a70849e848a4a2208bc47317d73b3b85d4a369619cb2df8284dc22584cb2695a7d99aca5e8d0aa64fc075a - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:^1.0.0": - version: 1.1.0 - resolution: "is-plain-obj@npm:1.1.0" - checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.0.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce - languageName: node - linkType: hard - -"is-plain-object@npm:5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-reference@npm:^3.0.0": - version: 3.0.0 - resolution: "is-reference@npm:3.0.0" - dependencies: - "@types/estree": "*" - checksum: 408bb3442ff5f90a9740bf578e8fa2863f68bc07ee99b92079a358a34af58341dc7014b054e8cc51a3da5d1ab83f635b6ee1ce2982db7899a128d7a05173898f - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-retry-allowed@npm:^1.1.0": - version: 1.2.0 - resolution: "is-retry-allowed@npm:1.2.0" - checksum: 50d700a89ae31926b1c91b3eb0104dbceeac8790d8b80d02f5c76d9a75c2056f1bb24b5268a8a018dead606bddf116b2262e5ac07401eb8b8783b266ed22558d - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.4.0": - version: 0.4.1 - resolution: "is-yarn-global@npm:0.4.1" - checksum: 79ec4e6f581c53d4fefdf5f6c237f9a3ad8db29c85cdc4659e76ae345659317552052a97b7e56952aa5d94a23c798ebec8ccad72fb14d3b26dc647ddceddd716 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" - dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 - supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.4": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" - dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 - languageName: node - linkType: hard - -"isurl@npm:^1.0.0-alpha5": - version: 1.0.0 - resolution: "isurl@npm:1.0.0" - dependencies: - has-to-string-tag-x: ^1.2.0 - is-object: ^1.0.1 - checksum: 28a96e019269d57015fa5869f19dda5a3ed1f7b21e3e0c4ff695419bd0541547db352aa32ee4a3659e811a177b0e37a5bc1a036731e71939dd16b59808ab92bd - languageName: node - linkType: hard - -"jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" - dependencies: - async: ^3.2.3 - chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 - bin: - jake: ./bin/cli.js - checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.3.1": - version: 29.3.1 - resolution: "jest-haste-map@npm:29.3.1" - dependencies: - "@jest/types": ^29.3.1 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.2.0 - jest-util: ^29.3.1 - jest-worker: ^29.3.1 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: 97ea26af0c28a2ba568c9c65d06211487bbcd501cb4944f9d55e07fd2b00ad96653ea2cc9033f3d5b7dc1feda33e47ae9cc56b400191ea4533be213c9f82e67c - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.2.0": - version: 29.2.0 - resolution: "jest-regex-util@npm:29.2.0" - checksum: 7c533e51c51230dac20c0d7395b19b8366cb022f7c6e08e6bcf2921626840ff90424af4c9b4689f02f0addfc9b071c4cd5f8f7a989298a4c8e0f9c94418ca1c3 - languageName: node - linkType: hard - -"jest-util@npm:^29.3.1": - version: 29.3.1 - resolution: "jest-util@npm:29.3.1" - dependencies: - "@jest/types": ^29.3.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: f67c60f062b94d21cb60e84b3b812d64b7bfa81fe980151de5c17a74eb666042d0134e2e756d099b7606a1fcf1d633824d2e58197d01d76dde1e2dc00dfcd413 - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 - languageName: node - linkType: hard - -"jest-worker@npm:^29.3.1": - version: 29.3.1 - resolution: "jest-worker@npm:29.3.1" - dependencies: - "@types/node": "*" - jest-util: ^29.3.1 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 38687fcbdc2b7ddc70bbb5dfc703ae095b46b3c7f206d62ecdf5f4d16e336178e217302138f3b906125576bb1cfe4cfe8d43681276fa5899d138ed9422099fb3 - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a - languageName: node - linkType: hard - -"jscodeshift@npm:^0.13.1": - version: 0.13.1 - resolution: "jscodeshift@npm:0.13.1" - dependencies: - "@babel/core": ^7.13.16 - "@babel/parser": ^7.13.16 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/preset-flow": ^7.13.13 - "@babel/preset-typescript": ^7.13.0 - "@babel/register": ^7.13.16 - babel-core: ^7.0.0-bridge.0 - chalk: ^4.1.2 - flow-parser: 0.* - graceful-fs: ^4.2.4 - micromatch: ^3.1.10 - neo-async: ^2.5.0 - node-dir: ^0.1.17 - recast: ^0.20.4 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 - peerDependencies: - "@babel/preset-env": ^7.1.6 - bin: - jscodeshift: bin/jscodeshift.js - checksum: 1c35938de5fc29cafec80e2c37d5c3411f85cd5d40e0243b52f2da0c1ab4b659daddfd62de558eca5d562303616f7838097727b651f4ad8e32b1e96f169cdd76 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.0": - version: 3.0.0 - resolution: "json-buffer@npm:3.0.0" - checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 - languageName: node - linkType: hard - -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - -"json5@npm:^2.1.2, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" - bin: - json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.2": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" - dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 - languageName: node - linkType: hard - -"keyv@npm:3.0.0": - version: 3.0.0 - resolution: "keyv@npm:3.0.0" - dependencies: - json-buffer: 3.0.0 - checksum: 5182775e546cdbb88dc583825bc0e990164709f31904a219e3321b3bf564a301ac4e5255ba95f7fba466548eba793b356a04a0242110173b199a37192b3b565f - languageName: node - linkType: hard - -"keyv@npm:^4.5.2": - version: 4.5.2 - resolution: "keyv@npm:4.5.2" - dependencies: - json-buffer: 3.0.1 - checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - -"language-subtag-registry@npm:^0.3.20": - version: 0.3.22 - resolution: "language-subtag-registry@npm:0.3.22" - checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a - languageName: node - linkType: hard - -"language-tags@npm:^1.0.5": - version: 1.0.6 - resolution: "language-tags@npm:1.0.6" - dependencies: - language-subtag-registry: ^0.3.20 - checksum: dc2927f7ce8f108ffd1d02ae0284b78ff6b4e03e631642794fa79d554d77b653f3f64cd1fb83acc9f3746ef7c18d43241b97feb712c05cc26e25aacd68f7a006 - languageName: node - linkType: hard - -"latest-version@npm:^7.0.0": - version: 7.0.0 - resolution: "latest-version@npm:7.0.0" - dependencies: - package-json: ^8.1.0 - checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 - languageName: node - linkType: hard - -"lazy-universal-dotenv@npm:^3.0.1": - version: 3.0.1 - resolution: "lazy-universal-dotenv@npm:3.0.1" - dependencies: - "@babel/runtime": ^7.5.0 - app-root-dir: ^1.0.2 - core-js: ^3.0.4 - dotenv: ^8.0.0 - dotenv-expand: ^5.1.0 - checksum: a80509d8cb40dafcfab5859335920754a21814320aa16115e58c0ae5ef3b1d8bd4daa96349ea548e2833f2f89269ddbb103ebd55be06cfdba00e0af6785b5ba7 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: ^1.2.1 - type-check: ~0.4.0 - checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": - version: 2.0.4 - resolution: "loader-utils@npm:2.0.4" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash-es@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash-es@npm:4.17.21" - checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"longest-streak@npm:^2.0.0": - version: 2.0.4 - resolution: "longest-streak@npm:2.0.4" - checksum: 28b8234a14963002c5c71035dee13a0a11e9e9d18ffa320fdc8796ed7437399204495702ed69cd2a7087b0af041a2a8b562829b7c1e2042e73a3374d1ecf6580 - languageName: node - linkType: hard - -"longest-streak@npm:^3.0.0": - version: 3.1.0 - resolution: "longest-streak@npm:3.1.0" - checksum: d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lowercase-keys@npm:1.0.0": - version: 1.0.0 - resolution: "lowercase-keys@npm:1.0.0" - checksum: 2370110c149967038fd5eb278f9b2d889eb427487c0e7fb417ab2ef4d93bacba1c8f226cf2ef1c2848b3191f37d84167d4342fbee72a1a122086680adecf362b - languageName: node - linkType: hard - -"lowercase-keys@npm:^1.0.0": - version: 1.0.1 - resolution: "lowercase-keys@npm:1.0.1" - checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - -"lru-cache@npm:^4.0.1": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: ^1.0.2 - yallist: ^2.1.2 - checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.14.1 - resolution: "lru-cache@npm:7.14.1" - checksum: d72c6713c6a6d86836a7a6523b3f1ac6764768cca47ec99341c3e76db06aacd4764620e5e2cda719a36848785a52a70e531822dc2b33fb071fa709683746c104 - languageName: node - linkType: hard - -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" - bin: - lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 - languageName: node - linkType: hard - -"make-dir@npm:^1.0.0": - version: 1.3.0 - resolution: "make-dir@npm:1.3.0" - dependencies: - pify: ^3.0.0 - checksum: c564f6e7bb5ace1c02ad56b3a5f5e07d074af0c0b693c55c7b2c2b148882827c8c2afc7b57e43338a9f90c125b58d604e8cf3e6990a48bf949dfea8c79668c0b - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 8a6dd128be1c524049ea6a41a9193715c2835d3d706af4b8b714ff2043a82786dbcd4a8f1fa9ddd28facbc444426c97515aef2d1f3dd11d5e2d63749ba577b1e - languageName: node - linkType: hard - -"markdown-table@npm:^2.0.0": - version: 2.0.0 - resolution: "markdown-table@npm:2.0.0" - dependencies: - repeat-string: ^1.0.0 - checksum: 9bb634a9300016cbb41216c1eab44c74b6b7083ac07872e296f900a29449cf0e260ece03fa10c3e9784ab94c61664d1d147da0315f95e1336e2bdcc025615c90 - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.3": - version: 7.1.7 - resolution: "markdown-to-jsx@npm:7.1.7" - peerDependencies: - react: ">= 0.14.0" - checksum: b2c0ea7d0988fad0c709989b3b1b3a5600d1e80b60266f9618386f7afead4a6b5eba9ee1a3943df6a3dcb1599ea89e58467d1b17b6dd3af3c60984c60a85d06d - languageName: node - linkType: hard - -"match-sorter@npm:^4.2.0": - version: 4.2.1 - resolution: "match-sorter@npm:4.2.1" - dependencies: - "@babel/runtime": ^7.10.5 - remove-accents: 0.4.2 - checksum: 7f3cd8f84cdb4567b7a81f66a095e418044f318f41b6c8a1640730c99e370af9e5054f5a1ed2dfa1287a23101d75a105da63e4d95e8ac2f7061a8f8b32367c7d - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-util-definitions@npm:4.0.0" - dependencies: - unist-util-visit: ^2.0.0 - checksum: 2325f20b82b3fb8cb5fda77038ee0bbdd44f82cfca7c48a854724b58bc1fe5919630a3ce7c45e210726df59d46c881d020b2da7a493bfd1ee36eb2bbfef5d78e - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.1 - resolution: "mdast-util-definitions@npm:5.1.1" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 - languageName: node - linkType: hard - -"mdast-util-find-and-replace@npm:^1.1.0": - version: 1.1.1 - resolution: "mdast-util-find-and-replace@npm:1.1.1" - dependencies: - escape-string-regexp: ^4.0.0 - unist-util-is: ^4.0.0 - unist-util-visit-parents: ^3.0.0 - checksum: e4c9e50d9bce5ae4c728a925bd60080b94d16aaa312c27e2b70b16ddc29a5d0a0844d6e18efaef08aeb22c68303ec528f20183d1b0420504a0c2c1710cebd76f - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^0.8.0": - version: 0.8.5 - resolution: "mdast-util-from-markdown@npm:0.8.5" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-to-string: ^2.0.0 - micromark: ~2.11.0 - parse-entities: ^2.0.0 - unist-util-stringify-position: ^2.0.0 - checksum: 5a9d0d753a42db763761e874c22365d0c7c9934a5a18b5ff76a0643610108a208a041ffdb2f3d3dd1863d3d915225a4020a0aade282af0facfd0df110601eee6 - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-from-markdown@npm:1.2.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40 - languageName: node - linkType: hard - -"mdast-util-gfm-autolink-literal@npm:^0.1.0": - version: 0.1.3 - resolution: "mdast-util-gfm-autolink-literal@npm:0.1.3" - dependencies: - ccount: ^1.0.0 - mdast-util-find-and-replace: ^1.1.0 - micromark: ^2.11.3 - checksum: 9f7b888678631fd8c0a522b0689a750aead2b05d57361dbdf02c10381557f1ce874f746226141f3ace1e0e7952495e8d5ce8f9af423a7a66bb300d4635a918eb - languageName: node - linkType: hard - -"mdast-util-gfm-strikethrough@npm:^0.2.0": - version: 0.2.3 - resolution: "mdast-util-gfm-strikethrough@npm:0.2.3" - dependencies: - mdast-util-to-markdown: ^0.6.0 - checksum: 51aa11ca8f1a5745f1eb9ccddb0eca797b3ede6f0c7bf355d594ad57c02c98d95260f00b1c4b07504018e0b22708531eabb76037841f09ce8465444706a06522 - languageName: node - linkType: hard - -"mdast-util-gfm-table@npm:^0.1.0": - version: 0.1.6 - resolution: "mdast-util-gfm-table@npm:0.1.6" - dependencies: - markdown-table: ^2.0.0 - mdast-util-to-markdown: ~0.6.0 - checksum: eeb43faf833753315b4ccf8d7bc8a6845b31562b2d2dd12a92aa40f9cee1b1954643c7515399a98f9b2e143c95cf6b5c0aac5941a4f609d6a57335587cee99ac - languageName: node - linkType: hard - -"mdast-util-gfm-task-list-item@npm:^0.1.0": - version: 0.1.6 - resolution: "mdast-util-gfm-task-list-item@npm:0.1.6" - dependencies: - mdast-util-to-markdown: ~0.6.0 - checksum: c10480c0ae86547980b38b49fba2ecd36a50bf1f3478d3f12810a0d8e8f821585c2bd7d805dd735518e84493b5eef314afdb8d59807021e2d9aa22d077eb7588 - languageName: node - linkType: hard - -"mdast-util-gfm@npm:^0.1.0": - version: 0.1.2 - resolution: "mdast-util-gfm@npm:0.1.2" - dependencies: - mdast-util-gfm-autolink-literal: ^0.1.0 - mdast-util-gfm-strikethrough: ^0.2.0 - mdast-util-gfm-table: ^0.1.0 - mdast-util-gfm-task-list-item: ^0.1.0 - mdast-util-to-markdown: ^0.6.1 - checksum: 368ed535b2c2e0f33d0225a9e9c985468bf4825a06896815369aea585f6defaccb555ac40ba911e02c8e8c47e79f7efb4348de532de50bca2638a1e568f2d3c9 - languageName: node - linkType: hard - -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdx-expression@npm:1.3.1" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 456d59a616a274416f5b02bce64bf5245c4b7247927b4539f4db35bec5674352580fb91f51ed11f1a769d17330c44eec7ca481faf81ee839c2efe71309195225 - languageName: node - linkType: hard - -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-mdx-jsx@npm:2.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - ccount: ^2.0.0 - mdast-util-to-markdown: ^1.3.0 - parse-entities: ^4.0.0 - stringify-entities: ^4.0.0 - unist-util-remove-position: ^4.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 40520a299449e4074ff1097789c7372220c9751e0de151566dcc133118d748c2231e29bafcbbf2c3beb3a917a85cfbbaa9195dadfb4122603bad479f93a61dbe - languageName: node - linkType: hard - -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx@npm:2.0.0" - dependencies: - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdx-jsx: ^2.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - checksum: 4744bfbbd337c2a99a3ef339673c549a670d6496e0d3a6d747d2451e112d6fef7d27613549b0bd62a5f92ea7919e3bacd78c731e8a3d80552a09b80896554cf6 - languageName: node - linkType: hard - -"mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-mdxjs-esm@npm:1.3.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: df3902eb884b4f83cebbfe33647f51938b36db54d4539afd884dc83ff43052676cd48df4c382dc986335290f5c691576d1a848da8ffb671b69ade29fe1c317e0 - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:^12.1.0": - version: 12.2.4 - resolution: "mdast-util-to-hast@npm:12.2.4" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 - trim-lines: ^3.0.0 - unist-builder: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: c9a1c31527590a11ec7a637ae46a8f52b05b457523e9be9c4ca8bcc1efb3eac5ed1575353e97a70fffcf61e40c80d649bee28058fa1509bc1c213eacfa73bc5f - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^0.6.0, mdast-util-to-markdown@npm:^0.6.1, mdast-util-to-markdown@npm:~0.6.0": - version: 0.6.5 - resolution: "mdast-util-to-markdown@npm:0.6.5" - dependencies: - "@types/unist": ^2.0.0 - longest-streak: ^2.0.0 - mdast-util-to-string: ^2.0.0 - parse-entities: ^2.0.0 - repeat-string: ^1.0.0 - zwitch: ^1.0.0 - checksum: 7ebc47533bff6e8669f85ae124dc521ea570e9df41c0d9e4f0f43c19ef4a8c9928d741f3e4afa62fcca1927479b714582ff5fd684ef240d84ee5b75ab9d863cf - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": - version: 1.3.0 - resolution: "mdast-util-to-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - longest-streak: ^3.0.0 - mdast-util-to-string: ^3.0.0 - micromark-util-decode-string: ^1.0.0 - unist-util-visit: ^4.0.0 - zwitch: ^2.0.0 - checksum: 0ea4fc11b7a49b15d400d50044429c45222cb9bc583553288c7c54704d051f25049233817129ba56a6f581f1e20916e5c540870a80987318747a95b44a36ba3e - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^1.0.0": - version: 1.1.0 - resolution: "mdast-util-to-string@npm:1.1.0" - checksum: eec1eb283f3341376c8398b67ce512a11ab3e3191e3dbd5644d32a26784eac8d5f6d0b0fb81193af00d75a2c545cde765c8b03e966bd890076efb5d357fb4fe2 - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-to-string@npm:2.0.0" - checksum: 0b2113ada10e002fbccb014170506dabe2f2ddacaacbe4bc1045c33f986652c5a162732a2c057c5335cdb58419e2ad23e368e5be226855d4d4e280b81c4e9ec2 - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.1.0 - resolution: "mdast-util-to-string@npm:3.1.0" - checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"memfs@npm:^3.4.1, memfs@npm:^3.4.3": - version: 3.4.12 - resolution: "memfs@npm:3.4.12" - dependencies: - fs-monkey: ^1.0.3 - checksum: dab8dec1ae0b2a92e4d563ac86846047cd7aeb17cde4ad51da85cff6e580c32d12b886354527788e36eb75f733dd8edbaf174476b7cea73fed9c5a0e45a6b428 - languageName: node - linkType: hard - -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: ^1.5.0 - checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - -"micromark-extension-gfm-autolink-literal@npm:~0.5.0": - version: 0.5.7 - resolution: "micromark-extension-gfm-autolink-literal@npm:0.5.7" - dependencies: - micromark: ~2.11.3 - checksum: 319ec793c2e374e4cc0cbbb07326c1affb78819e507c7c1577f9d14b972852a6bb55e664332ec51f7cca24bdddd43429c5dd55f11e9200b1a00bab1bf494fb2d - languageName: node - linkType: hard - -"micromark-extension-gfm-strikethrough@npm:~0.6.5": - version: 0.6.5 - resolution: "micromark-extension-gfm-strikethrough@npm:0.6.5" - dependencies: - micromark: ~2.11.0 - checksum: 67711633590d3e688759a46aaed9f9d04bcaf29b6615eec17af082eabe1059fbca4beb41ba13db418ae7be3ac90198742fbabe519a70f9b6bb615598c5d6ef1a - languageName: node - linkType: hard - -"micromark-extension-gfm-table@npm:~0.4.0": - version: 0.4.3 - resolution: "micromark-extension-gfm-table@npm:0.4.3" - dependencies: - micromark: ~2.11.0 - checksum: 12c78de985944dd66aae409871c45d801cc65704f55ea5cc8afac422042c6d3b5e777b154c079ae81298b30b83434b257b54981bda51c220a102042dd2524a63 - languageName: node - linkType: hard - -"micromark-extension-gfm-tagfilter@npm:~0.3.0": - version: 0.3.0 - resolution: "micromark-extension-gfm-tagfilter@npm:0.3.0" - checksum: 9369736a203836b2933dfdeacab863e7a4976139b9dd46fa5bd6c2feeef50c7dbbcdd641ae95f0481f577d8aa22396bfa7ed9c38515647d4cf3f2c727cc094a3 - languageName: node - linkType: hard - -"micromark-extension-gfm-task-list-item@npm:~0.3.0": - version: 0.3.3 - resolution: "micromark-extension-gfm-task-list-item@npm:0.3.3" - dependencies: - micromark: ~2.11.0 - checksum: e4ccbe6b440234c8ee05d89315e1204c78773724241af31ac328194470a8a61bc6606eab3ce2d9a83da4401b06e07936038654493da715d40522133d1556dda4 - languageName: node - linkType: hard - -"micromark-extension-gfm@npm:^0.3.0": - version: 0.3.3 - resolution: "micromark-extension-gfm@npm:0.3.3" - dependencies: - micromark: ~2.11.0 - micromark-extension-gfm-autolink-literal: ~0.5.0 - micromark-extension-gfm-strikethrough: ~0.6.5 - micromark-extension-gfm-table: ~0.4.0 - micromark-extension-gfm-tagfilter: ~0.3.0 - micromark-extension-gfm-task-list-item: ~0.3.0 - checksum: 7957a1afd8c92daa0fc165342902729334b22d59feacd85b20a0d9cc453c90bbdd5b5ba85a3d177c01802060aeb3326daf05d3e6d95932fcbc8371827c98336e - languageName: node - linkType: hard - -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-expression@npm:1.0.3" - dependencies: - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: ef4b4137894624a6754b951d3cb7abb20951ca7b37f9ad8a50d2e2b95d0cf880258d71296bfac6be4ff83a8d137b6b657ae852bb6f11f4ca11e5e6d62f1b025d - languageName: node - linkType: hard - -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" - dependencies: - "@types/acorn": ^4.0.0 - estree-util-is-identifier-name: ^2.0.0 - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 1a5566890aabc52fe96b78e3a3a507dee03a2232e44b9360b00617734e156f934e85bc6a477fbb856c793fe33c9fb7d2207a4f50e680168c0d04ba9c9336d960 - languageName: node - linkType: hard - -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: b4f205e1d5f0946b4755541ef44ffd0b3be8c7ecfc08d8b139b6a21fbd3ff62d8fdb6b7e6d17bd9a3b610450267f43a41703dc48b341da9addd743a28cdefa64 - languageName: node - linkType: hard - -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" - dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.1.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 756074656391a5e5bb96bc8a0e9c1df7d9f7be5299847c9719e6a90552e1c76a11876aa89986ad5da89ab485f776a4a43a61ea3acddd4f865a5cee43ac523ffd - languageName: node - linkType: hard - -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" - dependencies: - acorn: ^8.0.0 - acorn-jsx: ^5.0.0 - micromark-extension-mdx-expression: ^1.0.0 - micromark-extension-mdx-jsx: ^1.0.0 - micromark-extension-mdx-md: ^1.0.0 - micromark-extension-mdxjs-esm: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: ba836c6d2dfc67597886e88f533ffa02f2029dbe216a0651f1066e70f8529a700bcc7fa2bc4201ee12fd3d1cd7da7093d5a442442daeb84b27df96aaffb7699c - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 - languageName: node - linkType: hard - -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.6 - resolution: "micromark-factory-mdx-expression@npm:1.0.6" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 7b69f0e77664e9820639cf23c4f01d43aa0e7abd88021c3db428435e3a5a1f9446f8dc5c2a6ed4ac16c6495ca51937609a5c98ff59a62c54be382c2725500b39 - languageName: node - linkType: hard - -"micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 - languageName: node - linkType: hard - -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - -"micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" - dependencies: - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f - languageName: node - linkType: hard - -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-events-to-acorn@npm:1.2.0" - dependencies: - "@types/acorn": ^4.0.0 - "@types/estree": ^1.0.0 - estree-util-visit: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-location: ^4.0.0 - vfile-message: ^3.0.0 - checksum: 422285d68c8e8a57042bf31eefa55a136eec5c1fb021278a7c25d60a000c4e3ddaf140c94065a270499281f79ff59999468b850a461f22b5731fc47eccb2c4c2 - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c - languageName: node - linkType: hard - -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - -"micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d - languageName: node - linkType: hard - -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df - languageName: node - linkType: hard - -"micromark@npm:^2.11.3, micromark@npm:~2.11.0, micromark@npm:~2.11.3": - version: 2.11.4 - resolution: "micromark@npm:2.11.4" - dependencies: - debug: ^4.0.0 - parse-entities: ^2.0.0 - checksum: f8a5477d394908a5d770227aea71657a76423d420227c67ea0699e659a5f62eb39d504c1f7d69ec525a6af5aaeb6a7bffcdba95614968c03d41d3851edecb0d6 - languageName: node - linkType: hard - -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - -"micromatch@npm:^3.1.10": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.28.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - -"mime@npm:^2.0.3": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"mimic-response@npm:^1.0.0": - version: 1.0.1 - resolution: "mimic-response@npm:1.0.1" - checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1": - version: 5.1.1 - resolution: "minimatch@npm:5.1.1" - dependencies: - brace-expansion: ^2.0.1 - checksum: 215edd0978320a3354188f84a537d45841f2449af4df4379f79b9b777e71aa4f5722cc9d1717eabd2a70d38ef76ab7b708d24d83ea6a6c909dfd8833de98b437 - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.4": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"mri@npm:^1.1.0, mri@npm:^1.2.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"next-themes@npm:^0.0.8": - version: 0.0.8 - resolution: "next-themes@npm:0.0.8" - peerDependencies: - next: ^9.5.5 - react: ^16.13.1 - react-dom: ^16.13.1 - checksum: 0764d2594f81019fa7d121fa0cea47fcd4e027efe8b341c8a54127bde80795f712dab4058ee45be64e5d070725920f91b64ece0f63680130c5e5555efe6eb9bf - languageName: node - linkType: hard - -"next@npm:^12.1.0": - version: 12.3.4 - resolution: "next@npm:12.3.4" - dependencies: - "@next/env": 12.3.4 - "@next/swc-android-arm-eabi": 12.3.4 - "@next/swc-android-arm64": 12.3.4 - "@next/swc-darwin-arm64": 12.3.4 - "@next/swc-darwin-x64": 12.3.4 - "@next/swc-freebsd-x64": 12.3.4 - "@next/swc-linux-arm-gnueabihf": 12.3.4 - "@next/swc-linux-arm64-gnu": 12.3.4 - "@next/swc-linux-arm64-musl": 12.3.4 - "@next/swc-linux-x64-gnu": 12.3.4 - "@next/swc-linux-x64-musl": 12.3.4 - "@next/swc-win32-arm64-msvc": 12.3.4 - "@next/swc-win32-ia32-msvc": 12.3.4 - "@next/swc-win32-x64-msvc": 12.3.4 - "@swc/helpers": 0.4.11 - caniuse-lite: ^1.0.30001406 - postcss: 8.4.14 - styled-jsx: 5.0.7 - use-sync-external-store: 1.2.0 - peerDependencies: - fibers: ">= 3.1.0" - node-sass: ^6.0.0 || ^7.0.0 - react: ^17.0.2 || ^18.0.0-0 - react-dom: ^17.0.2 || ^18.0.0-0 - sass: ^1.3.0 - dependenciesMeta: - "@next/swc-android-arm-eabi": - optional: true - "@next/swc-android-arm64": - optional: true - "@next/swc-darwin-arm64": - optional: true - "@next/swc-darwin-x64": - optional: true - "@next/swc-freebsd-x64": - optional: true - "@next/swc-linux-arm-gnueabihf": - optional: true - "@next/swc-linux-arm64-gnu": - optional: true - "@next/swc-linux-arm64-musl": - optional: true - "@next/swc-linux-x64-gnu": - optional: true - "@next/swc-linux-x64-musl": - optional: true - "@next/swc-win32-arm64-msvc": - optional: true - "@next/swc-win32-ia32-msvc": - optional: true - "@next/swc-win32-x64-msvc": - optional: true - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - bin: - next: dist/bin/next - checksum: d96fc4f5bcd5a630d74111519f4820dcbd75dddf16c6d00d2167bd3cb8d74965d46d83c8e5ec301bf999013c7d96f1bfff9424f0221317d68b594c4d01f5825e - languageName: node - linkType: hard - -"nextra-theme-docs@npm:^1.2.6": - version: 1.2.6 - resolution: "nextra-theme-docs@npm:1.2.6" - dependencies: - "@mdx-js/react": ^1.6.16 - "@reach/skip-nav": ^0.11.2 - classnames: ^2.2.6 - focus-visible: ^5.1.0 - github-slugger: ^1.3.0 - grapheme-splitter: ^1.0.4 - intersection-observer: ^0.12.0 - match-sorter: ^4.2.0 - next-themes: ^0.0.8 - parse-git-url: ^1.0.1 - prism-react-renderer: ^1.1.1 - react-innertext: ^1.1.5 - title: ^3.4.2 - peerDependencies: - next: ">=9.5.3" - react: ">=16.13.1" - react-dom: ">=16.13.1" - checksum: 545f5690cc486686e86022ebc86583b3e92602f1d7532c22479a6350b7422974631f62695913cc6f3f19cadbf76688037306142fe33aa77c59e9fd0720997cb3 - languageName: node - linkType: hard - -"nextra@npm:^1.1.0": - version: 1.1.0 - resolution: "nextra@npm:1.1.0" - dependencies: - "@mdx-js/loader": ^2.0.0-next.9 - download: ^8.0.0 - graceful-fs: ^4.2.6 - gray-matter: ^4.0.3 - loader-utils: ^2.0.0 - remark: ^13.0.0 - remark-gfm: ^1.0.0 - slash: ^3.0.0 - strip-markdown: ^4.0.0 - peerDependencies: - react: ">=16.13.1" - checksum: 59afdb888068595793a2637dd071795a3a41bd43b56efa7f44f2beaf9420c6253e688289171ffad2c650189e13c984ecfa88cdf432b8d52e3ede17ad6280ce7c - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.0.1": - version: 3.0.1 - resolution: "node-abort-controller@npm:3.0.1" - checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee - languageName: node - linkType: hard - -"node-dir@npm:^0.1.10, node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: ^3.0.2 - checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 - languageName: node - linkType: hard - -"node-fetch-native@npm:^1.0.1": - version: 1.0.1 - resolution: "node-fetch-native@npm:1.0.1" - checksum: 828b891344401fc84ce589cce39bf1760fe335c67e7607c4452ab47187f8afe73f86e220c0d215441e9e3ac1e4e27969167b8fa75269acad4362051bc0ee478e - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-url@npm:2.0.1": - version: 2.0.1 - resolution: "normalize-url@npm:2.0.1" - dependencies: - prepend-http: ^2.0.0 - query-string: ^5.0.1 - sort-keys: ^2.0.0 - checksum: 30e337ee03fc7f360c7d2b966438657fabd2628925cc58bffc893982fe4d2c59b397ae664fa2c319cd83565af73eee88906e80bc5eec91bc32b601920e770d75 - languageName: node - linkType: hard - -"normalize-url@npm:^8.0.0": - version: 8.0.0 - resolution: "normalize-url@npm:8.0.0" - checksum: 24c20b75ebfd526d8453084692720b49d111c63c0911f1b7447427829597841eef5a8ba3f6bb93d6654007b991c1f5cd85da2c907800e439e2e2ec6c2abd0fc0 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 - languageName: node - linkType: hard - -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" - dependencies: - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"object.values@npm:^1.1.5, object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e - languageName: node - linkType: hard - -"objectorarray@npm:^1.0.5": - version: 1.0.5 - resolution: "objectorarray@npm:1.0.5" - checksum: 8fd776aa495d113e217837f4adc1d53e63f656498237094d25f84c3e2c038b34b71d6fd85c4b60c7ae5f558790e5042426a400fae3eac35f297e11be12643a78 - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: ^2.0.0 - is-wsl: ^2.1.1 - checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91 - languageName: node - linkType: hard - -"open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c - languageName: node - linkType: hard - -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" - 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 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 - languageName: node - linkType: hard - -"p-cancelable@npm:^0.4.0": - version: 0.4.1 - resolution: "p-cancelable@npm:0.4.1" - checksum: d11144d72ee3a99f62fe595cb0e13b8585ea73c3807b4a9671744f1bf5d3ccddb049247a4ec3ceff05ca4adba9d0bb0f1862829daf20795bf528c86fa088509c - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - -"p-event@npm:^2.1.0": - version: 2.3.1 - resolution: "p-event@npm:2.3.1" - dependencies: - p-timeout: ^2.0.1 - checksum: 7f973c4c001045bcd561202fc1b2bdf9e148182bb28a7bafa8e7b2ebfaf71a4f9ba91554222040d364290e707e3ebbb049122b8eda9d2aac413b4cf8de0b79ff - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-is-promise@npm:^1.1.0": - version: 1.1.0 - resolution: "p-is-promise@npm:1.1.0" - checksum: 64d7c6cda18af2c91c04209e5856c54d1a9818662d2320b34153d446645f431307e04406969a1be00cad680288e86dcf97b9eb39edd5dc4d0b1bd714ee85e13b - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-timeout@npm:^2.0.1": - version: 2.0.1 - resolution: "p-timeout@npm:2.0.1" - dependencies: - p-finally: ^1.0.0 - checksum: 9205a661173f03adbeabda8e02826de876376b09c99768bdc33e5b25ae73230e3ac00e520acedbe3cf05fbd3352fb02efbd3811a9a021b148fb15eb07e7accac - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json@npm:^8.1.0": - version: 8.1.0 - resolution: "package-json@npm:8.1.0" - dependencies: - got: ^12.1.0 - registry-auth-token: ^5.0.1 - registry-url: ^6.0.0 - semver: ^7.3.7 - checksum: 28c16ef0296915533c3dec9ce579fd6ea8ac62df0cd0b4b44e65a45506fda781cf1d1fd4a083fe90af3e041a9514b6be30562d85689da450986aff43dc856cc7 - languageName: node - linkType: hard - -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-entities@npm:^2.0.0": - version: 2.0.0 - resolution: "parse-entities@npm:2.0.0" - dependencies: - character-entities: ^1.0.0 - character-entities-legacy: ^1.0.0 - character-reference-invalid: ^1.0.0 - is-alphanumerical: ^1.0.0 - is-decimal: ^1.0.0 - is-hexadecimal: ^1.0.0 - checksum: 7addfd3e7d747521afac33c8121a5f23043c6973809756920d37e806639b4898385d386fcf4b3c8e2ecf1bc28aac5ae97df0b112d5042034efbe80f44081ebce - languageName: node - linkType: hard - -"parse-entities@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-entities@npm:4.0.0" - dependencies: - "@types/unist": ^2.0.0 - character-entities: ^2.0.0 - character-entities-legacy: ^3.0.0 - character-reference-invalid: ^2.0.0 - decode-named-character-reference: ^1.0.0 - is-alphanumerical: ^2.0.0 - is-decimal: ^2.0.0 - is-hexadecimal: ^2.0.0 - checksum: cd9fa53bc056ad8cf8a45494bfd7ce65e8bf6f1b12dcc9a6343376fa529c2012041303c5d0f86babf70afbd13b71c2f219fc3a76fb97d9d559b66578e19cdaf0 - languageName: node - linkType: hard - -"parse-git-url@npm:^1.0.1": - version: 1.0.1 - resolution: "parse-git-url@npm:1.0.1" - checksum: 764d15c50d17308dd90883337d34f6dfc68a6a1e3441d714d9434cf2b12607ee74dd51754b01d07e2fb19592357e59242a1ebdfe2d8025ac6c0998205f66d6dd - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^2.0.0": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"pathe@npm:^1.0.0": - version: 1.0.0 - resolution: "pathe@npm:1.0.0" - checksum: 7b71a4930a5b46111c92149632f74b0e87bade3eabe6c9168dcc4846857a4e124eacc0c2bf044fe0d2a8b7f87ae62b9b2cb11938c61899d485cc36dd1a243a23 - languageName: node - linkType: hard - -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - -"periscopic@npm:^3.0.0": - version: 3.0.4 - resolution: "periscopic@npm:3.0.4" - dependencies: - estree-walker: ^3.0.0 - is-reference: ^3.0.0 - checksum: 0920ea1b0294c2463b7df858d7f895d0a69f15ec5c7b93d63749e7a8f6d9c065853ebea701305f1756f70310633832cf5c90e43e9363cce51abec44cc2f5c188 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pify@npm:^2.3.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pify@npm:^3.0.0": - version: 3.0.0 - resolution: "pify@npm:3.0.0" - checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b - languageName: node - linkType: hard - -"pinkie-promise@npm:^2.0.0": - version: 2.0.1 - resolution: "pinkie-promise@npm:2.0.1" - dependencies: - pinkie: ^2.0.0 - checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca - languageName: node - linkType: hard - -"pinkie@npm:^2.0.0": - version: 2.0.4 - resolution: "pinkie@npm:2.0.4" - checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db - languageName: node - linkType: hard - -"pirates@npm:^4.0.4, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: ^5.0.0 - checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 - languageName: node - linkType: hard - -"polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.17.8 - checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:8.4.14": - version: 8.4.14 - resolution: "postcss@npm:8.4.14" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: fe58766ff32e4becf65a7d57678995cfd239df6deed2fe0557f038b47c94e4132e7e5f68b5aa820c13adfec32e523b693efaeb65798efb995ce49ccd83953816 - languageName: node - linkType: hard - -"postcss@npm:^8.4.18": - version: 8.4.19 - resolution: "postcss@npm:8.4.19" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 62782723a385f92b7525f66d29614624de7c5643855423db3a5efd9287e677650300192749adddbbb6734cea9b1d5f5fd4f6ea00ca3f9a95dbbb88f835f5ca64 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - -"prepend-http@npm:^2.0.0": - version: 2.0.0 - resolution: "prepend-http@npm:2.0.0" - checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea - languageName: node - linkType: hard - -"prettier@npm:^2.8.0": - version: 2.8.0 - resolution: "prettier@npm:2.8.0" - bin: - prettier: bin-prettier.js - checksum: 72004ce0cc9bb097daf3e3833f62495768724392c1d5b178dd47372337616e9e50ecbb0804f236596223f7b5eb1bbe69cefc8957dca21112c5777e77ef73a564 - languageName: node - linkType: hard - -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" - dependencies: - lodash: ^4.17.20 - renderkid: ^3.0.0 - checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 - languageName: node - linkType: hard - -"pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-regex: ^5.0.0 - ansi-styles: ^4.0.0 - react-is: ^17.0.1 - checksum: e3b808404d7e1519f0df1aa1f25cee0054ab475775c6b2b8c5568ff23194a92d54bf93274139b6f584ca70fd773be4eaa754b0e03f12bb0a8d1426b07f079976 - languageName: node - linkType: hard - -"pretty-hrtime@npm:^1.0.3": - version: 1.0.3 - resolution: "pretty-hrtime@npm:1.0.3" - checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 - languageName: node - linkType: hard - -"prism-react-renderer@npm:^1.1.1": - version: 1.3.5 - resolution: "prism-react-renderer@npm:1.3.5" - peerDependencies: - react: ">=0.14.9" - checksum: c18806dcbc4c0b4fd6fd15bd06b4f7c0a6da98d93af235c3e970854994eb9b59e23315abb6cfc29e69da26d36709a47e25da85ab27fed81b6812f0a52caf6dfa - languageName: node - linkType: hard - -"private@npm:^0.1.8": - version: 0.1.8 - resolution: "private@npm:0.1.8" - checksum: a00abd713d25389f6de7294f0e7879b8a5d09a9ec5fd81cc2f21b29d4f9a80ec53bc4222927d3a281d4aadd4cd373d9a28726fca3935921950dc75fd71d1fdbb - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"progress@npm:^2.0.1": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"prompts@npm:^2.4.0": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.2.0 - resolution: "property-information@npm:6.2.0" - checksum: 23afce07ba821cbe7d926e63cdd680991961c82be4bbb6c0b17c47f48894359c1be6e51cd74485fc10a9d3fd361b475388e1e39311ed2b53127718f72aab1955 - languageName: node - linkType: hard - -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.0.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 - languageName: node - linkType: hard - -"pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"pupa@npm:^3.1.0": - version: 3.1.0 - resolution: "pupa@npm:3.1.0" - dependencies: - escape-goat: ^4.0.0 - checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 - languageName: node - linkType: hard - -"puppeteer-core@npm:^2.1.1": - version: 2.1.1 - resolution: "puppeteer-core@npm:2.1.1" - dependencies: - "@types/mime-types": ^2.1.0 - debug: ^4.1.0 - extract-zip: ^1.6.6 - https-proxy-agent: ^4.0.0 - mime: ^2.0.3 - mime-types: ^2.1.25 - progress: ^2.0.1 - proxy-from-env: ^1.0.0 - rimraf: ^2.6.1 - ws: ^6.1.0 - checksum: 2ddb597ef1b2d162b4aa49833b977734129edf7c8fa558fc38c59d273e79aa1bd079481c642de87f7163665f7f37aa52683da2716bafb7d3cab68c262c36ec28 - languageName: node - linkType: hard - -"qs@npm:6.11.0, qs@npm:^6.10.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - -"query-string@npm:^5.0.1": - version: 5.1.1 - resolution: "query-string@npm:5.1.1" - dependencies: - decode-uri-component: ^0.2.0 - object-assign: ^4.1.0 - strict-uri-encode: ^1.0.0 - checksum: 4ac760d9778d413ef5f94f030ed14b1a07a1708dd13fd3bc54f8b9ef7b425942c7577f30de0bf5a7d227ee65a9a0350dfa3a43d1d266880882fb7ce4c434a4dd - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 44ea6e5010bba70151b6a92d8114a91915e8b5a16105cce65fae58c9d7386b812c429645e35f21141d7087568550ce383bc10ee1a65cdec951f4b69ea457e6a4 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e - languageName: node - linkType: hard - -"rc@npm:1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e - languageName: node - linkType: hard - -"react-colorful@npm:^5.1.2": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: e432b7cb0df57e8f0bcdc3b012d2e93fcbcb6092c9e0f85654788d5ebfc4442536d8cc35b2418061ba3c4afb8b7788cc101c606d86a1732407921de7a9244c8d - languageName: node - linkType: hard - -"react-docgen-typescript@npm:^2.1.1": - version: 2.2.2 - resolution: "react-docgen-typescript@npm:2.2.2" - peerDependencies: - typescript: ">= 4.3.x" - checksum: a9826459ea44e818f21402728dd47f5cae60bd936574cefd4f90ad101ff3eebacd67b6e017b793309734ce62c037aa3072dbc855d2b0e29bad1a38cbf5bac115 - languageName: node - linkType: hard - -"react-docgen@npm:^5.0.0": - version: 5.4.3 - resolution: "react-docgen@npm:5.4.3" - dependencies: - "@babel/core": ^7.7.5 - "@babel/generator": ^7.12.11 - "@babel/runtime": ^7.7.6 - ast-types: ^0.14.2 - commander: ^2.19.0 - doctrine: ^3.0.0 - estree-to-babel: ^3.1.0 - neo-async: ^2.6.1 - node-dir: ^0.1.10 - strip-indent: ^3.0.0 - bin: - react-docgen: bin/react-docgen.js - checksum: cef935ba948195eaeec9126c62f53bc015b9a5ad3a7eeb4a4604668d5b12bd5d0c9058c279eaf33ee6b47f2a24ccf01818b67af64d7f61265c4d3a5aa4ff0a3a - languageName: node - linkType: hard - -"react-dom@npm:16.14.0": - version: 16.14.0 - resolution: "react-dom@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - scheduler: ^0.19.1 - peerDependencies: - react: ^16.14.0 - checksum: 5a5c49da0f106b2655a69f96c622c347febcd10532db391c262b26aec225b235357d9da1834103457683482ab1b229af7a50f6927a6b70e53150275e31785544 - languageName: node - linkType: hard - -"react-element-to-jsx-string@npm:^15.0.0": - version: 15.0.0 - resolution: "react-element-to-jsx-string@npm:15.0.0" - dependencies: - "@base2/pretty-print-object": 1.0.1 - is-plain-object: 5.0.0 - react-is: 18.1.0 - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - checksum: c3907cc4c1d3e9ecc8ca7727058ebcba6ec89848d9e07bfd2c77ee8f28f1ad99bf55e38359dec8a1125de83d41ac09a2874f53c41415edc86ffa9840fa1b7856 - languageName: node - linkType: hard - -"react-fast-compare@npm:^2.0.1": - version: 2.0.4 - resolution: "react-fast-compare@npm:2.0.4" - checksum: 06046595f90a4e3e3a56f40a8078c00aa71bdb064ddb98343f577f546aa22e888831fd45f009c93b34707cc842b4c637737e956fd13d6f80607ee92fb9cf9a1c - languageName: node - linkType: hard - -"react-innertext@npm:^1.1.5": - version: 1.1.5 - resolution: "react-innertext@npm:1.1.5" - peerDependencies: - "@types/react": ">=0.0.0 <=99" - react: ">=0.0.0 <=99" - checksum: 01c9c8a5a471f03965b9d69c8bee02d420fd3a607b678004f0bdee098c9bccb3e2eae8460c90b1d180d2a8d544a3ddb09b8c2a11e5aa8b3a077733e2d9c25c2c - languageName: node - linkType: hard - -"react-inspector@npm:^6.0.0": - version: 6.0.1 - resolution: "react-inspector@npm:6.0.1" - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 877cbccf36fdc6213abb9611fb9279c4bb76ef7ecb4ec554b3935419a99d55e6d30a80799a054d468d43cc59a9777f21d22d6219a4597bfbd27f3f08a4cdfdc6 - languageName: node - linkType: hard - -"react-is@npm:18.1.0": - version: 18.1.0 - resolution: "react-is@npm:18.1.0" - checksum: d206a0fe6790851bff168727bfb896de02c5591695afb0c441163e8630136a3e13ee1a7ddd59fdccddcc93968b4721ae112c10f790b194b03b35a3dc13a355ef - languageName: node - linkType: hard - -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - -"react-refresh@npm:^0.11.0": - version: 0.11.0 - resolution: "react-refresh@npm:0.11.0" - checksum: 112178a05b1e0ffeaf5d9fb4e56b4410a34a73adeb04dbf13abdc50d9ac9df2ada83e81485156cca0b3fa296aa3612751b3d6cd13be4464642a43679b819cbc7 - languageName: node - linkType: hard - -"react@npm:16.14.0": - version: 16.14.0 - resolution: "react@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - checksum: 8484f3ecb13414526f2a7412190575fc134da785c02695eb92bb6028c930bfe1c238d7be2a125088fec663cc7cda0a3623373c46807cf2c281f49c34b79881ac - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 - languageName: node - linkType: hard - -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"recast@npm:^0.19.0": - version: 0.19.1 - resolution: "recast@npm:0.19.1" - dependencies: - ast-types: 0.13.3 - esprima: ~4.0.0 - private: ^0.1.8 - source-map: ~0.6.1 - checksum: f5de5f803a1b026d38fd9f11b510ec2d18d7d0518f14ea24e088b9b0061ab5b52cfb6206e826396bbd72870eca55894ca961b909fc18d382e3695275fb253b5c - languageName: node - linkType: hard - -"recast@npm:^0.20.4": - version: 0.20.5 - resolution: "recast@npm:0.20.5" - dependencies: - ast-types: 0.14.2 - esprima: ~4.0.0 - source-map: ~0.6.1 - tslib: ^2.0.1 - checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.1": - version: 0.15.1 - resolution: "regenerator-transform@npm:0.15.1" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.2.1": - version: 5.2.2 - resolution: "regexpu-core@npm:5.2.2" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.1.0 - checksum: 87c56815e20d213848d38f6b047ba52f0d632f36e791b777f59327e8d350c0743b27cc25feab64c0eadc9fe9959dde6b1261af71108a9371b72c8c26beda05ef - languageName: node - linkType: hard - -"registry-auth-token@npm:^5.0.1": - version: 5.0.1 - resolution: "registry-auth-token@npm:5.0.1" - dependencies: - "@pnpm/npm-conf": ^1.0.4 - checksum: abd3a3b14aee445398d09efc3b67be57fbf1b1e93b61443b45196055d2372f3814e6942a56ecd5a5385ab8e26c2078e0b3f6d346689c49b82f7e5049940e4b03 - languageName: node - linkType: hard - -"registry-url@npm:^6.0.0": - version: 6.0.1 - resolution: "registry-url@npm:6.0.1" - dependencies: - rc: 1.2.8 - checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab - languageName: node - linkType: hard - -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - -"remark-external-links@npm:^8.0.0": - version: 8.0.0 - resolution: "remark-external-links@npm:8.0.0" - dependencies: - extend: ^3.0.0 - is-absolute-url: ^3.0.0 - mdast-util-definitions: ^4.0.0 - space-separated-tokens: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 48c4a41fe38916f79febb390b0c4deefe82b554dd36dc534262d851860d17fb6d15d78d515f29194e5fa48db5f01f4405a6f6dd077aaf32812a2efffb01700d7 - languageName: node - linkType: hard - -"remark-gfm@npm:^1.0.0": - version: 1.0.0 - resolution: "remark-gfm@npm:1.0.0" - dependencies: - mdast-util-gfm: ^0.1.0 - micromark-extension-gfm: ^0.3.0 - checksum: 877b0f6472a90a490b5d5a1393f46d22c4ab7451b1e83ebd7362e5be9c661b6ed03e76c28f76894f460bedf23345c589d3f412c273ce0d4d442c6a4d65b0eae4 - languageName: node - linkType: hard - -"remark-mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "remark-mdx@npm:2.1.5" - dependencies: - mdast-util-mdx: ^2.0.0 - micromark-extension-mdxjs: ^1.0.0 - checksum: a5b2ccaa2bdb9d236e418e4b1868539b3dc4f8df0476b5574c9beb0cc8cf8a09573fa91aeb24f56a5c3bb4ed00d9b6db6afe36a53450985fdbdcf9736bed115b - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 - languageName: node - linkType: hard - -"remark-parse@npm:^9.0.0": - version: 9.0.0 - resolution: "remark-parse@npm:9.0.0" - dependencies: - mdast-util-from-markdown: ^0.8.0 - checksum: 50104880549639b7dd7ae6f1e23c214915fe9c054f02f3328abdaee3f6de6d7282bf4357c3c5b106958fe75e644a3c248c2197755df34f9955e8e028fc74868f - languageName: node - linkType: hard - -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 - languageName: node - linkType: hard - -"remark-slug@npm:^6.0.0": - version: 6.1.0 - resolution: "remark-slug@npm:6.1.0" - dependencies: - github-slugger: ^1.0.0 - mdast-util-to-string: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 81fff0dcfaf6d6117ef1293bb1d26c3e25483d99c65c22434298eed93583a89ea5d7b94063d9a7f47c0647a708ce84f00ff62d274503f248feec03c344cabb20 - languageName: node - linkType: hard - -"remark-stringify@npm:^9.0.0": - version: 9.0.1 - resolution: "remark-stringify@npm:9.0.1" - dependencies: - mdast-util-to-markdown: ^0.6.0 - checksum: 93f46076f4d96ab1946d13e7dd43e83088480ac6b1dfe05a65e2c2f0e33d1f52a50175199b464a81803fc0f5b3bf182037665f89720b30515eba37bec4d63d56 - languageName: node - linkType: hard - -"remark@npm:^13.0.0": - version: 13.0.0 - resolution: "remark@npm:13.0.0" - dependencies: - remark-parse: ^9.0.0 - remark-stringify: ^9.0.0 - unified: ^9.1.0 - checksum: e3432bfa1b0029680302e99a6356c08789b3e908457a71eca37ada6a58497e302f08bd5f62fbad840082a8348c181b7f6f981aaf3cd3112207583ddf793a2429 - languageName: node - linkType: hard - -"remove-accents@npm:0.4.2": - version: 0.4.2 - resolution: "remove-accents@npm:0.4.2" - checksum: 84a6988555dea24115e2d1954db99509588d43fe55a1590f0b5894802776f7b488b3151c37ceb9e4f4b646f26b80b7325dcea2fae58bc3865df146e1fa606711 - languageName: node - linkType: hard - -"renderkid@npm:^3.0.0": - version: 3.0.0 - resolution: "renderkid@npm:3.0.0" - dependencies: - css-select: ^4.1.3 - dom-converter: ^0.2.0 - htmlparser2: ^6.1.0 - lodash: ^4.17.21 - strip-ansi: ^6.0.1 - checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.0.0, repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.0": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.3": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"resolve@patch:resolve@^2.0.0-next.3#~builtin<compat/resolve>": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin<compat/resolve>::version=2.0.0-next.4&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 - languageName: node - linkType: hard - -"responselike@npm:1.0.2": - version: 1.0.2 - resolution: "responselike@npm:1.0.2" - dependencies: - lowercase-keys: ^1.0.0 - checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd - languageName: node - linkType: hard - -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: ^3.0.0 - checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rimraf@npm:^2.6.1": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 7f117b604554c9daca713be76cecc6c52932ed1dd6303638274f21319038bfd760fbfd353e526cc83f11894935bc4beb71f5b7b9478c11bf9718c0e0d94c51cb - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"scheduler@npm:^0.19.1": - version: 0.19.1 - resolution: "scheduler@npm:0.19.1" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 73e185a59e2ff5aa3609f5b9cb97ddd376f89e1610579d29939d952411ca6eb7a24907a4ea4556569dacb931467a1a4a56d94fe809ef713aa76748642cd96a6c - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.5": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": ^7.0.5 - ajv: ^6.12.4 - ajv-keywords: ^3.5.2 - checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b - languageName: node - linkType: hard - -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 - ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f - languageName: node - linkType: hard - -"section-matter@npm:^1.0.0": - version: 1.0.0 - resolution: "section-matter@npm:1.0.0" - dependencies: - extend-shallow: ^2.0.1 - kind-of: ^6.0.0 - checksum: 3cc4131705493b2955729b075dcf562359bba66183debb0332752dc9cad35616f6da7a23e42b6cab45cd2e4bb5cda113e9e84c8f05aee77adb6b0289a0229101 - languageName: node - linkType: hard - -"seek-bzip@npm:^1.0.5": - version: 1.0.6 - resolution: "seek-bzip@npm:1.0.6" - dependencies: - commander: ^2.8.1 - bin: - seek-bunzip: bin/seek-bunzip - seek-table: bin/seek-bzip-table - checksum: c2ab3291e7085558499efd4e99d1466ee6782f6c4a4e4c417aa859e1cd2f5117fb3b5444f3d27c38ec5908c0f0312e2a0bc69dff087751f97b3921b5bde4f9ed - languageName: node - linkType: hard - -"semver-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "semver-diff@npm:4.0.0" - dependencies: - semver: ^7.3.5 - checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: ~1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: ~1.3.2 - safe-buffer: 5.1.1 - checksum: f4dd0fbee3b7e18d0a27ba6ba01d2f585f23f533010c9e8c74aad74615b19b12d8fbe714f14cb3579803f0bacecd67cdc858714cb56c6e28f8dd07ccc997aea4 - languageName: node - linkType: hard - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: ^6.0.2 - checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"sort-keys-length@npm:^1.0.0": - version: 1.0.1 - resolution: "sort-keys-length@npm:1.0.1" - dependencies: - sort-keys: ^1.0.0 - checksum: f9acac5fb31580a9e3d43b419dc86a1b75e85b79036a084d95dd4d1062b621c9589906588ac31e370a0dd381be46d8dbe900efa306d087ca9c912d7a59b5a590 - languageName: node - linkType: hard - -"sort-keys@npm:^1.0.0": - version: 1.1.2 - resolution: "sort-keys@npm:1.1.2" - dependencies: - is-plain-obj: ^1.0.0 - checksum: 5963fd191a2a185a5ec86f06e47721e8e04713eda43bb04ae60d2a8afb21241553dd5bc9d863ed2bd7c3d541b609b0c8d0e58836b1a3eb6764c09c094bcc8b00 - languageName: node - linkType: hard - -"sort-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "sort-keys@npm:2.0.0" - dependencies: - is-plain-obj: ^1.0.0 - checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.0, source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^1.0.0": - version: 1.1.5 - resolution: "space-separated-tokens@npm:1.1.5" - checksum: 8ef68f1cfa8ccad316b7f8d0df0919d0f1f6d32101e8faeee34ea3a923ce8509c1ad562f57388585ee4951e92d27afa211ed0a077d3d5995b5ba9180331be708 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "space-separated-tokens@npm:2.0.2" - checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.12 - resolution: "spdx-license-ids@npm:3.0.12" - checksum: 92a4dddce62ce1db6fe54a7a839cf85e06abc308fc83b776a55b44e4f1906f02e7ebd506120847039e976bbbad359ea8bdfafb7925eae5cd7e73255f02e0b7d6 - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"stackframe@npm:^1.3.4": - version: 1.3.4 - resolution: "stackframe@npm:1.3.4" - checksum: bae1596873595c4610993fa84f86a3387d67586401c1816ea048c0196800c0646c4d2da98c2ee80557fd9eff05877efe33b91ba6cd052658ed96ddc85d19067d - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - -"store2@npm:^2.12.0": - version: 2.14.2 - resolution: "store2@npm:2.14.2" - checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 - languageName: node - linkType: hard - -"storybook@portal:../../code/lib/cli-storybook::locator=%40storybook%2Fexternal-docs%40workspace%3A.": - version: 0.0.0-use.local - resolution: "storybook@portal:../../code/lib/cli-storybook::locator=%40storybook%2Fexternal-docs%40workspace%3A." - dependencies: - "@storybook/cli": 7.0.0-alpha.56 - bin: - sb: ./index.js - storybook: ./index.js - languageName: node - linkType: soft - -"strict-uri-encode@npm:^1.0.0": - version: 1.1.0 - resolution: "strict-uri-encode@npm:1.1.0" - checksum: 9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb3 - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - regexp.prototype.flags: ^1.4.3 - side-channel: ^1.0.4 - checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"stringify-entities@npm:^4.0.0": - version: 4.0.3 - resolution: "stringify-entities@npm:4.0.3" - dependencies: - character-entities-html4: ^2.0.0 - character-entities-legacy: ^3.0.0 - checksum: 59e8f523b403bf7d415690e72ae52982decd6ea5426bd8b3f5c66225ddde73e766c0c0d91627df082d0794e30b19dd907ffb5864cef3602e4098d6777d7ca3c2 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: ^6.0.1 - checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 - languageName: node - linkType: hard - -"strip-bom-string@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-bom-string@npm:1.0.0" - checksum: 5635a3656d8512a2c194d6c8d5dee7ef0dde6802f7be9413b91e201981ad4132506656d9cf14137f019fd50f0269390d91c7f6a2601b1bee039a4859cfce4934 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - -"strip-dirs@npm:^2.0.0": - version: 2.1.0 - resolution: "strip-dirs@npm:2.1.0" - dependencies: - is-natural-number: ^4.0.1 - checksum: 9465547d71d8819daa7a5c9d4d783289ed8eac72eb06bd687bed382ce62af8ab8e6ffbda229805f5d2e71acce2ca4915e781c94190d284994cbc0b7cdc8303cc - languageName: node - linkType: hard - -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: ^1.0.0 - checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 - languageName: node - linkType: hard - -"strip-markdown@npm:^4.0.0": - version: 4.2.0 - resolution: "strip-markdown@npm:4.2.0" - checksum: 85bf852685b9353791073774fa91730beb26f8e122307241f812e5731227eb01829a3979e7606b922c3a83a8a69a1e4c0218cb02ab6025e55c37a75a14472ce6 - languageName: node - linkType: hard - -"strip-outer@npm:^1.0.0": - version: 1.0.1 - resolution: "strip-outer@npm:1.0.1" - dependencies: - escape-string-regexp: ^1.0.2 - checksum: f8d65d33ca2b49aabc66bb41d689dda7b8b9959d320e3a40a2ef4d7079ff2f67ffb72db43f179f48dbf9495c2e33742863feab7a584d180fa62505439162c191 - languageName: node - linkType: hard - -"style-loader@npm:^3.3.1": - version: 3.3.1 - resolution: "style-loader@npm:3.3.1" - peerDependencies: - webpack: ^5.0.0 - checksum: 470feef680f59e2fce4d6601b5c55b88c01ad8d1dd693c528ffd591ff5fd7c01a4eff3bdbe62f26f847d6bd2430c9ab594be23307cfe7a3446ab236683f0d066 - languageName: node - linkType: hard - -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" - dependencies: - inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 - languageName: node - linkType: hard - -"styled-jsx@npm:5.0.7": - version: 5.0.7 - resolution: "styled-jsx@npm:5.0.7" - peerDependencies: - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" - peerDependenciesMeta: - "@babel/core": - optional: true - babel-plugin-macros: - optional: true - checksum: 61959993915f4b1662a682dbbefb3512de9399cf6901969bcadd26ba5441d2b5ca5c1021b233bbd573da2541b41efb45d56c6f618dbc8d88a381ebc62461fefe - languageName: node - linkType: hard - -"supports-color@npm:^4.0.0": - version: 4.5.0 - resolution: "supports-color@npm:4.5.0" - dependencies: - has-flag: ^2.0.0 - checksum: 6da4f498d5c71e8619f06e4a11d16f044105faf7590b5b005fc84933fbefdf72c2b4e5b7174c66da6ddc68e7f6ef56cc960a5ebd6f2d542d910e259e61b02335 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"synchronous-promise@npm:^2.0.15": - version: 2.0.16 - resolution: "synchronous-promise@npm:2.0.16" - checksum: 1a3e5dfa9e3b913452366e182d4cae5c2ffb9de8c9753ecb602539a298e82ab82de951a0b0ecd86b2e2e237b1236eb5e82964c8ce13b2d23f7ecd52767a2b74d - languageName: node - linkType: hard - -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 - languageName: node - linkType: hard - -"tar-stream@npm:^1.5.2": - version: 1.6.2 - resolution: "tar-stream@npm:1.6.2" - dependencies: - bl: ^1.0.0 - buffer-alloc: ^1.2.0 - end-of-stream: ^1.0.0 - fs-constants: ^1.0.0 - readable-stream: ^2.3.0 - to-buffer: ^1.1.1 - xtend: ^4.0.0 - checksum: a5d49e232d3e33321bbd150381b6a4e5046bf12b1c2618acb95435b7871efde4d98bd1891eb2200478a7142ef7e304e033eb29bbcbc90451a2cdfa1890e05245 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.1.2": - version: 6.1.12 - resolution: "tar@npm:6.1.12" - dependencies: - 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 - checksum: 49d72e4420944e7ede2782d6b0826a6ede6cdab23c7de63470917e7a78166bc4d5b1a96279d3d79a85f1ba5a17cd37c0acbb3cbff19a07447691445b8b051c55 - languageName: node - linkType: hard - -"telejson@npm:^7.0.3": - version: 7.0.4 - resolution: "telejson@npm:7.0.4" - dependencies: - memoizerific: ^1.11.3 - checksum: 116937573be4f401f5459e02aa49a8eca9e9dfc23317cbea01d27f4337802ec388ebfa6eef3e5da712fd652966b8e1f1c2e1a0d6bae777901ad232e871793688 - languageName: node - linkType: hard - -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1": - version: 5.3.6 - resolution: "terser-webpack-plugin@npm:5.3.6" - dependencies: - "@jridgewell/trace-mapping": ^0.3.14 - jest-worker: ^27.4.5 - schema-utils: ^3.1.1 - serialize-javascript: ^6.0.0 - terser: ^5.14.1 - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8f3448d7fdb0434ce6a0c09d95c462bfd2f4a5a430233d854163337f734a7f5c07c74513d16081e06d4ca33d366d5b1a36f5444219bc41a7403afd6162107bad - languageName: node - linkType: hard - -"terser@npm:^5.10.0, terser@npm:^5.14.1": - version: 5.16.1 - resolution: "terser@npm:5.16.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: cb524123504a2f0d9140c1e1a8628c83bba9cacc404c6aca79e2493a38dfdf21275617ba75b91006b3f1ff586e401ab31121160cd253699f334c6340ea2756f5 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - -"through@npm:^2.3.8": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"timed-out@npm:^4.0.1": - version: 4.0.1 - resolution: "timed-out@npm:4.0.1" - checksum: 98efc5d6fc0d2a329277bd4d34f65c1bf44d9ca2b14fd267495df92898f522e6f563c5e9e467c418e0836f5ca1f47a84ca3ee1de79b1cc6fe433834b7f02ec54 - languageName: node - linkType: hard - -"tiny-warning@npm:^1.0.2": - version: 1.0.3 - resolution: "tiny-warning@npm:1.0.3" - checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 - languageName: node - linkType: hard - -"title@npm:^3.4.2": - version: 3.5.3 - resolution: "title@npm:3.5.3" - dependencies: - arg: 1.0.0 - chalk: 2.3.0 - clipboardy: 1.2.2 - titleize: 1.0.0 - bin: - title: bin/title.js - checksum: 3fcd2fffcd12292d2015b7bdacf092cb9ed716b2e0187fdaa5ab0556f636c795f23a698e8a3d2f87ab647df35ba7b4e0ddfc1675b4676c535fb877daafb0dae5 - languageName: node - linkType: hard - -"titleize@npm:1.0.0": - version: 1.0.0 - resolution: "titleize@npm:1.0.0" - checksum: a8234b7860077f7d391d06e13c645fe2bf60431012d78ca196d4d73e4768e33cfc3a0dd881bf2f9974c8bd8beeb9d85e7842ec35d267b7c2a06f287de1c4ea7e - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-buffer@npm:^1.1.1": - version: 1.1.1 - resolution: "to-buffer@npm:1.1.1" - checksum: 6c897f58c2bdd8b8b1645ea515297732fec6dafb089bf36d12370c102ff5d64abf2be9410e0b1b7cfc707bada22d9a4084558010bfc78dd7023748dc5dd9a1ce - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"trim-lines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" - checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed - languageName: node - linkType: hard - -"trim-repeated@npm:^1.0.0": - version: 1.0.0 - resolution: "trim-repeated@npm:1.0.0" - dependencies: - escape-string-regexp: ^1.0.2 - checksum: e25c235305b82c43f1d64a67a71226c406b00281755e4c2c4f3b1d0b09c687a535dd3c4483327f949f28bb89dc400a0bc5e5b749054f4b99f49ebfe48ba36496 - languageName: node - linkType: hard - -"trough@npm:^1.0.0": - version: 1.0.5 - resolution: "trough@npm:1.0.5" - checksum: d6c8564903ed00e5258bab92134b020724dbbe83148dc72e4bf6306c03ed8843efa1bcc773fa62410dd89161ecb067432dd5916501793508a9506cacbc408e25 - languageName: node - linkType: hard - -"trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 - languageName: node - linkType: hard - -"ts-dedent@npm:^2.0.0": - version: 2.2.0 - resolution: "ts-dedent@npm:2.2.0" - checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d - languageName: node - linkType: hard - -"tslib@npm:^1.10.0, tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": - version: 2.4.1 - resolution: "tslib@npm:2.4.1" - checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: ^1.2.1 - checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a - languageName: node - linkType: hard - -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.1": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 - languageName: node - linkType: hard - -"type-fest@npm:^2.13.0, type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 - languageName: node - linkType: hard - -"typescript@npm:~4.6.3": - version: 4.6.4 - resolution: "typescript@npm:4.6.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e7bfcc39cd4571a63a54e5ea21f16b8445268b9900bf55aee0e02ad981be576acc140eba24f1af5e3c1457767c96cea6d12861768fb386cf3ffb34013718631a - languageName: node - linkType: hard - -"typescript@patch:typescript@~4.6.3#~builtin<compat/typescript>": - version: 4.6.4 - resolution: "typescript@patch:typescript@npm%3A4.6.4#~builtin<compat/typescript>::version=4.6.4&hash=5d3a66" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 1cb434fbc637d347be90e3a0c6cd05e33c38f941713c8786d3031faf1842c2c148ba91d2fac01e7276b0ae3249b8633f1660e32686cc7a8c6a8fd5361dc52c66 - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" - bin: - uglifyjs: bin/uglifyjs - checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"unbzip2-stream@npm:^1.0.9": - version: 1.4.3 - resolution: "unbzip2-stream@npm:1.4.3" - dependencies: - buffer: ^5.2.1 - through: ^2.3.8 - checksum: 0e67c4a91f4fa0fc7b4045f8b914d3498c2fc2e8c39c359977708ec85ac6d6029840e97f508675fdbdf21fcb8d276ca502043406f3682b70f075e69aae626d1d - languageName: node - linkType: hard - -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: ^2.0.0 - unicode-property-aliases-ecmascript: ^2.0.0 - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.1.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"unified@npm:^9.1.0": - version: 9.2.2 - resolution: "unified@npm:9.2.2" - dependencies: - bail: ^1.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^2.0.0 - trough: ^1.0.0 - vfile: ^4.0.0 - checksum: 7c24461be7de4145939739ce50d18227c5fbdf9b3bc5a29dabb1ce26dd3e8bd4a1c385865f6f825f3b49230953ee8b591f23beab3bb3643e3e9dc37aa8a089d5 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c - languageName: node - linkType: hard - -"unique-string@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-string@npm:3.0.0" - dependencies: - crypto-random-string: ^4.0.0 - checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df - languageName: node - linkType: hard - -"unist-builder@npm:^3.0.0": - version: 3.0.0 - resolution: "unist-builder@npm:3.0.0" - dependencies: - "@types/unist": ^2.0.0 - checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84 - languageName: node - linkType: hard - -"unist-util-generated@npm:^2.0.0": - version: 2.0.0 - resolution: "unist-util-generated@npm:2.0.0" - checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0 - languageName: node - linkType: hard - -"unist-util-is@npm:^4.0.0": - version: 4.1.0 - resolution: "unist-util-is@npm:4.1.0" - checksum: 726484cd2adc9be75a939aeedd48720f88294899c2e4a3143da413ae593f2b28037570730d5cf5fd910ff41f3bc1501e3d636b6814c478d71126581ef695f7ea - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.1.1 - resolution: "unist-util-is@npm:5.1.1" - checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4 - languageName: node - linkType: hard - -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.1 - resolution: "unist-util-position-from-estree@npm:1.1.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: 63808bdcb8b49afa5231712d95b586fe877859ee03d23adb47485c30222007a5af55e95d103d4af51d1d16376aaa5a58fa985a08d63727c38b1515873df8b79b - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.3 - resolution: "unist-util-position@npm:4.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209 - languageName: node - linkType: hard - -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.1 - resolution: "unist-util-remove-position@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 7d2808662ac65f2b2f615822b78060419f738fb3b074b10cec77c596ea966b8f5c47553d2d322822a5975c49d2b21cdd64c198ae9fb02a9d54d1afa6342cdd6a - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-stringify-position@npm:2.0.3" - dependencies: - "@types/unist": ^2.0.2 - checksum: f755cadc959f9074fe999578a1a242761296705a7fe87f333a37c00044de74ab4b184b3812989a57d4cd12211f0b14ad397b327c3a594c7af84361b1c25a7f09 - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.2 - resolution: "unist-util-stringify-position@npm:3.0.2" - dependencies: - "@types/unist": ^2.0.0 - checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^3.0.0": - version: 3.1.1 - resolution: "unist-util-visit-parents@npm:3.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - checksum: 1170e397dff88fab01e76d5154981666eb0291019d2462cff7a2961a3e76d3533b42eaa16b5b7e2d41ad42a5ea7d112301458283d255993e660511387bf67bc3 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.1.1": - version: 5.1.1 - resolution: "unist-util-visit-parents@npm:5.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18 - languageName: node - linkType: hard - -"unist-util-visit@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-visit@npm:2.0.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - unist-util-visit-parents: ^3.0.0 - checksum: 1fe19d500e212128f96d8c3cfa3312846e586b797748a1fd195fe6479f06bc90a6f6904deb08eefc00dd58e83a1c8a32fb8677252d2273ad7a5e624525b69b8f - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit@npm:4.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - -"unplugin@npm:^0.10.2": - version: 0.10.2 - resolution: "unplugin@npm:0.10.2" - dependencies: - acorn: ^8.8.0 - chokidar: ^3.5.3 - webpack-sources: ^3.2.3 - webpack-virtual-modules: ^0.4.5 - checksum: 984199a8ecbceb7d7b37d14d5bea88dc6ae3e1fa6f1ec5b4a9263160424ee5b5ecf809ce667ff2ff819731650fc9bd42fcc7b2b33dd888a1eb047349eba63960 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.9": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"update-notifier@npm:^6.0.2": - version: 6.0.2 - resolution: "update-notifier@npm:6.0.2" - dependencies: - boxen: ^7.0.0 - chalk: ^5.0.1 - configstore: ^6.0.0 - has-yarn: ^3.0.0 - import-lazy: ^4.0.0 - is-ci: ^3.0.1 - is-installed-globally: ^0.4.0 - is-npm: ^6.0.0 - is-yarn-global: ^0.4.0 - latest-version: ^7.0.0 - pupa: ^3.1.0 - semver: ^7.3.7 - semver-diff: ^4.0.0 - xdg-basedir: ^5.1.0 - checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"url-parse-lax@npm:^3.0.0": - version: 3.0.0 - resolution: "url-parse-lax@npm:3.0.0" - dependencies: - prepend-http: ^2.0.0 - checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 - languageName: node - linkType: hard - -"url-to-options@npm:^1.0.1": - version: 1.0.1 - resolution: "url-to-options@npm:1.0.1" - checksum: 20e59f4578525fb0d30ffc22b13b5aa60bc9e57cefd4f5842720f5b57211b6dec54abeae2d675381ac4486fd1a2e987f1318725dea996e503ff89f8c8ce2c17e - languageName: node - linkType: hard - -"use-sync-external-store@npm:1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util@npm:^0.12.4": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: ^2.0.3 - is-arguments: ^1.0.4 - is-generator-function: ^1.0.7 - is-typed-array: ^1.1.3 - which-typed-array: ^1.1.2 - checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uuid-browser@npm:^3.1.0": - version: 3.1.0 - resolution: "uuid-browser@npm:3.1.0" - checksum: 951ec47593865c7cc746df671f7b0f0ff48fcab583fcdaeab6c517a5222af0f5e144a6fcea5fa9620a5b3be047e2f9412a80267ea5c45050e07d51774197d49e - languageName: node - linkType: hard - -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - -"v8-compile-cache@npm:^2.0.3": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.0": - version: 9.0.1 - resolution: "v8-to-istanbul@npm:9.0.1" - dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"vfile-location@npm:^4.0.0": - version: 4.0.1 - resolution: "vfile-location@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: cc0df62075c741beee699e651374aeb56c4c1f4333398c0ba924281c2b51d4b7669c69c5b837ea395775626ad030d6f1bd27fd0a7eaf3f9f1bbd55393948ad6c - languageName: node - linkType: hard - -"vfile-message@npm:^2.0.0": - version: 2.0.4 - resolution: "vfile-message@npm:2.0.4" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^2.0.0 - checksum: 1bade499790f46ca5aba04bdce07a1e37c2636a8872e05cf32c26becc912826710b7eb063d30c5754fdfaeedc8a7658e78df10b3bc535c844890ec8a184f5643 - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.3 - resolution: "vfile-message@npm:3.1.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: f5ec2afbc1d5589fc45729209bdcaf01e3fc520fdac693557e62bd91cc8d6f915a6397c2f4d5f7a129ffc6c7511cb77eaf9e0932be1a70e39bed584ef7c86dbd - languageName: node - linkType: hard - -"vfile@npm:^4.0.0": - version: 4.2.1 - resolution: "vfile@npm:4.2.1" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^2.0.0 - vfile-message: ^2.0.0 - checksum: ee5726e10d170472cde778fc22e0f7499caa096eb85babea5d0ce0941455b721037ee1c9e6ae506ca2803250acd313d0f464328ead0b55cfe7cb6315f1b462d6 - languageName: node - linkType: hard - -"vfile@npm:^5.0.0": - version: 5.3.6 - resolution: "vfile@npm:5.3.6" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 1aa5efff510bc6621ff8a7dc6513110529a11a8d665b44f169cc2a2b6bfa4f312efa00bfe86ca20e506538ff2915c8e538a664bd02a06419421ff964844fbe94 - languageName: node - linkType: hard - -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"warning@npm:^4.0.3": - version: 4.0.3 - resolution: "warning@npm:4.0.3" - dependencies: - loose-envify: ^1.0.0 - checksum: 4f2cb6a9575e4faf71ddad9ad1ae7a00d0a75d24521c193fa464f30e6b04027bd97aa5d9546b0e13d3a150ab402eda216d59c1d0f2d6ca60124d96cd40dfa35c - languageName: node - linkType: hard - -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" - dependencies: - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" - dependencies: - colorette: ^2.0.10 - memfs: ^3.4.3 - mime-types: ^2.1.31 - range-parser: ^1.2.1 - schema-utils: ^4.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 - languageName: node - linkType: hard - -"webpack-hot-middleware@npm:^2.25.1": - version: 2.25.3 - resolution: "webpack-hot-middleware@npm:2.25.3" - dependencies: - ansi-html-community: 0.0.8 - html-entities: ^2.1.0 - strip-ansi: ^6.0.0 - checksum: 74fe5d15f3120742cf0f88a4af7e72f3678f2d05905676e37ab4e85c559f2c21d8aa72b0efe7c262993370bfc83fbe5a8d42561bcd10b370fac88640f87c463a - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.4.3, webpack-virtual-modules@npm:^0.4.5": - version: 0.4.6 - resolution: "webpack-virtual-modules@npm:0.4.6" - checksum: cb056ba8c50b35436ae43149554b051b80065b0cf79f2d528ca692ddf344a422ac71c415adb9da83dc3acc6e7e58f518388cc1cd11cb4fa29dc04f2c4494afe3 - languageName: node - linkType: hard - -"webpack@npm:5": - version: 5.75.0 - resolution: "webpack@npm:5.75.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.1.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 2bcc5f3c195f375944e8af2f00bf2feea39cb9fda5f763b0d1b00077f1c51783db25c94d3fae96a07dead9fa085e6ae7474417e5ab31719c9776ea5969ceb83a - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef - languageName: node - linkType: hard - -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: ^4.0.0 - checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 - languageName: node - linkType: hard - -"widest-line@npm:^4.0.1": - version: 4.0.1 - resolution: "widest-line@npm:4.0.1" - dependencies: - string-width: ^5.0.1 - checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.0.1": - version: 8.0.1 - resolution: "wrap-ansi@npm:8.0.1" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"write-file-atomic@npm:^4.0.1": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c - languageName: node - linkType: hard - -"ws@npm:^6.1.0": - version: 6.2.2 - resolution: "ws@npm:6.2.2" - dependencies: - async-limiter: ~1.0.0 - checksum: aec3154ec51477c094ac2cb5946a156e17561a581fa27005cbf22c53ac57f8d4e5f791dd4bbba6a488602cb28778c8ab7df06251d590507c3c550fd8ebeee949 - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.11.0 - resolution: "ws@npm:8.11.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 - languageName: node - linkType: hard - -"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": - version: 5.1.0 - resolution: "xdg-basedir@npm:5.1.0" - checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea - languageName: node - linkType: hard - -"xtend@npm:^4.0.0": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 - languageName: node - linkType: hard - -"yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yauzl@npm:^2.10.0, yauzl@npm:^2.4.2": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"zwitch@npm:^1.0.0": - version: 1.0.5 - resolution: "zwitch@npm:1.0.5" - checksum: 28a1bebacab3bc60150b6b0a2ba1db2ad033f068e81f05e4892ec0ea13ae63f5d140a1d692062ac0657840c8da076f35b94433b5f1c329d7803b247de80f064a - languageName: node - linkType: hard - -"zwitch@npm:^2.0.0": - version: 2.0.4 - resolution: "zwitch@npm:2.0.4" - checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 - languageName: node - linkType: hard diff --git a/test-storybooks/server-kitchen-sink/package.json b/test-storybooks/server-kitchen-sink/package.json index aa4bc2a005be..4e908a34f22e 100644 --- a/test-storybooks/server-kitchen-sink/package.json +++ b/test-storybooks/server-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "server-kitchen-sink", - "version": "7.0.0-alpha.43", + "version": "7.2.0-alpha.0", "private": true, "description": "", "keywords": [], @@ -13,25 +13,6 @@ "start": "concurrently \"yarn server\" \"yarn storybook\"", "storybook": "SERVER_PORT=1137 NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook dev -p 9006 --quiet" }, - "devDependencies": { - "@storybook/addon-a11y": "7.0.0-alpha.43", - "@storybook/addon-actions": "7.0.0-alpha.43", - "@storybook/addon-backgrounds": "7.0.0-alpha.43", - "@storybook/addon-controls": "7.0.0-alpha.43", - "@storybook/addon-highlight": "7.0.0-alpha.43", - "@storybook/addon-links": "7.0.0-alpha.43", - "@storybook/node-logger": "7.0.0-alpha.43", - "@storybook/server": "7.0.0-alpha.43", - "@storybook/server-webpack5": "7.0.0-alpha.43", - "concurrently": "^5.3.0", - "cors": "^2.8.5", - "express": "^4.17.3", - "morgan": "^1.10.0", - "nodemon": "^2.0.7", - "pug": "^3.0.0", - "safe-identifier": "^0.4.1", - "storybook": "7.0.0-alpha.43" - }, "resolutions": { "@storybook/addon-a11y": "portal:../../code/addons/a11y", "@storybook/addon-actions": "portal:../../code/addons/actions", @@ -50,54 +31,35 @@ "@storybook/addon-storysource": "portal:../../code/addons/storysource", "@storybook/addon-toolbars": "portal:../../code/addons/toolbars", "@storybook/addon-viewport": "portal:../../code/addons/viewport", + "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/ember": "portal:../../code/frameworks/ember", - "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", - "@storybook/nextjs": "portal:../../code/frameworks/nextjs", - "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", - "@storybook/react-vite": "portal:../../code/frameworks/react-vite", - "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", - "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", - "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", - "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", - "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", - "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", - "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", - "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", - "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", - "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", - "@storybook/addons": "portal:../../code/lib/addons", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", - "@storybook/builder-manager": "portal:../../code/lib/builder-manager", - "@storybook/builder-vite": "portal:../../code/lib/builder-vite", - "@storybook/builder-webpack5": "portal:../../code/lib/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", + "@storybook/builder-manager": "portal:../../code/builders/builder-manager", + "@storybook/builder-vite": "portal:../../code/builders/builder-vite", + "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", - "sb": "portal:../../code/lib/cli-sb", - "storybook": "portal:../../code/lib/cli-storybook", - "@storybook/client-api": "portal:../../code/lib/client-api", + "@storybook/client-api": "portal:../../code/deprecated/client-api", "@storybook/client-logger": "portal:../../code/lib/client-logger", "@storybook/codemod": "portal:../../code/lib/codemod", "@storybook/components": "portal:../../code/lib/components", - "@storybook/core-client": "portal:../../code/lib/core-client", + "@storybook/core-client": "portal:../../code/deprecated/core-client", "@storybook/core-common": "portal:../../code/lib/core-common", "@storybook/core-events": "portal:../../code/lib/core-events", "@storybook/core-server": "portal:../../code/lib/core-server", "@storybook/core-webpack": "portal:../../code/lib/core-webpack", "@storybook/csf-tools": "portal:../../code/lib/csf-tools", "@storybook/docs-tools": "portal:../../code/lib/docs-tools", + "@storybook/ember": "portal:../../code/frameworks/ember", + "@storybook/html": "portal:../../code/renderers/html", + "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", "@storybook/instrumenter": "portal:../../code/lib/instrumenter", + "@storybook/manager": "portal:../../code/ui/manager", + "@storybook/nextjs": "portal:../../code/frameworks/nextjs", "@storybook/node-logger": "portal:../../code/lib/node-logger", "@storybook/postinstall": "portal:../../code/lib/postinstall", - "@storybook/preview-web": "portal:../../code/lib/preview-web", - "@storybook/router": "portal:../../code/lib/router", - "@storybook/source-loader": "portal:../../code/lib/source-loader", - "@storybook/store": "portal:../../code/lib/store", - "@storybook/telemetry": "portal:../../code/lib/telemetry", - "@storybook/theming": "portal:../../code/lib/theming", + "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", "@storybook/preset-html-webpack": "portal:../../code/presets/html-webpack", "@storybook/preset-preact-webpack": "portal:../../code/presets/preact-webpack", "@storybook/preset-react-webpack": "portal:../../code/presets/react-webpack", @@ -106,14 +68,49 @@ "@storybook/preset-vue-webpack": "portal:../../code/presets/vue-webpack", "@storybook/preset-vue3-webpack": "portal:../../code/presets/vue3-webpack", "@storybook/preset-web-components-webpack": "portal:../../code/presets/web-components-webpack", - "@storybook/html": "portal:../../code/renderers/html", - "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preview-web": "portal:../../code/deprecated/preview-web", "@storybook/react": "portal:../../code/renderers/react", + "@storybook/react-vite": "portal:../../code/frameworks/react-vite", + "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", + "@storybook/router": "portal:../../code/lib/router", "@storybook/server": "portal:../../code/renderers/server", + "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", + "@storybook/source-loader": "portal:../../code/lib/source-loader", + "@storybook/store": "portal:../../code/deprecated/store", "@storybook/svelte": "portal:../../code/renderers/svelte", + "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", + "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", + "@storybook/telemetry": "portal:../../code/lib/telemetry", + "@storybook/theming": "portal:../../code/lib/theming", "@storybook/vue": "portal:../../code/renderers/vue", + "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", + "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", "@storybook/vue3": "portal:../../code/renderers/vue3", + "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", + "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", "@storybook/web-components": "portal:../../code/renderers/web-components", - "@storybook/manager": "portal:../../code/ui/manager" + "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", + "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", + "sb": "portal:../../code/lib/cli-sb", + "storybook": "portal:../../code/lib/cli-storybook" + }, + "devDependencies": { + "@storybook/addon-a11y": "7.2.0-alpha.0", + "@storybook/addon-actions": "7.2.0-alpha.0", + "@storybook/addon-backgrounds": "7.2.0-alpha.0", + "@storybook/addon-controls": "7.2.0-alpha.0", + "@storybook/addon-highlight": "7.2.0-alpha.0", + "@storybook/addon-links": "7.2.0-alpha.0", + "@storybook/node-logger": "7.2.0-alpha.0", + "@storybook/server": "7.2.0-alpha.0", + "@storybook/server-webpack5": "7.2.0-alpha.0", + "concurrently": "^5.3.0", + "cors": "^2.8.5", + "express": "^4.17.3", + "morgan": "^1.10.0", + "nodemon": "^2.0.7", + "pug": "^3.0.0", + "safe-identifier": "^0.4.1", + "storybook": "7.2.0-alpha.0" } } \ No newline at end of file diff --git a/test-storybooks/server-kitchen-sink/yarn.lock b/test-storybooks/server-kitchen-sink/yarn.lock index b68c537bd6a4..e69de29bb2d1 100644 --- a/test-storybooks/server-kitchen-sink/yarn.lock +++ b/test-storybooks/server-kitchen-sink/yarn.lock @@ -1,11447 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@aw-web-design/x-default-browser@npm:1.4.88": - version: 1.4.88 - resolution: "@aw-web-design/x-default-browser@npm:1.4.88" - dependencies: - default-browser-id: 3.0.0 - bin: - x-default-browser: bin/x-default-browser.js - checksum: c85e61dc9e5bb04906d8ac29cce35369705c3ea3abe36a5afdecc9caefd7ee0f14596ccc6eb617c86790a67b6ee7f7f070a3e2f9e9152a8ba92adf2ccee1433a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.19.3, @babel/compat-data@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/compat-data@npm:7.19.4" - checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 - languageName: node - linkType: hard - -"@babel/core@npm:^7.12.10, @babel/core@npm:^7.13.16": - version: 7.19.6 - resolution: "@babel/core@npm:7.19.6" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helpers": ^7.19.4 - "@babel/parser": ^7.19.6 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 85c0bd38d0ef180aa2d23c3db6840a0baec88d2e05c30e7ffc3dfeb6b2b89d6e4864922f04997a1f4ce55f9dd469bf2e76518d5c7ae744b98516709d32769b73 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/generator@npm:7.19.6" - dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: 734fcb1fbef182e7b8967459cb39b81edd2701dd13170c154b368d4e086842f72ef214798c5a37e67e0a695dfb34b13143277bedcd9795b3b1b83da8e1d236c6 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.0, @babel/helper-compilation-targets@npm:^7.19.3": - version: 7.19.3 - resolution: "@babel/helper-compilation-targets@npm:7.19.3" - dependencies: - "@babel/compat-data": ^7.19.3 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f0c6fb77b6f113d70f308e7093f60dd465b697818badf5df0519d8dd12b6bfb1f4ad300b923207ce9f9c1c940ef58bff12ac4270c0863eadf9e303b7dd6d01b6 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.1.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 811cc90afe9fc25a74ed37fc0c1361a4a91b0b940235dd3958e3f03b366d40a903b40fc93b51bcb93be774aba573219f8f215664bea1d1301f58797ca6854f3f - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/helper-module-transforms@npm:7.19.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.19.4 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - checksum: c28692b37d4b5abacc775bcab52a74f44a493f38c58cb72b56a6c6d67a97485dd8aff6f26905abd1a924d3261a171d0214a9fb76f48d8598f1e35b8b29284792 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.19.0 - resolution: "@babel/helper-plugin-utils@npm:7.19.0" - checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.18.9": - version: 7.19.1 - resolution: "@babel/helper-replace-supers@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.19.1 - "@babel/types": ^7.19.0 - checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-simple-access@npm:7.19.4" - dependencies: - "@babel/types": ^7.19.4 - checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: 6e93ccd10248293082606a4b3e30eed32c6f796d378f6b662796c88f462f348aa368aadeb48eb410cfcc8250db93b2d6627c2e55662530f08fc25397e588d68a - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.19.0 - resolution: "@babel/helper-wrap-function@npm:7.19.0" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 2453a6b134f12cc779179188c4358a66252c29b634a8195c0cf626e17f9806c3c4c40e159cd8056c2ec82b69b9056a088014fa43d6ccc1aca67da8d9605da8fd - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helpers@npm:7.19.4" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.4 - "@babel/types": ^7.19.4 - checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.6, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": - version: 7.19.6 - resolution: "@babel/parser@npm:7.19.6" - bin: - parser: ./bin/babel-parser.js - checksum: 9a3dca4ee3acd7e4fc3b58e1e1526a11fa334acbfe437f8ebf91dfaf48e943c147ef64b1733ba0a55af57d1eccafbf4e4a4afc46a15becd921971fe2ddf309bf - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 93abb5cb179a13db171bfc2cdf79489598f43c50cc174f97a2b7bb1d44d24ade7109665a20cf4e317ad6c1c730f036f06478f7c7e789b4240be1abdb60d6452f - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f101555b00aee6ee0107c9e40d872ad646bbd3094abdbeda56d17b107df69a0cb49e5d02dcf5f9d8753e25564e798d08429f12d811aaa1b307b6a725c0b8159c - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b8d7ae99ed5ad784f39e7820e3ac03841f91d6ed60ab4a98c61d6112253da36013e12807bae4ffed0ef3cb318e47debac112ed614e03b403fb8b075b09a828ee - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dd87fa4a48c6408c5e85dbd6405a65cc8fe909e3090030df46df90df64cdf3e74007381a58ed87608778ee597eff7395d215274009bb3f5d8964b2db5557754f - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.18.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 90a2a59da305e6c8c83831e16079193df33d727a77a90972e286af2c8c0295fddb91b0978b88f16f63080d08a82b08ce3ee82a88b0488b3c51decc73c1d35786 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f2db40e26172f07c50b635cb61e1f36165de3ba868fcf608d967642f0d044b7c6beb0e7ecf17cbd421144b99e1eae7ad6031ded92925343bb0ed1d08707b514f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c8e56a972930730345f39f2384916fd8e711b3f4b4eae2ca9740e99958980118120d5cc9b6ac150f0965a5a35f825910e2c3013d90be3e9993ab6111df444569 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 54918a05375325ba0c60bc81abfb261e6f118bed2de94e4c17dca9a2006fc25e13b1a8b5504b9a881238ea394fd2f098f60b2eb3a392585d6348874565445e7b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 900f5c695755062b91eec74da6f9092f40b8fada099058b92576f1e23c55e9813ec437051893a9b3c05cefe39e8ac06303d4a91b384e1c03dd8dc1581ea11602 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.18.6" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-remap-async-to-generator": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2cca47468cf1aeefdc7ec35d670e195c86cee4de28a1970648c46a88ce6bd1806ef0bab27251b9e7fb791bb28a64dcd543770efd899f28ee5f7854e64e873d3 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-transform-block-scoping@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 86353ccbb57b4a0513ac2b1209271858f9c3f2c56b15a6225ff5f1c97ffb1c48f8984046a718a9835ecdae100cbe80ed0b9ca15a5554e33386671b56a8cd887c - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-classes@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.19.0 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5500953031fc3eae73f717c7b59ef406158a4a710d566a0f78a4944240bcf98f817f07cf1d6af0e749e21f0dfee29c36412b75d57b0a753c3ad823b70c596b79 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6bfbea207827d77592628973c0e8cc3319db636506bdc6e81e21582de2e767890e6975b382d0511e9ec3773b9f43691185df90832883bbf9251f688d27fbc1d - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-transform-destructuring@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0ca40f6abf7273dafefb7a1cc11fef2b9ab3edbd23188cdcff8cd5e30783b89d64e7813e44aae9efab417b90972ae80971bf6c4130eeeb112bcfb44100c72657 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-for-of@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ca64c623cf0c7a80ab6f07ebd3e6e4ade95e2ae806696f70b43eafe6394fa8ce21f2b1ffdd15df2067f7363d2ecfe26472a97c6c774403d2163fa05f50c98f17 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-amd@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4236aad970025bc10c772c1589b1e2eab8b7681933bb5ffa6e395d4c1a52532b28c47c553e3011b4272ea81e5ab39fe969eb5349584e8390e59771055c467d42 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-simple-access": ^7.19.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85d46945ab5ba3fff89e962d560a5d40253f228b9659a697683db3de07c0236e8cd60e5eb41958007359951a42bc268bf32350fcdb5b4a86f58dff1e032c096e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.19.0": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.6" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8526431cc81ea3eb232ad50862d0ed1cbb422b5251d14a8d6610d0ca0617f6e75f35179e98eb1235d0cccb980120350b9f112594e5646dd45378d41eaaf87342 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.19.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8a40f5d04f2140c44fe890a5a3fd72abc2a88445443ac2bd92e1e85d9366d3eb8f1ebb7e2c89d2daeaf213d9b28cb65605502ac9b155936d48045eeda6053494 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-parameters@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b5863300da60face8a250d91da16294333bd5626e9721b13a3ba2078bd2a5a190e32c6e7a1323d5f547f579aeb2804ff49a62a55fcad2b1d099e55a55b788ea - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-regenerator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - regenerator-transform: ^0.15.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 60bd482cb0343c714f85c3e19a13b3b5fa05ee336c079974091c0b35e263307f4e661f4555dff90707a87d5efe19b1d51835db44455405444ac1813e268ad750 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-spread@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e73a4deb095999185e70b524d0ff4e35df50fcda58299e700a6149a15bbc1a9b369ef1cef384e15a54b3c3ce316cc0f054dbf249dcd0d1ca59f4281dd4df9718 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.19.3 - resolution: "@babel/plugin-transform-typescript@npm:7.19.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 094c8c4ad05fee7f1bda243923cadb2b05b58448ea7cf9560e734c7cffd72acfeab3e1e0d2b084eb47a5a950ac316f970b83904b3504c203fa6fe9d8d61526a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.12.11": - version: 7.19.4 - resolution: "@babel/preset-env@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-async-generator-functions": ^7.19.1 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.19.4 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@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.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.19.4 - "@babel/plugin-transform-classes": ^7.19.0 - "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.19.4 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.8 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.18.6 - "@babel/plugin-transform-modules-commonjs": ^7.18.6 - "@babel/plugin-transform-modules-systemjs": ^7.19.0 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.18.8 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.19.0 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.19.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f12af25281f3c5e7df60fa1e79ad481ddd7f6a111d4c0fabcffdabf0eaed3a01b4f8c647ae5445ed1f58df70f52083ffd283e8919ade7afa73801a49c733d22c - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.13.13": - version: 7.18.6 - resolution: "@babel/preset-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-flow-strip-types": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/preset-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.16": - version: 7.18.9 - resolution: "@babel/register@npm:7.18.9" - dependencies: - clone-deep: ^4.0.1 - find-cache-dir: ^2.0.0 - make-dir: ^2.1.0 - pirates: ^4.0.5 - source-map-support: ^0.5.16 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.8.4": - version: 7.19.4 - resolution: "@babel/runtime@npm:7.19.4" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 66b7e3c13e9ee1d2c9397ea89144f29a875edee266a0eb2d9971be51b32fdbafc85808c7a45e011e6681899bb804b4e2ee2aed6dc07108dbbd6b11b6cc2afba6 - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/traverse@npm:7.19.6" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.6 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3fafa244f7d0b696a9d38f5da016a8f8db4b08ac60a067b299a8f54d91fb7c70c3edf06f921221d333137e65ffb64392526e68fdcf596ec91e95720037789d66 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.2.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": - version: 7.19.4 - resolution: "@babel/types@npm:7.19.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.3": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.14.54": - version: 0.14.54 - resolution: "@esbuild/linux-loong64@npm:0.14.54" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": - version: 2.1.2 - resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" - checksum: c59715902b9062aa7ff38973f298b509499fd146dbf564dc338b3f9e896da5bffb4ca676c27587fde79b3586003e24d65960acb62f009bca43dca34c76f8cbf7 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "@mdx-js/mdx@npm:2.1.5" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/mdx": ^2.0.0 - estree-util-build-jsx: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-util-to-js: ^1.1.0 - estree-walker: ^3.0.0 - hast-util-to-estree: ^2.0.0 - markdown-extensions: ^1.0.0 - periscopic: ^3.0.0 - remark-mdx: ^2.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - unified: ^10.0.0 - unist-util-position-from-estree: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - checksum: 51b8b40aafbbeee618fd289ef6e0311e28e2598c514016aefb094237fa9cdf3e1c1407267a08dc7f8da9673de354b5b946f3ceb7ba5735bdf869d18c2a49117d - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 - languageName: node - linkType: hard - -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.1 - resolution: "@pnpm/network.ca-file@npm:1.0.1" - dependencies: - graceful-fs: 4.2.10 - checksum: c847d8618725b037427616ce5e8edc305ffe94759b8bb3862431d72a79011beac2d8a097796678a2369a747e490f4e19833347a2e1b4f641e2da29238f8c5535 - languageName: node - linkType: hard - -"@pnpm/npm-conf@npm:^1.0.4": - version: 1.0.5 - resolution: "@pnpm/npm-conf@npm:1.0.5" - dependencies: - "@pnpm/network.ca-file": ^1.0.1 - config-chain: ^1.1.11 - checksum: 0c5f1a63782309a877b70e3cbdd21ff1da57549924a941772bafd0117323881fdcda0e9753f0a695c3f85f4360f5ca27a0e20153abae6985350502f2d94b7d40 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@storybook/addon-a11y@portal:../../code/addons/a11y::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-a11y@portal:../../code/addons/a11y::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addon-highlight": 7.0.0-alpha.42 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - axe-core: ^4.2.0 - global: ^4.4.0 - lodash: ^4.17.21 - react-sizeme: ^3.0.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-actions@portal:../../code/addons/actions::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-actions@portal:../../code/addons/actions::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - polished: ^4.2.2 - prop-types: ^15.7.2 - react-inspector: ^6.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - uuid-browser: ^3.1.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-backgrounds@portal:../../code/addons/backgrounds::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - memoizerific: ^1.11.3 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-controls@portal:../../code/addons/controls::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-controls@portal:../../code/addons/controls::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/blocks": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - lodash: ^4.17.21 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addon-highlight@portal:../../code/addons/highlight::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-highlight@portal:../../code/addons/highlight::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/addon-links@portal:../../code/addons/links::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-links@portal:../../code/addons/links::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - global: ^4.4.0 - prop-types: ^15.7.2 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addons@portal:../../code/lib/addons::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addons@portal:../../code/lib/addons::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/api@portal:../../code/lib/api::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/api@portal:../../code/lib/api::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - semver: ^7.3.7 - store2: ^2.12.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/blocks@portal:../../code/lib/blocks::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/blocks@portal:../../code/lib/blocks::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/lodash": ^4.14.167 - color-convert: ^2.0.1 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - markdown-to-jsx: ^7.1.3 - memoizerific: ^1.11.3 - polished: ^4.2.2 - react-colorful: ^5.1.2 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - "@types/ejs": ^3.1.1 - "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 - browser-assert: ^1.2.1 - ejs: ^3.1.8 - esbuild: ^0.14.48 - esbuild-plugin-alias: ^0.2.1 - express: ^4.17.1 - fs-extra: ^9.0.1 - process: ^0.11.10 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/core-webpack": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/router": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-loader: ^8.2.5 - babel-plugin-named-exports-order: ^0.0.2 - browser-assert: ^1.2.1 - case-sensitive-paths-webpack-plugin: ^2.4.0 - css-loader: ^6.7.1 - fork-ts-checker-webpack-plugin: ^7.2.8 - global: ^4.4.0 - html-webpack-plugin: ^5.5.0 - path-browserify: ^1.0.1 - process: ^0.11.10 - semver: ^7.3.7 - style-loader: ^3.3.1 - terser-webpack-plugin: ^5.3.1 - ts-dedent: ^2.0.0 - util: ^0.12.4 - util-deprecate: ^1.0.2 - webpack: 5 - webpack-dev-middleware: ^5.3.1 - webpack-hot-middleware: ^2.25.1 - webpack-virtual-modules: ^0.4.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - global: ^4.4.0 - qs: ^6.10.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - global: ^4.4.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channels@portal:../../code/lib/channels::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channels@portal:../../code/lib/channels::locator=server-kitchen-sink%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/cli@portal:../../code/lib/cli::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/cli@portal:../../code/lib/cli::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@babel/preset-env": ^7.12.11 - "@storybook/codemod": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-server": 7.0.0-alpha.42 - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/semver": ^7.3.4 - boxen: ^5.1.2 - chalk: ^4.1.0 - commander: ^6.2.1 - cross-spawn: ^7.0.3 - degit: ^2.8.4 - detect-indent: ^6.1.0 - envinfo: ^7.7.3 - execa: ^5.0.0 - express: ^4.17.1 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - get-port: ^5.1.1 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - leven: ^3.1.0 - prompts: ^2.4.0 - puppeteer-core: ^2.1.1 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - shelljs: ^0.8.5 - strip-json-comments: ^3.0.1 - ts-dedent: ^2.0.0 - update-notifier: ^6.0.2 - util-deprecate: ^1.0.2 - bin: - getstorybook: ./bin/index.js - sb: ./bin/index.js - languageName: node - linkType: soft - -"@storybook/client-api@portal:../../code/lib/client-api::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-api@portal:../../code/lib/client-api::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - "@types/qs": ^6.9.5 - "@types/webpack-env": ^1.16.4 - global: ^4.4.0 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/client-logger@portal:../../code/lib/client-logger::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-logger@portal:../../code/lib/client-logger::locator=server-kitchen-sink%40workspace%3A." - dependencies: - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/codemod@portal:../../code/lib/codemod::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/codemod@portal:../../code/lib/codemod::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/types": ^7.12.11 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - cross-spawn: ^7.0.3 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - lodash: ^4.17.21 - prettier: ">=2.2.1 <=2.3.0" - recast: ^0.19.0 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/components@portal:../../code/lib/components::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/components@portal:../../code/lib/components::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/core-client@portal:../../code/lib/core-client::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-client@portal:../../code/lib/core-client::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - global: ^4.4.0 - regenerator-runtime: ^0.13.7 - util-deprecate: ^1.0.2 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-common@portal:../../code/lib/core-common::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-common@portal:../../code/lib/core-common::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/csf": next - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - "@types/node": ^16.0.0 - "@types/pretty-hrtime": ^1.0.0 - chalk: ^4.1.0 - esbuild: ^0.14.48 - esbuild-register: ^3.3.3 - express: ^4.17.1 - file-system-cache: ^2.0.0 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - glob: ^7.1.6 - handlebars: ^4.7.7 - lazy-universal-dotenv: ^3.0.1 - picomatch: ^2.3.0 - pkg-dir: ^5.0.0 - pretty-hrtime: ^1.0.3 - resolve-from: ^5.0.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-events@portal:../../code/lib/core-events::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-events@portal:../../code/lib/core-events::locator=server-kitchen-sink%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/core-server@portal:../../code/lib/core-server::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-server@portal:../../code/lib/core-server::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@aw-web-design/x-default-browser": 1.4.88 - "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/docs-mdx": 0.0.1-canary.12433cf.0 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/node-fetch": ^2.5.7 - "@types/pretty-hrtime": ^1.0.0 - "@types/semver": ^7.3.4 - better-opn: ^2.1.1 - boxen: ^5.1.2 - chalk: ^4.1.0 - cli-table3: ^0.6.1 - compression: ^1.7.4 - detect-port: ^1.3.0 - express: ^4.17.1 - fs-extra: ^9.0.1 - global: ^4.4.0 - globby: ^11.0.2 - ip: ^2.0.0 - lodash: ^4.17.21 - node-fetch: ^2.6.7 - open: ^8.4.0 - pretty-hrtime: ^1.0.3 - prompts: ^2.4.0 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - serve-favicon: ^2.5.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - watchpack: ^2.2.0 - ws: ^8.2.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/generator": ^7.12.11 - "@babel/parser": ^7.12.11 - "@babel/traverse": ^7.12.11 - "@babel/types": ^7.12.11 - "@storybook/csf": next - fs-extra: ^9.0.1 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf@npm:next": - version: 0.0.2-next.0 - resolution: "@storybook/csf@npm:0.0.2-next.0" - dependencies: - expect-type: ^0.14.2 - lodash: ^4.17.15 - type-fest: ^2.19.0 - checksum: 8bfcb27f03a3d443b10af09f537ca3891cadcd5b2d48f1c5551f477fd37a154fc28bd8d204ec7479a6ff9f2cf61afd9cf0d00215bd77a64bf12c32e7e49ce90d - languageName: node - linkType: hard - -"@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0": - version: 0.0.1-canary.12433cf.0 - resolution: "@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0" - dependencies: - "@babel/traverse": ^7.12.11 - "@mdx-js/mdx": ^2.0.0 - estree-to-babel: ^4.9.0 - hast-util-to-estree: ^2.0.2 - checksum: 2c0d2cd4a01e51470b2cd3bdbf60ee09eaff476117ef258fc0336b04ddb8ef205f18aa256c67bc914533788932f99b66504c3d2895738f39e862ccc2d05f13c1 - languageName: node - linkType: hard - -"@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - doctrine: ^3.0.0 - lodash: ^4.17.21 - languageName: node - linkType: soft - -"@storybook/node-logger@portal:../../code/lib/node-logger::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/node-logger@portal:../../code/lib/node-logger::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@types/npmlog": ^4.1.2 - chalk: ^4.1.0 - npmlog: ^5.0.1 - pretty-hrtime: ^1.0.3 - languageName: node - linkType: soft - -"@storybook/preset-server-webpack@portal:../../code/presets/server-webpack::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preset-server-webpack@portal:../../code/presets/server-webpack::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/core-server": 7.0.0-alpha.42 - "@storybook/core-webpack": 7.0.0-alpha.42 - "@storybook/server": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - global: ^4.4.0 - react: 16.14.0 - react-dom: 16.14.0 - safe-identifier: ^0.4.1 - ts-dedent: ^2.0.0 - yaml-loader: ^0.8.0 - languageName: node - linkType: soft - -"@storybook/preview-web@portal:../../code/lib/preview-web::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preview-web@portal:../../code/lib/preview-web::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - ansi-to-html: ^0.6.11 - global: ^4.4.0 - lodash: ^4.17.21 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - languageName: node - linkType: soft - -"@storybook/router@portal:../../code/lib/router::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/router@portal:../../code/lib/router::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - qs: ^6.10.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/server-webpack5@portal:../../code/frameworks/server-webpack5::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/server-webpack5@portal:../../code/frameworks/server-webpack5::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/preset-server-webpack": 7.0.0-alpha.42 - "@storybook/server": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - react: 16.14.0 - react-dom: 16.14.0 - languageName: node - linkType: soft - -"@storybook/server@portal:../../code/renderers/server::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/server@portal:../../code/renderers/server::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - global: ^4.4.0 - react: 16.14.0 - react-dom: 16.14.0 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/store@portal:../../code/lib/store::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/store@portal:../../code/lib/store::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - slash: ^3.0.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/telemetry@portal:../../code/lib/telemetry::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/telemetry@portal:../../code/lib/telemetry::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - chalk: ^4.1.0 - detect-package-manager: ^2.0.1 - fetch-retry: ^5.0.2 - fs-extra: ^9.0.1 - isomorphic-unfetch: ^3.1.0 - nanoid: ^3.3.1 - read-pkg-up: ^7.0.1 - languageName: node - linkType: soft - -"@storybook/theming@portal:../../code/lib/theming::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/theming@portal:../../code/lib/theming::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/manager@portal:../../code/ui/manager::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/manager@portal:../../code/ui/manager::locator=server-kitchen-sink%40workspace%3A." - languageName: node - linkType: soft - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@types/acorn@npm:^4.0.0": - version: 4.0.6 - resolution: "@types/acorn@npm:4.0.6" - dependencies: - "@types/estree": "*" - checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0": - version: 7.1.19 - resolution: "@types/babel__core@npm:7.1.19" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.18.2 - resolution: "@types/babel__traverse@npm:7.18.2" - dependencies: - "@babel/types": ^7.3.0 - checksum: 05972775e21cf07753b3bec725bf76f5a9804f99f660d323040746e3c8a4fe1b4ef6df17d7a80c4e2e335382cc72c62fc5a7079af836871ff9cbf0c21804e6d9 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - -"@types/ejs@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/ejs@npm:3.1.1" - checksum: 12fa444920aaa70af2fae4424fa62b49c23b31a37129c428b7c9f9068e58c0696b4e5601b0449f87bae8794e039c679a43651c356c34f17d1bb460456dd41441 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.7 - resolution: "@types/eslint@npm:8.4.7" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 5e1b8ed100dcb96c74098030ca00386d1661e83261c0b64a841e570a4dd74740bc15fe04363cb22d7c6e0c56cee61f8b2c1455ec7124e69226d41fb4fed2028e - languageName: node - linkType: hard - -"@types/estree-jsx@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree-jsx@npm:1.0.0" - dependencies: - "@types/estree": "*" - checksum: 851d7afb63a89fb9ce7822563930660433f29106d72db279ce9c99f791ec996ef21b05adc6f545325cd1745b3041cc86422f0ffa39a06734305b90cfbc871765 - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 - languageName: node - linkType: hard - -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.31 - resolution: "@types/express-serve-static-core@npm:4.17.31" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df - languageName: node - linkType: hard - -"@types/express@npm:^4.7.0": - version: 4.17.14 - resolution: "@types/express@npm:4.17.14" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.18 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 15c1af46d02de834e4a225eccaa9d85c0370fdbb3ed4e1bc2d323d24872309961542b993ae236335aeb3e278630224a6ea002078d39e651d78a3b0356b1eaa79 - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" - dependencies: - "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - -"@types/is-function@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/is-function@npm:1.0.1" - checksum: dfbb591936dfebd4686b109603bc3e2d23a17087d6ec913fb35cd6b5a4ef908ed68ab93cb27d508f1546d312edf03e663cb6738d3b67d420c68da961ac2b3d1f - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.167": - version: 4.14.186 - resolution: "@types/lodash@npm:4.14.186" - checksum: ee0c1368a8100bb6efb88335107473a41928fc307ff1ef4ff1278868ccddba9c04c68c36d1ffe3a0392ef4a956e1955f7de3203ec09df4f1655dd1b88485c549 - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" - dependencies: - "@types/unist": "*" - checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313 - languageName: node - linkType: hard - -"@types/mdx@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/mdx@npm:2.0.3" - checksum: 41deb51c29535913af01d25f0e1414cfb5a6948d0e60e77e4aca895694de48bf0ac69c5a81fe2d9617d726cb253001ef82a65b683d5ef51987d15aa1931d086b - languageName: node - linkType: hard - -"@types/mime-types@npm:^2.1.0": - version: 2.1.1 - resolution: "@types/mime-types@npm:2.1.1" - checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c - languageName: node - linkType: hard - -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.5.7": - version: 2.6.2 - resolution: "@types/node-fetch@npm:2.6.2" - dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 18.11.4 - resolution: "@types/node@npm:18.11.4" - checksum: 1de782b4eef4a5115396ae62137f248390ee5d1d9e9eeb49599714554cce1328af43da31bc28e7bab5a0ef859538a584a907b26163a59b42bc87b8317dc00bb8 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.0 - resolution: "@types/node@npm:16.18.0" - checksum: 4eb4b88012c7d3f527c1b4989cf085479d44ce418fb047fb8d3b545601a3e1fc436de8491b9734debeda8eae241963fb802cea87a5a5698bf5f6f3d489d446a8 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/npmlog@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/npmlog@npm:4.1.4" - checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: a6cdee417eea6f7af914e4fcd13e05822864ce10b5d7646525632e86d69b79123eec55a5d3fff0155ba46b61902775e1644bcb80e1e4dffdac28e7febb089083 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4": - version: 7.3.12 - resolution: "@types/semver@npm:7.3.12" - checksum: 35536b2fc5602904f21cae681f6c9498e177dab3f54ae37c92f9a1b7e43c35f18bcd81e1c98c1cf0d33ee046bb06c771e9928c1c00a401d56a03f56549252a15 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.0 - resolution: "@types/serve-static@npm:1.15.0" - dependencies: - "@types/mime": "*" - "@types/node": "*" - checksum: b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 - languageName: node - linkType: hard - -"@types/unist@npm:*, @types/unist@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db - languageName: node - linkType: hard - -"@types/webpack-env@npm:^1.16.4": - version: 1.18.0 - resolution: "@types/webpack-env@npm:1.18.0" - checksum: ecf4daa31cb37d474ac0ce058d83a3cadeb9881ca8107ae93c2299eaa9954943aae09b43e143c62ccbe4288a14db00c918c9debd707afe17c3998f873eaabc59 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec - languageName: node - linkType: hard - -"@yarnpkg/esbuild-plugin-pnp@npm:^3.0.0-rc.10": - version: 3.0.0-rc.15 - resolution: "@yarnpkg/esbuild-plugin-pnp@npm:3.0.0-rc.15" - dependencies: - tslib: ^2.4.0 - peerDependencies: - esbuild: ">=0.10.0" - checksum: 04da15355a99773b441742814ba4d0f3453a83df47aa07e215f167e156f109ab8e971489c8b1a4ddf3c79d568d35213f496ad52e97298228597e1aacc22680aa - languageName: node - linkType: hard - -"abbrev@npm:1, abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" - peerDependencies: - acorn: ^8 - checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.0.0": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.0.0, acorn@npm:^8.5.0, acorn@npm:^8.7.1": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" - bin: - acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc - languageName: node - linkType: hard - -"address@npm:^1.0.1": - version: 1.2.1 - resolution: "address@npm:1.2.1" - checksum: e4c0f961464ccad09c3f7ed3a8d12f609354a87dd1ad379e43661e9684446fbf158be3edeef85e1590dfc6c88c0897c5908bc18f232eb86e43993a2ada5820fa - languageName: node - linkType: hard - -"agent-base@npm:5": - version: 5.1.1 - resolution: "agent-base@npm:5.1.1" - checksum: 61ae789f3019f1dc10e8cba6d3ae9826949299a4e54aaa1cfa2fa37c95a108e70e95423b963bb987d7891a703fd9a5c383a506f4901819f3ee56f3147c0aa8ab - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.0.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: ^3.1.3 - peerDependencies: - ajv: ^8.8.2 - checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.8.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: ^4.1.0 - checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d - languageName: node - linkType: hard - -"ansi-html-community@npm:0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 - languageName: node - linkType: hard - -"ansi-regex@npm:^4.1.0": - version: 4.1.1 - resolution: "ansi-regex@npm:4.1.1" - checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - -"ansi-to-html@npm:^0.6.11": - version: 0.6.15 - resolution: "ansi-to-html@npm:0.6.15" - dependencies: - entities: ^2.0.0 - bin: - ansi-to-html: bin/ansi-to-html - checksum: c899362a29b92c8ae075b72168b826f7c233875b475719304942f80695e0ce4a6812845021192da5fb0ac80b10209b4fae5aede42620a1b1b3d3b30f3ef77a86 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"app-root-dir@npm:^1.0.2": - version: 1.0.2 - resolution: "app-root-dir@npm:1.0.2" - checksum: d4b1653fc60b6465b982bf5a88b12051ed2d807d70609386a809306e1c636496f53522d61fa30f9f98c71aaae34f34e1651889cf17d81a44e3dafd2859d495ad - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d - languageName: node - linkType: hard - -"assert-never@npm:^1.2.1": - version: 1.2.1 - resolution: "assert-never@npm:1.2.1" - checksum: ea4f1756d90f55254c4dc7a20d6c5d5bc169160562aefe3d8756b598c10e695daf568f21b6d6b12245d7f3782d3ff83ef6a01ab75d487adfc6909470a813bf8c - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - -"ast-types@npm:0.13.3": - version: 0.13.3 - resolution: "ast-types@npm:0.13.3" - checksum: 23d08bc589aacb787e22ac7efc086ebcc158e739c057dac74de409a97e26ec9c5bcb2d0709f5678bd5d90f67d93f62fba0e5fe98161a0a3a7534d55a155544d8 - languageName: node - linkType: hard - -"ast-types@npm:0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: ^2.0.1 - checksum: 8674a77307764979f0a0b2006b7223a4b789abffaa7acbf6a1132650a799252155170173a1ff6a7fb6897f59437fc955f2707bdfc391b0797750898876e6c9ed - languageName: node - linkType: hard - -"astring@npm:^1.8.0": - version: 1.8.3 - resolution: "astring@npm:1.8.3" - bin: - astring: bin/astring - checksum: 72fc85de7420ca6edeee15157fd65c5253a8cb1ced979ba66ecc439fa569f1c1cc242e4c0a9fc5a6380bf73fb5ec894dc65cf1dc0f3d1cab8c707b31df7daa1c - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - -"async@npm:^3.2.3": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"axe-core@npm:^4.2.0": - version: 4.4.3 - resolution: "axe-core@npm:4.4.3" - checksum: c3ea000d9ace3ba0bc747c8feafc24b0de62a0f7d93021d0f77b19c73fca15341843510f6170da563d51535d6cfb7a46c5fc0ea36170549dbb44b170208450a2 - languageName: node - linkType: hard - -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - -"babel-loader@npm:^8.2.5": - version: 8.2.5 - resolution: "babel-loader@npm:8.2.5" - dependencies: - find-cache-dir: ^3.3.1 - loader-utils: ^2.0.0 - make-dir: ^3.1.0 - schema-utils: ^2.6.5 - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: a6605557885eabbc3250412405f2c63ca87287a95a439c643fdb47d5ea3d5326f72e43ab97be070316998cb685d5dfbc70927ce1abe8be7a6a4f5919287773fb - languageName: node - linkType: hard - -"babel-plugin-named-exports-order@npm:^0.0.2": - version: 0.0.2 - resolution: "babel-plugin-named-exports-order@npm:0.0.2" - checksum: d918390a09c0148893ea93bdc9c4fc6a03447c688eaf40bed0f0682d036e985ecee830b90fec2ab149b8dc0cb3220a2c0ac5054e42626bdfe0b436b505b7ef22 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c - languageName: node - linkType: hard - -"babel-walk@npm:3.0.0-canary-5": - version: 3.0.0-canary-5 - resolution: "babel-walk@npm:3.0.0-canary-5" - dependencies: - "@babel/types": ^7.9.6 - checksum: 6fe7ee3889343a6602f665c28ea135956a0767d7f7ca5fc1d72c5243e2f6e9d8a64f51254bf2fd0cce47b79fceeccf7a357f37cfa755a509dfb930a21151837c - languageName: node - linkType: hard - -"bail@npm:^2.0.0": - version: 2.0.2 - resolution: "bail@npm:2.0.2" - checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"basic-auth@npm:~2.0.1": - version: 2.0.1 - resolution: "basic-auth@npm:2.0.1" - dependencies: - safe-buffer: 5.1.2 - checksum: 3419b805d5dfc518f3a05dcf42aa53aa9ce820e50b6df5097f9e186322e1bc733c36722b624802cd37e791035aa73b828ed814d8362333d42d7f5cd04d7a5e48 - languageName: node - linkType: hard - -"batch-processor@npm:1.0.0": - version: 1.0.0 - resolution: "batch-processor@npm:1.0.0" - checksum: 5519b024f6cd0e95a543bb3edf0ae19e5badae0c32b30b41839b4469bbb1f91e14fc04bff3759cd9c2621aa9e16def48c938783e9027e7ec977fba62d537a468 - languageName: node - linkType: hard - -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" - dependencies: - open: ^7.0.3 - checksum: 3d1a945d125cbbc6e6a841bef7540435d77d5aa61fc4d345896f5f0b3780fcf9c7145373deaedf62d674a427b187ae973f4410884f9fea0c15f7f01f9dc339c7 - languageName: node - linkType: hard - -"big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"body-parser@npm:1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: ^3.0.0 - camelcase: ^6.2.0 - chalk: ^4.1.0 - cli-boxes: ^2.2.1 - string-width: ^4.2.2 - type-fest: ^0.20.2 - widest-line: ^3.1.0 - wrap-ansi: ^7.0.0 - checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 - languageName: node - linkType: hard - -"boxen@npm:^7.0.0": - version: 7.0.0 - resolution: "boxen@npm:7.0.0" - dependencies: - ansi-align: ^3.0.1 - camelcase: ^7.0.0 - chalk: ^5.0.1 - cli-boxes: ^3.0.0 - string-width: ^5.1.2 - type-fest: ^2.13.0 - widest-line: ^4.0.1 - wrap-ansi: ^8.0.1 - checksum: b917cf7a168ef3149635a8c02d5c9717d66182348bd27038d85328ad12655151e3324db0f2815253846c33e5f0ddf28b6cd52d56a12b9f88617b7f8f722b946a - languageName: node - linkType: hard - -"bplist-parser@npm:^0.2.0": - version: 0.2.0 - resolution: "bplist-parser@npm:0.2.0" - dependencies: - big-integer: ^1.6.44 - checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"browser-assert@npm:^1.2.1": - version: 1.2.1 - resolution: "browser-assert@npm:1.2.1" - checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" - dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 - bin: - browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 - languageName: node - linkType: hard - -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.1": - version: 10.2.2 - resolution: "cacheable-request@npm:10.2.2" - dependencies: - "@types/http-cache-semantics": ^4.0.1 - get-stream: ^6.0.1 - http-cache-semantics: ^4.1.0 - keyv: ^4.5.0 - mimic-response: ^4.0.0 - normalize-url: ^7.2.0 - responselike: ^3.0.0 - checksum: 15e8ab68debc7a82ff21607f9b6edfdb3a97fdee402efeb183ae605c5ef47d0236e3c4528347f25afcdcaf2b3186f0f2f00a9d4014a323148931337e7ef1edc3 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - -"camelcase@npm:^5.0.0": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"camelcase@npm:^7.0.0": - version: 7.0.0 - resolution: "camelcase@npm:7.0.0" - checksum: 162d59607b3b46e910af151348d5e40af579048a5d07f3c06370b096ca0d42ba4a88bd92cf4e3482645ba1ffdd6f744d8273c1b9594e493fc10883d54adf7cbe - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001423 - resolution: "caniuse-lite@npm:1.0.30001423" - checksum: fe443f323f5dc6a858ef7d7deddb93db5e5f9a35e22970c4a65c4ef793bb696c1e2f038df572722d9edf29021e43ed16f5131faafde783563bd0d9eccf486592 - languageName: node - linkType: hard - -"case-sensitive-paths-webpack-plugin@npm:^2.4.0": - version: 2.4.0 - resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: bcf469446eeee9ac0046e30860074ebb9aa4803aab9140e6bb72b600b23b1d70635690754be4504ce35cd99cdf05226bee8d894ba362a3f5485d5f6310fc6d02 - languageName: node - linkType: hard - -"ccount@npm:^2.0.0": - version: 2.0.1 - resolution: "ccount@npm:2.0.1" - checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"chalk@npm:^5.0.1": - version: 5.1.2 - resolution: "chalk@npm:5.1.2" - checksum: 804d7485e33531abe45b14e91026ceb5615974a8c04259ab0806f214a7666f6ea03e39ab124f7d5a0c78a83fda89005f236db3c5f10c2abe9ae875f7aa56bcb5 - languageName: node - linkType: hard - -"character-entities-html4@npm:^2.0.0": - version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0" - checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d - languageName: node - linkType: hard - -"character-entities-legacy@npm:^3.0.0": - version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0" - checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 - languageName: node - linkType: hard - -"character-entities@npm:^2.0.0": - version: 2.0.2 - resolution: "character-entities@npm:2.0.2" - checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def - languageName: node - linkType: hard - -"character-parser@npm:^2.2.0": - version: 2.2.0 - resolution: "character-parser@npm:2.2.0" - dependencies: - is-regex: ^1.0.3 - checksum: 71826fae509d4dc3ef07c2e824da9c8853f910ba0d8fe699edaab263051fd3b8db77bb96e46ed896bb36ed1d86108e6d6ceedff436bec7786ba7f0b585a0bc93 - languageName: node - linkType: hard - -"character-reference-invalid@npm:^2.0.0": - version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1" - checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee - languageName: node - linkType: hard - -"chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.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 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.5.0 - resolution: "ci-info@npm:3.5.0" - checksum: 7def3789706ec18db3dc371dc699bd0df12057d54b796201f50ba87200e0849d3d83c68da00ab2ab8cdd738d91b25ab9e31620588f8d7e64ffaa1f760fd121cf - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" - dependencies: - source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 - languageName: node - linkType: hard - -"cli-boxes@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-boxes@npm:3.0.0" - checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": 1.5.0 - string-width: ^4.2.0 - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c - languageName: node - linkType: hard - -"cliui@npm:^5.0.0": - version: 5.0.0 - resolution: "cliui@npm:5.0.0" - dependencies: - string-width: ^3.1.0 - strip-ansi: ^5.2.0 - wrap-ansi: ^5.1.0 - checksum: 0bb8779efe299b8f3002a73619eaa8add4081eb8d1c17bc4fedc6240557fb4eacdc08fe87c39b002eacb6cfc117ce736b362dbfd8bf28d90da800e010ee97df4 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: ^2.0.4 - kind-of: ^6.0.2 - shallow-clone: ^3.0.0 - checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colorette@npm:^2.0.10": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "comma-separated-tokens@npm:2.0.2" - checksum: 8fa68ff2605233571536a802a7c712b0c766e0c5088e067be72740054e84d040865eea945c984924ae84932bcc3e25a99f71601220b438e875b5f42b87277767 - languageName: node - linkType: hard - -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - -"concurrently@npm:^5.3.0": - version: 5.3.0 - resolution: "concurrently@npm:5.3.0" - dependencies: - chalk: ^2.4.2 - date-fns: ^2.0.1 - lodash: ^4.17.15 - read-pkg: ^4.0.1 - rxjs: ^6.5.2 - spawn-command: ^0.0.2-1 - supports-color: ^6.1.0 - tree-kill: ^1.2.2 - yargs: ^13.3.0 - bin: - concurrently: bin/concurrently.js - checksum: e12f32eab48e50fc5b7752dc43db7c78f5b553efc625d3b8741c3dd3088ba0050cb8e506f008c8a5fe30d7980849639d12b359a5aea88fd16707a0161b05babb - languageName: node - linkType: hard - -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab - languageName: node - linkType: hard - -"configstore@npm:^6.0.0": - version: 6.0.0 - resolution: "configstore@npm:6.0.0" - dependencies: - dot-prop: ^6.0.1 - graceful-fs: ^4.2.6 - unique-string: ^3.0.0 - write-file-atomic: ^3.0.3 - xdg-basedir: ^5.0.1 - checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"constantinople@npm:^4.0.1": - version: 4.0.1 - resolution: "constantinople@npm:4.0.1" - dependencies: - "@babel/parser": ^7.6.0 - "@babel/types": ^7.6.1 - checksum: 8f70f16ddf97cdc263ca16b398bc52470c25e2ec5ed27bc015f251b849597223ce3a123e6924f43efddeb75422c1f55b7e56e0e2e594e4dd2964bfc9392b9b82 - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"core-js-compat@npm:^3.25.1": - version: 3.26.0 - resolution: "core-js-compat@npm:3.26.0" - dependencies: - browserslist: ^4.21.4 - checksum: 120780ec33d441e476810abac9bf57199c2083006b179dc23d0ab0cfea096eff2a2fc3e9cb315d245735df661cfa4b76a8b8c37f5056fd02428a3cd2ea1d9f36 - languageName: node - linkType: hard - -"core-js@npm:^3.0.4": - version: 3.26.0 - resolution: "core-js@npm:3.26.0" - checksum: 0149eb9d3909fde9c17626af3a6e625c326e8598d0bb5e6c5b48a18e5fcd4eaf48d4964d873667d8148542ff590fb98eb3f93618da114ca54999d6bc0349734b - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"cors@npm:^2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" - dependencies: - object-assign: ^4 - vary: ^1 - checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.1": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" - 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 - checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"crypto-random-string@npm:^4.0.0": - version: 4.0.0 - resolution: "crypto-random-string@npm:4.0.0" - dependencies: - type-fest: ^1.0.1 - checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 - languageName: node - linkType: hard - -"css-loader@npm:^6.7.1": - version: 6.7.1 - resolution: "css-loader@npm:6.7.1" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.7 - 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 - postcss-value-parser: ^4.2.0 - semver: ^7.3.5 - peerDependencies: - webpack: ^5.0.0 - checksum: 170fdbc630a05a43679ef60fa97694766b568dbde37adccc0faafa964fc675f08b976bc68837bb73b61d60240e8d2cbcbf51540fe94ebc9dafc56e7c46ba5527 - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 - languageName: node - linkType: hard - -"css-what@npm:^6.0.1": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"date-fns@npm:^2.0.1": - version: 2.29.3 - resolution: "date-fns@npm:2.29.3" - checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.3": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"decamelize@npm:^1.2.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa - languageName: node - linkType: hard - -"decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" - dependencies: - character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"default-browser-id@npm:3.0.0": - version: 3.0.0 - resolution: "default-browser-id@npm:3.0.0" - dependencies: - bplist-parser: ^0.2.0 - untildify: ^4.0.0 - checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - -"degit@npm:^2.8.4": - version: 2.8.4 - resolution: "degit@npm:2.8.4" - bin: - degit: degit - checksum: bb58c48ff1ae3828825d7e614db703afd69905abc2d666009bb4affecb8d87be993511556395889dffc99a5eba7a058117402050c509a6e2c3dd56a579120236 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 - languageName: node - linkType: hard - -"detect-indent@npm:^6.1.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d - languageName: node - linkType: hard - -"detect-package-manager@npm:^2.0.1": - version: 2.0.1 - resolution: "detect-package-manager@npm:2.0.1" - dependencies: - execa: ^5.1.1 - checksum: e72b910182d5ad479198d4235be206ac64a479257b32201bb06f3c842cc34c65ea851d46f72cc1d4bf535bcc6c4b44b5b86bb29fe1192b8c9c07b46883672f28 - languageName: node - linkType: hard - -"detect-port@npm:^1.3.0": - version: 1.5.1 - resolution: "detect-port@npm:1.5.1" - dependencies: - address: ^1.0.1 - debug: 4 - bin: - detect: bin/detect-port.js - detect-port: bin/detect-port.js - checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b - languageName: node - linkType: hard - -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"doctypes@npm:^1.1.0": - version: 1.1.0 - resolution: "doctypes@npm:1.1.0" - checksum: 6e6c2d1a80f2072dc4831994c914c44455e341c5ab18c16797368a0afd59d7c22f3335805ba2c1dd2931e9539d1ba8b613b7650dc63f6ab56b77b8d888055de8 - languageName: node - linkType: hard - -"dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 - languageName: node - linkType: hard - -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa - languageName: node - linkType: hard - -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: ^2.0.0 - checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 - languageName: node - linkType: hard - -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 8017675b7f254384915d55f9eb6388e577cf0a1231a28d54b0ca03b782be9501b0ac90ac57338636d395fa59051e6209e9b44b8ddf169ce6076dffb5dea227d3 - languageName: node - linkType: hard - -"dotenv@npm:^8.0.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 38e902c80b0666ab59e9310a3d24ed237029a7ce34d976796349765ac96b8d769f6df19090f1f471b77a25ca391971efde8a1ea63bb83111bd8bec8e5cc9b2cd - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"ejs@npm:^3.1.8": - version: 3.1.8 - resolution: "ejs@npm:3.1.8" - dependencies: - jake: ^10.8.5 - bin: - ejs: bin/cli.js - checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.251": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a - languageName: node - linkType: hard - -"element-resize-detector@npm:^1.2.2": - version: 1.2.4 - resolution: "element-resize-detector@npm:1.2.4" - dependencies: - batch-processor: 1.0.0 - checksum: 81c47b7e229c303889d3a9d78ec3f3232e88a6682f1e2424fb0632d9b4f503b2ca011e6954321060604da07749a5a972b6a175fdf6c6806093a3b80a304cde7b - languageName: node - linkType: hard - -"emoji-regex@npm:^7.0.1": - version: 7.0.3 - resolution: "emoji-regex@npm:7.0.3" - checksum: 9159b2228b1511f2870ac5920f394c7e041715429a68459ebe531601555f11ea782a8e1718f969df2711d38c66268174407cbca57ce36485544f695c2dfdc96e - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.10.0": - version: 5.10.0 - resolution: "enhanced-resolve@npm:5.10.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 0bb9830704db271610f900e8d79d70a740ea16f251263362b0c91af545576d09fe50103496606c1300a05e588372d6f9780a9bc2e30ce8ef9b827ec8f44687ff - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - 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-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"esbuild-android-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-64@npm:0.14.54" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-arm64@npm:0.14.54" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-64@npm:0.14.54" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-arm64@npm:0.14.54" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-64@npm:0.14.54" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-arm64@npm:0.14.54" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-32@npm:0.14.54" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-64@npm:0.14.54" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm64@npm:0.14.54" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm@npm:0.14.54" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-mips64le@npm:0.14.54" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-ppc64le@npm:0.14.54" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-riscv64@npm:0.14.54" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-s390x@npm:0.14.54" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-netbsd-64@npm:0.14.54" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-openbsd-64@npm:0.14.54" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-plugin-alias@npm:^0.2.1": - version: 0.2.1 - resolution: "esbuild-plugin-alias@npm:0.2.1" - checksum: afe2d2c8b5f09d5321cb8d9c0825e8a9f6e03c2d50df92f953a291d4620cc29eddb3da9e33b238f6d8f77738e0277bdcb831f127399449fecf78fb84c04e5da9 - languageName: node - linkType: hard - -"esbuild-register@npm:^3.3.3": - version: 3.3.3 - resolution: "esbuild-register@npm:3.3.3" - peerDependencies: - esbuild: ">=0.12 <1" - checksum: f43fecb9f5c48fcf859a0b3681368af8987c299c822da9a996b90f453b9b2226b9a90c7dbaec0968a86b53ee524af0d8b4ed828866c29bfede5c176834bc0f2b - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-sunos-64@npm:0.14.54" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-32@npm:0.14.54" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-64@npm:0.14.54" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-arm64@npm:0.14.54" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.48": - version: 0.14.54 - resolution: "esbuild@npm:0.14.54" - dependencies: - "@esbuild/linux-loong64": 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dependenciesMeta: - "@esbuild/linux-loong64": - optional: true - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 49e360b1185c797f5ca3a7f5f0a75121494d97ddf691f65ed1796e6257d318f928342a97f559bb8eced6a90cf604dd22db4a30e0dbbf15edd9dbf22459b639af - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-goat@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-goat@npm:4.0.0" - checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"esprima@npm:~4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"estree-to-babel@npm:^4.9.0": - version: 4.9.0 - resolution: "estree-to-babel@npm:4.9.0" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - checksum: 82a6338e66cef2a29351de8eb615a3f967deef86087366f175862d8bc6c497ded4b907b69335b818d91046f79c00464b9ba36ac2200dfad91d9e71e776a0fcb8 - languageName: node - linkType: hard - -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-attach-comments@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - checksum: 8489b977dc420e4af59b03528487b2963d7bfe2d6d265819231dce5a1a5c389109230be102d4b7b85a86ec64f75a7e70b0f306542d56ec557c83f92ec326738a - languageName: node - linkType: hard - -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.0 - resolution: "estree-util-build-jsx@npm:2.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-walker: ^3.0.0 - checksum: 639b76f5395df5234e5424e092c583d656418a07075156947b72e69183c01feeb94946e79002117cd7dff374a25115832ab4af4ad449f1f6cac3594c95006aa5 - languageName: node - linkType: hard - -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.1 - resolution: "estree-util-is-identifier-name@npm:2.0.1" - checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 - languageName: node - linkType: hard - -"estree-util-to-js@npm:^1.1.0": - version: 1.1.0 - resolution: "estree-util-to-js@npm:1.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - astring: ^1.8.0 - source-map: ^0.7.0 - checksum: 3ce2ef2fd78497fa7a0e5250be0f217af9060c819f7ed4f4739285e4ade4ed244536cb88e8ba1e38986af98d3a9064165122bb1622f2c6d57fe7b241b884fc47 - languageName: node - linkType: hard - -"estree-util-visit@npm:^1.0.0": - version: 1.2.0 - resolution: "estree-util-visit@npm:1.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/unist": ^2.0.0 - checksum: d36a36aed82d6cb00d24615889052e22308ff008191b3760f65f93e9d0b06d3bc448af9f99a685947f1c69fba36d9a412da243b0b026096c66ecd74054c3b090 - languageName: node - linkType: hard - -"estree-walker@npm:^3.0.0": - version: 3.0.1 - resolution: "estree-walker@npm:3.0.1" - checksum: 674096950819041f1ee471e63f7aa987f2ed3a3a441cc41a5176e9ed01ea5cfd6487822c3b9c2cddd0e2c8f9d7ef52d32d06147a19b5a9ca9f8ab0c094bd43b9 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"execa@npm:^5.0.0, execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - 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 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expect-type@npm:^0.14.2": - version: 0.14.2 - resolution: "expect-type@npm:0.14.2" - checksum: b8dba1f67d6562d203359d5f5e7ee9c2066c091a7bf3c8744858cbe801fb6becab760961fa206ad5bfd2c532b2a01f835f8f1a4f86f2ad8e6881c0930b48aca5 - languageName: node - linkType: hard - -"express@npm:^4.17.1": - version: 4.18.2 - resolution: "express@npm:4.18.2" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.11.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - -"extract-zip@npm:^1.6.6": - version: 1.7.0 - resolution: "extract-zip@npm:1.7.0" - dependencies: - concat-stream: ^1.6.2 - debug: ^2.6.9 - mkdirp: ^0.5.4 - yauzl: ^2.10.0 - bin: - extract-zip: cli.js - checksum: 011bab660d738614555773d381a6ba4815d98c1cfcdcdf027e154ebcc9fc8c9ef637b3ea5c9b2144013100071ee41722ed041fc9aacc60f6198ef747cac0c073 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - 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 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.13.0 - resolution: "fastq@npm:1.13.0" - dependencies: - reusify: ^1.0.4 - checksum: 32cf15c29afe622af187d12fc9cd93e160a0cb7c31a3bb6ace86b7dea3b28e7b72acde89c882663f307b2184e14782c6c664fa315973c03626c7d4bff070bb0b - languageName: node - linkType: hard - -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"fetch-retry@npm:^5.0.2": - version: 5.0.3 - resolution: "fetch-retry@npm:5.0.3" - checksum: b4eebc04bd41651417e89ae9287e5b9e5421970ce07058c6e1e22f7d9c1cd5f935fc39a328fd66b433247c0ae1bb8a6b2d48c073d5a9f911992f72c5d311b14d - languageName: node - linkType: hard - -"file-system-cache@npm:^2.0.0": - version: 2.0.1 - resolution: "file-system-cache@npm:2.0.1" - dependencies: - fs-extra: ^10.1.0 - ramda: ^0.28.0 - checksum: fba527d852dd0d90d21da4f53341584532f8c639a52f79479f543576caf464e333f2c076117e516dcc30ed5de136b48461b5336238daafdf11676bb423606e53 - languageName: node - linkType: hard - -"filelist@npm:^1.0.1": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: ^5.0.1 - checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" - dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flow-parser@npm:0.*": - version: 0.190.1 - resolution: "flow-parser@npm:0.190.1" - checksum: 64aeedda7570ac44d3e7af077e0a65ff7cf29f2461f32038144a1a125abb24c50fffb747783305f0edd7afee915f1558a5e1b73b39e644d43e09f2165118764e - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^7.2.8": - version: 7.2.13 - resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 - peerDependencies: - typescript: ">3.6.0" - vue-template-compiler: "*" - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 3d4694c6fee4b8b2f213d0d10a3f40da770ca0ed3aa2a3dc8d1e701ad1ecaed3a1507f77a1b0cea6ef80539b04d8e5f5f02560e688d310bcb9e8c81f684d2950 - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.1.2": - version: 2.1.3 - resolution: "form-data-encoder@npm:2.1.3" - checksum: f2db77767f2c0f45fcbab717f4c8ec1a952fba372440b841bd0f9f3f7b867e3a26bbe8bf72598127ebcfee5d493caee87942b30e9dff219898a4c12dad1dcedc - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - 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 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.1": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - -"get-port@npm:^5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.0 - resolution: "global-dirs@npm:3.0.0" - dependencies: - ini: 2.0.0 - checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 - languageName: node - linkType: hard - -"global@npm:^4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globby@npm:^11.0.2": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - 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 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"got@npm:^12.1.0": - version: 12.5.2 - resolution: "got@npm:12.5.2" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - cacheable-lookup: ^7.0.0 - cacheable-request: ^10.2.1 - decompress-response: ^6.0.0 - form-data-encoder: ^2.1.2 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^3.0.0 - checksum: f84b704ca8edb5af17b4df32d21729a0a837a680d197c9d5a922090024ffc15d71a2c5a470de57ca2bb3e3e55aa7e996767d9106df7c57eb99d8de84ce56691f - languageName: node - linkType: hard - -"graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - -"has-yarn@npm:^3.0.0": - version: 3.0.0 - resolution: "has-yarn@npm:3.0.0" - checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hast-util-to-estree@npm:^2.0.0, hast-util-to-estree@npm:^2.0.2": - version: 2.1.0 - resolution: "hast-util-to-estree@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - comma-separated-tokens: ^2.0.0 - estree-util-attach-comments: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - hast-util-whitespace: ^2.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 - unist-util-position: ^4.0.0 - zwitch: ^2.0.0 - checksum: 1e14cfbfd57ff00ffda48cfef23bcebb6ebbea0385bb03d748a9432591c60f0a69428baaba82375a8cdbc924217ba9e75d30820b3641fdbe12ae62aa6c3f90a7 - languageName: node - linkType: hard - -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "hast-util-whitespace@npm:2.0.0" - checksum: abeb5386075bfb0facfce89eed0e13d2cb27a0910cec8fd234b48821a1538387a73fa7f458842e8c404148dc69434acbc10488d75b02817e460652c2c894c024 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" - dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - webpack: ^5.20.0 - checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 - languageName: node - linkType: hard - -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - domutils: ^2.5.2 - entities: ^2.0.0 - checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 - languageName: node - linkType: hard - -"http2-wrapper@npm:^2.1.10": - version: 2.1.11 - resolution: "http2-wrapper@npm:2.1.11" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 5da05aa2c77226ac9cc82c616383f59c8f31b79897b02ecbe44b09714be1fca1f21bb184e672a669ca2830eefea4edac5f07e71c00cb5a8c5afec8e5a20cfaf7 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^4.0.0": - version: 4.0.0 - resolution: "https-proxy-agent@npm:4.0.0" - dependencies: - agent-base: 5 - debug: 4 - checksum: 19471d5aae3e747b1c98b17556647e2a1362e68220c6b19585a8527498f32e62e03c41d2872d059d8720d56846bd7460a80ac06f876bccfa786468ff40dd5eef - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"ignore-by-default@npm:^1.0.1": - version: 1.0.1 - resolution: "ignore-by-default@npm:1.0.1" - checksum: 441509147b3615e0365e407a3c18e189f78c07af08564176c680be1fabc94b6c789cad1342ad887175d4ecd5225de86f73d376cec8e06b42fd9b429505ffcf8a - languageName: node - linkType: hard - -"ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-lazy@npm:^4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: ^1.0.0 - checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - -"is-alphabetical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1" - checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa - languageName: node - linkType: hard - -"is-alphanumerical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1" - dependencies: - is-alphabetical: ^2.0.0 - is-decimal: ^2.0.0 - checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: ^3.2.0 - bin: - is-ci: bin.js - checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e - languageName: node - linkType: hard - -"is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-decimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-decimal@npm:2.0.1" - checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-expression@npm:^4.0.0": - version: 4.0.0 - resolution: "is-expression@npm:4.0.0" - dependencies: - acorn: ^7.1.1 - object-assign: ^4.1.1 - checksum: 0f01d0ff53fbbec36abae8fbb7ef056c6d024f7128646856a3e6c500b205788d3e0f337025e72df979d7d7cf4674a00370633d7f8974c668b2d3fdb7e8a83bdb - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-function@npm:^1.0.2": - version: 1.0.2 - resolution: "is-function@npm:1.0.2" - checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b - languageName: node - linkType: hard - -"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1" - checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: ^3.0.0 - is-path-inside: ^3.0.2 - checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-npm@npm:^6.0.0": - version: 6.0.0 - resolution: "is-npm@npm:6.0.0" - checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-promise@npm:^2.0.0": - version: 2.2.2 - resolution: "is-promise@npm:2.2.2" - checksum: 18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 - languageName: node - linkType: hard - -"is-reference@npm:^3.0.0": - version: 3.0.0 - resolution: "is-reference@npm:3.0.0" - dependencies: - "@types/estree": "*" - checksum: 408bb3442ff5f90a9740bf578e8fa2863f68bc07ee99b92079a358a34af58341dc7014b054e8cc51a3da5d1ab83f635b6ee1ce2982db7899a128d7a05173898f - languageName: node - linkType: hard - -"is-regex@npm:^1.0.3, is-regex@npm:^1.1.2, is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "is-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - checksum: 11910f1e58755fef43bf0074e52fa5b932bf101ec65d613e0a83d40e8e4c6e3f2ee142d624ebc7624c091d3bbe921131f8db7d36ecbbb71909f2fe310c1faa65 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.4.0": - version: 0.4.0 - resolution: "is-yarn-global@npm:0.4.0" - checksum: a5fcf09c3a426af7d9d7d5d48cfe203fbe132961e00f0e8a818a9a1a1f49423af907422905088522380de782d8c2ab787222d8fcc53b011c2b22bacb5087c6c2 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isobject@npm:^4.0.0": - version: 4.0.0 - resolution: "isobject@npm:4.0.0" - checksum: bbcb522e46d54fb22418ba49fb9a82057ffa201c8401fb6e018c042e2c98cf7d9c7b185aff88e035ec8adea0814506dc2aeff2d08891bbc158e1671a49e99c06 - languageName: node - linkType: hard - -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 - languageName: node - linkType: hard - -"jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" - dependencies: - async: ^3.2.3 - chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 - bin: - jake: ./bin/cli.js - checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba - languageName: node - linkType: hard - -"javascript-stringify@npm:^2.0.1": - version: 2.1.0 - resolution: "javascript-stringify@npm:2.1.0" - checksum: 009981ec84299da88795fc764221ed213e3d52251cc93a396430a7a02ae09f1163a9be36a36808689681a8e6113cf00fe97ec2eea2552df48111f79be59e9358 - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 - languageName: node - linkType: hard - -"js-stringify@npm:^1.0.2": - version: 1.0.2 - resolution: "js-stringify@npm:1.0.2" - checksum: f9701d9e535d3ac0f62bbf2624b76c5d0af5b889187232817ae284a41ba21fd7a8b464c2dce3815d8cf52c8bea3480be6b368cfc2c67da799cad458058e8bbf5 - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"jscodeshift@npm:^0.13.1": - version: 0.13.1 - resolution: "jscodeshift@npm:0.13.1" - dependencies: - "@babel/core": ^7.13.16 - "@babel/parser": ^7.13.16 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/preset-flow": ^7.13.13 - "@babel/preset-typescript": ^7.13.0 - "@babel/register": ^7.13.16 - babel-core: ^7.0.0-bridge.0 - chalk: ^4.1.2 - flow-parser: 0.* - graceful-fs: ^4.2.4 - micromatch: ^3.1.10 - neo-async: ^2.5.0 - node-dir: ^0.1.17 - recast: ^0.20.4 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 - peerDependencies: - "@babel/preset-env": ^7.1.6 - bin: - jscodeshift: bin/jscodeshift.js - checksum: 1c35938de5fc29cafec80e2c37d5c3411f85cd5d40e0243b52f2da0c1ab4b659daddfd62de558eca5d562303616f7838097727b651f4ad8e32b1e96f169cdd76 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - -"json-parse-better-errors@npm:^1.0.1": - version: 1.0.2 - resolution: "json-parse-better-errors@npm:1.0.2" - checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - -"json5@npm:^2.1.2, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" - bin: - json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"jstransformer@npm:1.0.0": - version: 1.0.0 - resolution: "jstransformer@npm:1.0.0" - dependencies: - is-promise: ^2.0.0 - promise: ^7.0.1 - checksum: 1e019fde17a38766a5b96bccf0738156badc60cfa61e2ba8a8bbd3b855e7d5d7e17492b8a66e4aaabc39483e335d23217343ae32d0f7e5a81af42a95c3e075f9 - languageName: node - linkType: hard - -"keyv@npm:^4.5.0": - version: 4.5.0 - resolution: "keyv@npm:4.5.0" - dependencies: - json-buffer: 3.0.1 - checksum: d294873cf88ec8f691e5edeb7b4b884f886c5f021a01902a0e243c362449db2b55419d7fb7187d059add747b7398321e39e44d391b65f94935174ce13452714d - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - -"latest-version@npm:^7.0.0": - version: 7.0.0 - resolution: "latest-version@npm:7.0.0" - dependencies: - package-json: ^8.1.0 - checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 - languageName: node - linkType: hard - -"lazy-universal-dotenv@npm:^3.0.1": - version: 3.0.1 - resolution: "lazy-universal-dotenv@npm:3.0.1" - dependencies: - "@babel/runtime": ^7.5.0 - app-root-dir: ^1.0.2 - core-js: ^3.0.4 - dotenv: ^8.0.0 - dotenv-expand: ^5.1.0 - checksum: a80509d8cb40dafcfab5859335920754a21814320aa16115e58c0ae5ef3b1d8bd4daa96349ea548e2833f2f89269ddbb103ebd55be06cfdba00e0af6785b5ba7 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "loader-utils@npm:2.0.3" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: d055c61ce5927b64cb4af40218606603a7d3a39adb7b6eec116bb31d19203875950e478152dea056de404eced8e87e9bfd336ec636591ded040ea451f63c7d88 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"longest-streak@npm:^3.0.0": - version: 3.0.1 - resolution: "longest-streak@npm:3.0.1" - checksum: 3b59c4c04ce3c70f137e339c10d574026fa3a711c45dc0e69a63a2c0ac981e57f837e1d5b64b991eee5234c4fa46fa10886a20626fb739ed3b04b77bcf6d14a8 - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.14.0 - resolution: "lru-cache@npm:7.14.0" - checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - -"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 8a6dd128be1c524049ea6a41a9193715c2835d3d706af4b8b714ff2043a82786dbcd4a8f1fa9ddd28facbc444426c97515aef2d1f3dd11d5e2d63749ba577b1e - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.3": - version: 7.1.7 - resolution: "markdown-to-jsx@npm:7.1.7" - peerDependencies: - react: ">= 0.14.0" - checksum: b2c0ea7d0988fad0c709989b3b1b3a5600d1e80b60266f9618386f7afead4a6b5eba9ee1a3943df6a3dcb1599ea89e58467d1b17b6dd3af3c60984c60a85d06d - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.1 - resolution: "mdast-util-definitions@npm:5.1.1" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-from-markdown@npm:1.2.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40 - languageName: node - linkType: hard - -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdx-expression@npm:1.3.1" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 456d59a616a274416f5b02bce64bf5245c4b7247927b4539f4db35bec5674352580fb91f51ed11f1a769d17330c44eec7ca481faf81ee839c2efe71309195225 - languageName: node - linkType: hard - -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-mdx-jsx@npm:2.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - ccount: ^2.0.0 - mdast-util-to-markdown: ^1.3.0 - parse-entities: ^4.0.0 - stringify-entities: ^4.0.0 - unist-util-remove-position: ^4.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 40520a299449e4074ff1097789c7372220c9751e0de151566dcc133118d748c2231e29bafcbbf2c3beb3a917a85cfbbaa9195dadfb4122603bad479f93a61dbe - languageName: node - linkType: hard - -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx@npm:2.0.0" - dependencies: - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdx-jsx: ^2.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - checksum: 4744bfbbd337c2a99a3ef339673c549a670d6496e0d3a6d747d2451e112d6fef7d27613549b0bd62a5f92ea7919e3bacd78c731e8a3d80552a09b80896554cf6 - languageName: node - linkType: hard - -"mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-mdxjs-esm@npm:1.3.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: df3902eb884b4f83cebbfe33647f51938b36db54d4539afd884dc83ff43052676cd48df4c382dc986335290f5c691576d1a848da8ffb671b69ade29fe1c317e0 - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:^12.1.0": - version: 12.2.4 - resolution: "mdast-util-to-hast@npm:12.2.4" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 - trim-lines: ^3.0.0 - unist-builder: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: c9a1c31527590a11ec7a637ae46a8f52b05b457523e9be9c4ca8bcc1efb3eac5ed1575353e97a70fffcf61e40c80d649bee28058fa1509bc1c213eacfa73bc5f - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": - version: 1.3.0 - resolution: "mdast-util-to-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - longest-streak: ^3.0.0 - mdast-util-to-string: ^3.0.0 - micromark-util-decode-string: ^1.0.0 - unist-util-visit: ^4.0.0 - zwitch: ^2.0.0 - checksum: 0ea4fc11b7a49b15d400d50044429c45222cb9bc583553288c7c54704d051f25049233817129ba56a6f581f1e20916e5c540870a80987318747a95b44a36ba3e - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.1.0 - resolution: "mdast-util-to-string@npm:3.1.0" - checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"memfs@npm:^3.4.1, memfs@npm:^3.4.3": - version: 3.4.7 - resolution: "memfs@npm:3.4.7" - dependencies: - fs-monkey: ^1.0.3 - checksum: fab88266dc576dc4999e38bdf531d703fb798affac2e0dd3fc17470878486844027b2766008ba80c0103b443f52cf9068a5c00f4e1ecf04106f4b29c11855822 - languageName: node - linkType: hard - -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: ^1.5.0 - checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-expression@npm:1.0.3" - dependencies: - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: ef4b4137894624a6754b951d3cb7abb20951ca7b37f9ad8a50d2e2b95d0cf880258d71296bfac6be4ff83a8d137b6b657ae852bb6f11f4ca11e5e6d62f1b025d - languageName: node - linkType: hard - -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" - dependencies: - "@types/acorn": ^4.0.0 - estree-util-is-identifier-name: ^2.0.0 - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 1a5566890aabc52fe96b78e3a3a507dee03a2232e44b9360b00617734e156f934e85bc6a477fbb856c793fe33c9fb7d2207a4f50e680168c0d04ba9c9336d960 - languageName: node - linkType: hard - -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: b4f205e1d5f0946b4755541ef44ffd0b3be8c7ecfc08d8b139b6a21fbd3ff62d8fdb6b7e6d17bd9a3b610450267f43a41703dc48b341da9addd743a28cdefa64 - languageName: node - linkType: hard - -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" - dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.1.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 756074656391a5e5bb96bc8a0e9c1df7d9f7be5299847c9719e6a90552e1c76a11876aa89986ad5da89ab485f776a4a43a61ea3acddd4f865a5cee43ac523ffd - languageName: node - linkType: hard - -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" - dependencies: - acorn: ^8.0.0 - acorn-jsx: ^5.0.0 - micromark-extension-mdx-expression: ^1.0.0 - micromark-extension-mdx-jsx: ^1.0.0 - micromark-extension-mdx-md: ^1.0.0 - micromark-extension-mdxjs-esm: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: ba836c6d2dfc67597886e88f533ffa02f2029dbe216a0651f1066e70f8529a700bcc7fa2bc4201ee12fd3d1cd7da7093d5a442442daeb84b27df96aaffb7699c - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 - languageName: node - linkType: hard - -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.6 - resolution: "micromark-factory-mdx-expression@npm:1.0.6" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 7b69f0e77664e9820639cf23c4f01d43aa0e7abd88021c3db428435e3a5a1f9446f8dc5c2a6ed4ac16c6495ca51937609a5c98ff59a62c54be382c2725500b39 - languageName: node - linkType: hard - -"micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 - languageName: node - linkType: hard - -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - -"micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" - dependencies: - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f - languageName: node - linkType: hard - -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-events-to-acorn@npm:1.2.0" - dependencies: - "@types/acorn": ^4.0.0 - "@types/estree": ^1.0.0 - estree-util-visit: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-location: ^4.0.0 - vfile-message: ^3.0.0 - checksum: 422285d68c8e8a57042bf31eefa55a136eec5c1fb021278a7c25d60a000c4e3ddaf140c94065a270499281f79ff59999468b850a461f22b5731fc47eccb2c4c2 - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c - languageName: node - linkType: hard - -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - -"micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d - languageName: node - linkType: hard - -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df - languageName: node - linkType: hard - -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - -"micromatch@npm:^3.1.10": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - -"mime@npm:^2.0.3": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" - dependencies: - brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" - dependencies: - yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.4": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"morgan@npm:^1.10.0": - version: 1.10.0 - resolution: "morgan@npm:1.10.0" - dependencies: - basic-auth: ~2.0.1 - debug: 2.6.9 - depd: ~2.0.0 - on-finished: ~2.3.0 - on-headers: ~1.0.2 - checksum: fb41e226ab5a1abf7e8909e486b387076534716d60207e361acfb5df78b84d703a7b7ea58f3046a9fd0b83d3c94bfabde32323341a1f1b26ce50680abd2ea5dd - languageName: node - linkType: hard - -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.0.1": - version: 3.0.1 - resolution: "node-abort-controller@npm:3.0.1" - checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee - languageName: node - linkType: hard - -"node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: ^3.0.2 - checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf - languageName: node - linkType: hard - -"nodemon@npm:^2.0.7": - version: 2.0.20 - resolution: "nodemon@npm:2.0.20" - dependencies: - chokidar: ^3.5.2 - debug: ^3.2.7 - ignore-by-default: ^1.0.1 - minimatch: ^3.1.2 - pstree.remy: ^1.1.8 - semver: ^5.7.1 - simple-update-notifier: ^1.0.7 - supports-color: ^5.5.0 - touch: ^3.1.0 - undefsafe: ^2.0.5 - bin: - nodemon: bin/nodemon.js - checksum: 9fe858682414fe703179f4fe36c86e71f40d2693b5345c09803d7b191816a6589c5df8f1f9873bffee92893880183b95a031c86340e46b364ef1b0b7f619edbf - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac - languageName: node - linkType: hard - -"nopt@npm:~1.0.10": - version: 1.0.10 - resolution: "nopt@npm:1.0.10" - dependencies: - abbrev: 1 - bin: - nopt: ./bin/nopt.js - checksum: f62575aceaa3be43f365bf37a596b89bbac2e796b001b6d2e2a85c2140a4e378ff919e2753ccba959c4fd344776fc88c29b393bc167fa939fb1513f126f4cd45 - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-url@npm:^7.2.0": - version: 7.2.0 - resolution: "normalize-url@npm:7.2.0" - checksum: 7753f081ee997520c9cd855f06975d7ac24b1ef58002e310d5058c831b9a6165ec2ec9fc0c5bc9e886e1257affaffa7c36731ae39073fcf74af07197997d4fb6 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 - languageName: node - linkType: hard - -"object-assign@npm:^4, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 - languageName: node - linkType: hard - -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: ^2.0.0 - is-wsl: ^2.1.1 - checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91 - languageName: node - linkType: hard - -"open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json@npm:^8.1.0": - version: 8.1.0 - resolution: "package-json@npm:8.1.0" - dependencies: - got: ^12.1.0 - registry-auth-token: ^5.0.1 - registry-url: ^6.0.0 - semver: ^7.3.7 - checksum: 28c16ef0296915533c3dec9ce579fd6ea8ac62df0cd0b4b44e65a45506fda781cf1d1fd4a083fe90af3e041a9514b6be30562d85689da450986aff43dc856cc7 - languageName: node - linkType: hard - -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-entities@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-entities@npm:4.0.0" - dependencies: - "@types/unist": ^2.0.0 - character-entities: ^2.0.0 - character-entities-legacy: ^3.0.0 - character-reference-invalid: ^2.0.0 - decode-named-character-reference: ^1.0.0 - is-alphanumerical: ^2.0.0 - is-decimal: ^2.0.0 - is-hexadecimal: ^2.0.0 - checksum: cd9fa53bc056ad8cf8a45494bfd7ce65e8bf6f1b12dcc9a6343376fa529c2012041303c5d0f86babf70afbd13b71c2f219fc3a76fb97d9d559b66578e19cdaf0 - languageName: node - linkType: hard - -"parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-json@npm:4.0.0" - dependencies: - error-ex: ^1.3.1 - json-parse-better-errors: ^1.0.1 - checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - -"periscopic@npm:^3.0.0": - version: 3.0.4 - resolution: "periscopic@npm:3.0.4" - dependencies: - estree-walker: ^3.0.0 - is-reference: ^3.0.0 - checksum: 0920ea1b0294c2463b7df858d7f895d0a69f15ec5c7b93d63749e7a8f6d9c065853ebea701305f1756f70310633832cf5c90e43e9363cce51abec44cc2f5c188 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pify@npm:^3.0.0": - version: 3.0.0 - resolution: "pify@npm:3.0.0" - checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b - languageName: node - linkType: hard - -"pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: ^5.0.0 - checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 - languageName: node - linkType: hard - -"polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.17.8 - checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.10 - resolution: "postcss-selector-parser@npm:6.0.10" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 46afaa60e3d1998bd7adf6caa374baf857cc58d3ff944e29459c9a9e4680a7fe41597bd5b755fc81d7c388357e9bf67c0251d047c640a09f148e13606b8a8608 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:^8.4.7": - version: 8.4.18 - resolution: "postcss@npm:8.4.18" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 9349fd99849b2e3d2e134ff949b7770ecb12375f352723ce2bcc06167eba3850ea7844c1b191a85cd915d6a396b4e8ee9a5267e6cc5d8d003d0cbc7a97555d39 - languageName: node - linkType: hard - -"prettier@npm:>=2.2.1 <=2.3.0": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" - bin: - prettier: bin-prettier.js - checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff - languageName: node - linkType: hard - -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" - dependencies: - lodash: ^4.17.20 - renderkid: ^3.0.0 - checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 - languageName: node - linkType: hard - -"pretty-hrtime@npm:^1.0.3": - version: 1.0.3 - resolution: "pretty-hrtime@npm:1.0.3" - checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 - languageName: node - linkType: hard - -"private@npm:^0.1.8": - version: 0.1.8 - resolution: "private@npm:0.1.8" - checksum: a00abd713d25389f6de7294f0e7879b8a5d09a9ec5fd81cc2f21b29d4f9a80ec53bc4222927d3a281d4aadd4cd373d9a28726fca3935921950dc75fd71d1fdbb - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"progress@npm:^2.0.1": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"promise@npm:^7.0.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: ~2.0.3 - checksum: 475bb069130179fbd27ed2ab45f26d8862376a137a57314cf53310bdd85cc986a826fd585829be97ebc0aaf10e9d8e68be1bfe5a4a0364144b1f9eedfa940cf1 - languageName: node - linkType: hard - -"prompts@npm:^2.4.0": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.1.1 - resolution: "property-information@npm:6.1.1" - checksum: 654b1e5c3578e1d522bd22b7cf48881f5054789969ddbefea22e5359805fda5dbf0c5ef76bb26516da26fedac8752587ddc4c8f3b9e16bc0c6e7feb8b6086864 - languageName: node - linkType: hard - -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.0.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 - languageName: node - linkType: hard - -"pstree.remy@npm:^1.1.8": - version: 1.1.8 - resolution: "pstree.remy@npm:1.1.8" - checksum: 5cb53698d6bb34dfb278c8a26957964aecfff3e161af5fbf7cee00bbe9d8547c7aced4bd9cb193bce15fb56e9e4220fc02a5bf9c14345ffb13a36b858701ec2d - languageName: node - linkType: hard - -"pug-attrs@npm:^3.0.0": - version: 3.0.0 - resolution: "pug-attrs@npm:3.0.0" - dependencies: - constantinople: ^4.0.1 - js-stringify: ^1.0.2 - pug-runtime: ^3.0.0 - checksum: 2ca2d34de3065239f01f0fc3c0e104c17f7a7105684d088bb71df623005a45f40a2301e65f49ec4581bb31794c74e691862643d4e34062d1509e92fa56a15aa5 - languageName: node - linkType: hard - -"pug-code-gen@npm:^3.0.2": - version: 3.0.2 - resolution: "pug-code-gen@npm:3.0.2" - dependencies: - constantinople: ^4.0.1 - doctypes: ^1.1.0 - js-stringify: ^1.0.2 - pug-attrs: ^3.0.0 - pug-error: ^2.0.0 - pug-runtime: ^3.0.0 - void-elements: ^3.1.0 - with: ^7.0.0 - checksum: 1644d3a4d673392794248749eb146299704639a8197746454b7d03b240b83ee102f25b76d203381501e283be3927ab01eb3f4563ff51c45a478de1f3435a400d - languageName: node - linkType: hard - -"pug-error@npm:^2.0.0": - version: 2.0.0 - resolution: "pug-error@npm:2.0.0" - checksum: c5372d018c897c1d6a141dd803c50957feecfda1f3d84a6adc6149801315d6c7f8c28b05f3e186d98d774fc9718699d1e1caa675630dd3c4453f8c5ec4e4a986 - languageName: node - linkType: hard - -"pug-filters@npm:^4.0.0": - version: 4.0.0 - resolution: "pug-filters@npm:4.0.0" - dependencies: - constantinople: ^4.0.1 - jstransformer: 1.0.0 - pug-error: ^2.0.0 - pug-walk: ^2.0.0 - resolve: ^1.15.1 - checksum: 44eb3273195e3f42f034ad81109452236377780557eaf5a28db6e478f297675e19b8598cca9de65a0ba9c1d57e2ca2a93e332f0ab4be79dc5dd042375228cdff - languageName: node - linkType: hard - -"pug-lexer@npm:^5.0.1": - version: 5.0.1 - resolution: "pug-lexer@npm:5.0.1" - dependencies: - character-parser: ^2.2.0 - is-expression: ^4.0.0 - pug-error: ^2.0.0 - checksum: afdd2f43f2c3ba96001a7b734c0c3bc745eb5d7dd68c787c2690c606d34573ca46ba807e4b4c7e70db9b4556fb938625dbb9c25b79cdb8857868e6deb2574d3e - languageName: node - linkType: hard - -"pug-linker@npm:^4.0.0": - version: 4.0.0 - resolution: "pug-linker@npm:4.0.0" - dependencies: - pug-error: ^2.0.0 - pug-walk: ^2.0.0 - checksum: 7433aa65181cd5b7bc631ab5f14baae7496fd8da98608cbd55bbea9bc72fe69a863e72026781a9fe76ab429d7037465b942145455420ee1178e2875ec87a1e12 - languageName: node - linkType: hard - -"pug-load@npm:^3.0.0": - version: 3.0.0 - resolution: "pug-load@npm:3.0.0" - dependencies: - object-assign: ^4.1.1 - pug-walk: ^2.0.0 - checksum: 1800ec51994c92338401bcf79bbfa0d5ef9aa312bc415c2618263d6c04d1d7c5be5ac4a333c47a0eaa823f6231b4ade1a1c40f5784b99eb576d25853597bff2f - languageName: node - linkType: hard - -"pug-parser@npm:^6.0.0": - version: 6.0.0 - resolution: "pug-parser@npm:6.0.0" - dependencies: - pug-error: ^2.0.0 - token-stream: 1.0.0 - checksum: a6954d1383601233ec9d58e8fb22339f4809cf938272db16c551d8574566f388af3bf5560ec95ad5e23902bc358e6fa857409e840de4ed1ff5120a1dd6892cca - languageName: node - linkType: hard - -"pug-runtime@npm:^3.0.0, pug-runtime@npm:^3.0.1": - version: 3.0.1 - resolution: "pug-runtime@npm:3.0.1" - checksum: 48a71b587caa08a5bccf9c1164206a34067edc1d13c2164bebad2dc562b529317578f889a0c41f0e16ddab3853c599696ff29a085f2d4554b783228f0002c41b - languageName: node - linkType: hard - -"pug-strip-comments@npm:^2.0.0": - version: 2.0.0 - resolution: "pug-strip-comments@npm:2.0.0" - dependencies: - pug-error: ^2.0.0 - checksum: 2cfcbf506c14bb3e64204a1d93f12ca61658d2540475b0f0911c35531ad28421e8d1e73a646d841d58cfa2c20f8593c52e492dfe5b6bec968e20b614e4dea1e4 - languageName: node - linkType: hard - -"pug-walk@npm:^2.0.0": - version: 2.0.0 - resolution: "pug-walk@npm:2.0.0" - checksum: bee64e133b711e1ed58022c0869b59e62f9f3ebb7084293857f074120b3cb588e7b8f74c4566426bf2b26dc1ec176ca6b64a2d1e53782f3fbbe039c5d4816638 - languageName: node - linkType: hard - -"pug@npm:^3.0.0": - version: 3.0.2 - resolution: "pug@npm:3.0.2" - dependencies: - pug-code-gen: ^3.0.2 - pug-filters: ^4.0.0 - pug-lexer: ^5.0.1 - pug-linker: ^4.0.0 - pug-load: ^3.0.0 - pug-parser: ^6.0.0 - pug-runtime: ^3.0.1 - pug-strip-comments: ^2.0.0 - checksum: 3e1a3d48897c0c7dedd4f959ce8afaf6417a63756b149e1b5382bef16de5792ec7c7ae6a7d41641059cb149520f20b0d1ecf57014c0661526e96f0bad88541e5 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"pupa@npm:^3.1.0": - version: 3.1.0 - resolution: "pupa@npm:3.1.0" - dependencies: - escape-goat: ^4.0.0 - checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 - languageName: node - linkType: hard - -"puppeteer-core@npm:^2.1.1": - version: 2.1.1 - resolution: "puppeteer-core@npm:2.1.1" - dependencies: - "@types/mime-types": ^2.1.0 - debug: ^4.1.0 - extract-zip: ^1.6.6 - https-proxy-agent: ^4.0.0 - mime: ^2.0.3 - mime-types: ^2.1.25 - progress: ^2.0.1 - proxy-from-env: ^1.0.0 - rimraf: ^2.6.1 - ws: ^6.1.0 - checksum: 2ddb597ef1b2d162b4aa49833b977734129edf7c8fa558fc38c59d273e79aa1bd079481c642de87f7163665f7f37aa52683da2716bafb7d3cab68c262c36ec28 - languageName: node - linkType: hard - -"qs@npm:6.11.0, qs@npm:^6.10.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 44ea6e5010bba70151b6a92d8114a91915e8b5a16105cce65fae58c9d7386b812c429645e35f21141d7087568550ce383bc10ee1a65cdec951f4b69ea457e6a4 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e - languageName: node - linkType: hard - -"rc@npm:1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e - languageName: node - linkType: hard - -"react-colorful@npm:^5.1.2": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: e432b7cb0df57e8f0bcdc3b012d2e93fcbcb6092c9e0f85654788d5ebfc4442536d8cc35b2418061ba3c4afb8b7788cc101c606d86a1732407921de7a9244c8d - languageName: node - linkType: hard - -"react-dom@npm:16.14.0": - version: 16.14.0 - resolution: "react-dom@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - scheduler: ^0.19.1 - peerDependencies: - react: ^16.14.0 - checksum: 5a5c49da0f106b2655a69f96c622c347febcd10532db391c262b26aec225b235357d9da1834103457683482ab1b229af7a50f6927a6b70e53150275e31785544 - languageName: node - linkType: hard - -"react-inspector@npm:^6.0.0": - version: 6.0.1 - resolution: "react-inspector@npm:6.0.1" - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 877cbccf36fdc6213abb9611fb9279c4bb76ef7ecb4ec554b3935419a99d55e6d30a80799a054d468d43cc59a9777f21d22d6219a4597bfbd27f3f08a4cdfdc6 - languageName: node - linkType: hard - -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"react-sizeme@npm:^3.0.1": - version: 3.0.2 - resolution: "react-sizeme@npm:3.0.2" - dependencies: - element-resize-detector: ^1.2.2 - invariant: ^2.2.4 - shallowequal: ^1.1.0 - throttle-debounce: ^3.0.1 - checksum: 97cb852c24bbd50acb310da89df564e0d069415f6635676dae3d3bdc583ece88090c0f2ee88a6b0dc36d2793af4a11e83bf6bbb41b86225dd0cf338e8f7e8552 - languageName: node - linkType: hard - -"react@npm:16.14.0": - version: 16.14.0 - resolution: "react@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - checksum: 8484f3ecb13414526f2a7412190575fc134da785c02695eb92bb6028c930bfe1c238d7be2a125088fec663cc7cda0a3623373c46807cf2c281f49c34b79881ac - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^4.0.1": - version: 4.0.1 - resolution: "read-pkg@npm:4.0.1" - dependencies: - normalize-package-data: ^2.3.2 - parse-json: ^4.0.0 - pify: ^3.0.0 - checksum: 56193535486c50a0a40039e4a92f68676362f5a7160628ca4d856c62509e125220f69c562a32940dcc51e3dcd38211af69756bbb5b8a1aed1d09be1bedd1e1a5 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 - languageName: node - linkType: hard - -"readable-stream@npm:^2.2.2": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"recast@npm:^0.19.0": - version: 0.19.1 - resolution: "recast@npm:0.19.1" - dependencies: - ast-types: 0.13.3 - esprima: ~4.0.0 - private: ^0.1.8 - source-map: ~0.6.1 - checksum: f5de5f803a1b026d38fd9f11b510ec2d18d7d0518f14ea24e088b9b0061ab5b52cfb6206e826396bbd72870eca55894ca961b909fc18d382e3695275fb253b5c - languageName: node - linkType: hard - -"recast@npm:^0.20.4": - version: 0.20.5 - resolution: "recast@npm:0.20.5" - dependencies: - ast-types: 0.14.2 - esprima: ~4.0.0 - source-map: ~0.6.1 - tslib: ^2.0.1 - checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4, regenerator-runtime@npm:^0.13.7": - version: 0.13.10 - resolution: "regenerator-runtime@npm:0.13.10" - checksum: 09893f5a9e82932642d9a999716b6c626dc53ef2a01307c952ebbf8e011802360163a37c304c18a6c358548be5a72b448e37209954a18696f21e438c81cbb4b9 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.0": - version: 0.15.0 - resolution: "regenerator-transform@npm:0.15.0" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 86e54849ab1167618d28bb56d214c52a983daf29b0d115c976d79840511420049b6b42c9ebdf187defa8e7129bdd74b6dd266420d0d3868c9fa7f793b5d15d49 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.1.0": - version: 5.2.1 - resolution: "regexpu-core@npm:5.2.1" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: c1244db79f7a4597414cd7fdf5171fa73905f0cbc684385c78127fc6198f9cade8fe829a1c4036c8ec57ac75b1ffb8c196451abdd2e153f26a4d8043fa10bbb3 - languageName: node - linkType: hard - -"registry-auth-token@npm:^5.0.1": - version: 5.0.1 - resolution: "registry-auth-token@npm:5.0.1" - dependencies: - "@pnpm/npm-conf": ^1.0.4 - checksum: abd3a3b14aee445398d09efc3b67be57fbf1b1e93b61443b45196055d2372f3814e6942a56ecd5a5385ab8e26c2078e0b3f6d346689c49b82f7e5049940e4b03 - languageName: node - linkType: hard - -"registry-url@npm:^6.0.0": - version: 6.0.1 - resolution: "registry-url@npm:6.0.1" - dependencies: - rc: 1.2.8 - checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab - languageName: node - linkType: hard - -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - -"remark-mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "remark-mdx@npm:2.1.5" - dependencies: - mdast-util-mdx: ^2.0.0 - micromark-extension-mdxjs: ^1.0.0 - checksum: a5b2ccaa2bdb9d236e418e4b1868539b3dc4f8df0476b5574c9beb0cc8cf8a09573fa91aeb24f56a5c3bb4ed00d9b6db6afe36a53450985fdbdcf9736bed115b - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 - languageName: node - linkType: hard - -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 - languageName: node - linkType: hard - -"renderkid@npm:^3.0.0": - version: 3.0.0 - resolution: "renderkid@npm:3.0.0" - dependencies: - css-select: ^4.1.3 - dom-converter: ^0.2.0 - htmlparser2: ^6.1.0 - lodash: ^4.17.21 - strip-ansi: ^6.0.1 - checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b - languageName: node - linkType: hard - -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.15.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.15.1#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: ^3.0.0 - checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rimraf@npm:^2.6.1": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"rxjs@npm:^6.5.2": - version: 6.6.7 - resolution: "rxjs@npm:6.6.7" - dependencies: - tslib: ^1.9.0 - checksum: bc334edef1bb8bbf56590b0b25734ba0deaf8825b703256a93714308ea36dff8a11d25533671adf8e104e5e8f256aa6fdfe39b2e248cdbd7a5f90c260acbbd1b - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 7f117b604554c9daca713be76cecc6c52932ed1dd6303638274f21319038bfd760fbfd353e526cc83f11894935bc4beb71f5b7b9478c11bf9718c0e0d94c51cb - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-identifier@npm:^0.4.1": - version: 0.4.2 - resolution: "safe-identifier@npm:0.4.2" - checksum: 67e28ed89a74cf20b827419003d3cb60a0ebaec0771c2c818f4b2239bf4f96e01ad90aa8db6dc57ee90c0c438b6f46323e4b5a3d955d18d8c4e158ea035cabdd - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"scheduler@npm:^0.19.1": - version: 0.19.1 - resolution: "scheduler@npm:0.19.1" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 73e185a59e2ff5aa3609f5b9cb97ddd376f89e1610579d29939d952411ca6eb7a24907a4ea4556569dacb931467a1a4a56d94fe809ef713aa76748642cd96a6c - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.5": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": ^7.0.5 - ajv: ^6.12.4 - ajv-keywords: ^3.5.2 - checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 - ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f - languageName: node - linkType: hard - -"semver-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "semver-diff@npm:4.0.0" - dependencies: - semver: ^7.3.5 - checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0, semver@npm:^5.7.1": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"semver@npm:~7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 272c11bf8d083274ef79fe40a81c55c184dff84dd58e3c325299d0927ba48cece1f020793d138382b85f89bab5002a35a5ba59a3a68a7eebbb597eb733838778 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: ~1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: ~1.3.2 - safe-buffer: 5.1.1 - checksum: f4dd0fbee3b7e18d0a27ba6ba01d2f585f23f533010c9e8c74aad74615b19b12d8fbe714f14cb3579803f0bacecd67cdc858714cb56c6e28f8dd07ccc997aea4 - languageName: node - linkType: hard - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d - languageName: node - linkType: hard - -"server-kitchen-sink@workspace:.": - version: 0.0.0-use.local - resolution: "server-kitchen-sink@workspace:." - dependencies: - "@storybook/addon-a11y": 7.0.0-alpha.42 - "@storybook/addon-actions": 7.0.0-alpha.42 - "@storybook/addon-backgrounds": 7.0.0-alpha.42 - "@storybook/addon-controls": 7.0.0-alpha.42 - "@storybook/addon-highlight": 7.0.0-alpha.42 - "@storybook/addon-links": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/server": 7.0.0-alpha.42 - "@storybook/server-webpack5": 7.0.0-alpha.42 - concurrently: ^5.3.0 - cors: ^2.8.5 - express: ^4.17.1 - morgan: ^1.10.0 - nodemon: ^2.0.7 - pug: ^3.0.0 - safe-identifier: ^0.4.1 - storybook: 7.0.0-alpha.42 - languageName: unknown - linkType: soft - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: ^6.0.2 - checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 - languageName: node - linkType: hard - -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"simple-update-notifier@npm:^1.0.7": - version: 1.0.7 - resolution: "simple-update-notifier@npm:1.0.7" - dependencies: - semver: ~7.0.0 - checksum: aaadc1f158ad5101b363d1c7aed1f30fc1cac59a760aa31702633e0e6fe423348f07d0e78185aef0aad29130a7b7f0f188c21c7bc7353f897a0ea3682e051a70 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.0": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^2.0.0": - version: 2.0.1 - resolution: "space-separated-tokens@npm:2.0.1" - checksum: 66e30a6382d6e3ab0a6573d510235a198202071d4ebfef8c198f10433166f0cdced4dbf0946cad3c4b2ecc336896a11f98b2ec93047e140fe7aef6fd3a21365b - languageName: node - linkType: hard - -"spawn-command@npm:^0.0.2-1": - version: 0.0.2 - resolution: "spawn-command@npm:0.0.2" - checksum: e35c5d28177b4d461d33c88cc11f6f3a5079e2b132c11e1746453bbb7a0c0b8a634f07541a2a234fa4758239d88203b758def509161b651e81958894c0b4b64b - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.12 - resolution: "spdx-license-ids@npm:3.0.12" - checksum: 92a4dddce62ce1db6fe54a7a839cf85e06abc308fc83b776a55b44e4f1906f02e7ebd506120847039e976bbbad359ea8bdfafb7925eae5cd7e73255f02e0b7d6 - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - -"store2@npm:^2.12.0": - version: 2.14.2 - resolution: "store2@npm:2.14.2" - checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 - languageName: node - linkType: hard - -"storybook@portal:../../code/lib/cli-storybook::locator=server-kitchen-sink%40workspace%3A.": - version: 0.0.0-use.local - resolution: "storybook@portal:../../code/lib/cli-storybook::locator=server-kitchen-sink%40workspace%3A." - dependencies: - "@storybook/cli": 7.0.0-alpha.42 - bin: - sb: ./index.js - storybook: ./index.js - languageName: node - linkType: soft - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^3.0.0, string-width@npm:^3.1.0": - version: 3.1.0 - resolution: "string-width@npm:3.1.0" - dependencies: - emoji-regex: ^7.0.1 - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^5.1.0 - checksum: 57f7ca73d201682816d573dc68bd4bb8e1dff8dc9fcf10470fdfc3474135c97175fec12ea6a159e67339b41e86963112355b64529489af6e7e70f94a7caf08b2 - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"stringify-entities@npm:^4.0.0": - version: 4.0.3 - resolution: "stringify-entities@npm:4.0.3" - dependencies: - character-entities-html4: ^2.0.0 - character-entities-legacy: ^3.0.0 - checksum: 59e8f523b403bf7d415690e72ae52982decd6ea5426bd8b3f5c66225ddde73e766c0c0d91627df082d0794e30b19dd907ffb5864cef3602e4098d6777d7ca3c2 - languageName: node - linkType: hard - -"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": - version: 5.2.0 - resolution: "strip-ansi@npm:5.2.0" - dependencies: - ansi-regex: ^4.1.0 - checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: ^6.0.1 - checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.0.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 - languageName: node - linkType: hard - -"style-loader@npm:^3.3.1": - version: 3.3.1 - resolution: "style-loader@npm:3.3.1" - peerDependencies: - webpack: ^5.0.0 - checksum: 470feef680f59e2fce4d6601b5c55b88c01ad8d1dd693c528ffd591ff5fd7c01a4eff3bdbe62f26f847d6bd2430c9ab594be23307cfe7a3446ab236683f0d066 - languageName: node - linkType: hard - -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" - dependencies: - inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^6.1.0": - version: 6.1.0 - resolution: "supports-color@npm:6.1.0" - dependencies: - has-flag: ^3.0.0 - checksum: 74358f9535c83ee113fbaac354b11e808060f6e7d8722082ee43af3578469134e89d00026dce2a6b93ce4e5b89d0e9a10f638b2b9f64c7838c2fb2883a47b3d5 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"synchronous-promise@npm:^2.0.15": - version: 2.0.16 - resolution: "synchronous-promise@npm:2.0.16" - checksum: 1a3e5dfa9e3b913452366e182d4cae5c2ffb9de8c9753ecb602539a298e82ab82de951a0b0ecd86b2e2e237b1236eb5e82964c8ce13b2d23f7ecd52767a2b74d - languageName: node - linkType: hard - -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - 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 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"telejson@npm:^6.0.8": - version: 6.0.8 - resolution: "telejson@npm:6.0.8" - dependencies: - "@types/is-function": ^1.0.0 - global: ^4.4.0 - is-function: ^1.0.2 - is-regex: ^1.1.2 - is-symbol: ^1.0.3 - isobject: ^4.0.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - checksum: 7411a5e78a35720bd0654a544409d3ce467b1dbb2073c73f36476b4c0905d97dbf539d6cbae737bb1fd8c872c2058f2a5450163a15117ed3fa031b2a2b8b33f6 - languageName: node - linkType: hard - -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1": - version: 5.3.6 - resolution: "terser-webpack-plugin@npm:5.3.6" - dependencies: - "@jridgewell/trace-mapping": ^0.3.14 - jest-worker: ^27.4.5 - schema-utils: ^3.1.1 - serialize-javascript: ^6.0.0 - terser: ^5.14.1 - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8f3448d7fdb0434ce6a0c09d95c462bfd2f4a5a430233d854163337f734a7f5c07c74513d16081e06d4ca33d366d5b1a36f5444219bc41a7403afd6162107bad - languageName: node - linkType: hard - -"terser@npm:^5.10.0, terser@npm:^5.14.1": - version: 5.15.1 - resolution: "terser@npm:5.15.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: 9880a1e0956983a1ce5de204ea35121c0009fa41d582a6904ae850e1953a1a2cc021168439565280c5a8eee67c85a874175627e24989b046c7a72589b81c3979 - languageName: node - linkType: hard - -"throttle-debounce@npm:^3.0.1": - version: 3.0.1 - resolution: "throttle-debounce@npm:3.0.1" - checksum: e34ef638e8df3a9154249101b68afcbf2652a139c803415ef8a2f6a8bc577bcd4d79e4bb914ad3cd206523ac78b9fb7e80885bfa049f64fbb1927f99d98b5736 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 - languageName: node - linkType: hard - -"token-stream@npm:1.0.0": - version: 1.0.0 - resolution: "token-stream@npm:1.0.0" - checksum: e8adb56f31b813b6157130e7fc2fe14eb60e7cbf7b746e70e8293c7e55664d8e7ad5d93d7ae3aa4cad7fcb2b0aaf59dad6f2fd4ee0269204e55af5b05bc369e2 - languageName: node - linkType: hard - -"touch@npm:^3.1.0": - version: 3.1.0 - resolution: "touch@npm:3.1.0" - dependencies: - nopt: ~1.0.10 - bin: - nodetouch: ./bin/nodetouch.js - checksum: e0be589cb5b0e6dbfce6e7e077d4a0d5f0aba558ef769c6d9c33f635e00d73d5be49da6f8631db302ee073919d82b5b7f56da2987feb28765c95a7673af68647 - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"tree-kill@npm:^1.2.2": - version: 1.2.2 - resolution: "tree-kill@npm:1.2.2" - bin: - tree-kill: cli.js - checksum: 49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7 - languageName: node - linkType: hard - -"trim-lines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" - checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed - languageName: node - linkType: hard - -"trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 - languageName: node - linkType: hard - -"ts-dedent@npm:^2.0.0": - version: 2.2.0 - resolution: "ts-dedent@npm:2.2.0" - checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af - languageName: node - linkType: hard - -"tslib@npm:^1.9.0": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": - version: 2.4.0 - resolution: "tslib@npm:2.4.0" - checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.1": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 - languageName: node - linkType: hard - -"type-fest@npm:^2.13.0, type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" - bin: - uglifyjs: bin/uglifyjs - checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"undefsafe@npm:^2.0.5": - version: 2.0.5 - resolution: "undefsafe@npm:2.0.5" - checksum: f42ab3b5770fedd4ada175fc1b2eb775b78f609156f7c389106aafd231bfc210813ee49f54483d7191d7b76e483bc7f537b5d92d19ded27156baf57592eb02cc - languageName: node - linkType: hard - -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: ^2.0.0 - unicode-property-aliases-ecmascript: ^2.0.0 - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c - languageName: node - linkType: hard - -"unique-string@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-string@npm:3.0.0" - dependencies: - crypto-random-string: ^4.0.0 - checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df - languageName: node - linkType: hard - -"unist-builder@npm:^3.0.0": - version: 3.0.0 - resolution: "unist-builder@npm:3.0.0" - dependencies: - "@types/unist": ^2.0.0 - checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84 - languageName: node - linkType: hard - -"unist-util-generated@npm:^2.0.0": - version: 2.0.0 - resolution: "unist-util-generated@npm:2.0.0" - checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0 - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.1.1 - resolution: "unist-util-is@npm:5.1.1" - checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4 - languageName: node - linkType: hard - -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.1 - resolution: "unist-util-position-from-estree@npm:1.1.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: 63808bdcb8b49afa5231712d95b586fe877859ee03d23adb47485c30222007a5af55e95d103d4af51d1d16376aaa5a58fa985a08d63727c38b1515873df8b79b - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.3 - resolution: "unist-util-position@npm:4.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209 - languageName: node - linkType: hard - -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.1 - resolution: "unist-util-remove-position@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 7d2808662ac65f2b2f615822b78060419f738fb3b074b10cec77c596ea966b8f5c47553d2d322822a5975c49d2b21cdd64c198ae9fb02a9d54d1afa6342cdd6a - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.2 - resolution: "unist-util-stringify-position@npm:3.0.2" - dependencies: - "@types/unist": ^2.0.0 - checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.1.1": - version: 5.1.1 - resolution: "unist-util-visit-parents@npm:5.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18 - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit@npm:4.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.9": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"update-notifier@npm:^6.0.2": - version: 6.0.2 - resolution: "update-notifier@npm:6.0.2" - dependencies: - boxen: ^7.0.0 - chalk: ^5.0.1 - configstore: ^6.0.0 - has-yarn: ^3.0.0 - import-lazy: ^4.0.0 - is-ci: ^3.0.1 - is-installed-globally: ^0.4.0 - is-npm: ^6.0.0 - is-yarn-global: ^0.4.0 - latest-version: ^7.0.0 - pupa: ^3.1.0 - semver: ^7.3.7 - semver-diff: ^4.0.0 - xdg-basedir: ^5.1.0 - checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util@npm:^0.12.4": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: ^2.0.3 - is-arguments: ^1.0.4 - is-generator-function: ^1.0.7 - is-typed-array: ^1.1.3 - which-typed-array: ^1.1.2 - checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uuid-browser@npm:^3.1.0": - version: 3.1.0 - resolution: "uuid-browser@npm:3.1.0" - checksum: 951ec47593865c7cc746df671f7b0f0ff48fcab583fcdaeab6c517a5222af0f5e144a6fcea5fa9620a5b3be047e2f9412a80267ea5c45050e07d51774197d49e - languageName: node - linkType: hard - -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad - languageName: node - linkType: hard - -"vary@npm:^1, vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"vfile-location@npm:^4.0.0": - version: 4.0.1 - resolution: "vfile-location@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: cc0df62075c741beee699e651374aeb56c4c1f4333398c0ba924281c2b51d4b7669c69c5b837ea395775626ad030d6f1bd27fd0a7eaf3f9f1bbd55393948ad6c - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.2 - resolution: "vfile-message@npm:3.1.2" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: 96fbd9e9b5e0babb5ee61e3a716dc7a6a8c28f2c8c711837d95c88b782161b31549ad16059a78990d7b836d0f4d3b4d8c9ffde44370d48d9cac991fc1e3e17c5 - languageName: node - linkType: hard - -"vfile@npm:^5.0.0": - version: 5.3.5 - resolution: "vfile@npm:5.3.5" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 14a9ea19d1801bb99fc9a451d220d2ee84d891bae52094db660f9bf637c1cada0c45a3e00962ff3e901da16dd5051367e25a4a214e40db57ae40f57363796b45 - languageName: node - linkType: hard - -"void-elements@npm:^3.1.0": - version: 3.1.0 - resolution: "void-elements@npm:3.1.0" - checksum: 0390f818107fa8fce55bb0a5c3f661056001c1d5a2a48c28d582d4d847347c2ab5b7f8272314cac58acf62345126b6b09bea623a185935f6b1c3bbce0dfd7f7f - languageName: node - linkType: hard - -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" - dependencies: - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" - dependencies: - colorette: ^2.0.10 - memfs: ^3.4.3 - mime-types: ^2.1.31 - range-parser: ^1.2.1 - schema-utils: ^4.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 - languageName: node - linkType: hard - -"webpack-hot-middleware@npm:^2.25.1": - version: 2.25.2 - resolution: "webpack-hot-middleware@npm:2.25.2" - dependencies: - ansi-html-community: 0.0.8 - html-entities: ^2.1.0 - strip-ansi: ^6.0.0 - checksum: 9bbcb4a3109d5efc3fedc41ab84209745e47770a205897324adff9126196d9cd086237288161d71cd7273a0154e09046d025a3c30c6938bd04e58d3b379fdcca - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.4.3": - version: 0.4.5 - resolution: "webpack-virtual-modules@npm:0.4.5" - checksum: 0ae9a8b50d0cb1e43da5ff8acaa7b99c34a42f0d6cc83a82908fb6e131e574a949d19948df4fdd3de0dbfdbadb2b93ceb4a740c55727a4236eb3b2bbc8f785a6 - languageName: node - linkType: hard - -"webpack@npm:5": - version: 5.74.0 - resolution: "webpack@npm:5.74.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.1.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 320c41369a75051b19e18c63f408b3dcc481852e992f83d311771c5ec0f05f2946385e8ebef62030cf3587f0a3d2f12779ffdb191569a966847289ba7313f946 - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2": - version: 1.1.8 - resolution: "which-typed-array@npm:1.1.8" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.9 - checksum: bedf4d30a738e848404fe67fe0ace33433a7298cf3f5a4d4b2c624ba99c4d25f06a7fd6f3566c3d16af5f8a54f0c6293cbfded5b1208ce11812753990223b45a - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: ^4.0.0 - checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 - languageName: node - linkType: hard - -"widest-line@npm:^4.0.1": - version: 4.0.1 - resolution: "widest-line@npm:4.0.1" - dependencies: - string-width: ^5.0.1 - checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba - languageName: node - linkType: hard - -"with@npm:^7.0.0": - version: 7.0.2 - resolution: "with@npm:7.0.2" - dependencies: - "@babel/parser": ^7.9.6 - "@babel/types": ^7.9.6 - assert-never: ^1.2.1 - babel-walk: 3.0.0-canary-5 - checksum: a00fe87b736e434bd8b9d3e62ddcd664bde7d3990a011a0f1bdeb499db0d6c28e6d2ef921dcc47650b8d436eee55459bcae8fab4ce1ed89f4926ddda407ab755 - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"wrap-ansi@npm:^5.1.0": - version: 5.1.0 - resolution: "wrap-ansi@npm:5.1.0" - dependencies: - ansi-styles: ^3.2.0 - string-width: ^3.0.0 - strip-ansi: ^5.0.0 - checksum: 9b48c862220e541eb0daa22661b38b947973fc57054e91be5b0f2dcc77741a6875ccab4ebe970a394b4682c8dfc17e888266a105fb8b0a9b23c19245e781ceae - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.0.1": - version: 8.0.1 - resolution: "wrap-ansi@npm:8.0.1" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^6.1.0": - version: 6.2.2 - resolution: "ws@npm:6.2.2" - dependencies: - async-limiter: ~1.0.0 - checksum: aec3154ec51477c094ac2cb5946a156e17561a581fa27005cbf22c53ac57f8d4e5f791dd4bbba6a488602cb28778c8ab7df06251d590507c3c550fd8ebeee949 - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.9.0 - resolution: "ws@npm:8.9.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 23aa0f021b2eb65c108ec4c3e08c0d81ba01f82b500432dfe327fd6be36079c1d81fdb0eac6464d2a0eb49904d34a9ab8c59619d673fa07b8346f83aeb0cbf12 - languageName: node - linkType: hard - -"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": - version: 5.1.0 - resolution: "xdg-basedir@npm:5.1.0" - checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea - languageName: node - linkType: hard - -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yaml-loader@npm:^0.8.0": - version: 0.8.0 - resolution: "yaml-loader@npm:0.8.0" - dependencies: - javascript-stringify: ^2.0.1 - loader-utils: ^2.0.0 - yaml: ^2.0.0 - checksum: d12dd264666b80baec23cea9f81cb677a9102d6f34ab45d8b6c085ace4d05b7285db9ce317db57264c3317af01128ce6e5b754e6866d15ccd75e8141902fb529 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yaml@npm:^2.0.0": - version: 2.1.3 - resolution: "yaml@npm:2.1.3" - checksum: 91316062324a93f9cb547469092392e7d004ff8f70c40fecb420f042a4870b2181557350da56c92f07bd44b8f7a252b0be26e6ade1f548e1f4351bdd01c9d3c7 - languageName: node - linkType: hard - -"yargs-parser@npm:^13.1.2": - version: 13.1.2 - resolution: "yargs-parser@npm:13.1.2" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: c8bb6f44d39a4acd94462e96d4e85469df865de6f4326e0ab1ac23ae4a835e5dd2ddfe588317ebf80c3a7e37e741bd5cb0dc8d92bcc5812baefb7df7c885e86b - languageName: node - linkType: hard - -"yargs@npm:^13.3.0": - version: 13.3.2 - resolution: "yargs@npm:13.3.2" - dependencies: - cliui: ^5.0.0 - find-up: ^3.0.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^3.0.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^13.1.2 - checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 - languageName: node - linkType: hard - -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"zwitch@npm:^2.0.0": - version: 2.0.2 - resolution: "zwitch@npm:2.0.2" - checksum: 8edd7af8375f12f64d8dbef815af32cd77bd9237d0b013210ba4e3aef25fdc460fe264cd0a19deabe9f86ef0c607240ebac1a336bf4a70bf06ef53e0652de116 - languageName: node - linkType: hard diff --git a/test-storybooks/standalone-preview/package.json b/test-storybooks/standalone-preview/package.json index 8151fa542cfd..0ff82a1af4f1 100644 --- a/test-storybooks/standalone-preview/package.json +++ b/test-storybooks/standalone-preview/package.json @@ -1,22 +1,11 @@ { "name": "standalone-preview", - "version": "7.0.0-alpha.43", + "version": "7.2.0-alpha.0", "private": true, "scripts": { "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook dev -p 9011 -c ../official-storybook --preview-url=http://localhost:1337/external-iframe.html", "storybook-preview": "cross-env PREVIEW_URL=external-iframe.html NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" parcel ./storybook.html --port 1337" }, - "devDependencies": { - "@storybook/addon-docs": "7.0.0-alpha.43", - "@storybook/cli": "7.0.0-alpha.43", - "@storybook/react": "7.0.0-alpha.43", - "@storybook/react-webpack5": "7.0.0-alpha.43", - "cross-env": "^7.0.3", - "parcel": "2.0.1", - "react": "16.14.0", - "react-dom": "16.14.0", - "storybook": "7.0.0-alpha.43" - }, "resolutions": { "@storybook/addon-a11y": "portal:../../code/addons/a11y", "@storybook/addon-actions": "portal:../../code/addons/actions", @@ -35,54 +24,35 @@ "@storybook/addon-storysource": "portal:../../code/addons/storysource", "@storybook/addon-toolbars": "portal:../../code/addons/toolbars", "@storybook/addon-viewport": "portal:../../code/addons/viewport", + "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/ember": "portal:../../code/frameworks/ember", - "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", - "@storybook/nextjs": "portal:../../code/frameworks/nextjs", - "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", - "@storybook/react-vite": "portal:../../code/frameworks/react-vite", - "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", - "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", - "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", - "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", - "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", - "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", - "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", - "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", - "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", - "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", - "@storybook/addons": "portal:../../code/lib/addons", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", - "@storybook/builder-manager": "portal:../../code/lib/builder-manager", - "@storybook/builder-vite": "portal:../../code/lib/builder-vite", - "@storybook/builder-webpack5": "portal:../../code/lib/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", + "@storybook/builder-manager": "portal:../../code/builders/builder-manager", + "@storybook/builder-vite": "portal:../../code/builders/builder-vite", + "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", - "sb": "portal:../../code/lib/cli-sb", - "storybook": "portal:../../code/lib/cli-storybook", - "@storybook/client-api": "portal:../../code/lib/client-api", + "@storybook/client-api": "portal:../../code/deprecated/client-api", "@storybook/client-logger": "portal:../../code/lib/client-logger", "@storybook/codemod": "portal:../../code/lib/codemod", "@storybook/components": "portal:../../code/lib/components", - "@storybook/core-client": "portal:../../code/lib/core-client", + "@storybook/core-client": "portal:../../code/deprecated/core-client", "@storybook/core-common": "portal:../../code/lib/core-common", "@storybook/core-events": "portal:../../code/lib/core-events", "@storybook/core-server": "portal:../../code/lib/core-server", "@storybook/core-webpack": "portal:../../code/lib/core-webpack", "@storybook/csf-tools": "portal:../../code/lib/csf-tools", "@storybook/docs-tools": "portal:../../code/lib/docs-tools", + "@storybook/ember": "portal:../../code/frameworks/ember", + "@storybook/html": "portal:../../code/renderers/html", + "@storybook/html-webpack5": "portal:../../code/frameworks/html-webpack5", "@storybook/instrumenter": "portal:../../code/lib/instrumenter", + "@storybook/manager": "portal:../../code/ui/manager", + "@storybook/nextjs": "portal:../../code/frameworks/nextjs", "@storybook/node-logger": "portal:../../code/lib/node-logger", "@storybook/postinstall": "portal:../../code/lib/postinstall", - "@storybook/preview-web": "portal:../../code/lib/preview-web", - "@storybook/router": "portal:../../code/lib/router", - "@storybook/source-loader": "portal:../../code/lib/source-loader", - "@storybook/store": "portal:../../code/lib/store", - "@storybook/telemetry": "portal:../../code/lib/telemetry", - "@storybook/theming": "portal:../../code/lib/theming", + "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preact-webpack5": "portal:../../code/frameworks/preact-webpack5", "@storybook/preset-html-webpack": "portal:../../code/presets/html-webpack", "@storybook/preset-preact-webpack": "portal:../../code/presets/preact-webpack", "@storybook/preset-react-webpack": "portal:../../code/presets/react-webpack", @@ -91,14 +61,41 @@ "@storybook/preset-vue-webpack": "portal:../../code/presets/vue-webpack", "@storybook/preset-vue3-webpack": "portal:../../code/presets/vue3-webpack", "@storybook/preset-web-components-webpack": "portal:../../code/presets/web-components-webpack", - "@storybook/html": "portal:../../code/renderers/html", - "@storybook/preact": "portal:../../code/renderers/preact", + "@storybook/preview-web": "portal:../../code/deprecated/preview-web", "@storybook/react": "portal:../../code/renderers/react", + "@storybook/react-vite": "portal:../../code/frameworks/react-vite", + "@storybook/react-webpack5": "portal:../../code/frameworks/react-webpack5", + "@storybook/router": "portal:../../code/lib/router", "@storybook/server": "portal:../../code/renderers/server", + "@storybook/server-webpack5": "portal:../../code/frameworks/server-webpack5", + "@storybook/source-loader": "portal:../../code/lib/source-loader", + "@storybook/store": "portal:../../code/deprecated/store", "@storybook/svelte": "portal:../../code/renderers/svelte", + "@storybook/svelte-vite": "portal:../../code/frameworks/svelte-vite", + "@storybook/svelte-webpack5": "portal:../../code/frameworks/svelte-webpack5", + "@storybook/telemetry": "portal:../../code/lib/telemetry", + "@storybook/theming": "portal:../../code/lib/theming", "@storybook/vue": "portal:../../code/renderers/vue", + "@storybook/vue-vite": "portal:../../code/frameworks/vue-vite", + "@storybook/vue-webpack5": "portal:../../code/frameworks/vue-webpack5", "@storybook/vue3": "portal:../../code/renderers/vue3", + "@storybook/vue3-vite": "portal:../../code/frameworks/vue3-vite", + "@storybook/vue3-webpack5": "portal:../../code/frameworks/vue3-webpack5", "@storybook/web-components": "portal:../../code/renderers/web-components", - "@storybook/manager": "portal:../../code/ui/manager" + "@storybook/web-components-vite": "portal:../../code/frameworks/web-components-vite", + "@storybook/web-components-webpack5": "portal:../../code/frameworks/web-components-webpack5", + "sb": "portal:../../code/lib/cli-sb", + "storybook": "portal:../../code/lib/cli-storybook" + }, + "devDependencies": { + "@storybook/addon-docs": "7.2.0-alpha.0", + "@storybook/cli": "7.2.0-alpha.0", + "@storybook/react": "7.2.0-alpha.0", + "@storybook/react-webpack5": "7.2.0-alpha.0", + "cross-env": "^7.0.3", + "parcel": "2.0.1", + "react": "16.14.0", + "react-dom": "16.14.0", + "storybook": "7.2.0-alpha.0" } } \ No newline at end of file diff --git a/test-storybooks/standalone-preview/yarn.lock b/test-storybooks/standalone-preview/yarn.lock index 42d2da2a2647..e69de29bb2d1 100644 --- a/test-storybooks/standalone-preview/yarn.lock +++ b/test-storybooks/standalone-preview/yarn.lock @@ -1,13250 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@aw-web-design/x-default-browser@npm:1.4.88": - version: 1.4.88 - resolution: "@aw-web-design/x-default-browser@npm:1.4.88" - dependencies: - default-browser-id: 3.0.0 - bin: - x-default-browser: bin/x-default-browser.js - checksum: c85e61dc9e5bb04906d8ac29cce35369705c3ea3abe36a5afdecc9caefd7ee0f14596ccc6eb617c86790a67b6ee7f7f070a3e2f9e9152a8ba92adf2ccee1433a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.19.3, @babel/compat-data@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/compat-data@npm:7.19.4" - checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.7.5": - version: 7.19.6 - resolution: "@babel/core@npm:7.19.6" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helpers": ^7.19.4 - "@babel/parser": ^7.19.6 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 85c0bd38d0ef180aa2d23c3db6840a0baec88d2e05c30e7ffc3dfeb6b2b89d6e4864922f04997a1f4ce55f9dd469bf2e76518d5c7ae744b98516709d32769b73 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/generator@npm:7.19.6" - dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: 734fcb1fbef182e7b8967459cb39b81edd2701dd13170c154b368d4e086842f72ef214798c5a37e67e0a695dfb34b13143277bedcd9795b3b1b83da8e1d236c6 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.0, @babel/helper-compilation-targets@npm:^7.19.3": - version: 7.19.3 - resolution: "@babel/helper-compilation-targets@npm:7.19.3" - dependencies: - "@babel/compat-data": ^7.19.3 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f0c6fb77b6f113d70f308e7093f60dd465b697818badf5df0519d8dd12b6bfb1f4ad300b923207ce9f9c1c940ef58bff12ac4270c0863eadf9e303b7dd6d01b6 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.1.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 811cc90afe9fc25a74ed37fc0c1361a4a91b0b940235dd3958e3f03b366d40a903b40fc93b51bcb93be774aba573219f8f215664bea1d1301f58797ca6854f3f - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/helper-module-transforms@npm:7.19.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.19.4 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.6 - "@babel/types": ^7.19.4 - checksum: c28692b37d4b5abacc775bcab52a74f44a493f38c58cb72b56a6c6d67a97485dd8aff6f26905abd1a924d3261a171d0214a9fb76f48d8598f1e35b8b29284792 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.19.0 - resolution: "@babel/helper-plugin-utils@npm:7.19.0" - checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.18.9": - version: 7.19.1 - resolution: "@babel/helper-replace-supers@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.19.1 - "@babel/types": ^7.19.0 - checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-simple-access@npm:7.19.4" - dependencies: - "@babel/types": ^7.19.4 - checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: 6e93ccd10248293082606a4b3e30eed32c6f796d378f6b662796c88f462f348aa368aadeb48eb410cfcc8250db93b2d6627c2e55662530f08fc25397e588d68a - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.19.0 - resolution: "@babel/helper-wrap-function@npm:7.19.0" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 2453a6b134f12cc779179188c4358a66252c29b634a8195c0cf626e17f9806c3c4c40e159cd8056c2ec82b69b9056a088014fa43d6ccc1aca67da8d9605da8fd - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helpers@npm:7.19.4" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.4 - "@babel/types": ^7.19.4 - checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/parser@npm:7.19.6" - bin: - parser: ./bin/babel-parser.js - checksum: 9a3dca4ee3acd7e4fc3b58e1e1526a11fa334acbfe437f8ebf91dfaf48e943c147ef64b1733ba0a55af57d1eccafbf4e4a4afc46a15becd921971fe2ddf309bf - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 93abb5cb179a13db171bfc2cdf79489598f43c50cc174f97a2b7bb1d44d24ade7109665a20cf4e317ad6c1c730f036f06478f7c7e789b4240be1abdb60d6452f - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f101555b00aee6ee0107c9e40d872ad646bbd3094abdbeda56d17b107df69a0cb49e5d02dcf5f9d8753e25564e798d08429f12d811aaa1b307b6a725c0b8159c - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b8d7ae99ed5ad784f39e7820e3ac03841f91d6ed60ab4a98c61d6112253da36013e12807bae4ffed0ef3cb318e47debac112ed614e03b403fb8b075b09a828ee - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dd87fa4a48c6408c5e85dbd6405a65cc8fe909e3090030df46df90df64cdf3e74007381a58ed87608778ee597eff7395d215274009bb3f5d8964b2db5557754f - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.18.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 90a2a59da305e6c8c83831e16079193df33d727a77a90972e286af2c8c0295fddb91b0978b88f16f63080d08a82b08ce3ee82a88b0488b3c51decc73c1d35786 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f2db40e26172f07c50b635cb61e1f36165de3ba868fcf608d967642f0d044b7c6beb0e7ecf17cbd421144b99e1eae7ad6031ded92925343bb0ed1d08707b514f - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c8e56a972930730345f39f2384916fd8e711b3f4b4eae2ca9740e99958980118120d5cc9b6ac150f0965a5a35f825910e2c3013d90be3e9993ab6111df444569 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 54918a05375325ba0c60bc81abfb261e6f118bed2de94e4c17dca9a2006fc25e13b1a8b5504b9a881238ea394fd2f098f60b2eb3a392585d6348874565445e7b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 900f5c695755062b91eec74da6f9092f40b8fada099058b92576f1e23c55e9813ec437051893a9b3c05cefe39e8ac06303d4a91b384e1c03dd8dc1581ea11602 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.18.6" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-remap-async-to-generator": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2cca47468cf1aeefdc7ec35d670e195c86cee4de28a1970648c46a88ce6bd1806ef0bab27251b9e7fb791bb28a64dcd543770efd899f28ee5f7854e64e873d3 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-transform-block-scoping@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 86353ccbb57b4a0513ac2b1209271858f9c3f2c56b15a6225ff5f1c97ffb1c48f8984046a718a9835ecdae100cbe80ed0b9ca15a5554e33386671b56a8cd887c - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-classes@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.19.0 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-replace-supers": ^7.18.9 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5500953031fc3eae73f717c7b59ef406158a4a710d566a0f78a4944240bcf98f817f07cf1d6af0e749e21f0dfee29c36412b75d57b0a753c3ad823b70c596b79 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6bfbea207827d77592628973c0e8cc3319db636506bdc6e81e21582de2e767890e6975b382d0511e9ec3773b9f43691185df90832883bbf9251f688d27fbc1d - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/plugin-transform-destructuring@npm:7.19.4" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0ca40f6abf7273dafefb7a1cc11fef2b9ab3edbd23188cdcff8cd5e30783b89d64e7813e44aae9efab417b90972ae80971bf6c4130eeeb112bcfb44100c72657 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-for-of@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ca64c623cf0c7a80ab6f07ebd3e6e4ade95e2ae806696f70b43eafe6394fa8ce21f2b1ffdd15df2067f7363d2ecfe26472a97c6c774403d2163fa05f50c98f17 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-amd@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4236aad970025bc10c772c1589b1e2eab8b7681933bb5ffa6e395d4c1a52532b28c47c553e3011b4272ea81e5ab39fe969eb5349584e8390e59771055c467d42 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.18.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.19.6" - dependencies: - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-simple-access": ^7.19.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85d46945ab5ba3fff89e962d560a5d40253f228b9659a697683db3de07c0236e8cd60e5eb41958007359951a42bc268bf32350fcdb5b4a86f58dff1e032c096e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.19.0": - version: 7.19.6 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.6" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.19.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8526431cc81ea3eb232ad50862d0ed1cbb422b5251d14a8d6610d0ca0617f6e75f35179e98eb1235d0cccb980120350b9f112594e5646dd45378d41eaaf87342 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.19.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8a40f5d04f2140c44fe890a5a3fd72abc2a88445443ac2bd92e1e85d9366d3eb8f1ebb7e2c89d2daeaf213d9b28cb65605502ac9b155936d48045eeda6053494 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.18.8": - version: 7.18.8 - resolution: "@babel/plugin-transform-parameters@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b5863300da60face8a250d91da16294333bd5626e9721b13a3ba2078bd2a5a190e32c6e7a1323d5f547f579aeb2804ff49a62a55fcad2b1d099e55a55b788ea - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" - dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.12.12, @babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-regenerator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - regenerator-transform: ^0.15.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 60bd482cb0343c714f85c3e19a13b3b5fa05ee336c079974091c0b35e263307f4e661f4555dff90707a87d5efe19b1d51835db44455405444ac1813e268ad750 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-spread@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e73a4deb095999185e70b524d0ff4e35df50fcda58299e700a6149a15bbc1a9b369ef1cef384e15a54b3c3ce316cc0f054dbf249dcd0d1ca59f4281dd4df9718 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.19.3 - resolution: "@babel/plugin-transform-typescript@npm:7.19.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.19.0 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 094c8c4ad05fee7f1bda243923cadb2b05b58448ea7cf9560e734c7cffd72acfeab3e1e0d2b084eb47a5a950ac316f970b83904b3504c203fa6fe9d8d61526a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.12.11": - version: 7.19.4 - resolution: "@babel/preset-env@npm:7.19.4" - dependencies: - "@babel/compat-data": ^7.19.4 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-async-generator-functions": ^7.19.1 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.19.4 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@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.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.19.4 - "@babel/plugin-transform-classes": ^7.19.0 - "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.19.4 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.8 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.18.6 - "@babel/plugin-transform-modules-commonjs": ^7.18.6 - "@babel/plugin-transform-modules-systemjs": ^7.19.0 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.18.8 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.19.0 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.19.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f12af25281f3c5e7df60fa1e79ad481ddd7f6a111d4c0fabcffdabf0eaed3a01b4f8c647ae5445ed1f58df70f52083ffd283e8919ade7afa73801a49c733d22c - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.12.1, @babel/preset-flow@npm:^7.13.13": - version: 7.18.6 - resolution: "@babel/preset-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-flow-strip-types": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 - languageName: node - linkType: hard - -"@babel/preset-react@npm:^7.12.10": - version: 7.18.6 - resolution: "@babel/preset-react@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.18.6 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 540d9cf0a0cc0bb07e6879994e6fb7152f87dafbac880b56b65e2f528134c7ba33e0cd140b58700c77b2ebf4c81fa6468fed0ba391462d75efc7f8c1699bb4c3 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/preset-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-typescript": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.16": - version: 7.18.9 - resolution: "@babel/register@npm:7.18.9" - dependencies: - clone-deep: ^4.0.1 - find-cache-dir: ^2.0.0 - make-dir: ^2.1.0 - pirates: ^4.0.5 - source-map-support: ^0.5.16 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4": - version: 7.19.4 - resolution: "@babel/runtime@npm:7.19.4" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 66b7e3c13e9ee1d2c9397ea89144f29a875edee266a0eb2d9971be51b32fdbafc85808c7a45e011e6681899bb804b4e2ee2aed6dc07108dbbd6b11b6cc2afba6 - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/traverse@npm:7.19.6" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.6 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3fafa244f7d0b696a9d38f5da016a8f8db4b08ac60a067b299a8f54d91fb7c70c3edf06f921221d333137e65ffb64392526e68fdcf596ec91e95720037789d66 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.2.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.19.4 - resolution: "@babel/types@npm:7.19.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 - languageName: node - linkType: hard - -"@base2/pretty-print-object@npm:1.0.1": - version: 1.0.1 - resolution: "@base2/pretty-print-object@npm:1.0.1" - checksum: 1e8a5af578037a9d47d72f815983f9e4efb038e5f03e7635fc893194c5daa723215d71af33267893a9b618656c8eaea7be931b1c063c9b066a40994be0d23545 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 - languageName: node - linkType: hard - -"@cnakazawa/watch@npm:^1.0.3": - version: 1.0.4 - resolution: "@cnakazawa/watch@npm:1.0.4" - dependencies: - exec-sh: ^0.3.2 - minimist: ^1.2.0 - bin: - watch: cli.js - checksum: 88f395ca0af2f3c0665b8ce7bb29e83647ec5d141e8735712aeeee4117081555436712966b6957aa1c461f6f826a4d23b0034e379c443a10e919f81c8748bf29 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.3": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.14.54": - version: 0.14.54 - resolution: "@esbuild/linux-loong64@npm:0.14.54" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": - version: 2.1.2 - resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" - checksum: c59715902b9062aa7ff38973f298b509499fd146dbf564dc338b3f9e896da5bffb4ca676c27587fde79b3586003e24d65960acb62f009bca43dca34c76f8cbf7 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 - languageName: node - linkType: hard - -"@jest/transform@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/transform@npm:26.6.2" - dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^26.6.2 - babel-plugin-istanbul: ^6.0.0 - chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-util: ^26.6.2 - micromatch: ^4.0.2 - pirates: ^4.0.1 - slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: 31667b925a2f3b310d854495da0ab67be8f5da24df76ecfc51162e75f1140aed5d18069ba190cb5e0c7e492b04272c8c79076ddf5bbcff530ee80a16a02c4545 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@lezer/common@npm:^0.15.0, @lezer/common@npm:^0.15.7": - version: 0.15.12 - resolution: "@lezer/common@npm:0.15.12" - checksum: dae65816187bd690bf446bec116313d3b5328e70e3e1f7c806273d9356ca2017cf82aa650ea53b95260fb98898ea73d44f33319f9dbbd48d473e2f20771b2377 - languageName: node - linkType: hard - -"@lezer/lr@npm:^0.15.4": - version: 0.15.8 - resolution: "@lezer/lr@npm:0.15.8" - dependencies: - "@lezer/common": ^0.15.0 - checksum: e741225d6ac9cf08f8016bad49622fbd4a4e0d20c2e8c2b38a0abf0ddca69c58275b0ebdb9d5dde2905cf84f6977bc302f7ed5e5ba42c23afa27e9e65b900f36 - languageName: node - linkType: hard - -"@lmdb/lmdb-darwin-arm64@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-darwin-arm64@npm:2.5.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@lmdb/lmdb-darwin-x64@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-darwin-x64@npm:2.5.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@lmdb/lmdb-linux-arm64@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-linux-arm64@npm:2.5.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@lmdb/lmdb-linux-arm@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-linux-arm@npm:2.5.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@lmdb/lmdb-linux-x64@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-linux-x64@npm:2.5.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@lmdb/lmdb-win32-x64@npm:2.5.2": - version: 2.5.2 - resolution: "@lmdb/lmdb-win32-x64@npm:2.5.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "@mdx-js/mdx@npm:2.1.5" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/mdx": ^2.0.0 - estree-util-build-jsx: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-util-to-js: ^1.1.0 - estree-walker: ^3.0.0 - hast-util-to-estree: ^2.0.0 - markdown-extensions: ^1.0.0 - periscopic: ^3.0.0 - remark-mdx: ^2.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - unified: ^10.0.0 - unist-util-position-from-estree: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - checksum: 51b8b40aafbbeee618fd289ef6e0311e28e2598c514016aefb094237fa9cdf3e1c1407267a08dc7f8da9673de354b5b946f3ceb7ba5735bdf869d18c2a49117d - languageName: node - linkType: hard - -"@mdx-js/react@npm:^2.1.5": - version: 2.1.5 - resolution: "@mdx-js/react@npm:2.1.5" - dependencies: - "@types/mdx": ^2.0.0 - "@types/react": ">=16" - peerDependencies: - react: ">=16" - checksum: e47fb7086a4dd3e4d75d9ef0bf530009f72437a5ea91048e65d2e2f53955015a8c81b5058ac56fa00f401843305518e9f298183645d56c7e34336df4cc0b62bf - languageName: node - linkType: hard - -"@mischnic/json-sourcemap@npm:^0.1.0": - version: 0.1.0 - resolution: "@mischnic/json-sourcemap@npm:0.1.0" - dependencies: - "@lezer/common": ^0.15.7 - "@lezer/lr": ^0.15.4 - json5: ^2.2.1 - checksum: a30eda9eb02db5213b7aa2dc3c688257884a8969849ffa5a3a7c64c5f2a1cfed06691d94f02b37294a3a3b9efe7f88ee6b86c9ef20a799af54807ff2de2d253e - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:2.1.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:2.1.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:2.1.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-arm@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:2.1.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:2.1.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-win32-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:2.1.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 - languageName: node - linkType: hard - -"@parcel/bundler-default@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/bundler-default@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - checksum: 0efb78be2e8873d951549f0e6e25fe441ff7a0220bc8414430c8ddd4a7cb3ae84b100a5cc761277af699bf736e3631eb0fa456bdec1141a7bddc5f0f52312522 - languageName: node - linkType: hard - -"@parcel/cache@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/cache@npm:2.7.0" - dependencies: - "@parcel/fs": 2.7.0 - "@parcel/logger": 2.7.0 - "@parcel/utils": 2.7.0 - lmdb: 2.5.2 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: 7aa6a6883b1c62a8f1fa13d8841adbed3e2d969b72d67f51f833c6a14464ad5fc5a6368883759e817bcda44a4f0f617ece068a93d389bc68697c326e7651c8f6 - languageName: node - linkType: hard - -"@parcel/codeframe@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/codeframe@npm:2.7.0" - dependencies: - chalk: ^4.1.0 - checksum: 169f305518f567019d893ef3865ccc29f38d93652441d1345ef93f5c5c0533c99f37493917514c2be051939643e62faea213a52c0d797e078120f40cfe90138d - languageName: node - linkType: hard - -"@parcel/compressor-raw@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/compressor-raw@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - checksum: 6b9c009fe45ff461b4c7b6ec1ac723da6d09ea3d9af2b1b9a8bacefa97fd7c597fc2f71fc47328f97b26c7bd77cf6beedaa46797a26c5692bb8a63ea1cb5937b - languageName: node - linkType: hard - -"@parcel/config-default@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/config-default@npm:2.7.0" - dependencies: - "@parcel/bundler-default": 2.7.0 - "@parcel/compressor-raw": 2.7.0 - "@parcel/namer-default": 2.7.0 - "@parcel/optimizer-css": 2.7.0 - "@parcel/optimizer-htmlnano": 2.7.0 - "@parcel/optimizer-image": 2.7.0 - "@parcel/optimizer-svgo": 2.7.0 - "@parcel/optimizer-terser": 2.7.0 - "@parcel/packager-css": 2.7.0 - "@parcel/packager-html": 2.7.0 - "@parcel/packager-js": 2.7.0 - "@parcel/packager-raw": 2.7.0 - "@parcel/packager-svg": 2.7.0 - "@parcel/reporter-dev-server": 2.7.0 - "@parcel/resolver-default": 2.7.0 - "@parcel/runtime-browser-hmr": 2.7.0 - "@parcel/runtime-js": 2.7.0 - "@parcel/runtime-react-refresh": 2.7.0 - "@parcel/runtime-service-worker": 2.7.0 - "@parcel/transformer-babel": 2.7.0 - "@parcel/transformer-css": 2.7.0 - "@parcel/transformer-html": 2.7.0 - "@parcel/transformer-image": 2.7.0 - "@parcel/transformer-js": 2.7.0 - "@parcel/transformer-json": 2.7.0 - "@parcel/transformer-postcss": 2.7.0 - "@parcel/transformer-posthtml": 2.7.0 - "@parcel/transformer-raw": 2.7.0 - "@parcel/transformer-react-refresh-wrap": 2.7.0 - "@parcel/transformer-svg": 2.7.0 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: 165d4ec08907d20759267160d7ab6c455aa05d855211dbd4d5f973de3c6b4bcccc41a039f819df76bf39d348cf0448efda06bc8916c4daf4d6c626e05d731a01 - languageName: node - linkType: hard - -"@parcel/core@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/core@npm:2.7.0" - dependencies: - "@mischnic/json-sourcemap": ^0.1.0 - "@parcel/cache": 2.7.0 - "@parcel/diagnostic": 2.7.0 - "@parcel/events": 2.7.0 - "@parcel/fs": 2.7.0 - "@parcel/graph": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/logger": 2.7.0 - "@parcel/package-manager": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - "@parcel/workers": 2.7.0 - abortcontroller-polyfill: ^1.1.9 - base-x: ^3.0.8 - browserslist: ^4.6.6 - clone: ^2.1.1 - dotenv: ^7.0.0 - dotenv-expand: ^5.1.0 - json5: ^2.2.0 - msgpackr: ^1.5.4 - nullthrows: ^1.1.1 - semver: ^5.7.1 - checksum: 615903871f7e3d03f19342a6d1b231612f1ac780a0079d4a37c82d4819a75140d5cf287172b9d40fad1c7aad3c12198c27718f838b543db75d90702ac558b15e - languageName: node - linkType: hard - -"@parcel/css@npm:^1.12.2": - version: 1.14.0 - resolution: "@parcel/css@npm:1.14.0" - dependencies: - lightningcss: ^1.14.0 - checksum: 3ed88310051ed96940a3653cce76819d44cc90cddabbdd0d0e2c8d9c76f137442207a30aea2fe04df0a7e3e75aef06fa7c593e50bb410bccb2ddd9a7ee267e07 - languageName: node - linkType: hard - -"@parcel/diagnostic@npm:2.7.0, @parcel/diagnostic@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/diagnostic@npm:2.7.0" - dependencies: - "@mischnic/json-sourcemap": ^0.1.0 - nullthrows: ^1.1.1 - checksum: a41cc65cb1815b90256f767eb118fcf3bf84b6bed4a31ef61627f2a1cc26e9aa9b9ad6fadb7cc7ce443b985b154b36ac3b10adcc0d0bbd42b0092129324a5fef - languageName: node - linkType: hard - -"@parcel/events@npm:2.7.0, @parcel/events@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/events@npm:2.7.0" - checksum: 9477cc8eefa2d5bed9cae39b9aed6379f3686735ea7ab7ffcc78148f2f83ed356663c9dd07ccf93edee5e59f877cb0072ae876c5a03e754cf6d2263638788875 - languageName: node - linkType: hard - -"@parcel/fs-search@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/fs-search@npm:2.7.0" - dependencies: - detect-libc: ^1.0.3 - checksum: ed49a19d86b21ff5f399d3d137ebd38885d523f34a8753c59a63565d438bb107578ff1f76bdcac2e7d93090553c262dbecdc39e3c2640a12a9eb19416ee18c32 - languageName: node - linkType: hard - -"@parcel/fs@npm:2.7.0, @parcel/fs@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/fs@npm:2.7.0" - dependencies: - "@parcel/fs-search": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - "@parcel/watcher": ^2.0.0 - "@parcel/workers": 2.7.0 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: 176c21f4a94e0189615582b3d4aca3611012f5e790fcd97ba8d7fe8fdd79ce6e51e0239510698381568aa04a3ec76afbfe689cd7e14c0ee971d9ff8dd3339707 - languageName: node - linkType: hard - -"@parcel/graph@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/graph@npm:2.7.0" - dependencies: - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - checksum: 55db3972df4a1246410e1b1a9683b2336497c8d323e3b69c2161d9884bce45170d2f5791211c05ccba6bce181e2c9ffe9fd07401220ef2ed5b7ec031fc87f38a - languageName: node - linkType: hard - -"@parcel/hash@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/hash@npm:2.7.0" - dependencies: - detect-libc: ^1.0.3 - xxhash-wasm: ^0.4.2 - checksum: 42cad499e60c5c8ff989f644e51d629ddb175574b2c53aae1c89ee3a9827f6d69012c5652459b7f3460a7fe94a9e49a59432ee12250bcebb149ca46faa4b5b0f - languageName: node - linkType: hard - -"@parcel/logger@npm:2.7.0, @parcel/logger@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/logger@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/events": 2.7.0 - checksum: 85e959a8edc408750260fd908bf3cc886e2d6178977ae93ca6a0907c2a53f14751d7f4ab9fd682dbbe4c3b158001a3f39ee98f98dcdc182ebec41c6128cab7f7 - languageName: node - linkType: hard - -"@parcel/markdown-ansi@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/markdown-ansi@npm:2.7.0" - dependencies: - chalk: ^4.1.0 - checksum: a9f19091c5a663e71a6ee7936a76c25759eb30af4271883c51468ef193ba0bebe54619d2b6b9d70fb3d9262e8e60a8bbe20f74404e41fbcf3dc0ce4a82d63896 - languageName: node - linkType: hard - -"@parcel/namer-default@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/namer-default@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - nullthrows: ^1.1.1 - checksum: 0012b78fc95646c8f201476534eefaa354039a0fcd03cf04f2e33cf8e0c457010cfd78cc9071718f72b7e4d848e077b89f72e58baae3ea5cacc97045b83e8a24 - languageName: node - linkType: hard - -"@parcel/node-resolver-core@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/node-resolver-core@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - semver: ^5.7.1 - checksum: bc0a94ce3c2423ded844dcf13e61208a3adbffaa13d8e84646023bf48b837ecb0f9b4c39eb667d2bf1080a1b7ee1094164afd3710a943a8828e39da35e28449f - languageName: node - linkType: hard - -"@parcel/optimizer-css@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/optimizer-css@npm:2.7.0" - dependencies: - "@parcel/css": ^1.12.2 - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - browserslist: ^4.6.6 - nullthrows: ^1.1.1 - checksum: 3799e128cb1cafc57c4de384a9b7339c5be7d4a0205887424a7265d31205439bce25195b1c06036e91acb32cb354edd9ccf9116f5a46a04db72e16b4e185e664 - languageName: node - linkType: hard - -"@parcel/optimizer-htmlnano@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/optimizer-htmlnano@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - htmlnano: ^2.0.0 - nullthrows: ^1.1.1 - posthtml: ^0.16.5 - svgo: ^2.4.0 - checksum: a5fa890bc36c7f4c8ebb5f8ff4ba88b15a0a9a489fd99badabfe0dfec8e4381cc04c6ee59b856bd17bdc1933529a851d0567c26d7e7df2fc19d6d623c5670e2a - languageName: node - linkType: hard - -"@parcel/optimizer-image@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/optimizer-image@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - "@parcel/workers": 2.7.0 - detect-libc: ^1.0.3 - checksum: ca12701e1c7080c4bff15971b6be7ff6c9633ed6ef69d925eedd06021cbedf02c326862fa5899072d35ce01a34018de265ccb811ff4f31556a9b931dcbff835b - languageName: node - linkType: hard - -"@parcel/optimizer-svgo@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/optimizer-svgo@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - svgo: ^2.4.0 - checksum: 305024d23c9bb049cce91cd902d8f9053b93cac9e5f7eb8f7b5d6a9b5d419d67e2321b3194689c09b20c3999087a11975e6cd95a669c5a5c61952be9a2a866c0 - languageName: node - linkType: hard - -"@parcel/optimizer-terser@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/optimizer-terser@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - terser: ^5.2.0 - checksum: 20eddbcaa947c380909ba95337d3db436b748c0baf5525e3a59756fa05219a612f30070d9618aef7570037a3a926e5bacc5ac9c221603bfab19753b864aca202 - languageName: node - linkType: hard - -"@parcel/package-manager@npm:2.7.0, @parcel/package-manager@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/package-manager@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/fs": 2.7.0 - "@parcel/logger": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - "@parcel/workers": 2.7.0 - semver: ^5.7.1 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: f4817d1aae84e3f4a7758a3e51a1f2a35996649450ef32b6f8de680b77ff98b138d917652f4802a49cb8ab562a737f661bb28ceadd18132f05170805b5bb145d - languageName: node - linkType: hard - -"@parcel/packager-css@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/packager-css@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - checksum: 0a7fbedb8860626c8cd70ed8c8977b65b80856e2180a71ec988809f8b15721dec328bcdc56200b1224f292ce122efdafff5ef6ef5402d3b0e251dbe74ca6790a - languageName: node - linkType: hard - -"@parcel/packager-html@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/packager-html@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - posthtml: ^0.16.5 - checksum: 9ca4f91112bfce9cf99ec34241f15775f964a74ea293b9e526d4bd64c60fa837e1385bec8c8a3a9315f66fe980e3e05c16b32793a2c98c9837482a3f79319269 - languageName: node - linkType: hard - -"@parcel/packager-js@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/packager-js@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - globals: ^13.2.0 - nullthrows: ^1.1.1 - checksum: 8a65b8f82c40f3e429d11ce5df73454c90233ada8dd00a8913e945b8cbc85a021ddb0c75c2f8bd2bdc2424105874a86f0cb748eb5c8f157dd085b13c67f72f63 - languageName: node - linkType: hard - -"@parcel/packager-raw@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/packager-raw@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - checksum: d895ed703e3f71b57bb1d2f6e2f9c574fb259790622afd7818e6ac174b69c8dead78d8cc15abf19df566b9642d7ea5cd7db22dd62256cfc3e86bb2b838e6c2d8 - languageName: node - linkType: hard - -"@parcel/packager-svg@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/packager-svg@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - posthtml: ^0.16.4 - checksum: 9b2c4e4cee93ecc18f852bf623eb9097e53b4d0d9dea562674942b7b1121f82c1c8b418a5ccc4a18010df7e62c4934bb039903ea21c0493732f6adedaca9ba0c - languageName: node - linkType: hard - -"@parcel/plugin@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/plugin@npm:2.7.0" - dependencies: - "@parcel/types": 2.7.0 - checksum: 930befafa01c179b27d34d6a63e5f67fe4998724654163fc07a618a432e8d20397cc3f424093ee967ddad8c4adf4e3f0e596e72f2ca5764b3fe212211c09d321 - languageName: node - linkType: hard - -"@parcel/reporter-cli@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/reporter-cli@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - chalk: ^4.1.0 - term-size: ^2.2.1 - checksum: eff35a2ee3f2b453688fd16603c41a97b24d250a7b50fd9e7dcb2f35be743b338031c82746bf1e8cd299b7f3c4acb3345d13c02da3865bea7bd4f2aafcb9f6af - languageName: node - linkType: hard - -"@parcel/reporter-dev-server@npm:2.7.0, @parcel/reporter-dev-server@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/reporter-dev-server@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - checksum: e315689d8d4ba094e67b0206d15c259c9faccf8554e191e14c53a4f176d9b52457ee24e9e53581fbc1685932f76ce57286613fdd9cafb81139b6e38fb57838e1 - languageName: node - linkType: hard - -"@parcel/resolver-default@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/resolver-default@npm:2.7.0" - dependencies: - "@parcel/node-resolver-core": 2.7.0 - "@parcel/plugin": 2.7.0 - checksum: 5bc64bea956c3579c99eb13bef0c868be1b0b5d9d045184adfc3cdc02f503775d12fdb2116f093d62cc9d7e7fc506351973d2808b71b091a5ed5c038064906fe - languageName: node - linkType: hard - -"@parcel/runtime-browser-hmr@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/runtime-browser-hmr@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - checksum: ad736bab6972d42e0027bd5aeee4beef087b1c32a99ab1700f7c6ccc125fe566ff08d065fffa6a6565e5f2e0bd6bc256a9869f6ec98322b09c02b2f97f29bb77 - languageName: node - linkType: hard - -"@parcel/runtime-js@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/runtime-js@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - checksum: 3a22c78ce1848c37b677ca1c38d2e4eca632059d9607be65ac1cf49e985c969b393c34103ad79f0a4f372fe3d49088ddff471cbebcb100de7ab1b14bb6047ff3 - languageName: node - linkType: hard - -"@parcel/runtime-react-refresh@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/runtime-react-refresh@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - react-error-overlay: 6.0.9 - react-refresh: ^0.9.0 - checksum: ea4c240185f00266d2820393b9c3faa95e7854b92ea9b18191eca5329e5ac53e287a32a967c9001890af4a78741eba3dc0173323af2bdbe65ec72f0bfa70a055 - languageName: node - linkType: hard - -"@parcel/runtime-service-worker@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/runtime-service-worker@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - checksum: 13eb0ba276e104c5b412d139fbf8b15a3f7ef836fec386d9f7982d0f3eac1e0942be87c62e1d4926efcdb15919547c32df4e6a54b228a5f67da6241e058a5c32 - languageName: node - linkType: hard - -"@parcel/source-map@npm:^2.0.0": - version: 2.1.1 - resolution: "@parcel/source-map@npm:2.1.1" - dependencies: - detect-libc: ^1.0.3 - checksum: 1fa27a7047ec08faf7fe1dd0e2ae95a27b84697ecfaed029d0b7d06e46d84ed8f98a9dc9d308fe623655f3c985052dcf7622de479bfa6103c44884fb7f6c810a - languageName: node - linkType: hard - -"@parcel/transformer-babel@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-babel@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - browserslist: ^4.6.6 - json5: ^2.2.0 - nullthrows: ^1.1.1 - semver: ^5.7.0 - checksum: aa269b12913667175919322faaea9e192fd2259765cc482b3902a050ecbfc48c212b4d999cda976c7095bfbe78f94d38333f5a66719eb5989fbe4b32963a9a07 - languageName: node - linkType: hard - -"@parcel/transformer-css@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-css@npm:2.7.0" - dependencies: - "@parcel/css": ^1.12.2 - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - browserslist: ^4.6.6 - nullthrows: ^1.1.1 - checksum: 47cf7cd9a40b8e957075442fb56c3d52882572f3b65ccc2f67ae3190706d51f93cf783fb1275e01a9562538d94f570f7f1922f9f943faa83f87b8a1f36663943 - languageName: node - linkType: hard - -"@parcel/transformer-html@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-html@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/plugin": 2.7.0 - nullthrows: ^1.1.1 - posthtml: ^0.16.5 - posthtml-parser: ^0.10.1 - posthtml-render: ^3.0.0 - semver: ^5.7.1 - checksum: 4028ffa5ece1b30cd801b97d371eba142eed52267d527c06a02c5ec9b83960353dd0e6143d408c3351fc5acb3bfbceb1755bed07827e619119a4be77863471d9 - languageName: node - linkType: hard - -"@parcel/transformer-image@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-image@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - "@parcel/workers": 2.7.0 - nullthrows: ^1.1.1 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: 1decacc1a4b037de9c7838fce34057338262c03e16a199d00e9641be0ad80885ff77119bd571765268e5f0d2f1f2d1863b759aaaaba6de2f64fe5b2c44b69b4c - languageName: node - linkType: hard - -"@parcel/transformer-js@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-js@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.7.0 - "@parcel/workers": 2.7.0 - "@swc/helpers": ^0.4.2 - browserslist: ^4.6.6 - detect-libc: ^1.0.3 - nullthrows: ^1.1.1 - regenerator-runtime: ^0.13.7 - semver: ^5.7.1 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: 76669ef593672cf3936aafd68676ba9f23562556dafd3594f5714bbb8fdebae83e0b2ad51cef47bedf0304cce1a55a7c344679f20747306a7a111caae535704a - languageName: node - linkType: hard - -"@parcel/transformer-json@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-json@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - json5: ^2.2.0 - checksum: d9d82148ee69b623129596408f97269199aabbce0ced71bbb501addf9fb76761eb3da49b3e1286a3d08806caf01156b97fdac766212e38e62823db34b1433bfa - languageName: node - linkType: hard - -"@parcel/transformer-postcss@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-postcss@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - clone: ^2.1.1 - nullthrows: ^1.1.1 - postcss-value-parser: ^4.2.0 - semver: ^5.7.1 - checksum: 15bd9ac0510d1ec822891f64aadbb7a9e22e7a86619863863fe0de056f1e9da8f910590ed0664575950bf483b58196640634278beecdc492c65ea675a832f3e5 - languageName: node - linkType: hard - -"@parcel/transformer-posthtml@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-posthtml@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - nullthrows: ^1.1.1 - posthtml: ^0.16.5 - posthtml-parser: ^0.10.1 - posthtml-render: ^3.0.0 - semver: ^5.7.1 - checksum: 04642838ce10f3a54b42c95115afc59f852095b8370482c6b3728db46e047443a7663b6f28d76ad1eeb18b81828d5dda0b8e650ebbfb1cc65e09d725b901f8f4 - languageName: node - linkType: hard - -"@parcel/transformer-raw@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-raw@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - checksum: 942a5ddbed9453fe905310f22430ef643e544d4a262f317a2ca4452080aad18484ea7dd1953e1a6c7ef049b42366c46820297d981cec9ac76b980df424248b4c - languageName: node - linkType: hard - -"@parcel/transformer-react-refresh-wrap@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-react-refresh-wrap@npm:2.7.0" - dependencies: - "@parcel/plugin": 2.7.0 - "@parcel/utils": 2.7.0 - react-refresh: ^0.9.0 - checksum: d193b9552b8e9abff7313845d02f2068112f16a15ba7eb0e7fba568937b765030ab874c84d601d8941dc6a14af9090327be8093825a95f0c4b35eabf7d36f1a3 - languageName: node - linkType: hard - -"@parcel/transformer-svg@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/transformer-svg@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/plugin": 2.7.0 - nullthrows: ^1.1.1 - posthtml: ^0.16.5 - posthtml-parser: ^0.10.1 - posthtml-render: ^3.0.0 - semver: ^5.7.1 - checksum: 19026a39f9757908f89d1a57ba9de027cbb80c562e055d5dd88a8ea7691c42d6d8598412b3a8b80e52001b305303b16dd6b8ae2a7708e95861a7654a682c8a2e - languageName: node - linkType: hard - -"@parcel/types@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/types@npm:2.7.0" - dependencies: - "@parcel/cache": 2.7.0 - "@parcel/diagnostic": 2.7.0 - "@parcel/fs": 2.7.0 - "@parcel/package-manager": 2.7.0 - "@parcel/source-map": ^2.0.0 - "@parcel/workers": 2.7.0 - utility-types: ^3.10.0 - checksum: cf28c56d3e74faabefb2359259906a3f574a70ebda20633a3059b6c4c897f7a97df4e89920d89650855829b2ec3677b23a44efcef6fcc7be65c78eef7b21b96c - languageName: node - linkType: hard - -"@parcel/utils@npm:2.7.0, @parcel/utils@npm:^2.0.1": - version: 2.7.0 - resolution: "@parcel/utils@npm:2.7.0" - dependencies: - "@parcel/codeframe": 2.7.0 - "@parcel/diagnostic": 2.7.0 - "@parcel/hash": 2.7.0 - "@parcel/logger": 2.7.0 - "@parcel/markdown-ansi": 2.7.0 - "@parcel/source-map": ^2.0.0 - chalk: ^4.1.0 - checksum: 2645b3379deea727af4d908687b18707d721c71eafbe597275fd02da7e04ccb4ae50a191ef8afacc1cf119dcc77d33fe627cbfe56c0d210d84a1fe8b32ab9bac - languageName: node - linkType: hard - -"@parcel/watcher@npm:^2.0.0": - version: 2.0.5 - resolution: "@parcel/watcher@npm:2.0.5" - dependencies: - node-addon-api: ^3.2.1 - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: ddc5b073e82cfadbc3bca3c1c0d5e64f445550f77a073fa3f7b1ac4547ec545fd6474ba5cd7e37aa0121d1ea37e70535172be74f9b081a17e7458849cedffdb0 - languageName: node - linkType: hard - -"@parcel/workers@npm:2.7.0": - version: 2.7.0 - resolution: "@parcel/workers@npm:2.7.0" - dependencies: - "@parcel/diagnostic": 2.7.0 - "@parcel/logger": 2.7.0 - "@parcel/types": 2.7.0 - "@parcel/utils": 2.7.0 - chrome-trace-event: ^1.0.2 - nullthrows: ^1.1.1 - peerDependencies: - "@parcel/core": ^2.7.0 - checksum: e3621c40300be14db72d2a201db9de08fdea121cf76c721a466960b5586052c4416b26931ea8e2df2fb7df2d942180c73759ceca4bd484499f8ac04caa104897 - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.5": - version: 0.5.8 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.8" - dependencies: - ansi-html-community: ^0.0.8 - common-path-prefix: ^3.0.0 - core-js-pure: ^3.23.3 - error-stack-parser: ^2.0.6 - find-up: ^5.0.0 - html-entities: ^2.1.0 - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 - source-map: ^0.7.3 - peerDependencies: - "@types/webpack": 4.x || 5.x - react-refresh: ">=0.10.0 <1.0.0" - sockjs-client: ^1.4.0 - type-fest: ">=0.17.0 <4.0.0" - webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - "@types/webpack": - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - checksum: 48d8b2813dfba7d482e58a2b0161b79e3a5d608603f1a3c34d709ecc2e6e08f8b14f79934c57849d06f153eb327f18e3d8e1539f978e40ca91539c342f27b8ae - languageName: node - linkType: hard - -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.1 - resolution: "@pnpm/network.ca-file@npm:1.0.1" - dependencies: - graceful-fs: 4.2.10 - checksum: c847d8618725b037427616ce5e8edc305ffe94759b8bb3862431d72a79011beac2d8a097796678a2369a747e490f4e19833347a2e1b4f641e2da29238f8c5535 - languageName: node - linkType: hard - -"@pnpm/npm-conf@npm:^1.0.4": - version: 1.0.5 - resolution: "@pnpm/npm-conf@npm:1.0.5" - dependencies: - "@pnpm/network.ca-file": ^1.0.1 - config-chain: ^1.1.11 - checksum: 0c5f1a63782309a877b70e3cbdd21ff1da57549924a941772bafd0117323881fdcda0e9753f0a695c3f85f4360f5ca27a0e20153abae6985350502f2d94b7d40 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@storybook/addon-docs@portal:../../code/addons/docs::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addon-docs@portal:../../code/addons/docs::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/plugin-transform-react-jsx": ^7.12.12 - "@jest/transform": ^26.6.2 - "@mdx-js/react": ^2.1.5 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/blocks": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/mdx2-csf": 0.1.0-next.0 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/postinstall": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/source-loader": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - fs-extra: ^9.0.1 - global: ^4.4.0 - remark-external-links: ^8.0.0 - remark-slug: ^6.0.0 - ts-dedent: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: node - linkType: soft - -"@storybook/addons@portal:../../code/lib/addons::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/addons@portal:../../code/lib/addons::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - global: ^4.4.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/api@portal:../../code/lib/api::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/api@portal:../../code/lib/api::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/router": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - semver: ^7.3.7 - store2: ^2.12.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/blocks@portal:../../code/lib/blocks::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/blocks@portal:../../code/lib/blocks::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/lodash": ^4.14.167 - color-convert: ^2.0.1 - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - markdown-to-jsx: ^7.1.3 - memoizerific: ^1.11.3 - polished: ^4.2.2 - react-colorful: ^5.1.2 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-manager@portal:../../code/lib/builder-manager::locator=standalone-preview%40workspace%3A." - dependencies: - "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - "@types/ejs": ^3.1.1 - "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 - browser-assert: ^1.2.1 - ejs: ^3.1.8 - esbuild: ^0.14.48 - esbuild-plugin-alias: ^0.2.1 - express: ^4.17.1 - fs-extra: ^9.0.1 - process: ^0.11.10 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/builder-webpack5@portal:../../code/lib/builder-webpack5::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/api": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/components": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/core-webpack": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/router": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/theming": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-loader: ^8.2.5 - babel-plugin-named-exports-order: ^0.0.2 - browser-assert: ^1.2.1 - case-sensitive-paths-webpack-plugin: ^2.4.0 - css-loader: ^6.7.1 - fork-ts-checker-webpack-plugin: ^7.2.8 - global: ^4.4.0 - html-webpack-plugin: ^5.5.0 - path-browserify: ^1.0.1 - process: ^0.11.10 - semver: ^7.3.7 - style-loader: ^3.3.1 - terser-webpack-plugin: ^5.3.1 - ts-dedent: ^2.0.0 - util: ^0.12.4 - util-deprecate: ^1.0.2 - webpack: 5 - webpack-dev-middleware: ^5.3.1 - webpack-hot-middleware: ^2.25.1 - webpack-virtual-modules: ^0.4.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-postmessage@portal:../../code/lib/channel-postmessage::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - global: ^4.4.0 - qs: ^6.10.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channel-websocket@portal:../../code/lib/channel-websocket::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - global: ^4.4.0 - telejson: ^6.0.8 - languageName: node - linkType: soft - -"@storybook/channels@portal:../../code/lib/channels::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/channels@portal:../../code/lib/channels::locator=standalone-preview%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/cli@portal:../../code/lib/cli::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/cli@portal:../../code/lib/cli::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@babel/preset-env": ^7.12.11 - "@storybook/codemod": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-server": 7.0.0-alpha.42 - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/semver": ^7.3.4 - boxen: ^5.1.2 - chalk: ^4.1.0 - commander: ^6.2.1 - cross-spawn: ^7.0.3 - degit: ^2.8.4 - detect-indent: ^6.1.0 - envinfo: ^7.7.3 - execa: ^5.0.0 - express: ^4.17.1 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - get-port: ^5.1.1 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - leven: ^3.1.0 - prompts: ^2.4.0 - puppeteer-core: ^2.1.1 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - shelljs: ^0.8.5 - strip-json-comments: ^3.0.1 - ts-dedent: ^2.0.0 - update-notifier: ^6.0.2 - util-deprecate: ^1.0.2 - bin: - getstorybook: ./bin/index.js - sb: ./bin/index.js - languageName: node - linkType: soft - -"@storybook/client-api@portal:../../code/lib/client-api::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-api@portal:../../code/lib/client-api::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - "@types/qs": ^6.9.5 - "@types/webpack-env": ^1.16.4 - global: ^4.4.0 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/client-logger@portal:../../code/lib/client-logger::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/client-logger@portal:../../code/lib/client-logger::locator=standalone-preview%40workspace%3A." - dependencies: - global: ^4.4.0 - languageName: node - linkType: soft - -"@storybook/codemod@portal:../../code/lib/codemod::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/codemod@portal:../../code/lib/codemod::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/types": ^7.12.11 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - cross-spawn: ^7.0.3 - globby: ^11.0.2 - jscodeshift: ^0.13.1 - lodash: ^4.17.21 - prettier: ">=2.2.1 <=2.3.0" - recast: ^0.19.0 - util: ^0.12.4 - languageName: node - linkType: soft - -"@storybook/components@portal:../../code/lib/components::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/components@portal:../../code/lib/components::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/theming": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/core-client@portal:../../code/lib/core-client::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-client@portal:../../code/lib/core-client::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channel-postmessage": 7.0.0-alpha.42 - "@storybook/channel-websocket": 7.0.0-alpha.42 - "@storybook/client-api": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/preview-web": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/manager": 7.0.0-alpha.42 - global: ^4.4.0 - regenerator-runtime: ^0.13.7 - util-deprecate: ^1.0.2 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-common@portal:../../code/lib/core-common::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-common@portal:../../code/lib/core-common::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/csf": next - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - "@types/node": ^16.0.0 - "@types/pretty-hrtime": ^1.0.0 - chalk: ^4.1.0 - esbuild: ^0.14.48 - esbuild-register: ^3.3.3 - express: ^4.17.1 - file-system-cache: ^2.0.0 - find-up: ^5.0.0 - fs-extra: ^9.0.1 - glob: ^7.1.6 - handlebars: ^4.7.7 - lazy-universal-dotenv: ^3.0.1 - picomatch: ^2.3.0 - pkg-dir: ^5.0.0 - pretty-hrtime: ^1.0.3 - resolve-from: ^5.0.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-events@portal:../../code/lib/core-events::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-events@portal:../../code/lib/core-events::locator=standalone-preview%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/core-server@portal:../../code/lib/core-server::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-server@portal:../../code/lib/core-server::locator=standalone-preview%40workspace%3A." - dependencies: - "@aw-web-design/x-default-browser": 1.4.88 - "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/csf-tools": 7.0.0-alpha.42 - "@storybook/docs-mdx": 0.0.1-canary.12433cf.0 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@storybook/telemetry": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - "@types/node-fetch": ^2.5.7 - "@types/pretty-hrtime": ^1.0.0 - "@types/semver": ^7.3.4 - better-opn: ^2.1.1 - boxen: ^5.1.2 - chalk: ^4.1.0 - cli-table3: ^0.6.1 - compression: ^1.7.4 - detect-port: ^1.3.0 - express: ^4.17.1 - fs-extra: ^9.0.1 - global: ^4.4.0 - globby: ^11.0.2 - ip: ^2.0.0 - lodash: ^4.17.21 - node-fetch: ^2.6.7 - open: ^8.4.0 - pretty-hrtime: ^1.0.3 - prompts: ^2.4.0 - read-pkg-up: ^7.0.1 - semver: ^7.3.7 - serve-favicon: ^2.5.0 - slash: ^3.0.0 - telejson: ^6.0.8 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - watchpack: ^2.2.0 - ws: ^8.2.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/core-webpack@portal:../../code/lib/core-webpack::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/csf-tools@portal:../../code/lib/csf-tools::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/generator": ^7.12.11 - "@babel/parser": ^7.12.11 - "@babel/traverse": ^7.12.11 - "@babel/types": ^7.12.11 - "@storybook/csf": next - fs-extra: ^9.0.1 - ts-dedent: ^2.0.0 - languageName: node - linkType: soft - -"@storybook/csf@npm:next": - version: 0.0.2-next.0 - resolution: "@storybook/csf@npm:0.0.2-next.0" - dependencies: - expect-type: ^0.14.2 - lodash: ^4.17.15 - type-fest: ^2.19.0 - checksum: 8bfcb27f03a3d443b10af09f537ca3891cadcd5b2d48f1c5551f477fd37a154fc28bd8d204ec7479a6ff9f2cf61afd9cf0d00215bd77a64bf12c32e7e49ce90d - languageName: node - linkType: hard - -"@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0": - version: 0.0.1-canary.12433cf.0 - resolution: "@storybook/docs-mdx@npm:0.0.1-canary.12433cf.0" - dependencies: - "@babel/traverse": ^7.12.11 - "@mdx-js/mdx": ^2.0.0 - estree-to-babel: ^4.9.0 - hast-util-to-estree: ^2.0.2 - checksum: 2c0d2cd4a01e51470b2cd3bdbf60ee09eaff476117ef258fc0336b04ddb8ef205f18aa256c67bc914533788932f99b66504c3d2895738f39e862ccc2d05f13c1 - languageName: node - linkType: hard - -"@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/docs-tools@portal:../../code/lib/docs-tools::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/core": ^7.12.10 - "@storybook/core-common": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - doctrine: ^3.0.0 - lodash: ^4.17.21 - languageName: node - linkType: soft - -"@storybook/mdx2-csf@npm:0.1.0-next.0": - version: 0.1.0-next.0 - resolution: "@storybook/mdx2-csf@npm:0.1.0-next.0" - dependencies: - "@babel/generator": ^7.12.11 - "@babel/parser": ^7.12.11 - "@mdx-js/mdx": ^2.0.0 - estree-to-babel: ^4.9.0 - hast-util-to-estree: ^2.0.2 - js-string-escape: ^1.0.1 - loader-utils: ^2.0.0 - lodash: ^4.17.21 - checksum: 2651dc9f01c40f1346f5890ae4e535574a80fed10277ae44537abf6f3f4eb4c204ae367329585f1345dda55d22430df6fe799c33f6b4c94f542ec74d33285924 - languageName: node - linkType: hard - -"@storybook/node-logger@portal:../../code/lib/node-logger::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/node-logger@portal:../../code/lib/node-logger::locator=standalone-preview%40workspace%3A." - dependencies: - "@types/npmlog": ^4.1.2 - chalk: ^4.1.0 - npmlog: ^5.0.1 - pretty-hrtime: ^1.0.3 - languageName: node - linkType: soft - -"@storybook/postinstall@portal:../../code/lib/postinstall::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/postinstall@portal:../../code/lib/postinstall::locator=standalone-preview%40workspace%3A." - languageName: node - linkType: soft - -"@storybook/preset-react-webpack@portal:../../code/presets/react-webpack::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preset-react-webpack@portal:../../code/presets/react-webpack::locator=standalone-preview%40workspace%3A." - dependencies: - "@babel/preset-flow": ^7.12.1 - "@babel/preset-react": ^7.12.10 - "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/core-webpack": 7.0.0-alpha.42 - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/node-logger": 7.0.0-alpha.42 - "@storybook/react": 7.0.0-alpha.42 - "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 - "@types/node": ^16.0.0 - "@types/semver": ^7.3.4 - babel-plugin-add-react-displayname: ^0.0.5 - babel-plugin-react-docgen: ^4.2.1 - fs-extra: ^9.0.1 - react-refresh: ^0.11.0 - semver: ^7.3.7 - peerDependencies: - "@babel/core": ^7.11.5 - jest-specific-snapshot: ^4.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - require-from-string: ^2.0.2 - webpack: 5 - peerDependenciesMeta: - "@babel/core": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/preview-web@portal:../../code/lib/preview-web::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/preview-web@portal:../../code/lib/preview-web::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/channels": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/store": 7.0.0-alpha.42 - ansi-to-html: ^0.6.11 - global: ^4.4.0 - lodash: ^4.17.21 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - languageName: node - linkType: soft - -"@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": - version: 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 - resolution: "@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" - dependencies: - debug: ^4.1.1 - endent: ^2.0.1 - find-cache-dir: ^3.3.1 - flat-cache: ^3.0.4 - micromatch: ^4.0.2 - react-docgen-typescript: ^2.1.1 - tslib: ^2.0.0 - peerDependencies: - typescript: ">= 3.x" - webpack: ">= 4" - checksum: 91a3015d384e93d9ffb4def904cad51218eb1a9eaf504c758083f2988a97d8bf8748bc280aa629864eb26fd9f7fc05bd087df95383d719e0c914c722016804b9 - languageName: node - linkType: hard - -"@storybook/react-webpack5@portal:../../code/frameworks/react-webpack5::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/react-webpack5@portal:../../code/frameworks/react-webpack5::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.42 - "@storybook/preset-react-webpack": 7.0.0-alpha.42 - "@storybook/react": 7.0.0-alpha.42 - "@types/node": ^16.0.0 - peerDependencies: - "@babel/core": ^7.11.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@babel/core": - optional: true - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/react@portal:../../code/renderers/react::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/react@portal:../../code/renderers/react::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-client": 7.0.0-alpha.42 - "@storybook/csf": next - "@storybook/docs-tools": 7.0.0-alpha.42 - "@storybook/store": 7.0.0-alpha.42 - "@types/estree": ^0.0.51 - "@types/node": ^16.0.0 - acorn: ^7.4.1 - acorn-jsx: ^5.3.1 - acorn-walk: ^7.2.0 - escodegen: ^2.0.0 - global: ^4.4.0 - html-tags: ^3.1.0 - lodash: ^4.17.21 - prop-types: ^15.7.2 - react-element-to-jsx-string: ^15.0.0 - ts-dedent: ^2.0.0 - type-fest: ^2.19.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - typescript: - optional: true - languageName: node - linkType: soft - -"@storybook/router@portal:../../code/lib/router::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/router@portal:../../code/lib/router::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - qs: ^6.10.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/source-loader@portal:../../code/lib/source-loader::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/source-loader@portal:../../code/lib/source-loader::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/csf": next - estraverse: ^5.2.0 - lodash: ^4.17.21 - prettier: ">=2.2.1 <=2.3.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/store@portal:../../code/lib/store::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/store@portal:../../code/lib/store::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/addons": 7.0.0-alpha.42 - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-events": 7.0.0-alpha.42 - "@storybook/csf": next - dequal: ^2.0.2 - global: ^4.4.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - slash: ^3.0.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/telemetry@portal:../../code/lib/telemetry::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/telemetry@portal:../../code/lib/telemetry::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/client-logger": 7.0.0-alpha.42 - "@storybook/core-common": 7.0.0-alpha.42 - chalk: ^4.1.0 - detect-package-manager: ^2.0.1 - fetch-retry: ^5.0.2 - fs-extra: ^9.0.1 - isomorphic-unfetch: ^3.1.0 - nanoid: ^3.3.1 - read-pkg-up: ^7.0.1 - languageName: node - linkType: soft - -"@storybook/theming@portal:../../code/lib/theming::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/theming@portal:../../code/lib/theming::locator=standalone-preview%40workspace%3A." - dependencies: - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.0.0-alpha.42 - memoizerific: ^1.11.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: node - linkType: soft - -"@storybook/manager@portal:../../code/ui/manager::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@storybook/manager@portal:../../code/ui/manager::locator=standalone-preview%40workspace%3A." - languageName: node - linkType: soft - -"@swc/helpers@npm:^0.4.2": - version: 0.4.12 - resolution: "@swc/helpers@npm:0.4.12" - dependencies: - tslib: ^2.4.0 - checksum: 3f9112f37d87815b6d4270137fc78d22bb98c75138e9b0eac7cac203ec2cf2bffbf13b20a713067c292affd5e9e70a724eb245b8daf0963e7fe528b901771c28 - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c - languageName: node - linkType: hard - -"@types/acorn@npm:^4.0.0": - version: 4.0.6 - resolution: "@types/acorn@npm:4.0.6" - dependencies: - "@types/estree": "*" - checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0": - version: 7.1.19 - resolution: "@types/babel__core@npm:7.1.19" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.18.2 - resolution: "@types/babel__traverse@npm:7.18.2" - dependencies: - "@babel/types": ^7.3.0 - checksum: 05972775e21cf07753b3bec725bf76f5a9804f99f660d323040746e3c8a4fe1b4ef6df17d7a80c4e2e335382cc72c62fc5a7079af836871ff9cbf0c21804e6d9 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - -"@types/ejs@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/ejs@npm:3.1.1" - checksum: 12fa444920aaa70af2fae4424fa62b49c23b31a37129c428b7c9f9068e58c0696b4e5601b0449f87bae8794e039c679a43651c356c34f17d1bb460456dd41441 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.7 - resolution: "@types/eslint@npm:8.4.7" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 5e1b8ed100dcb96c74098030ca00386d1661e83261c0b64a841e570a4dd74740bc15fe04363cb22d7c6e0c56cee61f8b2c1455ec7124e69226d41fb4fed2028e - languageName: node - linkType: hard - -"@types/estree-jsx@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree-jsx@npm:1.0.0" - dependencies: - "@types/estree": "*" - checksum: 851d7afb63a89fb9ce7822563930660433f29106d72db279ce9c99f791ec996ef21b05adc6f545325cd1745b3041cc86422f0ffa39a06734305b90cfbc871765 - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 - languageName: node - linkType: hard - -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.31 - resolution: "@types/express-serve-static-core@npm:4.17.31" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df - languageName: node - linkType: hard - -"@types/express@npm:^4.7.0": - version: 4.17.14 - resolution: "@types/express@npm:4.17.14" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.18 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 15c1af46d02de834e4a225eccaa9d85c0370fdbb3ed4e1bc2d323d24872309961542b993ae236335aeb3e278630224a6ea002078d39e651d78a3b0356b1eaa79 - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" - dependencies: - "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - -"@types/is-function@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/is-function@npm:1.0.1" - checksum: dfbb591936dfebd4686b109603bc3e2d23a17087d6ec913fb35cd6b5a4ef908ed68ab93cb27d508f1546d312edf03e663cb6738d3b67d420c68da961ac2b3d1f - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.167": - version: 4.14.186 - resolution: "@types/lodash@npm:4.14.186" - checksum: ee0c1368a8100bb6efb88335107473a41928fc307ff1ef4ff1278868ccddba9c04c68c36d1ffe3a0392ef4a956e1955f7de3203ec09df4f1655dd1b88485c549 - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" - dependencies: - "@types/unist": "*" - checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313 - languageName: node - linkType: hard - -"@types/mdx@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/mdx@npm:2.0.3" - checksum: 41deb51c29535913af01d25f0e1414cfb5a6948d0e60e77e4aca895694de48bf0ac69c5a81fe2d9617d726cb253001ef82a65b683d5ef51987d15aa1931d086b - languageName: node - linkType: hard - -"@types/mime-types@npm:^2.1.0": - version: 2.1.1 - resolution: "@types/mime-types@npm:2.1.1" - checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c - languageName: node - linkType: hard - -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.5.7": - version: 2.6.2 - resolution: "@types/node-fetch@npm:2.6.2" - dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 18.11.4 - resolution: "@types/node@npm:18.11.4" - checksum: 1de782b4eef4a5115396ae62137f248390ee5d1d9e9eeb49599714554cce1328af43da31bc28e7bab5a0ef859538a584a907b26163a59b42bc87b8317dc00bb8 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.0 - resolution: "@types/node@npm:16.18.0" - checksum: 4eb4b88012c7d3f527c1b4989cf085479d44ce418fb047fb8d3b545601a3e1fc436de8491b9734debeda8eae241963fb802cea87a5a5698bf5f6f3d489d446a8 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/npmlog@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/npmlog@npm:4.1.4" - checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: a6cdee417eea6f7af914e4fcd13e05822864ce10b5d7646525632e86d69b79123eec55a5d3fff0155ba46b61902775e1644bcb80e1e4dffdac28e7febb089083 - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/react@npm:>=16": - version: 18.0.21 - resolution: "@types/react@npm:18.0.21" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 36c1a7c9d507e81e2e629c1ad3db51d7b84d8b010c2d5008da411874286c6a5ccc711ae1d4c470efc0bdc77153cc8804a40e927e929e5164c669ca41b84b846d - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.2 - resolution: "@types/scheduler@npm:0.16.2" - checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4": - version: 7.3.12 - resolution: "@types/semver@npm:7.3.12" - checksum: 35536b2fc5602904f21cae681f6c9498e177dab3f54ae37c92f9a1b7e43c35f18bcd81e1c98c1cf0d33ee046bb06c771e9928c1c00a401d56a03f56549252a15 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.0 - resolution: "@types/serve-static@npm:1.15.0" - dependencies: - "@types/mime": "*" - "@types/node": "*" - checksum: b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 - languageName: node - linkType: hard - -"@types/unist@npm:*, @types/unist@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db - languageName: node - linkType: hard - -"@types/webpack-env@npm:^1.16.4": - version: 1.18.0 - resolution: "@types/webpack-env@npm:1.18.0" - checksum: ecf4daa31cb37d474ac0ce058d83a3cadeb9881ca8107ae93c2299eaa9954943aae09b43e143c62ccbe4288a14db00c918c9debd707afe17c3998f873eaabc59 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 - languageName: node - linkType: hard - -"@types/yargs@npm:^15.0.0": - version: 15.0.14 - resolution: "@types/yargs@npm:15.0.14" - dependencies: - "@types/yargs-parser": "*" - checksum: 8e358aeb8f0c3758e59e2b8fcfdee5627ab2fe3d92f50f380503d966c7f33287be3322155516a50d27727fde1ad3878f48f60cd6648439126d4b0bbb1a1153ed - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/helper-wasm-section": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-opt": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - "@webassemblyjs/wast-printer": 1.11.1 - checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-buffer": 1.11.1 - "@webassemblyjs/wasm-gen": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/helper-api-error": 1.11.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.1 - "@webassemblyjs/ieee754": 1.11.1 - "@webassemblyjs/leb128": 1.11.1 - "@webassemblyjs/utf8": 1.11.1 - checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": 1.11.1 - "@xtuc/long": 4.2.2 - checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec - languageName: node - linkType: hard - -"@yarnpkg/esbuild-plugin-pnp@npm:^3.0.0-rc.10": - version: 3.0.0-rc.15 - resolution: "@yarnpkg/esbuild-plugin-pnp@npm:3.0.0-rc.15" - dependencies: - tslib: ^2.4.0 - peerDependencies: - esbuild: ">=0.10.0" - checksum: 04da15355a99773b441742814ba4d0f3453a83df47aa07e215f167e156f109ab8e971489c8b1a4ddf3c79d568d35213f496ad52e97298228597e1aacc22680aa - languageName: node - linkType: hard - -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"abortcontroller-polyfill@npm:^1.1.9": - version: 1.7.5 - resolution: "abortcontroller-polyfill@npm:1.7.5" - checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa - languageName: node - linkType: hard - -"accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" - peerDependencies: - acorn: ^8 - checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.1": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.2.0": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn@npm:^7.4.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.0.0, acorn@npm:^8.5.0, acorn@npm:^8.7.1": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" - bin: - acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc - languageName: node - linkType: hard - -"address@npm:^1.0.1": - version: 1.2.1 - resolution: "address@npm:1.2.1" - checksum: e4c0f961464ccad09c3f7ed3a8d12f609354a87dd1ad379e43661e9684446fbf158be3edeef85e1590dfc6c88c0897c5908bc18f232eb86e43993a2ada5820fa - languageName: node - linkType: hard - -"agent-base@npm:5": - version: 5.1.1 - resolution: "agent-base@npm:5.1.1" - checksum: 61ae789f3019f1dc10e8cba6d3ae9826949299a4e54aaa1cfa2fa37c95a108e70e95423b963bb987d7891a703fd9a5c383a506f4901819f3ee56f3147c0aa8ab - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.0.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: ^3.1.3 - peerDependencies: - ajv: ^8.8.2 - checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.8.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: ^4.1.0 - checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d - languageName: node - linkType: hard - -"ansi-html-community@npm:0.0.8, ansi-html-community@npm:^0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - -"ansi-to-html@npm:^0.6.11": - version: 0.6.15 - resolution: "ansi-to-html@npm:0.6.15" - dependencies: - entities: ^2.0.0 - bin: - ansi-to-html: bin/ansi-to-html - checksum: c899362a29b92c8ae075b72168b826f7c233875b475719304942f80695e0ce4a6812845021192da5fb0ac80b10209b4fae5aede42620a1b1b3d3b30f3ef77a86 - languageName: node - linkType: hard - -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 - languageName: node - linkType: hard - -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"app-root-dir@npm:^1.0.2": - version: 1.0.2 - resolution: "app-root-dir@npm:1.0.2" - checksum: d4b1653fc60b6465b982bf5a88b12051ed2d807d70609386a809306e1c636496f53522d61fa30f9f98c71aaae34f34e1651889cf17d81a44e3dafd2859d495ad - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - -"ast-types@npm:0.13.3": - version: 0.13.3 - resolution: "ast-types@npm:0.13.3" - checksum: 23d08bc589aacb787e22ac7efc086ebcc158e739c057dac74de409a97e26ec9c5bcb2d0709f5678bd5d90f67d93f62fba0e5fe98161a0a3a7534d55a155544d8 - languageName: node - linkType: hard - -"ast-types@npm:0.14.2, ast-types@npm:^0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: ^2.0.1 - checksum: 8674a77307764979f0a0b2006b7223a4b789abffaa7acbf6a1132650a799252155170173a1ff6a7fb6897f59437fc955f2707bdfc391b0797750898876e6c9ed - languageName: node - linkType: hard - -"astring@npm:^1.8.0": - version: 1.8.3 - resolution: "astring@npm:1.8.3" - bin: - astring: bin/astring - checksum: 72fc85de7420ca6edeee15157fd65c5253a8cb1ced979ba66ecc439fa569f1c1cc242e4c0a9fc5a6380bf73fb5ec894dc65cf1dc0f3d1cab8c707b31df7daa1c - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - -"async@npm:^3.2.3": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - -"babel-loader@npm:^8.2.5": - version: 8.2.5 - resolution: "babel-loader@npm:8.2.5" - dependencies: - find-cache-dir: ^3.3.1 - loader-utils: ^2.0.0 - make-dir: ^3.1.0 - schema-utils: ^2.6.5 - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: a6605557885eabbc3250412405f2c63ca87287a95a439c643fdb47d5ea3d5326f72e43ab97be070316998cb685d5dfbc70927ce1abe8be7a6a4f5919287773fb - languageName: node - linkType: hard - -"babel-plugin-add-react-displayname@npm:^0.0.5": - version: 0.0.5 - resolution: "babel-plugin-add-react-displayname@npm:0.0.5" - checksum: a5b52aa14327b1fa2949f32140cd1b0b283b2035881453d71dcedc825a7378aa3a578bff5f76d1632875eedb40612dc4e71585852ce5cb3c2869c180643fd001 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.0.0": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-named-exports-order@npm:^0.0.2": - version: 0.0.2 - resolution: "babel-plugin-named-exports-order@npm:0.0.2" - checksum: d918390a09c0148893ea93bdc9c4fc6a03447c688eaf40bed0f0682d036e985ecee830b90fec2ab149b8dc0cb3220a2c0ac5054e42626bdfe0b436b505b7ef22 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c - languageName: node - linkType: hard - -"babel-plugin-react-docgen@npm:^4.2.1": - version: 4.2.1 - resolution: "babel-plugin-react-docgen@npm:4.2.1" - dependencies: - ast-types: ^0.14.2 - lodash: ^4.17.15 - react-docgen: ^5.0.0 - checksum: 6126d358ac2cb27a9a7f145ab586b7a28cb19ef09ca37c4f08a853246a101328ffe6c87813e95b1b4ba05beb627285199f7d0ba16abfb61b35cc4febb6d5eabd - languageName: node - linkType: hard - -"bail@npm:^2.0.0": - version: 2.0.2 - resolution: "bail@npm:2.0.2" - checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base-x@npm:^3.0.8": - version: 3.0.9 - resolution: "base-x@npm:3.0.9" - dependencies: - safe-buffer: ^5.0.1 - checksum: 957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" - dependencies: - open: ^7.0.3 - checksum: 3d1a945d125cbbc6e6a841bef7540435d77d5aa61fc4d345896f5f0b3780fcf9c7145373deaedf62d674a427b187ae973f4410884f9fea0c15f7f01f9dc339c7 - languageName: node - linkType: hard - -"big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"body-parser@npm:1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: ^3.0.0 - camelcase: ^6.2.0 - chalk: ^4.1.0 - cli-boxes: ^2.2.1 - string-width: ^4.2.2 - type-fest: ^0.20.2 - widest-line: ^3.1.0 - wrap-ansi: ^7.0.0 - checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 - languageName: node - linkType: hard - -"boxen@npm:^7.0.0": - version: 7.0.0 - resolution: "boxen@npm:7.0.0" - dependencies: - ansi-align: ^3.0.1 - camelcase: ^7.0.0 - chalk: ^5.0.1 - cli-boxes: ^3.0.0 - string-width: ^5.1.2 - type-fest: ^2.13.0 - widest-line: ^4.0.1 - wrap-ansi: ^8.0.1 - checksum: b917cf7a168ef3149635a8c02d5c9717d66182348bd27038d85328ad12655151e3324db0f2815253846c33e5f0ddf28b6cd52d56a12b9f88617b7f8f722b946a - languageName: node - linkType: hard - -"bplist-parser@npm:^0.2.0": - version: 0.2.0 - resolution: "bplist-parser@npm:0.2.0" - dependencies: - big-integer: ^1.6.44 - checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"browser-assert@npm:^1.2.1": - version: 1.2.1 - resolution: "browser-assert@npm:1.2.1" - checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.6.6": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" - dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 - bin: - browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e - languageName: node - linkType: hard - -"c8@npm:^7.6.0": - version: 7.12.0 - resolution: "c8@npm:7.12.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@istanbuljs/schema": ^0.1.3 - find-up: ^5.0.0 - foreground-child: ^2.0.0 - istanbul-lib-coverage: ^3.2.0 - istanbul-lib-report: ^3.0.0 - istanbul-reports: ^3.1.4 - rimraf: ^3.0.2 - test-exclude: ^6.0.0 - v8-to-istanbul: ^9.0.0 - yargs: ^16.2.0 - yargs-parser: ^20.2.9 - bin: - c8: bin/c8.js - checksum: 3b7fa9ad7cff2cb0bb579467e6b544498fbd46e9353a809ad3b8cf749df4beadd074cde277356b0552f3c8055b1b3ec3ebaf2209e9ad4bdefed92dbf64d283ab - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.1": - version: 10.2.2 - resolution: "cacheable-request@npm:10.2.2" - dependencies: - "@types/http-cache-semantics": ^4.0.1 - get-stream: ^6.0.1 - http-cache-semantics: ^4.1.0 - keyv: ^4.5.0 - mimic-response: ^4.0.0 - normalize-url: ^7.2.0 - responselike: ^3.0.0 - checksum: 15e8ab68debc7a82ff21607f9b6edfdb3a97fdee402efeb183ae605c5ef47d0236e3c4528347f25afcdcaf2b3186f0f2f00a9d4014a323148931337e7ef1edc3 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"camelcase@npm:^7.0.0": - version: 7.0.0 - resolution: "camelcase@npm:7.0.0" - checksum: 162d59607b3b46e910af151348d5e40af579048a5d07f3c06370b096ca0d42ba4a88bd92cf4e3482645ba1ffdd6f744d8273c1b9594e493fc10883d54adf7cbe - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001423 - resolution: "caniuse-lite@npm:1.0.30001423" - checksum: fe443f323f5dc6a858ef7d7deddb93db5e5f9a35e22970c4a65c4ef793bb696c1e2f038df572722d9edf29021e43ed16f5131faafde783563bd0d9eccf486592 - languageName: node - linkType: hard - -"capture-exit@npm:^2.0.0": - version: 2.0.0 - resolution: "capture-exit@npm:2.0.0" - dependencies: - rsvp: ^4.8.4 - checksum: 0b9f10daca09e521da9599f34c8e7af14ad879c336e2bdeb19955b375398ae1c5bcc91ac9f2429944343057ee9ed028b1b2fb28816c384e0e55d70c439b226f4 - languageName: node - linkType: hard - -"case-sensitive-paths-webpack-plugin@npm:^2.4.0": - version: 2.4.0 - resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: bcf469446eeee9ac0046e30860074ebb9aa4803aab9140e6bb72b600b23b1d70635690754be4504ce35cd99cdf05226bee8d894ba362a3f5485d5f6310fc6d02 - languageName: node - linkType: hard - -"ccount@npm:^2.0.0": - version: 2.0.1 - resolution: "ccount@npm:2.0.1" - checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"chalk@npm:^5.0.1": - version: 5.1.2 - resolution: "chalk@npm:5.1.2" - checksum: 804d7485e33531abe45b14e91026ceb5615974a8c04259ab0806f214a7666f6ea03e39ab124f7d5a0c78a83fda89005f236db3c5f10c2abe9ae875f7aa56bcb5 - languageName: node - linkType: hard - -"character-entities-html4@npm:^2.0.0": - version: 2.1.0 - resolution: "character-entities-html4@npm:2.1.0" - checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d - languageName: node - linkType: hard - -"character-entities-legacy@npm:^3.0.0": - version: 3.0.0 - resolution: "character-entities-legacy@npm:3.0.0" - checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 - languageName: node - linkType: hard - -"character-entities@npm:^2.0.0": - version: 2.0.2 - resolution: "character-entities@npm:2.0.2" - checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def - languageName: node - linkType: hard - -"character-reference-invalid@npm:^2.0.0": - version: 2.0.1 - resolution: "character-reference-invalid@npm:2.0.1" - checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee - languageName: node - linkType: hard - -"chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.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 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 - languageName: node - linkType: hard - -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.5.0 - resolution: "ci-info@npm:3.5.0" - checksum: 7def3789706ec18db3dc371dc699bd0df12057d54b796201f50ba87200e0849d3d83c68da00ab2ab8cdd738d91b25ab9e31620588f8d7e64ffaa1f760fd121cf - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" - dependencies: - source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 - languageName: node - linkType: hard - -"cli-boxes@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-boxes@npm:3.0.0" - checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": 1.5.0 - string-width: ^4.2.0 - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: ^2.0.4 - kind-of: ^6.0.2 - shallow-clone: ^3.0.0 - checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"clone@npm:^2.1.1": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colorette@npm:^2.0.10": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "comma-separated-tokens@npm:2.0.2" - checksum: 8fa68ff2605233571536a802a7c712b0c766e0c5088e067be72740054e84d040865eea945c984924ae84932bcc3e25a99f71601220b438e875b5f42b87277767 - languageName: node - linkType: hard - -"commander@npm:^2.19.0, commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - -"commander@npm:^7.0.0, commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab - languageName: node - linkType: hard - -"configstore@npm:^6.0.0": - version: 6.0.0 - resolution: "configstore@npm:6.0.0" - dependencies: - dot-prop: ^6.0.1 - graceful-fs: ^4.2.6 - unique-string: ^3.0.0 - write-file-atomic: ^3.0.3 - xdg-basedir: ^5.0.1 - checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"core-js-compat@npm:^3.25.1": - version: 3.26.0 - resolution: "core-js-compat@npm:3.26.0" - dependencies: - browserslist: ^4.21.4 - checksum: 120780ec33d441e476810abac9bf57199c2083006b179dc23d0ab0cfea096eff2a2fc3e9cb315d245735df661cfa4b76a8b8c37f5056fd02428a3cd2ea1d9f36 - languageName: node - linkType: hard - -"core-js-pure@npm:^3.23.3": - version: 3.26.0 - resolution: "core-js-pure@npm:3.26.0" - checksum: bbf5fa65cf3368a25f9d9cc525863acc8082fa3797efc8dc514f85d7f4aa870f4999b68863f3c7b96ed0b062add261a448758e6d337626c2535ad89ee8481a92 - languageName: node - linkType: hard - -"core-js@npm:^3.0.4": - version: 3.26.0 - resolution: "core-js@npm:3.26.0" - checksum: 0149eb9d3909fde9c17626af3a6e625c326e8598d0bb5e6c5b48a18e5fcd4eaf48d4964d873667d8148542ff590fb98eb3f93618da114ca54999d6bc0349734b - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.1": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" - 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 - checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b - languageName: node - linkType: hard - -"cross-env@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-env@npm:7.0.3" - dependencies: - cross-spawn: ^7.0.1 - bin: - cross-env: src/bin/cross-env.js - cross-env-shell: src/bin/cross-env-shell.js - checksum: 26f2f3ea2ab32617f57effb70d329c2070d2f5630adc800985d8b30b56e8bf7f5f439dd3a0358b79cee6f930afc23cf8e23515f17ccfb30092c6b62c6b630a79 - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.0": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: ^1.0.4 - path-key: ^2.0.1 - semver: ^5.5.0 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"crypto-random-string@npm:^4.0.0": - version: 4.0.0 - resolution: "crypto-random-string@npm:4.0.0" - dependencies: - type-fest: ^1.0.1 - checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 - languageName: node - linkType: hard - -"css-loader@npm:^6.7.1": - version: 6.7.1 - resolution: "css-loader@npm:6.7.1" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.7 - 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 - postcss-value-parser: ^4.2.0 - semver: ^7.3.5 - peerDependencies: - webpack: ^5.0.0 - checksum: 170fdbc630a05a43679ef60fa97694766b568dbde37adccc0faafa964fc675f08b976bc68837bb73b61d60240e8d2cbcbf51540fe94ebc9dafc56e7c46ba5527 - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 - languageName: node - linkType: hard - -"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" - dependencies: - mdn-data: 2.0.14 - source-map: ^0.6.1 - checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f - languageName: node - linkType: hard - -"css-what@npm:^6.0.1": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"csso@npm:^4.2.0": - version: 4.2.0 - resolution: "csso@npm:4.2.0" - dependencies: - css-tree: ^1.1.2 - checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.3": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" - dependencies: - character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"default-browser-id@npm:3.0.0": - version: 3.0.0 - resolution: "default-browser-id@npm:3.0.0" - dependencies: - bplist-parser: ^0.2.0 - untildify: ^4.0.0 - checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - -"degit@npm:^2.8.4": - version: 2.8.4 - resolution: "degit@npm:2.8.4" - bin: - degit: degit - checksum: bb58c48ff1ae3828825d7e614db703afd69905abc2d666009bb4affecb8d87be993511556395889dffc99a5eba7a058117402050c509a6e2c3dd56a579120236 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"dequal@npm:^2.0.0, dequal@npm:^2.0.2": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 - languageName: node - linkType: hard - -"detect-indent@npm:^6.1.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d - languageName: node - linkType: hard - -"detect-libc@npm:^1.0.3": - version: 1.0.3 - resolution: "detect-libc@npm:1.0.3" - bin: - detect-libc: ./bin/detect-libc.js - checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e - languageName: node - linkType: hard - -"detect-package-manager@npm:^2.0.1": - version: 2.0.1 - resolution: "detect-package-manager@npm:2.0.1" - dependencies: - execa: ^5.1.1 - checksum: e72b910182d5ad479198d4235be206ac64a479257b32201bb06f3c842cc34c65ea851d46f72cc1d4bf535bcc6c4b44b5b86bb29fe1192b8c9c07b46883672f28 - languageName: node - linkType: hard - -"detect-port@npm:^1.3.0": - version: 1.5.1 - resolution: "detect-port@npm:1.5.1" - dependencies: - address: ^1.0.1 - debug: 4 - bin: - detect: bin/detect-port.js - detect-port: bin/detect-port.js - checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b - languageName: node - linkType: hard - -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 - languageName: node - linkType: hard - -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.2.2, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa - languageName: node - linkType: hard - -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: ^2.0.0 - checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 - languageName: node - linkType: hard - -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 8017675b7f254384915d55f9eb6388e577cf0a1231a28d54b0ca03b782be9501b0ac90ac57338636d395fa59051e6209e9b44b8ddf169ce6076dffb5dea227d3 - languageName: node - linkType: hard - -"dotenv@npm:^7.0.0": - version: 7.0.0 - resolution: "dotenv@npm:7.0.0" - checksum: 18a7b3ef0e90fd6fcce7c7cbdd48d923b0cb180807540b80c797bda4a098097e17820d6315ae28eec22f73954cd0ab9d81904d46370183817c09f694d40566ff - languageName: node - linkType: hard - -"dotenv@npm:^8.0.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 38e902c80b0666ab59e9310a3d24ed237029a7ce34d976796349765ac96b8d769f6df19090f1f471b77a25ca391971efde8a1ea63bb83111bd8bec8e5cc9b2cd - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"ejs@npm:^3.1.8": - version: 3.1.8 - resolution: "ejs@npm:3.1.8" - dependencies: - jake: ^10.8.5 - bin: - ejs: bin/cli.js - checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.251": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"endent@npm:^2.0.1": - version: 2.1.0 - resolution: "endent@npm:2.1.0" - dependencies: - dedent: ^0.7.0 - fast-json-parse: ^1.0.3 - objectorarray: ^1.0.5 - checksum: c352831088fce745a39ddbd5f87a17e073ea6556e7e96e9010d945a3f3020f836b9a84657123fa01e897db9216f4b080d950b5ded9bf3a8227f14a34efaaaf7c - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.10.0": - version: 5.10.0 - resolution: "enhanced-resolve@npm:5.10.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 0bb9830704db271610f900e8d79d70a740ea16f251263362b0c91af545576d09fe50103496606c1300a05e588372d6f9780a9bc2e30ce8ef9b827ec8f44687ff - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"entities@npm:^3.0.1": - version: 3.0.1 - resolution: "entities@npm:3.0.1" - checksum: aaf7f12033f0939be91f5161593f853f2da55866db55ccbf72f45430b8977e2b79dbd58c53d0fdd2d00bd7d313b75b0968d09f038df88e308aa97e39f9456572 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"error-stack-parser@npm:^2.0.6": - version: 2.1.4 - resolution: "error-stack-parser@npm:2.1.4" - dependencies: - stackframe: ^1.3.4 - checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - 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-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"esbuild-android-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-64@npm:0.14.54" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-android-arm64@npm:0.14.54" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-64@npm:0.14.54" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-darwin-arm64@npm:0.14.54" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-64@npm:0.14.54" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-freebsd-arm64@npm:0.14.54" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-32@npm:0.14.54" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-64@npm:0.14.54" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm64@npm:0.14.54" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-arm@npm:0.14.54" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-mips64le@npm:0.14.54" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-ppc64le@npm:0.14.54" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-riscv64@npm:0.14.54" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-linux-s390x@npm:0.14.54" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-netbsd-64@npm:0.14.54" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-openbsd-64@npm:0.14.54" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-plugin-alias@npm:^0.2.1": - version: 0.2.1 - resolution: "esbuild-plugin-alias@npm:0.2.1" - checksum: afe2d2c8b5f09d5321cb8d9c0825e8a9f6e03c2d50df92f953a291d4620cc29eddb3da9e33b238f6d8f77738e0277bdcb831f127399449fecf78fb84c04e5da9 - languageName: node - linkType: hard - -"esbuild-register@npm:^3.3.3": - version: 3.3.3 - resolution: "esbuild-register@npm:3.3.3" - peerDependencies: - esbuild: ">=0.12 <1" - checksum: f43fecb9f5c48fcf859a0b3681368af8987c299c822da9a996b90f453b9b2226b9a90c7dbaec0968a86b53ee524af0d8b4ed828866c29bfede5c176834bc0f2b - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-sunos-64@npm:0.14.54" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-32@npm:0.14.54" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-64@npm:0.14.54" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.54": - version: 0.14.54 - resolution: "esbuild-windows-arm64@npm:0.14.54" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.48": - version: 0.14.54 - resolution: "esbuild@npm:0.14.54" - dependencies: - "@esbuild/linux-loong64": 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dependenciesMeta: - "@esbuild/linux-loong64": - optional: true - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 49e360b1185c797f5ca3a7f5f0a75121494d97ddf691f65ed1796e6257d318f928342a97f559bb8eced6a90cf604dd22db4a30e0dbbf15edd9dbf22459b639af - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-goat@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-goat@npm:4.0.0" - checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"estree-to-babel@npm:^3.1.0": - version: 3.2.1 - resolution: "estree-to-babel@npm:3.2.1" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - c8: ^7.6.0 - checksum: a4584d0c60b80ce41abe91b11052f5d48635e811c67839942c4ebd51aa33d9f9b156ad615f71ceae2a8260b5e3054f36d73db6d0d2a3b9951483f4b6187495c8 - languageName: node - linkType: hard - -"estree-to-babel@npm:^4.9.0": - version: 4.9.0 - resolution: "estree-to-babel@npm:4.9.0" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - checksum: 82a6338e66cef2a29351de8eb615a3f967deef86087366f175862d8bc6c497ded4b907b69335b818d91046f79c00464b9ba36ac2200dfad91d9e71e776a0fcb8 - languageName: node - linkType: hard - -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-attach-comments@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - checksum: 8489b977dc420e4af59b03528487b2963d7bfe2d6d265819231dce5a1a5c389109230be102d4b7b85a86ec64f75a7e70b0f306542d56ec557c83f92ec326738a - languageName: node - linkType: hard - -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.0 - resolution: "estree-util-build-jsx@npm:2.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-walker: ^3.0.0 - checksum: 639b76f5395df5234e5424e092c583d656418a07075156947b72e69183c01feeb94946e79002117cd7dff374a25115832ab4af4ad449f1f6cac3594c95006aa5 - languageName: node - linkType: hard - -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.1 - resolution: "estree-util-is-identifier-name@npm:2.0.1" - checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 - languageName: node - linkType: hard - -"estree-util-to-js@npm:^1.1.0": - version: 1.1.0 - resolution: "estree-util-to-js@npm:1.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - astring: ^1.8.0 - source-map: ^0.7.0 - checksum: 3ce2ef2fd78497fa7a0e5250be0f217af9060c819f7ed4f4739285e4ade4ed244536cb88e8ba1e38986af98d3a9064165122bb1622f2c6d57fe7b241b884fc47 - languageName: node - linkType: hard - -"estree-util-visit@npm:^1.0.0": - version: 1.2.0 - resolution: "estree-util-visit@npm:1.2.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/unist": ^2.0.0 - checksum: d36a36aed82d6cb00d24615889052e22308ff008191b3760f65f93e9d0b06d3bc448af9f99a685947f1c69fba36d9a412da243b0b026096c66ecd74054c3b090 - languageName: node - linkType: hard - -"estree-walker@npm:^3.0.0": - version: 3.0.1 - resolution: "estree-walker@npm:3.0.1" - checksum: 674096950819041f1ee471e63f7aa987f2ed3a3a441cc41a5176e9ed01ea5cfd6487822c3b9c2cddd0e2c8f9d7ef52d32d06147a19b5a9ca9f8ab0c094bd43b9 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"exec-sh@npm:^0.3.2": - version: 0.3.6 - resolution: "exec-sh@npm:0.3.6" - checksum: 0be4f06929c8e4834ea4812f29fe59e2dfcc1bc3fc4b4bb71acb38a500c3b394628a05ef7ba432520bc6c5ec4fadab00cc9c513c4ff6a32104965af302e998e0 - languageName: node - linkType: hard - -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: ^6.0.0 - get-stream: ^4.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 - languageName: node - linkType: hard - -"execa@npm:^5.0.0, execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - 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 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expect-type@npm:^0.14.2": - version: 0.14.2 - resolution: "expect-type@npm:0.14.2" - checksum: b8dba1f67d6562d203359d5f5e7ee9c2066c091a7bf3c8744858cbe801fb6becab760961fa206ad5bfd2c532b2a01f835f8f1a4f86f2ad8e6881c0930b48aca5 - languageName: node - linkType: hard - -"express@npm:^4.17.1": - version: 4.18.2 - resolution: "express@npm:4.18.2" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.11.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - -"extract-zip@npm:^1.6.6": - version: 1.7.0 - resolution: "extract-zip@npm:1.7.0" - dependencies: - concat-stream: ^1.6.2 - debug: ^2.6.9 - mkdirp: ^0.5.4 - yauzl: ^2.10.0 - bin: - extract-zip: cli.js - checksum: 011bab660d738614555773d381a6ba4815d98c1cfcdcdf027e154ebcc9fc8c9ef637b3ea5c9b2144013100071ee41722ed041fc9aacc60f6198ef747cac0c073 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - 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 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-json-parse@npm:^1.0.3": - version: 1.0.3 - resolution: "fast-json-parse@npm:1.0.3" - checksum: c19117c56ec18a9aa133c8ebf450c99d1037117e47a3cb9aff91b60580ba48d0fd8484b696c26749a1b9cb4914084177b3fa9ebef72063a74dee7d9ead987603 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.13.0 - resolution: "fastq@npm:1.13.0" - dependencies: - reusify: ^1.0.4 - checksum: 32cf15c29afe622af187d12fc9cd93e160a0cb7c31a3bb6ace86b7dea3b28e7b72acde89c882663f307b2184e14782c6c664fa315973c03626c7d4bff070bb0b - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 - languageName: node - linkType: hard - -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"fetch-retry@npm:^5.0.2": - version: 5.0.3 - resolution: "fetch-retry@npm:5.0.3" - checksum: b4eebc04bd41651417e89ae9287e5b9e5421970ce07058c6e1e22f7d9c1cd5f935fc39a328fd66b433247c0ae1bb8a6b2d48c073d5a9f911992f72c5d311b14d - languageName: node - linkType: hard - -"file-system-cache@npm:^2.0.0": - version: 2.0.1 - resolution: "file-system-cache@npm:2.0.1" - dependencies: - fs-extra: ^10.1.0 - ramda: ^0.28.0 - checksum: fba527d852dd0d90d21da4f53341584532f8c639a52f79479f543576caf464e333f2c076117e516dcc30ed5de136b48461b5336238daafdf11676bb423606e53 - languageName: node - linkType: hard - -"filelist@npm:^1.0.1": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: ^5.0.1 - checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" - dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" - dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 - languageName: node - linkType: hard - -"flatted@npm:^3.1.0": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 - languageName: node - linkType: hard - -"flow-parser@npm:0.*": - version: 0.190.1 - resolution: "flow-parser@npm:0.190.1" - checksum: 64aeedda7570ac44d3e7af077e0a65ff7cf29f2461f32038144a1a125abb24c50fffb747783305f0edd7afee915f1558a5e1b73b39e644d43e09f2165118764e - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - -"foreground-child@npm:^2.0.0": - version: 2.0.0 - resolution: "foreground-child@npm:2.0.0" - dependencies: - cross-spawn: ^7.0.0 - signal-exit: ^3.0.2 - checksum: f77ec9aff621abd6b754cb59e690743e7639328301fbea6ff09df27d2befaf7dd5b77cec51c32323d73a81a7d91caaf9413990d305cbe3d873eec4fe58960956 - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^7.2.8": - version: 7.2.13 - resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 - peerDependencies: - typescript: ">3.6.0" - vue-template-compiler: "*" - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 3d4694c6fee4b8b2f213d0d10a3f40da770ca0ed3aa2a3dc8d1e701ad1ecaed3a1507f77a1b0cea6ef80539b04d8e5f5f02560e688d310bcb9e8c81f684d2950 - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.1.2": - version: 2.1.3 - resolution: "form-data-encoder@npm:2.1.3" - checksum: f2db77767f2c0f45fcbab717f4c8ec1a952fba372440b841bd0f9f3f7b867e3a26bbe8bf72598127ebcfee5d493caee87942b30e9dff219898a4c12dad1dcedc - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^2.1.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^2.1.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - 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 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-port@npm:^4.2.0": - version: 4.2.0 - resolution: "get-port@npm:4.2.0" - checksum: 6c9a452b2d6e81fe36781a69ed201883d37c02f141ba5770eaef3eca768ca38777c2eba4bec303f6b8c3f45f29036f95d5606b255f613320a6b4b680e1975c07 - languageName: node - linkType: hard - -"get-port@npm:^5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 - languageName: node - linkType: hard - -"get-stream@npm:^4.0.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - -"github-slugger@npm:^1.0.0": - version: 1.4.0 - resolution: "github-slugger@npm:1.4.0" - checksum: 4f52e7a21f5c6a4c5328f01fe4fe13ae8881fea78bfe31f9e72c4038f97e3e70d52fb85aa7633a52c501dc2486874474d9abd22aa61cbe9b113099a495551c6b - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.0 - resolution: "global-dirs@npm:3.0.0" - dependencies: - ini: 2.0.0 - checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 - languageName: node - linkType: hard - -"global@npm:^4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globals@npm:^13.2.0": - version: 13.17.0 - resolution: "globals@npm:13.17.0" - dependencies: - type-fest: ^0.20.2 - checksum: fbaf4112e59b92c9f5575e85ce65e9e17c0b82711196ec5f58beb08599bbd92fd72703d6dfc9b080381fd35b644e1b11dcf25b38cc2341ec21df942594cbc8ce - languageName: node - linkType: hard - -"globby@npm:^11.0.2": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - 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 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"got@npm:^12.1.0": - version: 12.5.2 - resolution: "got@npm:12.5.2" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - cacheable-lookup: ^7.0.0 - cacheable-request: ^10.2.1 - decompress-response: ^6.0.0 - form-data-encoder: ^2.1.2 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^3.0.0 - checksum: f84b704ca8edb5af17b4df32d21729a0a837a680d197c9d5a922090024ffc15d71a2c5a470de57ca2bb3e3e55aa7e996767d9106df7c57eb99d8de84ce56691f - languageName: node - linkType: hard - -"graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - -"has-yarn@npm:^3.0.0": - version: 3.0.0 - resolution: "has-yarn@npm:3.0.0" - checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hast-util-to-estree@npm:^2.0.0, hast-util-to-estree@npm:^2.0.2": - version: 2.1.0 - resolution: "hast-util-to-estree@npm:2.1.0" - dependencies: - "@types/estree": ^1.0.0 - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - comma-separated-tokens: ^2.0.0 - estree-util-attach-comments: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - hast-util-whitespace: ^2.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 - unist-util-position: ^4.0.0 - zwitch: ^2.0.0 - checksum: 1e14cfbfd57ff00ffda48cfef23bcebb6ebbea0385bb03d748a9432591c60f0a69428baaba82375a8cdbc924217ba9e75d30820b3641fdbe12ae62aa6c3f90a7 - languageName: node - linkType: hard - -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "hast-util-whitespace@npm:2.0.0" - checksum: abeb5386075bfb0facfce89eed0e13d2cb27a0910cec8fd234b48821a1538387a73fa7f458842e8c404148dc69434acbc10488d75b02817e460652c2c894c024 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 - languageName: node - linkType: hard - -"html-tags@npm:^3.1.0": - version: 3.2.0 - resolution: "html-tags@npm:3.2.0" - checksum: a0c9e96ac26c84adad9cc66d15d6711a17f60acda8d987218f1d4cbaacd52864939b230e635cce5a1179f3ddab2a12b9231355617dfbae7945fcfec5e96d2041 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^5.5.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" - dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - webpack: ^5.20.0 - checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 - languageName: node - linkType: hard - -"htmlnano@npm:^2.0.0": - version: 2.0.2 - resolution: "htmlnano@npm:2.0.2" - dependencies: - cosmiconfig: ^7.0.1 - posthtml: ^0.16.5 - timsort: ^0.3.0 - peerDependencies: - cssnano: ^5.0.11 - postcss: ^8.3.11 - purgecss: ^4.0.3 - relateurl: ^0.2.7 - srcset: ^5.0.0 - svgo: ^2.8.0 - terser: ^5.10.0 - uncss: ^0.17.3 - peerDependenciesMeta: - cssnano: - optional: true - postcss: - optional: true - purgecss: - optional: true - relateurl: - optional: true - srcset: - optional: true - svgo: - optional: true - terser: - optional: true - uncss: - optional: true - checksum: 41f9e0c0e54367730109e9ea31a1e625ebfa4134f6689d36aba76551cb62a9a5c200bee556b4ad12c230d3586243ac6ebaaaab93bb3091d7f96686a98c5caa1a - languageName: node - linkType: hard - -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - domutils: ^2.5.2 - entities: ^2.0.0 - checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e - languageName: node - linkType: hard - -"htmlparser2@npm:^7.1.1": - version: 7.2.0 - resolution: "htmlparser2@npm:7.2.0" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.2 - domutils: ^2.8.0 - entities: ^3.0.1 - checksum: 96563d9965729cfcb3f5f19c26d013c6831b4cb38d79d8c185e9cd669ea6a9ffe8fb9ccc74d29a068c9078aa0e2767053ed6b19aa32723c41550340d0094bea0 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 - languageName: node - linkType: hard - -"http2-wrapper@npm:^2.1.10": - version: 2.1.11 - resolution: "http2-wrapper@npm:2.1.11" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 5da05aa2c77226ac9cc82c616383f59c8f31b79897b02ecbe44b09714be1fca1f21bb184e672a669ca2830eefea4edac5f07e71c00cb5a8c5afec8e5a20cfaf7 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^4.0.0": - version: 4.0.0 - resolution: "https-proxy-agent@npm:4.0.0" - dependencies: - agent-base: 5 - debug: 4 - checksum: 19471d5aae3e747b1c98b17556647e2a1362e68220c6b19585a8527498f32e62e03c41d2872d059d8720d56846bd7460a80ac06f876bccfa786468ff40dd5eef - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-lazy@npm:^4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.0": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - -"is-alphabetical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphabetical@npm:2.0.1" - checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa - languageName: node - linkType: hard - -"is-alphanumerical@npm:^2.0.0": - version: 2.0.1 - resolution: "is-alphanumerical@npm:2.0.1" - dependencies: - is-alphabetical: ^2.0.0 - is-decimal: ^2.0.0 - checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: ^2.0.0 - bin: - is-ci: bin.js - checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: ^3.2.0 - bin: - is-ci: bin.js - checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e - languageName: node - linkType: hard - -"is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-decimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-decimal@npm:2.0.1" - checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-function@npm:^1.0.2": - version: 1.0.2 - resolution: "is-function@npm:1.0.2" - checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b - languageName: node - linkType: hard - -"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^2.0.0": - version: 2.0.1 - resolution: "is-hexadecimal@npm:2.0.1" - checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: ^3.0.0 - is-path-inside: ^3.0.2 - checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 - languageName: node - linkType: hard - -"is-json@npm:^2.0.1": - version: 2.0.1 - resolution: "is-json@npm:2.0.1" - checksum: 29efc4f82e912bf54cd7b28632dd8e52a311085ca879fe51c869a81ba1313bb689eb440ace53dd480edbc009f92a425c24059e0766f4117fe9888fe59e86186f - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-npm@npm:^6.0.0": - version: 6.0.0 - resolution: "is-npm@npm:6.0.0" - checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce - languageName: node - linkType: hard - -"is-plain-object@npm:5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-reference@npm:^3.0.0": - version: 3.0.0 - resolution: "is-reference@npm:3.0.0" - dependencies: - "@types/estree": "*" - checksum: 408bb3442ff5f90a9740bf578e8fa2863f68bc07ee99b92079a358a34af58341dc7014b054e8cc51a3da5d1ab83f635b6ee1ce2982db7899a128d7a05173898f - languageName: node - linkType: hard - -"is-regex@npm:^1.1.2, is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "is-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - checksum: 11910f1e58755fef43bf0074e52fa5b932bf101ec65d613e0a83d40e8e4c6e3f2ee142d624ebc7624c091d3bbe921131f8db7d36ecbbb71909f2fe310c1faa65 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.4.0": - version: 0.4.0 - resolution: "is-yarn-global@npm:0.4.0" - checksum: a5fcf09c3a426af7d9d7d5d48cfe203fbe132961e00f0e8a818a9a1a1f49423af907422905088522380de782d8c2ab787222d8fcc53b011c2b22bacb5087c6c2 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isobject@npm:^4.0.0": - version: 4.0.0 - resolution: "isobject@npm:4.0.0" - checksum: bbcb522e46d54fb22418ba49fb9a82057ffa201c8401fb6e018c042e2c98cf7d9c7b185aff88e035ec8adea0814506dc2aeff2d08891bbc158e1671a49e99c06 - languageName: node - linkType: hard - -"isomorphic-unfetch@npm:^3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: ^2.6.1 - unfetch: ^4.2.0 - checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" - dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 - supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.4": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" - dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 - languageName: node - linkType: hard - -"jake@npm:^10.8.5": - version: 10.8.5 - resolution: "jake@npm:10.8.5" - dependencies: - async: ^3.2.3 - chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 - bin: - jake: ./bin/cli.js - checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba - languageName: node - linkType: hard - -"jest-haste-map@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-haste-map@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/graceful-fs": ^4.1.2 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.1.2 - graceful-fs: ^4.2.4 - jest-regex-util: ^26.0.0 - jest-serializer: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - micromatch: ^4.0.2 - sane: ^4.0.3 - walker: ^1.0.7 - dependenciesMeta: - fsevents: - optional: true - checksum: 8ad5236d5646d2388d2bd58a57ea53698923434f43d59ea9ebdc58bce4d0b8544c8de2f7acaa9a6d73171f04460388b2b6d7d6b6c256aea4ebb8780140781596 - languageName: node - linkType: hard - -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 930a00665e8dfbedc29140678b4a54f021b41b895cf35050f76f557c1da3ac48ff42dd7b18ba2ccba6f4e518c6445d6753730d03ec7049901b93992db1ef0483 - languageName: node - linkType: hard - -"jest-serializer@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-serializer@npm:26.6.2" - dependencies: - "@types/node": "*" - graceful-fs: ^4.2.4 - checksum: dbecfb0d01462fe486a0932cf1680cf6abb204c059db2a8f72c6c2a7c9842a82f6d256874112774cea700764ed8f38fc9e3db982456c138d87353e3390e746fe - languageName: node - linkType: hard - -"jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - is-ci: ^2.0.0 - micromatch: ^4.0.2 - checksum: 3c6a5fba05c4c6892cd3a9f66196ea8867087b77a5aa1a3f6cd349c785c3f1ca24abfd454664983aed1a165cab7846688e44fe8630652d666ba326b08625bc3d - languageName: node - linkType: hard - -"jest-worker@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 - languageName: node - linkType: hard - -"js-string-escape@npm:^1.0.1": - version: 1.0.1 - resolution: "js-string-escape@npm:1.0.1" - checksum: f11e0991bf57e0c183b55c547acec85bd2445f043efc9ea5aa68b41bd2a3e7d3ce94636cb233ae0d84064ba4c1a505d32e969813c5b13f81e7d4be12c59256fe - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - -"jscodeshift@npm:^0.13.1": - version: 0.13.1 - resolution: "jscodeshift@npm:0.13.1" - dependencies: - "@babel/core": ^7.13.16 - "@babel/parser": ^7.13.16 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/preset-flow": ^7.13.13 - "@babel/preset-typescript": ^7.13.0 - "@babel/register": ^7.13.16 - babel-core: ^7.0.0-bridge.0 - chalk: ^4.1.2 - flow-parser: 0.* - graceful-fs: ^4.2.4 - micromatch: ^3.1.10 - neo-async: ^2.5.0 - node-dir: ^0.1.17 - recast: ^0.20.4 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 - peerDependencies: - "@babel/preset-env": ^7.1.6 - bin: - jscodeshift: bin/jscodeshift.js - checksum: 1c35938de5fc29cafec80e2c37d5c3411f85cd5d40e0243b52f2da0c1ab4b659daddfd62de558eca5d562303616f7838097727b651f4ad8e32b1e96f169cdd76 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - -"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" - bin: - json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"keyv@npm:^4.5.0": - version: 4.5.0 - resolution: "keyv@npm:4.5.0" - dependencies: - json-buffer: 3.0.1 - checksum: d294873cf88ec8f691e5edeb7b4b884f886c5f021a01902a0e243c362449db2b55419d7fb7187d059add747b7398321e39e44d391b65f94935174ce13452714d - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - -"latest-version@npm:^7.0.0": - version: 7.0.0 - resolution: "latest-version@npm:7.0.0" - dependencies: - package-json: ^8.1.0 - checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 - languageName: node - linkType: hard - -"lazy-universal-dotenv@npm:^3.0.1": - version: 3.0.1 - resolution: "lazy-universal-dotenv@npm:3.0.1" - dependencies: - "@babel/runtime": ^7.5.0 - app-root-dir: ^1.0.2 - core-js: ^3.0.4 - dotenv: ^8.0.0 - dotenv-expand: ^5.1.0 - checksum: a80509d8cb40dafcfab5859335920754a21814320aa16115e58c0ae5ef3b1d8bd4daa96349ea548e2833f2f89269ddbb103ebd55be06cfdba00e0af6785b5ba7 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - -"lightningcss-darwin-arm64@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-darwin-arm64@npm:1.16.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"lightningcss-darwin-x64@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-darwin-x64@npm:1.16.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"lightningcss-linux-arm-gnueabihf@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.16.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"lightningcss-linux-arm64-gnu@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-linux-arm64-gnu@npm:1.16.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"lightningcss-linux-arm64-musl@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-linux-arm64-musl@npm:1.16.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"lightningcss-linux-x64-gnu@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-linux-x64-gnu@npm:1.16.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"lightningcss-linux-x64-musl@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-linux-x64-musl@npm:1.16.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"lightningcss-win32-x64-msvc@npm:1.16.0": - version: 1.16.0 - resolution: "lightningcss-win32-x64-msvc@npm:1.16.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"lightningcss@npm:^1.14.0": - version: 1.16.0 - resolution: "lightningcss@npm:1.16.0" - dependencies: - detect-libc: ^1.0.3 - lightningcss-darwin-arm64: 1.16.0 - lightningcss-darwin-x64: 1.16.0 - lightningcss-linux-arm-gnueabihf: 1.16.0 - lightningcss-linux-arm64-gnu: 1.16.0 - lightningcss-linux-arm64-musl: 1.16.0 - lightningcss-linux-x64-gnu: 1.16.0 - lightningcss-linux-x64-musl: 1.16.0 - lightningcss-win32-x64-msvc: 1.16.0 - dependenciesMeta: - lightningcss-darwin-arm64: - optional: true - lightningcss-darwin-x64: - optional: true - lightningcss-linux-arm-gnueabihf: - optional: true - lightningcss-linux-arm64-gnu: - optional: true - lightningcss-linux-arm64-musl: - optional: true - lightningcss-linux-x64-gnu: - optional: true - lightningcss-linux-x64-musl: - optional: true - lightningcss-win32-x64-msvc: - optional: true - checksum: cac3867695a02046b15ea4e15894055d917813da031e11169aa8a67d11a261c6dcb625c02a868897e3038d57e22ce1ed7811df40ccce97de4b450286ae94756d - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"lmdb@npm:2.5.2": - version: 2.5.2 - resolution: "lmdb@npm:2.5.2" - dependencies: - "@lmdb/lmdb-darwin-arm64": 2.5.2 - "@lmdb/lmdb-darwin-x64": 2.5.2 - "@lmdb/lmdb-linux-arm": 2.5.2 - "@lmdb/lmdb-linux-arm64": 2.5.2 - "@lmdb/lmdb-linux-x64": 2.5.2 - "@lmdb/lmdb-win32-x64": 2.5.2 - msgpackr: ^1.5.4 - node-addon-api: ^4.3.0 - node-gyp: latest - node-gyp-build-optional-packages: 5.0.3 - ordered-binary: ^1.2.4 - weak-lru-cache: ^1.2.2 - dependenciesMeta: - "@lmdb/lmdb-darwin-arm64": - optional: true - "@lmdb/lmdb-darwin-x64": - optional: true - "@lmdb/lmdb-linux-arm": - optional: true - "@lmdb/lmdb-linux-arm64": - optional: true - "@lmdb/lmdb-linux-x64": - optional: true - "@lmdb/lmdb-win32-x64": - optional: true - checksum: 3362dc2b03c6fbdfc02291001007e4096767476e65fbf8d5e332ef473946a0d108319748ef5974ebb84cf6ffa4015c039920f130bcc09c03a751b03a9fd93dff - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "loader-utils@npm:2.0.3" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: d055c61ce5927b64cb4af40218606603a7d3a39adb7b6eec116bb31d19203875950e478152dea056de404eced8e87e9bfd336ec636591ded040ea451f63c7d88 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"longest-streak@npm:^3.0.0": - version: 3.0.1 - resolution: "longest-streak@npm:3.0.1" - checksum: 3b59c4c04ce3c70f137e339c10d574026fa3a711c45dc0e69a63a2c0ac981e57f837e1d5b64b991eee5234c4fa46fa10886a20626fb739ed3b04b77bcf6d14a8 - languageName: node - linkType: hard - -"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.14.0 - resolution: "lru-cache@npm:7.14.0" - checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 8a6dd128be1c524049ea6a41a9193715c2835d3d706af4b8b714ff2043a82786dbcd4a8f1fa9ddd28facbc444426c97515aef2d1f3dd11d5e2d63749ba577b1e - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.3": - version: 7.1.7 - resolution: "markdown-to-jsx@npm:7.1.7" - peerDependencies: - react: ">= 0.14.0" - checksum: b2c0ea7d0988fad0c709989b3b1b3a5600d1e80b60266f9618386f7afead4a6b5eba9ee1a3943df6a3dcb1599ea89e58467d1b17b6dd3af3c60984c60a85d06d - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-util-definitions@npm:4.0.0" - dependencies: - unist-util-visit: ^2.0.0 - checksum: 2325f20b82b3fb8cb5fda77038ee0bbdd44f82cfca7c48a854724b58bc1fe5919630a3ce7c45e210726df59d46c881d020b2da7a493bfd1ee36eb2bbfef5d78e - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.1 - resolution: "mdast-util-definitions@npm:5.1.1" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-from-markdown@npm:1.2.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40 - languageName: node - linkType: hard - -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdx-expression@npm:1.3.1" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 456d59a616a274416f5b02bce64bf5245c4b7247927b4539f4db35bec5674352580fb91f51ed11f1a769d17330c44eec7ca481faf81ee839c2efe71309195225 - languageName: node - linkType: hard - -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-mdx-jsx@npm:2.1.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - ccount: ^2.0.0 - mdast-util-to-markdown: ^1.3.0 - parse-entities: ^4.0.0 - stringify-entities: ^4.0.0 - unist-util-remove-position: ^4.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 40520a299449e4074ff1097789c7372220c9751e0de151566dcc133118d748c2231e29bafcbbf2c3beb3a917a85cfbbaa9195dadfb4122603bad479f93a61dbe - languageName: node - linkType: hard - -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx@npm:2.0.0" - dependencies: - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdx-jsx: ^2.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - checksum: 4744bfbbd337c2a99a3ef339673c549a670d6496e0d3a6d747d2451e112d6fef7d27613549b0bd62a5f92ea7919e3bacd78c731e8a3d80552a09b80896554cf6 - languageName: node - linkType: hard - -"mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-mdxjs-esm@npm:1.3.0" - dependencies: - "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: df3902eb884b4f83cebbfe33647f51938b36db54d4539afd884dc83ff43052676cd48df4c382dc986335290f5c691576d1a848da8ffb671b69ade29fe1c317e0 - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:^12.1.0": - version: 12.2.4 - resolution: "mdast-util-to-hast@npm:12.2.4" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 - trim-lines: ^3.0.0 - unist-builder: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: c9a1c31527590a11ec7a637ae46a8f52b05b457523e9be9c4ca8bcc1efb3eac5ed1575353e97a70fffcf61e40c80d649bee28058fa1509bc1c213eacfa73bc5f - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": - version: 1.3.0 - resolution: "mdast-util-to-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - longest-streak: ^3.0.0 - mdast-util-to-string: ^3.0.0 - micromark-util-decode-string: ^1.0.0 - unist-util-visit: ^4.0.0 - zwitch: ^2.0.0 - checksum: 0ea4fc11b7a49b15d400d50044429c45222cb9bc583553288c7c54704d051f25049233817129ba56a6f581f1e20916e5c540870a80987318747a95b44a36ba3e - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^1.0.0": - version: 1.1.0 - resolution: "mdast-util-to-string@npm:1.1.0" - checksum: eec1eb283f3341376c8398b67ce512a11ab3e3191e3dbd5644d32a26784eac8d5f6d0b0fb81193af00d75a2c545cde765c8b03e966bd890076efb5d357fb4fe2 - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.1.0 - resolution: "mdast-util-to-string@npm:3.1.0" - checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29 - languageName: node - linkType: hard - -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"memfs@npm:^3.4.1, memfs@npm:^3.4.3": - version: 3.4.7 - resolution: "memfs@npm:3.4.7" - dependencies: - fs-monkey: ^1.0.3 - checksum: fab88266dc576dc4999e38bdf531d703fb798affac2e0dd3fc17470878486844027b2766008ba80c0103b443f52cf9068a5c00f4e1ecf04106f4b29c11855822 - languageName: node - linkType: hard - -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: ^1.5.0 - checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-expression@npm:1.0.3" - dependencies: - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: ef4b4137894624a6754b951d3cb7abb20951ca7b37f9ad8a50d2e2b95d0cf880258d71296bfac6be4ff83a8d137b6b657ae852bb6f11f4ca11e5e6d62f1b025d - languageName: node - linkType: hard - -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" - dependencies: - "@types/acorn": ^4.0.0 - estree-util-is-identifier-name: ^2.0.0 - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 1a5566890aabc52fe96b78e3a3a507dee03a2232e44b9360b00617734e156f934e85bc6a477fbb856c793fe33c9fb7d2207a4f50e680168c0d04ba9c9336d960 - languageName: node - linkType: hard - -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: b4f205e1d5f0946b4755541ef44ffd0b3be8c7ecfc08d8b139b6a21fbd3ff62d8fdb6b7e6d17bd9a3b610450267f43a41703dc48b341da9addd743a28cdefa64 - languageName: node - linkType: hard - -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" - dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.1.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 756074656391a5e5bb96bc8a0e9c1df7d9f7be5299847c9719e6a90552e1c76a11876aa89986ad5da89ab485f776a4a43a61ea3acddd4f865a5cee43ac523ffd - languageName: node - linkType: hard - -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" - dependencies: - acorn: ^8.0.0 - acorn-jsx: ^5.0.0 - micromark-extension-mdx-expression: ^1.0.0 - micromark-extension-mdx-jsx: ^1.0.0 - micromark-extension-mdx-md: ^1.0.0 - micromark-extension-mdxjs-esm: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: ba836c6d2dfc67597886e88f533ffa02f2029dbe216a0651f1066e70f8529a700bcc7fa2bc4201ee12fd3d1cd7da7093d5a442442daeb84b27df96aaffb7699c - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 - languageName: node - linkType: hard - -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.6 - resolution: "micromark-factory-mdx-expression@npm:1.0.6" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 7b69f0e77664e9820639cf23c4f01d43aa0e7abd88021c3db428435e3a5a1f9446f8dc5c2a6ed4ac16c6495ca51937609a5c98ff59a62c54be382c2725500b39 - languageName: node - linkType: hard - -"micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 - languageName: node - linkType: hard - -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - -"micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" - dependencies: - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f - languageName: node - linkType: hard - -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-events-to-acorn@npm:1.2.0" - dependencies: - "@types/acorn": ^4.0.0 - "@types/estree": ^1.0.0 - estree-util-visit: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-location: ^4.0.0 - vfile-message: ^3.0.0 - checksum: 422285d68c8e8a57042bf31eefa55a136eec5c1fb021278a7c25d60a000c4e3ddaf140c94065a270499281f79ff59999468b850a461f22b5731fc47eccb2c4c2 - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c - languageName: node - linkType: hard - -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - -"micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d - languageName: node - linkType: hard - -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df - languageName: node - linkType: hard - -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - -"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - -"mime@npm:^2.0.3": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" - dependencies: - brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 - languageName: node - linkType: hard - -"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" - dependencies: - yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.4": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"msgpackr-extract@npm:^2.1.2": - version: 2.1.2 - resolution: "msgpackr-extract@npm:2.1.2" - dependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": 2.1.2 - "@msgpackr-extract/msgpackr-extract-darwin-x64": 2.1.2 - "@msgpackr-extract/msgpackr-extract-linux-arm": 2.1.2 - "@msgpackr-extract/msgpackr-extract-linux-arm64": 2.1.2 - "@msgpackr-extract/msgpackr-extract-linux-x64": 2.1.2 - "@msgpackr-extract/msgpackr-extract-win32-x64": 2.1.2 - node-gyp: latest - node-gyp-build-optional-packages: 5.0.3 - dependenciesMeta: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": - optional: true - "@msgpackr-extract/msgpackr-extract-darwin-x64": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-arm": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-arm64": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-x64": - optional: true - "@msgpackr-extract/msgpackr-extract-win32-x64": - optional: true - bin: - download-msgpackr-prebuilds: bin/download-prebuilds.js - checksum: bf068baa690d3e5c5609c10aa363901ac43d3f32b9d89f9dfb77293afa866eb1b943482338da6c38d50790a66c966fd7e0fbc9187b2a35f40f253931f649f97f - languageName: node - linkType: hard - -"msgpackr@npm:^1.5.4": - version: 1.7.2 - resolution: "msgpackr@npm:1.7.2" - dependencies: - msgpackr-extract: ^2.1.2 - dependenciesMeta: - msgpackr-extract: - optional: true - checksum: 156cf8938667c3a191feedaed05c8a2d7c95b53d0834c32928e849a2bd93292e4eba33e3601c79cc4cc79023161d658e91472f1719d0d5c63fb1d0f2b142fa07 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.0.1": - version: 3.0.1 - resolution: "node-abort-controller@npm:3.0.1" - checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee - languageName: node - linkType: hard - -"node-addon-api@npm:^3.2.1": - version: 3.2.1 - resolution: "node-addon-api@npm:3.2.1" - dependencies: - node-gyp: latest - checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 - languageName: node - linkType: hard - -"node-addon-api@npm:^4.3.0": - version: 4.3.0 - resolution: "node-addon-api@npm:4.3.0" - dependencies: - node-gyp: latest - checksum: 3de396e23cc209f539c704583e8e99c148850226f6e389a641b92e8967953713228109f919765abc1f4355e801e8f41842f96210b8d61c7dcc10a477002dcf00 - languageName: node - linkType: hard - -"node-dir@npm:^0.1.10, node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: ^3.0.2 - checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b - languageName: node - linkType: hard - -"node-gyp-build-optional-packages@npm:5.0.3": - version: 5.0.3 - resolution: "node-gyp-build-optional-packages@npm:5.0.3" - bin: - node-gyp-build-optional-packages: bin.js - node-gyp-build-optional-packages-optional: optional.js - node-gyp-build-optional-packages-test: build-test.js - checksum: be3f0235925c8361e5bc1a03848f5e24815b0df8aa90bd13f1eac91cd86264bbb8b7689ca6cd083b02c8099c7b54f9fb83066c7bb77c2389dc4eceab921f084f - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.3.0": - version: 4.5.0 - resolution: "node-gyp-build@npm:4.5.0" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: d888bae0fb88335f69af1b57a2294a931c5042f36e413d8d364c992c9ebfa0b96ffe773179a5a2c8f04b73856e8634e09cce108dbb9804396d3cc8c5455ff2db - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-url@npm:^7.2.0": - version: 7.2.0 - resolution: "normalize-url@npm:7.2.0" - checksum: 7753f081ee997520c9cd855f06975d7ac24b1ef58002e310d5058c831b9a6165ec2ec9fc0c5bc9e886e1257affaffa7c36731ae39073fcf74af07197997d4fb6 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 - languageName: node - linkType: hard - -"nullthrows@npm:^1.1.1": - version: 1.1.1 - resolution: "nullthrows@npm:1.1.1" - checksum: 10806b92121253eb1b08ecf707d92480f5331ba8ae5b23fa3eb0548ad24196eb797ed47606153006568a5733ea9e528a3579f21421f7828e09e7756f4bdd386f - languageName: node - linkType: hard - -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"objectorarray@npm:^1.0.5": - version: 1.0.5 - resolution: "objectorarray@npm:1.0.5" - checksum: 8fd776aa495d113e217837f4adc1d53e63f656498237094d25f84c3e2c038b34b71d6fd85c4b60c7ae5f558790e5042426a400fae3eac35f297e11be12643a78 - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: ^2.0.0 - is-wsl: ^2.1.1 - checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91 - languageName: node - linkType: hard - -"open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c - languageName: node - linkType: hard - -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - -"ordered-binary@npm:^1.2.4": - version: 1.4.0 - resolution: "ordered-binary@npm:1.4.0" - checksum: 951fecb400b4e4e5176983679994cb7eb0a3ed1da8406d2bb1f7e76417cb61af85ea557d184cccfa3fe50b4c1582a69a4b2e20625f0d56083330b11bf1bcdeb4 - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json@npm:^8.1.0": - version: 8.1.0 - resolution: "package-json@npm:8.1.0" - dependencies: - got: ^12.1.0 - registry-auth-token: ^5.0.1 - registry-url: ^6.0.0 - semver: ^7.3.7 - checksum: 28c16ef0296915533c3dec9ce579fd6ea8ac62df0cd0b4b44e65a45506fda781cf1d1fd4a083fe90af3e041a9514b6be30562d85689da450986aff43dc856cc7 - languageName: node - linkType: hard - -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - -"parcel@npm:2.0.1": - version: 2.0.1 - resolution: "parcel@npm:2.0.1" - dependencies: - "@parcel/config-default": ^2.0.1 - "@parcel/core": ^2.0.1 - "@parcel/diagnostic": ^2.0.1 - "@parcel/events": ^2.0.1 - "@parcel/fs": ^2.0.1 - "@parcel/logger": ^2.0.1 - "@parcel/package-manager": ^2.0.1 - "@parcel/reporter-cli": ^2.0.1 - "@parcel/reporter-dev-server": ^2.0.1 - "@parcel/utils": ^2.0.1 - chalk: ^4.1.0 - commander: ^7.0.0 - get-port: ^4.2.0 - v8-compile-cache: ^2.0.0 - bin: - parcel: lib/bin.js - checksum: 253da8849417572b9a913150b50665da006961755c67aee1c6a5fd27378161af11c985bcba4e071806781cf51cc4c149b3fc6e7c179a0ebd272d2e3ea5811568 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-entities@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-entities@npm:4.0.0" - dependencies: - "@types/unist": ^2.0.0 - character-entities: ^2.0.0 - character-entities-legacy: ^3.0.0 - character-reference-invalid: ^2.0.0 - decode-named-character-reference: ^1.0.0 - is-alphanumerical: ^2.0.0 - is-decimal: ^2.0.0 - is-hexadecimal: ^2.0.0 - checksum: cd9fa53bc056ad8cf8a45494bfd7ce65e8bf6f1b12dcc9a6343376fa529c2012041303c5d0f86babf70afbd13b71c2f219fc3a76fb97d9d559b66578e19cdaf0 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - -"periscopic@npm:^3.0.0": - version: 3.0.4 - resolution: "periscopic@npm:3.0.4" - dependencies: - estree-walker: ^3.0.0 - is-reference: ^3.0.0 - checksum: 0920ea1b0294c2463b7df858d7f895d0a69f15ec5c7b93d63749e7a8f6d9c065853ebea701305f1756f70310633832cf5c90e43e9363cce51abec44cc2f5c188 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b - languageName: node - linkType: hard - -"pirates@npm:^4.0.1, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: ^5.0.0 - checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 - languageName: node - linkType: hard - -"polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.17.8 - checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.10 - resolution: "postcss-selector-parser@npm:6.0.10" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 46afaa60e3d1998bd7adf6caa374baf857cc58d3ff944e29459c9a9e4680a7fe41597bd5b755fc81d7c388357e9bf67c0251d047c640a09f148e13606b8a8608 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:^8.4.7": - version: 8.4.18 - resolution: "postcss@npm:8.4.18" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 9349fd99849b2e3d2e134ff949b7770ecb12375f352723ce2bcc06167eba3850ea7844c1b191a85cd915d6a396b4e8ee9a5267e6cc5d8d003d0cbc7a97555d39 - languageName: node - linkType: hard - -"posthtml-parser@npm:^0.10.1": - version: 0.10.2 - resolution: "posthtml-parser@npm:0.10.2" - dependencies: - htmlparser2: ^7.1.1 - checksum: 63ec8e8631031f7879cada68ad165436ad6142eedd6ed9cb19b28c87848985819d50104d73a182a5205e7083e93131b68196c13c32cea12c0e225c7400591432 - languageName: node - linkType: hard - -"posthtml-parser@npm:^0.11.0": - version: 0.11.0 - resolution: "posthtml-parser@npm:0.11.0" - dependencies: - htmlparser2: ^7.1.1 - checksum: 37dca546a04dc2ddc936a629596edccc9e439a7f6ad503dae5165ea197ddc53f102e69259719a49ecd491e01b093b95c96287c38101f985b78a846c05a206b3c - languageName: node - linkType: hard - -"posthtml-render@npm:^3.0.0": - version: 3.0.0 - resolution: "posthtml-render@npm:3.0.0" - dependencies: - is-json: ^2.0.1 - checksum: 5ed2d6e8813af63c4e5a2d9d026f611fd178c9052a16b302a6e0e81d1badb64dab36e3fc1531b5bdd376465f39d19a6488299b3c6dfe13beae3dd525ff856573 - languageName: node - linkType: hard - -"posthtml@npm:^0.16.4, posthtml@npm:^0.16.5": - version: 0.16.6 - resolution: "posthtml@npm:0.16.6" - dependencies: - posthtml-parser: ^0.11.0 - posthtml-render: ^3.0.0 - checksum: 8b9b9d27bd2417d6b5b7d408000b23316c3c4d2a2d0ea62080a8fbec5654cc7376ea9d6317b290c030d616142144a8ca0a96ffe1e919493e3eac17442d362596 - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - -"prettier@npm:>=2.2.1 <=2.3.0": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" - bin: - prettier: bin-prettier.js - checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff - languageName: node - linkType: hard - -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" - dependencies: - lodash: ^4.17.20 - renderkid: ^3.0.0 - checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 - languageName: node - linkType: hard - -"pretty-hrtime@npm:^1.0.3": - version: 1.0.3 - resolution: "pretty-hrtime@npm:1.0.3" - checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 - languageName: node - linkType: hard - -"private@npm:^0.1.8": - version: 0.1.8 - resolution: "private@npm:0.1.8" - checksum: a00abd713d25389f6de7294f0e7879b8a5d09a9ec5fd81cc2f21b29d4f9a80ec53bc4222927d3a281d4aadd4cd373d9a28726fca3935921950dc75fd71d1fdbb - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"progress@npm:^2.0.1": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"prompts@npm:^2.4.0": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.1.1 - resolution: "property-information@npm:6.1.1" - checksum: 654b1e5c3578e1d522bd22b7cf48881f5054789969ddbefea22e5359805fda5dbf0c5ef76bb26516da26fedac8752587ddc4c8f3b9e16bc0c6e7feb8b6086864 - languageName: node - linkType: hard - -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.0.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"pupa@npm:^3.1.0": - version: 3.1.0 - resolution: "pupa@npm:3.1.0" - dependencies: - escape-goat: ^4.0.0 - checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 - languageName: node - linkType: hard - -"puppeteer-core@npm:^2.1.1": - version: 2.1.1 - resolution: "puppeteer-core@npm:2.1.1" - dependencies: - "@types/mime-types": ^2.1.0 - debug: ^4.1.0 - extract-zip: ^1.6.6 - https-proxy-agent: ^4.0.0 - mime: ^2.0.3 - mime-types: ^2.1.25 - progress: ^2.0.1 - proxy-from-env: ^1.0.0 - rimraf: ^2.6.1 - ws: ^6.1.0 - checksum: 2ddb597ef1b2d162b4aa49833b977734129edf7c8fa558fc38c59d273e79aa1bd079481c642de87f7163665f7f37aa52683da2716bafb7d3cab68c262c36ec28 - languageName: node - linkType: hard - -"qs@npm:6.11.0, qs@npm:^6.10.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - -"ramda@npm:^0.28.0": - version: 0.28.0 - resolution: "ramda@npm:0.28.0" - checksum: 44ea6e5010bba70151b6a92d8114a91915e8b5a16105cce65fae58c9d7386b812c429645e35f21141d7087568550ce383bc10ee1a65cdec951f4b69ea457e6a4 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e - languageName: node - linkType: hard - -"rc@npm:1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e - languageName: node - linkType: hard - -"react-colorful@npm:^5.1.2": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: e432b7cb0df57e8f0bcdc3b012d2e93fcbcb6092c9e0f85654788d5ebfc4442536d8cc35b2418061ba3c4afb8b7788cc101c606d86a1732407921de7a9244c8d - languageName: node - linkType: hard - -"react-docgen-typescript@npm:^2.1.1": - version: 2.2.2 - resolution: "react-docgen-typescript@npm:2.2.2" - peerDependencies: - typescript: ">= 4.3.x" - checksum: a9826459ea44e818f21402728dd47f5cae60bd936574cefd4f90ad101ff3eebacd67b6e017b793309734ce62c037aa3072dbc855d2b0e29bad1a38cbf5bac115 - languageName: node - linkType: hard - -"react-docgen@npm:^5.0.0": - version: 5.4.3 - resolution: "react-docgen@npm:5.4.3" - dependencies: - "@babel/core": ^7.7.5 - "@babel/generator": ^7.12.11 - "@babel/runtime": ^7.7.6 - ast-types: ^0.14.2 - commander: ^2.19.0 - doctrine: ^3.0.0 - estree-to-babel: ^3.1.0 - neo-async: ^2.6.1 - node-dir: ^0.1.10 - strip-indent: ^3.0.0 - bin: - react-docgen: bin/react-docgen.js - checksum: cef935ba948195eaeec9126c62f53bc015b9a5ad3a7eeb4a4604668d5b12bd5d0c9058c279eaf33ee6b47f2a24ccf01818b67af64d7f61265c4d3a5aa4ff0a3a - languageName: node - linkType: hard - -"react-dom@npm:16.14.0": - version: 16.14.0 - resolution: "react-dom@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - scheduler: ^0.19.1 - peerDependencies: - react: ^16.14.0 - checksum: 5a5c49da0f106b2655a69f96c622c347febcd10532db391c262b26aec225b235357d9da1834103457683482ab1b229af7a50f6927a6b70e53150275e31785544 - languageName: node - linkType: hard - -"react-element-to-jsx-string@npm:^15.0.0": - version: 15.0.0 - resolution: "react-element-to-jsx-string@npm:15.0.0" - dependencies: - "@base2/pretty-print-object": 1.0.1 - is-plain-object: 5.0.0 - react-is: 18.1.0 - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - checksum: c3907cc4c1d3e9ecc8ca7727058ebcba6ec89848d9e07bfd2c77ee8f28f1ad99bf55e38359dec8a1125de83d41ac09a2874f53c41415edc86ffa9840fa1b7856 - languageName: node - linkType: hard - -"react-error-overlay@npm:6.0.9": - version: 6.0.9 - resolution: "react-error-overlay@npm:6.0.9" - checksum: 695853bc885e798008a00c10d8d94e5ac91626e8130802fea37345f9c037f41b80104345db2ee87f225feb4a4ef71b0df572b17c378a6d397b6815f6d4a84293 - languageName: node - linkType: hard - -"react-is@npm:18.1.0": - version: 18.1.0 - resolution: "react-is@npm:18.1.0" - checksum: d206a0fe6790851bff168727bfb896de02c5591695afb0c441163e8630136a3e13ee1a7ddd59fdccddcc93968b4721ae112c10f790b194b03b35a3dc13a355ef - languageName: node - linkType: hard - -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"react-refresh@npm:^0.11.0": - version: 0.11.0 - resolution: "react-refresh@npm:0.11.0" - checksum: 112178a05b1e0ffeaf5d9fb4e56b4410a34a73adeb04dbf13abdc50d9ac9df2ada83e81485156cca0b3fa296aa3612751b3d6cd13be4464642a43679b819cbc7 - languageName: node - linkType: hard - -"react-refresh@npm:^0.9.0": - version: 0.9.0 - resolution: "react-refresh@npm:0.9.0" - checksum: 6440146176f19402ffb7d66f317e40b1c42c88579b4d439b49021e38be6307c642da3e8732a72e6997b6bb1127db0da92f4aa433da4313ce8ebad0c1efa2ed4a - languageName: node - linkType: hard - -"react@npm:16.14.0": - version: 16.14.0 - resolution: "react@npm:16.14.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - checksum: 8484f3ecb13414526f2a7412190575fc134da785c02695eb92bb6028c930bfe1c238d7be2a125088fec663cc7cda0a3623373c46807cf2c281f49c34b79881ac - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 - languageName: node - linkType: hard - -"readable-stream@npm:^2.2.2": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"recast@npm:^0.19.0": - version: 0.19.1 - resolution: "recast@npm:0.19.1" - dependencies: - ast-types: 0.13.3 - esprima: ~4.0.0 - private: ^0.1.8 - source-map: ~0.6.1 - checksum: f5de5f803a1b026d38fd9f11b510ec2d18d7d0518f14ea24e088b9b0061ab5b52cfb6206e826396bbd72870eca55894ca961b909fc18d382e3695275fb253b5c - languageName: node - linkType: hard - -"recast@npm:^0.20.4": - version: 0.20.5 - resolution: "recast@npm:0.20.5" - dependencies: - ast-types: 0.14.2 - esprima: ~4.0.0 - source-map: ~0.6.1 - tslib: ^2.0.1 - checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4, regenerator-runtime@npm:^0.13.7": - version: 0.13.10 - resolution: "regenerator-runtime@npm:0.13.10" - checksum: 09893f5a9e82932642d9a999716b6c626dc53ef2a01307c952ebbf8e011802360163a37c304c18a6c358548be5a72b448e37209954a18696f21e438c81cbb4b9 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.0": - version: 0.15.0 - resolution: "regenerator-transform@npm:0.15.0" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 86e54849ab1167618d28bb56d214c52a983daf29b0d115c976d79840511420049b6b42c9ebdf187defa8e7129bdd74b6dd266420d0d3868c9fa7f793b5d15d49 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.1.0": - version: 5.2.1 - resolution: "regexpu-core@npm:5.2.1" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: c1244db79f7a4597414cd7fdf5171fa73905f0cbc684385c78127fc6198f9cade8fe829a1c4036c8ec57ac75b1ffb8c196451abdd2e153f26a4d8043fa10bbb3 - languageName: node - linkType: hard - -"registry-auth-token@npm:^5.0.1": - version: 5.0.1 - resolution: "registry-auth-token@npm:5.0.1" - dependencies: - "@pnpm/npm-conf": ^1.0.4 - checksum: abd3a3b14aee445398d09efc3b67be57fbf1b1e93b61443b45196055d2372f3814e6942a56ecd5a5385ab8e26c2078e0b3f6d346689c49b82f7e5049940e4b03 - languageName: node - linkType: hard - -"registry-url@npm:^6.0.0": - version: 6.0.1 - resolution: "registry-url@npm:6.0.1" - dependencies: - rc: 1.2.8 - checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab - languageName: node - linkType: hard - -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - -"remark-external-links@npm:^8.0.0": - version: 8.0.0 - resolution: "remark-external-links@npm:8.0.0" - dependencies: - extend: ^3.0.0 - is-absolute-url: ^3.0.0 - mdast-util-definitions: ^4.0.0 - space-separated-tokens: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 48c4a41fe38916f79febb390b0c4deefe82b554dd36dc534262d851860d17fb6d15d78d515f29194e5fa48db5f01f4405a6f6dd077aaf32812a2efffb01700d7 - languageName: node - linkType: hard - -"remark-mdx@npm:^2.0.0": - version: 2.1.5 - resolution: "remark-mdx@npm:2.1.5" - dependencies: - mdast-util-mdx: ^2.0.0 - micromark-extension-mdxjs: ^1.0.0 - checksum: a5b2ccaa2bdb9d236e418e4b1868539b3dc4f8df0476b5574c9beb0cc8cf8a09573fa91aeb24f56a5c3bb4ed00d9b6db6afe36a53450985fdbdcf9736bed115b - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 - languageName: node - linkType: hard - -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 - languageName: node - linkType: hard - -"remark-slug@npm:^6.0.0": - version: 6.1.0 - resolution: "remark-slug@npm:6.1.0" - dependencies: - github-slugger: ^1.0.0 - mdast-util-to-string: ^1.0.0 - unist-util-visit: ^2.0.0 - checksum: 81fff0dcfaf6d6117ef1293bb1d26c3e25483d99c65c22434298eed93583a89ea5d7b94063d9a7f47c0647a708ce84f00ff62d274503f248feec03c344cabb20 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"renderkid@npm:^3.0.0": - version: 3.0.0 - resolution: "renderkid@npm:3.0.0" - dependencies: - css-select: ^4.1.3 - dom-converter: ^0.2.0 - htmlparser2: ^6.1.0 - lodash: ^4.17.21 - strip-ansi: ^6.0.1 - checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: ^3.0.0 - checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rimraf@npm:^2.6.1": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 - languageName: node - linkType: hard - -"rsvp@npm:^4.8.4": - version: 4.8.5 - resolution: "rsvp@npm:4.8.5" - checksum: 2d8ef30d8febdf05bdf856ccca38001ae3647e41835ca196bc1225333f79b94ae44def733121ca549ccc36209c9b689f6586905e2a043873262609744da8efc1 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 7f117b604554c9daca713be76cecc6c52932ed1dd6303638274f21319038bfd760fbfd353e526cc83f11894935bc4beb71f5b7b9478c11bf9718c0e0d94c51cb - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"sane@npm:^4.0.3": - version: 4.1.0 - resolution: "sane@npm:4.1.0" - dependencies: - "@cnakazawa/watch": ^1.0.3 - anymatch: ^2.0.0 - capture-exit: ^2.0.0 - exec-sh: ^0.3.2 - execa: ^1.0.0 - fb-watchman: ^2.0.0 - micromatch: ^3.1.4 - minimist: ^1.1.1 - walker: ~1.0.5 - bin: - sane: ./src/cli.js - checksum: 97716502d456c0d38670a902a4ea943d196dcdf998d1e40532d8f3e24e25d7eddfd4c3579025a1eee8eac09a48dfd05fba61a2156c56704e7feaa450eb249f7c - languageName: node - linkType: hard - -"scheduler@npm:^0.19.1": - version: 0.19.1 - resolution: "scheduler@npm:0.19.1" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 73e185a59e2ff5aa3609f5b9cb97ddd376f89e1610579d29939d952411ca6eb7a24907a4ea4556569dacb931467a1a4a56d94fe809ef713aa76748642cd96a6c - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.5": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": ^7.0.5 - ajv: ^6.12.4 - ajv-keywords: ^3.5.2 - checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b - languageName: node - linkType: hard - -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 - ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f - languageName: node - linkType: hard - -"semver-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "semver-diff@npm:4.0.0" - dependencies: - semver: ^7.3.5 - checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.0, semver@npm:^5.7.1": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: ~1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: ~1.3.2 - safe-buffer: 5.1.1 - checksum: f4dd0fbee3b7e18d0a27ba6ba01d2f585f23f533010c9e8c74aad74615b19b12d8fbe714f14cb3579803f0bacecd67cdc858714cb56c6e28f8dd07ccc997aea4 - languageName: node - linkType: hard - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: ^6.0.2 - checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.0, source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^1.0.0": - version: 1.1.5 - resolution: "space-separated-tokens@npm:1.1.5" - checksum: 8ef68f1cfa8ccad316b7f8d0df0919d0f1f6d32101e8faeee34ea3a923ce8509c1ad562f57388585ee4951e92d27afa211ed0a077d3d5995b5ba9180331be708 - languageName: node - linkType: hard - -"space-separated-tokens@npm:^2.0.0": - version: 2.0.1 - resolution: "space-separated-tokens@npm:2.0.1" - checksum: 66e30a6382d6e3ab0a6573d510235a198202071d4ebfef8c198f10433166f0cdced4dbf0946cad3c4b2ecc336896a11f98b2ec93047e140fe7aef6fd3a21365b - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.12 - resolution: "spdx-license-ids@npm:3.0.12" - checksum: 92a4dddce62ce1db6fe54a7a839cf85e06abc308fc83b776a55b44e4f1906f02e7ebd506120847039e976bbbad359ea8bdfafb7925eae5cd7e73255f02e0b7d6 - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb - languageName: node - linkType: hard - -"stackframe@npm:^1.3.4": - version: 1.3.4 - resolution: "stackframe@npm:1.3.4" - checksum: bae1596873595c4610993fa84f86a3387d67586401c1816ea048c0196800c0646c4d2da98c2ee80557fd9eff05877efe33b91ba6cd052658ed96ddc85d19067d - languageName: node - linkType: hard - -"standalone-preview@workspace:.": - version: 0.0.0-use.local - resolution: "standalone-preview@workspace:." - dependencies: - "@storybook/addon-docs": 7.0.0-alpha.42 - "@storybook/cli": 7.0.0-alpha.42 - "@storybook/react": 7.0.0-alpha.42 - "@storybook/react-webpack5": 7.0.0-alpha.42 - cross-env: ^7.0.3 - parcel: 2.0.1 - react: 16.14.0 - react-dom: 16.14.0 - storybook: 7.0.0-alpha.42 - languageName: unknown - linkType: soft - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - -"store2@npm:^2.12.0": - version: 2.14.2 - resolution: "store2@npm:2.14.2" - checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 - languageName: node - linkType: hard - -"storybook@portal:../../code/lib/cli-storybook::locator=standalone-preview%40workspace%3A.": - version: 0.0.0-use.local - resolution: "storybook@portal:../../code/lib/cli-storybook::locator=standalone-preview%40workspace%3A." - dependencies: - "@storybook/cli": 7.0.0-alpha.42 - bin: - sb: ./index.js - storybook: ./index.js - languageName: node - linkType: soft - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"stringify-entities@npm:^4.0.0": - version: 4.0.3 - resolution: "stringify-entities@npm:4.0.3" - dependencies: - character-entities-html4: ^2.0.0 - character-entities-legacy: ^3.0.0 - checksum: 59e8f523b403bf7d415690e72ae52982decd6ea5426bd8b3f5c66225ddde73e766c0c0d91627df082d0794e30b19dd907ffb5864cef3602e4098d6777d7ca3c2 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: ^6.0.1 - checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 - languageName: node - linkType: hard - -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: ^1.0.0 - checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.0.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 - languageName: node - linkType: hard - -"style-loader@npm:^3.3.1": - version: 3.3.1 - resolution: "style-loader@npm:3.3.1" - peerDependencies: - webpack: ^5.0.0 - checksum: 470feef680f59e2fce4d6601b5c55b88c01ad8d1dd693c528ffd591ff5fd7c01a4eff3bdbe62f26f847d6bd2430c9ab594be23307cfe7a3446ab236683f0d066 - languageName: node - linkType: hard - -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" - dependencies: - inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"svgo@npm:^2.4.0": - version: 2.8.0 - resolution: "svgo@npm:2.8.0" - 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 - bin: - svgo: bin/svgo - checksum: b92f71a8541468ffd0b81b8cdb36b1e242eea320bf3c1a9b2c8809945853e9d8c80c19744267eb91cabf06ae9d5fff3592d677df85a31be4ed59ff78534fa420 - languageName: node - linkType: hard - -"synchronous-promise@npm:^2.0.15": - version: 2.0.16 - resolution: "synchronous-promise@npm:2.0.16" - checksum: 1a3e5dfa9e3b913452366e182d4cae5c2ffb9de8c9753ecb602539a298e82ab82de951a0b0ecd86b2e2e237b1236eb5e82964c8ce13b2d23f7ecd52767a2b74d - languageName: node - linkType: hard - -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - 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 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"telejson@npm:^6.0.8": - version: 6.0.8 - resolution: "telejson@npm:6.0.8" - dependencies: - "@types/is-function": ^1.0.0 - global: ^4.4.0 - is-function: ^1.0.2 - is-regex: ^1.1.2 - is-symbol: ^1.0.3 - isobject: ^4.0.0 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - checksum: 7411a5e78a35720bd0654a544409d3ce467b1dbb2073c73f36476b4c0905d97dbf539d6cbae737bb1fd8c872c2058f2a5450163a15117ed3fa031b2a2b8b33f6 - languageName: node - linkType: hard - -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 - languageName: node - linkType: hard - -"term-size@npm:^2.2.1": - version: 2.2.1 - resolution: "term-size@npm:2.2.1" - checksum: 1ed981335483babc1e8206f843e06bd2bf89b85f0bf5a9a9d928033a0fcacdba183c03ba7d91814643015543ba002f1339f7112402a21da8f24b6c56b062a5a9 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1": - version: 5.3.6 - resolution: "terser-webpack-plugin@npm:5.3.6" - dependencies: - "@jridgewell/trace-mapping": ^0.3.14 - jest-worker: ^27.4.5 - schema-utils: ^3.1.1 - serialize-javascript: ^6.0.0 - terser: ^5.14.1 - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8f3448d7fdb0434ce6a0c09d95c462bfd2f4a5a430233d854163337f734a7f5c07c74513d16081e06d4ca33d366d5b1a36f5444219bc41a7403afd6162107bad - languageName: node - linkType: hard - -"terser@npm:^5.10.0, terser@npm:^5.14.1, terser@npm:^5.2.0": - version: 5.15.1 - resolution: "terser@npm:5.15.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: 9880a1e0956983a1ce5de204ea35121c0009fa41d582a6904ae850e1953a1a2cc021168439565280c5a8eee67c85a874175627e24989b046c7a72589b81c3979 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - -"timsort@npm:^0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"trim-lines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" - checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed - languageName: node - linkType: hard - -"trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 - languageName: node - linkType: hard - -"ts-dedent@npm:^2.0.0": - version: 2.2.0 - resolution: "ts-dedent@npm:2.2.0" - checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": - version: 2.4.0 - resolution: "tslib@npm:2.4.0" - checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 - languageName: node - linkType: hard - -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.1": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 - languageName: node - linkType: hard - -"type-fest@npm:^2.13.0, type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" - bin: - uglifyjs: bin/uglifyjs - checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: ^2.0.0 - unicode-property-aliases-ecmascript: ^2.0.0 - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c - languageName: node - linkType: hard - -"unique-string@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-string@npm:3.0.0" - dependencies: - crypto-random-string: ^4.0.0 - checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df - languageName: node - linkType: hard - -"unist-builder@npm:^3.0.0": - version: 3.0.0 - resolution: "unist-builder@npm:3.0.0" - dependencies: - "@types/unist": ^2.0.0 - checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84 - languageName: node - linkType: hard - -"unist-util-generated@npm:^2.0.0": - version: 2.0.0 - resolution: "unist-util-generated@npm:2.0.0" - checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0 - languageName: node - linkType: hard - -"unist-util-is@npm:^4.0.0": - version: 4.1.0 - resolution: "unist-util-is@npm:4.1.0" - checksum: 726484cd2adc9be75a939aeedd48720f88294899c2e4a3143da413ae593f2b28037570730d5cf5fd910ff41f3bc1501e3d636b6814c478d71126581ef695f7ea - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.1.1 - resolution: "unist-util-is@npm:5.1.1" - checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4 - languageName: node - linkType: hard - -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.1 - resolution: "unist-util-position-from-estree@npm:1.1.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: 63808bdcb8b49afa5231712d95b586fe877859ee03d23adb47485c30222007a5af55e95d103d4af51d1d16376aaa5a58fa985a08d63727c38b1515873df8b79b - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.3 - resolution: "unist-util-position@npm:4.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209 - languageName: node - linkType: hard - -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.1 - resolution: "unist-util-remove-position@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 7d2808662ac65f2b2f615822b78060419f738fb3b074b10cec77c596ea966b8f5c47553d2d322822a5975c49d2b21cdd64c198ae9fb02a9d54d1afa6342cdd6a - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.2 - resolution: "unist-util-stringify-position@npm:3.0.2" - dependencies: - "@types/unist": ^2.0.0 - checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^3.0.0": - version: 3.1.1 - resolution: "unist-util-visit-parents@npm:3.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - checksum: 1170e397dff88fab01e76d5154981666eb0291019d2462cff7a2961a3e76d3533b42eaa16b5b7e2d41ad42a5ea7d112301458283d255993e660511387bf67bc3 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.1.1": - version: 5.1.1 - resolution: "unist-util-visit-parents@npm:5.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18 - languageName: node - linkType: hard - -"unist-util-visit@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-visit@npm:2.0.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - unist-util-visit-parents: ^3.0.0 - checksum: 1fe19d500e212128f96d8c3cfa3312846e586b797748a1fd195fe6479f06bc90a6f6904deb08eefc00dd58e83a1c8a32fb8677252d2273ad7a5e624525b69b8f - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit@npm:4.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.9": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"update-notifier@npm:^6.0.2": - version: 6.0.2 - resolution: "update-notifier@npm:6.0.2" - dependencies: - boxen: ^7.0.0 - chalk: ^5.0.1 - configstore: ^6.0.0 - has-yarn: ^3.0.0 - import-lazy: ^4.0.0 - is-ci: ^3.0.1 - is-installed-globally: ^0.4.0 - is-npm: ^6.0.0 - is-yarn-global: ^0.4.0 - latest-version: ^7.0.0 - pupa: ^3.1.0 - semver: ^7.3.7 - semver-diff: ^4.0.0 - xdg-basedir: ^5.1.0 - checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util@npm:^0.12.4": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: ^2.0.3 - is-arguments: ^1.0.4 - is-generator-function: ^1.0.7 - is-typed-array: ^1.1.3 - which-typed-array: ^1.1.2 - checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 - languageName: node - linkType: hard - -"utility-types@npm:^3.10.0": - version: 3.10.0 - resolution: "utility-types@npm:3.10.0" - checksum: 8f274415c6196ab62883b8bd98c9d2f8829b58016e4269aaa1ebd84184ac5dda7dc2ca45800c0d5e0e0650966ba063bf9a412aaeaea6850ca4440a391283d5c8 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - -"v8-compile-cache@npm:^2.0.0": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.0": - version: 9.0.1 - resolution: "v8-to-istanbul@npm:9.0.1" - dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"vfile-location@npm:^4.0.0": - version: 4.0.1 - resolution: "vfile-location@npm:4.0.1" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: cc0df62075c741beee699e651374aeb56c4c1f4333398c0ba924281c2b51d4b7669c69c5b837ea395775626ad030d6f1bd27fd0a7eaf3f9f1bbd55393948ad6c - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.2 - resolution: "vfile-message@npm:3.1.2" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: 96fbd9e9b5e0babb5ee61e3a716dc7a6a8c28f2c8c711837d95c88b782161b31549ad16059a78990d7b836d0f4d3b4d8c9ffde44370d48d9cac991fc1e3e17c5 - languageName: node - linkType: hard - -"vfile@npm:^5.0.0": - version: 5.3.5 - resolution: "vfile@npm:5.3.5" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 14a9ea19d1801bb99fc9a451d220d2ee84d891bae52094db660f9bf637c1cada0c45a3e00962ff3e901da16dd5051367e25a4a214e40db57ae40f57363796b45 - languageName: node - linkType: hard - -"walker@npm:^1.0.7, walker@npm:~1.0.5": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" - dependencies: - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 - languageName: node - linkType: hard - -"weak-lru-cache@npm:^1.2.2": - version: 1.2.2 - resolution: "weak-lru-cache@npm:1.2.2" - checksum: 0fbe16839d193ed82ddb4fe331ca8cfaee2ecbd42596aa02366c708956cf41f7258f2d5411c3bc9aa099c26058dc47afbd2593d449718a18e4ef4d870c5ace18 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" - dependencies: - colorette: ^2.0.10 - memfs: ^3.4.3 - mime-types: ^2.1.31 - range-parser: ^1.2.1 - schema-utils: ^4.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 - languageName: node - linkType: hard - -"webpack-hot-middleware@npm:^2.25.1": - version: 2.25.2 - resolution: "webpack-hot-middleware@npm:2.25.2" - dependencies: - ansi-html-community: 0.0.8 - html-entities: ^2.1.0 - strip-ansi: ^6.0.0 - checksum: 9bbcb4a3109d5efc3fedc41ab84209745e47770a205897324adff9126196d9cd086237288161d71cd7273a0154e09046d025a3c30c6938bd04e58d3b379fdcca - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.4.3": - version: 0.4.5 - resolution: "webpack-virtual-modules@npm:0.4.5" - checksum: 0ae9a8b50d0cb1e43da5ff8acaa7b99c34a42f0d6cc83a82908fb6e131e574a949d19948df4fdd3de0dbfdbadb2b93ceb4a740c55727a4236eb3b2bbc8f785a6 - languageName: node - linkType: hard - -"webpack@npm:5": - version: 5.74.0 - resolution: "webpack@npm:5.74.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^0.0.51 - "@webassemblyjs/ast": 1.11.1 - "@webassemblyjs/wasm-edit": 1.11.1 - "@webassemblyjs/wasm-parser": 1.11.1 - acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.10.0 - es-module-lexer: ^0.9.0 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.1.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.3 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 320c41369a75051b19e18c63f408b3dcc481852e992f83d311771c5ec0f05f2946385e8ebef62030cf3587f0a3d2f12779ffdb191569a966847289ba7313f946 - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2": - version: 1.1.8 - resolution: "which-typed-array@npm:1.1.8" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.9 - checksum: bedf4d30a738e848404fe67fe0ace33433a7298cf3f5a4d4b2c624ba99c4d25f06a7fd6f3566c3d16af5f8a54f0c6293cbfded5b1208ce11812753990223b45a - languageName: node - linkType: hard - -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: ^4.0.0 - checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 - languageName: node - linkType: hard - -"widest-line@npm:^4.0.1": - version: 4.0.1 - resolution: "widest-line@npm:4.0.1" - dependencies: - string-width: ^5.0.1 - checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba - languageName: node - linkType: hard - -"word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.0.1": - version: 8.0.1 - resolution: "wrap-ansi@npm:8.0.1" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.0, write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^6.1.0": - version: 6.2.2 - resolution: "ws@npm:6.2.2" - dependencies: - async-limiter: ~1.0.0 - checksum: aec3154ec51477c094ac2cb5946a156e17561a581fa27005cbf22c53ac57f8d4e5f791dd4bbba6a488602cb28778c8ab7df06251d590507c3c550fd8ebeee949 - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.9.0 - resolution: "ws@npm:8.9.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 23aa0f021b2eb65c108ec4c3e08c0d81ba01f82b500432dfe327fd6be36079c1d81fdb0eac6464d2a0eb49904d34a9ab8c59619d673fa07b8346f83aeb0cbf12 - languageName: node - linkType: hard - -"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": - version: 5.1.0 - resolution: "xdg-basedir@npm:5.1.0" - checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea - languageName: node - linkType: hard - -"xxhash-wasm@npm:^0.4.2": - version: 0.4.2 - resolution: "xxhash-wasm@npm:0.4.2" - checksum: 747b32fcfed1dc9a1e7592b134e4e65794bc10fd5d32515792e486bf4d0b65f9dec790cfc49ce2f9c01dd02e3593c3a6cd51df1ef37adf003c5bbd386c43c64d - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"zwitch@npm:^2.0.0": - version: 2.0.2 - resolution: "zwitch@npm:2.0.2" - checksum: 8edd7af8375f12f64d8dbef815af32cd77bd9237d0b013210ba4e3aef25fdc460fe264cd0a19deabe9f86ef0c607240ebac1a336bf4a70bf06ef53e0652de116 - languageName: node - linkType: hard diff --git a/yarn.lock b/yarn.lock index 722dc3679e93..60e814efe6f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,8 +4,8 @@ __metadata: version: 6 -"root-workspace-0b6124@workspace:.": +"@storybook/root@workspace:.": version: 0.0.0-use.local - resolution: "root-workspace-0b6124@workspace:." + resolution: "@storybook/root@workspace:." languageName: unknown linkType: soft